# OASIS OpenDocument v1.1 # OASIS Standard, 1 Feb 2007 # Relax-NG Schema # # $Id$ # # © 2002-2007 OASIS Open # © 1999-2007 Sun Microsystems, Inc. namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" namespace anim = "urn:oasis:names:tc:opendocument:xmlns:animation:1.0" namespace chart = "urn:oasis:names:tc:opendocument:xmlns:chart:1.0" namespace config = "urn:oasis:names:tc:opendocument:xmlns:config:1.0" namespace dc = "http://purl.org/dc/elements/1.1/" namespace dr3d = "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" namespace draw = "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" namespace fo = "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" namespace form = "urn:oasis:names:tc:opendocument:xmlns:form:1.0" namespace math = "http://www.w3.org/1998/Math/MathML" namespace meta = "urn:oasis:names:tc:opendocument:xmlns:meta:1.0" namespace number = "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" namespace office = "urn:oasis:names:tc:opendocument:xmlns:office:1.0" namespace presentation = "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" namespace script = "urn:oasis:names:tc:opendocument:xmlns:script:1.0" namespace smil = "urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" namespace style = "urn:oasis:names:tc:opendocument:xmlns:style:1.0" namespace svg = "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" namespace table = "urn:oasis:names:tc:opendocument:xmlns:table:1.0" namespace text = "urn:oasis:names:tc:opendocument:xmlns:text:1.0" namespace xforms = "http://www.w3.org/2002/xforms" namespace xlink = "http://www.w3.org/1999/xlink" office-process-content = [ a:defaultValue = "true" ] attribute office:process-content { boolean }? start = office-document | office-document-content | office-document-styles | office-document-meta | office-document-settings office-document = element office:document { office-document-attrs, office-document-common-attrs, office-meta, office-settings, office-scripts, office-font-face-decls, office-styles, office-automatic-styles, office-master-styles, office-body } office-document-content = element office:document-content { office-document-common-attrs, office-scripts, office-font-face-decls, office-automatic-styles, office-body } office-document-styles = element office:document-styles { office-document-common-attrs, office-font-face-decls, office-styles, office-automatic-styles, office-master-styles } office-document-meta = element office:document-meta { office-document-common-attrs, office-meta } office-document-settings = element office:document-settings { office-document-common-attrs, office-settings } office-document-common-attrs &= attribute office:version { \string }? office-document-attrs &= attribute office:mimetype { \string } office-meta = element office:meta { office-meta-content }? office-meta-content = anyElements office-meta-content-strict = office-meta-data* office-body = element office:body { office-body-content } office-body-content |= element office:text { office-text-attlist, office-text-content-prelude, office-text-content-main*, office-text-content-epilogue } office-text-content-prelude = office-forms, text-tracked-changes, text-decls, table-decls office-text-content-main = text-content* | (text-page-sequence, (draw-a | shape)*) text-content = text-h | text-p | text-list | text-numbered-paragraph | table-table | draw-a | text-section | text-soft-page-break | text-table-of-content | text-illustration-index | text-table-index | text-object-index | text-user-index | text-alphabetical-index | text-bibliography | shape | change-marks office-text-content-epilogue = table-functions office-text-attlist &= [ a:defaultValue = "false" ] attribute text:global { boolean }? office-text-attlist &= [ a:defaultValue = "false" ] attribute text:use-soft-page-breaks { boolean }? office-body-content |= element office:drawing { office-drawing-attlist, office-drawing-content-prelude, office-drawing-content-main, office-drawing-content-epilogue } office-drawing-attlist = empty office-drawing-content-prelude = text-decls, table-decls office-drawing-content-main = draw-page* office-drawing-content-epilogue = table-functions office-body-content |= element office:presentation { office-presentation-attlist, office-presentation-content-prelude, office-presentation-content-main, office-presentation-content-epilogue } office-presentation-attlist = empty office-presentation-content-prelude = text-decls, table-decls, presentation-decls office-presentation-content-main = draw-page* office-presentation-content-epilogue = presentation-settings, table-functions office-body-content |= element office:spreadsheet { office-spreadsheet-attlist, office-spreadsheet-content-prelude, office-spreadsheet-content-main, office-spreadsheet-content-epilogue } office-spreadsheet-content-prelude = table-tracked-changes?, text-decls, table-decls table-decls = table-calculation-settings?, table-content-validations?, table-label-ranges? office-spreadsheet-content-main = table-table* office-spreadsheet-content-epilogue = table-functions table-functions = table-named-expressions?, table-database-ranges?, table-data-pilot-tables?, table-consolidation?, table-dde-links? office-body-content |= element office:chart { office-chart-attlist, office-chart-content-prelude, office-chart-content-main, office-chart-content-epilogue } office-chart-attlist = empty office-chart-content-prelude = text-decls, table-decls office-chart-content-main = chart-chart office-chart-content-epilogue = table-functions office-body-content |= element office:image { office-image-attlist, office-image-content-prelude, office-image-content-main, office-image-content-epilogue } office-image-attlist = empty office-image-content-prelude = empty office-image-content-main = draw-frame office-image-content-epilogue = empty office-settings = element office:settings { config-config-item-set+ }? config-config-item-set = element config:config-item-set { config-config-item-set-attlist, config-items } config-items = (config-config-item | config-config-item-set | config-config-item-map-named | config-config-item-map-indexed)+ config-config-item-set-attlist &= attribute config:name { \string } config-config-item = element config:config-item { config-config-item-attlist, text } config-config-item-attlist &= attribute config:name { \string } config-config-item-attlist &= attribute config:type { "boolean" | "short" | "int" | "long" | "double" | "string" | "datetime" | "base64Binary" } config-config-item-map-indexed = element config:config-item-map-indexed { config-config-item-map-indexed-attlist, config-config-item-map-entry+ } config-config-item-map-indexed-attlist &= attribute config:name { \string } config-config-item-map-entry = element config:config-item-map-entry { config-config-item-map-entry-attlist, config-items } config-config-item-map-entry-attlist &= attribute config:name { \string }? config-config-item-map-named = element config:config-item-map-named { config-config-item-map-named-attlist, config-config-item-map-entry+ } config-config-item-map-named-attlist &= attribute config:name { \string } office-scripts = element office:scripts { office-script*, office-event-listeners? }? office-script = element office:script { office-script-attlist, mixed { anyElements } } office-script-attlist = attribute script:language { \string } office-font-face-decls = element office:font-face-decls { style-font-face* }? office-styles = element office:styles { styles & style-default-style* & text-outline-style? & text-notes-configuration* & text-bibliography-configuration? & text-linenumbering-configuration? & draw-gradient* & svg-linearGradient* & svg-radialGradient* & draw-hatch* & draw-fill-image* & draw-marker* & draw-stroke-dash* & draw-opacity* & style-presentation-page-layout* }? office-automatic-styles = element office:automatic-styles { styles & style-page-layout* }? office-master-styles = element office:master-styles { style-master-page* & style-handout-master? & draw-layer-set? }? styles = style-style* & text-list-style* & number-number-style* & number-currency-style* & number-percentage-style* & number-date-style* & number-time-style* & number-boolean-style* & number-text-style* office-meta-data |= element meta:generator { \string } office-meta-data |= element dc:title { \string } office-meta-data |= element dc:description { \string } office-meta-data |= element dc:subject { \string } office-meta-data |= element meta:keyword { \string } office-meta-data |= element meta:initial-creator { \string } office-meta-data |= dc-creator dc-creator = element dc:creator { \string } office-meta-data |= element meta:printed-by { \string } office-meta-data |= element meta:creation-date { dateTime } office-meta-data |= dc-date dc-date = element dc:date { dateTime } office-meta-data |= element meta:print-date { dateTime } office-meta-data |= element meta:template { attribute xlink:href { anyURI }, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "onRequest" ] attribute xlink:actuate { "onRequest" }?, attribute xlink:title { \string }?, attribute meta:date { dateTime }? } office-meta-data |= element meta:auto-reload { [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "replace" ] attribute xlink:show { "replace" }?, [ a:defaultValue = "onLoad" ] attribute xlink:actuate { "onLoad" }?, attribute xlink:href { anyURI }?, attribute meta:delay { duration }? } office-meta-data |= element meta:hyperlink-behaviour { attribute office:target-frame-name { targetFrameName }?, attribute xlink:show { "new" | "replace" }? } office-meta-data |= element dc:language { language } office-meta-data |= element meta:editing-cycles { nonNegativeInteger } office-meta-data |= element meta:editing-duration { duration } office-meta-data |= element meta:document-statistic { attribute meta:page-count { nonNegativeInteger }?, attribute meta:table-count { nonNegativeInteger }?, attribute meta:draw-count { nonNegativeInteger }?, attribute meta:image-count { nonNegativeInteger }?, attribute meta:ole-object-count { nonNegativeInteger }?, attribute meta:object-count { nonNegativeInteger }?, attribute meta:paragraph-count { nonNegativeInteger }?, attribute meta:word-count { nonNegativeInteger }?, attribute meta:character-count { nonNegativeInteger }?, attribute frame-count { nonNegativeInteger }?, attribute sentence-count { nonNegativeInteger }?, attribute syllable-count { nonNegativeInteger }?, attribute non-whitespace-character-count { nonNegativeInteger }?, attribute meta:row-count { nonNegativeInteger }?, attribute meta:cell-count { nonNegativeInteger }? } office-meta-data |= element meta:user-defined { attribute meta:name { \string }, ((attribute meta:value-type { "float" }, double) | (attribute meta:value-type { "date" }, dateOrDateTime) | (attribute meta:value-type { "time" }, duration) | (attribute meta:value-type { "boolean" }, boolean) | (attribute meta:value-type { "string" }, \string) | text) } text-h = element text:h { heading-attrs, paragraph-attrs, text-number?, paragraph-content* } heading-attrs &= attribute text:outline-level { positiveInteger } heading-attrs &= [ a:defaultValue = "false" ] attribute text:restart-numbering { boolean }? heading-attrs &= attribute text:start-value { nonNegativeInteger }? heading-attrs &= [ a:defaultValue = "false" ] attribute text:is-list-header { boolean }? text-number = element text:number { \string } text-p = element text:p { paragraph-attrs, paragraph-content* } paragraph-attrs = attribute text:style-name { styleNameRef }?, attribute text:class-names { styleNameRefs }?, attribute text:cond-style-name { styleNameRef }? paragraph-attrs &= text-id? text-page-sequence = element text:page-sequence { text-page+ } text-page = element text:page { text-page-attlist, empty } text-page-attlist = attribute text:master-page-name { styleNameRef } text-list = element text:list { text-list-attr, text-list-header?, text-list-item* } text-list-attr &= attribute text:style-name { styleNameRef }? text-list-attr &= attribute text:continue-numbering { boolean }? text-list-item = element text:list-item { text-list-item-attr, text-list-item-content } text-list-item-content = text-number?, (text-p | text-h | text-list | text-soft-page-break)* text-list-item-attr &= attribute text:start-value { nonNegativeInteger }? text-list-header = element text:list-header { text-list-item-content } text-numbered-paragraph = element text:numbered-paragraph { text-numbered-paragraph-attr, text-number?, (text-p | text-h) } text-numbered-paragraph-attr &= [ a:defaultValue = "1" ] attribute text:level { positiveInteger }? text-numbered-paragraph-attr &= text-list-attr text-numbered-paragraph-attr &= text-list-item-attr text-section = element text:section { text-section-attr, (text-section-source | text-section-source-dde | empty), text-content* } text-section-attr &= sectionAttr sectionAttr &= attribute text:style-name { styleNameRef }? sectionAttr &= attribute text:name { \string } sectionAttr &= attribute text:protected { boolean }? sectionAttr &= attribute text:protection-key { \string }? text-section-attr &= attribute text:display { "true" | "none" } | (attribute text:display { "condition" }, attribute text:condition { \string }) | empty text-section-source = element text:section-source { text-section-source-attr } text-section-source-attr &= (attribute xlink:href { anyURI }, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "embed" ] attribute xlink:show { "embed" }?)? text-section-source-attr &= attribute text:section-name { \string }? text-section-source-attr &= attribute text:filter-name { \string }? text-section-source-dde = office-dde-source text-tracked-changes = element text:tracked-changes { text-tracked-changes-attr, text-changed-region* }? text-tracked-changes-attr &= [ a:defaultValue = "true" ] attribute text:track-changes { boolean }? text-changed-region = element text:changed-region { text-changed-region-attr, text-changed-region-content } text-changed-region-attr &= attribute text:id { ID } text-changed-region-content |= element text:insertion { office-change-info } text-changed-region-content |= element text:deletion { office-change-info, text-content* } text-changed-region-content |= element text:format-change { office-change-info } change-marks = element text:change { change-mark-attr } | element text:change-start { change-mark-attr } | element text:change-end { change-mark-attr } change-mark-attr = attribute text:change-id { IDREF } text-soft-page-break = element text:soft-page-break { empty } text-decls = element text:variable-decls { text-variable-decl* }?, element text:sequence-decls { text-sequence-decl* }?, element text:user-field-decls { text-user-field-decl* }?, element text:dde-connection-decls { text-dde-connection-decl* }?, text-alphabetical-index-auto-mark-file? paragraph-content |= text paragraph-content |= element text:s { attribute text:c { nonNegativeInteger }? } paragraph-content |= element text:tab { text-tab-attr } text-tab-attr = attribute text:tab-ref { nonNegativeInteger }? paragraph-content |= element text:line-break { empty } paragraph-content |= text-soft-page-break paragraph-content |= element text:span { attribute text:style-name { styleNameRef }?, attribute text:class-names { styleNameRefs }?, paragraph-content* } paragraph-content |= element text:a { text-a-attlist, office-event-listeners?, paragraph-content* } text-a-attlist &= attribute office:name { \string }? text-a-attlist &= attribute office:title { \string }? text-a-attlist &= attribute xlink:href { anyURI }, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "onRequest" ] attribute xlink:actuate { "onRequest" }? text-a-attlist &= attribute office:target-frame-name { targetFrameName }?, attribute xlink:show { "new" | "replace" }? text-a-attlist &= attribute text:style-name { styleNameRef }?, attribute text:visited-style-name { styleNameRef }? paragraph-content |= element text:bookmark { attribute text:name { \string } } | element text:bookmark-start { attribute text:name { \string } } | element text:bookmark-end { attribute text:name { \string } } paragraph-content |= element text:reference-mark { attribute text:name { \string } } paragraph-content |= element text:reference-mark-start { attribute text:name { \string } } | element text:reference-mark-end { attribute text:name { \string } } paragraph-content |= element text:note { text-note-class, attribute text:id { \string }?, element text:note-citation { attribute text:label { \string }?, text }, element text:note-body { text-content* } } text-note-class = attribute text:note-class { "footnote" | "endnote" } paragraph-content |= element text:ruby { attribute text:style-name { styleNameRef }?, element text:ruby-base { paragraph-content }, element text:ruby-text { attribute text:style-name { styleNameRef }?, text } } paragraph-content |= office-annotation paragraph-content |= change-marks paragraph-content |= shape | draw-a paragraph-content |= element text:date { text-date-attlist, text } text-date-attlist &= common-field-fixed-attlist & common-field-data-style-name-attlist text-date-attlist &= attribute text:date-value { dateOrDateTime }? text-date-attlist &= attribute text:date-adjust { duration }? paragraph-content |= element text:time { text-time-attlist, text } text-time-attlist &= common-field-fixed-attlist & common-field-data-style-name-attlist text-time-attlist &= attribute text:time-value { timeOrDateTime }? text-time-attlist &= attribute text:time-adjust { duration }? paragraph-content |= element text:page-number { text-page-number-attlist, text } text-page-number-attlist &= common-field-num-format-attlist & common-field-fixed-attlist text-page-number-attlist &= attribute text:page-adjust { integer }? text-page-number-attlist &= attribute text:select-page { "previous" | "current" | "next" }? paragraph-content |= element text:page-continuation { text-page-continuation-attlist, text } text-page-continuation-attlist &= attribute text:select-page { "previous" | "next" } text-page-continuation-attlist &= attribute text:string-value { \string }? paragraph-content |= element text:sender-firstname { common-field-fixed-attlist, text } paragraph-content |= element text:sender-lastname { common-field-fixed-attlist, text } paragraph-content |= element text:sender-initials { common-field-fixed-attlist, text } paragraph-content |= element text:sender-title { common-field-fixed-attlist, text } paragraph-content |= element text:sender-position { common-field-fixed-attlist, text } paragraph-content |= element text:sender-email { common-field-fixed-attlist, text } paragraph-content |= element text:sender-phone-private { common-field-fixed-attlist, text } paragraph-content |= element text:sender-fax { common-field-fixed-attlist, text } paragraph-content |= element text:sender-company { common-field-fixed-attlist, text } paragraph-content |= element text:sender-phone-work { common-field-fixed-attlist, text } paragraph-content |= element text:sender-street { common-field-fixed-attlist, text } paragraph-content |= element text:sender-city { common-field-fixed-attlist, text } paragraph-content |= element text:sender-postal-code { common-field-fixed-attlist, text } paragraph-content |= element text:sender-country { common-field-fixed-attlist, text } paragraph-content |= element text:sender-state-or-province { common-field-fixed-attlist, text } paragraph-content |= element text:author-name { common-field-fixed-attlist, text } paragraph-content |= element text:author-initials { common-field-fixed-attlist, text } paragraph-content |= element text:chapter { text-chapter-attlist, text } text-chapter-attlist &= attribute text:display { "name" | "number" | "number-and-name" | "plain-number-and-name" | "plain-number" } text-chapter-attlist &= attribute text:outline-level { nonNegativeInteger } paragraph-content |= element text:file-name { text-file-name-attlist, text } text-file-name-attlist &= attribute text:display { "full" | "path" | "name" | "name-and-extension" }? text-file-name-attlist &= common-field-fixed-attlist paragraph-content |= element text:template-name { text-template-name-attlist, text } text-template-name-attlist = attribute text:display { "full" | "path" | "name" | "name-and-extension" | "area" | "title" }? paragraph-content |= element text:sheet-name { text } text-variable-decl = element text:variable-decl { common-field-name-attlist, common-value-type-attlist } paragraph-content |= element text:variable-set { (common-field-name-attlist & common-field-formula-attlist & common-value-and-type-attlist & common-field-display-value-none-attlist & common-field-data-style-name-attlist), text } paragraph-content |= element text:variable-get { (common-field-name-attlist & common-field-display-value-formula-attlist & common-field-data-style-name-attlist), text } paragraph-content |= element text:variable-input { (common-field-name-attlist & common-field-description-attlist & common-value-type-attlist & common-field-display-value-none-attlist & common-field-data-style-name-attlist), text } text-user-field-decl = element text:user-field-decl { common-field-name-attlist, common-field-formula-attlist?, common-value-and-type-attlist } paragraph-content |= element text:user-field-get { (common-field-name-attlist & common-field-display-value-formula-none-attlist & common-field-data-style-name-attlist), text } paragraph-content |= element text:user-field-input { (common-field-name-attlist & common-field-description-attlist & common-field-data-style-name-attlist), text } text-sequence-decl = element text:sequence-decl { text-sequence-decl-attlist } text-sequence-decl-attlist &= common-field-name-attlist text-sequence-decl-attlist &= attribute text:display-outline-level { nonNegativeInteger } text-sequence-decl-attlist &= attribute text:separation-character { character }? paragraph-content |= element text:sequence { (common-field-name-attlist & common-field-formula-attlist & common-field-num-format-attlist & text-sequence-ref-name), text } text-sequence-ref-name = attribute text:ref-name { \string }? paragraph-content |= element text:expression { (common-field-formula-attlist & common-value-and-type-attlist? & common-field-display-value-formula-attlist & common-field-data-style-name-attlist), text } paragraph-content |= element text:text-input { common-field-description-attlist, text } paragraph-content |= element text:initial-creator { common-field-fixed-attlist, text } paragraph-content |= element text:creation-date { (common-field-fixed-attlist & common-field-data-style-name-attlist & attribute text:date-value { dateOrDateTime }?), text } paragraph-content |= element text:creation-time { (common-field-fixed-attlist & common-field-data-style-name-attlist & attribute text:time-value { timeOrDateTime }?), text } paragraph-content |= element text:description { common-field-fixed-attlist, text } paragraph-content |= element text:user-defined { (common-field-fixed-attlist & attribute text:name { \string } & common-field-data-style-name-attlist & attribute office:value { double }? & attribute office:date-value { dateOrDateTime }? & attribute office:time-value { duration }? & attribute office:boolean-value { boolean }? & attribute office:string-value { \string }?), text } paragraph-content |= element text:print-time { (common-field-fixed-attlist & common-field-data-style-name-attlist & attribute text:time-value { time }?), text } paragraph-content |= element text:print-date { (common-field-fixed-attlist & common-field-data-style-name-attlist & attribute text:date-value { date }?), text } paragraph-content |= element text:printed-by { common-field-fixed-attlist, text } paragraph-content |= element text:title { common-field-fixed-attlist, text } paragraph-content |= element text:subject { common-field-fixed-attlist, text } paragraph-content |= element text:keywords { common-field-fixed-attlist, text } paragraph-content |= element text:editing-cycles { common-field-fixed-attlist, text } paragraph-content |= element text:editing-duration { (common-field-fixed-attlist & common-field-data-style-name-attlist & attribute text:duration { duration }?), text } paragraph-content |= element text:modification-time { (common-field-fixed-attlist & common-field-data-style-name-attlist & attribute text:time-value { time }?), text } paragraph-content |= element text:modification-date { (common-field-fixed-attlist & common-field-data-style-name-attlist & attribute text:date-value { date }?), text } paragraph-content |= element text:creator { common-field-fixed-attlist, text } paragraph-content |= element text:page-count | text:paragraph-count | text:word-count | text:character-count | text:table-count | text:image-count | text:object-count { common-field-num-format-attlist, text } common-field-database-table = common-field-database-table-attlist, common-field-database-name common-field-database-name |= attribute text:database-name { \string }? common-field-database-name |= form-connection-resource common-field-database-table-attlist &= attribute text:table-name { \string } common-field-database-table-attlist &= attribute text:table-type { "table" | "query" | "command" }? paragraph-content |= element text:database-display { text-database-display-attlist, text } text-database-display-attlist &= common-field-database-table text-database-display-attlist &= common-field-data-style-name-attlist text-database-display-attlist &= attribute text:column-name { \string } paragraph-content |= element text:database-next { text-database-next-attlist } text-database-next-attlist &= common-field-database-table text-database-next-attlist &= attribute text:condition { formula }? paragraph-content |= element text:database-row-select { text-database-row-select-attlist } text-database-row-select-attlist &= common-field-database-table text-database-row-select-attlist &= attribute text:condition { formula }? text-database-row-select-attlist &= attribute text:row-number { nonNegativeInteger }? paragraph-content |= element text:database-row-number { (common-field-database-table & common-field-num-format-attlist & attribute text:value { nonNegativeInteger }?), text } paragraph-content |= element text:database-name { common-field-database-table, text } paragraph-content |= element text:page-variable-set { text-set-page-variable-attlist, text } text-set-page-variable-attlist &= attribute text:active { boolean }? text-set-page-variable-attlist &= attribute text:page-adjust { integer }? paragraph-content |= element text:page-variable-get { text-get-page-variable-attlist, text } text-get-page-variable-attlist &= common-field-num-format-attlist paragraph-content |= element text:placeholder { text-placeholder-attlist, text } text-placeholder-attlist &= attribute text:placeholder-type { "text" | "table" | "text-box" | "image" | "object" } text-placeholder-attlist &= common-field-description-attlist paragraph-content |= element text:conditional-text { text-conditional-text-attlist, text } text-conditional-text-attlist &= attribute text:condition { formula } text-conditional-text-attlist &= attribute text:string-value-if-true { \string } text-conditional-text-attlist &= attribute text:string-value-if-false { \string } text-conditional-text-attlist &= attribute text:current-value { boolean }? paragraph-content |= element text:hidden-text { text-hidden-text-attlist, text } text-hidden-text-attlist &= attribute text:condition { formula } text-hidden-text-attlist &= attribute text:string-value { \string } text-hidden-text-attlist &= attribute text:is-hidden { boolean }? paragraph-content |= element text:reference-ref | text:bookmark-ref { text-common-ref-content & text-ref-content } paragraph-content |= element text:note-ref { text-common-ref-content & text-note-ref-content & text-ref-content } paragraph-content |= element text:sequence-ref { text-common-ref-content & text-sequence-ref-content } text-common-ref-content &= text text-common-ref-content &= attribute text:ref-name { \string }? text-note-ref-content &= text-note-class text-ref-content &= attribute text:reference-format { "page" | "chapter" | "direction" | "text" }? text-sequence-ref-content &= attribute text:reference-format { "page" | "chapter" | "direction" | "text" | "category-and-value" | "caption" | "value" }? paragraph-content |= element text:script { ((attribute xlink:href { anyURI }, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?) | text) & attribute script:language { \string }? } paragraph-content |= element text:execute-macro { attribute text:name { \string }?, office-event-listeners?, text } paragraph-content |= element text:hidden-paragraph { text-hidden-paragraph-attlist, text } text-hidden-paragraph-attlist &= attribute text:condition { formula } text-hidden-paragraph-attlist &= attribute text:is-hidden { boolean }? paragraph-content |= element text:dde-connection { attribute text:connection-name { \string }, text } paragraph-content |= element text:measure { attribute text:kind { "value" | "unit" | "gap" }, text } paragraph-content |= element text:table-formula { (common-field-formula-attlist & common-field-display-value-formula-attlist & common-field-data-style-name-attlist), text } common-value-type-attlist = attribute office:value-type { valueType } common-value-and-type-attlist = (attribute office:value-type { "float" }, attribute office:value { double }) | (attribute office:value-type { "percentage" }, attribute office:value { double }) | (attribute office:value-type { "currency" }, attribute office:value { double }, attribute office:currency { \string }?) | (attribute office:value-type { "date" }, attribute office:date-value { dateOrDateTime }) | (attribute office:value-type { "time" }, attribute office:time-value { duration }) | (attribute office:value-type { "boolean" }, attribute office:boolean-value { boolean }) | (attribute office:value-type { "string" }, attribute office:string-value { \string }?) common-field-fixed-attlist = attribute text:fixed { boolean }? common-field-name-attlist = attribute text:name { variableName } common-field-description-attlist = attribute text:description { text }? common-field-display-value-none-attlist = attribute text:display { "value" | "none" }? common-field-display-value-formula-none-attlist = attribute text:display { "value" | "formula" | "none" }? common-field-display-value-formula-attlist = attribute text:display { "value" | "formula" }? common-field-formula-attlist = attribute text:formula { formula }? common-field-data-style-name-attlist = attribute style:data-style-name { styleNameRef }? common-field-num-format-attlist = common-num-format-attlist? paragraph-content |= element text:toc-mark-start { text-toc-mark-start-attrs } text-toc-mark-start-attrs = text-id, text-outline-level text-outline-level = attribute text:outline-level { positiveInteger }? text-id = attribute text:id { \string } paragraph-content |= element text:toc-mark-end { text-id } paragraph-content |= element text:toc-mark { attribute text:string-value { \string }, text-outline-level } paragraph-content |= element text:user-index-mark-start { text-id, text-outline-level, text-index-name } paragraph-content |= element text:user-index-mark-end { text-id, text-outline-level } paragraph-content |= element text:user-index-mark { attribute text:string-value { \string }, text-outline-level, text-index-name } text-index-name = attribute text:index-name { \string } paragraph-content |= element text:alphabetical-index-mark-start { text-id, text-alphabetical-index-mark-attrs } paragraph-content |= element text:alphabetical-index-mark-end { text-id } paragraph-content |= element text:alphabetical-index-mark { attribute text:string-value { \string }, text-alphabetical-index-mark-attrs } text-alphabetical-index-mark-attrs &= attribute text:key1 { \string }?, attribute text:key2 { \string }? text-alphabetical-index-mark-attrs &= attribute text:string-value-phonetic { \string }?, attribute text:key1-phonetic { \string }?, attribute text:key2-phonetic { \string }? text-alphabetical-index-mark-attrs &= [ a:defaultValue = "false" ] attribute text:main-entry { boolean }? paragraph-content |= element text:bibliography-mark { attribute text:bibliography-type { text-bibliography-types }, 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 { \string }*, text } text-bibliography-types = "article" | "book" | "booklet" | "conference" | "custom1" | "custom2" | "custom3" | "custom4" | "custom5" | "email" | "inbook" | "incollection" | "inproceedings" | "journal" | "manual" | "mastersthesis" | "misc" | "phdthesis" | "proceedings" | "techreport" | "unpublished" | "www" text-index-body = element text:index-body { index-content-main* } index-content-main = text-content | text-index-title text-index-title = element text:index-title { sectionAttr, index-content-main* } text-table-of-content = element text:table-of-content { sectionAttr, text-table-of-content-source, text-index-body } text-table-of-content-source = element text:table-of-content-source { text-table-of-content-source-attlist, text-index-title-template?, text-table-of-content-entry-template*, text-index-source-styles* } text-table-of-content-source-attlist &= attribute text:outline-level { positiveInteger }? text-table-of-content-source-attlist &= [ a:defaultValue = "true" ] attribute text:use-outline-level { boolean }? text-table-of-content-source-attlist &= attribute text:use-index-marks { boolean }? text-table-of-content-source-attlist &= attribute text:use-index-source-styles { boolean }? text-table-of-content-source-attlist &= attribute text:index-scope { "document" | "chapter" }? text-table-of-content-source-attlist &= attribute text:relative-tab-stop-position { boolean }? text-table-of-content-entry-template = element text:table-of-content-entry-template { text-table-of-content-entry-template-attlist, text-table-of-content-children* } text-table-of-content-children = text-index-entry-chapter | text-index-entry-page-number | text-index-entry-text | text-index-entry-span | text-index-entry-tab-stop | text-index-entry-link-start | text-index-entry-link-end text-table-of-content-entry-template-attlist &= attribute text:outline-level { positiveInteger } text-table-of-content-entry-template-attlist &= attribute text:style-name { styleNameRef } text-illustration-index = element text:illustration-index { sectionAttr, text-illustration-index-source, text-index-body } text-illustration-index-source = element text:illustration-index-source { text-illustration-index-source-attrs, text-index-title-template?, text-illustration-index-entry-template? } text-illustration-index-source-attrs &= text-index-scope-attr text-index-scope-attr = [ a:defaultValue = "document" ] attribute text:index-scope { "document" | "chapter" }? text-illustration-index-source-attrs &= text-relative-tab-stop-position-attr text-relative-tab-stop-position-attr = [ a:defaultValue = "true" ] attribute text:relative-tab-stop-position { boolean }? text-illustration-index-source-attrs &= [ a:defaultValue = "true" ] attribute text:use-caption { boolean }? text-illustration-index-source-attrs &= attribute text:caption-sequence-name { \string }? text-illustration-index-source-attrs &= attribute text:caption-sequence-format { "text" | "category-and-value" | "caption" }? text-illustration-index-entry-template = element text:illustration-index-entry-template { text-illustration-index-entry-content } text-illustration-index-entry-content = text-illustration-index-entry-template-attrs, (text-index-entry-page-number | text-index-entry-text | text-index-entry-span | text-index-entry-tab-stop)* text-illustration-index-entry-template-attrs = attribute text:style-name { styleNameRef } text-table-index = element text:table-index { sectionAttr, text-table-index-source, text-index-body } text-table-index-source = element text:table-index-source { text-illustration-index-source-attrs, text-index-title-template?, text-table-index-entry-template? } text-table-index-entry-template = element text:table-index-entry-template { text-illustration-index-entry-content } text-object-index = element text:object-index { sectionAttr, text-object-index-source, text-index-body } text-object-index-source = element text:object-index-source { text-object-index-source-attrs, text-index-title-template?, text-object-index-entry-template? } text-object-index-source-attrs &= text-index-scope-attr text-object-index-source-attrs &= text-relative-tab-stop-position-attr text-object-index-source-attrs &= [ a:defaultValue = "false" ] attribute text:use-spreadsheet-objects { boolean }? text-object-index-source-attrs &= [ a:defaultValue = "false" ] attribute text:use-math-objects { boolean }? text-object-index-source-attrs &= [ a:defaultValue = "false" ] attribute text:use-draw-objects { boolean }? text-object-index-source-attrs &= [ a:defaultValue = "false" ] attribute text:use-chart-objects { boolean }? text-object-index-source-attrs &= [ a:defaultValue = "false" ] attribute text:use-other-objects { boolean }? text-object-index-entry-template = element text:object-index-entry-template { text-illustration-index-entry-content } text-user-index = element text:user-index { sectionAttr, text-user-index-source, text-index-body } text-user-index-source = element text:user-index-source { text-user-index-source-attr, text-index-title-template?, text-user-index-entry-template*, text-index-source-styles* } text-user-index-source-attr &= text-index-scope-attr, text-relative-tab-stop-position-attr, attribute text:index-name { \string } text-user-index-source-attr &= [ a:defaultValue = "false" ] attribute text:use-index-marks { boolean }?, [ a:defaultValue = "false" ] attribute text:use-graphics { boolean }?, [ a:defaultValue = "false" ] attribute text:use-tables { boolean }?, [ a:defaultValue = "false" ] attribute text:use-floating-frames { boolean }?, [ a:defaultValue = "false" ] attribute text:use-objects { boolean }? text-user-index-source-attr &= [ a:defaultValue = "false" ] attribute text:copy-outline-levels { boolean }? text-user-index-entry-template = element text:user-index-entry-template { text-user-index-entry-template-attrs, (text-index-entry-chapter | text-index-entry-page-number | text-index-entry-text | text-index-entry-span | text-index-entry-tab-stop)* } text-user-index-entry-template-attrs &= attribute text:outline-level { positiveInteger } text-user-index-entry-template-attrs &= attribute text:style-name { styleNameRef } text-alphabetical-index = element text:alphabetical-index { sectionAttr, text-alphabetical-index-source, text-index-body } text-alphabetical-index-source = element text:alphabetical-index-source { text-alphabetical-index-source-attrs, text-index-title-template?, text-alphabetical-index-entry-template* } text-alphabetical-index-source-attrs &= text-index-scope-attr, text-relative-tab-stop-position-attr text-alphabetical-index-source-attrs &= [ a:defaultValue = "false" ] attribute text:ignore-case { boolean }? text-alphabetical-index-source-attrs &= attribute text:main-entry-style-name { styleNameRef }? text-alphabetical-index-source-attrs &= [ a:defaultValue = "false" ] attribute text:alphabetical-separators { boolean }? text-alphabetical-index-source-attrs &= [ a:defaultValue = "true" ] attribute text:combine-entries { boolean }?, [ a:defaultValue = "false" ] attribute text:combine-entries-with-dash { boolean }?, [ a:defaultValue = "true" ] attribute text:combine-entries-with-pp { boolean }? text-alphabetical-index-source-attrs &= [ a:defaultValue = "false" ] attribute text:use-keys-as-entries { boolean }? text-alphabetical-index-source-attrs &= [ a:defaultValue = "false" ] attribute text:capitalize-entries { boolean }? text-alphabetical-index-source-attrs &= [ a:defaultValue = "false" ] attribute text:comma-separated { boolean }? text-alphabetical-index-source-attrs &= attribute fo:language { languageCode }? text-alphabetical-index-source-attrs &= attribute fo:country { countryCode }? text-alphabetical-index-source-attrs &= attribute text:sort-algorithm { \string }? text-alphabetical-index-auto-mark-file = element text:alphabetical-index-auto-mark-file { attribute xlink:href { anyURI }, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }? } text-alphabetical-index-entry-template = element text:alphabetical-index-entry-template { text-alphabetical-index-entry-template-attrs, (text-index-entry-chapter | text-index-entry-page-number | text-index-entry-text | text-index-entry-span | text-index-entry-tab-stop)* } text-alphabetical-index-entry-template-attrs &= attribute text:outline-level { "1" | "2" | "3" | "separator" } text-alphabetical-index-entry-template-attrs &= attribute text:style-name { styleNameRef } text-bibliography = element text:bibliography { sectionAttr, text-bibliography-source, text-index-body } text-bibliography-source = element text:bibliography-source { text-index-title-template?, text-bibliography-entry-template* } text-bibliography-entry-template = element text:bibliography-entry-template { text-bibliography-entry-template-attrs, (text-index-entry-span | text-index-entry-tab-stop | text-index-entry-bibliography)* } text-bibliography-entry-template-attrs &= attribute text:bibliography-type { text-bibliography-types } text-bibliography-entry-template-attrs &= attribute text:style-name { styleNameRef } text-index-source-styles = element text:index-source-styles { attribute text:outline-level { positiveInteger }, text-index-source-style* } text-index-source-style = element text:index-source-style { attribute text:style-name { styleName }, empty } text-index-title-template = element text:index-title-template { attribute text:style-name { styleNameRef }?, text } text-index-entry-chapter = element text:index-entry-chapter { attribute text:style-name { styleNameRef }?, text-index-entry-chapter-attrs } text-index-entry-chapter-attrs = [ a:defaultValue = "number" ] attribute text:display { "name" | "number" | "number-and-name" }? text-index-entry-text = element text:index-entry-text { attribute text:style-name { styleNameRef }? } text-index-entry-page-number = element text:index-entry-page-number { attribute text:style-name { styleNameRef }? } text-index-entry-span = element text:index-entry-span { attribute text:style-name { styleNameRef }?, text } text-index-entry-bibliography = element text:index-entry-bibliography { text-index-entry-bibliography-attrs } text-index-entry-bibliography-attrs &= attribute text:style-name { styleNameRef }? text-index-entry-bibliography-attrs &= attribute text:bibliography-data-field { "address" | "annote" | "author" | "bibliography-type" | "booktitle" | "chapter" | "custom1" | "custom2" | "custom3" | "custom4" | "custom5" | "edition" | "editor" | "howpublished" | "identifier" | "institution" | "isbn" | "issn" | "journal" | "month" | "note" | "number" | "organizations" | "pages" | "publisher" | "report-type" | "school" | "series" | "title" | "url" | "volume" | "year" } text-index-entry-tab-stop = element text:index-entry-tab-stop { attribute text:style-name { styleNameRef }?, text-index-entry-tab-stop-attrs } text-index-entry-tab-stop-attrs &= attribute style:leader-char { character }? text-index-entry-tab-stop-attrs &= attribute style:type { "right" } | (attribute style:type { "left" }, attribute style:position { length }) text-index-entry-link-start = element text:index-entry-link-start { attribute text:style-name { styleNameRef }? } text-index-entry-link-end = element text:index-entry-link-end { attribute text:style-name { styleNameRef }? } table-table = element table:table { table-table-attlist, table-table-source?, office-dde-source?, table-scenario?, office-forms?, table-shapes?, table-columns-and-groups, table-rows-and-groups } table-columns-and-groups = (table-table-column-group | table-columns-no-group)+ table-columns-no-group = (table-columns, (table-table-header-columns, table-columns?)?) | (table-table-header-columns, table-columns?) table-columns = table-table-columns | table-table-column+ table-rows-and-groups = (table-table-row-group | table-rows-no-group)+ table-rows-no-group = (table-rows, (table-table-header-rows, table-rows?)?) | (table-table-header-rows, table-rows?) table-rows = table-table-rows | (text-soft-page-break?, table-table-row)+ table-table-attlist &= attribute table:name { \string }? table-table-attlist &= attribute table:style-name { styleNameRef }? table-table-attlist &= [ a:defaultValue = "false" ] attribute table:protected { boolean }?, attribute table:protection-key { text }? table-table-attlist &= [ a:defaultValue = "true" ] attribute table:print { boolean }? table-table-attlist &= attribute table:print-ranges { cellRangeAddressList }? table-table-row = element table:table-row { table-table-row-attlist, (table-table-cell | table-covered-table-cell)+ } table-table-row-attlist &= [ a:defaultValue = "1" ] attribute table:number-rows-repeated { positiveInteger }? table-table-row-attlist &= attribute table:style-name { styleNameRef }? table-table-row-attlist &= attribute table:default-cell-style-name { styleNameRef }? table-table-row-attlist &= [ a:defaultValue = "visible" ] attribute table:visibility { table-visibility-value }? table-visibility-value = "visible" | "collapse" | "filter" table-table-cell = element table:table-cell { table-table-cell-attlist, table-table-cell-attlist-extra, table-table-cell-content } table-covered-table-cell = element table:covered-table-cell { table-table-cell-attlist, table-table-cell-content } table-table-cell-content = table-cell-range-source?, office-annotation?, table-detective?, text-content* table-table-cell-attlist &= [ a:defaultValue = "1" ] attribute table:number-columns-repeated { positiveInteger }? table-table-cell-attlist-extra &= [ a:defaultValue = "1" ] attribute table:number-columns-spanned { positiveInteger }?, [ a:defaultValue = "1" ] attribute table:number-rows-spanned { positiveInteger }? table-table-cell-attlist &= attribute table:style-name { styleNameRef }? table-table-cell-attlist &= attribute table:content-validation-name { \string }? table-table-cell-attlist &= attribute table:formula { \string }? table-table-cell-attlist-extra &= attribute table:number-matrix-columns-spanned { positiveInteger }?, attribute table:number-matrix-rows-spanned { positiveInteger }? table-table-cell-attlist &= common-value-and-type-attlist? table-table-cell-attlist &= [ a:defaultValue = "false" ] attribute table:protect { boolean }? table-table-column = element table:table-column { table-table-column-attlist, empty } table-table-column-attlist &= [ a:defaultValue = "1" ] attribute table:number-columns-repeated { positiveInteger }? table-table-column-attlist &= attribute table:style-name { styleNameRef }? table-table-column-attlist &= [ a:defaultValue = "visible" ] attribute table:visibility { table-visibility-value }? table-table-column-attlist &= attribute table:default-cell-style-name { styleNameRef }? table-table-header-columns = element table:table-header-columns { table-table-column+ } table-table-columns = element table:table-columns { table-table-column+ } table-table-column-group = element table:table-column-group { table-table-column-group-attlist, table-columns-and-groups } table-table-column-group-attlist &= [ a:defaultValue = "true" ] attribute table:display { boolean }? table-table-header-rows = element table:table-header-rows { (text-soft-page-break?, table-table-row)+ } table-table-rows = element table:table-rows { (text-soft-page-break?, table-table-row)+ } table-table-row-group = element table:table-row-group { table-table-row-group-attlist, table-rows-and-groups } table-table-row-group-attlist &= [ a:defaultValue = "true" ] attribute table:display { boolean }? table-table-attlist &= [ a:defaultValue = "false" ] attribute table:is-sub-table { boolean }? cellAddress = xsd:string { pattern = "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+" } cellRangeAddress = xsd:string { pattern = "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?" } cellRangeAddressList = # Value is a space separated list of "cellRangeAddress" patterns xsd:string table-table-source = element table:table-source { table-table-source-attlist, table-linked-source-attlist, empty } table-table-source-attlist &= [ a:defaultValue = "copy-all" ] attribute table:mode { "copy-all" | "copy-results-only" }? table-table-source-attlist &= attribute table:table-name { \string }? table-linked-source-attlist &= [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "onRequest" ] attribute xlink:actuate { "onRequest" }?, attribute xlink:href { anyURI } table-linked-source-attlist &= attribute table:filter-name { \string }? table-linked-source-attlist &= attribute table:filter-options { \string }? table-linked-source-attlist &= attribute table:refresh-delay { duration }? table-scenario = element table:scenario { table-scenario-attlist, empty } table-scenario-attlist &= attribute table:scenario-ranges { cellRangeAddressList } table-scenario-attlist &= attribute table:is-active { boolean } table-scenario-attlist &= [ a:defaultValue = "true" ] attribute table:display-border { boolean }? table-scenario-attlist &= attribute table:border-color { color }? table-scenario-attlist &= [ a:defaultValue = "true" ] attribute table:copy-back { boolean }? table-scenario-attlist &= [ a:defaultValue = "true" ] attribute table:copy-styles { boolean }? table-scenario-attlist &= [ a:defaultValue = "true" ] attribute table:copy-formulas { boolean }? table-scenario-attlist &= attribute table:comment { \string }? table-scenario-attlist &= attribute table:protected { boolean }? table-shapes = element table:shapes { shape+ } table-cell-range-source = element table:cell-range-source { table-table-cell-range-source-attlist, table-linked-source-attlist, empty } table-table-cell-range-source-attlist &= attribute table:name { \string } table-table-cell-range-source-attlist &= attribute table:last-column-spanned { positiveInteger }, attribute table:last-row-spanned { positiveInteger } table-detective = element table:detective { table-highlighted-range*, table-operation* } table-operation = element table:operation { table-operation-attlist, empty } table-operation-attlist &= attribute table:name { "trace-dependents" | "remove-dependents" | "trace-precedents" | "remove-precedents" | "trace-errors" } table-operation-attlist &= attribute table:index { nonNegativeInteger } table-highlighted-range = element table:highlighted-range { (table-highlighted-range-attlist | table-highlighted-range-attlist-invalid), empty } table-highlighted-range-attlist &= attribute table:cell-range-address { cellRangeAddress }? table-highlighted-range-attlist &= attribute table:direction { "from-another-table" | "to-another-table" | "from-same-table" } table-highlighted-range-attlist &= [ a:defaultValue = "false" ] attribute table:contains-error { boolean }? table-highlighted-range-attlist-invalid &= attribute table:marked-invalid { boolean } office-spreadsheet-attlist &= [ a:defaultValue = "false" ] attribute table:structure-protected { boolean }?, attribute table:protection-key { \string }? table-calculation-settings = element table:calculation-settings { table-calculation-setting-attlist, table-null-date?, table-iteration? } table-calculation-setting-attlist &= [ a:defaultValue = "true" ] attribute table:case-sensitive { boolean }? table-calculation-setting-attlist &= [ a:defaultValue = "false" ] attribute table:precision-as-shown { boolean }? table-calculation-setting-attlist &= [ a:defaultValue = "true" ] attribute table:search-criteria-must-apply-to-whole-cell { boolean }? table-calculation-setting-attlist &= [ a:defaultValue = "true" ] attribute table:automatic-find-labels { boolean }? table-calculation-setting-attlist &= [ a:defaultValue = "true" ] attribute table:use-regular-expressions { boolean }? table-calculation-setting-attlist &= [ a:defaultValue = "1930" ] attribute table:null-year { positiveInteger }? table-null-date = element table:null-date { [ a:defaultValue = "date" ] attribute table:value-type { valueType }?, [ a:defaultValue = "1899-12-30" ] attribute table:date-value { date }?, empty } table-iteration = element table:iteration { [ a:defaultValue = "disable" ] attribute table:status { "enable" | "disable" }?, [ a:defaultValue = "100" ] attribute table:steps { positiveInteger }?, [ a:defaultValue = "0.001" ] attribute table:maximum-difference { double }?, empty } table-content-validations = element table:content-validations { table-content-validation+ } table-content-validation = element table:content-validation { table-validation-attlist, table-help-message?, (table-error-message | (table-error-macro, office-event-listeners?))? } table-validation-attlist &= attribute table:name { \string } table-validation-attlist &= attribute table:condition { \string }? table-validation-attlist &= attribute table:base-cell-address { cellAddress }? table-validation-attlist &= [ a:defaultValue = "true" ] attribute table:allow-empty-cell { boolean }? table-validation-attlist &= [ a:defaultValue = "unsorted" ] attribute table:display-list { "none" | "unsorted" | "sort-ascending" }? table-help-message = element table:help-message { attribute table:title { \string }?, [ a:defaultValue = "false" ] attribute table:display { boolean }?, text-p* } table-error-message = element table:error-message { attribute table:title { \string }?, [ a:defaultValue = "false" ] attribute table:display { boolean }?, [ a:defaultValue = "stop" ] attribute table:message-type { "stop" | "warning" | "information" }?, text-p* } table-error-macro = element table:error-macro { [ a:defaultValue = "true" ] attribute table:execute { boolean }? } table-label-ranges = element table:label-ranges { table-label-range* } table-label-range = element table:label-range { table-label-range-attlist, empty } table-label-range-attlist &= attribute table:label-cell-range-address { cellRangeAddress } table-label-range-attlist &= attribute table:data-cell-range-address { cellRangeAddress } table-label-range-attlist &= attribute table:orientation { "column" | "row" } table-named-expressions = element table:named-expressions { (table-named-range | table-named-expression)* } table-named-range = element table:named-range { table-named-range-attlist, empty } table-named-range-attlist &= attribute table:name { \string }, attribute table:cell-range-address { cellRangeAddress }, attribute table:base-cell-address { cellAddress }?, [ a:defaultValue = "none" ] attribute table:range-usable-as { "none" | list { ("print-range" | "filter" | "repeat-row" | "repeat-column")+ } }? table-named-expression = element table:named-expression { table-named-expression-attlist, empty } table-named-expression-attlist &= attribute table:name { \string }, attribute table:expression { \string }, attribute table:base-cell-address { cellAddress }? table-database-ranges = element table:database-ranges { table-database-range* } table-database-range = element table:database-range { table-database-range-attlist, (table-database-source-sql | table-database-source-table | table-database-source-query)?, table-filter?, table-sort?, table-subtotal-rules? } table-database-range-attlist &= attribute table:name { \string }? table-database-range-attlist &= [ a:defaultValue = "false" ] attribute table:is-selection { boolean }? table-database-range-attlist &= [ a:defaultValue = "false" ] attribute table:on-update-keep-styles { boolean }? table-database-range-attlist &= [ a:defaultValue = "true" ] attribute table:on-update-keep-size { boolean }? table-database-range-attlist &= [ a:defaultValue = "true" ] attribute table:has-persistent-data { boolean }? table-database-range-attlist &= [ a:defaultValue = "row" ] attribute table:orientation { "column" | "row" }? table-database-range-attlist &= [ a:defaultValue = "true" ] attribute table:contains-header { boolean }? table-database-range-attlist &= [ a:defaultValue = "false" ] attribute table:display-filter-buttons { boolean }? table-database-range-attlist &= attribute table:target-range-address { cellRangeAddress } table-database-range-attlist &= attribute table:refresh-delay { boolean }? table-database-source-sql = element table:database-source-sql { table-database-source-sql-attlist, empty } table-database-source-sql-attlist &= attribute table:database-name { \string } table-database-source-sql-attlist &= attribute table:sql-statement { \string } table-database-source-sql-attlist &= [ a:defaultValue = "false" ] attribute table:parse-sql-statement { boolean }? table-database-source-query = element table:database-source-table { table-database-source-table-attlist, empty } table-database-source-table-attlist &= attribute table:database-name { \string } table-database-source-table-attlist &= attribute table:database-table-name { \string } table-database-source-table = element table:database-source-query { table-database-source-query-attlist, empty } table-database-source-query-attlist &= attribute table:database-name { \string } table-database-source-query-attlist &= attribute table:query-name { \string } table-sort = element table:sort { table-sort-attlist, table-sort-by+ } table-sort-attlist &= [ a:defaultValue = "true" ] attribute table:bind-styles-to-content { boolean }? table-sort-attlist &= attribute table:target-range-address { cellRangeAddress }? table-sort-attlist &= [ a:defaultValue = "false" ] attribute table:case-sensitive { boolean }? table-sort-attlist &= attribute table:language { languageCode }? table-sort-attlist &= attribute table:country { countryCode }? table-sort-attlist &= attribute table:algorithm { \string }? table-sort-by = element table:sort-by { table-sort-by-attlist, empty } table-sort-by-attlist &= attribute table:field-number { nonNegativeInteger } table-sort-by-attlist &= [ a:defaultValue = "automatic" ] attribute table:data-type { "text" | "number" | "automatic" | \string }? table-sort-by-attlist &= [ a:defaultValue = "ascending" ] attribute table:order { "ascending" | "descending" }? table-subtotal-rules = element table:subtotal-rules { table-subtotal-rules-attlist, table-sort-groups?, table-subtotal-rule* } table-subtotal-rules-attlist &= [ a:defaultValue = "true" ] attribute table:bind-styles-to-content { boolean }? table-subtotal-rules-attlist &= [ a:defaultValue = "false" ] attribute table:case-sensitive { boolean }? table-subtotal-rules-attlist &= [ a:defaultValue = "false" ] attribute table:page-breaks-on-group-change { boolean }? table-sort-groups = element table:sort-groups { table-sort-groups-attlist, empty } table-sort-groups-attlist &= [ a:defaultValue = "automatic" ] attribute table:data-type { "text" | "number" | "automatic" | \string }? table-sort-groups-attlist &= [ a:defaultValue = "ascending" ] attribute table:order { "ascending" | "descending" }? table-subtotal-rule = element table:subtotal-rule { table-subtotal-rule-attlist, table-subtotal-field* } table-subtotal-rule-attlist &= attribute table:group-by-field-number { nonNegativeInteger } table-subtotal-field = element table:subtotal-field { table-subtotal-field-attlist, empty } table-subtotal-field-attlist &= attribute table:field-number { nonNegativeInteger } table-subtotal-field-attlist &= attribute table:function { "auto" | "average" | "count" | "countnums" | "max" | "min" | "product" | "stdev" | "stdevp" | "sum" | "var" | "varp" | \string } table-filter = element table:filter { table-filter-attlist, (table-filter-condition | table-filter-and | table-filter-or) } table-filter-attlist &= attribute table:target-range-address { cellRangeAddress }? table-filter-attlist &= [ a:defaultValue = "self" ] attribute table:condition-source { "self" | "cell-range" }? table-filter-attlist &= attribute table:condition-source-range-address { cellRangeAddress }? table-filter-attlist &= [ a:defaultValue = "true" ] attribute table:display-duplicates { boolean }? table-filter-and = element table:filter-and { (table-filter-or | table-filter-condition)+ } table-filter-or = element table:filter-or { (table-filter-and | table-filter-condition)+ } table-filter-condition = element table:filter-condition { table-filter-condition-attlist, empty } table-filter-condition-attlist &= attribute table:field-number { nonNegativeInteger } table-filter-condition-attlist &= attribute table:value { \string } table-filter-condition-attlist &= attribute table:operator { \string } table-filter-condition-attlist &= [ a:defaultValue = "false" ] attribute table:case-sensitive { \string }? table-filter-condition-attlist &= [ a:defaultValue = "text" ] attribute table:data-type { "text" | "number" }? table-data-pilot-tables = element table:data-pilot-tables { table-data-pilot-table* } table-data-pilot-table = element table:data-pilot-table { table-data-pilot-table-attlist, (table-database-source-sql | table-database-source-table | table-database-source-query | table-source-service | table-source-cell-range)?, table-data-pilot-field+ } table-data-pilot-table-attlist &= attribute table:name { \string } table-data-pilot-table-attlist &= attribute table:application-data { \string }? table-data-pilot-table-attlist &= [ a:defaultValue = "both" ] attribute table:grand-total { "none" | "row" | "column" | "both" }? table-data-pilot-table-attlist &= [ a:defaultValue = "false" ] attribute table:ignore-empty-rows { boolean }? table-data-pilot-table-attlist &= [ a:defaultValue = "false" ] attribute table:identify-categories { boolean }? table-data-pilot-table-attlist &= attribute table:target-range-address { cellRangeAddress } table-data-pilot-table-attlist &= attribute table:buttons { cellRangeAddressList }? table-data-pilot-table-attlist &= [ a:defaultValue = "true" ] attribute table:show-filter-button { boolean }? table-data-pilot-table-attlist &= [ a:defaultValue = "true" ] attribute table:drill-down-on-double-click { boolean }? table-source-cell-range = element table:source-cell-range { table-source-cell-range-attlist, table-filter? } table-source-cell-range-attlist &= attribute table:cell-range-address { cellRangeAddress } table-source-service = element table:source-service { table-source-service-attlist, empty } table-source-service-attlist &= attribute table:name { \string } table-source-service-attlist &= attribute table:source-name { \string } table-source-service-attlist &= attribute table:object-name { \string } table-source-service-attlist &= attribute table:user-name { \string }? table-source-service-attlist &= attribute table:password { \string }? table-data-pilot-field = element table:data-pilot-field { table-data-pilot-field-attlist, table-data-pilot-level?, table-data-pilot-field-reference?, table-data-pilot-groups? } table-data-pilot-field-attlist &= attribute table:source-field-name { \string } table-data-pilot-field-attlist &= attribute table:orientation { "row" | "column" | "data" | "hidden" } | (attribute table:orientation { "page" }, attribute table:selected-page { \string }) table-data-pilot-field-attlist &= [ a:defaultValue = "false" ] attribute table:is-data-layout-field { \string }? table-data-pilot-field-attlist &= attribute table:function { "auto" | "average" | "count" | "countnums" | "max" | "min" | "product" | "stdev" | "stdevp" | "sum" | "var" | "varp" | \string }? table-data-pilot-field-attlist &= [ a:defaultValue = "-1" ] attribute table:used-hierarchy { integer }? table-data-pilot-level = element table:data-pilot-level { table-data-pilot-level-attlist, table-data-pilot-subtotals?, table-data-pilot-members?, table-data-pilot-display-info?, table-data-pilot-sort-info?, table-data-pilot-layout-info? } table-data-pilot-level-attlist &= attribute table:show-empty { boolean }? table-data-pilot-subtotals = element table:data-pilot-subtotals { table-data-pilot-subtotal* } table-data-pilot-subtotal = element table:data-pilot-subtotal { table-data-pilot-subtotal-attlist, empty } table-data-pilot-subtotal-attlist &= attribute table:function { "auto" | "average" | "count" | "countnums" | "max" | "min" | "product" | "stdev" | "stdevp" | "sum" | "var" | "varp" | \string } table-data-pilot-members = element table:data-pilot-members { table-data-pilot-member* } table-data-pilot-member = element table:data-pilot-member { table-data-pilot-member-attlist, empty } table-data-pilot-member-attlist &= attribute table:name { \string } table-data-pilot-member-attlist &= attribute table:display { boolean }? table-data-pilot-member-attlist &= attribute table:show-details { boolean }? table-data-pilot-display-info = element table:data-pilot-display-info { table-data-pilot-display-info-attlist, empty } table-data-pilot-display-info-attlist &= attribute table:enabled { boolean } table-data-pilot-display-info-attlist &= attribute table:data-field { \string } table-data-pilot-display-info-attlist &= attribute table:member-count { nonNegativeInteger } table-data-pilot-display-info-attlist &= attribute table:display-member-mode { "from-top" | "from-bottom" } table-data-pilot-sort-info = element table:data-pilot-sort-info { table-data-pilot-sort-info-attlist, empty } table-data-pilot-sort-info-attlist &= (attribute table:sort-mode { "data" }, attribute table:data-field { \string }) | attribute table:sort-mode { "none" | "manual" | "name" } table-data-pilot-sort-info-attlist &= attribute table:order { "ascending" | "descending" } table-data-pilot-layout-info = element table:data-pilot-layout-info { table-data-pilot-layout-info-attlist, empty } table-data-pilot-layout-info-attlist &= attribute table:layout-mode { "tabular-layout" | "outline-subtotals-top" | "outline-subtotals-bottom" } table-data-pilot-layout-info-attlist &= attribute table:add-empty-lines { boolean } table-data-pilot-field-reference = element table:data-pilot-field-reference { table-data-pilot-field-reference-attlist } table-data-pilot-field-reference-attlist &= attribute table:field-name { \string } table-data-pilot-field-reference-attlist &= (attribute table:member-type { "named" }, attribute table:member-name { \string }) | attribute table:member-type { "previous" | "next" } table-data-pilot-field-reference-attlist &= attribute table:type { "none" | "member-difference" | "member-percentage" | "member-percentage-difference" | "running-total" | "row-percentage" | "column-percentage" | "total-percentage" | "index" } table-data-pilot-groups = element table:data-pilot-groups { table-data-pilot-groups-attlist, table-data-pilot-group+ } table-data-pilot-groups-attlist &= attribute table:source-field-name { \string } table-data-pilot-groups-attlist &= attribute table:date-start { dateOrDateTime | "auto" } | attribute table:start { double | "auto" } table-data-pilot-groups-attlist &= attribute table:date-end { dateOrDateTime | "auto" } | attribute table:end { double | "auto" } table-data-pilot-groups-attlist &= attribute table:step { double } table-data-pilot-groups-attlist &= attribute table:grouped-by { "seconds" | "minutes" | "hours" | "days" | "months" | "quarters" | "years" } table-data-pilot-group = element table:data-pilot-group { table-data-pilot-group-attlist, table-data-pilot-group-member+ } table-data-pilot-group-attlist &= attribute table:name { \string } table-data-pilot-group-member = element table:data-pilot-group-member { table-data-pilot-group-member-attlist } table-data-pilot-group-member-attlist &= attribute table:name { \string } table-consolidation = element table:consolidation { table-consolidation-attlist, empty } table-consolidation-attlist &= attribute table:function { "auto" | "average" | "count" | "countnums" | "max" | "min" | "product" | "stdev" | "stdevp" | "sum" | "var" | "varp" | \string } table-consolidation-attlist &= attribute table:source-cell-range-addresses { cellRangeAddressList } table-consolidation-attlist &= attribute table:target-cell-address { cellAddress } table-consolidation-attlist &= [ a:defaultValue = "none" ] attribute table:use-labels { "none" | "row" | "column" | "both" }? table-consolidation-attlist &= [ a:defaultValue = "false" ] attribute table:link-to-source-data { boolean }? table-dde-links = element table:dde-links { table-dde-link+ } table-tracked-changes = element table:tracked-changes { table-tracked-changes-attlist, (table-cell-content-change | table-insertion | table-deletion | table-movement)* } table-tracked-changes-attlist &= [ a:defaultValue = "false" ] attribute table:track-changes { boolean }? table-insertion = element table:insertion { table-insertion-attlist, common-table-change-attlist, office-change-info, table-dependencies?, table-deletions? } table-insertion-attlist &= attribute table:type { "row" | "column" | "table" } table-insertion-attlist &= attribute table:position { integer } table-insertion-attlist &= [ a:defaultValue = "1" ] attribute table:count { positiveInteger }? table-insertion-attlist &= attribute table:table { integer }? table-dependencies = element table:dependencies { table-dependency+ } table-dependency = element table:dependency { attribute table:id { \string }, empty } table-deletions = element table:deletions { (table-cell-content-deletion | table-change-deletion)+ } table-cell-content-deletion = element table:cell-content-deletion { attribute table:id { \string }?, table-cell-address?, table-change-track-table-cell? } table-change-deletion = element table:change-deletion { attribute table:id { \string }?, empty } table-deletion = element table:deletion { table-deletion-attlist, common-table-change-attlist, office-change-info, table-dependencies?, table-deletions?, table-cut-offs? } table-deletion-attlist &= attribute table:type { "row" | "column" | "table" } table-deletion-attlist &= attribute table:position { integer } table-deletion-attlist &= attribute table:table { integer }? table-deletion-attlist &= attribute table:multi-deletion-spanned { integer }? table-cut-offs = element table:cut-offs { table-movement-cut-off+ | (table-insertion-cut-off, table-movement-cut-off*) } table-insertion-cut-off = element table:insertion-cut-off { table-insertion-cut-off-attlist, empty } table-insertion-cut-off-attlist &= attribute table:id { \string } table-insertion-cut-off-attlist &= attribute table:position { integer } table-movement-cut-off = element table:movement-cut-off { table-movement-cut-off-attlist, empty } table-movement-cut-off-attlist &= attribute table:position { integer } | (attribute table:start-position { integer }, attribute table:end-position { integer }) table-movement = element table:movement { common-table-change-attlist, table-source-range-address, table-target-range-address, office-change-info, table-dependencies?, table-deletions? } table-source-range-address = element table:source-range-address { common-table-range-attlist, empty } table-target-range-address = element table:target-range-address { common-table-range-attlist, empty } common-table-range-attlist &= common-table-cell-address-attlist | common-table-cell-range-address-attlist common-table-cell-address-attlist &= attribute table:column { integer }, attribute table:row { integer }, attribute table:table { integer } common-table-cell-range-address-attlist &= attribute table:start-column { integer }, attribute table:start-row { integer }, attribute table:start-table { integer }, attribute table:end-column { integer }, attribute table:end-row { integer }, attribute table:end-table { integer } table-change-track-table-cell &= element table:change-track-table-cell { table-change-track-table-cell-attlist, text-p* } table-change-track-table-cell-attlist &= attribute table:cell-address { cellAddress }? table-change-track-table-cell-attlist &= [ a:defaultValue = "false" ] attribute table:matrix-covered { boolean }? table-change-track-table-cell-attlist &= attribute table:formula { \string }?, attribute table:number-matrix-columns-spanned { positiveInteger }?, attribute table:number-matrix-rows-spanned { positiveInteger }?, common-value-and-type-attlist? table-cell-content-change = element table:cell-content-change { common-table-change-attlist, table-cell-address, office-change-info, table-dependencies?, table-deletions?, table-previous } table-cell-address = element table:cell-address { common-table-cell-address-attlist, empty } table-previous = element table:previous { attribute table:id { \string }?, table-change-track-table-cell } common-table-change-attlist &= attribute table:id { \string } common-table-change-attlist &= [ a:defaultValue = "pending" ] attribute table:acceptance-state { "accepted" | "rejected" | "pending" }? common-table-change-attlist &= attribute table:rejecting-change-id { \string }? style-handout-master = element style:handout-master { common-presentation-header-footer-attlist, style-handout-master-attlist, shape* } style-handout-master-attlist &= attribute presentation:presentation-page-layout-name { styleNameRef }? style-handout-master-attlist &= attribute style:page-layout-name { styleNameRef } style-handout-master-attlist &= attribute draw:style-name { styleNameRef }? draw-layer-set = element draw:layer-set { draw-layer* } draw-layer = element draw:layer { draw-layer-attlist, svg-title?, svg-desc? } draw-layer-attlist &= attribute draw:name { \string } draw-layer-attlist &= [ a:defaultValue = "false" ] attribute draw:protected { boolean }? draw-layer-attlist &= [ a:defaultValue = "always" ] attribute draw:display { "always" | "screen" | "printer" | "none" }? draw-page = element draw:page { common-presentation-header-footer-attlist, draw-page-attlist, office-forms?, shape*, (presentation-animations | animation-element)?, presentation-notes? } draw-page-attlist &= attribute draw:name { \string }? draw-page-attlist &= attribute draw:style-name { styleNameRef }? draw-page-attlist &= attribute draw:master-page-name { styleNameRef } draw-page-attlist &= attribute presentation:presentation-page-layout-name { styleNameRef }? common-presentation-header-footer-attlist &= attribute presentation:use-header-name { \string }? common-presentation-header-footer-attlist &= attribute presentation:use-footer-name { \string }? common-presentation-header-footer-attlist &= attribute presentation:use-date-time-name { \string }? draw-page-attlist &= attribute draw:id { ID }? draw-page-attlist &= attribute draw:nav-order { IDREFS }? shape = draw-rect | draw-line | draw-polyline | draw-polygon | draw-regular-polygon | draw-path | draw-circle | draw-ellipse | draw-g | draw-page-thumbnail | draw-frame | draw-measure | draw-caption | draw-connector | draw-control | dr3d-scene | draw-custom-shape draw-rect = element draw:rect { draw-rect-attlist, common-draw-position-attlist, common-draw-size-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, draw-text } draw-rect-attlist &= attribute draw:corner-radius { nonNegativeLength }? draw-line = element draw:line { draw-line-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, draw-text } draw-line-attlist &= attribute svg:x1 { coordinate }, attribute svg:y1 { coordinate } draw-line-attlist &= attribute svg:x2 { coordinate }, attribute svg:y2 { coordinate } draw-polyline = element draw:polyline { common-draw-points-attlist, common-draw-position-attlist, common-draw-size-attlist, common-draw-viewbox-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, draw-text } common-draw-points-attlist = attribute draw:points { points } draw-polygon = element draw:polygon { common-draw-points-attlist, common-draw-position-attlist, common-draw-size-attlist, common-draw-viewbox-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, draw-text } draw-regular-polygon = element draw:regular-polygon { draw-regular-polygon-attlist, common-draw-position-attlist, common-draw-size-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, draw-text } draw-regular-polygon-attlist &= attribute draw:concave { "false" } | (attribute draw:concave { "true" }, draw-regular-polygon-sharpness-attlist) draw-regular-polygon-attlist &= attribute draw:corners { positiveInteger } draw-regular-polygon-sharpness-attlist = attribute draw:sharpness { percent } draw-path = element draw:path { common-draw-path-data-attlist, common-draw-position-attlist, common-draw-size-attlist, common-draw-viewbox-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, draw-text } common-draw-path-data-attlist = attribute svg:d { pathData } draw-circle = element draw:circle { draw-circle-attlist, common-draw-circle-ellipse-attlist, common-draw-position-attlist, common-draw-size-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, draw-text } common-draw-circle-ellipse-attlist &= (attribute svg:cx { coordinate }, attribute svg:cy { coordinate })? draw-circle-attlist &= attribute svg:r { length }? common-draw-circle-ellipse-attlist &= [ a:defaultValue = "full" ] attribute draw:kind { "full" | "section" | "cut" | "arc" }? common-draw-circle-ellipse-attlist &= attribute draw:start-angle { double }? common-draw-circle-ellipse-attlist &= attribute draw:end-angle { double }? draw-ellipse = element draw:ellipse { common-draw-circle-ellipse-attlist, draw-ellipse-attlist, common-draw-position-attlist, common-draw-size-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, draw-text } draw-ellipse-attlist &= (attribute svg:rx { length }, attribute svg:ry { length })? draw-connector = element draw:connector { draw-connector-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, draw-text } draw-connector-attlist &= [ a:defaultValue = "standard" ] attribute draw:type { "standard" | "lines" | "line" | "curve" }? draw-connector-attlist &= (attribute svg:x1 { coordinate }, attribute svg:y1 { coordinate })? draw-connector-attlist &= attribute draw:start-shape { IDREF }? draw-connector-attlist &= attribute draw:start-glue-point { nonNegativeInteger }? draw-connector-attlist &= (attribute svg:x2 { coordinate }, attribute svg:y2 { coordinate })? draw-connector-attlist &= attribute draw:end-shape { IDREF }? draw-connector-attlist &= attribute draw:end-glue-point { nonNegativeInteger }? draw-connector-attlist &= attribute draw:line-skew { list { length, (length, length?)? } }? draw-caption = element draw:caption { draw-caption-attlist, common-draw-position-attlist, common-draw-size-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, draw-text } draw-caption-attlist &= (attribute draw:caption-point-x { coordinate }, attribute draw:caption-point-y { coordinate })? draw-caption-attlist &= attribute draw:corner-radius { nonNegativeLength }? draw-measure = element draw:measure { draw-measure-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, draw-text } draw-measure-attlist &= attribute svg:x1 { coordinate }, attribute svg:y1 { coordinate } draw-measure-attlist &= attribute svg:x2 { coordinate }, attribute svg:y2 { coordinate } draw-control = element draw:control { draw-control-attlist, common-draw-position-attlist, common-draw-size-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, draw-glue-point* } draw-control-attlist &= attribute draw:control { IDREF } draw-page-thumbnail = element draw:page-thumbnail { draw-page-thumbnail-attlist, common-draw-position-attlist, common-draw-size-attlist, presentation-shape-attlist, common-draw-shape-with-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc? } draw-page-thumbnail-attlist = attribute draw:page-number { positiveInteger }? draw-g = element draw:g { draw-g-attlist, common-draw-z-index-attlist, common-draw-name-attlist, common-draw-id-attlist, common-draw-style-name-attlist, common-text-spreadsheet-shape-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, shape* } draw-g-attlist &= attribute svg:y { coordinate }? common-draw-name-attlist &= attribute draw:name { \string }? common-draw-caption-id-attlist &= attribute draw:caption-id { IDREF }? common-draw-position-attlist = attribute svg:x { coordinate }?, attribute svg:y { coordinate }? common-draw-size-attlist = attribute svg:width { length }?, attribute svg:height { length }? common-draw-transform-attlist = attribute draw:transform { \string }? common-draw-viewbox-attlist = attribute svg:viewBox { list { integer, integer, integer, integer } } common-draw-style-name-attlist = (attribute draw:style-name { styleNameRef }?, attribute draw:class-names { styleNameRefs }?) | (attribute presentation:style-name { styleNameRef }?, attribute presentation:class-names { styleNameRefs }?) common-draw-text-style-name-attlist = attribute draw:text-style-name { styleNameRef }? common-draw-layer-name-attlist = attribute draw:layer { xsd:string }? common-draw-id-attlist = attribute draw:id { ID }? common-draw-z-index-attlist = attribute draw:z-index { nonNegativeInteger }? common-text-spreadsheet-shape-attlist &= attribute table:end-cell-address { cellAddress }?, attribute table:end-x { coordinate }?, attribute table:end-y { coordinate }? common-text-spreadsheet-shape-attlist &= attribute table:table-background { boolean }? common-text-spreadsheet-shape-attlist &= common-text-anchor-attlist common-text-anchor-attlist &= attribute text:anchor-type { "page" | "frame" | "paragraph" | "char" | "as-char" }? common-text-anchor-attlist &= attribute text:anchor-page-number { positiveInteger }? draw-text = (text-p | text-list)* common-draw-shape-with-styles-attlist = common-draw-z-index-attlist, common-draw-id-attlist, common-draw-layer-name-attlist, common-draw-style-name-attlist, common-draw-transform-attlist, common-draw-name-attlist, common-text-spreadsheet-shape-attlist common-draw-shape-with-text-and-styles-attlist = common-draw-shape-with-styles-attlist, common-draw-text-style-name-attlist draw-glue-point = element draw:glue-point { draw-glue-point-attlist, empty } draw-glue-point-attlist &= attribute draw:id { nonNegativeInteger } draw-glue-point-attlist &= attribute svg:x { distance | percent }, attribute svg:y { distance | percent } draw-glue-point-attlist &= attribute draw:align { "top-left" | "top" | "top-right" | "left" | "center" | "right" | "bottom-left" | "bottom-right" }? draw-glue-points-attlist &= attribute draw:escape-direction { "auto" | "left" | "right" | "up" | "down" | "horizontal" | "vertical" } svg-title = element svg:title { text } svg-desc = element svg:desc { text } draw-frame = element draw:frame { common-draw-shape-with-text-and-styles-attlist, common-draw-position-attlist, common-draw-rel-size-attlist, common-draw-caption-id-attlist, presentation-shape-attlist, draw-frame-attlist, (draw-text-box | draw-image | draw-object | draw-object-ole | draw-applet | draw-floating-frame | draw-plugin)*, office-event-listeners?, draw-glue-point*, draw-image-map?, svg-title?, svg-desc?, (draw-contour-polygon | draw-contour-path)? } common-draw-rel-size-attlist = common-draw-size-attlist, attribute style:rel-width { percent | "scale" | "scale-min" }?, attribute style:rel-height { percent | "scale" | "scale-min" }? draw-frame-attlist &= attribute draw:copy-of { \string }? draw-text-box = element draw:text-box { draw-text-box-attlist, text-content* } draw-text-box-attlist &= attribute draw:chain-next-name { \string }? draw-text-box-attlist &= attribute draw:corner-radius { nonNegativeLength }? draw-text-box-attlist &= attribute fo:min-height { length | percent }?, attribute fo:min-width { length | percent }? draw-text-box-attlist &= attribute fo:max-height { length | percent }?, attribute fo:max-width { length | percent }? draw-text-box-attlist &= text-id? draw-image = element draw:image { draw-image-attlist, (common-draw-data-attlist | office-binary-data), draw-text } common-draw-data-attlist &= attribute xlink:href { anyURI }, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "embed" ] attribute xlink:show { "embed" }?, [ a:defaultValue = "onLoad" ] attribute xlink:actuate { "onLoad" }? office-binary-data = element office:binary-data { base64Binary } draw-image-attlist &= attribute draw:filter-name { \string }? draw-object = element draw:object { draw-object-attlist, (common-draw-data-attlist | office-document | math-math) } draw-object-ole = element draw:object-ole { draw-object-ole-attlist, (common-draw-data-attlist | office-binary-data) } draw-object-attlist &= attribute draw:notify-on-update-of-ranges { \string }? draw-object-ole-attlist &= attribute draw:class-id { text }? draw-applet = element draw:applet { draw-applet-attlist, common-draw-data-attlist?, draw-param* } draw-applet-attlist &= attribute draw:code { text }? draw-applet-attlist &= attribute draw:object { text }? draw-applet-attlist &= attribute draw:archive { text }? draw-applet-attlist &= [ a:defaultValue = "false" ] attribute draw:may-script { boolean }? draw-plugin = element draw:plugin { draw-plugin-attlist, common-draw-data-attlist, draw-param* } draw-plugin-attlist &= attribute draw:mime-type { text }? draw-param = element draw:param { draw-param-attlist, empty } draw-param-attlist &= attribute draw:name { text }? draw-param-attlist &= attribute draw:value { text }? draw-floating-frame = element draw:floating-frame { draw-floating-frame-attlist, common-draw-data-attlist } draw-floating-frame-attlist &= attribute draw:frame-name { \string }? draw-contour-polygon = element draw:contour-polygon { common-contour-attlist, common-draw-size-attlist, common-draw-viewbox-attlist, common-draw-points-attlist, empty } draw-contour-path = element draw:contour-path { common-contour-attlist, common-draw-size-attlist, common-draw-viewbox-attlist, common-draw-path-data-attlist, empty } common-contour-attlist &= attribute draw:recreate-on-edit { boolean } draw-a = element draw:a { draw-a-attlist, draw-frame } draw-a-attlist &= attribute xlink:href { anyURI }, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "onRequest" ] attribute xlink:actuate { "onRequest" }? draw-a-attlist &= attribute office:target-frame-name { targetFrameName }?, attribute xlink:show { "new" | "replace" }? draw-a-attlist &= attribute office:name { \string }? draw-a-attlist &= attribute office:title { \string }? draw-a-attlist &= [ a:defaultValue = "false" ] attribute office:server-map { boolean }? draw-image-map = element draw:image-map { (draw-area-rectangle | draw-area-circle | draw-area-polygon)* } draw-area-rectangle = element draw:area-rectangle { common-draw-area-attlist, attribute svg:x { coordinate }, attribute svg:y { coordinate }, attribute svg:width { length }, attribute svg:height { length }, svg-title?, svg-desc?, office-event-listeners? } draw-area-circle = element draw:area-circle { common-draw-area-attlist, attribute svg:cx { coordinate }, attribute svg:cy { coordinate }, attribute svg:r { length }, svg-title?, svg-desc?, office-event-listeners? } draw-area-polygon = element draw:area-polygon { common-draw-area-attlist, attribute svg:x { coordinate }, attribute svg:y { coordinate }, attribute svg:width { length }, attribute svg:height { length }, common-draw-viewbox-attlist, common-draw-points-attlist, svg-title?, svg-desc?, office-event-listeners? } common-draw-area-attlist &= attribute xlink:href { anyURI }?, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, attribute office:target-frame-name { targetFrameName }?, attribute xlink:show { "new" | "replace" }? common-draw-area-attlist &= attribute office:name { \string }? common-draw-area-attlist &= attribute draw:nohref { "nohref" }? dr3d-scene = element dr3d:scene { dr3d-scene-attlist, common-draw-position-attlist, common-draw-size-attlist, common-draw-style-name-attlist, common-draw-z-index-attlist, common-draw-id-attlist, common-draw-layer-name-attlist, common-text-spreadsheet-shape-attlist, common-dr3d-transform-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, dr3d-light*, shapes3d* } shapes3d = dr3d-scene | dr3d-extrude | dr3d-sphere | dr3d-rotate | dr3d-cube dr3d-scene-attlist &= attribute dr3d:vrp { vector3D }?, attribute dr3d:vpn { vector3D }?, attribute dr3d:vup { vector3D }? dr3d-scene-attlist &= attribute dr3d:projection { "parallel" | "perspective" }? dr3d-scene-attlist &= attribute dr3d:distance { length }? dr3d-scene-attlist &= attribute dr3d:focal-length { length }? dr3d-scene-attlist &= attribute dr3d:shadow-slant { nonNegativeInteger }? dr3d-scene-attlist &= attribute dr3d:shade-mode { "flat" | "phong" | "gouraud" | "draft" }? dr3d-scene-attlist &= attribute dr3d:ambient-color { color }? dr3d-scene-attlist &= attribute dr3d:lighting-mode { boolean }? common-dr3d-transform-attlist = attribute dr3d:transform { text }? dr3d-light = element dr3d:light { dr3d-light-attlist, empty } dr3d-light-attlist &= attribute dr3d:diffuse-color { color }? dr3d-light-attlist &= attribute dr3d:direction { vector3D } dr3d-light-attlist &= attribute dr3d:enabled { boolean }? dr3d-light-attlist &= attribute dr3d:specular { boolean }? dr3d-cube = element dr3d:cube { dr3d-cube-attlist, common-draw-z-index-attlist, common-draw-id-attlist, common-draw-layer-name-attlist, common-draw-style-name-attlist, common-dr3d-transform-attlist, empty } dr3d-cube-attlist &= attribute dr3d:min-edge { vector3D }?, attribute dr3d:max-edge { vector3D }? dr3d-sphere = element dr3d:sphere { dr3d-sphere-attlist, common-draw-z-index-attlist, common-draw-id-attlist, common-draw-layer-name-attlist, common-draw-style-name-attlist, common-dr3d-transform-attlist, empty } dr3d-sphere-attlist &= attribute dr3d:center { vector3D }? dr3d-sphere-attlist &= attribute dr3d:size { vector3D }? dr3d-extrude = element dr3d:extrude { common-draw-path-data-attlist, common-draw-viewbox-attlist, common-draw-id-attlist, common-draw-z-index-attlist, common-draw-layer-name-attlist, common-draw-style-name-attlist, common-dr3d-transform-attlist, empty } dr3d-rotate = element dr3d:rotate { common-draw-viewbox-attlist, common-draw-path-data-attlist, common-draw-z-index-attlist, common-draw-id-attlist, common-draw-layer-name-attlist, common-draw-style-name-attlist, common-dr3d-transform-attlist, empty } draw-custom-shape = element draw:custom-shape { draw-custom-shape-attlist, common-draw-position-attlist, common-draw-size-attlist, common-draw-shape-with-text-and-styles-attlist, common-draw-caption-id-attlist, svg-title?, svg-desc?, office-event-listeners?, draw-glue-point*, draw-text, draw-enhanced-geometry? } draw-custom-shape-attlist &= attribute draw:engine { namespacedToken }? draw-custom-shape-attlist &= attribute draw:data { \string }? draw-enhanced-geometry = element draw:enhanced-geometry { draw-enhanced-geometry-attlist, draw-equation*, draw-handle* } draw-enhanced-geometry-attlist &= [ a:defaultValue = "non-primitive" ] attribute draw:type { custom-shape-type }? custom-shape-type = "non-primitive" | \string draw-enhanced-geometry-attlist &= attribute svg:viewBox { list { integer, integer, integer, integer } }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "false" ] attribute draw:mirror-vertical { boolean }?, [ a:defaultValue = "false" ] attribute draw:mirror-horizontal { boolean }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "0" ] attribute draw:text-rotate-angle { double }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "false" ] attribute draw:extrusion-allowed { boolean }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "false" ] attribute draw:text-path-allowed { boolean }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "false" ] attribute draw:concentric-gradient-fill-allowed { boolean }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "false" ] attribute draw:extrusion { boolean }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "33%" ] attribute draw:extrusion-brightness { percent }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "36pt 0" ] attribute draw:extrusion-depth { list { length, double } }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "0%" ] attribute draw:extrusion-diffusion { percent }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "30" ] attribute draw:extrusion-number-of-line-segments { integer }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "true" ] attribute draw:extrusion-light-face { boolean }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "true" ] attribute draw:extrusion-first-light-harsh { boolean }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "true" ] attribute draw:extrusion-second-light-harsh { boolean }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "66%" ] attribute draw:extrusion-first-light-level { percent }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "66%" ] attribute draw:extrusion-second-light-level { percent }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "(5 0 1)" ] attribute draw:extrusion-first-light-direction { vector3D }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "(-5 0 1)" ] attribute draw:extrusion-second-light-direction { vector3D }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "false" ] attribute draw:extrusion-metal { boolean }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "flat" ] attribute dr3d:shade-mode { "flat" | "phong" | "gouraud" | "draft" }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "0 0" ] attribute draw:extrusion-rotation-angle { list { double, double } }? draw-enhanced-geometry-attlist &= attribute draw:extrusion-rotation-center { vector3D }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "50%" ] attribute draw:extrusion-shininess { percent }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "50 45" ] attribute draw:extrusion-skew { list { double, double } }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "0%" ] attribute draw:extrusion-specularity { percent }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "parallel" ] attribute dr3d:projection { "parallel" | "perspective" }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "3.5cm -3.5cm 25cm" ] attribute draw:extrusion-viewpoint { point3D }? point3D = xsd:string draw-enhanced-geometry-attlist &= [ a:defaultValue = "0.5 -0.5" ] attribute draw:extrusion-origin { list { double, double } }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "false" ] attribute draw:extrusion-color { boolean }? draw-enhanced-geometry-attlist &= attribute draw:enhanced-path { \string }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "0" ] attribute draw:path-stretchpoint-x { double }?, [ a:defaultValue = "0" ] attribute draw:path-stretchpoint-y { double }? draw-enhanced-geometry-attlist &= attribute draw:text-areas { \string }? draw-enhanced-geometry-attlist &= attribute draw:glue-points { \string }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "none" ] attribute draw:glue-point-type { "none" | "segments" | "rectangle" }? draw-enhanced-geometry-attlist &= attribute draw:glue-point-leaving-directions { text }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "false" ] attribute draw:text-path { boolean }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "normal" ] attribute draw:text-path-mode { "normal" | "path" | "shape" }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "path" ] attribute draw:text-path-scale { "path" | "shape" }? draw-enhanced-geometry-attlist &= [ a:defaultValue = "false" ] attribute draw:text-path-same-letter-heights { boolean }? draw-enhanced-geometry-attlist &= attribute draw:modifiers { \string }? draw-equation = element draw:equation { draw-equation-attlist, empty } draw-equation-attlist &= attribute draw:name { \string }? draw-equation-attlist &= attribute draw:formula { \string }? draw-handle = element draw:handle { draw-handle-attlist, empty } draw-handle-attlist &= [ a:defaultValue = "false" ] attribute draw:handle-mirror-vertical { boolean }? draw-handle-attlist &= [ a:defaultValue = "false" ] attribute draw:handle-mirror-horizontal { boolean }? draw-handle-attlist &= [ a:defaultValue = "false" ] attribute draw:handle-switched { boolean }? draw-handle-attlist &= attribute draw:handle-position { \string } draw-handle-attlist &= attribute draw:handle-range-x-minimum { \string }? draw-handle-attlist &= attribute draw:handle-range-x-maximum { \string }? draw-handle-attlist &= attribute draw:handle-range-y-minimum { \string }? draw-handle-attlist &= attribute draw:handle-range-y-maximum { \string }? draw-handle-attlist &= attribute draw:handle-polar { \string }? draw-handle-attlist &= attribute draw:handle-radius-range-minimum { \string }? draw-handle-attlist &= attribute draw:handle-radius-range-maximum { \string }? presentation-shape-attlist &= attribute presentation:class { presentation-classes }? presentation-classes = "title" | "outline" | "subtitle" | "text" | "graphic" | "object" | "chart" | "table" | "orgchart" | "page" | "notes" | "handout" | "header" | "footer" | "date-time" | "page-number" presentation-shape-attlist &= attribute presentation:placeholder { boolean }? presentation-shape-attlist &= attribute presentation:user-transformed { boolean }? presentation-animations = element presentation:animations { (presentation-animation-elements | presentation-animation-group)* } presentation-animation-elements = presentation-show-shape | presentation-show-text | presentation-hide-shape | presentation-hide-text | presentation-dim | presentation-play presentation-sound = element presentation:sound { presentation-sound-attlist, attribute xlink:href { anyURI }, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "onRequest" ] attribute xlink:actuate { "onRequest" }?, attribute xlink:show { "new" | "replace" }?, empty } presentation-sound-attlist &= attribute presentation:play-full { boolean }? presentation-show-shape = element presentation:show-shape { common-presentation-effect-attlist, presentation-sound? } common-presentation-effect-attlist &= attribute draw:shape-id { IDREF } common-presentation-effect-attlist &= [ a:defaultValue = "none" ] attribute presentation:effect { presentationEffects }? presentationEffects = "none" | "fade" | "move" | "stripes" | "open" | "close" | "dissolve" | "wavyline" | "random" | "lines" | "laser" | "appear" | "hide" | "move-short" | "checkerboard" | "rotate" | "stretch" common-presentation-effect-attlist &= [ a:defaultValue = "none" ] attribute presentation:direction { presentationEffectDirections }? presentationEffectDirections = "none" | "from-left" | "from-top" | "from-right" | "from-bottom" | "from-center" | "from-upper-left" | "from-upper-right" | "from-lower-left" | "from-lower-right" | "to-left" | "to-top" | "to-right" | "to-bottom" | "to-upper-left" | "to-upper-right" | "to-lower-right" | "to-lower-left" | "path" | "spiral-inward-left" | "spiral-inward-right" | "spiral-outward-left" | "spiral-outward-right" | "vertical" | "horizontal" | "to-center" | "clockwise" | "counter-clockwise" common-presentation-effect-attlist &= [ a:defaultValue = "medium" ] attribute presentation:speed { presentationSpeeds }? presentationSpeeds = "slow" | "medium" | "fast" common-presentation-effect-attlist &= attribute presentation:delay { duration }? common-presentation-effect-attlist &= [ a:defaultValue = "100%" ] attribute presentation:start-scale { percent }? common-presentation-effect-attlist &= attribute presentation:path-id { text }? presentation-show-text = element presentation:show-text { common-presentation-effect-attlist, presentation-sound? } presentation-hide-shape = element presentation:hide-shape { common-presentation-effect-attlist, presentation-sound? } presentation-hide-text = element presentation:hide-text { common-presentation-effect-attlist, presentation-sound? } presentation-dim = element presentation:dim { presentation-dim-attlist, presentation-sound? } presentation-dim-attlist &= attribute draw:shape-id { IDREF } presentation-dim-attlist &= attribute draw:color { color } presentation-play = element presentation:play { presentation-play-attlist, empty } presentation-play-attlist &= attribute draw:shape-id { IDREF }, [ a:defaultValue = "medium" ] attribute presentation:speed { presentationSpeeds }? presentation-animation-group = element presentation:animation-group { presentation-animation-elements* } common-anim-attlist &= [ a:defaultValue = "default" ] attribute presentation:node-type { "default" | "on-click" | "with-previous" | "after-previous" | "timing-root" | "main-sequence" | "interactive-sequence" }? common-anim-attlist &= attribute presentation:preset-id { \string }? common-anim-attlist &= attribute presentation:preset-sub-type { \string }? common-anim-attlist &= [ a:defaultValue = "custom" ] attribute presentation:preset-class { "custom" | "entrance" | "exit" | "emphasis" | "motion-path" | "ole-action" | "media-call" }? common-anim-attlist &= attribute presentation:master-element { IDREF }? common-anim-attlist &= attribute presentation:group-id { \string }? presentation-event-listener = element presentation:event-listener { presentation-event-listener-attlist, presentation-sound? } presentation-event-listener-attlist &= attribute script:event-name { \string } presentation-event-listener-attlist &= attribute presentation:action { "none" | "previous-page" | "next-page" | "first-page" | "last-page" | "hide" | "stop" | "execute" | "show" | "verb" | "fade-out" | "sound" } presentation-event-listener-attlist &= [ a:defaultValue = "none" ] attribute presentation:effect { presentationEffects }? presentation-event-listener-attlist &= [ a:defaultValue = "none" ] attribute presentation:direction { presentationEffectDirections }? presentation-event-listener-attlist &= [ a:defaultValue = "medium" ] attribute presentation:speed { presentationSpeeds }? presentation-event-listener-attlist &= [ a:defaultValue = "100%" ] attribute presentation:start-scale { percent }? presentation-event-listener-attlist &= attribute xlink:href { anyURI }?, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "embed" ] attribute xlink:show { "embed" }?, [ a:defaultValue = "onRequest" ] attribute xlink:actuate { "onRequest" }? presentation-event-listener-attlist &= attribute presentation:verb { nonNegativeInteger }? paragraph-content |= element presentation:header { empty } paragraph-content |= element presentation:footer { empty } paragraph-content |= element presentation:date-time { empty } presentation-decls = presentation-decl* presentation-decl |= element presentation:header-decl { presentation-header-decl-attlist, text } presentation-header-decl-attlist &= attribute presentation:name { \string } presentation-decl |= element presentation:footer-decl { presentation-footer-decl-attlist, text } presentation-footer-decl-attlist &= attribute presentation:name { \string } presentation-decl |= element presentation:date-time-decl { presentation-date-time-decl-attlist, text } presentation-date-time-decl-attlist &= attribute presentation:name { \string } presentation-date-time-decl-attlist &= attribute presentation:source { "fixed" | "current-date" } presentation-date-time-decl-attlist &= attribute style:data-style-name { styleNameRef }? presentation-settings = element presentation:settings { presentation-settings-attlist, presentation-show* }? presentation-settings-attlist &= attribute presentation:start-page { \string }? presentation-settings-attlist &= attribute presentation:show { \string }? presentation-settings-attlist &= [ a:defaultValue = "true" ] attribute presentation:full-screen { boolean }? presentation-settings-attlist &= [ a:defaultValue = "false" ] attribute presentation:endless { boolean }? presentation-settings-attlist &= attribute presentation:pause { duration }? presentation-settings-attlist &= [ a:defaultValue = "false" ] attribute presentation:show-logo { boolean }? presentation-settings-attlist &= [ a:defaultValue = "false" ] attribute presentation:force-manual { boolean }? presentation-settings-attlist &= [ a:defaultValue = "true" ] attribute presentation:mouse-visible { boolean }? presentation-settings-attlist &= [ a:defaultValue = "false" ] attribute presentation:mouse-as-pen { boolean }? presentation-settings-attlist &= [ a:defaultValue = "false" ] attribute presentation:start-with-navigator { boolean }? presentation-settings-attlist &= [ a:defaultValue = "enabled" ] attribute presentation:animations { "enabled" | "disabled" }? presentation-settings-attlist &= [ a:defaultValue = "enabled" ] attribute presentation:transition-on-click { "enabled" | "disabled" }? presentation-settings-attlist &= [ a:defaultValue = "false" ] attribute presentation:stay-on-top { boolean }? presentation-settings-attlist &= [ a:defaultValue = "true" ] attribute presentation:show-end-of-presentation-slide { boolean }? presentation-show = element presentation:show { presentation-show-attlist, empty } presentation-show-attlist &= attribute presentation:name { \string } presentation-show-attlist &= attribute presentation:pages { text } chart-chart = element chart:chart { chart-chart-attlist, chart-title?, chart-subtitle?, chart-footer?, chart-legend?, chart-plot-area, table-table? } chart-chart-attlist &= attribute chart:class { namespacedToken } chart-chart-attlist &= common-draw-size-attlist chart-chart-attlist &= attribute chart:column-mapping { \string }? chart-chart-attlist &= attribute chart:row-mapping { \string }? chart-chart-attlist &= attribute chart:style-name { styleNameRef }? chart-title = element chart:title { chart-title-attlist, text-p? } chart-title-attlist &= attribute table:cell-range { cellAddress }? chart-title-attlist &= common-draw-position-attlist chart-title-attlist &= attribute chart:style-name { styleNameRef }? chart-subtitle = element chart:subtitle { chart-title-attlist, text-p? } chart-footer = element chart:footer { chart-title-attlist, text-p? } chart-legend = element chart:legend { chart-legend-attlist, empty } chart-legend-attlist &= (attribute chart:legend-position { "start" | "end" | "top" | "bottom" }, attribute chart:legend-align { "start" | "center" | "end" }?) | attribute chart:legend-position { "top-start" | "bottom-start" | "top-end" | "bottom-end" } | empty chart-legend-attlist &= common-draw-position-attlist chart-legend-attlist &= attribute style:legend-expansion { "wide" | "high" | "balanced" } | (attribute style:legend-expansion { "custom" }, attribute style:legend-expansion-aspect-ratio { double }) | empty chart-legend-attlist &= attribute chart:style-name { styleNameRef }? chart-plot-area = element chart:plot-area { chart-plot-area-attlist, dr3d-light*, chart-axis*, chart-series*, chart-stock-gain-marker?, chart-stock-loss-marker?, chart-stock-range-line?, chart-wall?, chart-floor? } chart-plot-area-attlist &= common-draw-position-attlist, common-draw-size-attlist chart-plot-area-attlist &= attribute chart:style-name { styleNameRef }? chart-plot-area-attlist &= attribute table:cell-range-address { cellRangeAddress }? chart-plot-area-attlist &= [ a:defaultValue = "none" ] attribute chart:data-source-has-labels { "none" | "row" | "column" | "both" }? chart-plot-area-attlist &= dr3d-scene-attlist, common-dr3d-transform-attlist chart-wall = element chart:wall { chart-wall-attlist, empty } chart-wall-attlist &= attribute svg:width { length }? chart-wall-attlist &= attribute chart:style-name { styleNameRef }? chart-floor = element chart:floor { chart-floor-attlist, empty } chart-floor-attlist &= attribute svg:width { length }? chart-floor-attlist &= attribute chart:style-name { styleNameRef }? chart-axis = element chart:axis { chart-axis-attlist, chart-title?, chart-categories?, chart-grid* } chart-axis-attlist &= attribute chart:dimension { "x" | "y" | "z" } chart-axis-attlist &= attribute chart:name { \string }? chart-axis-attlist &= attribute chart:style-name { styleNameRef }? chart-grid = element chart:grid { chart-grid-attlist } chart-grid-attlist &= [ a:defaultValue = "major" ] attribute chart:class { "major" | "minor" }? chart-grid-attlist &= attribute chart:style-name { styleNameRef }? chart-series = element chart:series { chart-series-attlist, chart-domain*, chart-mean-value?, chart-regression-curve?, chart-error-indicator?, chart-data-point* } chart-series-attlist &= attribute chart:values-cell-range-address { cellRangeAddress }? chart-series-attlist &= attribute chart:label-cell-address { cellAddress }? chart-series-attlist &= attribute chart:class { namespacedToken }? chart-series-attlist &= attribute chart:attached-axis { \string }? chart-series-attlist &= attribute chart:style-name { styleNameRef }? chart-domain = element chart:domain { attribute table:cell-range-address { cellRangeAddress }? } chart-categories = element chart:categories { attribute table:cell-range-address { cellRangeAddress }? } chart-data-point = element chart:data-point { chart-data-point-attlist, empty } chart-data-point-attlist &= attribute chart:repeated { nonNegativeInteger }? chart-data-point-attlist &= attribute chart:style-name { styleNameRef }? chart-mean-value = element chart:mean-value { chart-mean-value-attlist, empty } chart-mean-value-attlist &= attribute chart:style-name { styleNameRef }? chart-error-indicator = element chart:error-indicator { chart-error-indicator-attlist, empty } chart-error-indicator-attlist &= attribute chart:style-name { styleNameRef }? chart-regression-curve = element chart:regression-curve { chart-regression-curve-attlist, empty } chart-regression-curve-attlist &= attribute chart:style-name { styleNameRef }? chart-stock-gain-marker = element chart:stock-gain-marker { common-stock-marker-attlist } chart-stock-loss-marker = element chart:stock-loss-marker { common-stock-marker-attlist } chart-stock-range-line = element chart:stock-range-line { common-stock-marker-attlist } common-stock-marker-attlist = attribute chart:style-name { styleNameRef }? office-forms = element office:forms { office-forms-attlist, (form-form | xforms-model)* }? office-forms-attlist &= [ a:defaultValue = "false" ] attribute form:automatic-focus { boolean }? office-forms-attlist &= [ a:defaultValue = "true" ] attribute form:apply-design-mode { boolean }? form-form = element form:form { common-form-control-attlist, form-form-attlist, form-properties?, office-event-listeners?, (controls | form-form)*, form-connection-resource? } form-form-attlist &= (attribute xlink:href { anyURI }, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "onRequest" ] attribute xlink:actuate { "onRequest" }?)? form-form-attlist &= [ a:defaultValue = "_blank" ] attribute office:target-frame { targetFrameName }? form-form-attlist &= [ a:defaultValue = "get" ] attribute form:method { "get" | "post" | \string }? form-form-attlist &= [ a:defaultValue = "application/x-www-form-urlencoded" ] attribute form:enctype { \string }? form-form-attlist &= [ a:defaultValue = "true" ] attribute form:allow-deletes { boolean }? form-form-attlist &= [ a:defaultValue = "true" ] attribute form:allow-inserts { boolean }? form-form-attlist &= [ a:defaultValue = "true" ] attribute form:allow-updates { boolean }? form-form-attlist &= [ a:defaultValue = "false" ] attribute form:apply-filter { boolean }? form-form-attlist &= [ a:defaultValue = "command" ] attribute form:command-type { "table" | "query" | "command" }? form-form-attlist &= attribute form:command { text }? form-form-attlist &= attribute form:datasource { anyURI | \string }? form-form-attlist &= attribute form:master-fields { \string }? form-form-attlist &= attribute form:detail-fields { \string }? form-form-attlist &= [ a:defaultValue = "true" ] attribute form:escape-processing { boolean }? form-form-attlist &= attribute form:filter { \string }? form-form-attlist &= [ a:defaultValue = "false" ] attribute form:ignore-result { boolean }? form-form-attlist &= attribute form:navigation-mode { navigation }? navigation = "none" | "current" | "parent" form-form-attlist &= attribute form:order { \string }? form-form-attlist &= attribute form:tab-cycle { tab-cycles }? tab-cycles = "records" | "current" | "page" form-connection-resource = element form:connection-resource { attribute xlink:href { anyURI }, empty } xforms-model = element xforms:model { anyAttListOrElements } column-controls |= element form:text { form-text-attlist, common-form-control-content } controls |= column-controls form-text-attlist = form-control-attlist, common-current-value-attlist, common-disabled-attlist, common-maxlength-attlist, common-printable-attlist, common-readonly-attlist, common-tab-attlist, common-title-attlist, common-value-attlist, common-convert-empty-attlist, common-data-field-attlist form-control-attlist = common-form-control-attlist, common-control-id-attlist, xforms-bind-attlist common-form-control-content = form-properties?, office-event-listeners? column-controls |= element form:textarea { form-textarea-attlist, common-form-control-content, text-p* } form-textarea-attlist = form-control-attlist, common-current-value-attlist, common-disabled-attlist, common-maxlength-attlist, common-printable-attlist, common-readonly-attlist, common-tab-attlist, common-title-attlist, common-value-attlist, common-convert-empty-attlist, common-data-field-attlist controls |= element form:password { form-password-attlist, common-form-control-content } form-password-attlist &= form-control-attlist, common-disabled-attlist, common-maxlength-attlist, common-printable-attlist, common-tab-attlist, common-title-attlist, common-value-attlist, common-convert-empty-attlist form-password-attlist &= [ a:defaultValue = "*" ] attribute form:echo-char { character }? controls |= element form:file { form-file-attlist, common-form-control-content } form-file-attlist &= form-control-attlist, common-current-value-attlist, common-disabled-attlist, common-maxlength-attlist, common-printable-attlist, common-readonly-attlist, common-tab-attlist, common-title-attlist, common-value-attlist column-controls |= element form:formatted-text { form-formatted-text-attlist, common-form-control-content } form-formatted-text-attlist &= form-control-attlist, common-current-value-attlist, common-disabled-attlist, common-maxlength-attlist, common-printable-attlist, common-readonly-attlist, common-tab-attlist, common-title-attlist, common-value-attlist, common-convert-empty-attlist, common-data-field-attlist form-formatted-text-attlist &= attribute form:max-value { \string }? form-formatted-text-attlist &= attribute form:min-value { \string }? form-formatted-text-attlist &= [ a:defaultValue = "false" ] attribute form:validation { boolean }? column-controls |= element form:number { form-number-attlist, common-numeric-control-attlist, common-form-control-content } common-numeric-control-attlist = form-control-attlist, common-disabled-attlist, common-maxlength-attlist, common-printable-attlist, common-readonly-attlist, common-tab-attlist, common-title-attlist, common-convert-empty-attlist, common-data-field-attlist form-number-attlist &= attribute form:value { double }? form-number-attlist &= attribute form:current-value { double }? form-number-attlist &= attribute form:min-value { double }? form-number-attlist &= attribute form:max-value { double }? column-controls |= element form:date { form-date-attlist, common-numeric-control-attlist, common-form-control-content } controls |= element form:time { form-time-attlist, common-numeric-control-attlist, common-form-control-content } form-date-attlist &= attribute form:value { date }? form-time-attlist &= attribute form:value { time }? form-date-attlist &= attribute form:current-value { date }? form-time-attlist &= attribute form:current-value { time }? form-date-attlist &= attribute form:min-value { date }? form-time-attlist &= attribute form:min-value { time }? form-date-attlist &= attribute form:max-value { date }? form-time-attlist &= attribute form:max-value { time }? controls |= element form:fixed-text { form-fixed-text-attlist, common-form-control-content } form-fixed-text-attlist &= form-control-attlist, for, common-disabled-attlist, label, common-printable-attlist, common-title-attlist form-fixed-text-attlist &= [ a:defaultValue = "false" ] attribute form:multi-line { boolean }? column-controls |= element form:combobox { form-combobox-attlist, common-form-control-content, form-item* } form-combobox-attlist &= form-control-attlist, common-current-value-attlist, common-disabled-attlist, dropdown, common-maxlength-attlist, common-printable-attlist, common-readonly-attlist, size, common-tab-attlist, common-title-attlist, common-value-attlist, common-convert-empty-attlist, common-data-field-attlist, list-source, list-source-type form-combobox-attlist &= attribute form:auto-complete { boolean }? form-item = element form:item { form-item-attlist, text } form-item-attlist &= label column-controls |= element form:listbox { form-listbox-attlist, common-form-control-content, form-option* } form-listbox-attlist &= form-control-attlist, common-disabled-attlist, dropdown, common-printable-attlist, size, common-tab-attlist, common-title-attlist, bound-column, common-data-field-attlist, list-source, list-source-type form-listbox-attlist &= [ a:defaultValue = "false" ] attribute form:multiple { boolean }? form-listbox-attlist &= attribute form:xforms-list-source { \string }? form-option = element form:option { form-option-attlist, text } form-option-attlist &= current-selected, selected, label, common-value-attlist controls |= element form:button { form-button-attlist, common-form-control-content } form-button-attlist &= form-control-attlist, button-type, common-disabled-attlist, label, image-data, common-printable-attlist, common-tab-attlist, target-frame, target-location, common-title-attlist, common-value-attlist, common-form-relative-image-position-attlist form-button-attlist &= [ a:defaultValue = "false" ] attribute form:default-button { boolean }? form-button-attlist &= [ a:default-value = "false" ] attribute form:toggle { boolean }? form-button-attlist &= attribute form:focus-on-click { boolean }? form-button-attlist &= attribute form:xforms-submission { \string }? controls |= element form:image { form-image-attlist, common-form-control-content } form-image-attlist &= form-control-attlist, button-type, common-disabled-attlist, image-data, common-printable-attlist, common-tab-attlist, target-frame, target-location, common-title-attlist, common-value-attlist column-controls |= element form:checkbox { form-checkbox-attlist, common-form-control-content } form-checkbox-attlist &= form-control-attlist, common-disabled-attlist, label, common-printable-attlist, common-tab-attlist, common-title-attlist, common-value-attlist, common-data-field-attlist, common-form-visual-effect-attlist, common-form-relative-image-position-attlist states = "unchecked" | "checked" | "unknown" form-checkbox-attlist &= attribute form:current-state { states }? form-checkbox-attlist &= [ a:defaultValue = "false" ] attribute form:is-tristate { boolean }? form-checkbox-attlist &= [ a:defaultValue = "unchecked" ] attribute form:state { states }? controls |= element form:radio { form-radio-attlist, common-form-control-content } form-radio-attlist &= form-control-attlist, current-selected, common-disabled-attlist, label, common-printable-attlist, selected, common-tab-attlist, common-title-attlist, common-value-attlist, common-data-field-attlist, common-form-visual-effect-attlist, common-form-relative-image-position-attlist controls |= element form:frame { form-frame-attlist, common-form-control-content } form-frame-attlist &= form-control-attlist, common-disabled-attlist, for, label, common-printable-attlist, common-title-attlist controls |= element form:image-frame { form-image-frame-attlist, common-form-control-content } form-image-frame-attlist &= form-control-attlist, common-disabled-attlist, image-data, common-printable-attlist, common-readonly-attlist, common-title-attlist, common-data-field-attlist controls |= element form:hidden { form-hidden-attlist, common-form-control-content } form-hidden-attlist &= form-control-attlist, common-value-attlist controls |= element form:grid { form-grid-attlist, common-form-control-content, form-column* } form-grid-attlist &= form-control-attlist, common-disabled-attlist, common-printable-attlist, common-tab-attlist, common-title-attlist form-column = element form:column { form-column-attlist, column-controls+ } form-column-attlist &= common-form-control-attlist, label, text-style-name text-style-name = attribute form:text-style-name { styleNameRef }? controls |= element form:value-range { form-value-range-attlist, common-form-control-content } form-value-range-attlist &= form-control-attlist, common-disabled-attlist, common-printable-attlist, common-tab-attlist, common-title-attlist, common-value-attlist form-value-range-attlist &= attribute form:max-value { \string }? form-value-range-attlist &= attribute form:min-value { \string }? form-value-range-attlist &= [ a:defaultName = "1" ] attribute form:step-size { positiveInteger }? form-value-range-attlist &= attribute form:page-step-size { positiveInteger }? form-value-range-attlist &= attribute form:delay-for-repeat { duration }? form-value-range-attlist &= attribute form:orientation { "horizontal" | "vertical" }? controls |= element form:generic-control { form-generic-control-attlist, common-form-control-content } form-generic-control-attlist &= form-control-attlist common-form-control-attlist &= attribute form:name { \string }? common-form-control-attlist &= attribute form:control-implementation { namespacedToken }? xforms-bind-attlist = attribute xforms:bind { \string }? types = "submit" | "reset" | "push" | "url" button-type = [ a:defaultValue = "push" ] attribute form:button-type { types }? common-control-id-attlist = attribute form:id { ID } current-selected = [ a:defaultValue = "false" ] attribute form:current-selected { boolean }? common-value-attlist = attribute form:value { \string }? common-current-value-attlist = attribute form:current-value { \string }? common-disabled-attlist = [ a:defaultValue = "false" ] attribute form:disabled { boolean }? dropdown = [ a:defaultValue = "false" ] attribute form:dropdown { boolean }? for = attribute form:for { \string }? image-data = attribute form:image-data { anyURI }? label = attribute form:label { \string }? common-maxlength-attlist = attribute form:max-length { nonNegativeInteger }? common-printable-attlist = [ a:defaultValue = "true" ] attribute form:printable { boolean }? common-readonly-attlist = [ a:defaultValue = "false" ] attribute form:readonly { boolean }? selected = [ a:defaultValue = "false" ] attribute form:selected { boolean }? size = attribute form:size { nonNegativeInteger }? common-tab-attlist &= [ a:defaultValue = "0" ] attribute form:tab-index { nonNegativeInteger }? common-tab-attlist &= [ a:defaultValue = "true" ] attribute form:tab-stop { boolean }? target-frame = [ a:defaultValue = "_blank" ] attribute office:target-frame { targetFrameName }? target-location = attribute xlink:href { anyURI }? common-title-attlist = attribute form:title { text }? common-form-visual-effect-attlist &= attribute form:visual-effect { "flat" | "3d" }? common-form-relative-image-position-attlist &= [ a:defaultValue = "center" ] attribute form:image-position { "center" }? | (attribute form:image-position { "start" | "end" | "top" | "bottom" }, [ a:defaultValue = "center" ] attribute form:image-align { "start" | "center" | "end" }?) bound-column = attribute form:bound-column { \string }? common-convert-empty-attlist = [ a:defaultValue = "false" ] attribute form:convert-empty-to-null { boolean }? common-data-field-attlist = attribute form:data-field { \string }? list-source = attribute form:list-source { \string }? list-source-type = attribute form:list-source-type { "table" | "query" | "sql" | "sql-pass-through" | "value-list" | "table-fields" }? form-properties = element form:properties { form-property+ } form-property |= element form:property { form-property-name, form-property-value-and-type-attlist } form-property-name &= attribute form:property-name { \string } form-property-value-and-type-attlist &= common-value-and-type-attlist | attribute office:value-type { "void" } form-property |= element form:list-property { form-property-name, form-property-type-and-value-list } form-property-type-and-value-list = (attribute office:value-type { "float" }, element form:list-value { attribute office:value { double } }*) | (attribute office:value-type { "percentage" }, element form:list-value { attribute office:value { double } }*) | (attribute office:value-type { "currency" }, element form:list-value { attribute office:value { double }, attribute office:currency { \string }? }*) | (attribute office:value-type { "date" }, element form:list-value { attribute office:date-value { dateOrDateTime } }*) | (attribute office:value-type { "time" }, element form:list-value { attribute office:time-value { duration } }*) | (attribute office:value-type { "boolean" }, element form:list-value { attribute office:boolean-value { boolean } }*) | (attribute office:value-type { "string" }, element form:list-value { attribute office:string-value { \string } }*) | attribute office:value-type { "void" } office-annotation = element office:annotation { office-annotation-attlist, draw-caption-attlist, common-draw-position-attlist, common-draw-size-attlist, common-draw-shape-with-text-and-styles-attlist, dc-creator?, dc-date?, meta-date-string?, (text-p | text-list)* } office-annotation-attlist &= attribute office:display { boolean }? meta-date-string = element meta:date-string { \string } common-num-format-prefix-suffix-attlist &= attribute style:num-prefix { \string }?, attribute style:num-suffix { \string }? common-num-format-attlist &= attribute style:num-format { "1" | "i" | "I" | \string | empty } | (attribute style:num-format { "a" | "A" }, style-num-letter-sync-attlist) | empty style-num-letter-sync-attlist &= attribute style:num-letter-sync { boolean }? office-change-info = element office:change-info { dc-creator, dc-date, text-p* } office-event-listeners = element office:event-listeners { (script-event-listener | presentation-event-listener)* } script-event-listener &= element script:event-listener { script-event-listener-attlist, empty } script-event-listener-attlist &= attribute script:event-name { \string } script-event-listener-attlist &= attribute script:language { \string } script-event-listener-attlist &= attribute script:macro-name { \string } | (attribute xlink:href { anyURI }, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "onRequest" ] attribute xlink:actuate { "onRequest" }?) math-math = element math:math { mathMarkup } # To avoid inclusion of the complete MathML schema, anything # is allowed within a math:math top-level element mathMarkup = (attribute * { text } | text | element * { mathMarkup })* text-dde-connection-decl = element text:dde-connection-decl { text-dde-connection-decl-attlist, common-dde-connection-decl-attlist } text-dde-connection-decl-attlist &= attribute office:name { \string } common-dde-connection-decl-attlist &= attribute office:dde-application { \string } common-dde-connection-decl-attlist &= attribute office:dde-topic { \string } common-dde-connection-decl-attlist &= attribute office:dde-item { \string } common-dde-connection-decl-attlist &= [ a:defaultValue = "true" ] attribute office:automatic-update { boolean }? table-dde-link = element table:dde-link { office-dde-source, table-table } office-dde-source = element office:dde-source { office-dde-source-attlist, common-dde-connection-decl-attlist } office-dde-source-attlist &= attribute office:name { \string }? office-dde-source-attlist &= [ a:defaultValue = "into-default-style-data-style" ] attribute office:conversion-mode { "into-default-style-data-style" | "into-english-number" | "keep-text" }? animation-element |= element anim:animate { common-anim-target-attlist, common-anim-named-target-attlist, common-anim-values-attlist, common-anim-spline-mode-attlist, common-spline-anim-value-attlist, common-timing-attlist, common-anim-add-accum-attlist } animation-element |= element anim:set { common-anim-target-attlist, common-anim-named-target-attlist, common-anim-set-values-attlist, common-timing-attlist, common-anim-add-accum-attlist } animation-element |= element anim:animateMotion { anim-animate-motion-attlist, common-anim-target-attlist, common-anim-named-target-attlist, common-anim-add-accum-attlist, common-anim-values-attlist, common-timing-attlist, common-spline-anim-value-attlist } anim-animate-motion-attlist &= attribute svg:path { pathData }? anim-animate-motion-attlist &= attribute svg:origin { \string }? anim-animate-motion-attlist &= [ a:defaultValue = "paced" ] attribute smil:calcMode { "discrete" | "linear" | "paced" | "spline" }? animation-element |= element anim:animateColor { common-anim-target-attlist, common-anim-named-target-attlist, common-anim-add-accum-attlist, common-anim-values-attlist, common-anim-spline-mode-attlist, common-spline-anim-value-attlist, anim-animate-color-attlist, common-timing-attlist } anim-animate-color-attlist &= [ a:defaultValue = "rgb" ] attribute anim:color-interpolation { "rgb" | "hsl" }? anim-animate-color-attlist &= [ a:defaultValue = "clockwise" ] attribute anim:color-interpolation-direction { "clockwise" | "counter-clockwise" }? animation-element |= element anim:animateTransform { common-anim-target-attlist, common-anim-named-target-attlist, common-anim-add-accum-attlist, common-anim-values-attlist, anim-animate-transform-attlist, common-timing-attlist } anim-animate-transform-attlist &= attribute svg:type { "translate" | "scale" | "rotate" | "skewX" | "skewY" } animation-element |= element anim:transitionFilter { common-anim-target-attlist, common-anim-add-accum-attlist, common-anim-values-attlist, common-anim-spline-mode-attlist, anim-transition-filter-attlist, common-timing-attlist } anim-transition-filter-attlist &= attribute smil:type { \string } anim-transition-filter-attlist &= attribute smil:subtype { \string }? anim-transition-filter-attlist &= [ a:defaultValue = "forward" ] attribute smil:direction { "forward" | "reverse" }? anim-transition-filter-attlist &= attribute smil:fadeColor { "forward" | "reverse" }? anim-transition-filter-attlist &= [ a:defaultValue = "in" ] attribute smil:mode { "in" | "out" }? common-anim-attlist &= attribute anim:id { ID }? common-anim-target-attlist &= attribute smil:targetElement { IDREF }? common-anim-named-target-attlist &= attribute smil:attributeName { \string } common-anim-target-attlist &= attribute anim:sub-item { \string }? common-anim-values-attlist &= attribute smil:values { \string }? common-anim-spline-mode-attlist &= [ a:defaultValue = "discrete" ] attribute smil:calcMode { "discrete" | "linear" | "paced" | "spline" }? common-spline-anim-value-attlist &= attribute smil:keyTimes { \string }? common-spline-anim-value-attlist &= attribute smil:keySplines { \string }? common-anim-add-accum-attlist &= attribute smil:accumulate { "none" | "sum" }? common-anim-add-accum-attlist &= attribute smil:additive { "replace" | "sum" }? common-anim-values-attlist &= attribute anim:formula { \string }? common-anim-set-values-attlist &= attribute smil:to { \string }? common-anim-values-attlist &= common-anim-set-values-attlist, attribute smil:from { \string }?, attribute smil:by { \string }? common-begin-end-timing-attlist &= attribute smil:begin { \string }? common-begin-end-timing-attlist &= attribute smil:end { \string }? common-dur-timing-attlist &= attribute smil:dur { \string }? common-endsync-timing-attlist &= attribute smil:endsync { "first" | "last" | "all" | "media" }? common-repeat-timing-attlist &= attribute smil:repeatDur { \string }?, attribute smil:repeatCount { nonNegativeInteger | "indefinite" }? common-fill-timing-attlist &= attribute smil:fill { "remove" | "freeze" | "hold" | "auto" | "default" | "transition" }? common-fill-default-attlist &= attribute smil:fillDefault { "remove" | "freeze" | "hold" | "transition" | "auto" | "inherit" }? common-restart-timing-attlist &= [ a:defaultValue = "default" ] attribute smil:restart { "never" | "always" | "whenNotActive" | "default" }? common-restart-default-attlist &= [ a:defaultValue = "inherit" ] attribute smil:restartDefault { "never" | "always" | "whenNotActive" | "inherit" }? common-time-manip-attlist &= [ a:defaultValue = "0.0" ] attribute smil:accelerate { double }? common-time-manip-attlist &= [ a:defaultValue = "0.0" ] attribute smil:decelerate { double }? common-time-manip-attlist &= [ a:defaultValue = "false" ] attribute smil:autoReverse { boolean }? animation-element |= element anim:par { common-anim-attlist, common-timing-attlist, common-endsync-timing-attlist, animation-element* } common-basic-timing-attlist &= common-begin-end-timing-attlist, common-dur-timing-attlist, common-repeat-timing-attlist common-timing-attlist &= common-basic-timing-attlist, common-restart-timing-attlist, common-restart-default-attlist, common-fill-timing-attlist, common-fill-default-attlist, common-time-manip-attlist animation-element |= element anim:seq { common-anim-attlist, common-endsync-timing-attlist, common-timing-attlist, animation-element* } animation-element |= element anim:iterate { common-anim-attlist, anim-iterate-attlist, common-timing-attlist, common-endsync-timing-attlist, animation-element* } anim-iterate-attlist &= common-anim-target-attlist anim-iterate-attlist &= attribute anim:iterate-type { \string }? anim-iterate-attlist &= attribute anim:iterate-interval { duration }? animation-element |= element anim:audio { common-anim-attlist, anim-audio-attlist, common-basic-timing-attlist } anim-audio-attlist &= attribute xlink:href { anyURI }? anim-audio-attlist &= attribute anim:audio-level { double }? animation-element |= element anim:command { common-anim-attlist, anim-command-attlist, common-begin-end-timing-attlist, common-anim-target-attlist, element anim:param { attribute anim:name { text }, attribute anim:value { text } }* } anim-command-attlist &= attribute anim:command { \string } style-style = element style:style { style-style-attlist, style-style-content, style-map* } style-style-attlist &= attribute style:name { styleName } style-style-attlist &= attribute style:display-name { \string }? style-style-attlist &= attribute style:parent-style-name { styleNameRef }? style-style-attlist &= attribute style:next-style-name { styleNameRef }? style-style-attlist &= attribute style:list-style-name { styleName | empty }? style-style-attlist &= attribute style:master-page-name { styleNameRef }? style-style-attlist &= [ a:defaultValue = "false" ] attribute style:auto-update { boolean }? style-style-attlist &= attribute style:data-style-name { styleNameRef }? style-style-attlist &= attribute style:class { \string }? style-style-attlist &= attribute style:default-outline-level { positiveInteger }? style-map = element style:map { style-map-attlist, empty } style-map-attlist &= attribute style:condition { \string } style-map-attlist &= attribute style:apply-style-name { styleNameRef } style-map-attlist &= attribute style:base-cell-address { cellAddress }? style-default-style = element style:default-style { style-style-content } style-page-layout = element style:page-layout { style-page-layout-attlist, style-page-layout-properties?, style-header-style?, style-footer-style? } style-page-layout-attlist &= attribute style:name { styleName } style-page-layout-attlist &= [ a:defaultValue = "all" ] attribute style:page-usage { "all" | "left" | "right" | "mirrored" }? style-header-style = element style:header-style { style-header-footer-properties? } style-footer-style = element style:footer-style { style-header-footer-properties? } style-master-page = element style:master-page { style-master-page-attlist, (style-header, style-header-left?)?, (style-footer, style-footer-left?)?, office-forms?, style-style*, shape*, presentation-notes? } style-master-page-attlist &= attribute style:name { styleName } style-master-page-attlist &= attribute style:display-name { \string }? style-master-page-attlist &= attribute style:page-layout-name { styleNameRef } style-master-page-attlist &= attribute draw:style-name { styleNameRef }? style-master-page-attlist &= attribute style:next-style-name { styleNameRef }? style-header = element style:header { common-style-header-footer-attlist, header-footer-content } style-footer = element style:footer { common-style-header-footer-attlist, header-footer-content } style-header-left = element style:header-left { common-style-header-footer-attlist, header-footer-content } style-footer-left = element style:footer-left { common-style-header-footer-attlist, header-footer-content } header-footer-content = (text-tracked-changes, text-decls, (text-h | text-p | text-list | table-table | text-section | text-table-of-content | text-illustration-index | text-table-index | text-object-index | text-user-index | text-alphabetical-index | text-bibliography | text-index-title | change-marks)*) | (style-region-left?, style-region-center?, style-region-right?) common-style-header-footer-attlist &= [ a:defaultValue = "true" ] attribute style:display { boolean }? style-region-left = element style:region-left { region-content } style-region-center = element style:region-center { region-content } style-region-right = element style:region-right { region-content } region-content = text-p* presentation-notes = element presentation:notes { common-presentation-header-footer-attlist, presentation-notes-attlist, office-forms, shape* } presentation-notes-attlist &= attribute style:page-layout-name { styleNameRef }? presentation-notes-attlist &= attribute draw:style-name { styleNameRef }? table-table-template = element table:table-template { table-table-template-attlist, table-first-row?, table-last-row?, table-first-column?, table-last-column?, (table-body | (table-even-rows, table-odd-rows) | (table-even-columns, table-odd-columns)) } table-table-template-attlist &= attribute text:name { \string } table-table-template-attlist &= attribute text:first-row-start-column { rowOrCol } table-table-template-attlist &= attribute text:first-row-end-column { rowOrCol } table-table-template-attlist &= attribute text:last-row-start-column { rowOrCol } table-table-template-attlist &= attribute text:last-row-end-column { rowOrCol } rowOrCol = "row" | "column" table-first-row = element table:first-row { common-table-template-attlist, empty } table-last-row = element table:last-row { common-table-template-attlist, empty } table-first-column = element table:first-column { common-table-template-attlist, empty } table-last-column = element table:last-column { common-table-template-attlist, empty } table-body = element table:body { common-table-template-attlist, empty } table-even-rows = element table:even-rows { common-table-template-attlist, empty } table-odd-rows = element table:odd-rows { common-table-template-attlist, empty } table-even-columns = element table:even-columns { common-table-template-attlist, empty } table-odd-columns = element table:odd-columns { common-table-template-attlist, empty } common-table-template-attlist &= attribute text:style-name { styleNameRef }, attribute text:paragraph-style-name { styleNameRef? } style-font-face = element style:font-face { style-font-face-attlist, svg-font-face-src?, svg-definition-src? } style-font-face-attlist &= attribute svg:font-family { \string }?, attribute svg:font-style { fontStyle }?, attribute svg:font-variant { fontVariant }?, attribute svg:font-weight { fontWeight }?, attribute svg:font-stretch { "normal" | "ultra-condensed" | "extra-condensed" | "condensed" | "semi-condensed" | "semi-expanded" | "expanded" | "extra-expanded" | "ultra-expanded" }?, attribute svg:font-size { positiveLength }?, attribute svg:unicode-range { text }?, attribute svg:units-per-em { integer }?, attribute svg:panose-1 { text }?, attribute svg:stemv { integer }?, attribute svg:stemh { integer }?, attribute svg:slope { integer }?, attribute svg:cap-height { integer }?, attribute svg:x-height { integer }?, attribute svg:accent-height { integer }?, attribute svg:ascent { integer }?, attribute svg:descent { integer }?, attribute svg:widths { text }?, attribute svg:bbox { text }?, attribute svg:ideographic { integer }?, attribute svg:alphabetic { integer }?, attribute svg:mathematical { integer }?, attribute svg:hanging { integer }?, attribute svg:v-ideographic { integer }?, attribute svg:v-alphabetic { integer }?, attribute svg:v-mathematical { integer }?, attribute svg:v-hanging { integer }?, attribute svg:underline-position { integer }?, attribute svg:underline-thickness { integer }?, attribute svg:strikethrough-position { integer }?, attribute svg:strikethrough-thickness { integer }?, attribute svg:overline-position { integer }?, attribute svg:overline-thickness { integer }? svg-font-face-src = element svg:font-face-src { (svg-font-face-uri | svg-font-face-name)+ } svg-font-face-uri = element svg:font-face-uri { common-svg-font-face-xlink-attlist, svg-font-face-format* } svg-font-face-format = element svg:font-face-format { attribute svg:string { text }?, empty } svg-font-face-name = element svg:font-face-name { attribute svg:name { text }?, empty } svg-definition-src = element svg:definition-src { common-svg-font-face-xlink-attlist, empty } common-svg-font-face-xlink-attlist &= attribute xlink:href { anyURI }, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "onRequest" ] attribute xlink:actuate { "onRequest" }? style-font-face-attlist &= attribute style:name { \string } style-font-face-attlist &= attribute style:font-adornments { \string }? style-font-face-attlist &= attribute style:font-family-generic { fontFamilyGeneric }? style-font-face-attlist &= attribute style:font-pitch { fontPitch }? style-font-face-attlist &= attribute style:font-charset { textEncoding }? number-number-style = element number:number-style { common-data-style-attlist, style-text-properties?, number-text?, (any-number, number-text?)?, style-map* } any-number = number-number | number-scientific-number | number-fraction number-number = element number:number { number-number-attlist, common-decimal-places-attlist, common-number-attlist, number-embedded-text* } number-number-attlist &= attribute number:decimal-replacement { text }? number-number-attlist &= [ a:defaultValue = "1" ] attribute number:display-factor { double }? number-embedded-text = element number:embedded-text { number-embedded-text-attlist, text } number-embedded-text-attlist &= attribute number:position { integer } number-scientific-number = element number:scientific-number { number-scientific-number-attlist, common-decimal-places-attlist, common-number-attlist, empty } number-scientific-number-attlist &= attribute number:min-exponent-digits { integer }? number-fraction = element number:fraction { number-fraction-attlist, common-number-attlist, empty } number-fraction-attlist &= attribute number:min-numerator-digits { integer }? number-fraction-attlist &= attribute number:min-denominator-digits { integer }? number-fraction-attlist &= attribute number:denominator-value { integer }? number-currency-style = element number:currency-style { common-data-style-attlist, common-auto-reorder-attlist, style-text-properties?, number-text?, ((number-and-text, currency-symbol-and-text?) | (currency-symbol-and-text, number-and-text?))?, style-map* } currency-symbol-and-text = number-currency-symbol, number-text? number-and-text = number-number, number-text? number-currency-symbol = element number:currency-symbol { number-currency-symbol-attlist, text } number-currency-symbol-attlist &= attribute number:language { languageCode }?, attribute number:country { countryCode }? number-percentage-style = element number:percentage-style { common-data-style-attlist, style-text-properties?, number-text?, number-and-text?, style-map* } number-date-style = element number:date-style { common-data-style-attlist, common-auto-reorder-attlist, common-format-source-attlist, style-text-properties?, # This DTD does not reflect the fact that some elements must not # occur more than once. number-text?, (any-date, number-text?)+, style-map* } any-date = number-day | number-month | number-year | number-era | number-day-of-week | number-week-of-year | number-quarter | number-hours | number-am-pm | number-minutes | number-seconds number-day = element number:day { number-day-attlist, common-calendar-attlist, empty } number-day-attlist &= [ a:defaultValue = "short" ] attribute number:style { "short" | "long" }? number-month = element number:month { number-month-attlist, common-calendar-attlist, empty } number-month-attlist &= [ a:defaultValue = "false" ] attribute number:textual { boolean }? number-month-attlist &= [ a:defaultValue = "false" ] attribute number:possessive-form { boolean }? number-month-attlist &= [ a:defaultValue = "short" ] attribute number:style { "short" | "long" }? number-year = element number:year { number-year-attlist, common-calendar-attlist, empty } number-year-attlist &= [ a:defaultValue = "short" ] attribute number:style { "short" | "long" }? number-era = element number:era { number-era-attlist, common-calendar-attlist, empty } number-era-attlist &= [ a:defaultValue = "short" ] attribute number:style { "short" | "long" }? number-day-of-week = element number:day-of-week { number-day-of-week-attlist, common-calendar-attlist, empty } number-day-of-week-attlist &= [ a:defaultValue = "short" ] attribute number:style { "short" | "long" }? number-week-of-year = element number:week-of-year { common-calendar-attlist, empty } number-quarter = element number:quarter { number-quarter-attlist, common-calendar-attlist, empty } number-quarter-attlist &= [ a:defaultValue = "short" ] attribute number:style { "short" | "long" }? number-time-style = element number:time-style { number-time-style-attlist, common-data-style-attlist, common-format-source-attlist, style-text-properties?, # This DTD does not reflect the fact that some elements must not # occur more than once. number-text?, (any-time, number-text?)+, style-map* } any-time = number-hours | number-am-pm | number-minutes | number-seconds number-time-style-attlist &= [ a:defaultValue = "true" ] attribute number:truncate-on-overflow { boolean }? number-hours = element number:hours { number-hours-attlist, empty } number-hours-attlist &= [ a:defaultValue = "short" ] attribute number:style { "short" | "long" }? number-minutes = element number:minutes { number-minutes-attlist, empty } number-minutes-attlist &= [ a:defaultValue = "short" ] attribute number:style { "short" | "long" }? number-seconds = element number:seconds { number-seconds-attlist, empty } number-seconds-attlist &= [ a:defaultValue = "short" ] attribute number:style { "short" | "long" }? number-seconds-attlist &= [ a:defaultValue = "0" ] attribute number:decimal-places { integer }? number-am-pm = element number:am-pm { empty } number-boolean-style = element number:boolean-style { common-data-style-attlist, style-text-properties?, number-text?, (number-boolean, number-text?)?, style-map* } number-boolean = element number:boolean { empty } number-text-style = element number:text-style { common-data-style-attlist, style-text-properties?, number-text?, (number-text-content, number-text?)*, style-map* } number-text = element number:text { text } number-text-content = element number:text-content { empty } common-data-style-attlist &= attribute style:name { styleName } style-data-style-attlist &= attribute style:display-name { \string }? common-data-style-attlist &= attribute number:language { languageCode }? common-data-style-attlist &= attribute number:country { countryCode }? common-data-style-attlist &= attribute number:title { text }? common-data-style-attlist &= attribute style:volatile { boolean }? common-auto-reorder-attlist &= [ a:defaultValue = "false" ] attribute number:automatic-order { boolean }? common-format-source-attlist = [ a:defaultValue = "fixed" ] attribute number:format-source { "fixed" | "language" }? common-data-style-attlist &= [ a:defaultValue = "1" ] attribute number:transliteration-format { \string }? common-data-style-attlist &= attribute number:transliteration-language { countryCode }? common-data-style-attlist &= attribute number:transliteration-country { countryCode }? common-data-style-attlist &= [ a:defaultValue = "short" ] attribute number:transliteration-style { "short" | "medium" | "long" }? common-decimal-places-attlist = attribute number:decimal-places { integer }? common-number-attlist &= attribute number:min-integer-digits { integer }? common-number-attlist &= [ a:defaultValue = "false" ] attribute number:grouping { boolean }? common-calendar-attlist &= attribute number:calendar { "gregorian" | "gengou" | "ROC" | "hanja_yoil" | "hanja" | "hijri" | "jewish" | "buddhist" | \string }? style-style-content |= attribute style:family { "text" }, style-text-properties? style-style-content |= attribute style:family { "paragraph" }, style-paragraph-properties?, style-text-properties? style-style-content |= attribute style:family { "section" }, style-section-properties? style-style-content |= attribute style:family { "ruby" }, style-ruby-properties? text-linenumbering-configuration = element text:linenumbering-configuration { text-linenumbering-configuration-attlist, text-linenumbering-separator? } text-linenumbering-configuration-attlist &= [ a:defaultValue = "true" ] attribute text:number-lines { boolean }? text-linenumbering-configuration-attlist &= common-num-format-attlist? text-linenumbering-configuration-attlist &= attribute text:style-name { styleNameRef }? text-linenumbering-configuration-attlist &= attribute text:increment { nonNegativeInteger }? text-linenumbering-configuration-attlist &= [ a:defaultValue = "left" ] attribute text:number-position { "left" | "right" | "inner" | "outer" }? text-linenumbering-configuration-attlist &= attribute text:offset { nonNegativeLength }? text-linenumbering-configuration-attlist &= [ a:defaultValue = "true" ] attribute text:count-empty-lines { boolean }? text-linenumbering-configuration-attlist &= [ a:defaultValue = "false" ] attribute text:count-in-text-boxes { boolean }? text-linenumbering-configuration-attlist &= [ a:defaultValue = "false" ] attribute text:restart-on-page { boolean }? text-linenumbering-separator = element text:linenumbering-separator { attribute text:increment { nonNegativeInteger }?, text } text-notes-configuration = element text:notes-configuration { text-notes-configuration-content } text-notes-configuration-content &= text-note-class text-notes-configuration-content &= attribute text:citation-style-name { styleNameRef }? text-notes-configuration-content &= attribute text:citation-body-style-name { styleNameRef }? text-notes-configuration-content &= attribute text:default-style-name { styleNameRef }? text-notes-configuration-content &= attribute text:master-page-name { styleNameRef }? text-notes-configuration-content &= attribute text:start-value { nonNegativeInteger }? text-notes-configuration-content &= common-num-format-prefix-suffix-attlist, common-num-format-attlist? text-notes-configuration-content &= attribute text:start-numbering-at { "document" | "chapter" | "page" }? text-notes-configuration-content &= attribute text:footnotes-position { "text" | "page" | "section" | "document" }? text-notes-configuration-content &= element text:note-continuation-notice-forward { text }? text-notes-configuration-content &= element text:note-continuation-notice-backward { text }? text-bibliography-configuration = element text:bibliography-configuration { text-bibliography-configuration-attlist, text-sort-key* } text-bibliography-configuration-attlist &= attribute text:prefix { \string }?, attribute text:suffix { \string }? text-bibliography-configuration-attlist &= [ a:defaultValue = "false" ] attribute text:numbered-entries { boolean }? text-bibliography-configuration-attlist &= [ a:defaultValue = "true" ] attribute text:sort-by-position { boolean }?, attribute fo:language { languageCode }?, attribute fo:country { countryCode }?, attribute text:sort-algorithm { \string }? text-sort-key = element text:sort-key { text-sort-key-attlist, empty } text-sort-key-attlist &= attribute text:key { "address" | "annote" | "author" | "bibliography-type" | "booktitle" | "chapter" | "custom1" | "custom2" | "custom3" | "custom4" | "custom5" | "edition" | "editor" | "howpublished" | "identifier" | "institution" | "isbn" | "issn" | "journal" | "month" | "note" | "number" | "organizations" | "pages" | "publisher" | "report-type" | "school" | "series" | "title" | "url" | "volume" | "year" }, [ a:defaultValue = "true" ] attribute text:sort-ascending { boolean }? text-list-style = element text:list-style { text-list-style-attr, text-list-style-content* } text-list-style-attr &= attribute style:name { styleName } text-list-style-attr &= attribute style:display-name { \string }? text-list-style-attr &= [ a:defaultValue = "false" ] attribute text:consecutive-numbering { boolean }? text-list-level-style-attr = attribute text:level { positiveInteger } text-list-style-content |= element text:list-level-style-number { text-list-level-style-attr, text-list-level-style-number-attr, style-list-level-properties?, style-text-properties? } text-list-level-style-number-attr &= attribute text:style-name { styleNameRef }? text-list-level-style-number-attr &= common-num-format-attlist, common-num-format-prefix-suffix-attlist text-list-level-style-number-attr &= [ a:defaultValue = "1" ] attribute text:display-levels { positiveInteger }? text-list-level-style-number-attr &= [ a:defaultValue = "1" ] attribute text:start-value { positiveInteger }? text-list-style-content |= element text:list-level-style-bullet { text-list-level-style-attr, text-list-level-style-bullet-attr, style-list-level-properties?, style-text-properties? } text-list-level-style-bullet-attr &= attribute text:style-name { styleNameRef }? text-list-level-style-bullet-attr &= attribute text:bullet-char { character } text-list-level-style-bullet-attr &= common-num-format-prefix-suffix-attlist text-list-level-style-bullet-attr &= attribute text:bullet-relative-size { percent }? text-list-style-content |= element text:list-level-style-image { text-list-level-style-attr, text-list-level-style-image-attr, style-list-level-properties? } text-list-level-style-image-attr &= common-draw-data-attlist | office-binary-data text-outline-style = element text:outline-style { text-outline-level-style+ } text-outline-level-style = element text:outline-level-style { text-outline-level-style-attlist, style-list-level-properties?, style-text-properties? } text-outline-level-style-attlist &= attribute text:level { positiveInteger } text-outline-level-style-attlist &= attribute text:style-name { styleNameRef }? text-outline-level-style-attlist &= common-num-format-attlist, common-num-format-prefix-suffix-attlist text-outline-level-style-attlist &= [ a:defaultValue = "1" ] attribute text:display-levels { positiveInteger }? text-outline-level-style-attlist &= [ a:defaultValue = "1" ] attribute text:start-value { positiveInteger }? style-style-content |= attribute style:family { "table" }, style-table-properties? style-style-content |= attribute style:family { "table-column" }, style-table-column-properties? style-style-content |= attribute style:family { "table-row" }, style-table-row-properties? style-style-content |= attribute style:family { "table-cell" }, style-table-cell-properties?, style-paragraph-properties?, style-text-properties? style-style-content |= attribute style:family { "graphic" | "presentation" }, style-graphic-properties?, style-paragraph-properties?, style-text-properties? style-graphic-properties = element style:graphic-properties { style-graphic-properties-content } style-graphic-properties-content = style-properties-content style-graphic-properties-content-strict = style-graphic-properties-attlist, style-graphic-fill-properties-attlist, style-graphic-properties-elements style-graphic-properties-elements = empty style-style-content |= attribute style:family { "drawing-page" }, style-drawing-page-properties? style-drawing-page-properties = element style:drawing-page-properties { style-drawing-page-properties-content } style-drawing-page-properties-content = style-properties-content style-drawing-page-properties-content-strict = style-graphic-fill-properties-attlist, style-drawing-page-properties-attlist, style-drawing-page-properties-elements draw-gradient = element draw:gradient { common-draw-gradient-attlist, draw-gradient-attlist, empty } common-draw-gradient-attlist &= attribute draw:name { styleName }? common-draw-gradient-attlist &= attribute draw:display-name { \string }? common-draw-gradient-attlist &= attribute draw:style { gradient-style } gradient-style = "linear" | "axial" | "radial" | "ellipsoid" | "square" | "rectangular" common-draw-gradient-attlist &= attribute draw:cx { percent }?, attribute draw:cy { percent }? draw-gradient-attlist &= attribute draw:start-color { color }?, attribute draw:end-color { color }? draw-gradient-attlist &= attribute draw:start-intensity { percent }?, attribute draw:end-intensity { percent }? common-draw-gradient-attlist &= attribute draw:angle { integer }? common-draw-gradient-attlist &= attribute draw:border { percent }? svg-linearGradient = element svg:linearGradient { common-svg-gradient-attlist, [ a:defaultValue = "0%" ] attribute svg:x1 { coordinate | percent }?, [ a:defaultValue = "0%" ] attribute svg:y1 { coordinate | percent }?, [ a:defaultValue = "100%" ] attribute svg:x2 { coordinate | percent }?, [ a:defaultValue = "100%" ] attribute svg:y2 { coordinate | percent }?, svg-stop* } svg-radialGradient = element svg:radialGradient { common-svg-gradient-attlist, [ a:defaultValue = "50%" ] attribute svg:cx { coordinate | percent }?, [ a:defaultValue = "50%" ] attribute svg:cy { coordinate | percent }?, [ a:defaultValue = "50%" ] attribute svg:r { coordinate | percent }?, attribute svg:fx { coordinate | percent }?, attribute svg:fy { coordinate | percent }?, svg-stop* } svg-stop = element svg:stop { attribute svg:offset { double | percent }, attribute svg:stop-color { color }?, attribute svg:stop-opacity { double }? } common-svg-gradient-attlist &= [ a:defaultValue = "objectBoundingBox" ] attribute svg:gradientUnits { "objectBoundingBox" }?, attribute svg:gradientTransform { \string }?, [ a:defaultValue = "pad" ] attribute svg:spreadMethod { "pad" | "reflect" | "repeat" }? common-svg-gradient-attlist &= attribute draw:name { styleName } common-svg-gradient-attlist &= attribute draw:display-name { \string }? draw-hatch = element draw:hatch { draw-hatch-attlist, empty } draw-hatch-attlist &= attribute draw:name { styleName } draw-hatch-attlist &= attribute draw:display-name { \string }? draw-hatch-attlist &= attribute draw:style { "single" | "double" | "triple" } draw-hatch-attlist &= attribute draw:color { color }? draw-hatch-attlist &= attribute draw:distance { length }? draw-hatch-attlist &= attribute draw:rotation { integer }? draw-fill-image = element draw:fill-image { draw-fill-image-attlist, attribute xlink:href { anyURI }, [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, [ a:defaultValue = "embed" ] attribute xlink:show { "embed" }?, [ a:defaultValue = "onLoad" ] attribute xlink:actuate { "onLoad" }?, empty } draw-fill-image-attlist &= attribute draw:name { styleName } draw-fill-image-attlist &= attribute draw:display-name { \string }? draw-fill-image-attlist &= attribute svg:width { length }?, attribute svg:height { length }? draw-opacity = element draw:opacity { common-draw-gradient-attlist, draw-opacity-attlist, empty } draw-opacity-attlist &= attribute draw:start { percent }?, attribute draw:end { percent }? draw-marker = element draw:marker { draw-marker-attlist, common-draw-viewbox-attlist, common-draw-path-data-attlist, empty } draw-marker-attlist &= attribute draw:name { styleName } draw-marker-attlist &= attribute draw:display-name { \string }? draw-stroke-dash = element draw:stroke-dash { draw-stroke-dash-attlist, empty } draw-stroke-dash-attlist &= attribute draw:name { styleName } draw-stroke-dash-attlist &= attribute draw:display-name { \string }? draw-stroke-dash-attlist &= attribute draw:style { "rect" | "round" }? draw-stroke-dash-attlist &= attribute draw:dots1 { integer }?, attribute draw:dots1-length { length }?, attribute draw:dots2 { integer }?, attribute draw:dots2-length { length }? draw-stroke-dash-attlist &= attribute draw:distance { length }? style-presentation-page-layout = element style:presentation-page-layout { attribute style:name { styleName }, attribute style:display-name { \string }?, presentation-placeholder* } presentation-placeholder = element presentation:placeholder { attribute presentation:object { presentation-classes }, attribute svg:x { coordinate | percent }, attribute svg:y { coordinate | percent }, attribute svg:width { length | percent }, attribute svg:height { length | percent }, empty } style-style-content |= attribute style:family { "chart" }, style-chart-properties?, style-graphic-properties?, style-paragraph-properties?, style-text-properties? style-properties-content = anyAttListOrElements style-page-layout-properties = element style:page-layout-properties { style-page-layout-properties-content } style-page-layout-properties-content = style-properties-content style-page-layout-properties-content-strict = style-page-layout-properties-attlist, style-page-layout-properties-elements style-page-layout-properties-attlist &= attribute fo:page-width { length }?, attribute fo:page-height { length }? style-page-layout-properties-attlist &= common-num-format-attlist?, common-num-format-prefix-suffix-attlist style-page-layout-properties-attlist &= attribute style:paper-tray-name { "default" | \string }? style-page-layout-properties-attlist &= attribute style:print-orientation { "portrait" | "landscape" }? style-page-layout-properties-attlist &= common-horizontal-margin-attlist, common-vertical-margin-attlist, common-margin-attlist style-page-layout-properties-attlist &= common-border-attlist style-page-layout-properties-attlist &= common-border-line-width-attlist style-page-layout-properties-attlist &= common-padding-attlist style-page-layout-properties-attlist &= common-shadow-attlist style-page-layout-properties-attlist &= common-background-color-attlist style-page-layout-properties-elements &= style-background-image style-page-layout-properties-elements &= style-columns style-page-layout-properties-attlist &= attribute style:register-truth-ref-style-name { styleNameRef }? style-page-layout-properties-attlist &= attribute style:print { list { ("headers" | "grid" | "annotations" | "objects" | "charts" | "drawings" | "formulas" | "zero-values")* } }? style-page-layout-properties-attlist &= attribute style:print-page-order { "ttb" | "ltr" }? style-page-layout-properties-attlist &= attribute style:first-page-number { positiveInteger | "continue" }? style-page-layout-properties-attlist &= attribute style:scale-to { percent }?, attribute style:scale-to-pages { positiveInteger }? style-page-layout-properties-attlist &= attribute style:table-centering { "horizontal" | "vertical" | "both" | "none" }? style-page-layout-properties-attlist &= attribute style:footnote-max-height { length }? style-page-layout-properties-attlist &= common-writing-mode-attlist style-page-layout-properties-elements &= style-footnote-sep style-footnote-sep = element style:footnote-sep { style-footnote-sep-attlist, empty }? style-footnote-sep-attlist &= attribute style:width { length }?, attribute style:rel-width { percent }?, attribute style:color { color }?, attribute style:line-style { lineStyle }?, [ a:defaultValue = "left" ] attribute style:adjustment { "left" | "center" | "right" }?, attribute style:distance-before-sep { length }?, attribute style:distance-after-sep { length }? style-page-layout-properties-attlist &= attribute style:layout-grid-mode { "none" | "line" | "both" }? style-page-layout-properties-attlist &= attribute style:layout-grid-base-height { length }? style-page-layout-properties-attlist &= attribute style:layout-grid-ruby-height { length }? style-page-layout-properties-attlist &= attribute style:layout-grid-lines { positiveInteger }? style-page-layout-properties-attlist &= attribute style:layout-grid-color { color }? style-page-layout-properties-attlist &= attribute style:layout-grid-ruby-below { boolean }? style-page-layout-properties-attlist &= attribute style:layout-grid-print { boolean }? style-page-layout-properties-attlist &= attribute style:layout-grid-display { boolean }? style-header-footer-properties = element style:header-footer-properties { style-header-footer-properties-content } style-header-footer-properties-content = style-properties-content style-header-footer-properties-content-strict = style-header-footer-properties-attlist, style-header-footer-properties-elements style-header-footer-properties-attlist &= attribute svg:height { length }?, attribute fo:min-height { length }? style-header-footer-properties-attlist &= common-horizontal-margin-attlist, common-vertical-margin-attlist, common-margin-attlist style-header-footer-properties-attlist &= common-border-attlist style-header-footer-properties-attlist &= common-border-line-width-attlist style-header-footer-properties-attlist &= common-padding-attlist style-header-footer-properties-attlist &= common-background-color-attlist style-header-footer-properties-elements &= style-background-image style-header-footer-properties-attlist &= common-shadow-attlist style-header-footer-properties-attlist &= attribute style:dynamic-spacing { boolean }? style-text-properties = element style:text-properties { style-text-properties-content } style-text-properties-content = style-properties-content style-text-properties-content-strict = style-text-properties-attlist, style-text-properties-elements style-text-properties-elements = empty style-text-properties-attlist &= attribute fo:font-variant { fontVariant }? fontVariant = "normal" | "small-caps" style-text-properties-attlist &= attribute fo:text-transform { "none" | "lowercase" | "uppercase" | "capitalize" }? style-text-properties-attlist &= attribute fo:color { color }? style-text-properties-attlist &= attribute style:use-window-font-color { boolean }? style-text-properties-attlist &= attribute style:text-outline { boolean }? style-text-properties-attlist &= attribute style:text-line-through-type { lineType }? style-text-properties-attlist &= attribute style:text-line-through-style { lineStyle }? style-text-properties-attlist &= attribute style:text-line-through-width { lineWidth }? style-text-properties-attlist &= attribute style:text-line-through-color { "font-color" | color }? style-text-properties-attlist &= attribute style:text-line-through-text { \string }? style-text-properties-attlist &= attribute style:text-line-through-text-style { styleNameRef }? style-text-properties-attlist &= attribute style:text-position { list { (percent | "super" | "sub"), percent? } }? style-text-properties-attlist &= attribute style:font-name { \string }?, attribute style:font-name-asian { \string }?, attribute style:font-name-complex { \string }? style-text-properties-attlist &= attribute fo:font-family { \string }?, attribute style:font-family-asian { \string }?, attribute style:font-family-complex { \string }? style-text-properties-attlist &= attribute style:font-family-generic { fontFamilyGeneric }?, attribute style:font-family-generic-asian { fontFamilyGeneric }?, attribute style:font-family-generic-complex { fontFamilyGeneric }? fontFamilyGeneric = "roman" | "swiss" | "modern" | "decorative" | "script" | "system" style-text-properties-attlist &= attribute style:font-style-name { \string }?, attribute style:font-style-name-asian { \string }?, attribute style:font-style-name-complex { \string }? style-text-properties-attlist &= attribute style:font-pitch { fontPitch }?, attribute style:font-pitch-asian { fontPitch }?, attribute style:font-pitch-complex { fontPitch }? fontPitch = "fixed" | "variable" style-text-properties-attlist &= attribute style:font-charset { textEncoding }?, attribute style:font-charset-asian { textEncoding }?, attribute style:font-charset-complex { textEncoding }? textEncoding = xsd:string { pattern = "[A-Za-z][A-Za-z0-9._\-]*" } style-text-properties-attlist &= attribute fo:font-size { positiveLength | percent }?, attribute style:font-size-asian { positiveLength | percent }?, attribute style:font-size-complex { positiveLength | percent }? style-text-properties-attlist &= attribute style:font-size-rel { length }?, attribute style:font-size-rel-asian { length }?, attribute style:font-size-rel-complex { length }? style-text-properties-attlist &= attribute style:script-type { "latin" | "asian" | "complex" | "ignore" }? style-text-properties-attlist &= attribute fo:letter-spacing { length | "normal" }? style-text-properties-attlist &= attribute fo:language { languageCode }?, attribute style:language-asian { languageCode }?, attribute style:language-complex { languageCode }? style-text-properties-attlist &= attribute fo:country { countryCode }?, attribute style:country-asian { countryCode }?, attribute style:country-complex { countryCode }? style-text-properties-attlist &= attribute fo:font-style { fontStyle }?, attribute style:font-style-asian { fontStyle }?, attribute style:font-style-complex { fontStyle }? fontStyle = "normal" | "italic" | "oblique" style-text-properties-attlist &= attribute style:font-relief { "none" | "embossed" | "engraved" }? style-text-properties-attlist &= attribute fo:text-shadow { shadowType }? shadowType = "none" | # The following string must match an XSL shadow decl \string style-text-properties-attlist &= attribute style:text-underline-type { lineType }? lineType = "none" | "single" | "double" style-text-properties-attlist &= attribute style:text-underline-style { lineStyle }? lineStyle = "none" | "solid" | "dotted" | "dash" | "long-dash" | "dot-dash" | "dot-dot-dash" | "wave" style-text-properties-attlist &= attribute style:text-underline-width { lineWidth }? lineWidth = "auto" | "normal" | "bold" | "thin" | "dash" | "medium" | "thick" | positiveInteger | percent | positiveLength style-text-properties-attlist &= attribute style:text-underline-color { "font-color" | color }? style-text-properties-attlist &= attribute fo:font-weight { fontWeight }?, attribute style:font-weight-asian { fontWeight }?, attribute style:font-weight-complex { fontWeight }? fontWeight = "normal" | "bold" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" style-text-properties-attlist &= attribute style:text-underline-mode { lineMode }? lineMode = "continuous" | "skip-white-space" style-text-properties-attlist &= attribute style:text-line-through-mode { lineMode }? style-text-properties-attlist &= attribute style:letter-kerning { boolean }? style-text-properties-attlist &= attribute style:text-blinking { boolean }? style-text-properties-attlist &= common-background-color-attlist style-text-properties-attlist &= attribute style:text-combine { "none" | "letters" | "lines" }? style-text-properties-attlist &= attribute style:text-combine-start-char { character }?, attribute style:text-combine-end-char { character }? style-text-properties-attlist &= attribute style:text-emphasize { "none" | list { ("none" | "accent" | "dot" | "circle" | "disc"), ("above" | "below") } }? style-text-properties-attlist &= attribute style:text-scale { percent }? style-text-properties-attlist &= attribute style:text-rotation-angle { integer }? style-text-properties-attlist &= attribute style:text-rotation-scale { "fixed" | "line-height" }? style-text-properties-attlist &= attribute fo:hyphenate { boolean }? style-text-properties-attlist &= attribute fo:hyphenation-remain-char-count { positiveInteger }? style-text-properties-attlist &= attribute fo:hyphenation-push-char-count { positiveInteger }? style-text-properties-attlist &= attribute text:display { "true" } | attribute text:display { "none" } | (attribute text:display { "condition" }, attribute text:condition { "none" }) | empty style-paragraph-properties = element style:paragraph-properties { style-paragraph-properties-content } style-paragraph-properties-content = style-properties-content style-paragraph-properties-content-strict = style-paragraph-properties-attlist, style-paragraph-properties-elements style-paragraph-properties-attlist &= attribute fo:line-height { "normal" | nonNegativeLength | percent }? style-paragraph-properties-attlist &= attribute style:line-height-at-least { nonNegativeLength }? style-paragraph-properties-attlist &= attribute style:line-spacing { length }? style-paragraph-properties-attlist &= attribute style:font-independent-line-spacing { boolean }? style-paragraph-properties-attlist &= common-text-align common-text-align = attribute fo:text-align { "start" | "end" | "left" | "right" | "center" | "justify" }? style-paragraph-properties-attlist &= attribute fo:text-align-last { "start" | "center" | "justify" }? style-paragraph-properties-attlist &= attribute style:justify-single-word { boolean }? style-paragraph-properties-attlist &= attribute fo:keep-together { "auto" | "always" }? style-paragraph-properties-attlist &= attribute fo:widows { nonNegativeInteger }? style-paragraph-properties-attlist &= attribute fo:orphans { nonNegativeInteger }? style-paragraph-properties-elements &= style-tab-stops style-tab-stops = element style:tab-stops { style-tab-stop* }? style-tab-stop = element style:tab-stop { style-tab-stop-attlist, empty } style-tab-stop-attlist &= attribute style:position { nonNegativeLength } style-tab-stop-attlist &= [ a:defaultValue = "left" ] attribute style:type { "left" | "center" | "right" }? | (attribute style:type { "char" }, style-tab-stop-char-attlist) style-tab-stop-char-attlist &= attribute style:char { character } style-tab-stop-attlist &= attribute style:leader-type { lineType }? style-tab-stop-attlist &= attribute style:leader-style { lineStyle }? style-tab-stop-attlist &= attribute style:leader-width { lineWidth }? style-tab-stop-attlist &= attribute style:leader-color { "font-color" | color }? style-tab-stop-attlist &= [ a:defaultValue = " " ] attribute style:leader-text { \string }? style-tab-stop-attlist &= attribute style:leader-text-style { styleNameRef }? style-paragraph-properties-attlist &= attribute style:tab-stop-distance { nonNegativeLength }? style-paragraph-properties-attlist &= attribute fo:hyphenation-keep { "auto" | "page" }? style-paragraph-properties-attlist &= attribute fo:hyphenation-ladder-count { "no-limit" | positiveInteger }? style-paragraph-properties-elements &= style-drop-cap style-drop-cap = element style:drop-cap { style-drop-cap-attlist, empty }? style-drop-cap-attlist &= [ a:defaultValue = "1" ] attribute style:length { "word" | positiveInteger }? style-drop-cap-attlist &= [ a:defaultValue = "1" ] attribute style:lines { positiveInteger }? style-drop-cap-attlist &= [ a:defaultValue = "0cm" ] attribute style:distance { length }? style-drop-cap-attlist &= attribute style:style-name { styleNameRef }? style-paragraph-properties-attlist &= attribute style:register-true { boolean }? style-paragraph-properties-attlist &= common-horizontal-margin-attlist common-horizontal-margin-attlist = attribute fo:margin-left { length | percent }?, attribute fo:margin-right { length | percent }? style-paragraph-properties-attlist &= attribute fo:text-indent { length | percent }? style-paragraph-properties-attlist &= attribute style:auto-text-indent { boolean }? style-paragraph-properties-attlist &= common-vertical-margin-attlist common-vertical-margin-attlist = attribute fo:margin-top { nonNegativeLength | percent }?, attribute fo:margin-bottom { nonNegativeLength | percent }? style-paragraph-properties-attlist &= common-margin-attlist common-margin-attlist = attribute fo:margin { nonNegativeLength | percent }? style-paragraph-properties-attlist &= common-break-attlist common-break-attlist = attribute fo:break-before { "auto" | "column" | "page" }?, attribute fo:break-after { "auto" | "column" | "page" }? style-paragraph-properties-attlist &= common-background-color-attlist common-background-color-attlist = attribute fo:background-color { "transparent" | color }? style-paragraph-properties-elements &= style-background-image style-background-image = element style:background-image { style-background-image-attlist, (common-draw-data-attlist | office-binary-data | empty) }? style-background-image-attlist &= [ a:defaultValue = "repeat" ] attribute style:repeat { "no-repeat" | "repeat" | "stretch" }? style-background-image-attlist &= [ a:defaultValue = "center" ] attribute style:position { "left" | "center" | "right" | "top" | "bottom" | list { horiBackPos, vertBackPos } | list { vertBackPos, horiBackPos } }? horiBackPos = "left" | "center" | "right" vertBackPos = "top" | "center" | "bottom" style-background-image-attlist &= attribute style:filter-name { \string }? style-background-image-attlist &= attribute draw:opacity { percent }? style-paragraph-properties-attlist &= common-border-attlist common-border-attlist = attribute fo:border { \string }?, attribute fo:border-top { \string }?, attribute fo:border-bottom { \string }?, attribute fo:border-left { \string }?, attribute fo:border-right { \string }? style-paragraph-properties-attlist &= common-border-line-width-attlist common-border-line-width-attlist = attribute style:border-line-width { borderWidths }?, attribute style:border-line-width-top { borderWidths }?, attribute style:border-line-width-bottom { borderWidths }?, attribute style:border-line-width-left { borderWidths }?, attribute style:border-line-width-right { borderWidths }? borderWidths = list { positiveLength, positiveLength, positiveLength } style-paragraph-properties-attlist &= common-padding-attlist common-padding-attlist = attribute fo:padding { nonNegativeLength }?, attribute fo:padding-top { nonNegativeLength }?, attribute fo:padding-bottom { nonNegativeLength }?, attribute fo:padding-left { nonNegativeLength }?, attribute fo:padding-right { nonNegativeLength }? style-paragraph-properties-attlist &= common-shadow-attlist common-shadow-attlist = attribute style:shadow { shadowType }? style-paragraph-properties-attlist &= common-keep-with-next-attlist common-keep-with-next-attlist = attribute fo:keep-with-next { "auto" | "always" }? style-paragraph-properties-attlist &= [ a:defaultValue = "false" ] attribute text:number-lines { boolean }? style-paragraph-properties-attlist &= attribute text:line-number { nonNegativeInteger }? style-paragraph-properties-attlist &= attribute style:text-autospace { "none" | "ideograph-alpha" }? style-paragraph-properties-attlist &= attribute style:punctuation-wrap { "simple" | "hanging" }? style-paragraph-properties-attlist &= attribute style:line-break { "normal" | "strict" }? style-paragraph-properties-attlist &= [ a:defaultValue = "auto" ] attribute style:vertical-align { "top" | "middle" | "bottom" | "auto" | "baseline" }? style-paragraph-properties-attlist &= common-writing-mode-attlist common-writing-mode-attlist = attribute style:writing-mode { "lr-tb" | "rl-tb" | "tb-rl" | "tb-lr" | "lr" | "rl" | "tb" | "page" }? style-paragraph-properties-attlist &= attribute style:writing-mode-automatic { boolean }? style-paragraph-properties-attlist &= attribute style:snap-to-layout-grid { boolean }? style-paragraph-properties-attlist &= common-page-number-attlist common-page-number-attlist = attribute style:page-number { positiveInteger | "auto" }? style-paragraph-properties-attlist &= attribute style:background-transparency { percent }? style-ruby-properties = element style:ruby-properties { style-ruby-properties-content } style-ruby-properties-content = style-properties-content style-ruby-properties-content-strict = style-ruby-properties-attlist, style-ruby-properties-elements style-ruby-properties-elements = empty style-ruby-properties-attlist &= attribute style:ruby-position { "above" | "below" }? style-ruby-properties-attlist &= attribute style:ruby-align { "left" | "center" | "right" | "distribute-letter" | "distribute-space" }? style-section-properties = element style:section-properties { style-section-properties-content } style-section-properties-content = style-properties-content style-section-properties-content-strict = style-section-properties-attlist, style-section-properties-elements style-section-properties-attlist &= common-background-color-attlist style-section-properties-elements &= style-background-image style-section-properties-attlist &= common-horizontal-margin-attlist style-section-properties-elements &= style-columns style-columns = element style:columns { style-columns-attlist, style-column-sep?, style-column* }? style-columns-attlist &= attribute fo:column-count { positiveInteger } style-columns-attlist &= attribute fo:column-gap { length }? style-column = element style:column { style-column-attlist } style-column-attlist &= attribute style:rel-width { relativeLength } style-column-attlist &= [ a:defaultValue = "0cm" ] attribute fo:start-indent { length }? style-column-attlist &= [ a:defaultValue = "0cm" ] attribute fo:end-indent { length }? style-column-attlist &= [ a:defaultValue = "0cm" ] attribute fo:space-before { length }? style-column-attlist &= [ a:defaultValue = "0cm" ] attribute fo:space-after { length }? style-column-sep = element style:column-sep { style-column-sep-attlist } style-column-sep-attlist &= [ a:defaultValue = "solid" ] attribute style:style { "none" | "solid" | "dotted" | "dashed" | "dot-dashed" }? style-column-sep-attlist &= attribute style:width { length } style-column-sep-attlist &= [ a:defaultValue = "100%" ] attribute style:height { percent }? style-column-sep-attlist &= [ a:defaultValue = "top" ] attribute style:vertical-align { "top" | "middle" | "bottom" }? style-column-sep-attlist &= [ a:defaultValue = "#000000" ] attribute style:color { color }? style-section-properties-attlist &= [ a:defaultValue = "false" ] attribute style:protect { boolean }? style-section-properties-attlist &= attribute text:dont-balance-text-columns { boolean }? style-section-properties-attlist &= common-writing-mode-attlist style-section-properties-elements &= text-notes-configuration* style-table-properties = element style:table-properties { style-table-properties-content } style-table-properties-content = style-properties-content style-table-properties-content-strict = style-table-properties-attlist, style-table-properties-elements style-table-properties-attlist &= attribute style:width { positiveLength }?, attribute style:rel-width { percent }? style-table-properties-attlist &= attribute table:align { "left" | "center" | "right" | "margins" }? style-table-properties-attlist &= common-horizontal-margin-attlist style-table-properties-attlist &= common-vertical-margin-attlist style-table-properties-attlist &= common-margin-attlist style-table-properties-attlist &= common-page-number-attlist style-table-properties-attlist &= common-break-attlist style-table-properties-attlist &= common-background-color-attlist style-table-properties-elements &= style-background-image style-table-properties-attlist &= common-shadow-attlist style-table-properties-attlist &= common-keep-with-next-attlist style-table-properties-attlist &= attribute style:may-break-between-rows { boolean }? style-table-properties-attlist &= attribute table:border-model { "collapsing" | "separating" }? style-table-properties-attlist &= common-writing-mode-attlist style-table-properties-attlist &= attribute table:display { boolean }? style-table-column-properties = element style:table-column-properties { style-table-column-properties-content } style-table-column-properties-content = style-properties-content style-table-column-properties-content-strict = style-table-column-properties-attlist, style-table-column-properties-elements style-table-column-properties-elements = empty style-table-column-properties-attlist &= attribute style:column-width { positiveLength }?, attribute style:rel-column-width { relativeLength }? style-table-column-properties-attlist &= attribute style:use-optimal-column-width { boolean }? style-table-column-properties-attlist &= common-break-attlist style-table-row-properties = element style:table-row-properties { style-table-row-properties-content } style-table-row-properties-content = style-properties-content style-table-row-properties-content-strict = style-table-row-properties-attlist, style-table-row-properties-elements style-table-row-properties-attlist &= attribute style:row-height { positiveLength }?, attribute style:min-row-height { nonNegativeLength }? style-table-row-properties-attlist &= attribute style:use-optimal-row-height { boolean }? style-table-row-properties-attlist &= common-background-color-attlist style-table-row-properties-elements &= style-background-image style-table-row-properties-attlist &= common-break-attlist style-table-row-properties-attlist &= attribute fo:keep-together { "auto" | "always" }? style-table-cell-properties = element style:table-cell-properties { style-table-cell-properties-content } style-table-cell-properties-content = style-properties-content style-table-cell-properties-content-strict = style-table-cell-properties-attlist, style-table-cell-properties-elements style-table-cell-properties-attlist &= attribute style:vertical-align { "top" | "middle" | "bottom" | "automatic" }? style-table-cell-properties-attlist &= attribute style:text-align-source { "fix" | "value-type" }? style-table-cell-properties-attlist &= common-style-direction-attlist common-style-direction-attlist = attribute style:direction { "ltr" | "ttb" }? style-table-cell-properties-attlist &= attribute style:glyph-orientation-vertical { "auto" | "0" }? style-table-cell-properties-attlist &= common-shadow-attlist style-table-cell-properties-attlist &= common-background-color-attlist style-table-cell-properties-elements &= style-background-image style-table-cell-properties-attlist &= common-border-attlist style-table-cell-properties-attlist &= attribute style:diagonal-tl-br { \string }?, attribute style:diagonal-tl-br-widths { borderWidths }?, attribute style:diagonal-bl-tr { \string }?, attribute style:diagonal-bl-tr-widths { borderWidths }? style-table-cell-properties-attlist &= common-border-line-width-attlist style-table-cell-properties-attlist &= common-padding-attlist style-table-cell-properties-attlist &= attribute fo:wrap-option { "no-wrap" | "wrap" }? style-table-cell-properties-attlist &= common-rotation-angle-attlist common-rotation-angle-attlist = attribute style:rotation-angle { nonNegativeInteger }? style-table-cell-properties-attlist &= attribute style:rotation-align { "none" | "bottom" | "top" | "center" }? style-table-cell-properties-attlist &= attribute style:cell-protect { "none" | "hidden-and-protected" | list { ("protected" | "formula-hidden")+ } }? style-table-cell-properties-attlist &= attribute style:print-content { boolean }? style-table-cell-properties-attlist &= attribute style:decimal-places { nonNegativeInteger }? style-table-cell-properties-attlist &= attribute style:repeat-content { boolean }? style-table-cell-properties-attlist &= attribute style:shrink-to-fit { boolean }? style-list-level-properties = element style:list-level-properties { style-list-level-properties-content } style-list-level-properties-content = style-properties-content style-list-level-properties-content-strict = style-list-level-properties-attlist, style-list-level-properties-elements style-list-level-properties-elements = empty style-list-level-properties-attlist &= common-text-align style-list-level-properties-attlist &= attribute text:space-before { nonNegativeLength }? style-list-level-properties-attlist &= attribute text:min-label-width { nonNegativeLength }? style-list-level-properties-attlist &= attribute text:min-label-distance { nonNegativeLength }? style-list-level-properties-attlist &= attribute style:font-name { \string }? style-list-level-properties-attlist &= attribute fo:width { positiveLength }?, attribute fo:height { positiveLength }? style-list-level-properties-attlist &= common-vertical-rel-attlist, common-vertical-pos-attlist style-graphic-properties-attlist &= attribute draw:stroke { "none" | "dash" | "solid" }? style-graphic-properties-attlist &= attribute draw:stroke-dash { styleNameRef }? style-graphic-properties-attlist &= attribute draw:stroke-dash-names { styleNameRefs }? style-graphic-properties-attlist &= attribute svg:stroke-width { length }? style-graphic-properties-attlist &= attribute svg:stroke-color { color }? style-graphic-properties-attlist &= attribute draw:marker-start { styleNameRef }? style-graphic-properties-attlist &= attribute draw:marker-end { styleNameRef }? style-graphic-properties-attlist &= attribute draw:marker-start-width { length }? style-graphic-properties-attlist &= attribute draw:marker-end-width { length }? style-graphic-properties-attlist &= attribute draw:marker-start-center { boolean }? style-graphic-properties-attlist &= attribute draw:marker-end-center { boolean }? style-graphic-properties-attlist &= attribute svg:stroke-opacity { xsd:double { minInclusive = "0" maxInclusive = "1" } | percent }? style-graphic-properties-attlist &= attribute draw:stroke-linejoin { "miter" | "round" | "bevel" | "middle" | "none" | "inherit" }? style-graphic-fill-properties-attlist &= attribute draw:fill { "none" | "solid" | "bitmap" | "gradient" | "hatch" }? style-graphic-fill-properties-attlist &= attribute draw:fill-color { color }? style-graphic-fill-properties-attlist &= attribute draw:secondary-fill-color { color }? style-graphic-fill-properties-attlist &= attribute draw:fill-gradient-name { styleNameRef }? style-graphic-fill-properties-attlist &= attribute draw:gradient-step-count { nonNegativeInteger }? style-graphic-fill-properties-attlist &= attribute draw:fill-hatch-name { styleNameRef }? style-graphic-fill-properties-attlist &= attribute draw:fill-hatch-solid { boolean }? style-graphic-fill-properties-attlist &= attribute draw:fill-image-name { styleNameRef }? style-graphic-fill-properties-attlist &= attribute style:repeat { "no-repeat" | "repeat" | "stretch" }? style-graphic-fill-properties-attlist &= attribute draw:fill-image-width { length | percent }?, attribute draw:fill-image-height { length | percent }? style-graphic-fill-properties-attlist &= attribute draw:fill-image-ref-point-x { percent }?, attribute draw:fill-image-ref-point-y { percent }?, attribute draw:fill-image-ref-point { "top-left" | "top" | "top-right" | "left" | "center" | "right" | "bottom-left" | "bottom" | "bottom-right" }? style-graphic-fill-properties-attlist &= attribute draw:tile-repeat-offset { text }? style-graphic-fill-properties-attlist &= attribute draw:opacity { percent }? style-graphic-fill-properties-attlist &= attribute draw:opacity-name { styleNameRef }? style-graphic-fill-properties-attlist &= attribute svg:fill-rule { "nonzero" | "evenodd" }? style-graphic-properties-attlist &= attribute draw:symbol-color { color }? style-graphic-properties-attlist &= attribute text:animation { "none" | "scroll" | "alternate" | "slide" }? style-graphic-properties-attlist &= attribute text:animation-direction { "left" | "right" | "up" | "down" }? style-graphic-properties-attlist &= attribute text:animation-start-inside { boolean }? style-graphic-properties-attlist &= attribute text:animation-stop-inside { boolean }? style-graphic-properties-attlist &= attribute text:animation-repeat { nonNegativeInteger }? style-graphic-properties-attlist &= attribute text:animation-delay { duration }? style-graphic-properties-attlist &= attribute text:animation-steps { length }? style-graphic-properties-attlist &= attribute draw:auto-grow-width { boolean }?, attribute draw:auto-grow-height { boolean }? style-graphic-properties-attlist &= attribute draw:fit-to-size { boolean }? style-graphic-properties-attlist &= attribute draw:fit-to-contour { boolean }? style-graphic-properties-attlist &= attribute draw:textarea-vertical-align { "top" | "middle" | "bottom" | "justify" }? style-graphic-properties-attlist &= attribute draw:textarea-horizontal-align { "left" | "center" | "right" | "justify" }? style-graphic-properties-attlist &= attribute fo:wrap-option { "no-wrap" | "wrap" }? style-graphic-properties-elements &= text-list-style? style-graphic-properties-attlist &= attribute draw:color-mode { "greyscale" | "mono" | "watermark" | "standard" }? style-graphic-properties-attlist &= attribute draw:color-inversion { boolean }? style-graphic-properties-attlist &= attribute draw:luminance { percent }? style-graphic-properties-attlist &= attribute draw:contrast { percent }? style-graphic-properties-attlist &= attribute draw:gamma { percent }? style-graphic-properties-attlist &= attribute draw:red { percent }? style-graphic-properties-attlist &= attribute draw:green { percent }? style-graphic-properties-attlist &= attribute draw:blue { percent }? style-graphic-properties-attlist &= attribute draw:image-opacity { percent }? style-graphic-properties-attlist &= attribute draw:shadow { "visible" | "hidden" }? style-graphic-properties-attlist &= attribute draw:shadow-offset-x { length }?, attribute draw:shadow-offset-y { length }? style-graphic-properties-attlist &= attribute draw:shadow-color { color }? style-graphic-properties-attlist &= attribute draw:shadow-opacity { percent }? style-graphic-properties-attlist &= attribute draw:start-line-spacing-horizontal { distance }?, attribute draw:start-line-spacing-vertical { distance }? style-graphic-properties-attlist &= attribute draw:end-line-spacing-horizontal { distance }?, attribute draw:end-line-spacing-vertical { distance }? style-graphic-properties-attlist &= attribute draw:line-distance { distance }? style-graphic-properties-attlist &= attribute draw:guide-overhang { length }? style-graphic-properties-attlist &= attribute draw:guide-distance { distance }? style-graphic-properties-attlist &= attribute draw:start-guide { length }? style-graphic-properties-attlist &= attribute draw:end-guide { length }? style-graphic-properties-attlist &= attribute draw:placing { "below" | "above" }? style-graphic-properties-attlist &= attribute draw:parallel { boolean }? style-graphic-properties-attlist &= attribute draw:measure-align { "automatic" | "left-outside" | "inside" | "right-outside" }?, attribute draw:measure-vertical-align { "automatic" | "above" | "below" | "center" }? style-graphic-properties-attlist &= attribute draw:unit { "automatic" | "mm" | "cm" | "m" | "km" | "pt" | "pc" | "inch" | "ft" | "mi" }? style-graphic-properties-attlist &= attribute draw:show-unit { boolean }? style-graphic-properties-attlist &= attribute draw:decimal-places { nonNegativeInteger }? style-graphic-properties-attlist &= attribute draw:caption-type { "straight-line" | "angled-line" | "angled-connector-line" }? style-graphic-properties-attlist &= attribute draw:caption-angle-type { "fixed" | "free" }? style-graphic-properties-attlist &= attribute draw:caption-angle { nonNegativeInteger }? style-graphic-properties-attlist &= attribute draw:caption-gap { distance }? style-graphic-properties-attlist &= attribute draw:caption-escape-direction { "horizontal" | "vertical" | "auto" }? style-graphic-properties-attlist &= attribute draw:caption-escape { length | percent }? style-graphic-properties-attlist &= attribute draw:caption-line-length { length }? style-graphic-properties-attlist &= attribute draw:caption-fit-line-length { boolean }? style-graphic-properties-attlist &= attribute dr3d:horizontal-segments { nonNegativeInteger }? style-graphic-properties-attlist &= attribute dr3d:vertical-segments { nonNegativeInteger }? style-graphic-properties-attlist &= attribute dr3d:edge-rounding { percent }? style-graphic-properties-attlist &= attribute dr3d:edge-rounding-mode { "correct" | "attractive" }? style-graphic-properties-attlist &= attribute dr3d:back-scale { percent }? style-graphic-properties-attlist &= attribute dr3d:depth { length }? style-graphic-properties-attlist &= attribute dr3d:backface-culling { "enabled" | "disabled" }? style-graphic-properties-attlist &= attribute dr3d:end-angle { nonNegativeInteger }? style-graphic-properties-attlist &= attribute dr3d:close-front { boolean }? style-graphic-properties-attlist &= attribute dr3d:close-back { boolean }? style-graphic-properties-attlist &= attribute dr3d:lighting-mode { "standard" | "double-sided" }? style-graphic-properties-attlist &= attribute dr3d:normals-kind { "object" | "flat" | "sphere" }? style-graphic-properties-attlist &= attribute dr3d:normals-direction { "normal" | "inverse" }? style-graphic-properties-attlist &= attribute dr3d:texture-generation-mode-x { "object" | "parallel" | "sphere" }?, attribute dr3d:texture-generation-mode-y { "object" | "parallel" | "sphere" }? style-graphic-properties-attlist &= attribute dr3d:texture-kind { "luminance" | "intensity" | "color" }? style-graphic-properties-attlist &= attribute dr3d:texture-filter { "enabled" | "disabled" }? style-graphic-properties-attlist &= attribute dr3d:texture-mode { "replace" | "modulate" | "blend" }? style-graphic-properties-attlist &= attribute dr3d:ambient-color { color }?, attribute dr3d:emissive-color { color }?, attribute dr3d:specular-color { color }?, attribute dr3d:diffuse-color { color }? style-graphic-properties-attlist &= attribute dr3d:shininess { percent }? style-graphic-properties-attlist &= attribute dr3d:shadow { "visible" | "hidden" }? style-graphic-properties-attlist &= common-draw-rel-size-attlist, attribute fo:min-width { length | percent }? style-graphic-properties-attlist &= attribute fo:min-height { length | percent }? style-graphic-properties-attlist &= attribute fo:max-height { length | percent }?, attribute fo:max-width { length | percent }? style-graphic-properties-attlist &= common-horizontal-margin-attlist style-graphic-properties-attlist &= common-vertical-margin-attlist style-graphic-properties-attlist &= common-margin-attlist style-graphic-properties-attlist &= attribute style:print-content { boolean }? style-graphic-properties-attlist &= attribute style:protect { "none" | list { ("content" | "position" | "size")+ } }? style-graphic-properties-attlist &= attribute style:horizontal-pos { "left" | "center" | "right" | "from-left" | "inside" | "outside" | "from-inside" }?, attribute svg:x { coordinate }? style-graphic-properties-attlist &= attribute style:horizontal-rel { "page" | "page-content" | "page-start-margin" | "page-end-margin" | "frame" | "frame-content" | "frame-start-margin" | "frame-end-margin" | "paragraph" | "paragraph-content" | "paragraph-start-margin" | "paragraph-end-margin" | "char" }? style-graphic-properties-attlist &= common-vertical-pos-attlist common-vertical-pos-attlist = attribute style:vertical-pos { "top" | "middle" | "bottom" | "from-top" | "below" }?, attribute svg:y { coordinate }? style-graphic-properties-attlist &= common-vertical-rel-attlist common-vertical-rel-attlist = attribute style:vertical-rel { "page" | "page-content" | "frame" | "frame-content" | "paragraph" | "paragraph-content" | "char" | "line" | "baseline" | "text" }? style-graphic-properties-attlist &= common-text-anchor-attlist style-graphic-properties-attlist &= common-border-attlist style-graphic-properties-attlist &= common-border-line-width-attlist style-graphic-properties-attlist &= common-padding-attlist style-graphic-properties-attlist &= common-shadow-attlist style-graphic-properties-attlist &= common-background-color-attlist style-graphic-properties-elements &= style-background-image style-graphic-properties-elements &= style-columns style-graphic-properties-attlist &= attribute style:editable { boolean }? style-graphic-properties-attlist &= attribute style:wrap { "none" | "left" | "right" | "parallel" | "dynamic" | "run-through" | "biggest" }? style-graphic-properties-attlist &= attribute style:wrap-dynamic-threshold { nonNegativeLength }? style-graphic-properties-attlist &= attribute style:number-wrapped-paragraphs { "no-limit" | positiveInteger }? style-graphic-properties-attlist &= attribute style:wrap-contour { boolean }? style-graphic-properties-attlist &= attribute style:wrap-contour-mode { "full" | "outside" }? style-graphic-properties-attlist &= attribute style:run-through { "foreground" | "background" }? style-graphic-properties-attlist &= attribute style:flow-with-text { boolean }? style-graphic-properties-attlist &= attribute style:overflow-behavior { "clip" | "auto-create-new-frame" }? style-graphic-properties-attlist &= attribute style:mirror { "none" | "vertical" | horizontal-mirror | list { "vertical", horizontal-mirror } | list { horizontal-mirror, "vertical" } }? horizontal-mirror = "horizontal" | "horizontal-on-odd" | "horizontal-on-even" style-graphic-properties-attlist &= attribute fo:clip { # The attribute value must match the one XSL's clip \string }? style-graphic-properties-attlist &= [ a:defaultValue = "iterative" ] attribute draw:wrap-influence-on-position { "iterative" | "once-concurrent" | "once-successive" }? style-graphic-properties-attlist &= common-writing-mode-attlist style-graphic-properties-attlist &= attribute draw:frame-display-scrollbar { boolean }? style-graphic-properties-attlist &= attribute draw:frame-display-border { boolean }? style-graphic-properties-attlist &= attribute draw:frame-margin-horizontal { nonNegativePixelLength }?, attribute draw:frame-margin-vertical { nonNegativePixelLength }? nonNegativePixelLength = xsd:string { pattern = "([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)" } style-graphic-properties-attlist &= attribute draw:visible-area-left { nonNegativeLength }?, attribute draw:visible-area-top { nonNegativeLength }?, attribute draw:visible-area-width { positiveLength }?, attribute draw:visible-area-height { positiveLength }? style-graphic-properties-attlist &= attribute draw:ole-draw-aspect { nonNegativeInteger }? style-chart-properties = element style:chart-properties { style-chart-properties-content } style-chart-properties-content = style-properties-content style-chart-properties-content-strict = style-chart-properties-attlist, style-chart-properties-elements style-chart-properties-elements = empty style-chart-properties-attlist &= [ a:defaultValue = "true" ] attribute chart:scale-text { boolean }? style-chart-properties-attlist &= attribute chart:three-dimensional { boolean }? style-chart-properties-attlist &= attribute chart:deep { boolean }? style-chart-properties-attlist &= attribute chart:symbol-type { "none" } | attribute chart:symbol-type { "automatic" } | (attribute chart:symbol-type { "named-symbol" }, attribute chart:symbol-name { "square" | "diamond" | "arrow-down" | "arrow-up" | "arrow-right" | "arrow-left" | "bow-tie" | "hourglass" | "circle" | "star" | "x" | "plus" | "asterisk" | "horizontal-bar" | "vertical-bar" }) | (attribute chart:symbol-type { "image" }, element chart:symbol-image { attribute xlink:href { anyURI } }) | empty style-chart-properties-attlist &= attribute chart:symbol-width { nonNegativeLength }?, attribute chart:symbol-height { nonNegativeLength }? style-chart-properties-attlist &= [ a:defaultValue = "false" ] attribute chart:vertical { boolean }? style-chart-properties-attlist &= [ a:defaultValue = "false" ] attribute chart:connect-bars { boolean }? style-chart-properties-attlist &= attribute chart:gap-width { integer }?, attribute chart:overlap { integer }? style-chart-properties-attlist &= [ a:defaultValue = "false" ] attribute chart:japanese-candle-stick { boolean }? style-chart-properties-attlist &= [ a:defaultValue = "none" ] attribute chart:interpolation { "none" | "cubic-spline" | "b-spline" }?, [ a:defaultValue = "2" ] attribute chart:spline-order { positiveInteger }?, [ a:defaultValue = "20" ] attribute chart:spline-resolution { positiveInteger }? style-chart-properties-attlist &= [ a:defaultValue = "0" ] attribute chart:pie-offset { nonNegativeInteger }? style-chart-properties-attlist &= [ a:defaultValue = "false" ] attribute chart:lines { boolean }? style-chart-properties-attlist &= [ a:defaultValue = "cuboid" ] attribute chart:solid-type { "cuboid" | "cylinder" | "cone" | "pyramid" }? style-chart-properties-attlist &= [ a:defaultValue = "false" ] attribute chart:stacked { boolean }?, [ a:defaultValue = "false" ] attribute chart:percentage { boolean }? style-chart-properties-attlist &= attribute chart:link-data-style-to-source { boolean }? style-chart-properties-attlist &= attribute chart:visible { boolean }? style-chart-properties-attlist &= attribute chart:logarithmic { boolean }? style-chart-properties-attlist &= attribute chart:maximum { double }?, attribute chart:minimum { double }?, attribute chart:origin { double }?, attribute chart:interval-major { double }?, attribute chart:interval-minor-divisor { positiveInteger }? style-chart-properties-attlist &= attribute chart:tick-marks-major-inner { boolean }?, attribute chart:tick-marks-major-outer { boolean }?, attribute chart:tick-marks-minor-inner { boolean }?, attribute chart:tick-marks-minor-outer { boolean }? style-chart-properties-attlist &= attribute chart:display-label { boolean }?, attribute chart:text-overlap { boolean }?, attribute text:line-break { boolean }?, [ a:defaultValue = "side-by-side" ] attribute chart:label-arrangement { "side-by-side" | "stagger-even" | "stagger-odd" }? style-chart-properties-attlist &= common-style-direction-attlist style-chart-properties-attlist &= common-rotation-angle-attlist style-chart-properties-attlist &= attribute chart:data-label-number { "none" | "value" | "percentage" }? style-chart-properties-attlist &= attribute chart:data-label-text { boolean }? style-chart-properties-attlist &= attribute chart:data-label-symbol { boolean }? style-chart-properties-attlist &= attribute chart:mean-value { boolean }? style-chart-properties-attlist &= [ a:defaultValue = "none" ] attribute chart:error-category { "none" | "variance" | "standard-deviation" | "percentage" | "error-margin" | "constant" }? style-chart-properties-attlist &= attribute chart:error-percentage { double }? style-chart-properties-attlist &= attribute chart:error-margin { double }? style-chart-properties-attlist &= attribute chart:error-lower-limit { double }?, attribute chart:error-upper-limit { double }? style-chart-properties-attlist &= attribute chart:error-upper-indicator { boolean }?, attribute chart:error-lower-indicator { boolean }? style-chart-properties-attlist &= [ a:defaultValue = "columns" ] attribute chart:series-source { "columns" | "rows" }? style-chart-properties-attlist &= [ a:defaultValue = "none" ] attribute chart:regression-type { "none" | "linear" | "logarithmic" | "exponential" | "power" }? style-drawing-page-properties-attlist &= attribute presentation:transition-type { "manual" | "automatic" | "semi-automatic" }? style-drawing-page-properties-attlist &= attribute presentation:transition-style { "none" | "fade-from-left" | "fade-from-top" | "fade-from-right" | "fade-from-bottom" | "fade-from-upperleft" | "fade-from-upperright" | "fade-from-lowerleft" | "fade-from-lowerright" | "move-from-left" | "move-from-top" | "move-from-right" | "move-from-bottom" | "move-from-upperleft" | "move-from-upperright" | "move-from-lowerleft" | "move-from-lowerright" | "uncover-to-left" | "uncover-to-top" | "uncover-to-right" | "uncover-to-bottom" | "uncover-to-upperleft" | "uncover-to-upperright" | "uncover-to-lowerleft" | "uncover-to-lowerright" | "fade-to-center" | "fade-from-center" | "vertical-stripes" | "horizontal-stripes" | "clockwise" | "counterclockwise" | "open-vertical" | "open-horizontal" | "close-vertical" | "close-horizontal" | "wavyline-from-left" | "wavyline-from-top" | "wavyline-from-right" | "wavyline-from-bottom" | "spiralin-left" | "spiralin-right" | "spiralout-left" | "spiralout-right" | "roll-from-top" | "roll-from-left" | "roll-from-right" | "roll-from-bottom" | "stretch-from-left" | "stretch-from-top" | "stretch-from-right" | "stretch-from-bottom" | "vertical-lines" | "horizontal-lines" | "dissolve" | "random" | "vertical-checkerboard" | "horizontal-checkerboard" | "interlocking-horizontal-left" | "interlocking-horizontal-right" | "interlocking-vertical-top" | "interlocking-vertical-bottom" | "fly-away" | "open" | "close" | "melt" }? style-drawing-page-properties-attlist &= attribute presentation:transition-speed { presentationSpeeds }? style-drawing-page-properties-attlist &= attribute smil:type { \string }? style-drawing-page-properties-attlist &= attribute smil:subtype { \string }? style-drawing-page-properties-attlist &= [ a:defaultValue = "forward" ] attribute smil:direction { "forward" | "reverse" }? style-drawing-page-properties-attlist &= attribute smil:fadeColor { color }? style-drawing-page-properties-attlist &= attribute presentation:duration { duration }? style-drawing-page-properties-attlist &= attribute presentation:visibility { "visible" | "hidden" }? style-drawing-page-properties-elements &= presentation-sound? style-drawing-page-properties-attlist &= attribute draw:background-size { "full" | "border" }? style-drawing-page-properties-attlist &= attribute presentation:background-objects-visible { boolean }? style-drawing-page-properties-attlist &= attribute presentation:background-visible { boolean }? style-drawing-page-properties-attlist &= attribute presentation:display-header { boolean }? style-drawing-page-properties-attlist &= attribute presentation:display-footer { boolean }? style-drawing-page-properties-attlist &= attribute presentation:display-page-number { boolean }? style-drawing-page-properties-attlist &= attribute presentation:display-date-time { boolean }? \string = xsd:string date = xsd:date time = xsd:time dateTime = xsd:dateTime duration = xsd:duration integer = xsd:integer nonNegativeInteger = xsd:nonNegativeInteger positiveInteger = xsd:positiveInteger double = xsd:double anyURI = xsd:anyURI base64Binary = xsd:base64Binary ID = xsd:ID IDREF = xsd:IDREF IDREFS = xsd:IDREFS boolean = "true" | "false" dateOrDateTime = xsd:date | xsd:dateTime timeOrDateTime = xsd:time | xsd:dateTime language = xsd:language countryCode = xsd:token { pattern = "[A-Za-z0-9]{1,8}" } languageCode = xsd:token { pattern = "[A-Za-z]{1,8}" } character = xsd:string { length = "1" } length = xsd:string { pattern = "-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))" } nonNegativeLength = xsd:string { pattern = "([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))" } positiveLength = xsd:string { pattern = "([0-9]*[1-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px))" } percent = xsd:string { pattern = "-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%" } relativeLength = xsd:string { pattern = "[0-9]+\*" } coordinate = length distance = length color = xsd:string { pattern = "#[0-9a-fA-F]{6}" } styleName = xsd:NCName styleNameRef = xsd:NCName | empty styleNameRefs = list { xsd:NCName* } variableName = xsd:string formula = # A formula should start with a namespace prefix, # but has no restrictions xsd:string targetFrameName = "_self" | "_blank" | "_parent" | "_top" | \string valueType = "float" | "time" | "date" | "percentage" | "currency" | "boolean" | "string" points = xsd:string { pattern = "-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*" } pathData = xsd:string vector3D = xsd:string { pattern = "\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)" } namespacedToken = xsd:string { pattern = "[0-9a-zA-Z_]+:[0-9a-zA-Z._\-]+" } anyAttListOrElements = attribute * { text }*, anyElements anyElements = element * { mixed { anyAttListOrElements } }*