summaryrefslogtreecommitdiff
path: root/etc/schema/OpenDocument-schema-v1.3+libreoffice.rnc
diff options
context:
space:
mode:
Diffstat (limited to 'etc/schema/OpenDocument-schema-v1.3+libreoffice.rnc')
-rw-r--r--etc/schema/OpenDocument-schema-v1.3+libreoffice.rnc892
1 files changed, 892 insertions, 0 deletions
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 <rng:ref name="namespacedToken"/>
+ \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 <rng:ref name="namespacedToken"/>
+ \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 }?