<?xml version="1.0" encoding="UTF-8"?>
<!--
    OASIS Open Office format
    preliminary Relax-NG schema

    $Id: p-open-office-specification.xml,v 1.6 2003/05/06 16:01:30 dvo Exp $

    © 2002 OASIS Open
    © 1999-2002 Sun microsystems
-->

<grammar
    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"

    xmlns="http://relaxng.org/ns/structure/1.0"
    xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"

    xmlns:office="http://openoffice.org/2000/office"
    xmlns:text="http://openoffice.org/2000/text"
    xmlns:table="http://openoffice.org/2000/table"

    xmlns:number="http://openoffice.org/2000/datastyle"
    xmlns:form="http://openoffice.org/2000/form"
    xmlns:dr3d="http://openoffice.org/2000/dr3d"
    xmlns:draw="http://openoffice.org/2000/drawing"
    xmlns:meta="http://openoffice.org/2000/meta"
    xmlns:chart="http://openoffice.org/2000/chart"
    xmlns:style="http://openoffice.org/2000/style"
    xmlns:presentation="http://openoffice.org/2001/presentation"
    xmlns:config="http://openoffice.org/2001/config"
    xmlns:script="http://openoffice.org/2000/script"

    xmlns:math="http://www.w3.org/1998/Math/MathML"
    xmlns:fo="http://www.w3.org/1999/XSL/Format"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
>
<start>
    <choice>
        <ref name="office-document"/>
        <ref name="office-document-content"/>
        <ref name="office-document-styles"/>
        <ref name="office-document-meta"/>
        <ref name="office-document-settings"/>
    </choice>
</start>
<define name="office-document">
    <element name="office:document">
        <ref name="office-document-attrs"/>
        <ref name="office-meta"/>
        <ref name="office-settings"/>
        <ref name="office-script"/>
        <ref name="office-font-decls"/>
        <ref name="office-styles"/>
        <ref name="office-automatic-styles"/>
        <ref name="office-master-styles"/>
        <ref name="office-body"/>
    </element>
</define>
<define name="office-document-content">
    <element name="office:document-content">
        <ref name="office-document-attrs"/>
        <ref name="office-script"/>
        <ref name="office-font-decls"/>
        <ref name="office-automatic-styles"/>
        <ref name="office-body"/>
    </element>
</define>
<define name="office-document-styles">
    <element name="office:document-styles">
        <ref name="office-document-attrs"/>
        <ref name="office-font-decls"/>
        <ref name="office-styles"/>
        <ref name="office-automatic-styles"/>
        <ref name="office-master-styles"/>
    </element>
</define>
<define name="office-document-meta">
    <element name="office:document-meta">
        <ref name="office-document-attrs"/>
        <ref name="office-meta"/>
    </element>
</define>
<define name="office-document-settings">
    <element name="office:document-settings">
        <ref name="office-document-attrs"/>
        <ref name="office-settings"/>
    </element>
</define>
<define name="office-document-attrs">
    <optional>
        <attribute name="office:version">
            <data type="string"/>
        </attribute>
    </optional>
</define>
<define name="office-meta">
    <optional>
        <element name="office:meta">
            <zeroOrMore>
                <ref name="office-meta-data"/>
            </zeroOrMore>
        </element>
    </optional>
</define>
<define name="office-body">
    <element name="office:body">
        <ref name="office-body-content"/>
    </element>
</define>
<define name="office-body-content" combine="choice">
    <element name="office:text">
        <ref name="office-text-content-prelude"/>
        <zeroOrMore>
            <ref name="office-text-content-main"/>
        </zeroOrMore>
        <ref name="office-text-content-epilogue"/>
    </element>
</define>
<define name="office-text-content-prelude">
    <ref name="office-forms"/>
    <ref name="text-tracked-changes"/>
    <ref name="text-decls"/>
</define>
<define name="office-text-content-main">
    <choice>
        <ref name="text-h"/>
        <ref name="text-p"/>
        <ref name="text-list"/>
        <ref name="table-table"/>
        <ref name="draw-a"/>
        <ref name="text-section"/>
        <ref name="text-table-of-content"/>
        <ref name="text-illustration-index"/>
        <ref name="text-table-index"/>
        <ref name="text-object-index"/>
        <ref name="text-user-index"/>
        <ref name="text-alphabetical-index"/>
        <ref name="text-bibliography"/>
        <ref name="shape"/>
        <ref name="change-marks"/>
    </choice>
</define>
<define name="office-text-content-epilogue">
    <empty/>
</define>
<define name="text-decls">
    <optional>
        <element name="text:variable-decls">
            <zeroOrMore>
                <ref name="text-variable-decl"/>
            </zeroOrMore>
        </element>
    </optional>
    <optional>
        <element name="text:sequence-decls">
            <zeroOrMore>
                <ref name="text-sequence-decl"/>
            </zeroOrMore>
        </element>
    </optional>
    <optional>
        <element name="text:user-field-decls">
            <zeroOrMore>
                <ref name="text-user-field-decl"/>
            </zeroOrMore>
        </element>
    </optional>
    <optional>
        <element name="text:dde-connection-decls">
            <zeroOrMore>
                <ref name="text-dde-connection-decl"/>
            </zeroOrMore>
        </element>
    </optional>
<!-- TODO: What about alphabetical index mark auto file??? -->
    <optional>
        <element name="text:alphabetical-index-auto-mark-file">
            <ref name="anything"/>
        </element>
    </optional>
</define>
<define name="office-body-content" combine="choice">
    <element name="office:drawing">
        <ref name="anything"/>
    </element>
</define>
<define name="office-body-content" combine="choice">
    <element name="office:presentation">
        <ref name="anything"/>
    </element>
</define>
<define name="office-body-content" combine="choice">
    <element name="office:spreadsheet">
        <optional>
            <attribute name="table:structure-protected">
                <ref name="boolean"/>
            </attribute>
        </optional> 
        <ref name="anyContent"/>
    </element>
</define>
<define name="office-body-content" combine="choice">
    <element name="office:chart">
        <ref name="anything"/>
    </element>
</define>
<define name="office-body-content" combine="choice">
    <element name="office:image">
        <ref name="anything"/>
    </element>
</define>
<define name="office-settings">
    <optional>
        <element name="office:settings">
            <ref name="anything"/>
        </element>
    </optional>
</define>
<define name="office-script">
    <optional>
        <element name="office:script">
            <ref name="anything"/>
        </element>
    </optional>
</define>
<define name="office-font-decls">
    <optional>
        <element name="office:font-decls">
            <ref name="anything"/>
        </element>
    </optional>
</define>
<define name="office-styles">
    <optional>
        <element name="office:styles">
            <ref name="anything"/>
        </element>
    </optional>
</define>
<define name="office-automatic-styles">
    <optional>
        <element name="office:automatic-styles">
            <ref name="anything"/>
        </element>
    </optional>
</define>
<define name="office-master-styles">
    <optional>
        <element name="office:master-styles">
            <ref name="anything"/>
        </element>
    </optional>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:generator">
        <data type="string"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="dc:title">
        <data type="string"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="dc:description">
        <data type="string"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="dc:subject">
        <data type="string"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:keyword">
        <data type="string"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:initial-creator">
        <data type="string"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="dc:creator">
        <data type="string"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:printed-by">
        <data type="string"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:creation-date">
        <ref name="dateTime"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="dc:date">
        <ref name="dateTime"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:print-date">
        <ref name="dateTime"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:template">
        <attribute name="xlink:href">
            <ref name="uriReference"/>
        </attribute>
        <optional>
            <attribute name="xlink:type">
                <value>simple</value>
            </attribute>
        </optional>
        <optional>
            <attribute name="xlink:actuate">
                <value>onRequest</value>
            </attribute>
        </optional>
        <optional>
            <attribute name="xlink:title">
                <data type="string"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="meta:date">
                <ref name="dateTime"/>
            </attribute>
        </optional>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:auto-reload">
        <optional>
            <attribute name="xlink:type">
                <value>simple</value>
            </attribute>
        </optional>
        <optional>
            <attribute name="xlink:show">
                <value>replace</value>
            </attribute>
        </optional>
        <optional>
            <attribute name="xlink:actuate">
                <value>onLoad</value>
            </attribute>
        </optional>
        <optional>
            <attribute name="xlink:href">
                <ref name="uriReference"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="meta:delay">
                <data type="duration"/>
            </attribute>
        </optional>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:hyperlink-behaviour">
        <optional>
            <attribute name="office:target-frame-name">
                <ref name="targetFrameName"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="xlink:show">
                <choice>
                    <value>new</value>
                    <value>replace</value>
                </choice>
            </attribute>
        </optional>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="dc:language">
        <ref name="cLanguage"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:editing-cycles">
        <data type="nonNegativeInteger"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:editing-duration">
        <data type="duration"/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:document-statistic">
        <optional>
            <attribute name="meta:page-count">
                <data type="nonNegativeInteger"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="meta:table-count">
                <data type="nonNegativeInteger"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="meta:draw-count">
                <data type="nonNegativeInteger"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="meta:image-count">
                <data type="nonNegativeInteger"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="meta:ole-object-count">
                <data type="nonNegativeInteger"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="meta:paragraph-count">
                <data type="nonNegativeInteger"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="meta:word-count">
                <data type="nonNegativeInteger"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="meta:character-count">
                <data type="nonNegativeInteger"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="meta:row-count">
                <data type="nonNegativeInteger"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="meta:cell-count">
                <data type="nonNegativeInteger"/>
            </attribute>
        </optional>
        <optional>
            <attribute name="meta:object-count">
                <data type="nonNegativeInteger"/>
            </attribute>
        </optional>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <element name="meta:user-defined">
        <attribute name="meta:name">
            <data type="string"/>
        </attribute>
        <optional>
            <attribute name="meta:type">
                <data type="string"/>
            </attribute>
        </optional>
        <text/>
    </element>
</define>
<define name="office-meta-data" combine="choice">
    <ref name="foreignElement"/>
</define>
<define name="text-h">
    <element name="text:h">
        <attribute name="text:level">
            <data type="positiveInteger"/>
        </attribute>
        <ref name="paragraph-attrs"/>
        <zeroOrMore>
            <ref name="paragraph-content"/>
        </zeroOrMore>
    </element>
</define>
<define name="text-p">
    <element name="text:p">
        <ref name="paragraph-attrs"/>
        <zeroOrMore>
            <ref name="paragraph-content"/>
        </zeroOrMore>
    </element>
</define>
<define name="paragraph-attrs">
    <ref name="class-attrs"/>
    <optional>
        <attribute name="style:cond-style-name">
            <text/>
        </attribute>
    </optional>
</define>
<define name="text-list">
    <element name="text:list">
        <ref name="anything"/>
    </element>
</define>
<define name="text-section">
    <element name="text:section">
        <ref name="anyAttrs"/>
        <choice>
            <element name="text:section-source">
                <ref name="anything"/>
            </element>
            <element name="text:section-source-dde">
                <ref name="anything"/>
            </element>
            <empty/>
        </choice>
        <zeroOrMore>
            <ref name="office-text-content-main"/>
        </zeroOrMore>
    </element>
</define>
<define name="text-tracked-changes">
    <optional>
        <element name="text:tracked-changes">
            <ref name="anything"/>
        </element>
    </optional>
</define>

<define name="change-marks">
    <choice>
        <element name="text:change"><ref name="anything"/></element>
        <element name="text:change-start"><ref name="anything"/></element>
        <element name="text:change-end"><ref name="anything"/></element>
    </choice>
</define>
<define name="paragraph-content" combine="choice">
    <text/>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:s">
        <optional>
            <attribute name="text:c">
                <data type="nonNegativeInteger"/>
            </attribute>
        </optional>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:tab">
        <optional>
            <attribute name="text:tab-ref">
                <text/>
            </attribute>
        </optional>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:line-break">
        <empty/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:span">
        <ref name="class-attrs"/>
        <zeroOrMore>
            <ref name="paragraph-content"/>
        </zeroOrMore>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:a">
        <ref name="text-a-attlist"/>
        <optional>
            <ref name="office-events"/>
        </optional>
        <zeroOrMore>
            <ref name="paragraph-content"/>
        </zeroOrMore>
    </element>
</define>
<define name="text-a-attlist" combine="interleave">
    <optional>
        <attribute name="office:name">
            <data type="string"/>
        </attribute>
    </optional>
</define>
<define name="text-a-attlist" combine="interleave">
    <attribute name="xlink:href">
        <ref name="uriReference"/>
    </attribute>
    <optional>
        <attribute name="xlink:type">
            <value>simple</value>
        </attribute>
    </optional>
    <optional>
        <attribute name="xlink:actuate">
            <value>onRequest</value>
        </attribute>
    </optional>
</define>
<define name="text-a-attlist" combine="interleave">
    <optional>
        <attribute name="office:target-frame-name">
            <data type="string"/>
        </attribute>
    </optional>
    <optional>
        <attribute name="xlink:show">
            <choice>
                <value>new</value>
                <value>replace</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="text-a-attlist" combine="interleave">
    <optional>
        <attribute name="text:style-name">
            <ref name="styleName"/>
        </attribute>
    </optional>
    <optional>
        <attribute name="text:visited-style-name">
            <ref name="styleName"/>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <choice>
        <element name="text:bookmark">
            <attribute name="text:name">
                <data type="string"/>
            </attribute>
        </element>
        <element name="text:bookmark-start">
            <attribute name="text:name">
                <data type="string"/>
            </attribute>
        </element>
        <element name="text:bookmark-end">
            <attribute name="text:name">
                <data type="string"/>
            </attribute>
        </element>
    </choice>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:reference-mark">
        <attribute name="text:name">
            <data type="string"/>
        </attribute>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <choice>
        <element name="text:reference-mark-start">
            <attribute name="text:name">
                <data type="string"/>
            </attribute>
        </element>
        <element name="text:reference-mark-end">
            <attribute name="text:name">
                <data type="string"/>
            </attribute>
        </element>
    </choice>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:note">
        <ref name="text-note-class"/>
        <optional>
            <attribute name="text:id">
                <data type="string"/>
            </attribute>
        </optional>
        <element name="text:note-citation">
            <optional>
                <attribute name="text:label">
                    <data type="string"/>
                </attribute>
            </optional>
            <text/>
        </element>
<!-- Validity constraint: text:footnote and text:endnote elements may not 
    contain other text:footnote or text:endnote elements, even though the DTD
    allows this (via the %text; in the foot-/endnote-body).
    Unfortunatetly, this constraint cannot be easily specified in the DTD.
-->
        <element name="text:note-body">
            <zeroOrMore>
                <ref name="office-text-content-main"/>
            </zeroOrMore>
        </element>
    </element>
</define>
<define name="text-note-class">
    <attribute name="text:note-class">
        <choice>
            <value>footnote</value>
            <value>endnote</value>
        </choice>
    </attribute>
</define>
<define name="text-notes-configuration">
    <element name="text:notes-configuration">
        <ref name="text-notes-configuration-content"/>
    </element>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <ref name="text-note-class"/>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <optional>
        <attribute name="text:citation-style-name">
            <ref name="styleName"/>
        </attribute>
    </optional>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <optional>
        <attribute name="text:citation-body-style-name">
            <ref name="styleName"/>
        </attribute>
    </optional>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <optional>
        <attribute name="text:default-style-name">
            <ref name="styleName"/>
        </attribute>
    </optional>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <optional>
        <attribute name="text:master-page-name">
            <ref name="styleName"/>
        </attribute>
    </optional>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <optional>
        <attribute name="text:start-value">
            <data type="nonNegativeInteger"/>
        </attribute>
    </optional>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <optional>
        <attribute name="style:num-prefix">
            <data type="string"/>
        </attribute>
    </optional>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <optional>
        <attribute name="style:num-suffix">
            <data type="string"/>
        </attribute>
    </optional>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <optional>
        <ref name="field-num-format"/>
    </optional>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <optional>
        <attribute name="text:start-numbering-at">
            <choice>
                <value>document</value>
                <value>chapter</value>
                <value>page</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <optional>
        <attribute name="text:footnotes-position">
            <choice>
                <value>document</value>
                <value>page</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <optional>
        <element name="text:note-continuation-notice-forward">
            <text/>
        </element>
    </optional>
</define>
<define name="text-notes-configuration-content" combine="interleave">
    <optional>
        <element name="text:note-continuation-notice-backward">
            <text/>
        </element>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:ruby">
        <optional>
            <attribute name="text:style-name">
                <ref name="styleName"/>
            </attribute>
        </optional>
        <element name="text:ruby-base">
            <ref name="paragraph-content"/>
        </element>
        <element name="text:ruby-text">
            <optional>
                <attribute name="text:style-name">
                    <ref name="styleName"/>
                </attribute>
            </optional>
            <text/>
        </element>
    </element>
</define>
<define name="ruby-style" combine="interleave">
    <optional>
        <attribute name="style:ruby-position">
            <choice>
                <value>above</value>
                <value>below</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="ruby-style" combine="interleave">
    <optional>
        <attribute name="style:ruby-align">
            <choice>
                <value>left</value>
                <value>center</value>
                <value>right</value>
                <value>distribute-letter</value>
                <value>distribute-space</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <ref name="office-annotation"/>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:bibliography-mark">
        <ref name="anything"/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element>
        <choice>
            <name>text:alphabetical-index-mark</name>
            <name>text:alphabetical-index-mark-start</name>
            <name>text:alphabetical-index-mark-end</name>
            <name>text:user-index-mark</name>
            <name>text:user-index-mark-start</name>
            <name>text:user-index-mark-end</name>
            <name>text:toc-mark</name>
            <name>text:toc-mark-start</name>
            <name>text:toc-mark-end</name>
        </choice>
        <ref name="anything"/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <ref name="change-marks"/>
</define>
<define name="paragraph-content" combine="choice">
    <ref name="shape"/>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:date">
        <ref name="text-date-attlist"/>
        <text/>
    </element>
</define>
<define name="text-date-attlist" combine="interleave">
    <interleave>
        <ref name="field-fixed"/>
        <ref name="field-data-style-name"/>
    </interleave>
</define>
<define name="text-date-attlist" combine="interleave">
    <optional>
        <attribute name="text:date-value">
            <ref name="dateTime"/>
        </attribute>
    </optional>
</define>
<define name="text-date-attlist" combine="interleave">
    <optional>
        <attribute name="text:date-adjust">
            <data type="duration"/>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:time">
        <ref name="text-time-attlist"/>
        <text/>
    </element>
</define>
<define name="text-time-attlist" combine="interleave">
    <interleave>
        <ref name="field-fixed"/>
        <ref name="field-data-style-name"/>
    </interleave>
</define>
<define name="text-time-attlist" combine="interleave">
    <optional>
        <attribute name="text:time-value">
            <ref name="dateTime"/>
        </attribute>
    </optional>
</define>
<define name="text-time-attlist" combine="interleave">
    <optional>
        <attribute name="text:time-adjust">
            <data type="duration"/>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:page-number">
        <ref name="text-page-number-attlist"/>
        <text/>
    </element>
</define>
<define name="text-page-number-attlist" combine="interleave">
    <interleave>
        <ref name="field-num-format"/>
        <ref name="field-fixed"/>
    </interleave>
</define>
<define name="text-page-number-attlist" combine="interleave">
    <optional>
        <attribute name="text:page-adjust">
            <data type="integer"/>
        </attribute>
    </optional>
</define>
<define name="text-page-number-attlist" combine="interleave">
    <optional>
        <attribute name="text:select-page">
            <choice>
                <value>previous</value>
                <value>current</value>
                <value>next</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:page-continuation">
        <ref name="text-page-continuation-attlist"/>
        <text/>
    </element>
</define>
<define name="text-page-continuation-attlist" combine="interleave">
    <attribute name="text:select-page">
        <choice>
            <value>previous</value>
            <value>next</value>
        </choice>
    </attribute>
</define>
<define name="text-page-continuation-attlist" combine="interleave">
    <optional>
        <attribute name="text:string-value">
            <data type="string"/>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-firstname">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-lastname">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-initials">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-title">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-position">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-email">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-phone-private">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-fax">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-company">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-phone-work">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-street">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-city">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-postal-code">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-country">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sender-state-or-province">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:author-name">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:author-initials">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:chapter">
        <ref name="text-chapter-attlist"/>
        <text/>
    </element>
</define>
<define name="text-chapter-attlist" combine="interleave">
    <attribute name="text:display">
        <choice>
            <value>name</value>
            <value>number</value>
            <value>number-and-name</value>
            <value>plain-number-and-name</value>
            <value>plain-number</value>
        </choice>
    </attribute>
</define>
<define name="text-chapter-attlist" combine="interleave">
    <attribute name="text:outline-level">
        <data type="nonNegativeInteger"/>
    </attribute>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:file-name">
        <ref name="text-file-name-attlist"/>
        <text/>
    </element>
</define>
<define name="text-file-name-attlist" combine="interleave">
    <optional>
        <attribute name="text:display">
            <choice>
                <value>full</value>
                <value>path</value>
                <value>name</value>
                <value>name-and-extension</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="text-file-name-attlist" combine="interleave">
    <ref name="field-fixed"/>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:template-name">
        <ref name="text-template-name-attlist"/>
        <text/>
    </element>
</define>
<define name="text-template-name-attlist">
    <optional>
        <attribute name="text:display">
            <choice>
                <value>full</value>
                <value>path</value>
                <value>name</value>
                <value>name-and-extension</value>
                <value>area</value>
                <value>title</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="text-variable-decl">
    <element name="text:variable-decl">
        <ref name="field-name"/>
        <ref name="field-value-type"/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:variable-set">
        <interleave>
            <ref name="field-name"/>
            <ref name="field-formula"/>
            <ref name="field-value-and-type"/>
            <ref name="field-display-value-none"/>
            <ref name="field-data-style-name"/>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:variable-get">
        <interleave>
            <ref name="field-name"/>
            <ref name="field-display-value-formula"/>
            <ref name="field-data-style-name"/>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:variable-input">
        <interleave>
            <ref name="field-name"/>
            <ref name="field-description"/>
            <ref name="field-value-type"/>
            <ref name="field-display-value-none"/>
            <ref name="field-data-style-name"/>
        </interleave>
        <text/>
    </element>
</define>
<define name="text-user-field-decl">
    <element name="text:user-field-decl">
        <ref name="field-name"/>
        <optional>
            <ref name="field-formula"/>
        </optional>
        <ref name="field-value-and-type"/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:user-field-get">
        <interleave>
            <ref name="field-name"/>
            <ref name="field-display-value-formula-none"/>
            <ref name="field-data-style-name"/>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:user-field-input">
        <interleave>
            <ref name="field-name"/>
            <ref name="field-description"/>
            <ref name="field-data-style-name"/>
        </interleave>
        <text/>
    </element>
</define>
<define name="text-sequence-decl">
    <element name="text:sequence-decl">
        <ref name="text-sequence-decl-attlist"/>
    </element>
</define>
<define name="text-sequence-decl-attlist" combine="interleave">
    <ref name="field-name"/>
</define>
<define name="text-sequence-decl-attlist" combine="interleave">
    <attribute name="text:display-outline-level">
        <data type="nonNegativeInteger"/>
    </attribute>
</define>
<define name="text-sequence-decl-attlist" combine="interleave">
    <optional>
        <attribute name="text:separation-character">
            <ref name="character"/>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sequence">
        <interleave>
            <ref name="field-name"/>
            <ref name="field-formula"/>
            <ref name="field-num-format"/>
            <ref name="text-sequence-ref-name"/>
        </interleave>
        <text/>
    </element>
</define>
<define name="text-sequence-ref-name">
    <optional>
        <attribute name="text:ref-name">
            <data type="string"/>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:expression">
        <interleave>
            <ref name="field-formula"/>
            <optional>
                <ref name="field-value-and-type"/>
            </optional>
            <ref name="field-display-value-formula"/>
            <ref name="field-data-style-name"/>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:text-input">
        <ref name="field-description"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:initial-creator">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:creation-date">
        <interleave>
            <ref name="field-fixed"/>
            <ref name="field-data-style-name"/>
            <optional>
                <attribute name="text:date-value">
                    <data type="date"/>
                </attribute>
            </optional>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:creation-time">
        <interleave>
            <ref name="field-fixed"/>
            <ref name="field-data-style-name"/>
            <optional>
                <attribute name="text:time-value">
                    <ref name="dateTime"/>
                </attribute>
            </optional>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:description">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:user-defined">
        <interleave>
            <ref name="field-fixed"/>
            <attribute name="text:name">
                <data type="string"/>
            </attribute>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:print-time">
        <interleave>
            <ref name="field-fixed"/>
            <ref name="field-data-style-name"/>
            <optional>
                <attribute name="text:time-value">
                    <data type="time"/>
                </attribute>
            </optional>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:print-date">
        <interleave>
            <ref name="field-fixed"/>
            <ref name="field-data-style-name"/>
            <optional>
                <attribute name="text:date-value">
                    <data type="date"/>
                </attribute>
            </optional>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:printed-by">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:title">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:subject">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:keywords">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:editing-cycles">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:editing-duration">
        <interleave>
            <ref name="field-fixed"/>
            <ref name="field-data-style-name"/>
            <optional>
                <attribute name="text:duration">
                    <data type="duration"/>
                </attribute>
            </optional>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:modification-time">
        <interleave>
            <ref name="field-fixed"/>
            <ref name="field-data-style-name"/>
            <optional>
                <attribute name="text:time-value">
                    <data type="time"/>
                </attribute>
            </optional>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:modification-date">
        <interleave>
            <ref name="field-fixed"/>
            <ref name="field-data-style-name"/>
            <optional>
                <attribute name="text:date-value">
                    <data type="date"/>
                </attribute>
            </optional>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:creator">
        <ref name="field-fixed"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element>
        <choice>
            <name>text:page-count</name>
            <name>text:paragraph-count</name>
            <name>text:word-count</name>
            <name>text:character-count</name>
            <name>text:table-count</name>
            <name>text:image-count</name>
            <name>text:object-count</name>
        </choice>
        <ref name="field-num-format"/>
        <text/>
    </element>
</define>
<define name="field-database-table">
    <interleave>
        <attribute name="text:database-name">
            <data type="string"/>
        </attribute>
        <attribute name="text:table-name">
            <data type="string"/>
        </attribute>
        <optional>
            <attribute name="text:table-type">
                <choice>
                    <value>table</value>
                    <value>query</value>
                    <value>command</value>
                </choice>
            </attribute>
        </optional>
    </interleave>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:database-display">
        <ref name="text-database-display-attlist"/>
        <text/>
    </element>
</define>
<define name="text-database-display-attlist" combine="interleave">
    <ref name="field-database-table"/>
</define>
<define name="text-database-display-attlist" combine="interleave">
    <ref name="field-data-style-name"/>
</define>
<define name="text-database-display-attlist" combine="interleave">
    <attribute name="text:column-name">
        <data type="string"/>
    </attribute>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:database-next">
        <ref name="text-database-next-attlist"/>
    </element>
</define>
<define name="text-database-next-attlist" combine="interleave">
    <ref name="field-database-table"/>
</define>
<define name="text-database-next-attlist" combine="interleave">
    <optional>
        <attribute name="text:condition">
            <ref name="formula"/>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:database-row-select">
        <ref name="text-database-row-select-attlist"/>
    </element>
</define>
<define name="text-database-row-select-attlist" combine="interleave">
    <ref name="field-database-table"/>
</define>
<define name="text-database-row-select-attlist" combine="interleave">
    <optional>
        <attribute name="text:condition">
            <ref name="formula"/>
        </attribute>
    </optional>
</define>
<define name="text-database-row-select-attlist" combine="interleave">
    <optional>
        <attribute name="text:row-number">
            <data type="nonNegativeInteger"/>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:database-row-number">
        <interleave>
            <ref name="field-database-table"/>
            <ref name="field-num-format"/>
            <optional>
                <attribute name="text:value">
                    <data type="nonNegativeInteger"/>
                </attribute>
            </optional>
        </interleave>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:database-name">
        <ref name="field-database-table"/>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:page-variable-set">
        <ref name="text-set-page-variable-attlist"/>
        <text/>
    </element>
</define>
<define name="text-set-page-variable-attlist" combine="interleave">
    <optional>
        <attribute name="text:active">
            <ref name="boolean"/>
        </attribute>
    </optional>
</define>
<define name="text-set-page-variable-attlist" combine="interleave">
    <optional>
        <attribute name="text:page-adjust">
            <data type="integer"/>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:page-variable-get">
        <ref name="text-get-page-variable-attlist"/>
        <text/>
    </element>
</define>
<define name="text-get-page-variable-attlist" combine="interleave">
    <ref name="field-num-format"/>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:placeholder">
        <ref name="text-placeholder-attlist"/>
        <text/>
    </element>
</define>
<define name="text-placeholder-attlist" combine="interleave">
    <attribute name="text:placeholder-type">
        <choice>
            <value>text</value>
            <value>table</value>
            <value>text-box</value>
            <value>image</value>
            <value>object</value>
        </choice>
    </attribute>
</define>
<define name="text-placeholder-attlist" combine="interleave">
    <ref name="field-description"/>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:conditional-text">
        <ref name="text-conditional-text-attlist"/>
        <text/>
    </element>
</define>
<define name="text-conditional-text-attlist" combine="interleave">
    <attribute name="text:condition">
        <ref name="formula"/>
    </attribute>
</define>
<define name="text-conditional-text-attlist" combine="interleave">
    <attribute name="text:string-value-if-true">
        <data type="string"/>
    </attribute>
</define>
<define name="text-conditional-text-attlist" combine="interleave">
    <attribute name="text:string-value-if-false">
        <data type="string"/>
    </attribute>
</define>
<define name="text-conditional-text-attlist" combine="interleave">
    <optional>
        <attribute name="text:current-value">
            <ref name="boolean"/>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:hidden-text">
        <ref name="text-hidden-text-attlist"/>
        <text/>
    </element>
</define>
<define name="text-hidden-text-attlist" combine="interleave">
    <attribute name="text:condition">
        <ref name="formula"/>
    </attribute>
</define>
<define name="text-hidden-text-attlist" combine="interleave">
    <attribute name="text:string-value">
        <data type="string"/>
    </attribute>
</define>
<define name="text-hidden-text-attlist" combine="interleave">
    <optional>
        <attribute name="text:is-hidden">
            <ref name="boolean"/>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element>
        <choice>
            <name>text:reference-ref</name>
            <name>text:bookmark-ref</name>
            <name>text:note-ref</name>
        </choice>
        <interleave>
            <ref name="text-common-ref-content"/>
            <ref name="text-ref-content"/>
        </interleave>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:sequence-ref">
        <interleave>
            <ref name="text-common-ref-content"/>
            <ref name="text-sequence-ref-content"/>
        </interleave>
    </element>
</define>
<define name="text-common-ref-content" combine="interleave">
    <text/>
</define>
<define name="text-common-ref-content" combine="interleave">
    <optional>
        <attribute name="text:ref-name">
            <data type="string"/>
        </attribute>
    </optional>
</define>
<define name="text-ref-content" combine="interleave">
    <optional>
        <attribute name="text:reference-format">
            <choice>
                <value>page</value>
                <value>chapter</value>
                <value>direction</value>
                <value>text</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="text-sequence-ref-content" combine="interleave">
    <optional>
        <attribute name="text:reference-format">
            <choice>
                <value>page</value>
                <value>chapter</value>
                <value>direction</value>
                <value>text</value>
                <value>category-and-value</value>
                <value>caption</value>
                <value>value</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:script">
        <interleave>
            <choice>
                <attribute name="text:href">
                    <ref name="URL"/>
                </attribute>
                <text/>
            </choice>
            <optional>
                <attribute name="script:language">
                    <data type="string"/>
                </attribute>
            </optional>
        </interleave>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:execute-macro">
        <optional>
            <attribute name="text:name">
                <data type="string"/>
            </attribute>
        </optional>
        <optional>
            <ref name="office-events"/>
        </optional>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:hidden-paragraph">
        <ref name="text-hidden-paragraph-attlist"/>
        <text/>
    </element>
</define>
<define name="text-hidden-paragraph-attlist" combine="interleave">
    <attribute name="text:condition">
        <ref name="formula"/>
    </attribute>
</define>
<define name="text-hidden-paragraph-attlist" combine="interleave">
    <optional>
        <attribute name="text:is-hidden">
            <ref name="boolean"/>
        </attribute>
    </optional>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:dde-connection">
        <attribute name="text:connection-name">
            <data type="string"/>
        </attribute>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:measure">
        <attribute name="text:kind">
            <choice>
                <value>value</value>
                <value>unit</value>
                <value>gap</value>
            </choice>
        </attribute>
        <text/>
    </element>
</define>
<define name="paragraph-content" combine="choice">
    <element name="text:table-formula">
        <interleave>
            <ref name="field-formula"/>
            <ref name="field-display-value-formula"/>
            <ref name="field-data-style-name"/>
        </interleave>
        <text/>
    </element>
</define>
<define name="field-value-type">
    <attribute name="text:value-type">
        <choice>
            <value>float</value>
            <value>time</value>
            <value>date</value>
            <value>percentage</value>
            <value>currency</value>
            <value>boolean</value>
            <value>string</value>
        </choice>
    </attribute>
</define>
<define name="field-value-and-type">
    <choice>
        <group>
            <attribute name="text:value-type">
                <value>float</value>
            </attribute>
            <attribute name="text:value">
                <data type="double"/>
            </attribute>
        </group>
        <group>
            <attribute name="text:value-type">
                <value>percentage</value>
            </attribute>
            <attribute name="text:value">
                <data type="double"/>
            </attribute>
        </group>
        <group>
            <attribute name="text:value-type">
                <value>currency</value>
            </attribute>
            <attribute name="text:value">
                <data type="double"/>
            </attribute>
            <optional>
                <attribute name="text:currency">
                    <data type="string"/>
                </attribute>
            </optional>
        </group>
        <group>
            <attribute name="text:value-type">
                <value>date</value>
            </attribute>
            <attribute name="text:date-value">
                <data type="date"/>
            </attribute>
        </group>
        <group>
            <attribute name="text:value-type">
                <value>time</value>
            </attribute>
            <attribute name="text:time-value">
                <data type="duration"/>
            </attribute>
        </group>
        <group>
            <attribute name="text:value-type">
                <value>boolean</value>
            </attribute>
            <attribute name="text:boolean-value">
                <ref name="boolean"/>
            </attribute>
        </group>
        <group>
            <attribute name="text:value-type">
                <value>string</value>
            </attribute>
            <optional>
                <attribute name="text:string-value">
                    <data type="string"/>
                </attribute>
            </optional>
        </group>
    </choice>
</define>
<define name="field-fixed">
    <optional>
        <attribute name="text:fixed">
            <ref name="boolean"/>
        </attribute>
    </optional>
</define>
<define name="field-name">
    <attribute name="text:name">
        <ref name="variable-name"/>
    </attribute>
</define>
<define name="field-description">
    <optional>
        <attribute name="text:description">
            <text/>
        </attribute>
    </optional>
</define>
<define name="field-display-value-none">
    <optional>
        <attribute name="text:display">
            <choice>
                <value>value</value>
                <value>none</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="field-display-value-formula-none">
    <optional>
        <attribute name="text:display">
            <choice>
                <value>value</value>
                <value>formula</value>
                <value>none</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="field-display-value-formula">
    <optional>
        <attribute name="text:display">
            <choice>
                <value>value</value>
                <value>formula</value>
            </choice>
        </attribute>
    </optional>
</define>
<define name="field-formula">
    <optional>
        <attribute name="text:formula">
            <ref name="formula"/>
        </attribute>
    </optional>
</define>
<define name="field-data-style-name">
    <optional>
        <attribute name="style:data-style-name">
            <ref name="styleName"/>
        </attribute>
    </optional>
</define>
<define name="field-num-format">
    <choice>
        <attribute name="style:num-format">
            <choice>
                <value>1</value>
                <value>i</value>
                <value>I</value>
            </choice>
        </attribute>
        <group>
            <attribute name="style:num-format">
                <choice>
                    <value>a</value>
                    <value>A</value>
                </choice>
            </attribute>
            <optional>
                <attribute name="style:num-letter-sync">
                    <ref name="boolean"/>
                </attribute>
            </optional>
        </group>
        <empty/>
    </choice>
</define>
<define name="text-table-of-content">
    <element name="text:table-of-content">
        <ref name="anyAttrs"/>
        <element name="text:table-of-content-source">
            <ref name="anything"/>
        </element>
        <ref name="text-index-body"/>
    </element>
</define>

<define name="text-illustration-index">
    <element name="text:illustration-index">
        <ref name="anyAttrs"/>
        <element name="text:illustration-index-source">
            <ref name="anything"/>
        </element>
        <ref name="text-index-body"/>
    </element>
</define>

<define name="text-table-index">
    <element name="text:table-index">
        <ref name="anyAttrs"/>
        <element name="text:table-index-source">
            <ref name="anything"/>
        </element>
        <ref name="text-index-body"/>
    </element>
</define>

<define name="text-object-index">
    <element name="text:object-index">
        <ref name="anyAttrs"/>
        <element name="text:object-index-source">
            <ref name="anything"/>
        </element>
        <ref name="text-index-body"/>
    </element>
</define>

<define name="text-user-index">
    <element name="text:user-index">
        <ref name="anyAttrs"/>
        <element name="text:user-index-source">
            <ref name="anything"/>
        </element>
        <ref name="text-index-body"/>
    </element>
</define>

<define name="text-alphabetical-index">
    <element name="text:alphabetical-index">
        <ref name="anyAttrs"/>
        <element name="text:alphabetical-index-source">
            <ref name="anything"/>
        </element>
        <ref name="text-index-body"/>
    </element>
</define>

<define name="text-bibliography">
    <element name="text:bibliography">
        <ref name="anyAttrs"/>
        <element name="text:bibliography-source">
            <ref name="anything"/>
        </element>
        <ref name="text-index-body"/>
    </element>
</define>

<define name="text-index-body">
    <element name="text:index-body">
        <ref name="anything"/>
    </element>
</define>
<define name="table-table">
    <element name="table:table">
        <ref name="anything"/>
    </element>
</define>
<define name="office-forms">
    <optional>
        <element name="office:forms">
            <ref name="anything"/>
        </element>
    </optional>
</define>
<define name="draw-a">
    <element name="draw:a">
        <ref name="anything"/>
    </element>
</define>
<define name="shape">
    <element>
        <choice>
            <name>draw:rect</name>
            <name>draw:line</name>
            <name>draw:polyline</name>
            <name>draw:polygon</name>
            <name>draw:path</name>
            <name>draw:circle</name>
            <name>draw:ellipse</name>
            <name>draw:g</name>
            <name>draw:page-thumbnail</name>
            <name>draw:text-box</name>
            <name>draw:image</name>
            <name>draw:object</name>
            <name>draw:object-ole</name>
            <name>draw:applet</name>
            <name>draw:floating-frame</name>
            <name>draw:plugin</name>
            <name>draw:measure</name>
            <name>draw:caption</name>
            <name>draw:connector</name>
            <name>chart:chart</name>
            <name>dr3d:scene</name>
            <name>draw:control</name>
            <name>draw:a</name>
        </choice>
        <ref name="anything"/>
    </element>
</define>
<define name="office-annotation">
    <element name="office:annotation">
        <ref name="office-annotation-info"/>
        <zeroOrMore>
            <ref name="text-p"/>
        </zeroOrMore>
    </element>
</define>
<define name="office-annotation-info" combine="interleave">
    <optional>
        <attribute name="office:author">
            <data type="string"/>
        </attribute>
    </optional>
</define>
<define name="office-annotation-info" combine="interleave">
    <optional>
        <attribute name="office:create-date">
            <ref name="dateTime"/>
        </attribute>
    </optional>
</define>
<define name="office-annotation-info" combine="interleave">
    <optional>
        <attribute name="office:create-date-string">
            <data type="string"/>
        </attribute>
    </optional>
</define>
<define name="office-annotation-info" combine="interleave">
    <optional>
        <attribute name="office:display">
            <ref name="boolean"/>
        </attribute>
    </optional>
</define>
<define name="office-events">
    <element name="office:events">
        <ref name="anything"/>
    </element>
</define>
<!-- to avoid inclusion of the complete MathML schema, we will simply allow
     anything within a math:math top-level element
-->
<define name="math-math">
    <element name="math:math">
        <ref name="anything"/>
    </element>
</define>
<define name="text-dde-connection-decl">
    <element name="text:dde-connection-decl">
        <ref name="text-dde-connection-decl-attlist"/>
    </element>
</define>
<define name="text-dde-connection-decl-attlist" combine="interleave">
    <attribute name="text:name">
        <data type="string"/>
    </attribute>
</define>
<define name="text-dde-connection-decl-attlist" combine="interleave">
    <attribute name="office:dde-application">
        <data type="string"/>
    </attribute>
</define>
<define name="text-dde-connection-decl-attlist" combine="interleave">
    <attribute name="office:dde-topic">
        <data type="string"/>
    </attribute>
</define>
<define name="text-dde-connection-decl-attlist" combine="interleave">
    <attribute name="office:dde-item">
        <data type="string"/>
    </attribute>
</define>
<define name="text-dde-connection-decl-attlist" combine="interleave">
    <optional>
        <attribute name="office:automatic-update">
            <data type="string"/>
        </attribute>
    </optional>
</define>
<define name="class-attrs">
    <optional>
        <attribute name="text:style-name">
            <text/>
        </attribute>
    </optional>
    <optional>
        <attribute name="text:class-name">
<!-- what is the actual type of the class attributes? They contain a sequence of reference, right? -->
            <text/>
        </attribute>
    </optional>
    <optional>
        <attribute name="text:cond-style-name">
            <text/>
        </attribute>
    </optional>
</define>



<!--
the content definitions from the base format: Here only for reference while editing; this is to be deleted for the final spec.
<define name="office-text-prelude">
    <optional>
        <ref name="office.forms"/>
    </optional>
    <optional>
        <choice>
            <ref name="text.tracked-changes"/>
            <ref name="table.tracked-changes"/>
        </choice>
    </optional>
    <ref name="text-decls"/>
    <optional>
        <ref name="table.calculation-settings"/>
    </optional>
    <optional>
        <ref name="table.content-validations"/>
    </optional>
    <optional>
        <ref name="table.label-ranges"/>
    </optional>
</define>
<define name="office-text-content">
    <zeroOrMore>
        <choice>
            <ref name="text.h"/>
            <ref name="text.p"/>
            <ref name="text.ordered-list"/>
            <ref name="text.unordered-list"/>
            <ref name="table.table"/>
            <ref name="draw.page"/>
            <ref name="draw.a"/>
            <ref name="shape"/>
            <ref name="text.section"/>
            <ref name="text.table-of-content"/>
            <ref name="text.illustration-index"/>
            <ref name="text.table-index"/>
            <ref name="text.object-index"/>
            <ref name="text.user-index"/>
            <ref name="text.alphabetical-index"/>
            <ref name="text.bibliography"/>
            <ref name="change-marks"/>
        </choice>
    </zeroOrMore>
</define>
<define name="office-text-epilogue">
    <optional>
        <ref name="table.named-expressions"/>
    </optional>
    <optional>
        <ref name="table.database-ranges"/>
    </optional>
    <optional>
        <ref name="table.data-pilot-tables"/>
    </optional>
    <optional>
        <ref name="table.consolidation"/>
    </optional>
    <optional>
        <ref name="table.dde-links"/>
    </optional>
    <optional>
        <ref name="presentation.settings"/>
    </optional>
</define>
-->



<define name="boolean">
    <choice>
        <value>true</value>
        <value>false</value>
    </choice>
</define>
<define name="dateTime">
    <choice>
        <data type="date"/>
        <data type="dateTime"/>
    </choice>
</define>
<define name="foreignAttribute">
    <attribute>
        <anyName/>
        <text/>
    </attribute>
</define>
<define name="foreignElement">
    <element>
        <anyName/>
        <zeroOrMore>
            <choice>
                <ref name="foreignAttribute"/>
                <ref name="foreignElement"/>
                <text/>
            </choice>
        </zeroOrMore>
    </element>
</define>


<!-- these should be replaced by proper data types along the way -->
<define name="targetFrameName"><text/></define>
<define name="uriReference"><text/></define>
<define name="cLanguage"><text/></define>
<define name="styleName"><text/></define>
<define name="formula"><text/></define>
<define name="variable-name"><text/></define>
<define name="character"><text/></define>
<define name="URL"><text/></define>

<!-- anything, anyContent: use as a placeholder for items not yet defined. The
     committee draft specification should not contain any references to
     'anything' and 'anyContent' any more.
-->
<define name="anything">
    <zeroOrMore>
        <choice>
            <attribute>
                <anyName/>
                <text/>
            </attribute>
            <element>
                <anyName/>
                <ref name="anything"/>
            </element>
            <text/>
        </choice>
    </zeroOrMore>
</define>
<define name="anyElement">
    <element>
        <anyName/>
        <ref name="anything"/>
    </element>
</define>
<define name="anyContent">
    <zeroOrMore>
        <choice>
            <element>
                <anyName/>
                <ref name="anything"/>
            </element>
            <text/>
        </choice>
    </zeroOrMore>
</define>
<define name="anyAttrs">
    <zeroOrMore>
        <attribute>
            <anyName/>
            <text/>
        </attribute>
    </zeroOrMore>
</define>


</grammar>


