| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892 | # 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 proposalloext-p =  element loext:p { paragraph-attrs, paragraph-content-or-hyperlink* }loext-text = (loext-p | text-list | loext-table)*# OFFICE-2119chartooo-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 proposalloext-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-3761loext-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 heretext-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 proposalstyle-chart-properties-attlist &=  attribute loext:try-staggering-first { boolean }?# TODO no proposalstyle-chart-properties-attlist &=  attribute loext:std-weight { \string }?# TODO no proposalchart-series-attlist &= attribute loext:label-string { \string }?# OFFICE-1148style-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 proposaltable-data-pilot-field-attlist &=  attribute tableooo:display-name { \string }?# TODO no proposal, 9009663dchart-chart-attlist &= attribute loext:data-pilot-source { \string }?# OFFICE-2112, TODO half of this missing in proposaltable-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-2317vertJustifyValues = "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 proposaltable-data-pilot-level-attlist &=  attribute calcext:repeat-item-labels { boolean }?# TODO no proposaldraw-enhanced-geometry-attlist &=  attribute drawooo:sub-view-size { \string }?,  attribute drawooo:enhanced-path { \string }?# TODO no proposaldraw-custom-shape-attlist &= common-draw-rel-size-attlist# TODO no proposalstyle-page-layout-properties-attlist &=  style-graphic-fill-properties-attliststyle-header-footer-properties-attlist &=  style-graphic-fill-properties-attlist# TODO no proposaltext-index-entry-tab-stop-attrs &= attribute style:with-tab { boolean }?# TODO no proposalstyle-text-properties-attlist &=  attribute loext:char-shading-value { \string }?# TODO no proposaltext-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 elementsform-checkbox-attlist &= attribute form:input-required { boolean }?# https://issues.oasis-open.org/browse/OFFICE-4030common-writing-mode-attlist &= attribute loext:writing-mode { "bt-lr" }?# https://issues.oasis-open.org/browse/OFFICE-4073common-vertical-rel-attlist &=  attribute loext:vertical-rel {    "page-content-top" | "page-content-bottom"  }?# https://issues.oasis-open.org/browse/OFFICE-4105style-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 proposalchart-data-point-attlist &=  attribute loext:custom-label-field { \string }?# TODO no proposalstyle-text-properties-attlist &=  attribute loext:hyphenation-no-caps { boolean }?# TODO no proposalchart-data-point-attlist &=  (attribute loext:custom-label-pos-x { double },   attribute loext:custom-label-pos-y { double })?# TODO no proposalchart-legend-attlist &= attribute loext:overlay { boolean }?# https://issues.oasis-open.org/browse/OFFICE-3936style-chart-properties-attlist &=  attribute loext:major-origin { double }?# TODO no proposaltext-index-entry-chapter-attrs &=  attribute loext:outline-content-visible { boolean }?# https://issues.oasis-open.org/browse/OFFICE-2096paragraph-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 proposalanimation-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 proposalstyle-chart-properties-attlist &=  attribute loext:custom-leader-lines { boolean }?# TODO no proposalstyle-chart-properties-attlist &=  attribute loext:external-data { \string }?
 |