diff --git a/etc/schema/OpenDocument-schema-v1.3+libreoffice.rnc b/etc/schema/OpenDocument-schema-v1.3+libreoffice.rnc new file mode 100644 index 00000000000..5239c84cb50 --- /dev/null +++ b/etc/schema/OpenDocument-schema-v1.3+libreoffice.rnc @@ -0,0 +1,892 @@ +# Open Document Format for Office Applications (OpenDocument) Version 1.3 +# OASIS Standard, In progress +# Relax-NG Schema +# Source: https://tools.oasis-open.org/version-control/svn/office/ +# Copyright (c) OASIS Open 2002-2015. All Rights Reserved. +# +# All capitalized terms in the following text have the meanings assigned to them +# in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The +# full Policy may be found at the OASIS website. +# +# This document and translations of it may be copied and furnished to others, and +# derivative works that comment on or otherwise explain it or assist in its +# implementation may be prepared, copied, published, and distributed, in whole or +# in part, without restriction of any kind, provided that the above copyright +# notice and this section are included on all such copies and derivative works. +# However, this document itself may not be modified in any way, including by +# removing the copyright notice or references to OASIS, except as needed for the +# purpose of developing any document or deliverable produced by an OASIS +# Technical Committee (in which case the rules applicable to copyrights, as set +# forth in the OASIS IPR Policy, must be followed) or as required to translate it +# into languages other than English. +# +# The limited permissions granted above are perpetual and will not be revoked by +# OASIS or its successors or assigns. +# +# This document and the information contained herein is provided on an "AS IS" +# basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT +# LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT +# INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR +# FITNESS FOR A PARTICULAR PURPOSE. + +namespace anim = "urn:oasis:names:tc:opendocument:xmlns:animation:1.0" +namespace calcext = + "urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" +namespace chart = "urn:oasis:names:tc:opendocument:xmlns:chart:1.0" +namespace chartooo = "http://openoffice.org/2010/chart" +namespace config = "urn:oasis:names:tc:opendocument:xmlns:config:1.0" +namespace css3t = "http://www.w3.org/TR/css3-text/" +namespace db = "urn:oasis:names:tc:opendocument:xmlns:database: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 drawooo = "http://openoffice.org/2010/draw" +namespace field = + "urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field: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 grddl = "http://www.w3.org/2003/g/data-view#" +namespace loext = + "urn:org:documentfoundation:names:experimental:office:xmlns:loext: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 officeooo = "http://openoffice.org/2009/office" +namespace presentation = + "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" +namespace rng = "http://relaxng.org/ns/structure/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 tableooo = "http://openoffice.org/2009/table" +namespace text = "urn:oasis:names:tc:opendocument:xmlns:text:1.0" +namespace xforms = "http://www.w3.org/2002/xforms" +namespace xhtml = "http://www.w3.org/1999/xhtml" +namespace xlink = "http://www.w3.org/1999/xlink" + +include "OpenDocument-schema-v1.3.rnc" { + office-document-common-attrs = + attribute office:version { + # FIXME remove this hack once we write 1.3 + "1.3" | "1.2" + } + & attribute grddl:transformation { + list { anyIRI* } + }? + style-graphic-properties-attlist = + attribute draw:stroke { "none" | "dash" | "solid" }? + & attribute draw:stroke-dash { styleNameRef }? + & attribute draw:stroke-dash-names { styleNameRefs }? + & attribute svg:stroke-width { length }? + & attribute svg:stroke-color { color }? + & attribute draw:marker-start { styleNameRef }? + & attribute draw:marker-end { styleNameRef }? + & attribute draw:marker-start-width { length }? + & attribute draw:marker-end-width { length }? + & attribute draw:marker-start-center { boolean }? + & attribute draw:marker-end-center { boolean }? + & attribute svg:stroke-opacity { + xsd:double { minInclusive = "0" maxInclusive = "1" } + | zeroToHundredPercent + }? + & attribute draw:stroke-linejoin { + "miter" | "round" | "bevel" | "middle" | "none" + }? + & attribute svg:stroke-linecap { "butt" | "square" | "round" }? + & attribute draw:symbol-color { color }? + & attribute text:animation { + "none" | "scroll" | "alternate" | "slide" + }? + & attribute text:animation-direction { + "left" | "right" | "up" | "down" + }? + & attribute text:animation-start-inside { boolean }? + & attribute text:animation-stop-inside { boolean }? + & attribute text:animation-repeat { nonNegativeInteger }? + & attribute text:animation-delay { duration }? + & attribute text:animation-steps { length }? + & attribute draw:auto-grow-width { boolean }? + & attribute draw:auto-grow-height { boolean }? + & # FIXME remove this once the export bug is fixed + attribute draw:fit-to-size { + "true" | "false" | "all" | "shrink-to-fit" + }? + & attribute draw:fit-to-contour { boolean }? + & attribute draw:textarea-vertical-align { + "top" | "middle" | "bottom" | "justify" + }? + & attribute draw:textarea-horizontal-align { + "left" | "center" | "right" | "justify" + }? + & attribute fo:wrap-option { "no-wrap" | "wrap" }? + & attribute style:shrink-to-fit { boolean }? + & attribute draw:color-mode { + "greyscale" | "mono" | "watermark" | "standard" + }? + & attribute draw:color-inversion { boolean }? + & attribute draw:luminance { signedZeroToHundredPercent } + # https://issues.oasis-open.org/browse/OFFICE-3821 + ? + & attribute draw:contrast { percent }? + & attribute draw:gamma { percent }? + & attribute draw:red { signedZeroToHundredPercent }? + & attribute draw:green { signedZeroToHundredPercent }? + & attribute draw:blue { signedZeroToHundredPercent }? + & attribute draw:image-opacity { zeroToHundredPercent }? + & attribute draw:shadow { "visible" | "hidden" }? + & attribute draw:shadow-offset-x { length }? + & attribute draw:shadow-offset-y { length }? + & attribute draw:shadow-color { color }? + & attribute draw:shadow-opacity { zeroToHundredPercent }? + & # TODO: no proposal for loext:shadow-blur + attribute loext:shadow-blur { length }? + & attribute draw:start-line-spacing-horizontal { distance }? + & attribute draw:start-line-spacing-vertical { distance }? + & attribute draw:end-line-spacing-horizontal { distance }? + & attribute draw:end-line-spacing-vertical { distance }? + & attribute draw:line-distance { distance }? + & attribute draw:guide-overhang { length }? + & attribute draw:guide-distance { distance }? + & attribute draw:start-guide { length }? + & attribute draw:end-guide { length }? + & attribute draw:placing { "below" | "above" }? + & attribute draw:parallel { boolean }? + & attribute draw:measure-align { + "automatic" | "left-outside" | "inside" | "right-outside" + }? + & attribute draw:measure-vertical-align { + "automatic" | "above" | "below" | "center" + }? + & attribute draw:unit { + "automatic" + | "mm" + | "cm" + | "m" + | "km" + | "pt" + | "pc" + | "inch" + | "ft" + | "mi" + }? + & attribute draw:show-unit { boolean }? + & attribute draw:decimal-places { nonNegativeInteger }? + & attribute draw:caption-type { + "straight-line" | "angled-line" | "angled-connector-line" + }? + & attribute draw:caption-angle-type { "fixed" | "free" }? + & attribute draw:caption-angle { angle }? + & attribute draw:caption-gap { distance }? + & attribute draw:caption-escape-direction { + "horizontal" | "vertical" | "auto" + }? + & attribute draw:caption-escape { length | percent }? + & attribute draw:caption-line-length { length }? + & attribute draw:caption-fit-line-length { boolean }? + & attribute dr3d:horizontal-segments { nonNegativeInteger }? + & attribute dr3d:vertical-segments { nonNegativeInteger }? + & attribute dr3d:edge-rounding { percent }? + & attribute dr3d:edge-rounding-mode { "correct" | "attractive" }? + & attribute dr3d:back-scale { percent }? + & attribute dr3d:depth { length }? + & attribute dr3d:backface-culling { "enabled" | "disabled" }? + & attribute dr3d:end-angle { angle }? + & attribute dr3d:close-front { boolean }? + & attribute dr3d:close-back { boolean }? + & attribute dr3d:lighting-mode { "standard" | "double-sided" }? + & attribute dr3d:normals-kind { "object" | "flat" | "sphere" }? + & attribute dr3d:normals-direction { "normal" | "inverse" }? + & attribute dr3d:texture-generation-mode-x { + "object" | "parallel" | "sphere" + }? + & attribute dr3d:texture-generation-mode-y { + "object" | "parallel" | "sphere" + }? + & attribute dr3d:texture-kind { + "luminance" | "intensity" | "color" + }? + & attribute dr3d:texture-filter { "enabled" | "disabled" }? + & attribute dr3d:texture-mode { "replace" | "modulate" | "blend" }? + & attribute dr3d:ambient-color { color }? + & attribute dr3d:emissive-color { color }? + & attribute dr3d:specular-color { color }? + & attribute dr3d:diffuse-color { color }? + & attribute dr3d:shininess { percent }? + & attribute dr3d:shadow { "visible" | "hidden" }? + & common-draw-rel-size-attlist + & attribute fo:min-width { length | percent }? + & attribute fo:min-height { length | percent }? + & attribute fo:max-height { length | percent }? + & attribute fo:max-width { length | percent }? + & common-horizontal-margin-attlist + & common-vertical-margin-attlist + & common-margin-attlist + & attribute style:print-content { boolean }? + & attribute style:protect { + "none" + | list { ("content" | "position" | "size")+ } + }? + & attribute style:horizontal-pos { + "left" + | "center" + | "right" + | "from-left" + | "inside" + | "outside" + | "from-inside" + }? + & attribute svg:x { coordinate }? + & 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" + }? + & common-vertical-pos-attlist + & common-vertical-rel-attlist + & common-text-anchor-attlist + & common-border-attlist + & common-border-line-width-attlist + & common-padding-attlist + & common-shadow-attlist + & common-background-color-attlist + & common-background-transparency-attlist + & common-editable-attlist + & attribute style:wrap { + "none" + | "left" + | "right" + | "parallel" + | "dynamic" + | "run-through" + | "biggest" + }? + & attribute style:wrap-dynamic-threshold { nonNegativeLength }? + & attribute style:number-wrapped-paragraphs { + "no-limit" | positiveInteger + }? + & attribute style:wrap-contour { boolean }? + & attribute style:wrap-contour-mode { "full" | "outside" }? + & attribute style:run-through { "foreground" | "background" }? + & attribute style:flow-with-text { boolean }? + & attribute style:overflow-behavior { + "clip" | "auto-create-new-frame" + }? + & attribute style:mirror { + "none" + | "vertical" + | horizontal-mirror + | list { "vertical", horizontal-mirror } + | list { horizontal-mirror, "vertical" } + }? + & attribute fo:clip { "auto" | clipShape }? + & attribute draw:wrap-influence-on-position { + "iterative" | "once-concurrent" | "once-successive" + }? + & common-writing-mode-attlist + & attribute draw:frame-display-scrollbar { boolean }? + & attribute draw:frame-display-border { boolean }? + & attribute draw:frame-margin-horizontal { nonNegativePixelLength }? + & attribute draw:frame-margin-vertical { nonNegativePixelLength }? + & attribute draw:visible-area-left { nonNegativeLength }? + & attribute draw:visible-area-top { nonNegativeLength }? + & attribute draw:visible-area-width { positiveLength }? + & attribute draw:visible-area-height { positiveLength }? + & attribute draw:draw-aspect { + "content" | "thumbnail" | "icon" | "print-view" + }? + & attribute draw:ole-draw-aspect { nonNegativeInteger }? + & # https://issues.oasis-open.org/browse/OFFICE-4047 + attribute loext:allow-overlap { boolean }? + & # TODO: no proposal for loext:glow* + attribute loext:glow-radius { length }? + & attribute loext:glow-color { color }? + & attribute loext:glow-transparency { zeroToHundredPercent }? + & # TODO: no proposal for loext:softedge-radius + attribute loext:softedge-radius { length }? + draw-text = + (text-p + | text-list + | # https://issues.oasis-open.org/browse/OFFICE-3761 + loext-table)* + office-annotation-attlist &= + attribute office:display { boolean }? + & common-office-annotation-name-attlist? + & attribute loext:resolved { boolean }? + style-style-content = + (attribute style:family { "text" }, + style-text-properties?) + | (attribute style:family { "paragraph" }, + # TODO no proposal + loext-graphic-properties?, + style-paragraph-properties?, + style-text-properties?) + | (attribute style:family { "section" }, + style-section-properties?) + | (attribute style:family { "ruby" }, + style-ruby-properties?) + | (attribute style:family { "table" }, + style-table-properties?) + | (attribute style:family { "table-column" }, + style-table-column-properties?) + | (attribute style:family { "table-row" }, + style-table-row-properties?) + | (attribute style:family { "table-cell" }, + # TODO no proposal + loext-graphic-properties?, + style-table-cell-properties?, + style-paragraph-properties?, + style-text-properties?) + | (attribute style:family { "graphic" | "presentation" }, + style-graphic-properties?, + style-paragraph-properties?, + style-text-properties?) + | (attribute style:family { "drawing-page" }, + style-drawing-page-properties?) + | (attribute style:family { "chart" }, + style-chart-properties?, + style-graphic-properties?, + style-paragraph-properties?, + style-text-properties?) + 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-background?, + # TODO no proposal + table-first-row-even-column?, + table-last-row-even-column?, + table-first-row-end-column?, + table-first-row-start-column?, + table-last-row-end-column?, + table-last-row-start-column? + } + 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 + | table-table)*, + office-event-listeners?, + draw-glue-point*, + draw-image-map?, + svg-title?, + svg-desc?, + (draw-contour-polygon | draw-contour-path)?, + # TODO no proposal + loext-signatureline?, + loext-qrcode? + } + common-value-and-type-attlist = + (attribute office:value-type { "float" }, + attribute calcext:value-type { "float" }?, + attribute office:value { double }) + | (attribute office:value-type { "percentage" }, + attribute calcext:value-type { "percentage" }?, + attribute office:value { double }) + | (attribute office:value-type { "currency" }, + attribute calcext:value-type { "currency" }?, + attribute office:value { double }, + attribute office:currency { \string }?) + | (attribute office:value-type { "date" }, + attribute calcext:value-type { "date" }?, + attribute office:date-value { dateOrDateTime }) + | (attribute office:value-type { "time" }, + attribute calcext:value-type { "time" }?, + attribute office:time-value { duration }) + | (attribute office:value-type { "boolean" }, + attribute calcext:value-type { "boolean" }?, + attribute office:boolean-value { boolean }) + | (attribute office:value-type { "string" }, + # OFFICE-3759 + attribute calcext:value-type { "string" | "error" }?, + attribute office:string-value { \string }?) + chart-axis = + element chart:axis { + chart-axis-attlist, + # OFFICE-2119 + ((attribute chartooo:axis-type { "auto" }, + chartooo-date-scale?) + | (attribute chartooo:axis-type { "date" }, + chartooo-date-scale) + | attribute chartooo:axis-type { "text" })?, + chart-title?, + chart-categories?, + chart-grid* + } + table-table = + element table:table { + table-table-attlist, + table-title?, + table-desc?, + # TODO add to proposal, OFFICE-2112 + table-table-protection?, + table-table-source?, + office-dde-source?, + table-scenario?, + office-forms?, + table-shapes?, + table-columns-and-groups, + table-rows-and-groups, + table-named-expressions?, + # TODO no proposal, this is wild guessing, OFFICE-3785 + element calcext:conditional-formats { + element calcext:conditional-format { + attribute calcext:target-range-address { cellRangeAddress }, + (element calcext:condition { + attribute calcext:apply-style-name { styleNameRef }, + attribute calcext:value { \string }, + attribute calcext:base-cell-address { cellAddress } + }+ + | element calcext:data-bar { + attribute calcext:max-length { \string }, + attribute calcext:negative-color { color }, + attribute calcext:positive-color { color }, + attribute calcext:axis-color { color }, + attribute calcext:axis-position { "middle" }?, + element calcext:formatting-entry { + attribute calcext:value { \string }, + attribute calcext:type { + "auto-minimum" + | "auto-maximum" + | "minimum" + | "maximum" + | "percent" + | "percentile" + | "number" + | "formula" + } + }, + element calcext:formatting-entry { + attribute calcext:value { \string }, + attribute calcext:type { + "auto-minimum" + | "auto-maximum" + | "minimum" + | "maximum" + | "percent" + | "percentile" + | "number" + | "formula" + } + } + } + | element calcext:color-scale { + element calcext:color-scale-entry { + attribute calcext:value { \string }, + attribute calcext:type { + "minimum" + | "maximum" + | "percent" + | "percentile" + | "number" + | "formula" + }, + attribute calcext:color { color } + }, + element calcext:color-scale-entry { + attribute calcext:value { \string }, + attribute calcext:type { + "minimum" + | "maximum" + | "percent" + | "percentile" + | "number" + | "formula" + }, + attribute calcext:color { color } + }, + element calcext:color-scale-entry { + attribute calcext:value { \string }, + attribute calcext:type { + "minimum" + | "maximum" + | "percent" + | "percentile" + | "number" + | "formula" + }, + attribute calcext:color { color } + }? + }) + }+ + }? + } + # TODO no proposal + draw-object = + element draw:object { + draw-object-attlist, + loext-text, + (common-draw-data-attlist | office-document | math-math) + } + draw-object-ole = + element draw:object-ole { + draw-object-ole-attlist, + loext-text, + (common-draw-data-attlist | office-binary-data) + } + # FIXME: one test exports 250 here, which is probably a bug + fontWeight = + "normal" + | "bold" + | "100" + | "200" + | "250" + | "300" + | "400" + | "500" + | "600" + | "700" + | "800" + | "900" +} +# TODO no proposal +loext-p = + element loext:p { paragraph-attrs, paragraph-content-or-hyperlink* } +loext-text = (loext-p | text-list | loext-table)* +# OFFICE-2119 +chartooo-date-scale = + element chartooo:date-scale { + attribute chart:base-time-unit { chart-time-unit }? + & (attribute chart:major-interval-value { positiveInteger }, + attribute chart:major-interval-unit { chart-time-unit })? + & (attribute chart:minor-interval-value { positiveInteger }, + attribute chart:minor-interval-unit { chart-time-unit })? + } +chart-time-unit = "days" | "months" | "years" +# TODO no proposal +loext-signatureline = + element loext:signatureline { + attribute loext:id { \string }, + attribute loext:suggested-signer-name { \string }, + attribute loext:suggested-signer-title { \string }, + attribute loext:suggested-signer-email { \string }, + attribute loext:signing-instructions { \string }, + attribute loext:show-sign-date { boolean }, + attribute loext:can-add-comment { boolean } + } +loext-qrcode = + element loext:qrcode { + attribute office:string-value { \string }, + attribute loext:qrcode-errorcorrection { + "low" | "medium" | "quartile" | "high" + }, + attribute loext:qrcode-border { nonNegativeInteger } + } +# https://issues.oasis-open.org/browse/OFFICE-3761 +loext-table = + element loext:table { + table-table-attlist, + table-title?, + table-desc?, + table-table-source?, + office-dde-source?, + table-scenario?, + office-forms?, + table-shapes?, + loext-columns-and-groups, + loext-rows-and-groups, + table-named-expressions? + } +loext-rows-and-groups = (table-table-row-group | loext-rows-no-group)+ +loext-rows-no-group = + (loext-rows, (table-table-header-rows, loext-rows?)?) + | (table-table-header-rows, loext-rows?) +loext-rows = + table-table-rows | (text-soft-page-break?, loext-table-row)+ +loext-table-row = + element loext:table-row { + table-table-row-attlist, + (loext-table-cell | loext-covered-table-cell)+ + } +loext-table-cell = + element loext:table-cell { + table-table-cell-attlist, + table-table-cell-attlist-extra, + table-table-cell-content + } +loext-covered-table-cell = + element loext:covered-table-cell { + table-table-cell-attlist, table-table-cell-content + } +loext-columns-and-groups = + (table-table-column-group | loext-columns-no-group)+ +loext-columns-no-group = + (loext-columns, (table-table-header-columns, loext-columns?)?) + | (table-table-header-columns, loext-columns?) +loext-columns = loext-table-columns | loext-table-column+ +loext-table-columns = + element loext:table-columns { loext-table-column+ } +loext-table-column = + element loext:table-column { table-table-column-attlist, empty } +loext-graphic-properties = + element loext:graphic-properties { + style-graphic-properties-content-strict + } +table-first-row-even-column = + element loext:first-row-even-column { + common-table-template-attlist, empty + } +table-last-row-even-column = + element loext:last-row-even-column { + common-table-template-attlist, empty + } +table-first-row-end-column = + element loext:first-row-end-column { + common-table-template-attlist, empty + } +table-first-row-start-column = + element loext:first-row-start-column { + common-table-template-attlist, empty + } +table-last-row-end-column = + element loext:last-row-end-column { + common-table-template-attlist, empty + } +table-last-row-start-column = + element loext:last-row-start-column { + common-table-template-attlist, empty + } +common-draw-rel-size-attlist &= + # OFFICE-3854 + attribute loext:rel-width-rel { + "page" + | [ + # TODO layout-environment ? + + ] + "paragraph" + }?, + attribute loext:rel-height-rel { "page" | "paragraph" }? +common-svg-font-face-xlink-attlist &= + # TODO no proposal + attribute loext:font-style { fontStyle }?, + attribute loext:font-weight { fontWeight }? +# TODO no proposal + +# there's no ref-attrs so add it here +text-common-ref-content &= + attribute loext:reference-language { language }? +style-list-level-label-alignment-attlist &= + # TODO no proposal + attribute loext:label-followed-by { + "listtab" | "space" | "nothing" | "newline" + }? +style-ruby-properties-attlist &= + # TODO proposal, OFFICE-3944 + attribute loext:ruby-position { + "above" | "below" | "inter-character" + }? +style-text-properties-attlist &= + # TODO no proposal + attribute officeooo:rsid { \string }?, + attribute officeooo:paragraph-rsid { \string }?, + # https://issues.oasis-open.org/browse/OFFICE-4049 + attribute loext:opacity { zeroToHundredPercent }? +style-text-properties-attlist &= + # OFFICE-3843 + attribute loext:padding { nonNegativeLength }?, + attribute loext:padding-left { nonNegativeLength }?, + attribute loext:padding-right { nonNegativeLength }?, + attribute loext:padding-top { nonNegativeLength }?, + attribute loext:padding-bottom { nonNegativeLength }?, + attribute loext:border { \string }?, + attribute loext:border-left { \string }?, + attribute loext:border-right { \string }?, + attribute loext:border-top { \string }?, + attribute loext:border-bottom { \string }?, + attribute loext:shadow { shadowType }? +# TODO no proposal +style-chart-properties-attlist &= + attribute loext:try-staggering-first { boolean }? +# TODO no proposal +style-chart-properties-attlist &= + attribute loext:std-weight { \string }? +# TODO no proposal +chart-series-attlist &= attribute loext:label-string { \string }? +# OFFICE-1148 +style-chart-properties-attlist &= + attribute loext:regression-max-degree { positiveInteger }?, + attribute loext:regression-force-intercept { boolean }?, + attribute loext:regression-intercept-value { double }?, + attribute loext:regression-name { \string }?, + attribute loext:regression-period { \string }?, + attribute loext:regression-extrapolate-forward { \string }?, + attribute loext:regression-extrapolate-backward { \string }? +# TODO no proposal +table-data-pilot-field-attlist &= + attribute tableooo:display-name { \string }? +# TODO no proposal, 9009663d +chart-chart-attlist &= attribute loext:data-pilot-source { \string }? +# OFFICE-2112, TODO half of this missing in proposal +table-table-protection = + element loext:table-protection { + attribute loext:select-protected-cells { boolean }?, + attribute loext:select-unprotected-cells { boolean }?, + attribute loext:insert-columns { boolean }?, + attribute loext:insert-rows { boolean }?, + attribute loext:delete-columns { boolean }?, + attribute loext:delete-rows { boolean }? + } +office-spreadsheet-attlist &= + attribute loext:protection-key-digest-algorithm-2 { anyURI }? +table-table-attlist &= + attribute loext:protection-key-digest-algorithm-2 { anyURI }? +# https://issues.oasis-open.org/browse/OFFICE-2317 +vertJustifyValues = "auto" | "distribute" +common-text-justify = + attribute css3t:text-justify { vertJustifyValues }? +style-vertical-justify = + attribute loext:vertical-justify { vertJustifyValues }?, + attribute style:vertical-justify { vertJustifyValues }? +style-paragraph-properties-attlist &= + (common-text-justify, style-vertical-justify)? +style-table-cell-properties-attlist &= + (common-text-justify, style-vertical-justify)? +number-fraction-attlist &= + # OFFICE-3695 + + # TODO no proposal, 1544a26ac9f7dd60605dd21e9cbe29d490aafdce + attribute loext:max-numerator-digits { positiveInteger }? +# TODO no proposal +table-data-pilot-level-attlist &= + attribute calcext:repeat-item-labels { boolean }? +# TODO no proposal +draw-enhanced-geometry-attlist &= + attribute drawooo:sub-view-size { \string }?, + attribute drawooo:enhanced-path { \string }? +# TODO no proposal +draw-custom-shape-attlist &= common-draw-rel-size-attlist +# TODO no proposal +style-page-layout-properties-attlist &= + style-graphic-fill-properties-attlist +style-header-footer-properties-attlist &= + style-graphic-fill-properties-attlist +# TODO no proposal +text-index-entry-tab-stop-attrs &= attribute style:with-tab { boolean }? +# TODO no proposal +style-text-properties-attlist &= + attribute loext:char-shading-value { \string }? +# TODO no proposal +text-bookmark-start-attlist &= + (attribute loext:hidden { boolean }, + attribute loext:condition { \string }?)? +# TODO no proposal; see 7a5d79f2297a43d0a854e304b0792164272edfe0 + +# FIXME this is almost certainly incomplete: need to figure out which elements can have this and which named pattern can be extended with it to get exactly these elements +form-checkbox-attlist &= attribute form:input-required { boolean }? +# https://issues.oasis-open.org/browse/OFFICE-4030 +common-writing-mode-attlist &= attribute loext:writing-mode { "bt-lr" }? +# https://issues.oasis-open.org/browse/OFFICE-4073 +common-vertical-rel-attlist &= + attribute loext:vertical-rel { + "page-content-top" | "page-content-bottom" + }? +# https://issues.oasis-open.org/browse/OFFICE-4105 +style-page-layout-properties-attlist &= + attribute loext:margin-gutter { length }? +# just a test-case for user-defined attributes, move along, nothing to see here... +style-table-cell-properties-attlist &= attribute proName { \string }? +# TODO no proposal +chart-data-point-attlist &= + attribute loext:custom-label-field { \string }? +# TODO no proposal +style-text-properties-attlist &= + attribute loext:hyphenation-no-caps { boolean }? +# TODO no proposal +chart-data-point-attlist &= + (attribute loext:custom-label-pos-x { double }, + attribute loext:custom-label-pos-y { double })? +# TODO no proposal +chart-legend-attlist &= attribute loext:overlay { boolean }? +# https://issues.oasis-open.org/browse/OFFICE-3936 +style-chart-properties-attlist &= + attribute loext:major-origin { double }? +# TODO no proposal +text-index-entry-chapter-attrs &= + attribute loext:outline-content-visible { boolean }? +# https://issues.oasis-open.org/browse/OFFICE-2096 +paragraph-content |= + element field:fieldmark-start { + attribute text:name { \string }, + attribute field:type { + # TODO + \string + }, + element field:param { + attribute field:name { \string }, + attribute field:value { \string } + }* + } +paragraph-content |= element field:fieldmark-end { empty } +paragraph-content |= + element field:fieldmark { + attribute text:name { \string }, + attribute field:type { + # TODO + \string + }, + element field:param { + attribute field:name { \string }, + attribute field:value { \string } + }* + } +# TODO no proposal +animation-element |= + element loext:animatePhysics { + common-anim-target-attlist, + common-timing-attlist, + animate-physics-attlist + } +animate-physics-attlist = + # default value: 0 + attribute loext:velocity-x { double }?, + # default value: 0 + attribute loext:velocity-y { double }?, + # default value: 0.1 + attribute loext:bounciness { + xsd:double { minInclusive = "0" maxInclusive = "1" } + }?, + # default value: 1 + attribute loext:density { + xsd:double { minInclusive = "0" } + }? +# TODO no proposal +style-chart-properties-attlist &= + attribute loext:custom-leader-lines { boolean }? +# TODO no proposal +style-chart-properties-attlist &= + attribute loext:external-data { \string }? diff --git a/etc/schema/od-schema-v1.2-os.rnc b/etc/schema/OpenDocument-schema-v1.3.rnc similarity index 96% rename from etc/schema/od-schema-v1.2-os.rnc rename to etc/schema/OpenDocument-schema-v1.3.rnc index 8d679d62e4e..2a7867998f1 100644 --- a/etc/schema/od-schema-v1.2-os.rnc +++ b/etc/schema/OpenDocument-schema-v1.3.rnc @@ -1,33 +1,16 @@ -# Open Document Format for Office Applications (OpenDocument) Version 1.2 -# OASIS Standard, 29 September 2011 -# Relax-NG Schema -# Source: http://docs.oasis-open.org/office/v1.2/os/ -# Copyright (c) OASIS Open 2002-2011, 2013. All Rights Reserved. +# Open Document Format for Office Applications (OpenDocument) Version 1.3 +# Committee Specification 02 +# 30 October 2020 +# Copyright (c) OASIS Open 2020. All Rights Reserved. +# Source: https://docs.oasis-open.org/office/OpenDocument/v1.3/cs02/schemas/ +# Latest stage of specification: https://docs.oasis-open.org/office/OpenDocument/v1.3/OpenDocument-v1.3-part1-introduction.html +# TC IPR Statement: https://www.oasis-open.org/committees/office/ipr.php # -# All capitalized terms in the following text have the meanings assigned to them -# in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The -# full Policy may be found at the OASIS website. -# -# This document and translations of it may be copied and furnished to others, and -# derivative works that comment on or otherwise explain it or assist in its -# implementation may be prepared, copied, published, and distributed, in whole or -# in part, without restriction of any kind, provided that the above copyright -# notice and this section are included on all such copies and derivative works. -# However, this document itself may not be modified in any way, including by -# removing the copyright notice or references to OASIS, except as needed for the -# purpose of developing any document or deliverable produced by an OASIS -# Technical Committee (in which case the rules applicable to copyrights, as set -# forth in the OASIS IPR Policy, must be followed) or as required to translate it -# into languages other than English. -# -# The limited permissions granted above are perpetual and will not be revoked by -# OASIS or its successors or assigns. -# -# This document and the information contained herein is provided on an "AS IS" -# basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT -# LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT -# INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR -# FITNESS FOR A PARTICULAR PURPOSE. +# Open Document Format for Office Applications (OpenDocument) Version 1.3 +# Relax-NG Schema +# OpenDocument-v1.3-schema.rng + +# https://issues.oasis-open.org/browse/OFFICE-2153 namespace anim = "urn:oasis:names:tc:opendocument:xmlns:animation:1.0" namespace chart = "urn:oasis:names:tc:opendocument:xmlns:chart:1.0" @@ -46,6 +29,7 @@ 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 rng = "http://relaxng.org/ns/structure/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" @@ -58,58 +42,2667 @@ namespace xforms = "http://www.w3.org/2002/xforms" namespace xhtml = "http://www.w3.org/1999/xhtml" namespace xlink = "http://www.w3.org/1999/xlink" -office-process-content = 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 +CURIE = + xsd:string { pattern = "(([\i-[:]][\c-[:]]*)?:)?.+" minLength = "1" } +CURIEs = list { CURIE+ } +ID = xsd:ID +IDREF = xsd:IDREF +IDREFS = xsd:IDREFS +NCName = xsd:NCName +SafeCURIE = + xsd:string { + pattern = "\[(([\i-[:]][\c-[:]]*)?:)?.+\]" + minLength = "3" } -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 { "1.2" } - & attribute grddl:transformation { - list { anyIRI* } +URIorSafeCURIE = anyURI | SafeCURIE +angle = xsd:string +anim-animate-color-attlist = + attribute anim:color-interpolation { "rgb" | "hsl" }? + & attribute anim:color-interpolation-direction { + "clockwise" | "counter-clockwise" }? -office-document-attrs = attribute office:mimetype { \string } -office-meta = element office:meta { office-meta-content-strict }? -office-meta-content-strict = office-meta-data* +anim-animate-motion-attlist = + attribute svg:path { pathData }? + & attribute svg:origin { \string }? + & attribute smil:calcMode { + "discrete" | "linear" | "paced" | "spline" + }? +anim-animate-transform-attlist = + attribute svg:type { + "translate" | "scale" | "rotate" | "skewX" | "skewY" + } +anim-audio-attlist = + attribute xlink:href { anyIRI }? + & attribute anim:audio-level { double }? +anim-command-attlist = attribute anim:command { \string } +anim-iterate-attlist = + common-anim-target-attlist + & attribute anim:iterate-type { \string }? + & attribute anim:iterate-interval { duration }? +anim-transition-filter-attlist = + attribute smil:type { \string } + & attribute smil:subtype { \string }? + & attribute smil:direction { "forward" | "reverse" }? + & attribute smil:fadeColor { color }? + & attribute smil:mode { "in" | "out" }? +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 + } + | 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 + } + | 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 + } + | 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 + } + | 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 + } + | 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 + } + | element anim:par { + common-anim-attlist, + common-timing-attlist, + common-endsync-timing-attlist, + animation-element* + } + | element anim:seq { + common-anim-attlist, + common-endsync-timing-attlist, + common-timing-attlist, + animation-element* + } + | element anim:iterate { + common-anim-attlist, + anim-iterate-attlist, + common-timing-attlist, + common-endsync-timing-attlist, + animation-element* + } + | element anim:audio { + common-anim-attlist, + anim-audio-attlist, + common-basic-timing-attlist + } + | element anim:command { + common-anim-attlist, + anim-command-attlist, + common-begin-end-timing-attlist, + common-anim-target-attlist, + element anim:param { + attribute anim:name { \string }, + attribute anim:value { \string } + }* + } +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 +any-number = number-number | number-scientific-number | number-fraction +any-time = number-hours | number-am-pm | number-minutes | number-seconds +anyAttListOrElements = + attribute * { text }*, + anyElements +anyElements = + element * { + mixed { anyAttListOrElements } + }* +anyIRI = + xsd:anyURI + >> dc:description [ + "An IRI-reference as defined in [RFC3987]. See ODF 1.3 Part 3 section 18.3." + ] +anyURI = xsd:anyURI +base64Binary = xsd:base64Binary +boolean = "true" | "false" +borderWidths = list { positiveLength, positiveLength, positiveLength } +bound-column = attribute form:bound-column { \string }? +button-type = attribute form:button-type { types }? +cellAddress = + xsd:string { + pattern = "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+" + } +cellRangeAddress = + xsd:string { + pattern = + "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?" + } + | xsd:string { + pattern = + "($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+:($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+" + } + | xsd:string { + pattern = + "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+" + } +cellRangeAddressList = + xsd:string + >> dc:description [ + 'Value is a space separated list of "cellRangeAddress" patterns' + ] +change-mark-attr = attribute text:change-id { IDREF } +change-marks = + element text:change { change-mark-attr } + | element text:change-start { change-mark-attr } + | element text:change-end { change-mark-attr } +character = xsd:string { length = "1" } +chart-axis = + element chart:axis { + chart-axis-attlist, chart-title?, chart-categories?, chart-grid* + } +chart-axis-attlist = + attribute chart:dimension { chart-dimension } + & attribute chart:name { \string }? + & attribute chart:style-name { styleNameRef }? +chart-categories = + element chart:categories { + attribute table:cell-range-address { cellRangeAddressList }? + } +chart-chart = + element chart:chart { + chart-chart-attlist, + chart-title?, + chart-subtitle?, + chart-footer?, + chart-legend?, + chart-plot-area, + shape*, + # https://issues.oasis-open.org/browse/OFFICE-2123 + table-table? + } +chart-chart-attlist = + attribute chart:class { namespacedToken } + & common-draw-size-attlist + & attribute chart:column-mapping { \string }? + & attribute chart:row-mapping { \string }? + & attribute chart:style-name { styleNameRef }? + & (attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI })? + & xml-id? +chart-coordinate-region = + element chart:coordinate-region { + chart-coordinate-region-attlist, empty + } +chart-coordinate-region-attlist = + common-draw-position-attlist, common-draw-size-attlist +# https://issues.oasis-open.org/browse/OFFICE-3928 +chart-data-label = + element chart:data-label { chart-data-label-attlist, text-p? } +chart-data-label-attlist = + common-draw-position-attlist + & attribute chart:style-name { styleNameRef }? +chart-data-point = + element chart:data-point { + chart-data-point-attlist, chart-data-label? + } +chart-data-point-attlist = + attribute chart:repeated { positiveInteger }? + & attribute chart:style-name { styleNameRef }? + & xml-id? +chart-dimension = "x" | "y" | "z" +chart-domain = + element chart:domain { + attribute table:cell-range-address { cellRangeAddressList }? + } +chart-equation = + element chart:equation { chart-equation-attlist, text-p? } +chart-equation-attlist = + attribute chart:automatic-content { boolean }? + & attribute chart:display-r-square { boolean }? + & attribute chart:display-equation { boolean }? + & common-draw-position-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 }? + & attribute chart:dimension { chart-dimension } +chart-floor = element chart:floor { chart-floor-attlist, empty } +chart-floor-attlist = + attribute svg:width { length }? + & attribute chart:style-name { styleNameRef }? +chart-footer = element chart:footer { chart-title-attlist, text-p? } +chart-grid = element chart:grid { chart-grid-attlist } +chart-grid-attlist = + attribute chart:class { "major" | "minor" }? + & attribute chart:style-name { styleNameRef }? +chart-legend = element chart:legend { chart-legend-attlist, text-p? } +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) + & common-draw-position-attlist + & (attribute style:legend-expansion { "wide" | "high" | "balanced" } + | (attribute style:legend-expansion { "custom" }, + attribute style:legend-expansion-aspect-ratio { double }, + common-draw-size-attlist + # https://issues.oasis-open.org/browse/OFFICE-3883 + ) + | empty) + & 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-plot-area = + element chart:plot-area { + chart-plot-area-attlist, + # https://issues.oasis-open.org/browse/OFFICE-3928 + chart-coordinate-region?, + 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 + & attribute chart:style-name { styleNameRef }? + & attribute table:cell-range-address { cellRangeAddressList }? + & attribute chart:data-source-has-labels { + "none" | "row" | "column" | "both" + }? + & dr3d-scene-attlist + & common-dr3d-transform-attlist + & xml-id? +chart-regression-curve = + element chart:regression-curve { + chart-regression-curve-attlist, chart-equation? + } +chart-regression-curve-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-data-label? + } +chart-series-attlist = + attribute chart:values-cell-range-address { cellRangeAddressList }? + & attribute chart:label-cell-address { cellRangeAddressList }? + & attribute chart:class { namespacedToken }? + & attribute chart:attached-axis { \string }? + & attribute chart:style-name { styleNameRef }? + & xml-id? +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 } +chart-subtitle = element chart:subtitle { chart-title-attlist, text-p? } +chart-title = element chart:title { chart-title-attlist, text-p? } +chart-title-attlist = + attribute table:cell-range { cellRangeAddressList }? + & common-draw-position-attlist + & attribute chart:style-name { styleNameRef }? +chart-wall = element chart:wall { chart-wall-attlist, empty } +chart-wall-attlist = + attribute svg:width { length }? + & attribute chart:style-name { styleNameRef }? +clipShape = + xsd:string { + pattern = + "rect\([ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)))|(auto))([ ]*,[ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))))|(auto)){3}[ ]*\)" + } +color = xsd:string { pattern = "#[0-9a-fA-F]{6}" } +column-controls = + element form:text { form-text-attlist, common-form-control-content } + | element form:textarea { + form-textarea-attlist, common-form-control-content, text-p* + } + | element form:formatted-text { + form-formatted-text-attlist, common-form-control-content + } + | element form:number { + form-number-attlist, + common-numeric-control-attlist, + common-form-control-content, + common-linked-cell, + common-spin-button, + common-repeat, + common-delay-for-repeat + } + | element form:date { + form-date-attlist, + common-numeric-control-attlist, + common-form-control-content, + common-linked-cell, + common-spin-button, + common-repeat, + common-delay-for-repeat + } + | element form:time { + form-time-attlist, + common-numeric-control-attlist, + common-form-control-content, + common-linked-cell, + common-spin-button, + common-repeat, + common-delay-for-repeat + } + | element form:combobox { + form-combobox-attlist, common-form-control-content, form-item* + } + | element form:listbox { + form-listbox-attlist, common-form-control-content, form-option* + } + | element form:checkbox { + form-checkbox-attlist, common-form-control-content + } +common-anim-add-accum-attlist = + attribute smil:accumulate { "none" | "sum" }? + & attribute smil:additive { "replace" | "sum" }? +common-anim-attlist = + attribute presentation:node-type { + "default" + | "on-click" + | "with-previous" + | "after-previous" + | "timing-root" + | "main-sequence" + | "interactive-sequence" + }? + & attribute presentation:preset-id { \string }? + & attribute presentation:preset-sub-type { \string }? + & attribute presentation:preset-class { + "custom" + | "entrance" + | "exit" + | "emphasis" + | "motion-path" + | "ole-action" + | "media-call" + }? + & attribute presentation:master-element { IDREF }? + & attribute presentation:group-id { \string }? + & (xml-id, + attribute anim:id { NCName }?)? +common-anim-named-target-attlist = + attribute smil:attributeName { \string } +common-anim-set-values-attlist = attribute smil:to { \string }? +common-anim-spline-mode-attlist = + attribute smil:calcMode { + "discrete" | "linear" | "paced" | "spline" + }? +common-anim-target-attlist = + attribute smil:targetElement { IDREF }? + & attribute anim:sub-item { \string }? +common-anim-values-attlist = + attribute smil:values { \string }? + & attribute anim:formula { \string }? + & common-anim-set-values-attlist + & attribute smil:from { \string }? + & attribute smil:by { \string }? +common-auto-reorder-attlist = + attribute number:automatic-order { boolean }? +common-background-color-attlist = + attribute fo:background-color { "transparent" | color }? +common-background-transparency-attlist = + attribute style:background-transparency { zeroToHundredPercent }? +common-basic-timing-attlist = + common-begin-end-timing-attlist, + common-dur-timing-attlist, + common-repeat-timing-attlist, + common-restart-timing-attlist, + common-restart-default-attlist, + common-fill-timing-attlist, + common-fill-default-attlist +common-begin-end-timing-attlist = + attribute smil:begin { \string }? + & attribute smil:end { \string }? +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 }? +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 }? +common-break-attlist = + attribute fo:break-before { "auto" | "column" | "page" }?, + attribute fo:break-after { "auto" | "column" | "page" }? +common-calendar-attlist = + attribute number:calendar { + "gregorian" + | "gengou" + | "ROC" + | "hanja_yoil" + | "hanja" + | "hijri" + | "jewish" + | "buddhist" + | \string + }? +common-contour-attlist = attribute draw:recreate-on-edit { boolean } +common-control-id-attlist = + xml-id, + attribute form:id { NCName }? +common-convert-empty-attlist = + attribute form:convert-empty-to-null { boolean }? +common-current-value-attlist = attribute form:current-value { \string }? +common-data-field-attlist = attribute form:data-field { \string }? +common-data-style-attlist = + attribute style:name { styleName } + & attribute style:display-name { \string }? + & attribute number:language { languageCode }? + & attribute number:country { countryCode }? + & attribute number:script { scriptCode }? + & attribute number:rfc-language-tag { language }? + & attribute number:title { \string }? + & attribute style:volatile { boolean }? + & attribute number:transliteration-format { \string }? + & attribute number:transliteration-language { countryCode }? + & attribute number:transliteration-country { countryCode }? + & attribute number:transliteration-style { + "short" | "medium" | "long" + }? +common-db-default-value = common-value-and-type-attlist? +common-db-object-description = attribute db:description { \string }? +common-db-object-name = attribute db:name { \string } +common-db-object-title = attribute db:title { \string }? +common-db-table-name-attlist = + attribute db:name { \string } + & attribute db:catalog-name { \string }? + & attribute db:schema-name { \string }? +common-db-table-style-name = + attribute db:style-name { styleNameRef }? + & attribute db:default-row-style-name { styleNameRef }? +common-dde-connection-decl-attlist = + attribute office:dde-application { \string } + & attribute office:dde-topic { \string } + & attribute office:dde-item { \string } + & attribute office:automatic-update { boolean }? +common-decimal-places-attlist = + attribute number:decimal-places { integer }?, + (attribute number:min-decimal-places { integer }?) + # https://issues.oasis-open.org/browse/OFFICE-3860 added number:min-decimal-places + +common-delay-for-repeat = attribute form:delay-for-repeat { duration }? +common-disabled-attlist = attribute form:disabled { boolean }? +common-dr3d-transform-attlist = attribute dr3d:transform { \string }? +common-draw-area-attlist = + (attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute office:target-frame-name { targetFrameName }?, + attribute xlink:show { "new" | "replace" }?)? + & attribute office:name { \string }? + & attribute draw:nohref { "nohref" }? +common-draw-caption-id-attlist = attribute draw:caption-id { IDREF }? +common-draw-circle-ellipse-attlist = + attribute draw:kind { "full" | "section" | "cut" | "arc" }? + & attribute draw:start-angle { angle }? + & attribute draw:end-angle { angle }? +common-draw-circle-ellipse-pos-attlist = + attribute svg:cx { coordinate }, + attribute svg:cy { coordinate } +common-draw-data-attlist = + attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:show { "embed" }?, + attribute xlink:actuate { "onLoad" }? +common-draw-gradient-attlist = + attribute draw:name { styleName }? + & attribute draw:display-name { \string }? + & attribute draw:style { gradient-style } + & attribute draw:cx { percent }? + & attribute draw:cy { percent }? + & attribute draw:angle { angle }? + & attribute draw:border { percent }? +common-draw-id-attlist = + (xml-id, + attribute draw:id { NCName }?)? +common-draw-layer-name-attlist = attribute draw:layer { \string }? +common-draw-mime-type-attlist = attribute draw:mime-type { \string }? +# https://issues.oasis-open.org/browse/OFFICE-3943 +common-draw-name-attlist = attribute draw:name { \string }? +common-draw-path-data-attlist = attribute svg:d { pathData } +common-draw-points-attlist = attribute draw:points { points } +common-draw-position-attlist = + attribute svg:x { coordinate }?, + attribute svg:y { coordinate }? +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" }? +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 +common-draw-size-attlist = + attribute svg:width { length }?, + attribute svg:height { length }? +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-transform-attlist = attribute draw:transform { \string }? +common-draw-viewbox-attlist = + attribute svg:viewBox { + list { integer, integer, integer, integer } + } +common-draw-z-index-attlist = + attribute draw:z-index { nonNegativeInteger }? +common-dur-timing-attlist = attribute smil:dur { \string }? +common-editable-attlist = attribute style:editable { boolean }? +common-endsync-timing-attlist = + attribute smil:endsync { "first" | "last" | "all" | "media" | IDREF }? +common-field-data-style-name-attlist = + attribute style:data-style-name { styleNameRef }? +common-field-database-name = + attribute text:database-name { \string }? + | form-connection-resource +common-field-database-table = + common-field-database-table-attlist, common-field-database-name +common-field-database-table-attlist = + attribute text:table-name { \string } + & attribute text:table-type { "table" | "query" | "command" }? +common-field-description-attlist = + attribute text:description { \string }? +common-field-display-value-formula-attlist = + attribute text:display { "value" | "formula" }? +common-field-display-value-formula-none-attlist = + attribute text:display { "value" | "formula" | "none" }? +common-field-display-value-none-attlist = + attribute text:display { "value" | "none" }? +common-field-fixed-attlist = attribute text:fixed { boolean }? +common-field-formula-attlist = attribute text:formula { \string }? +common-field-name-attlist = attribute text:name { variableName } +common-field-num-format-attlist = common-num-format-attlist? +common-fill-default-attlist = + attribute smil:fillDefault { + "remove" | "freeze" | "hold" | "transition" | "auto" | "inherit" + }? +common-fill-timing-attlist = + attribute smil:fill { + "remove" | "freeze" | "hold" | "auto" | "default" | "transition" + }? +common-form-control-attlist = + attribute form:name { \string }? + & attribute form:control-implementation { namespacedToken }? +common-form-control-content = form-properties?, office-event-listeners? +common-form-relative-image-position-attlist = + attribute form:image-position { "center" }? + | (attribute form:image-position { + "start" | "end" | "top" | "bottom" + }, + attribute form:image-align { "start" | "center" | "end" }?) +common-form-visual-effect-attlist = + attribute form:visual-effect { "flat" | "3d" }? +common-format-source-attlist = + attribute number:format-source { "fixed" | "language" }? +common-horizontal-margin-attlist = + attribute fo:margin-left { length | percent }?, + attribute fo:margin-right { length | percent }? +common-in-content-meta-attlist = + attribute xhtml:about { URIorSafeCURIE }, + attribute xhtml:property { CURIEs }, + common-meta-literal-attlist +common-keep-with-next-attlist = + attribute fo:keep-with-next { "auto" | "always" }? +common-linked-cell = + attribute form:linked-cell { cellAddress | \string }? +common-margin-attlist = + attribute fo:margin { nonNegativeLength | percent }? +common-maxlength-attlist = + attribute form:max-length { nonNegativeInteger }? +common-meta-literal-attlist = + attribute xhtml:datatype { CURIE }?, + attribute xhtml:content { \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 +common-num-format-prefix-suffix-attlist = + attribute style:num-prefix { \string }?, + attribute style:num-suffix { \string }? +common-number-attlist = + attribute number:min-integer-digits { integer }? + & attribute number:grouping { boolean }? +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 +common-office-annotation-name-attlist = + attribute office:name { \string } +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 }? +common-page-number-attlist = + attribute style:page-number { + (nonNegativeInteger | "auto") + # https://issues.oasis-open.org/browse/OFFICE-3923 + + }? +common-presentation-effect-attlist = + attribute draw:shape-id { IDREF } + & attribute presentation:effect { presentationEffects }? + & attribute presentation:direction { presentationEffectDirections }? + & attribute presentation:speed { presentationSpeeds }? + & attribute presentation:delay { duration }? + & attribute presentation:start-scale { percent }? + & attribute presentation:path-id { \string }? +common-presentation-header-footer-attlist = + attribute presentation:use-header-name { \string }? + & attribute presentation:use-footer-name { \string }? + & attribute presentation:use-date-time-name { \string }? +common-printable-attlist = attribute form:printable { boolean }? +common-readonly-attlist = attribute form:readonly { boolean }? +common-ref-format-values = "page" | "chapter" | "direction" | "text" +common-repeat = attribute form:repeat { boolean }? +common-repeat-timing-attlist = + attribute smil:repeatDur { \string }?, + attribute smil:repeatCount { nonNegativeDecimal | "indefinite" }? +common-restart-default-attlist = + attribute smil:restartDefault { + "never" | "always" | "whenNotActive" | "inherit" + }? +common-restart-timing-attlist = + attribute smil:restart { + "never" | "always" | "whenNotActive" | "default" + }? +common-rotation-angle-attlist = + attribute style:rotation-angle { angle }? +common-section-attlist = + attribute text:style-name { styleNameRef }? + & attribute text:name { \string } + & attribute text:protected { boolean }? + & attribute text:protection-key { \string }? + & attribute text:protection-key-digest-algorithm { anyIRI }? + & xml-id? +common-shadow-attlist = attribute style:shadow { shadowType }? +common-source-cell-range = + attribute form:source-cell-range { cellRangeAddress | \string }? +common-spin-button = attribute form:spin-button { boolean }? +common-spline-anim-value-attlist = + attribute smil:keyTimes { \string }? + & attribute smil:keySplines { \string }? +common-stock-marker-attlist = + attribute chart:style-name { styleNameRef }? +common-style-direction-attlist = + attribute style:direction { "ltr" | "ttb" }? +common-style-header-footer-attlist = + attribute style:display { boolean }? +common-svg-font-face-xlink-attlist = + attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:actuate { "onRequest" }? +common-svg-gradient-attlist = + attribute svg:gradientUnits { "objectBoundingBox" }? + & attribute svg:gradientTransform { \string }? + & attribute svg:spreadMethod { "pad" | "reflect" | "repeat" }? + & attribute draw:name { styleName } + & attribute draw:display-name { \string }? +common-tab-attlist = + attribute form:tab-index { nonNegativeInteger }? + & attribute form:tab-stop { boolean }? +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 } +common-table-change-attlist = + attribute table:id { \string } + & attribute table:acceptance-state { + "accepted" | "rejected" | "pending" + }? + & attribute table:rejecting-change-id { \string }? +common-table-range-attlist = + common-table-cell-address-attlist + | common-table-cell-range-address-attlist +common-table-template-attlist = + attribute table:style-name { styleNameRef }, + attribute table:paragraph-style-name { styleNameRef }? +common-text-align = + attribute fo:text-align { + "start" | "end" | "left" | "right" | "center" | "justify" + }? +common-text-anchor-attlist = + attribute text:anchor-type { + "page" | "frame" | "paragraph" | "char" | "as-char" + }? + & attribute text:anchor-page-number { positiveInteger }? +common-text-spreadsheet-shape-attlist = + attribute table:end-cell-address { cellAddress }? + & attribute table:end-x { coordinate }? + & attribute table:end-y { coordinate }? + & attribute table:table-background { boolean }? + & common-text-anchor-attlist +common-time-manip-attlist = + attribute smil:accelerate { zeroToOneDecimal }? + & attribute smil:decelerate { zeroToOneDecimal }? + & attribute smil:autoReverse { boolean }? +common-timing-attlist = + common-basic-timing-attlist, common-time-manip-attlist +common-title-attlist = attribute form:title { \string }? +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-value-attlist = attribute form:value { \string }? +common-value-type-attlist = attribute office:value-type { valueType } +common-vertical-margin-attlist = + attribute fo:margin-top { nonNegativeLength | percent }?, + attribute fo:margin-bottom { nonNegativeLength | percent }? +common-vertical-pos-attlist = + attribute style:vertical-pos { + "top" | "middle" | "bottom" | "from-top" | "below" + }?, + attribute svg:y { coordinate }? +common-vertical-rel-attlist = + attribute style:vertical-rel { + "page" + | "page-content" + | "frame" + | "frame-content" + | "paragraph" + | "paragraph-content" + | "char" + | "line" + | "baseline" + | "text" + }? +common-writing-mode-attlist = + attribute style:writing-mode { + "lr-tb" | "rl-tb" | "tb-rl" | "tb-lr" | "lr" | "rl" | "tb" | "page" + }? +config-config-item = + element config:config-item { config-config-item-attlist, text } +config-config-item-attlist = + attribute config:name { \string } + & attribute config:type { + "boolean" + | "short" + | "int" + | "long" + | "double" + | "string" + | "datetime" + | "base64Binary" + } +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-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-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 } +config-config-item-set = + element config:config-item-set { + config-config-item-set-attlist, config-items + } +config-config-item-set-attlist = attribute config:name { \string } +config-items = + (config-config-item + | config-config-item-set + | config-config-item-map-named + | config-config-item-map-indexed)+ +controls = + column-controls + | element form:password { + form-password-attlist, common-form-control-content + } + | element form:file { form-file-attlist, common-form-control-content } + | element form:fixed-text { + form-fixed-text-attlist, common-form-control-content + } + | element form:button { + form-button-attlist, common-form-control-content + } + | element form:image { + form-image-attlist, common-form-control-content + } + | element form:radio { + form-radio-attlist, common-form-control-content + } + | element form:frame { + form-frame-attlist, common-form-control-content + } + | element form:image-frame { + form-image-frame-attlist, common-form-control-content + } + | element form:hidden { + form-hidden-attlist, common-form-control-content + } + | element form:grid { + form-grid-attlist, common-form-control-content, form-column* + } + | element form:value-range { + form-value-range-attlist, common-form-control-content + } + | element form:generic-control { + form-generic-control-attlist, common-form-control-content + } +coordinate = length +countryCode = xsd:token { pattern = "[A-Za-z0-9]{1,8}" } +currency-symbol-and-text = + number-currency-symbol, + number-text-with-fillchar + # https://issues.oasis-open.org/browse/OFFICE-3765 + ? +current-selected = attribute form:current-selected { boolean }? +custom-shape-type = "non-primitive" | \string +date = xsd:date +dateOrDateTime = xsd:date | xsd:dateTime +dateTime = xsd:dateTime +db-application-connection-settings = + element db:application-connection-settings { + db-application-connection-settings-attlist, + db-table-filter?, + db-table-type-filter?, + db-data-source-settings? + } +db-application-connection-settings-attlist = + attribute db:is-table-name-length-limited { boolean }? + & attribute db:enable-sql92-check { boolean }? + & attribute db:append-table-alias-name { boolean }? + & attribute db:ignore-driver-privileges { boolean }? + & attribute db:boolean-comparison-mode { + "equal-integer" + | "is-boolean" + | "equal-boolean" + | "equal-use-only-zero" + }? + & attribute db:use-catalog { boolean }? + & attribute db:max-row-count { integer }? + & attribute db:suppress-version-columns { boolean }? +db-apply-command = attribute db:apply-command { boolean }? +db-auto-increment = + element db:auto-increment { db-auto-increment-attlist, empty } +db-auto-increment-attlist = + attribute db:additional-column-statement { \string }? + & attribute db:row-retrieving-statement { \string }? +db-character-set = + element db:character-set { db-character-set-attlist, empty } +db-character-set-attlist = attribute db:encoding { textEncoding }? +db-column = + element db:column { + db-column-attlist, + common-db-object-name, + common-db-object-title, + common-db-object-description, + common-db-default-value + } +db-column-attlist = + attribute db:visible { boolean }? + & attribute db:style-name { styleNameRef }? + & attribute db:default-cell-style-name { styleNameRef }? +db-column-definition = + element db:column-definition { + db-column-definition-attlist, common-db-default-value + } +db-column-definition-attlist = + attribute db:name { \string } + & attribute db:data-type { db-data-types }? + & attribute db:type-name { \string }? + & attribute db:precision { positiveInteger }? + & attribute db:scale { positiveInteger }? + & attribute db:is-nullable { "no-nulls" | "nullable" }? + & attribute db:is-empty-allowed { boolean }? + & attribute db:is-autoincrement { boolean }? +db-column-definitions = + element db:column-definitions { + db-column-definitions-attlist, db-column-definition+ + } +db-column-definitions-attlist = empty +db-columns = element db:columns { db-columns-attlist, db-column+ } +db-columns-attlist = empty +db-command = attribute db:command { \string } +db-component = + element db:component { + db-component-attlist, + common-db-object-name, + common-db-object-title, + common-db-object-description, + (office-document | math-math)? + } +db-component-attlist = + (attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:show { "none" }?, + attribute xlink:actuate { "onRequest" }?)? + & attribute db:as-template { boolean }? +db-component-collection = + element db:component-collection { + db-component-collection-attlist, + common-db-object-name, + common-db-object-title, + common-db-object-description, + (db-component | db-component-collection)* + } +db-component-collection-attlist = empty +db-connection-data = + element db:connection-data { + db-connection-data-attlist, + (db-database-description | db-connection-resource), + db-login? + } +db-connection-data-attlist = empty +db-connection-resource = + element db:connection-resource { + db-connection-resource-attlist, empty + } +db-connection-resource-attlist = + attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:show { "none" }?, + attribute xlink:actuate { "onRequest" }? +db-data-source = + element db:data-source { + db-data-source-attlist, + db-connection-data, + db-driver-settings?, + db-application-connection-settings? + } +db-data-source-attlist = empty +db-data-source-setting = + element db:data-source-setting { + db-data-source-setting-attlist, db-data-source-setting-value+ + } +db-data-source-setting-attlist = + attribute db:data-source-setting-is-list { boolean }? + & attribute db:data-source-setting-name { \string } + & attribute db:data-source-setting-type { + db-data-source-setting-types + } +db-data-source-setting-types = + "boolean" | "short" | "int" | "long" | "double" | "string" +db-data-source-setting-value = + element db:data-source-setting-value { + db-data-source-setting-value-attlist, \string + } +db-data-source-setting-value-attlist = empty +db-data-source-settings = + element db:data-source-settings { + db-data-source-settings-attlist, db-data-source-setting+ + } +db-data-source-settings-attlist = empty +db-data-types = + "bit" + | "boolean" + | "tinyint" + | "smallint" + | "integer" + | "bigint" + | "float" + | "real" + | "double" + | "numeric" + | "decimal" + | "char" + | "varchar" + | "longvarchar" + | "date" + | "time" + | "timestmp" + | "binary" + | "varbinary" + | "longvarbinary" + | "sqlnull" + | "other" + | "object" + | "distinct" + | "struct" + | "array" + | "blob" + | "clob" + | "ref" +db-database-description = + element db:database-description { + db-database-description-attlist, + (db-file-based-database | db-server-database) + } +db-database-description-attlist = empty +db-delimiter = element db:delimiter { db-delimiter-attlist, empty } +db-delimiter-attlist = + attribute db:field { \string }? + & attribute db:string { \string }? + & attribute db:decimal { \string }? + & attribute db:thousand { \string }? +db-driver-settings = + element db:driver-settings { + db-driver-settings-attlist, + db-auto-increment?, + db-delimiter?, + db-character-set?, + db-table-settings? + } +db-driver-settings-attlist = + db-show-deleted + & attribute db:system-driver-settings { \string }? + & attribute db:base-dn { \string }? + & db-is-first-row-header-line + & attribute db:parameter-name-substitution { boolean }? +db-file-based-database = + element db:file-based-database { db-file-based-database-attlist } +db-file-based-database-attlist = + attribute xlink:type { "simple" } + & attribute xlink:href { anyIRI } + & attribute db:media-type { \string } + & attribute db:extension { \string }? +db-filter-statement = + element db:filter-statement { db-command, db-apply-command, empty } +db-forms = + element db:forms { + db-forms-attlist, (db-component | db-component-collection)* + } +db-forms-attlist = empty +db-host-and-port = + attribute db:hostname { \string }, + attribute db:port { positiveInteger }? +db-index = element db:index { db-index-attlist, db-index-columns+ } +db-index-attlist = + attribute db:name { \string } + & attribute db:catalog-name { \string }? + & attribute db:is-unique { boolean }? + & attribute db:is-clustered { boolean }? +db-index-column = + element db:index-column { db-index-column-attlist, empty } +db-index-column-attlist = + attribute db:name { \string } + & attribute db:is-ascending { boolean }? +db-index-columns = element db:index-columns { db-index-column+ } +db-indices = element db:indices { db-indices-attlist, db-index+ } +db-indices-attlist = empty +db-is-first-row-header-line = + attribute db:is-first-row-header-line { boolean }? +db-key = element db:key { db-key-attlist, db-key-columns+ } +db-key-attlist = + attribute db:name { \string }? + & attribute db:type { "primary" | "unique" | "foreign" } + & attribute db:referenced-table-name { \string }? + & attribute db:update-rule { + "cascade" | "restrict" | "set-null" | "no-action" | "set-default" + }? + & attribute db:delete-rule { + "cascade" | "restrict" | "set-null" | "no-action" | "set-default" + }? +db-key-column = element db:key-column { db-key-column-attlist, empty } +db-key-column-attlist = + attribute db:name { \string }? + & attribute db:related-column-name { \string }? +db-key-columns = + element db:key-columns { db-key-columns-attlist, db-key-column+ } +db-key-columns-attlist = empty +db-keys = element db:keys { db-keys-attlist, db-key+ } +db-keys-attlist = empty +db-local-socket-name = attribute db:local-socket { \string }? +db-login = element db:login { db-login-attlist, empty } +db-login-attlist = + (attribute db:user-name { \string } + | attribute db:use-system-user { boolean })? + & attribute db:is-password-required { boolean }? + & attribute db:login-timeout { positiveInteger }? +db-order-statement = + element db:order-statement { db-command, db-apply-command, empty } +db-queries = + element db:queries { + db-queries-attlist, (db-query | db-query-collection)* + } +db-queries-attlist = empty +db-query = + element db:query { + db-query-attlist, + common-db-object-name, + common-db-object-title, + common-db-object-description, + common-db-table-style-name, + db-order-statement?, + db-filter-statement?, + db-columns?, + db-update-table? + } +db-query-attlist = + attribute db:command { \string } + & attribute db:escape-processing { boolean }? +db-query-collection = + element db:query-collection { + db-query-collection-attlist, + common-db-object-name, + common-db-object-title, + common-db-object-description, + (db-query | db-query-collection)* + } +db-query-collection-attlist = empty +db-reports = + element db:reports { + db-reports-attlist, (db-component | db-component-collection)* + } +db-reports-attlist = empty +db-schema-definition = + element db:schema-definition { + db-schema-definition-attlist, db-table-definitions + } +db-schema-definition-attlist = empty +db-server-database = + element db:server-database { db-server-database-attlist, empty } +db-server-database-attlist = + attribute db:type { namespacedToken } + & (db-host-and-port | db-local-socket-name) + & attribute db:database-name { \string }? +db-show-deleted = attribute db:show-deleted { boolean }? +db-table-definition = + element db:table-definition { + common-db-table-name-attlist, + db-table-definition-attlist, + db-column-definitions, + db-keys?, + db-indices? + } +db-table-definition-attlist = attribute db:type { \string }? +db-table-definitions = + element db:table-definitions { + db-table-definitions-attlist, db-table-definition* + } +db-table-definitions-attlist = empty +db-table-exclude-filter = + element db:table-exclude-filter { + db-table-exclude-filter-attlist, db-table-filter-pattern+ + } +db-table-exclude-filter-attlist = empty +db-table-filter = + element db:table-filter { + db-table-filter-attlist, + db-table-include-filter?, + db-table-exclude-filter? + } +db-table-filter-attlist = empty +db-table-filter-pattern = + element db:table-filter-pattern { + db-table-filter-pattern-attlist, \string + } +db-table-filter-pattern-attlist = empty +db-table-include-filter = + element db:table-include-filter { + db-table-include-filter-attlist, db-table-filter-pattern+ + } +db-table-include-filter-attlist = empty +db-table-presentation = + element db:table-representation { + db-table-presentation-attlist, + common-db-table-name-attlist, + common-db-object-title, + common-db-object-description, + common-db-table-style-name, + db-order-statement?, + db-filter-statement?, + db-columns? + } +db-table-presentation-attlist = empty +db-table-presentations = + element db:table-representations { + db-table-presentations-attlist, db-table-presentation* + } +db-table-presentations-attlist = empty +db-table-setting = + element db:table-setting { + db-table-setting-attlist, db-delimiter?, db-character-set?, empty + } +db-table-setting-attlist = db-is-first-row-header-line, db-show-deleted +db-table-settings = element db:table-settings { db-table-setting* } +db-table-type = element db:table-type { db-table-type-attlist, \string } +db-table-type-attlist = empty +db-table-type-filter = + element db:table-type-filter { + db-table-type-filter-attlist, db-table-type* + } +db-table-type-filter-attlist = empty +db-update-table = + element db:update-table { common-db-table-name-attlist } +dc-creator = element dc:creator { \string } +dc-date = element dc:date { dateTime } +distance = length +double = xsd:double +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-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-light = element dr3d:light { dr3d-light-attlist, empty } +dr3d-light-attlist = + attribute dr3d:diffuse-color { color }? + & attribute dr3d:direction { vector3D } + & attribute dr3d:enabled { boolean }? + & attribute dr3d:specular { boolean }? +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 + } +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*, + draw-glue-point* + } +dr3d-scene-attlist = + attribute dr3d:vrp { vector3D }? + & attribute dr3d:vpn { vector3D }? + & attribute dr3d:vup { vector3D }? + & attribute dr3d:projection { "parallel" | "perspective" }? + & attribute dr3d:distance { length }? + & attribute dr3d:focal-length { length }? + & attribute dr3d:shadow-slant { angle }? + & attribute dr3d:shade-mode { + "flat" | "phong" | "gouraud" | "draft" + }? + & attribute dr3d:ambient-color { color }? + & attribute dr3d:lighting-mode { boolean }? +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 }? + & attribute dr3d:size { vector3D }? +draw-a = element draw:a { draw-a-attlist, shape-instance } +draw-a-attlist = + attribute xlink:type { "simple" } + & attribute xlink:href { anyIRI } + & attribute xlink:actuate { "onRequest" }? + & attribute office:target-frame-name { targetFrameName }? + & attribute xlink:show { "new" | "replace" }? + & attribute office:name { \string }? + & attribute office:title { \string }? + & attribute office:server-map { boolean }? + & xml-id? +draw-applet = + element draw:applet { + draw-applet-attlist, common-draw-data-attlist?, draw-param* + } +draw-applet-attlist = + attribute draw:code { \string }? + & attribute draw:object { \string }? + & attribute draw:archive { \string }? + & attribute draw:may-script { boolean }? + & xml-id? +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? + } +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-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 })? + & attribute draw:corner-radius { nonNegativeLength }? +draw-circle = + element draw:circle { + ((draw-circle-attlist, common-draw-circle-ellipse-pos-attlist) + | (common-draw-position-attlist, common-draw-size-attlist)), + common-draw-circle-ellipse-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-circle-attlist = attribute svg:r { length } +draw-connector = + element draw:connector { + draw-connector-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + common-draw-viewbox-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-connector-attlist = + attribute draw:type { "standard" | "lines" | "line" | "curve" }? + & (attribute svg:x1 { coordinate }, + attribute svg:y1 { coordinate })? + & attribute draw:start-shape { IDREF }? + & attribute draw:start-glue-point { nonNegativeInteger }? + & (attribute svg:x2 { coordinate }, + attribute svg:y2 { coordinate })? + & attribute draw:end-shape { IDREF }? + & attribute draw:end-glue-point { nonNegativeInteger }? + & attribute draw:line-skew { + list { length, (length, length?)? } + }? + & attribute svg:d { pathData }? +draw-contour-path = + element draw:contour-path { + common-contour-attlist, + common-draw-size-attlist, + common-draw-viewbox-attlist, + common-draw-path-data-attlist, + empty + } +draw-contour-polygon = + element draw:contour-polygon { + common-contour-attlist, + common-draw-size-attlist, + common-draw-viewbox-attlist, + common-draw-points-attlist, + empty + } +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-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 }? + & attribute draw:data { \string }? +draw-ellipse = + element draw:ellipse { + ((draw-ellipse-attlist, common-draw-circle-ellipse-pos-attlist) + | (common-draw-position-attlist, common-draw-size-attlist)), + common-draw-circle-ellipse-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-enhanced-geometry = + element draw:enhanced-geometry { + draw-enhanced-geometry-attlist, draw-equation*, draw-handle* + } +draw-enhanced-geometry-attlist = + attribute draw:type { custom-shape-type }? + & attribute svg:viewBox { + list { integer, integer, integer, integer } + }? + & attribute draw:mirror-vertical { boolean }? + & attribute draw:mirror-horizontal { boolean }? + & attribute draw:text-rotate-angle { angle }? + & attribute draw:extrusion-allowed { boolean }? + & attribute draw:text-path-allowed { boolean }? + & attribute draw:concentric-gradient-fill-allowed { boolean }? + & attribute draw:extrusion { boolean }? + & attribute draw:extrusion-brightness { zeroToHundredPercent }? + & attribute draw:extrusion-depth { + list { length, double } + }? + & attribute draw:extrusion-diffusion { percent }? + & attribute draw:extrusion-number-of-line-segments { integer }? + & attribute draw:extrusion-light-face { boolean }? + & attribute draw:extrusion-first-light-harsh { boolean }? + & attribute draw:extrusion-second-light-harsh { boolean }? + & attribute draw:extrusion-first-light-level { zeroToHundredPercent }? + & attribute draw:extrusion-second-light-level { + zeroToHundredPercent + }? + & attribute draw:extrusion-first-light-direction { vector3D }? + & attribute draw:extrusion-second-light-direction { vector3D }? + & attribute draw:extrusion-metal { boolean }? + & attribute dr3d:shade-mode { + "flat" | "phong" | "gouraud" | "draft" + }? + & attribute draw:extrusion-rotation-angle { + list { angle, angle } + }? + & attribute draw:extrusion-rotation-center { vector3D }? + & attribute draw:extrusion-shininess { zeroToHundredPercent }? + & attribute draw:extrusion-skew { + list { double, angle } + }? + & attribute draw:extrusion-specularity { zeroToHundredPercent }? + & attribute dr3d:projection { "parallel" | "perspective" }? + & attribute draw:extrusion-viewpoint { point3D }? + & attribute draw:extrusion-origin { + list { extrusionOrigin, extrusionOrigin } + }? + & attribute draw:extrusion-color { boolean }? + & attribute draw:enhanced-path { \string }? + & attribute draw:path-stretchpoint-x { double }? + & attribute draw:path-stretchpoint-y { double }? + & attribute draw:text-areas { \string }? + & attribute draw:glue-points { \string }? + & attribute draw:glue-point-type { + "none" | "segments" | "rectangle" + }? + & attribute draw:glue-point-leaving-directions { \string }? + & attribute draw:text-path { boolean }? + & attribute draw:text-path-mode { "normal" | "path" | "shape" }? + & attribute draw:text-path-scale { "path" | "shape" }? + & attribute draw:text-path-same-letter-heights { boolean }? + & attribute draw:modifiers { \string }? +draw-equation = element draw:equation { draw-equation-attlist, empty } +draw-equation-attlist = + attribute draw:name { \string }? + & attribute draw:formula { \string }? +draw-fill-image = + element draw:fill-image { + draw-fill-image-attlist, + # XLink duplicate declaration removed. see common-draw-data-attlist + ((common-draw-data-attlist, empty) | office-binary-data) + # https://issues.oasis-open.org/browse/OFFICE-3933 + + } +draw-fill-image-attlist = + attribute draw:name { styleName } + & attribute draw:display-name { \string }? + & attribute svg:width { length }? + & attribute svg:height { length }? +draw-floating-frame = + element draw:floating-frame { + draw-floating-frame-attlist, common-draw-data-attlist + } +draw-floating-frame-attlist = + attribute draw:frame-name { \string }? + & xml-id? +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 + | table-table)*, + office-event-listeners?, + draw-glue-point*, + draw-image-map?, + svg-title?, + svg-desc?, + (draw-contour-polygon | draw-contour-path)? + } +draw-frame-attlist = attribute draw:copy-of { \string }? +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 }? +draw-glue-point = + element draw:glue-point { draw-glue-point-attlist, empty } +draw-glue-point-attlist = + attribute draw:id { nonNegativeInteger } + & attribute svg:x { distance | percent } + & attribute svg:y { distance | percent } + & attribute draw:align { + "top-left" + | "top" + | "top-right" + | "left" + | "center" + | "right" + | "bottom-left" + | "bottom-right" + }? + & attribute draw:escape-direction { + "auto" + | "left" + | "right" + | "up" + | "down" + | "horizontal" + | "vertical" + } +draw-gradient = + element draw:gradient { + common-draw-gradient-attlist, draw-gradient-attlist, empty + } +draw-gradient-attlist = + attribute draw:start-color { color }? + & attribute draw:end-color { color }? + & attribute draw:start-intensity { zeroToHundredPercent }? + & attribute draw:end-intensity { zeroToHundredPercent }? +draw-handle = element draw:handle { draw-handle-attlist, empty } +draw-handle-attlist = + attribute draw:handle-mirror-vertical { boolean }? + & attribute draw:handle-mirror-horizontal { boolean }? + & attribute draw:handle-switched { boolean }? + & attribute draw:handle-position { \string } + & attribute draw:handle-range-x-minimum { \string }? + & attribute draw:handle-range-x-maximum { \string }? + & attribute draw:handle-range-y-minimum { \string }? + & attribute draw:handle-range-y-maximum { \string }? + & attribute draw:handle-polar { \string }? + & attribute draw:handle-radius-range-minimum { \string }? + & attribute draw:handle-radius-range-maximum { \string }? +draw-hatch = element draw:hatch { draw-hatch-attlist, empty } +draw-hatch-attlist = + attribute draw:name { styleName } + & attribute draw:display-name { \string }? + & attribute draw:style { "single" | "double" | "triple" } + & attribute draw:color { color }? + & attribute draw:distance { length }? + & attribute draw:rotation { angle }? +draw-image = + element draw:image { + draw-image-attlist, + (common-draw-data-attlist | office-binary-data), + draw-text + } +draw-image-attlist = + attribute draw:filter-name { \string }? + & common-draw-mime-type-attlist + & # https://issues.oasis-open.org/browse/OFFICE-3943 + xml-id? +draw-image-map = + element draw:image-map { + (draw-area-rectangle | draw-area-circle | draw-area-polygon)* + } +draw-layer = + element draw:layer { draw-layer-attlist, svg-title?, svg-desc? } +draw-layer-attlist = + attribute draw:name { \string } + & attribute draw:protected { boolean }? + & attribute draw:display { "always" | "screen" | "printer" | "none" }? +draw-layer-set = element draw:layer-set { draw-layer* } +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 } + & attribute svg:x2 { coordinate } + & attribute svg:y2 { coordinate } +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 } + & attribute draw:display-name { \string }? +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 } + & attribute svg:x2 { coordinate } + & attribute svg:y2 { coordinate } +draw-object = + element draw:object { + draw-object-attlist, + (common-draw-data-attlist | office-document | math-math) + } +draw-object-attlist = + attribute draw:notify-on-update-of-ranges { + cellRangeAddressList | \string + }? + & xml-id? +draw-object-ole = + element draw:object-ole { + draw-object-ole-attlist, + (common-draw-data-attlist | office-binary-data) + } +draw-object-ole-attlist = + attribute draw:class-id { \string }? + & xml-id? +draw-opacity = + element draw:opacity { + common-draw-gradient-attlist, draw-opacity-attlist, empty + } +draw-opacity-attlist = + attribute draw:start { zeroToHundredPercent }?, + attribute draw:end { zeroToHundredPercent }? +draw-page = + element draw:page { + common-presentation-header-footer-attlist, + draw-page-attlist, + svg-title?, + svg-desc?, + draw-layer-set?, + office-forms?, + shape*, + (presentation-animations | animation-element)?, + presentation-notes? + } +draw-page-attlist = + attribute draw:name { \string }? + & attribute draw:style-name { styleNameRef }? + & attribute draw:master-page-name { styleNameRef } + & attribute presentation:presentation-page-layout-name { + styleNameRef + }? + & (xml-id, + attribute draw:id { NCName }?)? + & attribute draw:nav-order { IDREFS }? +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-param = element draw:param { draw-param-attlist, empty } +draw-param-attlist = + attribute draw:name { \string }? + & attribute draw:value { \string }? +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 + } +draw-plugin = + element draw:plugin { + draw-plugin-attlist, common-draw-data-attlist, draw-param* + } +draw-plugin-attlist = common-draw-mime-type-attlist & xml-id? +# https://issues.oasis-open.org/browse/OFFICE-3943 +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-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 + } +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 }? + | (attribute svg:rx { nonNegativeLength }?, + attribute svg:ry { nonNegativeLength }?) +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)) + & attribute draw:corners { positiveInteger } +draw-regular-polygon-sharpness-attlist = + attribute draw:sharpness { percent } +draw-stroke-dash = + element draw:stroke-dash { draw-stroke-dash-attlist, empty } +draw-stroke-dash-attlist = + attribute draw:name { styleName } + & attribute draw:display-name { \string }? + & attribute draw:style { "rect" | "round" }? + & attribute draw:dots1 { integer }? + & attribute draw:dots1-length { length | percent }? + & attribute draw:dots2 { integer }? + & attribute draw:dots2-length { length | percent }? + & attribute draw:distance { length | percent }? +draw-text = (text-p | text-list)* +draw-text-box = + element draw:text-box { draw-text-box-attlist, text-content* } +draw-text-box-attlist = + attribute draw:chain-next-name { \string }? + & attribute draw:corner-radius { nonNegativeLength }? + & attribute fo:min-height { length | percent }? + & attribute fo:min-width { length | percent }? + & attribute fo:max-height { length | percent }? + & attribute fo:max-width { length | percent }? + & (xml-id, + attribute text:id { NCName }?)? +dropdown = attribute form:dropdown { boolean }? +duration = xsd:duration +extrusionOrigin = + xsd:double { minInclusive = "-0.5" maxInclusive = "0.5" } +fontFamilyGeneric = + "roman" | "swiss" | "modern" | "decorative" | "script" | "system" +fontPitch = "fixed" | "variable" +fontStyle = "normal" | "italic" | "oblique" +fontVariant = "normal" | "small-caps" +fontWeight = + "normal" + | "bold" + | "100" + | "200" + | "300" + | "400" + | "500" + | "600" + | "700" + | "800" + | "900" +for = attribute form:for { \string }? +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 + & common-repeat + & common-delay-for-repeat + & attribute form:default-button { boolean }? + & attribute form:toggle { boolean }? + & attribute form:focus-on-click { boolean }? + & attribute form:xforms-submission { \string }? +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 + & common-linked-cell + & attribute form:current-state { states }? + & attribute form:is-tristate { boolean }? + & attribute form:state { states }? +form-column = + element form:column { form-column-attlist, column-controls+ } +form-column-attlist = + common-form-control-attlist, label, text-style-name +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 + & common-linked-cell + & common-source-cell-range + & attribute form:auto-complete { boolean }? +form-connection-resource = + element form:connection-resource { + attribute xlink:href { anyIRI }, + empty + } +form-control-attlist = + common-form-control-attlist, + common-control-id-attlist, + xforms-bind-attlist +form-date-attlist = + attribute form:value { date }? + & attribute form:current-value { date }? + & attribute form:min-value { date }? + & attribute form:max-value { date }? +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, + common-linked-cell +form-fixed-text-attlist = + form-control-attlist + & for + & common-disabled-attlist + & label + & common-printable-attlist + & common-title-attlist + & attribute form:multi-line { 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:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:actuate { "onRequest" }?)? + & attribute office:target-frame { targetFrameName }? + & attribute form:method { "get" | "post" | \string }? + & attribute form:enctype { \string }? + & attribute form:allow-deletes { boolean }? + & attribute form:allow-inserts { boolean }? + & attribute form:allow-updates { boolean }? + & attribute form:apply-filter { boolean }? + & attribute form:command-type { "table" | "query" | "command" }? + & attribute form:command { \string }? + & attribute form:datasource { anyIRI | \string }? + & attribute form:master-fields { \string }? + & attribute form:detail-fields { \string }? + & attribute form:escape-processing { boolean }? + & attribute form:filter { \string }? + & attribute form:ignore-result { boolean }? + & attribute form:navigation-mode { navigation }? + & attribute form:order { \string }? + & attribute form:tab-cycle { tab-cycles }? +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 + & common-linked-cell + & common-spin-button + & common-repeat + & common-delay-for-repeat + & attribute form:max-value { \string }? + & attribute form:min-value { \string }? + & attribute form:validation { boolean }? +form-frame-attlist = + form-control-attlist, + common-disabled-attlist, + for, + label, + common-printable-attlist, + common-title-attlist +form-generic-control-attlist = form-control-attlist +form-grid-attlist = + form-control-attlist, + common-disabled-attlist, + common-printable-attlist, + common-tab-attlist, + common-title-attlist +form-hidden-attlist = form-control-attlist, common-value-attlist +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 +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 +form-item = element form:item { form-item-attlist, text } +form-item-attlist = label +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 + & common-linked-cell + & list-linkage-type + & common-source-cell-range + & attribute form:multiple { boolean }? + & attribute form:xforms-list-source { \string }? +form-number-attlist = + attribute form:value { double }? + & attribute form:current-value { double }? + & attribute form:min-value { double }? + & attribute form:max-value { double }? +form-option = element form:option { form-option-attlist, text } +form-option-attlist = + current-selected, selected, label, common-value-attlist +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 + & common-linked-cell + & attribute form:echo-char { character }? +form-properties = element form:properties { form-property+ } +form-property = + element form:property { + form-property-name, form-property-value-and-type-attlist + } + | element form:list-property { + form-property-name, form-property-type-and-value-list + } +form-property-name = attribute form:property-name { \string } +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" } +form-property-value-and-type-attlist = + common-value-and-type-attlist + | attribute office:value-type { "void" } +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, + common-linked-cell +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, + common-linked-cell +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, + common-linked-cell +form-time-attlist = + attribute form:value { time }? + & attribute form:current-value { time }? + & attribute form:min-value { time }? + & attribute form:max-value { time }? +form-value-range-attlist = + form-control-attlist + & common-disabled-attlist + & common-printable-attlist + & common-tab-attlist + & common-title-attlist + & common-value-attlist + & common-linked-cell + & common-repeat + & common-delay-for-repeat + & attribute form:max-value { integer }? + & attribute form:min-value { integer }? + & attribute form:step-size { positiveInteger }? + & attribute form:page-step-size { positiveInteger }? + & attribute form:orientation { "horizontal" | "vertical" }? +gradient-style = + "linear" | "axial" | "radial" | "ellipsoid" | "square" | "rectangular" +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?) +heading-attrs = + attribute text:outline-level { positiveInteger } + & attribute text:restart-numbering { boolean }? + & attribute text:start-value { nonNegativeInteger }? + & attribute text:is-list-header { boolean }? +horiBackPos = "left" | "center" | "right" +horizontal-mirror = + "horizontal" | "horizontal-on-odd" | "horizontal-on-even" +image-data = attribute form:image-data { anyIRI }? +index-content-main = text-content | text-index-title +integer = xsd:integer +label = attribute form:label { \string }? +labelPositions = + "avoid-overlap" + | "center" + | "top" + | "top-right" + | "right" + | "bottom-right" + | "bottom" + | "bottom-left" + | "left" + | "top-left" + | "inside" + | "outside" + | "near-origin" +language = xsd:language +languageCode = xsd:token { pattern = "[A-Za-z]{1,8}" } +length = + xsd:string { + pattern = + "-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))" + } +lineMode = "continuous" | "skip-white-space" +lineStyle = + "none" + | "solid" + | "dotted" + | "dash" + | "long-dash" + | "dot-dash" + | "dot-dot-dash" + | "wave" +lineType = "none" | "single" | "double" +lineWidth = + "auto" + | "normal" + | "bold" + | "thin" + | "medium" + | "thick" + | positiveInteger + | percent + | positiveLength +list-linkage-type = + attribute form:list-linkage-type { + "selection" | "selection-indices" + }? +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" + }? +math-math = element math:math { mathMarkup } +[ + dc:description [ + "To avoid inclusion of the complete MathML schema, anything is allowed within a math:math top-level element" + ] +] +mathMarkup = + (attribute * { text } + | text + | element * { mathMarkup })* +meta-date-string = element meta:date-string { \string } +namespacedToken = xsd:QName { pattern = "[^:]+:[^:]+" } +navigation = "none" | "current" | "parent" +nonNegativeDecimal = xsd:decimal { minInclusive = "0.0" } +nonNegativeInteger = xsd:nonNegativeInteger +nonNegativeLength = + xsd:string { + pattern = + "([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))" + } +nonNegativePixelLength = + xsd:string { pattern = "([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)" } +number-am-pm = element number:am-pm { empty } +number-and-text = + number-number, + (number-text-with-fillchar?) + # https://issues.oasis-open.org/browse/OFFICE-3765 + +number-boolean = element number:boolean { empty } +number-boolean-style = + element number:boolean-style { + common-data-style-attlist, + style-text-properties?, + number-text?, + (number-boolean, number-text?)?, + style-map* + } +number-currency-style = + element number:currency-style { + common-data-style-attlist, + common-auto-reorder-attlist, + style-text-properties?, + number-text-with-fillchar?, + # https://issues.oasis-open.org/browse/OFFICE-3765 + ((number-and-text, currency-symbol-and-text?) + | (currency-symbol-and-text, number-and-text?))?, + style-map* + } +number-currency-symbol = + element number:currency-symbol { + number-currency-symbol-attlist, text + } +number-currency-symbol-attlist = + attribute number:language { languageCode }?, + attribute number:country { countryCode }?, + attribute number:script { scriptCode }?, + attribute number:rfc-language-tag { language }? +number-date-style = + element number:date-style { + common-data-style-attlist, + common-auto-reorder-attlist, + common-format-source-attlist, + style-text-properties?, + number-text-with-fillchar?, + # https://issues.oasis-open.org/browse/OFFICE-3765 + (any-date, + (number-text-with-fillchar?) + # https://issues.oasis-open.org/browse/OFFICE-3765 + )+, + style-map* + } +number-day = + element number:day { + number-day-attlist, common-calendar-attlist, empty + } +number-day-attlist = 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 = + attribute number:style { "short" | "long" }? +number-embedded-text = + element number:embedded-text { number-embedded-text-attlist, text } +number-embedded-text-attlist = attribute number:position { integer } +number-era = + element number:era { + number-era-attlist, common-calendar-attlist, empty + } +number-era-attlist = attribute number:style { "short" | "long" }? +number-fill-character = element number:fill-character { text } +# https://issues.oasis-open.org/browse/OFFICE-3765 +number-fraction = + element number:fraction { + number-fraction-attlist, common-number-attlist, empty + } +number-fraction-attlist = + attribute number:min-numerator-digits { integer }? + & attribute number:min-denominator-digits { integer }? + & attribute number:denominator-value { integer }? + & (attribute number:max-denominator-value { positiveInteger }?) + # https://issues.oasis-open.org/browse/OFFICE-3695 max-denominator-value + +number-hours = element number:hours { number-hours-attlist, empty } +number-hours-attlist = attribute number:style { "short" | "long" }? +number-minutes = + element number:minutes { number-minutes-attlist, empty } +number-minutes-attlist = attribute number:style { "short" | "long" }? +number-month = + element number:month { + number-month-attlist, common-calendar-attlist, empty + } +number-month-attlist = + attribute number:textual { boolean }? + & attribute number:possessive-form { boolean }? + & attribute number:style { "short" | "long" }? +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 { \string }? + & attribute number:display-factor { double }? +number-number-style = + element number:number-style { + common-data-style-attlist, + style-text-properties?, + number-text-with-fillchar?, + # https://issues.oasis-open.org/browse/OFFICE-3765 + (any-number, number-text-with-fillchar?)?, + # https://issues.oasis-open.org/browse/OFFICE-3765 + style-map* + } +number-percentage-style = + element number:percentage-style { + common-data-style-attlist, + style-text-properties?, + number-text-with-fillchar?, + # https://issues.oasis-open.org/browse/OFFICE-3765 + number-and-text?, + style-map* + } +number-quarter = + element number:quarter { + number-quarter-attlist, common-calendar-attlist, empty + } +number-quarter-attlist = attribute number:style { "short" | "long" }? +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 }? + & attribute number:exponent-interval { positiveInteger }? + & # https://issues.oasis-open.org/browse/OFFICE-1828 exponent-interval + attribute number:forced-exponent-sign { boolean } + # https://issues.oasis-open.org/browse/OFFICE-3860 added number:forced-exponent-sign + ? +number-seconds = + element number:seconds { number-seconds-attlist, empty } +number-seconds-attlist = + attribute number:style { "short" | "long" }? + & attribute number:decimal-places { integer }? +number-text = element number:text { text } +number-text-content = element number:text-content { empty } +number-text-style = + element number:text-style { + common-data-style-attlist, + style-text-properties?, + number-text-with-fillchar?, + # https://issues.oasis-open.org/browse/OFFICE-3765 + (number-text-content, + (number-text-with-fillchar?) + # https://issues.oasis-open.org/browse/OFFICE-3765 + )*, + style-map* + } +number-text-with-fillchar = + number-text?, (number-fill-character, number-text?)? +# https://issues.oasis-open.org/browse/OFFICE-3765 +number-time-style = + element number:time-style { + number-time-style-attlist, + common-data-style-attlist, + common-format-source-attlist, + style-text-properties?, + number-text-with-fillchar?, + # https://issues.oasis-open.org/browse/OFFICE-3765 + (any-time, + (number-text-with-fillchar?) + # https://issues.oasis-open.org/browse/OFFICE-3765 + )+, + style-map* + } +number-time-style-attlist = + attribute number:truncate-on-overflow { boolean }? +number-week-of-year = + element number:week-of-year { common-calendar-attlist, empty } +number-year = + element number:year { + number-year-attlist, common-calendar-attlist, empty + } +number-year-attlist = attribute number:style { "short" | "long" }? +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?, + element meta:creator-initials { text }?, + # https://issues.oasis-open.org/browse/OFFICE-3776 + (text-p | text-list)* + } +office-annotation-attlist = + attribute office:display { boolean }? + & common-office-annotation-name-attlist? +office-annotation-end = + element office:annotation-end { office-annotation-end-attlist } +office-annotation-end-attlist = common-office-annotation-name-attlist +office-automatic-styles = + element office:automatic-styles { styles & style-page-layout* }? +office-binary-data = element office:binary-data { base64Binary } office-body = element office:body { office-body-content } office-body-content = element office:text { @@ -149,153 +2742,102 @@ office-body-content = office-image-content-epilogue } | office-database -office-text-content-prelude = - office-forms, text-tracked-changes, text-decls, table-decls -office-text-content-main = - text-content* - | (text-page-sequence, (shape)*) -text-content = - text-h - | text-p - | text-list - | text-numbered-paragraph - | table-table - | 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 = - attribute text:global { boolean }? - & attribute text:use-soft-page-breaks { boolean }? -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-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-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-change-info = + element office:change-info { dc-creator, dc-date, text-p* } 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-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 +office-chart-content-main = chart-chart +office-chart-content-prelude = text-decls, table-decls +office-database = + element office:database { + db-data-source, + db-forms?, + db-reports?, + db-queries?, + db-table-presentations?, + db-schema-definition? } -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 } - & 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+ +office-dde-source = + element office:dde-source { + office-dde-source-attlist, common-dde-connection-decl-attlist } -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 +office-dde-source-attlist = + attribute office:name { \string }? + & attribute office:conversion-mode { + "into-default-style-data-style" + | "into-english-number" + | "keep-text" + }? +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 } -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+ +office-document-attrs = attribute office:mimetype { \string } +office-document-common-attrs = + attribute office:version { "1.3" } + & attribute grddl:transformation { + list { anyIRI* } + }? +office-document-content = + element office:document-content { + office-document-common-attrs, + office-scripts, + office-font-face-decls, + office-automatic-styles, + office-body } -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-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-styles = + element office:document-styles { + office-document-common-attrs, + office-font-face-decls, + office-styles, + office-automatic-styles, + office-master-styles + } +office-drawing-attlist = empty +office-drawing-content-epilogue = table-functions +office-drawing-content-main = draw-page* +office-drawing-content-prelude = text-decls, table-decls +office-event-listeners = + element office:event-listeners { + (script-event-listener | presentation-event-listener)* } -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* - & style-default-page-layout? - & 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* - & table-table-template* +office-forms = + element office:forms { + office-forms-attlist, (form-form | xforms-model)* }? -office-automatic-styles = - element office:automatic-styles { styles & style-page-layout* }? +office-forms-attlist = + attribute form:automatic-focus { boolean }? + & attribute form:apply-design-mode { boolean }? +office-image-attlist = empty +office-image-content-epilogue = empty +office-image-content-main = draw-frame +office-image-content-prelude = empty 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 = element office:meta { office-meta-content-strict }? +office-meta-content-strict = office-meta-data* office-meta-data = element meta:generator { \string } | element dc:title { \string } @@ -362,23 +2904,66 @@ office-meta-data = \string) | text) } -dc-creator = element dc:creator { \string } -dc-date = element dc:date { dateTime } -text-h = - element text:h { - heading-attrs, - paragraph-attrs, - text-number?, - paragraph-content-or-hyperlink* +office-presentation-attlist = empty +office-presentation-content-epilogue = + presentation-settings, table-functions +office-presentation-content-main = draw-page* +office-presentation-content-prelude = + text-decls, table-decls, presentation-decls +# removed from text as well +# +# +# +# +# +# +# +office-script = + element office:script { + office-script-attlist, + mixed { anyElements } } -heading-attrs = - attribute text:outline-level { positiveInteger } - & attribute text:restart-numbering { boolean }? - & attribute text:start-value { nonNegativeInteger }? - & attribute text:is-list-header { boolean }? -text-number = element text:number { \string } -text-p = - element text:p { paragraph-attrs, paragraph-content-or-hyperlink* } +office-script-attlist = attribute script:language { \string } +office-scripts = + element office:scripts { office-script*, office-event-listeners? }? +office-settings = element office:settings { config-config-item-set+ }? +office-spreadsheet-attlist = + attribute table:structure-protected { boolean }?, + attribute table:protection-key { \string }?, + attribute table:protection-key-digest-algorithm { anyIRI }? +office-spreadsheet-content-epilogue = table-functions +office-spreadsheet-content-main = table-table* +office-spreadsheet-content-prelude = + table-tracked-changes?, text-decls, table-decls +office-styles = + element office:styles { + styles + & style-default-style* + & style-default-page-layout? + & 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* + & table-table-template* + }? +office-text-attlist = + attribute text:global { boolean }? + & attribute text:use-soft-page-breaks { boolean }? +office-text-content-epilogue = table-functions +office-text-content-main = + text-content* + | (text-page-sequence, (shape)*) +office-text-content-prelude = + office-forms, text-tracked-changes, text-decls, table-decls paragraph-attrs = attribute text:style-name { styleNameRef }? & attribute text:class-names { styleNameRefs }? @@ -386,99 +2971,6 @@ paragraph-attrs = & (xml-id, attribute text:id { NCName }?)? & common-in-content-meta-attlist? -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 }? - & attribute text:continue-numbering { boolean }? - & attribute text:continue-list { IDREF }? - & xml-id? -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 }? - & attribute text:style-override { styleNameRef }? - & xml-id? -text-list-header = - element text:list-header { - text-list-header-attr, text-list-item-content - } -text-list-header-attr = xml-id? -text-numbered-paragraph = - element text:numbered-paragraph { - text-numbered-paragraph-attr, text-number?, (text-p | text-h) - } -text-numbered-paragraph-attr = - attribute text:list-id { NCName } - & attribute text:level { positiveInteger }? - & (attribute text:style-name { styleNameRef }, - attribute text:continue-numbering { boolean }, - attribute text:start-value { nonNegativeInteger })? - & xml-id? -text-section = - element text:section { - text-section-attlist, - (text-section-source | text-section-source-dde | empty), - text-content* - } -text-section-attlist = - common-section-attlist - & (attribute text:display { "true" | "none" } - | (attribute text:display { "condition" }, - attribute text:condition { \string }) - | empty) -common-section-attlist = - attribute text:style-name { styleNameRef }? - & attribute text:name { \string } - & attribute text:protected { boolean }? - & attribute text:protection-key { \string }? - & attribute text:protection-key-digest-algorithm { anyIRI }? - & xml-id? -text-section-source = - element text:section-source { text-section-source-attr } -text-section-source-attr = - (attribute xlink:type { "simple" }, - attribute xlink:href { anyIRI }, - attribute xlink:show { "embed" }?)? - & attribute text:section-name { \string }? - & 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 = attribute text:track-changes { boolean }? -text-changed-region = - element text:changed-region { - text-changed-region-attr, text-changed-region-content - } -text-changed-region-attr = - xml-id, - attribute text:id { NCName }? -text-changed-region-content = - element text:insertion { office-change-info } - | element text:deletion { office-change-info, text-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-or-hyperlink = paragraph-content | text-a paragraph-content = text | element text:s { @@ -605,7 +3097,9 @@ paragraph-content = text } | element text:text-input { common-field-description-attlist, text } - | element text:initial-creator { common-field-fixed-attlist, text } + | text-drop-down + | # OFFICE-3881 + element text:initial-creator { common-field-fixed-attlist, text } | element text:creation-date { (common-field-fixed-attlist & common-field-data-style-name-attlist @@ -801,2062 +3295,37 @@ paragraph-content = | element presentation:header { empty } | element presentation:footer { empty } | element presentation:date-time { empty } -text-tab-attr = attribute text:tab-ref { nonNegativeInteger }? -text-a = - element text:a { - text-a-attlist, office-event-listeners?, paragraph-content* - } -text-a-attlist = - attribute office:name { \string }? - & attribute office:title { \string }? - & attribute xlink:type { "simple" } - & attribute xlink:href { anyIRI } - & attribute xlink:actuate { "onRequest" }? - & attribute office:target-frame-name { targetFrameName }? - & attribute xlink:show { "new" | "replace" }? - & attribute text:style-name { styleNameRef }? - & attribute text:visited-style-name { styleNameRef }? -text-meta-attlist = common-in-content-meta-attlist? & xml-id? -text-bookmark = element text:bookmark { text-bookmark-attlist, empty } -text-bookmark-start = - element text:bookmark-start { text-bookmark-start-attlist, empty } -text-bookmark-end = - element text:bookmark-end { text-bookmark-end-attlist, empty } -text-bookmark-attlist = - attribute text:name { \string } - & xml-id? -text-bookmark-start-attlist = - attribute text:name { \string } - & xml-id? - & common-in-content-meta-attlist? -text-bookmark-end-attlist = attribute text:name { \string } -text-note-class = attribute text:note-class { "footnote" | "endnote" } -text-date-attlist = - (common-field-fixed-attlist & common-field-data-style-name-attlist) - & attribute text:date-value { dateOrDateTime }? - & attribute text:date-adjust { duration }? -text-time-attlist = - (common-field-fixed-attlist & common-field-data-style-name-attlist) - & attribute text:time-value { timeOrDateTime }? - & attribute text:time-adjust { duration }? -text-page-number-attlist = - (common-field-num-format-attlist & common-field-fixed-attlist) - & attribute text:page-adjust { integer }? - & attribute text:select-page { "previous" | "current" | "next" }? -text-page-continuation-attlist = - attribute text:select-page { "previous" | "next" } - & attribute text:string-value { \string }? -text-chapter-attlist = - attribute text:display { - "name" - | "number" - | "number-and-name" - | "plain-number-and-name" - | "plain-number" - } - & attribute text:outline-level { nonNegativeInteger } -text-file-name-attlist = - attribute text:display { - "full" | "path" | "name" | "name-and-extension" - }? - & common-field-fixed-attlist -text-template-name-attlist = - attribute text:display { - "full" | "path" | "name" | "name-and-extension" | "area" | "title" - }? -text-variable-decl = - element text:variable-decl { - common-field-name-attlist, common-value-type-attlist - } -text-user-field-decl = - element text:user-field-decl { - common-field-name-attlist, - common-field-formula-attlist?, - common-value-and-type-attlist - } -text-sequence-decl = - element text:sequence-decl { text-sequence-decl-attlist } -text-sequence-decl-attlist = - common-field-name-attlist - & attribute text:display-outline-level { nonNegativeInteger } - & attribute text:separation-character { character }? -text-sequence-ref-name = attribute text:ref-name { \string }? -common-field-database-table = - common-field-database-table-attlist, common-field-database-name -common-field-database-name = - attribute text:database-name { \string }? - | form-connection-resource -common-field-database-table-attlist = - attribute text:table-name { \string } - & attribute text:table-type { "table" | "query" | "command" }? -text-database-display-attlist = - common-field-database-table - & common-field-data-style-name-attlist - & attribute text:column-name { \string } -text-database-next-attlist = - common-field-database-table - & attribute text:condition { \string }? -text-database-row-select-attlist = - common-field-database-table - & attribute text:condition { \string }? - & attribute text:row-number { nonNegativeInteger }? -text-set-page-variable-attlist = - attribute text:active { boolean }? - & attribute text:page-adjust { integer }? -text-get-page-variable-attlist = common-field-num-format-attlist -text-placeholder-attlist = - attribute text:placeholder-type { - "text" | "table" | "text-box" | "image" | "object" - } - & common-field-description-attlist -text-conditional-text-attlist = - attribute text:condition { \string } - & attribute text:string-value-if-true { \string } - & attribute text:string-value-if-false { \string } - & attribute text:current-value { boolean }? -text-hidden-text-attlist = - attribute text:condition { \string } - & attribute text:string-value { \string } - & attribute text:is-hidden { boolean }? -text-common-ref-content = - text - & attribute text:ref-name { \string }? -text-bookmark-ref-content = - attribute text:reference-format { - common-ref-format-values - | "number-no-superior" - | "number-all-superior" - | "number" - }? -text-note-ref-content = - attribute text:reference-format { common-ref-format-values }? - & text-note-class -text-sequence-ref-content = - attribute text:reference-format { - common-ref-format-values - | "category-and-value" - | "caption" - | "value" - }? -common-ref-format-values = "page" | "chapter" | "direction" | "text" -text-hidden-paragraph-attlist = - attribute text:condition { \string } - & attribute text:is-hidden { boolean }? -text-meta-field-attlist = xml-id & common-field-data-style-name-attlist -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 { \string }? -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 { \string }? -common-field-data-style-name-attlist = - attribute style:data-style-name { styleNameRef }? -common-field-num-format-attlist = common-num-format-attlist? -text-toc-mark-start-attrs = text-id, text-outline-level -text-outline-level = attribute text:outline-level { positiveInteger }? -text-id = attribute text:id { \string } -text-index-name = attribute text:index-name { \string } -text-alphabetical-index-mark-attrs = - attribute text:key1 { \string }? - & attribute text:key2 { \string }? - & attribute text:string-value-phonetic { \string }? - & attribute text:key1-phonetic { \string }? - & attribute text:key2-phonetic { \string }? - & attribute text:main-entry { boolean }? -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 { - common-section-attlist, index-content-main* - } -text-table-of-content = - element text:table-of-content { - common-section-attlist, - 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 }? - & attribute text:use-outline-level { boolean }? - & attribute text:use-index-marks { boolean }? - & attribute text:use-index-source-styles { boolean }? - & attribute text:index-scope { "document" | "chapter" }? - & 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 } - & attribute text:style-name { styleNameRef } -text-illustration-index = - element text:illustration-index { - common-section-attlist, - 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-relative-tab-stop-position-attr - & attribute text:use-caption { boolean }? - & attribute text:caption-sequence-name { \string }? - & attribute text:caption-sequence-format { - "text" | "category-and-value" | "caption" - }? -text-index-scope-attr = - attribute text:index-scope { "document" | "chapter" }? -text-relative-tab-stop-position-attr = - attribute text:relative-tab-stop-position { boolean }? -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-chapter - | 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 { - common-section-attlist, 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 { - common-section-attlist, 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-relative-tab-stop-position-attr - & attribute text:use-spreadsheet-objects { boolean }? - & attribute text:use-math-objects { boolean }? - & attribute text:use-draw-objects { boolean }? - & attribute text:use-chart-objects { boolean }? - & 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 { - common-section-attlist, 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:use-index-marks { boolean }? - & attribute text:use-index-source-styles { boolean }? - & attribute text:use-graphics { boolean }? - & attribute text:use-tables { boolean }? - & attribute text:use-floating-frames { boolean }? - & attribute text:use-objects { boolean }? - & attribute text:copy-outline-levels { boolean }? - & attribute text:index-name { \string } -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 } - & attribute text:style-name { styleNameRef } -text-alphabetical-index = - element text:alphabetical-index { - common-section-attlist, - 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 - & attribute text:ignore-case { boolean }? - & attribute text:main-entry-style-name { styleNameRef }? - & attribute text:alphabetical-separators { boolean }? - & attribute text:combine-entries { boolean }? - & attribute text:combine-entries-with-dash { boolean }? - & attribute text:combine-entries-with-pp { boolean }? - & attribute text:use-keys-as-entries { boolean }? - & attribute text:capitalize-entries { boolean }? - & attribute text:comma-separated { boolean }? - & attribute fo:language { languageCode }? - & attribute fo:country { countryCode }? - & attribute fo:script { scriptCode }? - & attribute style:rfc-language-tag { language }? - & attribute text:sort-algorithm { \string }? -text-alphabetical-index-auto-mark-file = - element text:alphabetical-index-auto-mark-file { - attribute xlink:type { "simple" }, - attribute xlink:href { anyIRI } - } -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" } - & attribute text:style-name { styleNameRef } -text-bibliography = - element text:bibliography { - common-section-attlist, 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 } - & 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 = - attribute text:display { - "name" - | "number" - | "number-and-name" - | "plain-number" - | "plain-number-and-name" - }? - & attribute text:outline-level { positiveInteger }? -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 }? - & 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 }? - & (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-title?, - table-desc?, - table-table-source?, - office-dde-source?, - table-scenario?, - office-forms?, - table-shapes?, - table-columns-and-groups, - table-rows-and-groups, - table-named-expressions? - } -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 }? - & attribute table:style-name { styleNameRef }? - & attribute table:template-name { \string }? - & attribute table:use-first-row-styles { boolean }? - & attribute table:use-last-row-styles { boolean }? - & attribute table:use-first-column-styles { boolean }? - & attribute table:use-last-column-styles { boolean }? - & attribute table:use-banding-rows-styles { boolean }? - & attribute table:use-banding-columns-styles { boolean }? - & attribute table:protected { boolean }? - & attribute table:protection-key { \string }? - & attribute table:protection-key-digest-algorithm { anyIRI }? - & attribute table:print { boolean }? - & attribute table:print-ranges { cellRangeAddressList }? - & xml-id? - & attribute table:is-sub-table { boolean }? -table-title = element table:title { text } -table-desc = element table:desc { text } -table-table-row = - element table:table-row { - table-table-row-attlist, - (table-table-cell | table-covered-table-cell)+ - } -table-table-row-attlist = - attribute table:number-rows-repeated { positiveInteger }? - & attribute table:style-name { styleNameRef }? - & attribute table:default-cell-style-name { styleNameRef }? - & attribute table:visibility { table-visibility-value }? - & xml-id? -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 = - attribute table:number-columns-repeated { positiveInteger }? - & attribute table:style-name { styleNameRef }? - & attribute table:content-validation-name { \string }? - & attribute table:formula { \string }? - & common-value-and-type-attlist? - & attribute table:protect { boolean }? - & attribute table:protected { boolean }? - & xml-id? - & common-in-content-meta-attlist? -table-table-cell-attlist-extra = - attribute table:number-columns-spanned { positiveInteger }? - & attribute table:number-rows-spanned { positiveInteger }? - & attribute table:number-matrix-columns-spanned { positiveInteger }? - & attribute table:number-matrix-rows-spanned { positiveInteger }? -table-table-column = - element table:table-column { table-table-column-attlist, empty } -table-table-column-attlist = - attribute table:number-columns-repeated { positiveInteger }? - & attribute table:style-name { styleNameRef }? - & attribute table:visibility { table-visibility-value }? - & attribute table:default-cell-style-name { styleNameRef }? - & xml-id? -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 = 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 = attribute table:display { boolean }? -cellAddress = - xsd:string { - pattern = "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+" - } -cellRangeAddress = - xsd:string { - pattern = - "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?" - } - | xsd:string { - pattern = - "($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+:($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+" - } - | xsd:string { - pattern = - "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+" - } -cellRangeAddressList = - xsd:string - >> dc:description [ - 'Value is a space separated list of "cellRangeAddress" patterns' - ] -table-table-source = - element table:table-source { - table-table-source-attlist, table-linked-source-attlist, empty - } -table-table-source-attlist = - attribute table:mode { "copy-all" | "copy-results-only" }? - & attribute table:table-name { \string }? -table-linked-source-attlist = - attribute xlink:type { "simple" } - & attribute xlink:href { anyIRI } - & attribute xlink:actuate { "onRequest" }? - & attribute table:filter-name { \string }? - & attribute table:filter-options { \string }? - & attribute table:refresh-delay { duration }? -table-scenario = - element table:scenario { table-scenario-attlist, empty } -table-scenario-attlist = - attribute table:scenario-ranges { cellRangeAddressList } - & attribute table:is-active { boolean } - & attribute table:display-border { boolean }? - & attribute table:border-color { color }? - & attribute table:copy-back { boolean }? - & attribute table:copy-styles { boolean }? - & attribute table:copy-formulas { boolean }? - & attribute table:comment { \string }? - & 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 } - & 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" - } - & 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 }? - & attribute table:direction { - "from-another-table" | "to-another-table" | "from-same-table" - } - & attribute table:contains-error { boolean }? -table-highlighted-range-attlist-invalid = - attribute table:marked-invalid { boolean } -office-spreadsheet-attlist = - attribute table:structure-protected { boolean }?, - attribute table:protection-key { \string }?, - attribute table:protection-key-digest-algorithm { anyIRI }? -table-calculation-settings = - element table:calculation-settings { - table-calculation-setting-attlist, - table-null-date?, - table-iteration? - } -table-calculation-setting-attlist = - attribute table:case-sensitive { boolean }? - & attribute table:precision-as-shown { boolean }? - & attribute table:search-criteria-must-apply-to-whole-cell { - boolean - }? - & attribute table:automatic-find-labels { boolean }? - & attribute table:use-regular-expressions { boolean }? - & attribute table:use-wildcards { boolean }? - & attribute table:null-year { positiveInteger }? -table-null-date = - element table:null-date { - attribute table:value-type { "date" }?, - attribute table:date-value { date }?, - empty - } -table-iteration = - element table:iteration { - attribute table:status { "enable" | "disable" }?, - attribute table:steps { positiveInteger }?, - 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 } - & attribute table:condition { \string }? - & attribute table:base-cell-address { cellAddress }? - & attribute table:allow-empty-cell { boolean }? - & attribute table:display-list { - "none" | "unsorted" | "sort-ascending" - }? -table-help-message = - element table:help-message { - attribute table:title { \string }?, - attribute table:display { boolean }?, - text-p* - } -table-error-message = - element table:error-message { - attribute table:title { \string }?, - attribute table:display { boolean }?, - attribute table:message-type { - "stop" | "warning" | "information" - }?, - text-p* - } -table-error-macro = - element table:error-macro { - 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 } - & attribute table:data-cell-range-address { cellRangeAddress } - & 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 }?, - 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 }? - & attribute table:is-selection { boolean }? - & attribute table:on-update-keep-styles { boolean }? - & attribute table:on-update-keep-size { boolean }? - & attribute table:has-persistent-data { boolean }? - & attribute table:orientation { "column" | "row" }? - & attribute table:contains-header { boolean }? - & attribute table:display-filter-buttons { boolean }? - & attribute table:target-range-address { cellRangeAddress } - & 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 } - & attribute table:sql-statement { \string } - & 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 } - & 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 } - & attribute table:query-name { \string } -table-sort = element table:sort { table-sort-attlist, table-sort-by+ } -table-sort-attlist = - attribute table:bind-styles-to-content { boolean }? - & attribute table:target-range-address { cellRangeAddress }? - & attribute table:case-sensitive { boolean }? - & attribute table:language { languageCode }? - & attribute table:country { countryCode }? - & attribute table:script { scriptCode }? - & attribute table:rfc-language-tag { language }? - & attribute table:algorithm { \string }? - & attribute table:embedded-number-behavior { - "alpha-numeric" | "integer" | "double" - }? -table-sort-by = element table:sort-by { table-sort-by-attlist, empty } -table-sort-by-attlist = - attribute table:field-number { nonNegativeInteger } - & attribute table:data-type { - "text" | "number" | "automatic" | \string - }? - & 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 = - attribute table:bind-styles-to-content { boolean }? - & attribute table:case-sensitive { boolean }? - & attribute table:page-breaks-on-group-change { boolean }? -table-sort-groups = - element table:sort-groups { table-sort-groups-attlist, empty } -table-sort-groups-attlist = - attribute table:data-type { - "text" | "number" | "automatic" | \string - }? - & 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 } - & attribute table:function { - "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 }? - & attribute table:condition-source { "self" | "cell-range" }? - & attribute table:condition-source-range-address { cellRangeAddress }? - & 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, table-filter-set-item* - } -table-filter-condition-attlist = - attribute table:field-number { nonNegativeInteger } - & attribute table:value { \string | double } - & attribute table:operator { \string } - & attribute table:case-sensitive { \string }? - & attribute table:data-type { "text" | "number" }? -table-filter-set-item = - element table:filter-set-item { - attribute table:value { \string }, - empty - } -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 } - & attribute table:application-data { \string }? - & attribute table:grand-total { "none" | "row" | "column" | "both" }? - & attribute table:ignore-empty-rows { boolean }? - & attribute table:identify-categories { boolean }? - & attribute table:target-range-address { cellRangeAddress } - & attribute table:buttons { cellRangeAddressList }? - & attribute table:show-filter-button { boolean }? - & 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 } - & attribute table:source-name { \string } - & attribute table:object-name { \string } - & attribute table:user-name { \string }? - & 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 } - & (attribute table:orientation { - "row" | "column" | "data" | "hidden" - } - | (attribute table:orientation { "page" }, - attribute table:selected-page { \string })) - & attribute table:is-data-layout-field { \string }? - & attribute table:function { - "auto" - | "average" - | "count" - | "countnums" - | "max" - | "min" - | "product" - | "stdev" - | "stdevp" - | "sum" - | "var" - | "varp" - | \string - }? - & 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 } - & attribute table:display { boolean }? - & 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 } - & attribute table:data-field { \string } - & attribute table:member-count { nonNegativeInteger } - & 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" }) - & 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" - } - & 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 } - & ((attribute table:member-type { "named" }, - attribute table:member-name { \string }) - | attribute table:member-type { "previous" | "next" }) - & 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 } - & (attribute table:date-start { dateOrDateTime | "auto" } - | attribute table:start { double | "auto" }) - & (attribute table:date-end { dateOrDateTime | "auto" } - | attribute table:end { double | "auto" }) - & attribute table:step { double } - & 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 { - "average" - | "count" - | "countnums" - | "max" - | "min" - | "product" - | "stdev" - | "stdevp" - | "sum" - | "var" - | "varp" - | \string - } - & attribute table:source-cell-range-addresses { cellRangeAddressList } - & attribute table:target-cell-address { cellAddress } - & attribute table:use-labels { "none" | "row" | "column" | "both" }? - & 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 = - 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" } - & attribute table:position { integer } - & attribute table:count { positiveInteger }? - & 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" } - & attribute table:position { integer } - & attribute table:table { integer }? - & 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 } - & 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 }? - & attribute table:matrix-covered { boolean }? - & 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 } - & attribute table:acceptance-state { - "accepted" | "rejected" | "pending" - }? - & 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 }? - & attribute style:page-layout-name { styleNameRef } - & 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 } - & attribute draw:protected { boolean }? - & attribute draw:display { "always" | "screen" | "printer" | "none" }? -draw-page = - element draw:page { - common-presentation-header-footer-attlist, - draw-page-attlist, - svg-title?, - svg-desc?, - draw-layer-set?, - office-forms?, - shape*, - (presentation-animations | animation-element)?, - presentation-notes? - } -draw-page-attlist = - attribute draw:name { \string }? - & attribute draw:style-name { styleNameRef }? - & attribute draw:master-page-name { styleNameRef } - & attribute presentation:presentation-page-layout-name { - styleNameRef - }? - & (xml-id, - attribute draw:id { NCName }?)? - & attribute draw:nav-order { IDREFS }? -common-presentation-header-footer-attlist = - attribute presentation:use-header-name { \string }? - & attribute presentation:use-footer-name { \string }? - & attribute presentation:use-date-time-name { \string }? -shape = shape-instance | draw-a -shape-instance = - 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 }? - | (attribute svg:rx { nonNegativeLength }?, - attribute svg:ry { 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 } - & 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)) - & 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-pos-attlist) - | (common-draw-position-attlist, common-draw-size-attlist)), - common-draw-circle-ellipse-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-pos-attlist = - attribute svg:cx { coordinate }, - attribute svg:cy { coordinate } -draw-circle-attlist = attribute svg:r { length } -common-draw-circle-ellipse-attlist = - attribute draw:kind { "full" | "section" | "cut" | "arc" }? - & attribute draw:start-angle { angle }? - & attribute draw:end-angle { angle }? -draw-ellipse = - element draw:ellipse { - ((draw-ellipse-attlist, common-draw-circle-ellipse-pos-attlist) - | (common-draw-position-attlist, common-draw-size-attlist)), - common-draw-circle-ellipse-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, - common-draw-viewbox-attlist, - svg-title?, - svg-desc?, - office-event-listeners?, - draw-glue-point*, - draw-text - } -draw-connector-attlist = - attribute draw:type { "standard" | "lines" | "line" | "curve" }? - & (attribute svg:x1 { coordinate }, - attribute svg:y1 { coordinate })? - & attribute draw:start-shape { IDREF }? - & attribute draw:start-glue-point { nonNegativeInteger }? - & (attribute svg:x2 { coordinate }, - attribute svg:y2 { coordinate })? - & attribute draw:end-shape { IDREF }? - & attribute draw:end-glue-point { nonNegativeInteger }? - & attribute draw:line-skew { - list { length, (length, length?)? } - }? - & attribute svg:d { pathData }? -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 })? - & 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 } - & 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 { \string }? -common-draw-id-attlist = - (xml-id, - attribute draw:id { NCName }?)? -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 }? - & attribute table:table-background { boolean }? - & common-text-anchor-attlist -common-text-anchor-attlist = - attribute text:anchor-type { - "page" | "frame" | "paragraph" | "char" | "as-char" - }? - & 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 } - & attribute svg:x { distance | percent } - & attribute svg:y { distance | percent } - & attribute draw:align { - "top-left" - | "top" - | "top-right" - | "left" - | "center" - | "right" - | "bottom-left" - | "bottom-right" - }? - & 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 - | table-table)*, - 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 }? - & attribute draw:corner-radius { nonNegativeLength }? - & attribute fo:min-height { length | percent }? - & attribute fo:min-width { length | percent }? - & attribute fo:max-height { length | percent }? - & attribute fo:max-width { length | percent }? - & (xml-id, - attribute text:id { NCName }?)? -draw-image = - element draw:image { - draw-image-attlist, - (common-draw-data-attlist | office-binary-data), - draw-text - } -common-draw-data-attlist = - attribute xlink:type { "simple" }, - attribute xlink:href { anyIRI }, - attribute xlink:show { "embed" }?, - attribute xlink:actuate { "onLoad" }? -office-binary-data = element office:binary-data { base64Binary } -draw-image-attlist = - attribute draw:filter-name { \string }? - & xml-id? -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 { - cellRangeAddressList | \string - }? - & xml-id? -draw-object-ole-attlist = - attribute draw:class-id { \string }? - & xml-id? -draw-applet = - element draw:applet { - draw-applet-attlist, common-draw-data-attlist?, draw-param* - } -draw-applet-attlist = - attribute draw:code { \string }? - & attribute draw:object { \string }? - & attribute draw:archive { \string }? - & attribute draw:may-script { boolean }? - & xml-id? -draw-plugin = - element draw:plugin { - draw-plugin-attlist, common-draw-data-attlist, draw-param* - } -draw-plugin-attlist = - attribute draw:mime-type { \string }? - & xml-id? -draw-param = element draw:param { draw-param-attlist, empty } -draw-param-attlist = - attribute draw:name { \string }? - & attribute draw:value { \string }? -draw-floating-frame = - element draw:floating-frame { - draw-floating-frame-attlist, common-draw-data-attlist - } -draw-floating-frame-attlist = - attribute draw:frame-name { \string }? - & xml-id? -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, shape-instance } -draw-a-attlist = - attribute xlink:type { "simple" } - & attribute xlink:href { anyIRI } - & attribute xlink:actuate { "onRequest" }? - & attribute office:target-frame-name { targetFrameName }? - & attribute xlink:show { "new" | "replace" }? - & attribute office:name { \string }? - & attribute office:title { \string }? - & attribute office:server-map { boolean }? - & xml-id? -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:type { "simple" }, - attribute xlink:href { anyIRI }, - attribute office:target-frame-name { targetFrameName }?, - attribute xlink:show { "new" | "replace" }?)? - & attribute office:name { \string }? - & 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*, - draw-glue-point* - } -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 }? - & attribute dr3d:projection { "parallel" | "perspective" }? - & attribute dr3d:distance { length }? - & attribute dr3d:focal-length { length }? - & attribute dr3d:shadow-slant { angle }? - & attribute dr3d:shade-mode { - "flat" | "phong" | "gouraud" | "draft" - }? - & attribute dr3d:ambient-color { color }? - & attribute dr3d:lighting-mode { boolean }? -common-dr3d-transform-attlist = attribute dr3d:transform { \string }? -dr3d-light = element dr3d:light { dr3d-light-attlist, empty } -dr3d-light-attlist = - attribute dr3d:diffuse-color { color }? - & attribute dr3d:direction { vector3D } - & attribute dr3d:enabled { boolean }? - & 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 }? - & 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 }? - & attribute draw:data { \string }? -draw-enhanced-geometry = - element draw:enhanced-geometry { - draw-enhanced-geometry-attlist, draw-equation*, draw-handle* - } -draw-enhanced-geometry-attlist = - attribute draw:type { custom-shape-type }? - & attribute svg:viewBox { - list { integer, integer, integer, integer } - }? - & attribute draw:mirror-vertical { boolean }? - & attribute draw:mirror-horizontal { boolean }? - & attribute draw:text-rotate-angle { angle }? - & attribute draw:extrusion-allowed { boolean }? - & attribute draw:text-path-allowed { boolean }? - & attribute draw:concentric-gradient-fill-allowed { boolean }? - & attribute draw:extrusion { boolean }? - & attribute draw:extrusion-brightness { zeroToHundredPercent }? - & attribute draw:extrusion-depth { - list { length, double } - }? - & attribute draw:extrusion-diffusion { percent }? - & attribute draw:extrusion-number-of-line-segments { integer }? - & attribute draw:extrusion-light-face { boolean }? - & attribute draw:extrusion-first-light-harsh { boolean }? - & attribute draw:extrusion-second-light-harsh { boolean }? - & attribute draw:extrusion-first-light-level { zeroToHundredPercent }? - & attribute draw:extrusion-second-light-level { - zeroToHundredPercent - }? - & attribute draw:extrusion-first-light-direction { vector3D }? - & attribute draw:extrusion-second-light-direction { vector3D }? - & attribute draw:extrusion-metal { boolean }? - & attribute dr3d:shade-mode { - "flat" | "phong" | "gouraud" | "draft" - }? - & attribute draw:extrusion-rotation-angle { - list { angle, angle } - }? - & attribute draw:extrusion-rotation-center { vector3D }? - & attribute draw:extrusion-shininess { zeroToHundredPercent }? - & attribute draw:extrusion-skew { - list { double, angle } - }? - & attribute draw:extrusion-specularity { zeroToHundredPercent }? - & attribute dr3d:projection { "parallel" | "perspective" }? - & attribute draw:extrusion-viewpoint { point3D }? - & attribute draw:extrusion-origin { - list { extrusionOrigin, extrusionOrigin } - }? - & attribute draw:extrusion-color { boolean }? - & attribute draw:enhanced-path { \string }? - & attribute draw:path-stretchpoint-x { double }? - & attribute draw:path-stretchpoint-y { double }? - & attribute draw:text-areas { \string }? - & attribute draw:glue-points { \string }? - & attribute draw:glue-point-type { - "none" | "segments" | "rectangle" - }? - & attribute draw:glue-point-leaving-directions { \string }? - & attribute draw:text-path { boolean }? - & attribute draw:text-path-mode { "normal" | "path" | "shape" }? - & attribute draw:text-path-scale { "path" | "shape" }? - & attribute draw:text-path-same-letter-heights { boolean }? - & attribute draw:modifiers { \string }? -custom-shape-type = "non-primitive" | \string +paragraph-content-or-hyperlink = paragraph-content | text-a +pathData = xsd:string +percent = xsd:string { pattern = "-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%" } point3D = xsd:string { pattern = "\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))){2}[ ]*\)" } -extrusionOrigin = - xsd:double { minInclusive = "-0.5" maxInclusive = "0.5" } -draw-equation = element draw:equation { draw-equation-attlist, empty } -draw-equation-attlist = - attribute draw:name { \string }? - & attribute draw:formula { \string }? -draw-handle = element draw:handle { draw-handle-attlist, empty } -draw-handle-attlist = - attribute draw:handle-mirror-vertical { boolean }? - & attribute draw:handle-mirror-horizontal { boolean }? - & attribute draw:handle-switched { boolean }? - & attribute draw:handle-position { \string } - & attribute draw:handle-range-x-minimum { \string }? - & attribute draw:handle-range-x-maximum { \string }? - & attribute draw:handle-range-y-minimum { \string }? - & attribute draw:handle-range-y-maximum { \string }? - & attribute draw:handle-polar { \string }? - & attribute draw:handle-radius-range-minimum { \string }? - & attribute draw:handle-radius-range-maximum { \string }? -presentation-shape-attlist = - attribute presentation:class { presentation-classes }? - & attribute presentation:placeholder { boolean }? - & attribute presentation:user-transformed { boolean }? +points = + xsd:string { pattern = "-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*" } +positiveInteger = xsd:positiveInteger +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))" + } +presentation-animation-elements = + presentation-show-shape + | presentation-show-text + | presentation-hide-shape + | presentation-hide-text + | presentation-dim + | presentation-play +presentation-animation-group = + element presentation:animation-group { + presentation-animation-elements* + } +presentation-animations = + element presentation:animations { + (presentation-animation-elements | presentation-animation-group)* + } presentation-classes = "title" | "outline" @@ -2874,101 +3343,21 @@ presentation-classes = | "footer" | "date-time" | "page-number" -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:type { "simple" }, - attribute xlink:href { anyIRI }, - attribute xlink:actuate { "onRequest" }?, - attribute xlink:show { "new" | "replace" }?, - empty - } -presentation-sound-attlist = - attribute presentation:play-full { boolean }? - & xml-id? -presentation-show-shape = - element presentation:show-shape { - common-presentation-effect-attlist, presentation-sound? - } -common-presentation-effect-attlist = - attribute draw:shape-id { IDREF } - & attribute presentation:effect { presentationEffects }? - & attribute presentation:direction { presentationEffectDirections }? - & attribute presentation:speed { presentationSpeeds }? - & attribute presentation:delay { duration }? - & attribute presentation:start-scale { percent }? - & attribute presentation:path-id { \string }? -presentationEffects = - "none" - | "fade" - | "move" - | "stripes" - | "open" - | "close" - | "dissolve" - | "wavyline" - | "random" - | "lines" - | "laser" - | "appear" - | "hide" - | "move-short" - | "checkerboard" - | "rotate" - | "stretch" -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" -presentationSpeeds = "slow" | "medium" | "fast" -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-date-time-decl-attlist = + attribute presentation:name { \string } + & attribute presentation:source { "fixed" | "current-date" } + & attribute style:data-style-name { styleNameRef }? +presentation-decl = + element presentation:header-decl { + presentation-header-decl-attlist, text } + | element presentation:footer-decl { + presentation-footer-decl-attlist, text + } + | element presentation:date-time-decl { + presentation-date-time-decl-attlist, text + } +presentation-decls = presentation-decl* presentation-dim = element presentation:dim { presentation-dim-attlist, presentation-sound? @@ -2976,40 +3365,6 @@ presentation-dim = presentation-dim-attlist = attribute draw:shape-id { IDREF } & attribute draw:color { color } -presentation-play = - element presentation:play { presentation-play-attlist, empty } -presentation-play-attlist = - attribute draw:shape-id { IDREF }, - attribute presentation:speed { presentationSpeeds }? -presentation-animation-group = - element presentation:animation-group { - presentation-animation-elements* - } -common-anim-attlist = - attribute presentation:node-type { - "default" - | "on-click" - | "with-previous" - | "after-previous" - | "timing-root" - | "main-sequence" - | "interactive-sequence" - }? - & attribute presentation:preset-id { \string }? - & attribute presentation:preset-sub-type { \string }? - & attribute presentation:preset-class { - "custom" - | "entrance" - | "exit" - | "emphasis" - | "motion-path" - | "ole-action" - | "media-call" - }? - & attribute presentation:master-element { IDREF }? - & attribute presentation:group-id { \string }? - & (xml-id, - attribute anim:id { NCName }?)? presentation-event-listener = element presentation:event-listener { presentation-event-listener-attlist, presentation-sound? @@ -3040,25 +3395,42 @@ presentation-event-listener-attlist = attribute xlink:show { "embed" }?, attribute xlink:actuate { "onRequest" }?)? & attribute presentation:verb { nonNegativeInteger }? -presentation-decls = presentation-decl* -presentation-decl = - element presentation:header-decl { - presentation-header-decl-attlist, text - } - | element presentation:footer-decl { - presentation-footer-decl-attlist, text - } - | element presentation:date-time-decl { - presentation-date-time-decl-attlist, text - } -presentation-header-decl-attlist = - attribute presentation:name { \string } presentation-footer-decl-attlist = attribute presentation:name { \string } -presentation-date-time-decl-attlist = +presentation-header-decl-attlist = attribute presentation:name { \string } - & attribute presentation:source { "fixed" | "current-date" } - & attribute style:data-style-name { styleNameRef }? +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-notes = + element presentation:notes { + common-presentation-header-footer-attlist, + presentation-notes-attlist, + office-forms, + shape* + } +presentation-notes-attlist = + attribute style:page-layout-name { styleNameRef }? + & attribute draw:style-name { styleNameRef }? +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 + } +presentation-play = + element presentation:play { presentation-play-attlist, empty } +presentation-play-attlist = + attribute draw:shape-id { IDREF }, + attribute presentation:speed { presentationSpeeds }? presentation-settings = element presentation:settings { presentation-settings-attlist, presentation-show* @@ -3080,1066 +3452,86 @@ presentation-settings-attlist = }? & attribute presentation:stay-on-top { boolean }? & attribute presentation:show-end-of-presentation-slide { boolean }? +presentation-shape-attlist = + attribute presentation:class { presentation-classes }? + & attribute presentation:placeholder { boolean }? + & attribute presentation:user-transformed { boolean }? presentation-show = element presentation:show { presentation-show-attlist, empty } presentation-show-attlist = attribute presentation:name { \string } & attribute presentation:pages { \string } -chart-chart = - element chart:chart { - chart-chart-attlist, - chart-title?, - chart-subtitle?, - chart-footer?, - chart-legend?, - chart-plot-area, - table-table? +presentation-show-shape = + element presentation:show-shape { + common-presentation-effect-attlist, presentation-sound? } -chart-chart-attlist = - attribute chart:class { namespacedToken } - & common-draw-size-attlist - & attribute chart:column-mapping { \string }? - & attribute chart:row-mapping { \string }? - & attribute chart:style-name { styleNameRef }? - & (attribute xlink:type { "simple" }, - attribute xlink:href { anyIRI })? - & xml-id? -chart-title = element chart:title { chart-title-attlist, text-p? } -chart-title-attlist = - attribute table:cell-range { cellRangeAddressList }? - & common-draw-position-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, text-p? } -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) - & common-draw-position-attlist - & (attribute style:legend-expansion { "wide" | "high" | "balanced" } - | (attribute style:legend-expansion { "custom" }, - attribute style:legend-expansion-aspect-ratio { double }) - | empty) - & 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? +presentation-show-text = + element presentation:show-text { + common-presentation-effect-attlist, presentation-sound? } -chart-plot-area-attlist = - common-draw-position-attlist - & common-draw-size-attlist - & attribute chart:style-name { styleNameRef }? - & attribute table:cell-range-address { cellRangeAddressList }? - & attribute chart:data-source-has-labels { - "none" | "row" | "column" | "both" - }? - & dr3d-scene-attlist - & common-dr3d-transform-attlist - & xml-id? -chart-wall = element chart:wall { chart-wall-attlist, empty } -chart-wall-attlist = - attribute svg:width { length }? - & attribute chart:style-name { styleNameRef }? -chart-floor = element chart:floor { chart-floor-attlist, empty } -chart-floor-attlist = - attribute svg:width { length }? - & 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 { chart-dimension } - & attribute chart:name { \string }? - & attribute chart:style-name { styleNameRef }? -chart-dimension = "x" | "y" | "z" -chart-categories = - element chart:categories { - attribute table:cell-range-address { cellRangeAddressList }? - } -chart-grid = element chart:grid { chart-grid-attlist } -chart-grid-attlist = - attribute chart:class { "major" | "minor" }? - & 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-data-label? - } -chart-series-attlist = - attribute chart:values-cell-range-address { cellRangeAddressList }? - & attribute chart:label-cell-address { cellRangeAddressList }? - & attribute chart:class { namespacedToken }? - & attribute chart:attached-axis { \string }? - & attribute chart:style-name { styleNameRef }? - & xml-id? -chart-domain = - element chart:domain { - attribute table:cell-range-address { cellRangeAddressList }? - } -chart-data-point = - element chart:data-point { - chart-data-point-attlist, chart-data-label? - } -chart-data-point-attlist = - attribute chart:repeated { positiveInteger }? - & attribute chart:style-name { styleNameRef }? - & xml-id? -chart-data-label = - element chart:data-label { chart-data-label-attlist, text-p? } -chart-data-label-attlist = - common-draw-position-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 }? - & attribute chart:dimension { chart-dimension } -chart-regression-curve = - element chart:regression-curve { - chart-regression-curve-attlist, chart-equation? - } -chart-regression-curve-attlist = - attribute chart:style-name { styleNameRef }? -chart-equation = - element chart:equation { chart-equation-attlist, text-p? } -chart-equation-attlist = - attribute chart:automatic-content { boolean }? - & attribute chart:display-r-square { boolean }? - & attribute chart:display-equation { boolean }? - & common-draw-position-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-database = - element office:database { - db-data-source, - db-forms?, - db-reports?, - db-queries?, - db-table-presentations?, - db-schema-definition? - } -db-data-source = - element db:data-source { - db-data-source-attlist, - db-connection-data, - db-driver-settings?, - db-application-connection-settings? - } -db-data-source-attlist = empty -db-connection-data = - element db:connection-data { - db-connection-data-attlist, - (db-database-description | db-connection-resource), - db-login? - } -db-connection-data-attlist = empty -db-database-description = - element db:database-description { - db-database-description-attlist, - (db-file-based-database | db-server-database) - } -db-database-description-attlist = empty -db-file-based-database = - element db:file-based-database { db-file-based-database-attlist } -db-file-based-database-attlist = - attribute xlink:type { "simple" } - & attribute xlink:href { anyIRI } - & attribute db:media-type { \string } - & attribute db:extension { \string }? -db-server-database = - element db:server-database { db-server-database-attlist, empty } -db-server-database-attlist = - attribute db:type { namespacedToken } - & (db-host-and-port | db-local-socket-name) - & attribute db:database-name { \string }? -db-host-and-port = - attribute db:hostname { \string }, - attribute db:port { positiveInteger }? -db-local-socket-name = attribute db:local-socket { \string }? -db-connection-resource = - element db:connection-resource { - db-connection-resource-attlist, empty - } -db-connection-resource-attlist = - attribute xlink:type { "simple" }, - attribute xlink:href { anyIRI }, - attribute xlink:show { "none" }?, - attribute xlink:actuate { "onRequest" }? -db-login = element db:login { db-login-attlist, empty } -db-login-attlist = - (attribute db:user-name { \string } - | attribute db:use-system-user { boolean })? - & attribute db:is-password-required { boolean }? - & attribute db:login-timeout { positiveInteger }? -db-driver-settings = - element db:driver-settings { - db-driver-settings-attlist, - db-auto-increment?, - db-delimiter?, - db-character-set?, - db-table-settings? - } -db-driver-settings-attlist = - db-show-deleted - & attribute db:system-driver-settings { \string }? - & attribute db:base-dn { \string }? - & db-is-first-row-header-line - & attribute db:parameter-name-substitution { boolean }? -db-show-deleted = attribute db:show-deleted { boolean }? -db-is-first-row-header-line = - attribute db:is-first-row-header-line { boolean }? -db-auto-increment = - element db:auto-increment { db-auto-increment-attlist, empty } -db-auto-increment-attlist = - attribute db:additional-column-statement { \string }? - & attribute db:row-retrieving-statement { \string }? -db-delimiter = element db:delimiter { db-delimiter-attlist, empty } -db-delimiter-attlist = - attribute db:field { \string }? - & attribute db:string { \string }? - & attribute db:decimal { \string }? - & attribute db:thousand { \string }? -db-character-set = - element db:character-set { db-character-set-attlist, empty } -db-character-set-attlist = attribute db:encoding { textEncoding }? -db-table-settings = element db:table-settings { db-table-setting* } -db-table-setting = - element db:table-setting { - db-table-setting-attlist, db-delimiter?, db-character-set?, empty - } -db-table-setting-attlist = db-is-first-row-header-line, db-show-deleted -db-application-connection-settings = - element db:application-connection-settings { - db-application-connection-settings-attlist, - db-table-filter?, - db-table-type-filter?, - db-data-source-settings? - } -db-application-connection-settings-attlist = - attribute db:is-table-name-length-limited { boolean }? - & attribute db:enable-sql92-check { boolean }? - & attribute db:append-table-alias-name { boolean }? - & attribute db:ignore-driver-privileges { boolean }? - & attribute db:boolean-comparison-mode { - "equal-integer" - | "is-boolean" - | "equal-boolean" - | "equal-use-only-zero" - }? - & attribute db:use-catalog { boolean }? - & attribute db:max-row-count { integer }? - & attribute db:suppress-version-columns { boolean }? -db-table-filter = - element db:table-filter { - db-table-filter-attlist, - db-table-include-filter?, - db-table-exclude-filter? - } -db-table-filter-attlist = empty -db-table-include-filter = - element db:table-include-filter { - db-table-include-filter-attlist, db-table-filter-pattern+ - } -db-table-include-filter-attlist = empty -db-table-exclude-filter = - element db:table-exclude-filter { - db-table-exclude-filter-attlist, db-table-filter-pattern+ - } -db-table-exclude-filter-attlist = empty -db-table-filter-pattern = - element db:table-filter-pattern { - db-table-filter-pattern-attlist, \string - } -db-table-filter-pattern-attlist = empty -db-table-type-filter = - element db:table-type-filter { - db-table-type-filter-attlist, db-table-type* - } -db-table-type-filter-attlist = empty -db-table-type = element db:table-type { db-table-type-attlist, \string } -db-table-type-attlist = empty -db-data-source-settings = - element db:data-source-settings { - db-data-source-settings-attlist, db-data-source-setting+ - } -db-data-source-settings-attlist = empty -db-data-source-setting = - element db:data-source-setting { - db-data-source-setting-attlist, db-data-source-setting-value+ - } -db-data-source-setting-attlist = - attribute db:data-source-setting-is-list { boolean }? - & attribute db:data-source-setting-name { \string } - & attribute db:data-source-setting-type { - db-data-source-setting-types - } -db-data-source-setting-types = - "boolean" | "short" | "int" | "long" | "double" | "string" -db-data-source-setting-value = - element db:data-source-setting-value { - db-data-source-setting-value-attlist, \string - } -db-data-source-setting-value-attlist = empty -db-forms = - element db:forms { - db-forms-attlist, (db-component | db-component-collection)* - } -db-forms-attlist = empty -db-reports = - element db:reports { - db-reports-attlist, (db-component | db-component-collection)* - } -db-reports-attlist = empty -db-component-collection = - element db:component-collection { - db-component-collection-attlist, - common-db-object-name, - common-db-object-title, - common-db-object-description, - (db-component | db-component-collection)* - } -db-component-collection-attlist = empty -db-component = - element db:component { - db-component-attlist, - common-db-object-name, - common-db-object-title, - common-db-object-description, - (office-document | math-math)? - } -db-component-attlist = - (attribute xlink:type { "simple" }, - attribute xlink:href { anyIRI }, - attribute xlink:show { "none" }?, - attribute xlink:actuate { "onRequest" }?)? - & attribute db:as-template { boolean }? -db-queries = - element db:queries { - db-queries-attlist, (db-query | db-query-collection)* - } -db-queries-attlist = empty -db-query-collection = - element db:query-collection { - db-query-collection-attlist, - common-db-object-name, - common-db-object-title, - common-db-object-description, - (db-query | db-query-collection)* - } -db-query-collection-attlist = empty -db-query = - element db:query { - db-query-attlist, - common-db-object-name, - common-db-object-title, - common-db-object-description, - common-db-table-style-name, - db-order-statement?, - db-filter-statement?, - db-columns?, - db-update-table? - } -db-query-attlist = - attribute db:command { \string } - & attribute db:escape-processing { boolean }? -db-order-statement = - element db:order-statement { db-command, db-apply-command, empty } -db-filter-statement = - element db:filter-statement { db-command, db-apply-command, empty } -db-update-table = - element db:update-table { common-db-table-name-attlist } -db-table-presentations = - element db:table-representations { - db-table-presentations-attlist, db-table-presentation* - } -db-table-presentations-attlist = empty -db-table-presentation = - element db:table-representation { - db-table-presentation-attlist, - common-db-table-name-attlist, - common-db-object-title, - common-db-object-description, - common-db-table-style-name, - db-order-statement?, - db-filter-statement?, - db-columns? - } -db-table-presentation-attlist = empty -db-columns = element db:columns { db-columns-attlist, db-column+ } -db-columns-attlist = empty -db-column = - element db:column { - db-column-attlist, - common-db-object-name, - common-db-object-title, - common-db-object-description, - common-db-default-value - } -db-column-attlist = - attribute db:visible { boolean }? - & attribute db:style-name { styleNameRef }? - & attribute db:default-cell-style-name { styleNameRef }? -db-command = attribute db:command { \string } -db-apply-command = attribute db:apply-command { boolean }? -common-db-table-name-attlist = - attribute db:name { \string } - & attribute db:catalog-name { \string }? - & attribute db:schema-name { \string }? -common-db-object-name = attribute db:name { \string } -common-db-object-title = attribute db:title { \string }? -common-db-object-description = attribute db:description { \string }? -common-db-table-style-name = - attribute db:style-name { styleNameRef }? - & attribute db:default-row-style-name { styleNameRef }? -common-db-default-value = common-value-and-type-attlist? -db-schema-definition = - element db:schema-definition { - db-schema-definition-attlist, db-table-definitions - } -db-schema-definition-attlist = empty -db-table-definitions = - element db:table-definitions { - db-table-definitions-attlist, db-table-definition* - } -db-table-definitions-attlist = empty -db-table-definition = - element db:table-definition { - common-db-table-name-attlist, - db-table-definition-attlist, - db-column-definitions, - db-keys?, - db-indices? - } -db-table-definition-attlist = attribute db:type { \string }? -db-column-definitions = - element db:column-definitions { - db-column-definitions-attlist, db-column-definition+ - } -db-column-definitions-attlist = empty -db-column-definition = - element db:column-definition { - db-column-definition-attlist, common-db-default-value - } -db-column-definition-attlist = - attribute db:name { \string } - & attribute db:data-type { db-data-types }? - & attribute db:type-name { \string }? - & attribute db:precision { positiveInteger }? - & attribute db:scale { positiveInteger }? - & attribute db:is-nullable { "no-nulls" | "nullable" }? - & attribute db:is-empty-allowed { boolean }? - & attribute db:is-autoincrement { boolean }? -db-data-types = - "bit" - | "boolean" - | "tinyint" - | "smallint" - | "integer" - | "bigint" - | "float" - | "real" - | "double" - | "numeric" - | "decimal" - | "char" - | "varchar" - | "longvarchar" - | "date" - | "time" - | "timestmp" - | "binary" - | "varbinary" - | "longvarbinary" - | "sqlnull" - | "other" - | "object" - | "distinct" - | "struct" - | "array" - | "blob" - | "clob" - | "ref" -db-keys = element db:keys { db-keys-attlist, db-key+ } -db-keys-attlist = empty -db-key = element db:key { db-key-attlist, db-key-columns+ } -db-key-attlist = - attribute db:name { \string }? - & attribute db:type { "primary" | "unique" | "foreign" } - & attribute db:referenced-table-name { \string }? - & attribute db:update-rule { - "cascade" | "restrict" | "set-null" | "no-action" | "set-default" - }? - & attribute db:delete-rule { - "cascade" | "restrict" | "set-null" | "no-action" | "set-default" - }? -db-key-columns = - element db:key-columns { db-key-columns-attlist, db-key-column+ } -db-key-columns-attlist = empty -db-key-column = element db:key-column { db-key-column-attlist, empty } -db-key-column-attlist = - attribute db:name { \string }? - & attribute db:related-column-name { \string }? -db-indices = element db:indices { db-indices-attlist, db-index+ } -db-indices-attlist = empty -db-index = element db:index { db-index-attlist, db-index-columns+ } -db-index-attlist = - attribute db:name { \string } - & attribute db:catalog-name { \string }? - & attribute db:is-unique { boolean }? - & attribute db:is-clustered { boolean }? -db-index-columns = element db:index-columns { db-index-column+ } -db-index-column = - element db:index-column { db-index-column-attlist, empty } -db-index-column-attlist = - attribute db:name { \string } - & attribute db:is-ascending { boolean }? -office-forms = - element office:forms { - office-forms-attlist, (form-form | xforms-model)* - }? -office-forms-attlist = - attribute form:automatic-focus { boolean }? - & 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:type { "simple" }, - attribute xlink:href { anyIRI }, - attribute xlink:actuate { "onRequest" }?)? - & attribute office:target-frame { targetFrameName }? - & attribute form:method { "get" | "post" | \string }? - & attribute form:enctype { \string }? - & attribute form:allow-deletes { boolean }? - & attribute form:allow-inserts { boolean }? - & attribute form:allow-updates { boolean }? - & attribute form:apply-filter { boolean }? - & attribute form:command-type { "table" | "query" | "command" }? - & attribute form:command { \string }? - & attribute form:datasource { anyIRI | \string }? - & attribute form:master-fields { \string }? - & attribute form:detail-fields { \string }? - & attribute form:escape-processing { boolean }? - & attribute form:filter { \string }? - & attribute form:ignore-result { boolean }? - & attribute form:navigation-mode { navigation }? - & attribute form:order { \string }? - & attribute form:tab-cycle { tab-cycles }? -navigation = "none" | "current" | "parent" -tab-cycles = "records" | "current" | "page" -form-connection-resource = - element form:connection-resource { +presentation-sound = + element presentation:sound { + presentation-sound-attlist, + attribute xlink:type { "simple" }, attribute xlink:href { anyIRI }, + attribute xlink:actuate { "onRequest" }?, + attribute xlink:show { "new" | "replace" }?, empty } -xforms-model = element xforms:model { anyAttListOrElements } -column-controls = - element form:text { form-text-attlist, common-form-control-content } - | element form:textarea { - form-textarea-attlist, common-form-control-content, text-p* - } - | element form:formatted-text { - form-formatted-text-attlist, common-form-control-content - } - | element form:number { - form-number-attlist, - common-numeric-control-attlist, - common-form-control-content, - common-linked-cell, - common-spin-button, - common-repeat, - common-delay-for-repeat - } - | element form:date { - form-date-attlist, - common-numeric-control-attlist, - common-form-control-content, - common-linked-cell, - common-spin-button, - common-repeat, - common-delay-for-repeat - } - | element form:time { - form-time-attlist, - common-numeric-control-attlist, - common-form-control-content, - common-linked-cell, - common-spin-button, - common-repeat, - common-delay-for-repeat - } - | element form:combobox { - form-combobox-attlist, common-form-control-content, form-item* - } - | element form:listbox { - form-listbox-attlist, common-form-control-content, form-option* - } - | element form:checkbox { - form-checkbox-attlist, common-form-control-content - } -controls = - column-controls - | element form:password { - form-password-attlist, common-form-control-content - } - | element form:file { form-file-attlist, common-form-control-content } - | element form:fixed-text { - form-fixed-text-attlist, common-form-control-content - } - | element form:button { - form-button-attlist, common-form-control-content - } - | element form:image { - form-image-attlist, common-form-control-content - } - | element form:radio { - form-radio-attlist, common-form-control-content - } - | element form:frame { - form-frame-attlist, common-form-control-content - } - | element form:image-frame { - form-image-frame-attlist, common-form-control-content - } - | element form:hidden { - form-hidden-attlist, common-form-control-content - } - | element form:grid { - form-grid-attlist, common-form-control-content, form-column* - } - | element form:value-range { - form-value-range-attlist, common-form-control-content - } - | element form:generic-control { - form-generic-control-attlist, common-form-control-content - } -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, - common-linked-cell -form-control-attlist = - common-form-control-attlist, - common-control-id-attlist, - xforms-bind-attlist -common-form-control-content = form-properties?, office-event-listeners? -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, - common-linked-cell -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 - & common-linked-cell - & attribute form:echo-char { character }? -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, - common-linked-cell -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 - & common-linked-cell - & common-spin-button - & common-repeat - & common-delay-for-repeat - & attribute form:max-value { \string }? - & attribute form:min-value { \string }? - & attribute form:validation { boolean }? -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 }? - & attribute form:current-value { double }? - & attribute form:min-value { double }? - & attribute form:max-value { double }? -form-date-attlist = - attribute form:value { date }? - & attribute form:current-value { date }? - & attribute form:min-value { date }? - & attribute form:max-value { date }? -form-time-attlist = - attribute form:value { time }? - & attribute form:current-value { time }? - & attribute form:min-value { time }? - & attribute form:max-value { time }? -form-fixed-text-attlist = - form-control-attlist - & for - & common-disabled-attlist - & label - & common-printable-attlist - & common-title-attlist - & attribute form:multi-line { boolean }? -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 - & common-linked-cell - & common-source-cell-range - & attribute form:auto-complete { boolean }? -form-item = element form:item { form-item-attlist, text } -form-item-attlist = label -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 - & common-linked-cell - & list-linkage-type - & common-source-cell-range - & attribute form:multiple { boolean }? - & attribute form:xforms-list-source { \string }? -list-linkage-type = - attribute form:list-linkage-type { - "selection" | "selection-indices" - }? -form-option = element form:option { form-option-attlist, text } -form-option-attlist = - current-selected, selected, label, common-value-attlist -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 - & common-repeat - & common-delay-for-repeat - & attribute form:default-button { boolean }? - & attribute form:toggle { boolean }? - & attribute form:focus-on-click { boolean }? - & attribute form:xforms-submission { \string }? -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 -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 - & common-linked-cell - & attribute form:current-state { states }? - & attribute form:is-tristate { boolean }? - & attribute form:state { states }? -states = "unchecked" | "checked" | "unknown" -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, - common-linked-cell -form-frame-attlist = - form-control-attlist, - common-disabled-attlist, - for, - label, - common-printable-attlist, - common-title-attlist -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 -form-hidden-attlist = form-control-attlist, common-value-attlist -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 }? -form-value-range-attlist = - form-control-attlist - & common-disabled-attlist - & common-printable-attlist - & common-tab-attlist - & common-title-attlist - & common-value-attlist - & common-linked-cell - & common-repeat - & common-delay-for-repeat - & attribute form:max-value { integer }? - & attribute form:min-value { integer }? - & attribute form:step-size { positiveInteger }? - & attribute form:page-step-size { positiveInteger }? - & attribute form:orientation { "horizontal" | "vertical" }? -form-generic-control-attlist = form-control-attlist -common-form-control-attlist = - attribute form:name { \string }? - & attribute form:control-implementation { namespacedToken }? -xforms-bind-attlist = attribute xforms:bind { \string }? -types = "submit" | "reset" | "push" | "url" -button-type = attribute form:button-type { types }? -common-control-id-attlist = - xml-id, - attribute form:id { NCName }? -current-selected = attribute form:current-selected { boolean }? -common-value-attlist = attribute form:value { \string }? -common-current-value-attlist = attribute form:current-value { \string }? -common-disabled-attlist = attribute form:disabled { boolean }? -dropdown = attribute form:dropdown { boolean }? -for = attribute form:for { \string }? -image-data = attribute form:image-data { anyIRI }? -label = attribute form:label { \string }? -common-maxlength-attlist = - attribute form:max-length { nonNegativeInteger }? -common-printable-attlist = attribute form:printable { boolean }? -common-readonly-attlist = attribute form:readonly { boolean }? -selected = attribute form:selected { boolean }? -size = attribute form:size { nonNegativeInteger }? -common-tab-attlist = - attribute form:tab-index { nonNegativeInteger }? - & attribute form:tab-stop { boolean }? -target-frame = attribute office:target-frame { targetFrameName }? -target-location = attribute xlink:href { anyIRI }? -common-title-attlist = attribute form:title { \string }? -common-form-visual-effect-attlist = - attribute form:visual-effect { "flat" | "3d" }? -common-form-relative-image-position-attlist = - attribute form:image-position { "center" }? - | (attribute form:image-position { - "start" | "end" | "top" | "bottom" - }, - attribute form:image-align { "start" | "center" | "end" }?) -bound-column = attribute form:bound-column { \string }? -common-convert-empty-attlist = - 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" - }? -common-linked-cell = - attribute form:linked-cell { cellAddress | \string }? -common-source-cell-range = - attribute form:source-cell-range { cellRangeAddress | \string }? -common-spin-button = attribute form:spin-button { boolean }? -common-repeat = attribute form:repeat { boolean }? -common-delay-for-repeat = attribute form:delay-for-repeat { duration }? -form-properties = element form:properties { form-property+ } -form-property = - element form:property { - form-property-name, form-property-value-and-type-attlist - } - | element form:list-property { - form-property-name, form-property-type-and-value-list - } -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-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-end = - element office:annotation-end { office-annotation-end-attlist } -office-annotation-attlist = - attribute office:display { boolean }? - & common-office-annotation-name-attlist? -office-annotation-end-attlist = common-office-annotation-name-attlist -common-office-annotation-name-attlist = - attribute office:name { \string } -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)* - } +presentation-sound-attlist = + attribute presentation:play-full { boolean }? + & xml-id? +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" +presentationEffects = + "none" + | "fade" + | "move" + | "stripes" + | "open" + | "close" + | "dissolve" + | "wavyline" + | "random" + | "lines" + | "laser" + | "appear" + | "hide" + | "move-short" + | "checkerboard" + | "rotate" + | "stretch" +presentationSpeeds = "slow" | "medium" | "fast" +region-content = text-p* +relativeLength = xsd:string { pattern = "[0-9]+\*" } +rowOrCol = "row" | "column" script-event-listener = element script:event-listener { script-event-listener-attlist, empty } script-event-listener-attlist = @@ -4149,379 +3541,336 @@ script-event-listener-attlist = | (attribute xlink:type { "simple" }, attribute xlink:href { anyIRI }, attribute xlink:actuate { "onRequest" }?)) -math-math = element math:math { mathMarkup } -[ - dc:description [ - "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 +scriptCode = xsd:token { pattern = "[A-Za-z0-9]{1,8}" } +selected = attribute form:selected { boolean }? +shadowType = "none" | \string +shape = shape-instance | draw-a +shape-instance = + 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 +shapes3d = + dr3d-scene | dr3d-extrude | dr3d-sphere | dr3d-rotate | dr3d-cube +signedZeroToHundredPercent = + xsd:string { + pattern = "-?([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%" } -text-dde-connection-decl-attlist = attribute office:name { \string } -common-dde-connection-decl-attlist = - attribute office:dde-application { \string } - & attribute office:dde-topic { \string } - & attribute office:dde-item { \string } - & 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 }? - & attribute office:conversion-mode { - "into-default-style-data-style" - | "into-english-number" - | "keep-text" +size = attribute form:size { nonNegativeInteger }? +states = "unchecked" | "checked" | "unknown" +\string = xsd:string +style-background-image = + element style:background-image { + style-background-image-attlist, + (common-draw-data-attlist | office-binary-data | empty) + }? +style-background-image-attlist = + attribute style:repeat { "no-repeat" | "repeat" | "stretch" }? + & attribute style:position { + "left" + | "center" + | "right" + | "top" + | "bottom" + | list { horiBackPos, vertBackPos } + | list { vertBackPos, horiBackPos } }? -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 + & attribute style:filter-name { \string }? + & attribute draw:opacity { zeroToHundredPercent }? +style-chart-properties = + element style:chart-properties { + style-chart-properties-content-strict } - | 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 - } - | 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 - } - | 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 - } - | 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 - } - | 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 - } - | element anim:par { - common-anim-attlist, - common-timing-attlist, - common-endsync-timing-attlist, - animation-element* - } - | element anim:seq { - common-anim-attlist, - common-endsync-timing-attlist, - common-timing-attlist, - animation-element* - } - | element anim:iterate { - common-anim-attlist, - anim-iterate-attlist, - common-timing-attlist, - common-endsync-timing-attlist, - animation-element* - } - | element anim:audio { - common-anim-attlist, - anim-audio-attlist, - common-basic-timing-attlist - } - | element anim:command { - common-anim-attlist, - anim-command-attlist, - common-begin-end-timing-attlist, - common-anim-target-attlist, - element anim:param { - attribute anim:name { \string }, - attribute anim:value { \string } - }* - } -anim-animate-motion-attlist = - attribute svg:path { pathData }? - & attribute svg:origin { \string }? - & attribute smil:calcMode { - "discrete" | "linear" | "paced" | "spline" +style-chart-properties-attlist = + attribute chart:scale-text { boolean }? + & attribute chart:three-dimensional { boolean }? + & attribute chart:deep { boolean }? + & attribute chart:right-angled-axes { boolean }? + & (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 { anyIRI } + }) + | empty) + & attribute chart:symbol-width { nonNegativeLength }? + & attribute chart:symbol-height { nonNegativeLength }? + & attribute chart:sort-by-x-values { boolean }? + & attribute chart:vertical { boolean }? + & attribute chart:connect-bars { boolean }? + & attribute chart:gap-width { integer }? + & attribute chart:overlap { integer }? + & attribute chart:group-bars-per-axis { boolean }? + & attribute chart:japanese-candle-stick { boolean }? + & attribute chart:interpolation { + "none" + | "cubic-spline" + | "b-spline" + | "step-start" + | "step-end" + | "step-center-x" + | "step-center-y" }? -anim-animate-color-attlist = - attribute anim:color-interpolation { "rgb" | "hsl" }? - & attribute anim:color-interpolation-direction { - "clockwise" | "counter-clockwise" + & attribute chart:spline-order { positiveInteger }? + & attribute chart:spline-resolution { positiveInteger }? + & attribute chart:pie-offset { nonNegativeInteger }? + & attribute chart:angle-offset { angle }? + & attribute chart:hole-size { percent }? + & attribute chart:lines { boolean }? + & attribute chart:solid-type { + "cuboid" | "cylinder" | "cone" | "pyramid" }? -anim-animate-transform-attlist = - attribute svg:type { - "translate" | "scale" | "rotate" | "skewX" | "skewY" + & attribute chart:stacked { boolean }? + & attribute chart:percentage { boolean }? + & attribute chart:treat-empty-cells { + "use-zero" | "leave-gap" | "ignore" + }? + & attribute chart:link-data-style-to-source { boolean }? + & attribute chart:logarithmic { boolean }? + & attribute chart:maximum { double }? + & attribute chart:minimum { double }? + & attribute chart:origin { double }? + & attribute chart:interval-major { double }? + & attribute chart:interval-minor-divisor { positiveInteger }? + & 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 }? + & attribute chart:reverse-direction { boolean }? + & attribute chart:display-label { boolean }? + & attribute chart:text-overlap { boolean }? + & attribute text:line-break { boolean }? + & attribute chart:label-arrangement { + "side-by-side" | "stagger-even" | "stagger-odd" + }? + & common-style-direction-attlist + & common-rotation-angle-attlist + & attribute chart:data-label-number { + "none" | "value" | "percentage" | "value-and-percentage" + }? + & attribute chart:data-label-text { boolean }? + & attribute chart:data-label-symbol { boolean }? + & element chart:label-separator { text-p }? + & attribute chart:label-position { labelPositions }? + & attribute chart:label-position-negative { labelPositions }? + & attribute chart:visible { boolean }? + & attribute chart:auto-position { boolean }? + & attribute chart:auto-size { boolean }? + & attribute chart:mean-value { boolean }? + & attribute chart:error-category { + "none" + | "variance" + | "standard-deviation" + | "percentage" + | "error-margin" + | "constant" + | "standard-error" + | "cell-range" + }? + & attribute chart:error-percentage { double }? + & attribute chart:error-margin { double }? + & attribute chart:error-lower-limit { double }? + & attribute chart:error-upper-limit { double }? + & attribute chart:error-upper-indicator { boolean }? + & attribute chart:error-lower-indicator { boolean }? + & attribute chart:error-lower-range { cellRangeAddressList }? + & attribute chart:error-upper-range { cellRangeAddressList }? + & attribute chart:series-source { "columns" | "rows" }? + & attribute chart:regression-type { + "none" + | "linear" + | "logarithmic" + | "moving-average" + | "exponential" + | "power" + | "polynomial" + }? + & attribute chart:regression-max-degree { positiveInteger }? + & attribute chart:regression-force-intercept { boolean }? + & attribute chart:regression-intercept-value { double }? + & attribute chart:regression-name { \string }? + & # https://issues.oasis-open.org/browse/OFFICE-3958 + attribute chart:regression-period { positiveInteger }? + & attribute chart:regression-moving-type { + "prior" | "central" | "averaged-abscissa" + }? + & # https://issues.oasis-open.org/browse/OFFICE-3959 + attribute chart:axis-position { "start" | "end" | double }? + & attribute chart:axis-label-position { + "near-axis" + | "near-axis-other-side" + | "outside-start" + | "outside-end" + }? + & attribute chart:tick-mark-position { + "at-labels" | "at-axis" | "at-labels-and-axis" + }? + & attribute chart:include-hidden-cells { boolean }? + & (attribute chart:data-label-series { boolean }?) + # https://issues.oasis-open.org/browse/OFFICE-2117 + +style-chart-properties-content-strict = + style-chart-properties-attlist, style-chart-properties-elements +style-chart-properties-elements = empty +style-column = element style:column { style-column-attlist } +style-column-attlist = + attribute style:rel-width { relativeLength } + & attribute fo:start-indent { length }? + & attribute fo:end-indent { length }? + & attribute fo:space-before { length }? + & attribute fo:space-after { length }? +style-column-sep = element style:column-sep { style-column-sep-attlist } +style-column-sep-attlist = + attribute style:style { + "none" | "solid" | "dotted" | "dashed" | "dot-dashed" + }? + & attribute style:width { length } + & attribute style:height { zeroToHundredPercent }? + & attribute style:vertical-align { "top" | "middle" | "bottom" }? + & attribute style:color { color }? +style-columns = + element style:columns { + style-columns-attlist, style-column-sep?, style-column* + }? +style-columns-attlist = + attribute fo:column-count { positiveInteger } + & attribute fo:column-gap { length }? +style-default-page-layout = + element style:default-page-layout { style-page-layout-content } +style-default-style = + element style:default-style { style-style-content } +style-drawing-page-properties = + element style:drawing-page-properties { + style-drawing-page-properties-content-strict } -anim-transition-filter-attlist = - attribute smil:type { \string } +style-drawing-page-properties-attlist = + attribute presentation:transition-type { + "manual" | "automatic" | "semi-automatic" + }? + & 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" + }? + & attribute presentation:transition-speed { presentationSpeeds }? + & attribute smil:type { \string }? & attribute smil:subtype { \string }? & attribute smil:direction { "forward" | "reverse" }? & attribute smil:fadeColor { color }? - & attribute smil:mode { "in" | "out" }? -common-anim-target-attlist = - attribute smil:targetElement { IDREF }? - & attribute anim:sub-item { \string }? -common-anim-named-target-attlist = - attribute smil:attributeName { \string } -common-anim-values-attlist = - attribute smil:values { \string }? - & attribute anim:formula { \string }? - & common-anim-set-values-attlist - & attribute smil:from { \string }? - & attribute smil:by { \string }? -common-anim-spline-mode-attlist = - attribute smil:calcMode { - "discrete" | "linear" | "paced" | "spline" - }? -common-spline-anim-value-attlist = - attribute smil:keyTimes { \string }? - & attribute smil:keySplines { \string }? -common-anim-add-accum-attlist = - attribute smil:accumulate { "none" | "sum" }? - & attribute smil:additive { "replace" | "sum" }? -common-anim-set-values-attlist = attribute smil:to { \string }? -common-begin-end-timing-attlist = - attribute smil:begin { \string }? - & attribute smil:end { \string }? -common-dur-timing-attlist = attribute smil:dur { \string }? -common-endsync-timing-attlist = - attribute smil:endsync { "first" | "last" | "all" | "media" | IDREF }? -common-repeat-timing-attlist = - attribute smil:repeatDur { \string }?, - attribute smil:repeatCount { nonNegativeDecimal | "indefinite" }? -nonNegativeDecimal = xsd:decimal { minInclusive = "0.0" } -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 = - attribute smil:restart { - "never" | "always" | "whenNotActive" | "default" - }? -common-restart-default-attlist = - attribute smil:restartDefault { - "never" | "always" | "whenNotActive" | "inherit" - }? -common-time-manip-attlist = - attribute smil:accelerate { zeroToOneDecimal }? - & attribute smil:decelerate { zeroToOneDecimal }? - & attribute smil:autoReverse { boolean }? -zeroToOneDecimal = xsd:decimal { minInclusive = "0" maxInclusive = "1" } -common-basic-timing-attlist = - common-begin-end-timing-attlist, - common-dur-timing-attlist, - common-repeat-timing-attlist, - common-restart-timing-attlist, - common-restart-default-attlist, - common-fill-timing-attlist, - common-fill-default-attlist -common-timing-attlist = - common-basic-timing-attlist, common-time-manip-attlist -anim-iterate-attlist = - common-anim-target-attlist - & attribute anim:iterate-type { \string }? - & attribute anim:iterate-interval { duration }? -anim-audio-attlist = - attribute xlink:href { anyIRI }? - & attribute anim:audio-level { double }? -anim-command-attlist = attribute anim:command { \string } -style-style = - element style:style { - style-style-attlist, style-style-content, style-map* - } -common-in-content-meta-attlist = - attribute xhtml:about { URIorSafeCURIE }, - attribute xhtml:property { CURIEs }, - common-meta-literal-attlist -common-meta-literal-attlist = - attribute xhtml:datatype { CURIE }?, - attribute xhtml:content { \string }? -xml-id = attribute xml:id { ID } -style-style-attlist = - attribute style:name { styleName } - & attribute style:display-name { \string }? - & attribute style:parent-style-name { styleNameRef }? - & attribute style:next-style-name { styleNameRef }? - & attribute style:list-level { positiveInteger | empty }? - & attribute style:list-style-name { styleName | empty }? - & attribute style:master-page-name { styleNameRef }? - & attribute style:auto-update { boolean }? - & attribute style:data-style-name { styleNameRef }? - & attribute style:percentage-data-style-name { styleNameRef }? - & attribute style:class { \string }? - & attribute style:default-outline-level { positiveInteger | empty }? -style-map = element style:map { style-map-attlist, empty } -style-map-attlist = - attribute style:condition { \string } - & attribute style:apply-style-name { styleNameRef } - & 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-content - } -style-page-layout-content = - style-page-layout-properties?, - style-header-style?, - style-footer-style? -style-page-layout-attlist = - attribute style:name { styleName } - & 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-default-page-layout = - element style:default-page-layout { style-page-layout-content } -style-master-page = - element style:master-page { - style-master-page-attlist, - (style-header, style-header-left?)?, - (style-footer, style-footer-left?)?, - draw-layer-set?, - office-forms?, - shape*, - animation-element?, - presentation-notes? - } -style-master-page-attlist = - attribute style:name { styleName } - & attribute style:display-name { \string }? - & attribute style:page-layout-name { styleNameRef } - & attribute draw:style-name { styleNameRef }? - & 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 = - 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 }? - & 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-background? - } -table-table-template-attlist = - attribute table:name { \string } - & attribute table:first-row-start-column { rowOrCol } - & attribute table:first-row-end-column { rowOrCol } - & attribute table:last-row-start-column { rowOrCol } - & attribute table: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 table:style-name { styleNameRef }, - attribute table:paragraph-style-name { styleNameRef }? -table-background = - element table:background { table-background-attlist, empty } -table-background-attlist = attribute table:style-name { styleNameRef } + & attribute presentation:duration { duration }? + & attribute presentation:visibility { "visible" | "hidden" }? + & attribute draw:background-size { "full" | "border" }? + & attribute presentation:background-objects-visible { boolean }? + & attribute presentation:background-visible { boolean }? + & attribute presentation:display-header { boolean }? + & attribute presentation:display-footer { boolean }? + & attribute presentation:display-page-number { boolean }? + & attribute presentation:display-date-time { boolean }? +style-drawing-page-properties-content-strict = + style-graphic-fill-properties-attlist, + style-drawing-page-properties-attlist, + style-drawing-page-properties-elements +style-drawing-page-properties-elements = presentation-sound? +style-drop-cap = + element style:drop-cap { style-drop-cap-attlist, empty }? +style-drop-cap-attlist = + attribute style:length { "word" | positiveInteger }? + & attribute style:lines { positiveInteger }? + & attribute style:distance { length }? + & attribute style:style-name { styleNameRef }? style-font-face = element style:font-face { style-font-face-attlist, svg-font-face-src?, svg-definition-src? @@ -4575,606 +3924,23 @@ style-font-face-attlist = & attribute style:font-family-generic { fontFamilyGeneric }? & attribute style:font-pitch { fontPitch }? & attribute style:font-charset { textEncoding }? -svg-font-face-src = - element svg:font-face-src { - (svg-font-face-uri | svg-font-face-name)+ +style-footer = + element style:footer { + common-style-header-footer-attlist, header-footer-content } -svg-font-face-uri = - element svg:font-face-uri { - common-svg-font-face-xlink-attlist, svg-font-face-format* +style-footer-first = + element style:footer-first { + common-style-header-footer-attlist, + header-footer-content + # https://issues.oasis-open.org/browse/OFFICE-3789 + } -svg-font-face-format = - element svg:font-face-format { - attribute svg:string { \string }?, - empty +style-footer-left = + element style:footer-left { + common-style-header-footer-attlist, header-footer-content } -svg-font-face-name = - element svg:font-face-name { - attribute svg:name { \string }?, - empty - } -svg-definition-src = - element svg:definition-src { - common-svg-font-face-xlink-attlist, empty - } -common-svg-font-face-xlink-attlist = - attribute xlink:type { "simple" }, - attribute xlink:href { anyIRI }, - attribute xlink:actuate { "onRequest" }? -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 { \string }? - & 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 }? - & attribute number:min-denominator-digits { integer }? - & 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 }?, - attribute number:script { scriptCode }?, - attribute number:rfc-language-tag { language }? -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?, - 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 = attribute number:style { "short" | "long" }? -number-month = - element number:month { - number-month-attlist, common-calendar-attlist, empty - } -number-month-attlist = - attribute number:textual { boolean }? - & attribute number:possessive-form { boolean }? - & attribute number:style { "short" | "long" }? -number-year = - element number:year { - number-year-attlist, common-calendar-attlist, empty - } -number-year-attlist = attribute number:style { "short" | "long" }? -number-era = - element number:era { - number-era-attlist, common-calendar-attlist, empty - } -number-era-attlist = 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 = - 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 = 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?, - number-text?, - (any-time, number-text?)+, - style-map* - } -any-time = number-hours | number-am-pm | number-minutes | number-seconds -number-time-style-attlist = - attribute number:truncate-on-overflow { boolean }? -number-hours = element number:hours { number-hours-attlist, empty } -number-hours-attlist = attribute number:style { "short" | "long" }? -number-minutes = - element number:minutes { number-minutes-attlist, empty } -number-minutes-attlist = attribute number:style { "short" | "long" }? -number-seconds = - element number:seconds { number-seconds-attlist, empty } -number-seconds-attlist = - attribute number:style { "short" | "long" }? - & 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 } - & attribute style:display-name { \string }? - & attribute number:language { languageCode }? - & attribute number:country { countryCode }? - & attribute number:script { scriptCode }? - & attribute number:rfc-language-tag { language }? - & attribute number:title { \string }? - & attribute style:volatile { boolean }? - & attribute number:transliteration-format { \string }? - & attribute number:transliteration-language { countryCode }? - & attribute number:transliteration-country { countryCode }? - & attribute number:transliteration-style { - "short" | "medium" | "long" - }? -common-auto-reorder-attlist = - attribute number:automatic-order { boolean }? -common-format-source-attlist = - attribute number:format-source { "fixed" | "language" }? -common-decimal-places-attlist = - attribute number:decimal-places { integer }? -common-number-attlist = - attribute number:min-integer-digits { integer }? - & 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?) - | (attribute style:family { "paragraph" }, - style-paragraph-properties?, - style-text-properties?) - | (attribute style:family { "section" }, - style-section-properties?) - | (attribute style:family { "ruby" }, - style-ruby-properties?) - | (attribute style:family { "table" }, - style-table-properties?) - | (attribute style:family { "table-column" }, - style-table-column-properties?) - | (attribute style:family { "table-row" }, - style-table-row-properties?) - | (attribute style:family { "table-cell" }, - style-table-cell-properties?, - style-paragraph-properties?, - style-text-properties?) - | (attribute style:family { "graphic" | "presentation" }, - style-graphic-properties?, - style-paragraph-properties?, - style-text-properties?) - | (attribute style:family { "drawing-page" }, - style-drawing-page-properties?) - | (attribute style:family { "chart" }, - style-chart-properties?, - style-graphic-properties?, - style-paragraph-properties?, - style-text-properties?) -text-linenumbering-configuration = - element text:linenumbering-configuration { - text-linenumbering-configuration-attlist, - text-linenumbering-separator? - } -text-linenumbering-configuration-attlist = - attribute text:number-lines { boolean }? - & common-num-format-attlist? - & attribute text:style-name { styleNameRef }? - & attribute text:increment { nonNegativeInteger }? - & attribute text:number-position { - "left" | "right" | "inner" | "outer" - }? - & attribute text:offset { nonNegativeLength }? - & attribute text:count-empty-lines { boolean }? - & attribute text:count-in-text-boxes { boolean }? - & 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 - & attribute text:citation-style-name { styleNameRef }? - & attribute text:citation-body-style-name { styleNameRef }? - & attribute text:default-style-name { styleNameRef }? - & attribute text:master-page-name { styleNameRef }? - & attribute text:start-value { nonNegativeInteger }? - & common-num-format-prefix-suffix-attlist - & common-num-format-attlist? - & attribute text:start-numbering-at { - "document" | "chapter" | "page" - }? - & attribute text:footnotes-position { - "text" | "page" | "section" | "document" - }? - & element text:note-continuation-notice-forward { text }? - & 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 }? - & attribute text:numbered-entries { boolean }? - & attribute text:sort-by-position { boolean }? - & attribute fo:language { languageCode }? - & attribute fo:country { countryCode }? - & attribute fo:script { scriptCode }? - & attribute style:rfc-language-tag { language }? - & 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" - }, - 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 } - & attribute style:display-name { \string }? - & attribute text:consecutive-numbering { boolean }? -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? - } - | element text:list-level-style-bullet { - text-list-level-style-attr, - text-list-level-style-bullet-attr, - style-list-level-properties?, - style-text-properties? - } - | 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-number-attr = - attribute text:style-name { styleNameRef }? - & common-num-format-attlist - & common-num-format-prefix-suffix-attlist - & attribute text:display-levels { positiveInteger }? - & attribute text:start-value { positiveInteger }? -text-list-level-style-bullet-attr = - attribute text:style-name { styleNameRef }? - & attribute text:bullet-char { character } - & common-num-format-prefix-suffix-attlist - & attribute text:bullet-relative-size { percent }? -text-list-level-style-image-attr = - common-draw-data-attlist | office-binary-data -text-list-level-style-attr = attribute text:level { positiveInteger } -text-outline-style = - element text:outline-style { - text-outline-style-attr, text-outline-level-style+ - } -text-outline-style-attr = attribute style:name { styleName } -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 } - & attribute text:style-name { styleNameRef }? - & common-num-format-attlist - & common-num-format-prefix-suffix-attlist - & attribute text:display-levels { positiveInteger }? - & attribute text:start-value { positiveInteger }? -style-graphic-properties = - element style:graphic-properties { - style-graphic-properties-content-strict - } -style-graphic-properties-content-strict = - style-graphic-properties-attlist, - style-graphic-fill-properties-attlist, - style-graphic-properties-elements -style-drawing-page-properties = - element style:drawing-page-properties { - style-drawing-page-properties-content-strict - } -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 }? - & attribute draw:display-name { \string }? - & attribute draw:style { gradient-style } - & attribute draw:cx { percent }? - & attribute draw:cy { percent }? - & attribute draw:angle { angle }? - & attribute draw:border { percent }? -gradient-style = - "linear" | "axial" | "radial" | "ellipsoid" | "square" | "rectangular" -draw-gradient-attlist = - attribute draw:start-color { color }? - & attribute draw:end-color { color }? - & attribute draw:start-intensity { zeroToHundredPercent }? - & attribute draw:end-intensity { zeroToHundredPercent }? -svg-linearGradient = - element svg:linearGradient { - common-svg-gradient-attlist, - attribute svg:x1 { coordinate | percent }?, - attribute svg:y1 { coordinate | percent }?, - attribute svg:x2 { coordinate | percent }?, - attribute svg:y2 { coordinate | percent }?, - svg-stop* - } -svg-radialGradient = - element svg:radialGradient { - common-svg-gradient-attlist, - attribute svg:cx { coordinate | percent }?, - attribute svg:cy { coordinate | percent }?, - 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 = - attribute svg:gradientUnits { "objectBoundingBox" }? - & attribute svg:gradientTransform { \string }? - & attribute svg:spreadMethod { "pad" | "reflect" | "repeat" }? - & attribute draw:name { styleName } - & attribute draw:display-name { \string }? -draw-hatch = element draw:hatch { draw-hatch-attlist, empty } -draw-hatch-attlist = - attribute draw:name { styleName } - & attribute draw:display-name { \string }? - & attribute draw:style { "single" | "double" | "triple" } - & attribute draw:color { color }? - & attribute draw:distance { length }? - & attribute draw:rotation { angle }? -draw-fill-image = - element draw:fill-image { - draw-fill-image-attlist, - attribute xlink:type { "simple" }, - attribute xlink:href { anyIRI }, - attribute xlink:show { "embed" }?, - attribute xlink:actuate { "onLoad" }?, - empty - } -draw-fill-image-attlist = - attribute draw:name { styleName } - & attribute draw:display-name { \string }? - & 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 { zeroToHundredPercent }?, - attribute draw:end { zeroToHundredPercent }? -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 } - & 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 } - & attribute draw:display-name { \string }? - & attribute draw:style { "rect" | "round" }? - & attribute draw:dots1 { integer }? - & attribute draw:dots1-length { length | percent }? - & attribute draw:dots2 { integer }? - & attribute draw:dots2-length { length | percent }? - & attribute draw:distance { length | percent }? -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-page-layout-properties = - element style:page-layout-properties { - style-page-layout-properties-content-strict - } -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 }? - & common-num-format-attlist? - & common-num-format-prefix-suffix-attlist - & attribute style:paper-tray-name { "default" | \string }? - & attribute style:print-orientation { "portrait" | "landscape" }? - & common-horizontal-margin-attlist - & common-vertical-margin-attlist - & common-margin-attlist - & common-border-attlist - & common-border-line-width-attlist - & common-padding-attlist - & common-shadow-attlist - & common-background-color-attlist - & attribute style:register-truth-ref-style-name { styleNameRef }? - & attribute style:print { - list { - ("headers" - | "grid" - | "annotations" - | "objects" - | "charts" - | "drawings" - | "formulas" - | "zero-values")* - } - }? - & attribute style:print-page-order { "ttb" | "ltr" }? - & attribute style:first-page-number { positiveInteger | "continue" }? - & attribute style:scale-to { percent }? - & attribute style:scale-to-pages { positiveInteger }? - & attribute style:table-centering { - "horizontal" | "vertical" | "both" | "none" - }? - & attribute style:footnote-max-height { length }? - & common-writing-mode-attlist - & attribute style:layout-grid-mode { "none" | "line" | "both" }? - & attribute style:layout-grid-standard-mode { boolean }? - & attribute style:layout-grid-base-height { length }? - & attribute style:layout-grid-ruby-height { length }? - & attribute style:layout-grid-lines { positiveInteger }? - & attribute style:layout-grid-base-width { length }? - & attribute style:layout-grid-color { color }? - & attribute style:layout-grid-ruby-below { boolean }? - & attribute style:layout-grid-print { boolean }? - & attribute style:layout-grid-display { boolean }? - & attribute style:layout-grid-snap-to { boolean }? -style-page-layout-properties-elements = - style-background-image & style-columns & style-footnote-sep +style-footer-style = + element style:footer-style { style-header-footer-properties? } style-footnote-sep = element style:footnote-sep { style-footnote-sep-attlist, empty }? style-footnote-sep-attlist = @@ -5185,490 +3951,43 @@ style-footnote-sep-attlist = attribute style:adjustment { "left" | "center" | "right" }?, attribute style:distance-before-sep { length }?, attribute style:distance-after-sep { length }? -style-header-footer-properties = - element style:header-footer-properties { - style-header-footer-properties-content-strict - } -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 }? - & common-horizontal-margin-attlist - & common-vertical-margin-attlist - & common-margin-attlist - & common-border-attlist - & common-border-line-width-attlist - & common-padding-attlist - & common-background-color-attlist - & common-shadow-attlist - & attribute style:dynamic-spacing { boolean }? -style-header-footer-properties-elements = style-background-image -style-text-properties = - element style:text-properties { style-text-properties-content-strict } -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 }? - & attribute fo:text-transform { - "none" | "lowercase" | "uppercase" | "capitalize" - }? - & attribute fo:color { color }? - & attribute style:use-window-font-color { boolean }? - & attribute style:text-outline { boolean }? - & attribute style:text-line-through-type { lineType }? - & attribute style:text-line-through-style { lineStyle }? - & attribute style:text-line-through-width { lineWidth }? - & attribute style:text-line-through-color { "font-color" | color }? - & attribute style:text-line-through-text { \string }? - & attribute style:text-line-through-text-style { styleNameRef }? - & attribute style:text-position { - list { (percent | "super" | "sub"), percent? } - }? - & attribute style:font-name { \string }? - & attribute style:font-name-asian { \string }? - & attribute style:font-name-complex { \string }? - & attribute fo:font-family { \string }? - & attribute style:font-family-asian { \string }? - & attribute style:font-family-complex { \string }? - & attribute style:font-family-generic { fontFamilyGeneric }? - & attribute style:font-family-generic-asian { fontFamilyGeneric }? - & attribute style:font-family-generic-complex { fontFamilyGeneric }? - & attribute style:font-style-name { \string }? - & attribute style:font-style-name-asian { \string }? - & attribute style:font-style-name-complex { \string }? - & attribute style:font-pitch { fontPitch }? - & attribute style:font-pitch-asian { fontPitch }? - & attribute style:font-pitch-complex { fontPitch }? - & attribute style:font-charset { textEncoding }? - & attribute style:font-charset-asian { textEncoding }? - & attribute style:font-charset-complex { textEncoding }? - & attribute fo:font-size { positiveLength | percent }? - & attribute style:font-size-asian { positiveLength | percent }? - & attribute style:font-size-complex { positiveLength | percent }? - & attribute style:font-size-rel { length }? - & attribute style:font-size-rel-asian { length }? - & attribute style:font-size-rel-complex { length }? - & attribute style:script-type { - "latin" | "asian" | "complex" | "ignore" - }? - & attribute fo:letter-spacing { length | "normal" }? - & attribute fo:language { languageCode }? - & attribute style:language-asian { languageCode }? - & attribute style:language-complex { languageCode }? - & attribute fo:country { countryCode }? - & attribute style:country-asian { countryCode }? - & attribute style:country-complex { countryCode }? - & attribute fo:script { scriptCode }? - & attribute style:script-asian { scriptCode }? - & attribute style:script-complex { scriptCode }? - & attribute style:rfc-language-tag { language }? - & attribute style:rfc-language-tag-asian { language }? - & attribute style:rfc-language-tag-complex { language }? - & attribute fo:font-style { fontStyle }? - & attribute style:font-style-asian { fontStyle }? - & attribute style:font-style-complex { fontStyle }? - & attribute style:font-relief { "none" | "embossed" | "engraved" }? - & attribute fo:text-shadow { shadowType }? - & attribute style:text-underline-type { lineType }? - & attribute style:text-underline-style { lineStyle }? - & attribute style:text-underline-width { lineWidth }? - & attribute style:text-underline-color { "font-color" | color }? - & attribute style:text-overline-type { lineType }? - & attribute style:text-overline-style { lineStyle }? - & attribute style:text-overline-width { lineWidth }? - & attribute style:text-overline-color { "font-color" | color }? - & attribute style:text-overline-mode { lineMode }? - & attribute fo:font-weight { fontWeight }? - & attribute style:font-weight-asian { fontWeight }? - & attribute style:font-weight-complex { fontWeight }? - & attribute style:text-underline-mode { lineMode }? - & attribute style:text-line-through-mode { lineMode }? - & attribute style:letter-kerning { boolean }? - & attribute style:text-blinking { boolean }? - & common-background-color-attlist - & attribute style:text-combine { "none" | "letters" | "lines" }? - & attribute style:text-combine-start-char { character }? - & attribute style:text-combine-end-char { character }? - & attribute style:text-emphasize { - "none" - | list { - ("none" | "accent" | "dot" | "circle" | "disc"), - ("above" | "below") - } - }? - & attribute style:text-scale { percent }? - & attribute style:text-rotation-angle { angle }? - & attribute style:text-rotation-scale { "fixed" | "line-height" }? - & attribute fo:hyphenate { boolean }? - & attribute fo:hyphenation-remain-char-count { positiveInteger }? - & attribute fo:hyphenation-push-char-count { positiveInteger }? - & (attribute text:display { "true" } - | attribute text:display { "none" } - | (attribute text:display { "condition" }, - attribute text:condition { "none" }) - | empty) -fontVariant = "normal" | "small-caps" -fontFamilyGeneric = - "roman" | "swiss" | "modern" | "decorative" | "script" | "system" -fontPitch = "fixed" | "variable" -textEncoding = xsd:string { pattern = "[A-Za-z][A-Za-z0-9._\-]*" } -fontStyle = "normal" | "italic" | "oblique" -shadowType = "none" | \string -lineType = "none" | "single" | "double" -lineStyle = - "none" - | "solid" - | "dotted" - | "dash" - | "long-dash" - | "dot-dash" - | "dot-dot-dash" - | "wave" -lineWidth = - "auto" - | "normal" - | "bold" - | "thin" - | "medium" - | "thick" - | positiveInteger - | percent - | positiveLength -fontWeight = - "normal" - | "bold" - | "100" - | "200" - | "300" - | "400" - | "500" - | "600" - | "700" - | "800" - | "900" -lineMode = "continuous" | "skip-white-space" -style-paragraph-properties = - element style:paragraph-properties { - style-paragraph-properties-content-strict - } -style-paragraph-properties-content-strict = - style-paragraph-properties-attlist, - style-paragraph-properties-elements -style-paragraph-properties-attlist = - attribute fo:line-height { "normal" | nonNegativeLength | percent }? - & attribute style:line-height-at-least { nonNegativeLength }? - & attribute style:line-spacing { length }? - & attribute style:font-independent-line-spacing { boolean }? - & common-text-align - & attribute fo:text-align-last { "start" | "center" | "justify" }? - & attribute style:justify-single-word { boolean }? - & attribute fo:keep-together { "auto" | "always" }? - & attribute fo:widows { nonNegativeInteger }? - & attribute fo:orphans { nonNegativeInteger }? - & attribute style:tab-stop-distance { nonNegativeLength }? - & attribute fo:hyphenation-keep { "auto" | "page" }? - & attribute fo:hyphenation-ladder-count { - "no-limit" | positiveInteger - }? - & attribute style:register-true { boolean }? - & common-horizontal-margin-attlist - & attribute fo:text-indent { length | percent }? - & attribute style:auto-text-indent { boolean }? - & common-vertical-margin-attlist - & common-margin-attlist - & common-break-attlist - & common-background-color-attlist - & common-border-attlist - & common-border-line-width-attlist - & attribute style:join-border { boolean }? - & common-padding-attlist - & common-shadow-attlist - & common-keep-with-next-attlist - & attribute text:number-lines { boolean }? - & attribute text:line-number { nonNegativeInteger }? - & attribute style:text-autospace { "none" | "ideograph-alpha" }? - & attribute style:punctuation-wrap { "simple" | "hanging" }? - & attribute style:line-break { "normal" | "strict" }? - & attribute style:vertical-align { - "top" | "middle" | "bottom" | "auto" | "baseline" - }? - & common-writing-mode-attlist - & attribute style:writing-mode-automatic { boolean }? - & attribute style:snap-to-layout-grid { boolean }? - & common-page-number-attlist - & common-background-transparency-attlist -common-text-align = - attribute fo:text-align { - "start" | "end" | "left" | "right" | "center" | "justify" +style-graphic-fill-properties-attlist = + attribute draw:fill { + "none" | "solid" | "bitmap" | "gradient" | "hatch" }? -style-paragraph-properties-elements = - style-tab-stops & style-drop-cap & style-background-image -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 { length } - & (attribute style:type { "left" | "center" | "right" }? - | (attribute style:type { "char" }, - style-tab-stop-char-attlist)) - & attribute style:leader-type { lineType }? - & attribute style:leader-style { lineStyle }? - & attribute style:leader-width { lineWidth }? - & attribute style:leader-color { "font-color" | color }? - & attribute style:leader-text { character }? - & attribute style:leader-text-style { styleNameRef }? -style-tab-stop-char-attlist = attribute style:char { character } -style-drop-cap = - element style:drop-cap { style-drop-cap-attlist, empty }? -style-drop-cap-attlist = - attribute style:length { "word" | positiveInteger }? - & attribute style:lines { positiveInteger }? - & attribute style:distance { length }? - & attribute style:style-name { styleNameRef }? -common-horizontal-margin-attlist = - attribute fo:margin-left { length | percent }?, - attribute fo:margin-right { length | percent }? -common-vertical-margin-attlist = - attribute fo:margin-top { nonNegativeLength | percent }?, - attribute fo:margin-bottom { nonNegativeLength | percent }? -common-margin-attlist = - attribute fo:margin { nonNegativeLength | percent }? -common-break-attlist = - attribute fo:break-before { "auto" | "column" | "page" }?, - attribute fo:break-after { "auto" | "column" | "page" }? -common-background-color-attlist = - attribute fo:background-color { "transparent" | color }? -style-background-image = - element style:background-image { - style-background-image-attlist, - (common-draw-data-attlist | office-binary-data | empty) - }? -style-background-image-attlist = - attribute style:repeat { "no-repeat" | "repeat" | "stretch" }? - & attribute style:position { - "left" - | "center" - | "right" + & attribute draw:fill-color { color }? + & attribute draw:secondary-fill-color { color }? + & attribute draw:fill-gradient-name { styleNameRef }? + & attribute draw:gradient-step-count { nonNegativeInteger }? + & attribute draw:fill-hatch-name { styleNameRef }? + & attribute draw:fill-hatch-solid { boolean }? + & attribute draw:fill-image-name { styleNameRef }? + & attribute style:repeat { "no-repeat" | "repeat" | "stretch" }? + & attribute draw:fill-image-width { length | percent }? + & attribute draw:fill-image-height { length | percent }? + & 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" - | "bottom" - | list { horiBackPos, vertBackPos } - | list { vertBackPos, horiBackPos } - }? - & attribute style:filter-name { \string }? - & attribute draw:opacity { zeroToHundredPercent }? -horiBackPos = "left" | "center" | "right" -vertBackPos = "top" | "center" | "bottom" -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 }? -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 } -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 }? -common-shadow-attlist = attribute style:shadow { shadowType }? -common-keep-with-next-attlist = - attribute fo:keep-with-next { "auto" | "always" }? -common-writing-mode-attlist = - attribute style:writing-mode { - "lr-tb" | "rl-tb" | "tb-rl" | "tb-lr" | "lr" | "rl" | "tb" | "page" - }? -common-page-number-attlist = - attribute style:page-number { positiveInteger | "auto" }? -common-background-transparency-attlist = - attribute style:background-transparency { zeroToHundredPercent }? -style-ruby-properties = - element style:ruby-properties { style-ruby-properties-content-strict } -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" }? - & attribute style:ruby-align { - "left" + | "top-right" + | "left" | "center" | "right" - | "distribute-letter" - | "distribute-space" + | "bottom-left" + | "bottom" + | "bottom-right" }? -style-section-properties = - element style:section-properties { - style-section-properties-content-strict - } -style-section-properties-content-strict = - style-section-properties-attlist, style-section-properties-elements -style-section-properties-attlist = - common-background-color-attlist - & common-horizontal-margin-attlist - & attribute style:protect { boolean }? - & common-editable-attlist - & attribute text:dont-balance-text-columns { boolean }? - & common-writing-mode-attlist -style-section-properties-elements = - style-background-image & style-columns & text-notes-configuration* -style-columns = - element style:columns { - style-columns-attlist, style-column-sep?, style-column* - }? -style-columns-attlist = - attribute fo:column-count { positiveInteger } - & attribute fo:column-gap { length }? -style-column = element style:column { style-column-attlist } -style-column-attlist = - attribute style:rel-width { relativeLength } - & attribute fo:start-indent { length }? - & attribute fo:end-indent { length }? - & attribute fo:space-before { length }? - & attribute fo:space-after { length }? -style-column-sep = element style:column-sep { style-column-sep-attlist } -style-column-sep-attlist = - attribute style:style { - "none" | "solid" | "dotted" | "dashed" | "dot-dashed" - }? - & attribute style:width { length } - & attribute style:height { zeroToHundredPercent }? - & attribute style:vertical-align { "top" | "middle" | "bottom" }? - & attribute style:color { color }? -style-table-properties = - element style:table-properties { - style-table-properties-content-strict - } -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 }? - & attribute table:align { "left" | "center" | "right" | "margins" }? - & common-horizontal-margin-attlist - & common-vertical-margin-attlist - & common-margin-attlist - & common-page-number-attlist - & common-break-attlist - & common-background-color-attlist - & common-shadow-attlist - & common-keep-with-next-attlist - & attribute style:may-break-between-rows { boolean }? - & attribute table:border-model { "collapsing" | "separating" }? - & common-writing-mode-attlist - & attribute table:display { boolean }? -style-table-properties-elements = style-background-image -style-table-column-properties = - element style:table-column-properties { - style-table-column-properties-content-strict - } -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 }? - & attribute style:use-optimal-column-width { boolean }? - & common-break-attlist -style-table-row-properties = - element style:table-row-properties { - style-table-row-properties-content-strict - } -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 }? - & attribute style:use-optimal-row-height { boolean }? - & common-background-color-attlist - & common-break-attlist - & attribute fo:keep-together { "auto" | "always" }? -style-table-row-properties-elements = style-background-image -style-table-cell-properties = - element style:table-cell-properties { - style-table-cell-properties-content-strict - } -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" - }? - & attribute style:text-align-source { "fix" | "value-type" }? - & common-style-direction-attlist - & attribute style:glyph-orientation-vertical { - "auto" | "0" | "0deg" | "0rad" | "0grad" + & attribute draw:tile-repeat-offset { + list { zeroToHundredPercent, ("horizontal" | "vertical") } }? - & common-writing-mode-attlist - & common-shadow-attlist - & common-background-color-attlist - & common-border-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 }? - & common-border-line-width-attlist - & common-padding-attlist - & attribute fo:wrap-option { "no-wrap" | "wrap" }? - & common-rotation-angle-attlist - & attribute style:rotation-align { - "none" | "bottom" | "top" | "center" - }? - & attribute style:cell-protect { - "none" - | "hidden-and-protected" - | list { ("protected" | "formula-hidden")+ } - }? - & attribute style:print-content { boolean }? - & attribute style:decimal-places { nonNegativeInteger }? - & attribute style:repeat-content { boolean }? - & attribute style:shrink-to-fit { boolean }? -common-style-direction-attlist = - attribute style:direction { "ltr" | "ttb" }? -style-table-cell-properties-elements = style-background-image -common-rotation-angle-attlist = - attribute style:rotation-angle { angle }? -style-list-level-properties = - element style:list-level-properties { - style-list-level-properties-content-strict + & attribute draw:opacity { zeroToHundredPercent }? + & attribute draw:opacity-name { styleNameRef }? + & attribute svg:fill-rule { "nonzero" | "evenodd" }? +style-graphic-properties = + element style:graphic-properties { + style-graphic-properties-content-strict } -style-list-level-properties-content-strict = - style-list-level-properties-attlist, - style-list-level-properties-elements -style-list-level-properties-attlist = - common-text-align - & attribute text:space-before { length }? - & attribute text:min-label-width { nonNegativeLength }? - & attribute text:min-label-distance { nonNegativeLength }? - & attribute style:font-name { \string }? - & attribute fo:width { positiveLength }? - & attribute fo:height { positiveLength }? - & common-vertical-rel-attlist - & common-vertical-pos-attlist - & attribute text:list-level-position-and-space-mode { - "label-width-and-position" | "label-alignment" - }? -style-list-level-properties-elements = style-list-level-label-alignment -style-list-level-label-alignment = - element style:list-level-label-alignment { - style-list-level-label-alignment-attlist, empty - }? -style-list-level-label-alignment-attlist = - attribute text:label-followed-by { "listtab" | "space" | "nothing" } - & attribute text:list-tab-stop-position { length }? - & attribute fo:text-indent { length }? - & attribute fo:margin-left { length }? style-graphic-properties-attlist = attribute draw:stroke { "none" | "dash" | "solid" }? & attribute draw:stroke-dash { styleNameRef }? @@ -5717,7 +4036,9 @@ style-graphic-properties-attlist = "greyscale" | "mono" | "watermark" | "standard" }? & attribute draw:color-inversion { boolean }? - & attribute draw:luminance { zeroToHundredPercent }? + & attribute draw:luminance { signedZeroToHundredPercent } + # https://issues.oasis-open.org/browse/OFFICE-3821 + ? & attribute draw:contrast { percent }? & attribute draw:gamma { percent }? & attribute draw:red { signedZeroToHundredPercent }? @@ -5892,363 +4213,2182 @@ style-graphic-properties-attlist = "content" | "thumbnail" | "icon" | "print-view" }? & attribute draw:ole-draw-aspect { nonNegativeInteger }? -style-graphic-fill-properties-attlist = - attribute draw:fill { - "none" | "solid" | "bitmap" | "gradient" | "hatch" - }? - & attribute draw:fill-color { color }? - & attribute draw:secondary-fill-color { color }? - & attribute draw:fill-gradient-name { styleNameRef }? - & attribute draw:gradient-step-count { nonNegativeInteger }? - & attribute draw:fill-hatch-name { styleNameRef }? - & attribute draw:fill-hatch-solid { boolean }? - & attribute draw:fill-image-name { styleNameRef }? - & attribute style:repeat { "no-repeat" | "repeat" | "stretch" }? - & attribute draw:fill-image-width { length | percent }? - & attribute draw:fill-image-height { length | percent }? - & 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" - }? - & attribute draw:tile-repeat-offset { - list { zeroToHundredPercent, ("horizontal" | "vertical") } - }? - & attribute draw:opacity { zeroToHundredPercent }? - & attribute draw:opacity-name { styleNameRef }? - & attribute svg:fill-rule { "nonzero" | "evenodd" }? +style-graphic-properties-content-strict = + style-graphic-properties-attlist, + style-graphic-fill-properties-attlist, + style-graphic-properties-elements style-graphic-properties-elements = text-list-style? & style-background-image & style-columns -common-vertical-pos-attlist = - attribute style:vertical-pos { - "top" | "middle" | "bottom" | "from-top" | "below" - }?, - attribute svg:y { coordinate }? -common-vertical-rel-attlist = - attribute style:vertical-rel { - "page" - | "page-content" - | "frame" - | "frame-content" - | "paragraph" - | "paragraph-content" - | "char" - | "line" - | "baseline" - | "text" +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 }? + & attribute style:page-layout-name { styleNameRef } + & attribute draw:style-name { styleNameRef }? +style-header = + element style:header { + common-style-header-footer-attlist, header-footer-content + } +style-header-first = + element style:header-first { + common-style-header-footer-attlist, + header-footer-content + # https://issues.oasis-open.org/browse/OFFICE-3789 + + } +style-header-footer-properties = + element style:header-footer-properties { + style-header-footer-properties-content-strict + } +style-header-footer-properties-attlist = + attribute svg:height { length }? + & attribute fo:min-height { length }? + & common-horizontal-margin-attlist + & common-vertical-margin-attlist + & common-margin-attlist + & common-border-attlist + & common-border-line-width-attlist + & common-padding-attlist + & common-background-color-attlist + & common-shadow-attlist + & attribute style:dynamic-spacing { boolean }? +style-header-footer-properties-content-strict = + style-header-footer-properties-attlist, + style-header-footer-properties-elements +style-header-footer-properties-elements = style-background-image +style-header-left = + element style:header-left { + common-style-header-footer-attlist, header-footer-content + } +style-header-style = + element style:header-style { style-header-footer-properties? } +style-list-level-label-alignment = + element style:list-level-label-alignment { + style-list-level-label-alignment-attlist, empty }? -common-editable-attlist = attribute style:editable { boolean }? -horizontal-mirror = - "horizontal" | "horizontal-on-odd" | "horizontal-on-even" -clipShape = - xsd:string { - pattern = - "rect\([ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)))|(auto))([ ]*,[ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))))|(auto)){3}[ ]*\)" +style-list-level-label-alignment-attlist = + attribute text:label-followed-by { "listtab" | "space" | "nothing" } + & attribute text:list-tab-stop-position { length }? + & attribute fo:text-indent { length }? + & attribute fo:margin-left { length }? +style-list-level-properties = + element style:list-level-properties { + style-list-level-properties-content-strict } -nonNegativePixelLength = - xsd:string { pattern = "([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)" } -style-chart-properties = - element style:chart-properties { - style-chart-properties-content-strict +style-list-level-properties-attlist = + common-text-align + & attribute text:space-before { length }? + & attribute text:min-label-width { nonNegativeLength }? + & attribute text:min-label-distance { nonNegativeLength }? + & attribute style:font-name { \string }? + & attribute fo:width { positiveLength }? + & attribute fo:height { positiveLength }? + & common-vertical-rel-attlist + & common-vertical-pos-attlist + & attribute text:list-level-position-and-space-mode { + "label-width-and-position" | "label-alignment" + }? +style-list-level-properties-content-strict = + style-list-level-properties-attlist, + style-list-level-properties-elements +style-list-level-properties-elements = style-list-level-label-alignment +style-map = element style:map { style-map-attlist, empty } +style-map-attlist = + attribute style:condition { \string } + & attribute style:apply-style-name { styleNameRef } + & attribute style:base-cell-address { cellAddress }? +style-master-page = + element style:master-page { + style-master-page-attlist, + (style-header, + style-header-left?, + (style-header-first?) + # https://issues.oasis-open.org/browse/OFFICE-3789 + )?, + (style-footer, + style-footer-left?, + (style-footer-first?) + # https://issues.oasis-open.org/browse/OFFICE-3789 + )?, + draw-layer-set?, + office-forms?, + shape*, + animation-element?, + presentation-notes? } -style-chart-properties-content-strict = - style-chart-properties-attlist, style-chart-properties-elements -style-chart-properties-elements = empty -style-chart-properties-attlist = - attribute chart:scale-text { boolean }? - & attribute chart:three-dimensional { boolean }? - & attribute chart:deep { boolean }? - & attribute chart:right-angled-axes { boolean }? - & (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 { anyIRI } - }) - | empty) - & attribute chart:symbol-width { nonNegativeLength }? - & attribute chart:symbol-height { nonNegativeLength }? - & attribute chart:sort-by-x-values { boolean }? - & attribute chart:vertical { boolean }? - & attribute chart:connect-bars { boolean }? - & attribute chart:gap-width { integer }? - & attribute chart:overlap { integer }? - & attribute chart:group-bars-per-axis { boolean }? - & attribute chart:japanese-candle-stick { boolean }? - & attribute chart:interpolation { - "none" | "cubic-spline" | "b-spline" +style-master-page-attlist = + attribute style:name { styleName } + & attribute style:display-name { \string }? + & attribute style:page-layout-name { styleNameRef } + & attribute draw:style-name { styleNameRef }? + & attribute style:next-style-name { styleNameRef }? +style-num-letter-sync-attlist = + attribute style:num-letter-sync { boolean }? +style-page-layout = + element style:page-layout { + style-page-layout-attlist, style-page-layout-content + } +style-page-layout-attlist = + attribute style:name { styleName } + & attribute style:page-usage { + "all" | "left" | "right" | "mirrored" }? - & attribute chart:spline-order { positiveInteger }? - & attribute chart:spline-resolution { positiveInteger }? - & attribute chart:pie-offset { nonNegativeInteger }? - & attribute chart:angle-offset { angle }? - & attribute chart:hole-size { percent }? - & attribute chart:lines { boolean }? - & attribute chart:solid-type { - "cuboid" | "cylinder" | "cone" | "pyramid" +style-page-layout-content = + style-page-layout-properties?, + style-header-style?, + style-footer-style? +style-page-layout-properties = + element style:page-layout-properties { + style-page-layout-properties-content-strict + } +style-page-layout-properties-attlist = + attribute fo:page-width { length }? + & attribute fo:page-height { length }? + & common-num-format-attlist? + & common-num-format-prefix-suffix-attlist + & attribute style:paper-tray-name { "default" | \string }? + & attribute style:print-orientation { "portrait" | "landscape" }? + & common-horizontal-margin-attlist + & common-vertical-margin-attlist + & common-margin-attlist + & common-border-attlist + & common-border-line-width-attlist + & common-padding-attlist + & common-shadow-attlist + & common-background-color-attlist + & attribute style:register-truth-ref-style-name { styleNameRef }? + & attribute style:print { + list { + ("headers" + | "grid" + | "annotations" + | "objects" + | "charts" + | "drawings" + | "formulas" + | "zero-values")* + } }? - & attribute chart:stacked { boolean }? - & attribute chart:percentage { boolean }? - & attribute chart:treat-empty-cells { - "use-zero" | "leave-gap" | "ignore" + & attribute style:print-page-order { "ttb" | "ltr" }? + & attribute style:first-page-number { positiveInteger | "continue" }? + & (attribute style:scale-to { percent }? + | attribute style:scale-to-pages { positiveInteger }? + | (attribute style:scale-to-X { positiveInteger }?, + attribute style:scale-to-Y { positiveInteger }?)) + & # https://issues.oasis-open.org/browse/OFFICE-3857 + attribute style:table-centering { + "horizontal" | "vertical" | "both" | "none" }? - & attribute chart:link-data-style-to-source { boolean }? - & attribute chart:logarithmic { boolean }? - & attribute chart:maximum { double }? - & attribute chart:minimum { double }? - & attribute chart:origin { double }? - & attribute chart:interval-major { double }? - & attribute chart:interval-minor-divisor { positiveInteger }? - & 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 }? - & attribute chart:reverse-direction { boolean }? - & attribute chart:display-label { boolean }? - & attribute chart:text-overlap { boolean }? - & attribute text:line-break { boolean }? - & attribute chart:label-arrangement { - "side-by-side" | "stagger-even" | "stagger-odd" + & attribute style:footnote-max-height { length }? + & common-writing-mode-attlist + & attribute style:layout-grid-mode { "none" | "line" | "both" }? + & attribute style:layout-grid-standard-mode { boolean }? + & attribute style:layout-grid-base-height { length }? + & attribute style:layout-grid-ruby-height { length }? + & attribute style:layout-grid-lines { positiveInteger }? + & attribute style:layout-grid-base-width { length }? + & attribute style:layout-grid-color { color }? + & attribute style:layout-grid-ruby-below { boolean }? + & attribute style:layout-grid-print { boolean }? + & attribute style:layout-grid-display { boolean }? + & attribute style:layout-grid-snap-to { boolean }? +style-page-layout-properties-content-strict = + style-page-layout-properties-attlist, + style-page-layout-properties-elements +style-page-layout-properties-elements = + style-background-image & style-columns & style-footnote-sep +style-paragraph-properties = + element style:paragraph-properties { + style-paragraph-properties-content-strict + } +style-paragraph-properties-attlist = + attribute style:contextual-spacing { boolean }? + & # https://issues.oasis-open.org/browse/OFFICE-3767 + attribute fo:line-height { "normal" | nonNegativeLength | percent }? + & attribute style:line-height-at-least { nonNegativeLength }? + & attribute style:line-spacing { length }? + & attribute style:font-independent-line-spacing { boolean }? + & common-text-align + & attribute fo:text-align-last { "start" | "center" | "justify" }? + & attribute style:justify-single-word { boolean }? + & attribute fo:keep-together { "auto" | "always" }? + & attribute fo:widows { nonNegativeInteger }? + & attribute fo:orphans { nonNegativeInteger }? + & attribute style:tab-stop-distance { nonNegativeLength }? + & attribute fo:hyphenation-keep { "auto" | "page" }? + & attribute fo:hyphenation-ladder-count { + "no-limit" | positiveInteger }? + & attribute style:register-true { boolean }? + & common-horizontal-margin-attlist + & attribute fo:text-indent { length | percent }? + & attribute style:auto-text-indent { boolean }? + & common-vertical-margin-attlist + & common-margin-attlist + & common-break-attlist + & common-background-color-attlist + & common-border-attlist + & common-border-line-width-attlist + & attribute style:join-border { boolean }? + & common-padding-attlist + & common-shadow-attlist + & common-keep-with-next-attlist + & attribute text:number-lines { boolean }? + & attribute text:line-number { nonNegativeInteger }? + & attribute style:text-autospace { "none" | "ideograph-alpha" }? + & attribute style:punctuation-wrap { "simple" | "hanging" }? + & attribute style:line-break { "normal" | "strict" }? + & attribute style:vertical-align { + "top" | "middle" | "bottom" | "auto" | "baseline" + }? + & common-writing-mode-attlist + & attribute style:writing-mode-automatic { boolean }? + & attribute style:snap-to-layout-grid { boolean }? + & common-page-number-attlist + & common-background-transparency-attlist +style-paragraph-properties-content-strict = + style-paragraph-properties-attlist, + style-paragraph-properties-elements +style-paragraph-properties-elements = + style-tab-stops & style-drop-cap & style-background-image +style-presentation-page-layout = + element style:presentation-page-layout { + attribute style:name { styleName }, + attribute style:display-name { \string }?, + presentation-placeholder* + } +style-region-center = element style:region-center { region-content } +style-region-left = element style:region-left { region-content } +style-region-right = element style:region-right { region-content } +style-ruby-properties = + element style:ruby-properties { style-ruby-properties-content-strict } +style-ruby-properties-attlist = + attribute style:ruby-position { "above" | "below" }? + & attribute style:ruby-align { + "left" + | "center" + | "right" + | "distribute-letter" + | "distribute-space" + }? +style-ruby-properties-content-strict = + style-ruby-properties-attlist, style-ruby-properties-elements +style-ruby-properties-elements = empty +style-section-properties = + element style:section-properties { + style-section-properties-content-strict + } +style-section-properties-attlist = + common-background-color-attlist + & common-horizontal-margin-attlist + & attribute style:protect { boolean }? + & common-editable-attlist + & attribute text:dont-balance-text-columns { boolean }? + & common-writing-mode-attlist +style-section-properties-content-strict = + style-section-properties-attlist, style-section-properties-elements +style-section-properties-elements = + style-background-image & style-columns & text-notes-configuration* +style-style = + element style:style { + style-style-attlist, style-style-content, style-map* + } +style-style-attlist = + attribute style:name { styleName } + & attribute style:display-name { \string }? + & attribute style:parent-style-name { styleNameRef }? + & attribute style:next-style-name { styleNameRef }? + & attribute style:list-level { positiveInteger | empty }? + & attribute style:list-style-name { styleName | empty }? + & attribute style:master-page-name { styleNameRef }? + & attribute style:auto-update { boolean }? + & attribute style:data-style-name { styleNameRef }? + & attribute style:percentage-data-style-name { styleNameRef }? + & attribute style:class { \string }? + & attribute style:default-outline-level { positiveInteger | empty }? +style-style-content = + (attribute style:family { "text" }, + style-text-properties?) + | (attribute style:family { "paragraph" }, + style-paragraph-properties?, + style-text-properties?) + | (attribute style:family { "section" }, + style-section-properties?) + | (attribute style:family { "ruby" }, + style-ruby-properties?) + | (attribute style:family { "table" }, + style-table-properties?) + | (attribute style:family { "table-column" }, + style-table-column-properties?) + | (attribute style:family { "table-row" }, + style-table-row-properties?) + | (attribute style:family { "table-cell" }, + style-table-cell-properties?, + style-paragraph-properties?, + style-text-properties?) + | (attribute style:family { "graphic" | "presentation" }, + style-graphic-properties?, + style-paragraph-properties?, + style-text-properties?) + | (attribute style:family { "drawing-page" }, + style-drawing-page-properties?) + | (attribute style:family { "chart" }, + style-chart-properties?, + style-graphic-properties?, + style-paragraph-properties?, + style-text-properties?) +style-tab-stop = + element style:tab-stop { style-tab-stop-attlist, empty } +style-tab-stop-attlist = + attribute style:position { length } + & (attribute style:type { "left" | "center" | "right" }? + | (attribute style:type { "char" }, + style-tab-stop-char-attlist)) + & attribute style:leader-type { lineType }? + & attribute style:leader-style { lineStyle }? + & attribute style:leader-width { lineWidth }? + & attribute style:leader-color { "font-color" | color }? + & attribute style:leader-text { character }? + & attribute style:leader-text-style { styleNameRef }? +style-tab-stop-char-attlist = attribute style:char { character } +style-tab-stops = element style:tab-stops { style-tab-stop* }? +style-table-cell-properties = + element style:table-cell-properties { + style-table-cell-properties-content-strict + } +style-table-cell-properties-attlist = + attribute style:vertical-align { + "top" | "middle" | "bottom" | "automatic" + }? + & attribute style:text-align-source { "fix" | "value-type" }? & common-style-direction-attlist + & attribute style:glyph-orientation-vertical { + "auto" | "0" | "0deg" | "0rad" | "0grad" + }? + & common-writing-mode-attlist + & common-shadow-attlist + & common-background-color-attlist + & common-border-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 }? + & common-border-line-width-attlist + & common-padding-attlist + & attribute fo:wrap-option { "no-wrap" | "wrap" }? & common-rotation-angle-attlist - & attribute chart:data-label-number { - "none" | "value" | "percentage" | "value-and-percentage" + & attribute style:rotation-align { + "none" | "bottom" | "top" | "center" }? - & attribute chart:data-label-text { boolean }? - & attribute chart:data-label-symbol { boolean }? - & element chart:label-separator { text-p }? - & attribute chart:label-position { labelPositions }? - & attribute chart:label-position-negative { labelPositions }? - & attribute chart:visible { boolean }? - & attribute chart:auto-position { boolean }? - & attribute chart:auto-size { boolean }? - & attribute chart:mean-value { boolean }? - & attribute chart:error-category { + & attribute style:cell-protect { "none" - | "variance" - | "standard-deviation" - | "percentage" - | "error-margin" - | "constant" - | "standard-error" - | "cell-range" + | "hidden-and-protected" + | list { ("protected" | "formula-hidden")+ } }? - & attribute chart:error-percentage { double }? - & attribute chart:error-margin { double }? - & attribute chart:error-lower-limit { double }? - & attribute chart:error-upper-limit { double }? - & attribute chart:error-upper-indicator { boolean }? - & attribute chart:error-lower-indicator { boolean }? - & attribute chart:error-lower-range { cellRangeAddressList }? - & attribute chart:error-upper-range { cellRangeAddressList }? - & attribute chart:series-source { "columns" | "rows" }? - & attribute chart:regression-type { - "none" | "linear" | "logarithmic" | "exponential" | "power" + & attribute style:print-content { boolean }? + & attribute style:decimal-places { nonNegativeInteger }? + & attribute style:repeat-content { boolean }? + & attribute style:shrink-to-fit { boolean }? +style-table-cell-properties-content-strict = + style-table-cell-properties-attlist, + style-table-cell-properties-elements +style-table-cell-properties-elements = style-background-image +style-table-column-properties = + element style:table-column-properties { + style-table-column-properties-content-strict + } +style-table-column-properties-attlist = + attribute style:column-width { positiveLength }? + & attribute style:rel-column-width { relativeLength }? + & attribute style:use-optimal-column-width { boolean }? + & common-break-attlist +style-table-column-properties-content-strict = + style-table-column-properties-attlist, + style-table-column-properties-elements +style-table-column-properties-elements = empty +style-table-properties = + element style:table-properties { + style-table-properties-content-strict + } +style-table-properties-attlist = + attribute style:width { positiveLength }? + & attribute style:rel-width { percent }? + & attribute table:align { "left" | "center" | "right" | "margins" }? + & common-horizontal-margin-attlist + & common-vertical-margin-attlist + & common-margin-attlist + & common-page-number-attlist + & common-break-attlist + & common-background-color-attlist + & common-shadow-attlist + & common-keep-with-next-attlist + & attribute style:may-break-between-rows { boolean }? + & attribute table:border-model { "collapsing" | "separating" }? + & common-writing-mode-attlist + & attribute table:display { boolean }? + & (attribute table:tab-color { color }?) + # https://issues.oasis-open.org/browse/OFFICE-2173 + +style-table-properties-content-strict = + style-table-properties-attlist, style-table-properties-elements +style-table-properties-elements = style-background-image +style-table-row-properties = + element style:table-row-properties { + style-table-row-properties-content-strict + } +style-table-row-properties-attlist = + attribute style:row-height { positiveLength }? + & attribute style:min-row-height { nonNegativeLength }? + & attribute style:use-optimal-row-height { boolean }? + & common-background-color-attlist + & common-break-attlist + & attribute fo:keep-together { "auto" | "always" }? +style-table-row-properties-content-strict = + style-table-row-properties-attlist, + style-table-row-properties-elements +style-table-row-properties-elements = style-background-image +style-text-properties = + element style:text-properties { style-text-properties-content-strict } +style-text-properties-attlist = + attribute fo:font-variant { fontVariant }? + & attribute fo:text-transform { + "none" | "lowercase" | "uppercase" | "capitalize" }? - & attribute chart:axis-position { "start" | "end" | double }? - & attribute chart:axis-label-position { - "near-axis" - | "near-axis-other-side" - | "outside-start" - | "outside-end" + & attribute fo:color { color }? + & attribute style:use-window-font-color { boolean }? + & attribute style:text-outline { boolean }? + & attribute style:text-line-through-type { lineType }? + & attribute style:text-line-through-style { lineStyle }? + & attribute style:text-line-through-width { lineWidth }? + & attribute style:text-line-through-color { "font-color" | color }? + & attribute style:text-line-through-text { \string }? + & attribute style:text-line-through-text-style { styleNameRef }? + & attribute style:text-position { + list { (percent | "super" | "sub"), percent? } }? - & attribute chart:tick-mark-position { - "at-labels" | "at-axis" | "at-labels-and-axis" + & attribute style:font-name { \string }? + & attribute style:font-name-asian { \string }? + & attribute style:font-name-complex { \string }? + & attribute fo:font-family { \string }? + & attribute style:font-family-asian { \string }? + & attribute style:font-family-complex { \string }? + & attribute style:font-family-generic { fontFamilyGeneric }? + & attribute style:font-family-generic-asian { fontFamilyGeneric }? + & attribute style:font-family-generic-complex { fontFamilyGeneric }? + & attribute style:font-style-name { \string }? + & attribute style:font-style-name-asian { \string }? + & attribute style:font-style-name-complex { \string }? + & attribute style:font-pitch { fontPitch }? + & attribute style:font-pitch-asian { fontPitch }? + & attribute style:font-pitch-complex { fontPitch }? + & attribute style:font-charset { textEncoding }? + & attribute style:font-charset-asian { textEncoding }? + & attribute style:font-charset-complex { textEncoding }? + & attribute fo:font-size { positiveLength | percent }? + & attribute style:font-size-asian { positiveLength | percent }? + & attribute style:font-size-complex { positiveLength | percent }? + & attribute style:font-size-rel { length }? + & attribute style:font-size-rel-asian { length }? + & attribute style:font-size-rel-complex { length }? + & attribute style:script-type { + "latin" | "asian" | "complex" | "ignore" }? - & attribute chart:include-hidden-cells { boolean }? -labelPositions = - "avoid-overlap" - | "center" - | "top" - | "top-right" - | "right" - | "bottom-right" - | "bottom" - | "bottom-left" - | "left" - | "top-left" - | "inside" - | "outside" - | "near-origin" -style-drawing-page-properties-attlist = - attribute presentation:transition-type { - "manual" | "automatic" | "semi-automatic" - }? - & attribute presentation:transition-style { + & attribute fo:letter-spacing { length | "normal" }? + & attribute fo:language { languageCode }? + & attribute style:language-asian { languageCode }? + & attribute style:language-complex { languageCode }? + & attribute fo:country { countryCode }? + & attribute style:country-asian { countryCode }? + & attribute style:country-complex { countryCode }? + & attribute fo:script { scriptCode }? + & attribute style:script-asian { scriptCode }? + & attribute style:script-complex { scriptCode }? + & attribute style:rfc-language-tag { language }? + & attribute style:rfc-language-tag-asian { language }? + & attribute style:rfc-language-tag-complex { language }? + & attribute fo:font-style { fontStyle }? + & attribute style:font-style-asian { fontStyle }? + & attribute style:font-style-complex { fontStyle }? + & attribute style:font-relief { "none" | "embossed" | "engraved" }? + & attribute fo:text-shadow { shadowType }? + & attribute style:text-underline-type { lineType }? + & attribute style:text-underline-style { lineStyle }? + & attribute style:text-underline-width { lineWidth }? + & attribute style:text-underline-color { "font-color" | color }? + & attribute style:text-overline-type { lineType }? + & attribute style:text-overline-style { lineStyle }? + & attribute style:text-overline-width { lineWidth }? + & attribute style:text-overline-color { "font-color" | color }? + & attribute style:text-overline-mode { lineMode }? + & attribute fo:font-weight { fontWeight }? + & attribute style:font-weight-asian { fontWeight }? + & attribute style:font-weight-complex { fontWeight }? + & attribute style:text-underline-mode { lineMode }? + & attribute style:text-line-through-mode { lineMode }? + & attribute style:letter-kerning { boolean }? + & attribute style:text-blinking { boolean }? + & common-background-color-attlist + & attribute style:text-combine { "none" | "letters" | "lines" }? + & attribute style:text-combine-start-char { character }? + & attribute style:text-combine-end-char { character }? + & attribute style:text-emphasize { "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" + | list { + ("none" | "accent" | "dot" | "circle" | "disc"), + ("above" | "below") + } }? - & attribute presentation:transition-speed { presentationSpeeds }? - & attribute smil:type { \string }? - & attribute smil:subtype { \string }? - & attribute smil:direction { "forward" | "reverse" }? - & attribute smil:fadeColor { color }? - & attribute presentation:duration { duration }? - & attribute presentation:visibility { "visible" | "hidden" }? - & attribute draw:background-size { "full" | "border" }? - & attribute presentation:background-objects-visible { boolean }? - & attribute presentation:background-visible { boolean }? - & attribute presentation:display-header { boolean }? - & attribute presentation:display-footer { boolean }? - & attribute presentation:display-page-number { boolean }? - & attribute presentation:display-date-time { boolean }? -style-drawing-page-properties-elements = presentation-sound? -\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 -NCName = xsd:NCName -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}" } -scriptCode = xsd:token { pattern = "[A-Za-z0-9]{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]+)%" } -zeroToHundredPercent = - xsd:string { - pattern = "([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%" - } -signedZeroToHundredPercent = - xsd:string { - pattern = "-?([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%" - } -relativeLength = xsd:string { pattern = "[0-9]+\*" } -coordinate = length -distance = length -color = xsd:string { pattern = "#[0-9a-fA-F]{6}" } -angle = xsd:string -CURIE = - xsd:string { pattern = "(([\i-[:]][\c-[:]]*)?:)?.+" minLength = "1" } -CURIEs = list { CURIE+ } -SafeCURIE = - xsd:string { - pattern = "\[(([\i-[:]][\c-[:]]*)?:)?.+\]" - minLength = "3" - } -URIorSafeCURIE = anyURI | SafeCURIE + & attribute style:text-scale { percent }? + & attribute style:text-rotation-angle { angle }? + & attribute style:text-rotation-scale { "fixed" | "line-height" }? + & attribute fo:hyphenate { boolean }? + & attribute fo:hyphenation-remain-char-count { positiveInteger }? + & attribute fo:hyphenation-push-char-count { positiveInteger }? + & (attribute text:display { "true" } + | attribute text:display { "none" } + | (attribute text:display { "condition" }, + attribute text:condition { "none" }) + | empty) +style-text-properties-content-strict = + style-text-properties-attlist, style-text-properties-elements +style-text-properties-elements = empty styleName = xsd:NCName styleNameRef = xsd:NCName | empty styleNameRefs = list { xsd:NCName* } -variableName = xsd:string +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* +svg-definition-src = + element svg:definition-src { + common-svg-font-face-xlink-attlist, empty + } +svg-desc = element svg:desc { text } +svg-font-face-format = + element svg:font-face-format { + attribute svg:string { \string }?, + empty + } +svg-font-face-name = + element svg:font-face-name { + attribute svg:name { \string }?, + empty + } +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-linearGradient = + element svg:linearGradient { + common-svg-gradient-attlist, + attribute svg:x1 { coordinate | percent }?, + attribute svg:y1 { coordinate | percent }?, + attribute svg:x2 { coordinate | percent }?, + attribute svg:y2 { coordinate | percent }?, + svg-stop* + } +svg-radialGradient = + element svg:radialGradient { + common-svg-gradient-attlist, + attribute svg:cx { coordinate | percent }?, + attribute svg:cy { coordinate | percent }?, + 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 }? + } +svg-title = element svg:title { text } +tab-cycles = "records" | "current" | "page" +table-background = + element table:background { table-background-attlist, empty } +table-background-attlist = attribute table:style-name { styleNameRef } +table-body = element table:body { common-table-template-attlist, empty } +table-calculation-setting-attlist = + attribute table:case-sensitive { boolean }? + & attribute table:precision-as-shown { boolean }? + & attribute table:search-criteria-must-apply-to-whole-cell { + boolean + }? + & attribute table:automatic-find-labels { boolean }? + & attribute table:use-regular-expressions { boolean }? + & attribute table:use-wildcards { boolean }? + & attribute table:null-year { positiveInteger }? +table-calculation-settings = + element table:calculation-settings { + table-calculation-setting-attlist, + table-null-date?, + table-iteration? + } +table-cell-address = + element table:cell-address { + common-table-cell-address-attlist, empty + } +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-content-deletion = + element table:cell-content-deletion { + attribute table:id { \string }?, + table-cell-address?, + table-change-track-table-cell? + } +table-cell-range-source = + element table:cell-range-source { + table-table-cell-range-source-attlist, + table-linked-source-attlist, + empty + } +table-change-deletion = + element table:change-deletion { + attribute table:id { \string }?, + empty + } +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 }? + & attribute table:matrix-covered { boolean }? + & attribute table:formula { \string }? + & attribute table:number-matrix-columns-spanned { positiveInteger }? + & attribute table:number-matrix-rows-spanned { positiveInteger }? + & common-value-and-type-attlist? +table-columns = table-table-columns | table-table-column+ +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-consolidation = + element table:consolidation { table-consolidation-attlist, empty } +table-consolidation-attlist = + attribute table:function { + "average" + | "count" + | "countnums" + | "max" + | "min" + | "product" + | "stdev" + | "stdevp" + | "sum" + | "var" + | "varp" + | \string + } + & attribute table:source-cell-range-addresses { cellRangeAddressList } + & attribute table:target-cell-address { cellAddress } + & attribute table:use-labels { "none" | "row" | "column" | "both" }? + & attribute table:link-to-source-data { boolean }? +table-content-validation = + element table:content-validation { + table-validation-attlist, + table-help-message?, + (table-error-message | (table-error-macro, office-event-listeners))? + } +table-content-validations = + element table:content-validations { table-content-validation+ } +table-covered-table-cell = + element table:covered-table-cell { + table-table-cell-attlist, table-table-cell-content + } +table-cut-offs = + element table:cut-offs { + table-movement-cut-off+ + | (table-insertion-cut-off, table-movement-cut-off*) + } +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 } + & attribute table:data-field { \string } + & attribute table:member-count { nonNegativeInteger } + & attribute table:display-member-mode { "from-top" | "from-bottom" } +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 } + & (attribute table:orientation { + "row" | "column" | "data" | "hidden" + } + | (attribute table:orientation { "page" }, + attribute table:selected-page { \string })) + & attribute table:is-data-layout-field { \string }? + & attribute table:function { + "auto" + | "average" + | "count" + | "countnums" + | "max" + | "min" + | "product" + | "stdev" + | "stdevp" + | "sum" + | "var" + | "varp" + | \string + }? + & attribute table:used-hierarchy { integer }? +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 } + & ((attribute table:member-type { "named" }, + attribute table:member-name { \string }) + | attribute table:member-type { "previous" | "next" }) + & attribute table:type { + "none" + | "member-difference" + | "member-percentage" + | "member-percentage-difference" + | "running-total" + | "row-percentage" + | "column-percentage" + | "total-percentage" + | "index" + } +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-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 } + & (attribute table:date-start { dateOrDateTime | "auto" } + | attribute table:start { double | "auto" })? + & (attribute table:date-end { dateOrDateTime | "auto" } + | attribute table:end { double | "auto" })? + & attribute table:step { double }? + & attribute table:grouped-by { + "seconds" + | "minutes" + | "hours" + | "days" + | "months" + | "quarters" + | "years" + }? +# https://issues.oasis-open.org/browse/OFFICE-2118 +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" + } + & attribute table:add-empty-lines { boolean } +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-member = + element table:data-pilot-member { + table-data-pilot-member-attlist, empty + } +table-data-pilot-member-attlist = + attribute table:name { \string } + & attribute table:display { boolean }? + & attribute table:show-details { boolean }? +table-data-pilot-members = + element table:data-pilot-members { table-data-pilot-member* } +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" }) + & attribute table:order { "ascending" | "descending" } +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-subtotals = + element table:data-pilot-subtotals { table-data-pilot-subtotal* } +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 } + & attribute table:application-data { \string }? + & attribute table:grand-total { "none" | "row" | "column" | "both" }? + & attribute table:ignore-empty-rows { boolean }? + & attribute table:identify-categories { boolean }? + & attribute table:target-range-address { cellRangeAddress } + & attribute table:buttons { cellRangeAddressList }? + & attribute table:show-filter-button { boolean }? + & attribute table:drill-down-on-double-click { boolean }? +table-data-pilot-tables = + element table:data-pilot-tables { table-data-pilot-table* } +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 }? + & attribute table:is-selection { boolean }? + & attribute table:on-update-keep-styles { boolean }? + & attribute table:on-update-keep-size { boolean }? + & attribute table:has-persistent-data { boolean }? + & attribute table:orientation { "column" | "row" }? + & attribute table:contains-header { boolean }? + & attribute table:display-filter-buttons { boolean }? + & attribute table:target-range-address { cellRangeAddress } + & attribute table:refresh-delay { boolean }? +table-database-ranges = + element table:database-ranges { table-database-range* } +table-database-source-query = + element table:database-source-table { + table-database-source-table-attlist, empty + } +table-database-source-query-attlist = + attribute table:database-name { \string } + & attribute table:query-name { \string } +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 } + & attribute table:sql-statement { \string } + & attribute table:parse-sql-statement { boolean }? +table-database-source-table = + element table:database-source-query { + table-database-source-query-attlist, empty + } +table-database-source-table-attlist = + attribute table:database-name { \string } + & attribute table:database-table-name { \string } +table-dde-link = + element table:dde-link { office-dde-source, table-table } +table-dde-links = element table:dde-links { table-dde-link+ } +table-decls = + table-calculation-settings?, + table-content-validations?, + table-label-ranges? +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" } + & attribute table:position { integer } + & attribute table:table { integer }? + & attribute table:multi-deletion-spanned { integer }? +table-deletions = + element table:deletions { + (table-cell-content-deletion | table-change-deletion)+ + } +table-dependencies = element table:dependencies { table-dependency+ } +table-dependency = + element table:dependency { + attribute table:id { \string }, + empty + } +table-desc = element table:desc { text } +table-detective = + element table:detective { table-highlighted-range*, table-operation* } +table-error-macro = + element table:error-macro { + attribute table:execute { boolean }? + } +table-error-message = + element table:error-message { + attribute table:title { \string }?, + attribute table:display { boolean }?, + attribute table:message-type { + "stop" | "warning" | "information" + }?, + text-p* + } +table-even-columns = + element table:even-columns { common-table-template-attlist, empty } +table-even-rows = + element table:even-rows { common-table-template-attlist, empty } +table-filter = + element table:filter { + table-filter-attlist, + (table-filter-condition | table-filter-and | table-filter-or) + } +table-filter-and = + element table:filter-and { + (table-filter-or | table-filter-condition)+ + } +table-filter-attlist = + attribute table:target-range-address { cellRangeAddress }? + & attribute table:condition-source { "self" | "cell-range" }? + & attribute table:condition-source-range-address { cellRangeAddress }? + & attribute table:display-duplicates { boolean }? +table-filter-condition = + element table:filter-condition { + table-filter-condition-attlist, table-filter-set-item* + } +table-filter-condition-attlist = + attribute table:field-number { nonNegativeInteger } + & attribute table:value { \string | double } + & attribute table:operator { \string } + & attribute table:case-sensitive { \string }? + & attribute table:data-type { "text" | "number" }? +table-filter-or = + element table:filter-or { + (table-filter-and | table-filter-condition)+ + } +table-filter-set-item = + element table:filter-set-item { + attribute table:value { \string }, + empty + } +table-first-column = + element table:first-column { common-table-template-attlist, empty } +table-first-row = + element table:first-row { common-table-template-attlist, empty } +table-functions = + table-named-expressions?, + table-database-ranges?, + table-data-pilot-tables?, + table-consolidation?, + table-dde-links? +table-help-message = + element table:help-message { + attribute table:title { \string }?, + attribute table:display { boolean }?, + text-p* + } +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 }? + & attribute table:direction { + "from-another-table" | "to-another-table" | "from-same-table" + } + & attribute table:contains-error { boolean }? +table-highlighted-range-attlist-invalid = + attribute table:marked-invalid { 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" } + & attribute table:position { integer } + & attribute table:count { positiveInteger }? + & attribute table:table { integer }? +table-insertion-cut-off = + element table:insertion-cut-off { + table-insertion-cut-off-attlist, empty + } +table-insertion-cut-off-attlist = + attribute table:id { \string } + & attribute table:position { integer } +table-iteration = + element table:iteration { + attribute table:status { "enable" | "disable" }?, + attribute table:steps { positiveInteger }?, + attribute table:maximum-difference { double }?, + empty + } +table-label-range = + element table:label-range { table-label-range-attlist, empty } +table-label-range-attlist = + attribute table:label-cell-range-address { cellRangeAddress } + & attribute table:data-cell-range-address { cellRangeAddress } + & attribute table:orientation { "column" | "row" } +table-label-ranges = element table:label-ranges { table-label-range* } +table-last-column = + element table:last-column { common-table-template-attlist, empty } +table-last-row = + element table:last-row { common-table-template-attlist, empty } +table-linked-source-attlist = + attribute xlink:type { "simple" } + & attribute xlink:href { anyIRI } + & attribute xlink:actuate { "onRequest" }? + & attribute table:filter-name { \string }? + & attribute table:filter-options { \string }? + & attribute table:refresh-delay { duration }? +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-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-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-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 }?, + attribute table:range-usable-as { + "none" + | list { + ("print-range" | "filter" | "repeat-row" | "repeat-column")+ + } + }? +table-null-date = + element table:null-date { + attribute table:value-type { "date" }?, + attribute table:date-value { date }?, + empty + } +table-odd-columns = + element table:odd-columns { common-table-template-attlist, empty } +table-odd-rows = + element table:odd-rows { common-table-template-attlist, empty } +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" + } + & attribute table:index { nonNegativeInteger } +table-previous = + element table:previous { + attribute table:id { \string }?, + table-change-track-table-cell + } +table-rows = + table-table-rows | (text-soft-page-break?, table-table-row)+ +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-scenario = + element table:scenario { table-scenario-attlist, empty } +table-scenario-attlist = + attribute table:scenario-ranges { cellRangeAddressList } + & attribute table:is-active { boolean } + & attribute table:display-border { boolean }? + & attribute table:border-color { color }? + & attribute table:copy-back { boolean }? + & attribute table:copy-styles { boolean }? + & attribute table:copy-formulas { boolean }? + & attribute table:comment { \string }? + & attribute table:protected { boolean }? +table-shapes = element table:shapes { shape+ } +table-sort = element table:sort { table-sort-attlist, table-sort-by+ } +table-sort-attlist = + attribute table:bind-styles-to-content { boolean }? + & attribute table:target-range-address { cellRangeAddress }? + & attribute table:case-sensitive { boolean }? + & attribute table:language { languageCode }? + & attribute table:country { countryCode }? + & attribute table:script { scriptCode }? + & attribute table:rfc-language-tag { language }? + & attribute table:algorithm { \string }? + & attribute table:embedded-number-behavior { + "alpha-numeric" | "integer" | "double" + }? +table-sort-by = element table:sort-by { table-sort-by-attlist, empty } +table-sort-by-attlist = + attribute table:field-number { nonNegativeInteger } + & attribute table:data-type { + "text" | "number" | "automatic" | \string + }? + & attribute table:order { "ascending" | "descending" }? +table-sort-groups = + element table:sort-groups { table-sort-groups-attlist, empty } +table-sort-groups-attlist = + attribute table:data-type { + "text" | "number" | "automatic" | \string + }? + & attribute table:order { "ascending" | "descending" }? +table-source-cell-range = + element table:source-cell-range { + table-source-cell-range-attlist, table-filter? + } +table-source-cell-range-attlist = + # OFFICE-3665 + (attribute table:cell-range-address { cellRangeAddress } + | (attribute table:name { \string }, + attribute table:cell-range-address { cellRangeAddress }?)) +table-source-range-address = + element table:source-range-address { + common-table-range-attlist, empty + } +table-source-service = + element table:source-service { table-source-service-attlist, empty } +table-source-service-attlist = + attribute table:name { \string } + & attribute table:source-name { \string } + & attribute table:object-name { \string } + & attribute table:user-name { \string }? + & attribute table:password { \string }? +table-subtotal-field = + element table:subtotal-field { table-subtotal-field-attlist, empty } +table-subtotal-field-attlist = + attribute table:field-number { nonNegativeInteger } + & attribute table:function { + "average" + | "count" + | "countnums" + | "max" + | "min" + | "product" + | "stdev" + | "stdevp" + | "sum" + | "var" + | "varp" + | \string + } +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-rules = + element table:subtotal-rules { + table-subtotal-rules-attlist, + table-sort-groups?, + table-subtotal-rule* + } +table-subtotal-rules-attlist = + attribute table:bind-styles-to-content { boolean }? + & attribute table:case-sensitive { boolean }? + & attribute table:page-breaks-on-group-change { boolean }? +table-table = + element table:table { + table-table-attlist, + table-title?, + table-desc?, + table-table-source?, + office-dde-source?, + table-scenario?, + office-forms?, + table-shapes?, + table-columns-and-groups, + table-rows-and-groups, + table-named-expressions? + } +table-table-attlist = + attribute table:name { \string }? + & attribute table:style-name { styleNameRef }? + & attribute table:template-name { \string }? + & attribute table:use-first-row-styles { boolean }? + & attribute table:use-last-row-styles { boolean }? + & attribute table:use-first-column-styles { boolean }? + & attribute table:use-last-column-styles { boolean }? + & attribute table:use-banding-rows-styles { boolean }? + & attribute table:use-banding-columns-styles { boolean }? + & attribute table:protected { boolean }? + & attribute table:protection-key { \string }? + & attribute table:protection-key-digest-algorithm { anyIRI }? + & attribute table:print { boolean }? + & attribute table:print-ranges { cellRangeAddressList }? + & xml-id? + & attribute table:is-sub-table { boolean }? +table-table-cell = + element table:table-cell { + table-table-cell-attlist, + table-table-cell-attlist-extra, + table-table-cell-content + } +table-table-cell-attlist = + attribute table:number-columns-repeated { positiveInteger }? + & attribute table:style-name { styleNameRef }? + & attribute table:content-validation-name { \string }? + & attribute table:formula { \string }? + & common-value-and-type-attlist? + & attribute table:protect { boolean }? + & attribute table:protected { boolean }? + & xml-id? + & common-in-content-meta-attlist? +table-table-cell-attlist-extra = + attribute table:number-columns-spanned { positiveInteger }? + & attribute table:number-rows-spanned { positiveInteger }? + & attribute table:number-matrix-columns-spanned { positiveInteger }? + & attribute table:number-matrix-rows-spanned { positiveInteger }? +table-table-cell-content = + table-cell-range-source?, + office-annotation?, + table-detective?, + text-content* +table-table-cell-range-source-attlist = + attribute table:name { \string } + & attribute table:last-column-spanned { positiveInteger } + & attribute table:last-row-spanned { positiveInteger } +table-table-column = + element table:table-column { table-table-column-attlist, empty } +table-table-column-attlist = + attribute table:number-columns-repeated { positiveInteger }? + & attribute table:style-name { styleNameRef }? + & attribute table:visibility { table-visibility-value }? + & attribute table:default-cell-style-name { styleNameRef }? + & xml-id? +table-table-column-group = + element table:table-column-group { + table-table-column-group-attlist, table-columns-and-groups + } +table-table-column-group-attlist = attribute table:display { boolean }? +table-table-columns = + element table:table-columns { table-table-column+ } +table-table-header-columns = + element table:table-header-columns { table-table-column+ } +table-table-header-rows = + element table:table-header-rows { + (text-soft-page-break?, table-table-row)+ + } +table-table-row = + element table:table-row { + table-table-row-attlist, + (table-table-cell | table-covered-table-cell)+ + } +table-table-row-attlist = + attribute table:number-rows-repeated { positiveInteger }? + & attribute table:style-name { styleNameRef }? + & attribute table:default-cell-style-name { styleNameRef }? + & attribute table:visibility { table-visibility-value }? + & xml-id? +table-table-row-group = + element table:table-row-group { + table-table-row-group-attlist, table-rows-and-groups + } +table-table-row-group-attlist = attribute table:display { boolean }? +table-table-rows = + element table:table-rows { (text-soft-page-break?, table-table-row)+ } +table-table-source = + element table:table-source { + table-table-source-attlist, table-linked-source-attlist, empty + } +table-table-source-attlist = + attribute table:mode { "copy-all" | "copy-results-only" }? + & attribute table:table-name { \string }? +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-background? + } +table-table-template-attlist = + attribute table:name { \string } + & attribute table:first-row-start-column { rowOrCol } + & attribute table:first-row-end-column { rowOrCol } + & attribute table:last-row-start-column { rowOrCol } + & attribute table:last-row-end-column { rowOrCol } +table-target-range-address = + element table:target-range-address { + common-table-range-attlist, empty + } +table-title = element table:title { text } +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 = + attribute table:track-changes { boolean }? +table-validation-attlist = + attribute table:name { \string } + & attribute table:condition { \string }? + & attribute table:base-cell-address { cellAddress }? + & attribute table:allow-empty-cell { boolean }? + & attribute table:display-list { + "none" | "unsorted" | "sort-ascending" + }? +table-visibility-value = "visible" | "collapse" | "filter" +target-frame = attribute office:target-frame { targetFrameName }? +target-location = attribute xlink:href { anyIRI }? targetFrameName = "_self" | "_blank" | "_parent" | "_top" | \string +text-a = + element text:a { + text-a-attlist, office-event-listeners?, paragraph-content* + } +text-a-attlist = + attribute office:name { \string }? + & attribute office:title { \string }? + & attribute xlink:type { "simple" } + & attribute xlink:href { anyIRI } + & attribute xlink:actuate { "onRequest" }? + & attribute office:target-frame-name { targetFrameName }? + & attribute xlink:show { "new" | "replace" }? + & attribute text:style-name { styleNameRef }? + & attribute text:visited-style-name { styleNameRef }? +text-alphabetical-index = + element text:alphabetical-index { + common-section-attlist, + text-alphabetical-index-source, + text-index-body + } +text-alphabetical-index-auto-mark-file = + element text:alphabetical-index-auto-mark-file { + attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI } + } +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" } + & attribute text:style-name { styleNameRef } +text-alphabetical-index-mark-attrs = + attribute text:key1 { \string }? + & attribute text:key2 { \string }? + & attribute text:string-value-phonetic { \string }? + & attribute text:key1-phonetic { \string }? + & attribute text:key2-phonetic { \string }? + & attribute text:main-entry { boolean }? +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 + & attribute text:ignore-case { boolean }? + & attribute text:main-entry-style-name { styleNameRef }? + & attribute text:alphabetical-separators { boolean }? + & attribute text:combine-entries { boolean }? + & attribute text:combine-entries-with-dash { boolean }? + & attribute text:combine-entries-with-pp { boolean }? + & attribute text:use-keys-as-entries { boolean }? + & attribute text:capitalize-entries { boolean }? + & attribute text:comma-separated { boolean }? + & attribute fo:language { languageCode }? + & attribute fo:country { countryCode }? + & attribute fo:script { scriptCode }? + & attribute style:rfc-language-tag { language }? + & attribute text:sort-algorithm { \string }? +text-bibliography = + element text:bibliography { + common-section-attlist, text-bibliography-source, text-index-body + } +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 }? + & attribute text:numbered-entries { boolean }? + & attribute text:sort-by-position { boolean }? + & attribute fo:language { languageCode }? + & attribute fo:country { countryCode }? + & attribute fo:script { scriptCode }? + & attribute style:rfc-language-tag { language }? + & attribute text:sort-algorithm { \string }? +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 } + & attribute text:style-name { styleNameRef } +text-bibliography-source = + element text:bibliography-source { + text-index-title-template?, text-bibliography-entry-template* + } +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-bookmark = element text:bookmark { text-bookmark-attlist, empty } +text-bookmark-attlist = + attribute text:name { \string } + & xml-id? +text-bookmark-end = + element text:bookmark-end { text-bookmark-end-attlist, empty } +text-bookmark-end-attlist = attribute text:name { \string } +text-bookmark-ref-content = + attribute text:reference-format { + common-ref-format-values + | "number-no-superior" + | "number-all-superior" + | "number" + }? +text-bookmark-start = + element text:bookmark-start { text-bookmark-start-attlist, empty } +text-bookmark-start-attlist = + attribute text:name { \string } + & xml-id? + & common-in-content-meta-attlist? +text-changed-region = + element text:changed-region { + text-changed-region-attr, text-changed-region-content + } +text-changed-region-attr = + xml-id, + attribute text:id { NCName }? +text-changed-region-content = + element text:insertion { office-change-info } + | element text:deletion { office-change-info, text-content* } + | element text:format-change { office-change-info } +text-chapter-attlist = + attribute text:display { + "name" + | "number" + | "number-and-name" + | "plain-number-and-name" + | "plain-number" + } + & attribute text:outline-level { nonNegativeInteger } +text-common-ref-content = + text + & attribute text:ref-name { \string }? +text-conditional-text-attlist = + attribute text:condition { \string } + & attribute text:string-value-if-true { \string } + & attribute text:string-value-if-false { \string } + & attribute text:current-value { boolean }? +text-content = + text-h + | text-p + | text-list + | text-numbered-paragraph + | table-table + | 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 +text-database-display-attlist = + common-field-database-table + & common-field-data-style-name-attlist + & attribute text:column-name { \string } +text-database-next-attlist = + common-field-database-table + & attribute text:condition { \string }? +text-database-row-select-attlist = + common-field-database-table + & attribute text:condition { \string }? + & attribute text:row-number { nonNegativeInteger }? +text-date-attlist = + (common-field-fixed-attlist & common-field-data-style-name-attlist) + & attribute text:date-value { dateOrDateTime }? + & attribute text:date-adjust { duration }? +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 } +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? +text-drop-down = + element text:drop-down { + attribute text:name { \string }, + element text:label { + attribute text:value { \string }?, + attribute text:current-selected { boolean }? + }*, + text + } +text-file-name-attlist = + attribute text:display { + "full" | "path" | "name" | "name-and-extension" + }? + & common-field-fixed-attlist +text-get-page-variable-attlist = common-field-num-format-attlist +text-h = + element text:h { + heading-attrs, + paragraph-attrs, + text-number?, + paragraph-content-or-hyperlink* + } +text-hidden-paragraph-attlist = + attribute text:condition { \string } + & attribute text:is-hidden { boolean }? +text-hidden-text-attlist = + attribute text:condition { \string } + & attribute text:string-value { \string } + & attribute text:is-hidden { boolean }? +text-id = attribute text:id { \string } +text-illustration-index = + element text:illustration-index { + common-section-attlist, + text-illustration-index-source, + text-index-body + } +text-illustration-index-entry-content = + text-illustration-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-index-entry-link-start + | text-index-entry-link-end + # https://issues.oasis-open.org/browse/OFFICE-3941 + )* +text-illustration-index-entry-template = + element text:illustration-index-entry-template { + text-illustration-index-entry-content + } +text-illustration-index-entry-template-attrs = + attribute text:style-name { styleNameRef } +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-relative-tab-stop-position-attr + & attribute text:use-caption { boolean }? + & attribute text:caption-sequence-name { \string }? + & attribute text:caption-sequence-format { + "text" | "category-and-value" | "caption" + }? +text-index-body = element text:index-body { index-content-main* } +text-index-entry-bibliography = + element text:index-entry-bibliography { + text-index-entry-bibliography-attrs + } +text-index-entry-bibliography-attrs = + attribute text:style-name { styleNameRef }? + & 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-chapter = + element text:index-entry-chapter { + attribute text:style-name { styleNameRef }?, + text-index-entry-chapter-attrs + } +text-index-entry-chapter-attrs = + attribute text:display { + "name" + | "number" + | "number-and-name" + | "plain-number" + | "plain-number-and-name" + }? + & attribute text:outline-level { positiveInteger }? +text-index-entry-link-end = + element text:index-entry-link-end { + attribute text:style-name { styleNameRef }? + } +text-index-entry-link-start = + element text:index-entry-link-start { + 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-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 }? + & (attribute style:type { "right" } + | (attribute style:type { "left" }, + attribute style:position { length })) +text-index-entry-text = + element text:index-entry-text { + attribute text:style-name { styleNameRef }? + } +text-index-name = attribute text:index-name { \string } +text-index-scope-attr = + attribute text:index-scope { "document" | "chapter" }? +text-index-source-style = + element text:index-source-style { + attribute text:style-name { styleNameRef }, + empty + } +# https://issues.oasis-open.org/browse/OFFICE-3675 +text-index-source-styles = + element text:index-source-styles { + attribute text:outline-level { positiveInteger }, + text-index-source-style* + } +text-index-title = + element text:index-title { + common-section-attlist, index-content-main* + } +text-index-title-template = + element text:index-title-template { + attribute text:style-name { styleNameRef }?, + text + } +text-linenumbering-configuration = + element text:linenumbering-configuration { + text-linenumbering-configuration-attlist, + text-linenumbering-separator? + } +text-linenumbering-configuration-attlist = + attribute text:number-lines { boolean }? + & common-num-format-attlist? + & attribute text:style-name { styleNameRef }? + & attribute text:increment { nonNegativeInteger }? + & attribute text:number-position { + "left" | "right" | "inner" | "outer" + }? + & attribute text:offset { nonNegativeLength }? + & attribute text:count-empty-lines { boolean }? + & attribute text:count-in-text-boxes { boolean }? + & attribute text:restart-on-page { boolean }? +text-linenumbering-separator = + element text:linenumbering-separator { + attribute text:increment { nonNegativeInteger }?, + text + } +text-list = + element text:list { + text-list-attr, text-list-header?, text-list-item* + } +text-list-attr = + attribute text:style-name { styleNameRef }? + & attribute text:continue-numbering { boolean }? + & attribute text:continue-list { IDREF }? + & xml-id? +text-list-header = + element text:list-header { + text-list-header-attr, text-list-item-content + } +text-list-header-attr = xml-id? +text-list-item = + element text:list-item { text-list-item-attr, text-list-item-content } +text-list-item-attr = + attribute text:start-value { nonNegativeInteger }? + & attribute text:style-override { styleNameRef }? + & xml-id? +text-list-item-content = + text-number?, (text-p | text-h | text-list | text-soft-page-break)* +text-list-level-style-attr = attribute text:level { positiveInteger } +text-list-level-style-bullet-attr = + attribute text:style-name { styleNameRef }? + & attribute text:bullet-char { character } + & common-num-format-prefix-suffix-attlist + & attribute text:bullet-relative-size { percent }? +text-list-level-style-image-attr = + common-draw-data-attlist | office-binary-data +text-list-level-style-number-attr = + attribute text:style-name { styleNameRef }? + & common-num-format-attlist + & common-num-format-prefix-suffix-attlist + & attribute text:display-levels { positiveInteger }? + & attribute text:start-value { positiveInteger }? +text-list-style = + element text:list-style { + text-list-style-attr, text-list-style-content* + } +text-list-style-attr = + attribute style:name { styleName } + & attribute style:display-name { \string }? + & attribute text:consecutive-numbering { boolean }? +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? + } + | element text:list-level-style-bullet { + text-list-level-style-attr, + text-list-level-style-bullet-attr, + style-list-level-properties?, + style-text-properties? + } + | element text:list-level-style-image { + text-list-level-style-attr, + text-list-level-style-image-attr, + style-list-level-properties? + } +text-meta-attlist = common-in-content-meta-attlist? & xml-id? +text-meta-field-attlist = xml-id & common-field-data-style-name-attlist +text-note-class = attribute text:note-class { "footnote" | "endnote" } +text-note-ref-content = + attribute text:reference-format { common-ref-format-values }? + & text-note-class +text-notes-configuration = + element text:notes-configuration { text-notes-configuration-content } +text-notes-configuration-content = + text-note-class + & attribute text:citation-style-name { styleNameRef }? + & attribute text:citation-body-style-name { styleNameRef }? + & attribute text:default-style-name { styleNameRef }? + & attribute text:master-page-name { styleNameRef }? + & attribute text:start-value { nonNegativeInteger }? + & common-num-format-prefix-suffix-attlist + & common-num-format-attlist? + & attribute text:start-numbering-at { + "document" | "chapter" | "page" + }? + & attribute text:footnotes-position { + "text" | "page" | "section" | "document" + }? + & element text:note-continuation-notice-forward { text }? + & element text:note-continuation-notice-backward { text }? +text-number = element text:number { \string } +text-numbered-paragraph = + element text:numbered-paragraph { + text-numbered-paragraph-attr, text-number?, (text-p | text-h) + } +text-numbered-paragraph-attr = + attribute text:list-id { NCName } + & attribute text:level { positiveInteger }? + & (attribute text:style-name { styleNameRef }, + attribute text:continue-numbering { boolean }, + attribute text:start-value { nonNegativeInteger })? + & xml-id? +text-object-index = + element text:object-index { + common-section-attlist, text-object-index-source, text-index-body + } +text-object-index-entry-template = + element text:object-index-entry-template { + text-illustration-index-entry-content + } +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-relative-tab-stop-position-attr + & attribute text:use-spreadsheet-objects { boolean }? + & attribute text:use-math-objects { boolean }? + & attribute text:use-draw-objects { boolean }? + & attribute text:use-chart-objects { boolean }? + & attribute text:use-other-objects { boolean }? +text-outline-level = attribute text:outline-level { positiveInteger }? +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 } + & attribute text:style-name { styleNameRef }? + & common-num-format-attlist + & common-num-format-prefix-suffix-attlist + & attribute text:display-levels { positiveInteger }? + & attribute text:start-value { positiveInteger }? +text-outline-style = + element text:outline-style { + text-outline-style-attr, text-outline-level-style+ + } +text-outline-style-attr = attribute style:name { styleName } +text-p = + element text:p { paragraph-attrs, paragraph-content-or-hyperlink* } +text-page = element text:page { text-page-attlist, empty } +text-page-attlist = attribute text:master-page-name { styleNameRef } +text-page-continuation-attlist = + attribute text:select-page { "previous" | "next" } + & attribute text:string-value { \string }? +text-page-number-attlist = + (common-field-num-format-attlist & common-field-fixed-attlist) + & attribute text:page-adjust { integer }? + & attribute text:select-page { "previous" | "current" | "next" }? +text-page-sequence = element text:page-sequence { text-page+ } +text-placeholder-attlist = + attribute text:placeholder-type { + "text" | "table" | "text-box" | "image" | "object" + } + & common-field-description-attlist +text-relative-tab-stop-position-attr = + attribute text:relative-tab-stop-position { boolean }? +text-section = + element text:section { + text-section-attlist, + (text-section-source | text-section-source-dde | empty), + text-content* + } +text-section-attlist = + common-section-attlist + & (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:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:show { "embed" }?)? + & attribute text:section-name { \string }? + & attribute text:filter-name { \string }? +text-section-source-dde = office-dde-source +text-sequence-decl = + element text:sequence-decl { text-sequence-decl-attlist } +text-sequence-decl-attlist = + common-field-name-attlist + & attribute text:display-outline-level { nonNegativeInteger } + & attribute text:separation-character { character }? +text-sequence-ref-content = + attribute text:reference-format { + common-ref-format-values + | "category-and-value" + | "caption" + | "value" + }? +text-sequence-ref-name = attribute text:ref-name { \string }? +text-set-page-variable-attlist = + attribute text:active { boolean }? + & attribute text:page-adjust { integer }? +text-soft-page-break = element text:soft-page-break { empty } +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" + }, + attribute text:sort-ascending { boolean }? +text-style-name = attribute form:text-style-name { styleNameRef }? +text-tab-attr = attribute text:tab-ref { nonNegativeInteger }? +text-table-index = + element text:table-index { + common-section-attlist, text-table-index-source, text-index-body + } +text-table-index-entry-template = + element text:table-index-entry-template { + text-illustration-index-entry-content + } +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-of-content = + element text:table-of-content { + common-section-attlist, + text-table-of-content-source, + text-index-body + } +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 = + element text:table-of-content-entry-template { + text-table-of-content-entry-template-attlist, + text-table-of-content-children* + } +text-table-of-content-entry-template-attlist = + attribute text:outline-level { positiveInteger } + & attribute text:style-name { styleNameRef } +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 }? + & attribute text:use-outline-level { boolean }? + & attribute text:use-index-marks { boolean }? + & attribute text:use-index-source-styles { boolean }? + & attribute text:index-scope { "document" | "chapter" }? + & attribute text:relative-tab-stop-position { boolean }? +text-template-name-attlist = + attribute text:display { + "full" | "path" | "name" | "name-and-extension" | "area" | "title" + }? +text-time-attlist = + (common-field-fixed-attlist & common-field-data-style-name-attlist) + & attribute text:time-value { timeOrDateTime }? + & attribute text:time-adjust { duration }? +text-toc-mark-start-attrs = text-id, text-outline-level +text-tracked-changes = + element text:tracked-changes { + text-tracked-changes-attr, text-changed-region* + }? +text-tracked-changes-attr = attribute text:track-changes { boolean }? +text-user-field-decl = + element text:user-field-decl { + common-field-name-attlist, + common-field-formula-attlist?, + common-value-and-type-attlist + } +text-user-index = + element text:user-index { + common-section-attlist, text-user-index-source, text-index-body + } +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-index-entry-link-start + | text-index-entry-link-end + # https://issues.oasis-open.org/browse/OFFICE-3941 + )* + } +text-user-index-entry-template-attrs = + attribute text:outline-level { positiveInteger } + & attribute text:style-name { styleNameRef } +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:use-index-marks { boolean }? + & attribute text:use-index-source-styles { boolean }? + & attribute text:use-graphics { boolean }? + & attribute text:use-tables { boolean }? + & attribute text:use-floating-frames { boolean }? + & attribute text:use-objects { boolean }? + & attribute text:copy-outline-levels { boolean }? + & attribute text:index-name { \string } +text-variable-decl = + element text:variable-decl { + common-field-name-attlist, common-value-type-attlist + } +textEncoding = xsd:string { pattern = "[A-Za-z][A-Za-z0-9._\-]*" } +time = xsd:time +timeOrDateTime = xsd:time | xsd:dateTime +types = "submit" | "reset" | "push" | "url" valueType = "float" | "time" @@ -6257,24 +6397,18 @@ valueType = | "currency" | "boolean" | "string" -points = - xsd:string { pattern = "-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*" } -pathData = xsd:string +variableName = xsd:string vector3D = xsd:string { pattern = "\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)" } -namespacedToken = xsd:QName { pattern = "[^:]+:[^:]+" } -anyIRI = - xsd:anyURI - >> dc:description [ - "An IRI-reference as defined in [RFC3987]. See ODF 1.2 Part 1 section 18.3." - ] -anyAttListOrElements = - attribute * { text }*, - anyElements -anyElements = - element * { - mixed { anyAttListOrElements } - }* +vertBackPos = "top" | "center" | "bottom" +xforms-bind-attlist = attribute xforms:bind { \string }? +xforms-model = element xforms:model { anyAttListOrElements } +xml-id = attribute xml:id { ID } +zeroToHundredPercent = + xsd:string { + pattern = "([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%" + } +zeroToOneDecimal = xsd:decimal { minInclusive = "0" maxInclusive = "1" } diff --git a/etc/schema/schemas.xml b/etc/schema/schemas.xml index 7fd91b8c72e..f8acb0d40ca 100644 --- a/etc/schema/schemas.xml +++ b/etc/schema/schemas.xml @@ -31,6 +31,10 @@ + + + + @@ -59,7 +63,7 @@ - +