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