diff --git a/.classpath b/.classpath index 2dc5829..439fabc 100644 --- a/.classpath +++ b/.classpath @@ -1,6 +1,6 @@ - + diff --git a/README.md b/README.md index d6754d2..50674bb 100644 --- a/README.md +++ b/README.md @@ -48,15 +48,15 @@ Technical Support | Peer support at [Groups.io](https://groups.io/g/maxprograms ## Requirements -- JDK 17 or newer is required for compiling and building. Get it from [Adoptium](https://adoptium.net/). +- JDK 21 or newer is required for compiling and building. Get it from [Adoptium](https://adoptium.net/). - Apache Ant 1.10.12 or newer. Get it from [https://ant.apache.org/](https://ant.apache.org/) -- Node.js 18.16.0 LTS or newer. Get it from [https://nodejs.org/](https://nodejs.org/) -- TypeScript 5.1.0 or newer, get it from [https://www.typescriptlang.org/](https://www.typescriptlang.org/) +- Node.js 20.10.0 LTS or newer. Get it from [https://nodejs.org/](https://nodejs.org/) +- TypeScript 5.3.3 or newer, get it from [https://www.typescriptlang.org/](https://www.typescriptlang.org/) ## Building - Checkout this repository. -- Point your `JAVA_HOME` environment variable to JDK 17 +- Point your `JAVA_HOME` environment variable to JDK 21 - Run `ant` to compile the Java code - Run `npm install` to download and install NodeJS dependencies - Run `npm start` to launch Swordfish diff --git a/build.xml b/build.xml index 3b8d250..78d6db4 100644 --- a/build.xml +++ b/build.xml @@ -1,7 +1,7 @@ - - + + diff --git a/catalog/catalog.xml b/catalog/catalog.xml index 75e214b..7c55248 100644 --- a/catalog/catalog.xml +++ b/catalog/catalog.xml @@ -24,6 +24,7 @@ + @@ -89,11 +90,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -124,6 +191,7 @@ + diff --git a/catalog/docbook5.2/assembly.nvdl b/catalog/docbook5.2/assembly.nvdl new file mode 100755 index 0000000..8369063 --- /dev/null +++ b/catalog/docbook5.2/assembly.nvdl @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + diff --git a/catalog/docbook5.2/catalog.xml b/catalog/docbook5.2/catalog.xml new file mode 100755 index 0000000..a8dc56a --- /dev/null +++ b/catalog/docbook5.2/catalog.xml @@ -0,0 +1,605 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/docbook5.2/dbits.nvdl b/catalog/docbook5.2/dbits.nvdl new file mode 100755 index 0000000..64a9517 --- /dev/null +++ b/catalog/docbook5.2/dbits.nvdl @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + diff --git a/catalog/docbook5.2/docbook.nvdl b/catalog/docbook5.2/docbook.nvdl new file mode 100755 index 0000000..e4648e4 --- /dev/null +++ b/catalog/docbook5.2/docbook.nvdl @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + diff --git a/catalog/docbook5.2/rng/assembly.rnc b/catalog/docbook5.2/rng/assembly.rnc new file mode 100755 index 0000000..2296977 --- /dev/null +++ b/catalog/docbook5.2/rng/assembly.rnc @@ -0,0 +1,10825 @@ +namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" +namespace ctrl = "http://nwalsh.com/xmlns/schema-control/" +default namespace db = "http://docbook.org/ns/docbook" +namespace html = "http://www.w3.org/1999/xhtml" +namespace local = "" +namespace mml = "http://www.w3.org/1998/Math/MathML" +namespace rng = "http://relaxng.org/ns/structure/1.0" +namespace s = "http://purl.oclc.org/dsdl/schematron" +namespace svg = "http://www.w3.org/2000/svg" +namespace trans = "http://docbook.org/ns/transclusion" +namespace xlink = "http://www.w3.org/1999/xlink" + +# This file is part of DocBook Assembly V5.2CR5 +# +# Copyright 2008-2015 HaL Computer Systems, Inc., +# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software +# Corporation, Norman Walsh, Sun Microsystems, Inc., and the +# Organization for the Advancement of Structured Information +# Standards (OASIS). +# +# Permission to use, copy, modify and distribute the DocBook schema +# and its accompanying documentation for any purpose and without fee +# is hereby granted in perpetuity, provided that the above copyright +# notice and this paragraph appear in all copies. The copyright +# holders make no representation about the suitability of the schema +# for any purpose. It is provided "as is" without expressed or implied +# warranty. +# +# If you modify the DocBook schema in any way, label your schema as a +# variant of DocBook. See the reference documentation +# (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook) +# for more information. +# +# Please direct all questions, bug reports, or suggestions for changes +# to the docbook-comment@lists.oasis-open.org mailing list. For more +# information, see http://www.oasis-open.org/docbook/. +# +# ====================================================================== + +s:ns [ + prefix = "a" + uri = "http://relaxng.org/ns/compatibility/annotations/1.0" +] +s:ns [ prefix = "ctrl" uri = "http://nwalsh.com/xmlns/schema-control/" ] +s:ns [ prefix = "db" uri = "http://docbook.org/ns/docbook" ] +s:ns [ prefix = "html" uri = "http://www.w3.org/1999/xhtml" ] +s:ns [ prefix = "mml" uri = "http://www.w3.org/1998/Math/MathML" ] +s:ns [ prefix = "rng" uri = "http://relaxng.org/ns/structure/1.0" ] +s:ns [ prefix = "s" uri = "http://purl.oclc.org/dsdl/schematron" ] +s:ns [ prefix = "svg" uri = "http://www.w3.org/2000/svg" ] +s:ns [ prefix = "trans" uri = "http://docbook.org/ns/transclusion" ] +s:ns [ prefix = "xlink" uri = "http://www.w3.org/1999/xlink" ] +div { + db._any.attribute = + + ## Any attribute, including any attribute in any namespace + attribute * { text } + db._any_other.attribute = + + ## Any attribute in any other explicit namespace + attribute * - (db:* | xml:* | xlink:* | trans:* | local:*) { text } + db._any = + + ## Any element from almost any namespace + element * - db:* { (db._any.attribute | text | db._any)* } +} +db.arch.attribute = + + ## Designates the computer or chip architecture to which the element applies + attribute arch { text } +db.audience.attribute = + + ## Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + attribute audience { text } +db.condition.attribute = + + ## provides a standard place for application-specific effectivity + attribute condition { text } +db.conformance.attribute = + + ## Indicates standards conformance characteristics of the element + attribute conformance { text } +db.os.attribute = + + ## Indicates the operating system to which the element is applicable + attribute os { text } +db.revision.attribute = + + ## Indicates the editorial revision to which the element belongs + attribute revision { text } +db.security.attribute = + + ## Indicates something about the security level associated with the element to which it applies + attribute security { text } +db.userlevel.attribute = + + ## Indicates the level of user experience for which the element applies + attribute userlevel { text } +db.vendor.attribute = + + ## Indicates the computer vendor to which the element applies + attribute vendor { text } +db.wordsize.attribute = + + ## Indicates the word size (width in bits) of the computer architecture to which the element applies + attribute wordsize { text } +db.outputformat.attribute = + + ## Indicates the output format (for example, print or epub) to which the element applies + attribute outputformat { text } +db.effectivity.attributes = + db.arch.attribute? + & db.audience.attribute? + & db.condition.attribute? + & db.conformance.attribute? + & db.os.attribute? + & db.revision.attribute? + & db.security.attribute? + & db.userlevel.attribute? + & db.vendor.attribute? + & db.wordsize.attribute? + & db.outputformat.attribute? +db.endterm.attribute = + + ## Points to the element whose content is to be used as the text of the link + attribute endterm { xsd:IDREF } +db.linkend.attribute = + + ## Points to an internal link target by identifying the value of its xml:id attribute + attribute linkend { xsd:IDREF } +db.linkends.attribute = + + ## Points to one or more internal link targets by identifying the value of their xml:id attributes + attribute linkends { xsd:IDREFS } +db.xlink.href.attribute = + + ## Identifies a link target with a URI + attribute xlink:href { xsd:anyURI } +db.xlink.simple.type.attribute = + + ## Identifies the XLink link type + attribute xlink:type { + + ## An XLink simple link type + "simple" + } +db.xlink.role.attribute = + + ## Identifies the XLink role of the link + attribute xlink:role { xsd:anyURI } +db.xlink.arcrole.attribute = + + ## Identifies the XLink arcrole of the link + attribute xlink:arcrole { xsd:anyURI } +db.xlink.title.attribute = + + ## Identifies the XLink title of the link + attribute xlink:title { text } +db.xlink.show.enumeration = + + ## An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + "new" + | + ## An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. + "replace" + | + ## An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + "embed" + | + ## The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior. + "other" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + "none" +db.xlink.show.attribute = + + ## Identifies the XLink show behavior of the link + attribute xlink:show { db.xlink.show.enumeration } +db.xlink.actuate.enumeration = + + ## An application should traverse to the ending resource immediately on loading the starting resource. + "onLoad" + | + ## An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + "onRequest" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior. + "other" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + "none" +db.xlink.actuate.attribute = + + ## Identifies the XLink actuate behavior of the link + attribute xlink:actuate { db.xlink.actuate.enumeration } +db.xlink.simple.link.attributes = + db.xlink.simple.type.attribute? + & db.xlink.href.attribute? + & db.xlink.role.attribute? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? +db.xlink.attributes = + db.xlink.simple.link.attributes + | (db.xlink.extended.link.attributes + | db.xlink.locator.link.attributes + | db.xlink.arc.link.attributes + | db.xlink.resource.link.attributes + | db.xlink.title.link.attributes) +db.xml.id.attribute = + + ## Identifies the unique ID value of the element + attribute xml:id { xsd:ID } +db.version.attribute = + + ## Specifies the DocBook version of the element and its descendants + attribute version { text } +db.xml.lang.attribute = + + ## Specifies the natural language of the element and its descendants + attribute xml:lang { text } +db.xml.base.attribute = + + ## Specifies the base URI of the element and its descendants + attribute xml:base { xsd:anyURI } +db.remap.attribute = + + ## Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + attribute remap { text } +db.xreflabel.attribute = + + ## Provides the text that is to be generated for a cross reference to the element + attribute xreflabel { text } +db.xrefstyle.attribute = + + ## Specifies a keyword or keywords identifying additional style information + attribute xrefstyle { text } +db.revisionflag.enumeration = + + ## The element has been changed. + "changed" + | + ## The element is new (has been added to the document). + "added" + | + ## The element has been deleted. + "deleted" + | + ## Explicitly turns off revision markup for this element. + "off" +db.revisionflag.attribute = + + ## Identifies the revision status of the element + attribute revisionflag { db.revisionflag.enumeration } +db.dir.enumeration = + + ## Left-to-right text + "ltr" + | + ## Right-to-left text + "rtl" + | + ## Left-to-right override + "lro" + | + ## Right-to-left override + "rlo" +db.dir.attribute = + + ## Identifies the direction of text in an element + attribute dir { db.dir.enumeration } +db.rdfalite.vocab = + + ## The RDFa Lite vocab + attribute vocab { xsd:anyURI } +db.rdfalite.typeof = + + ## The RDFa Lite typeof + attribute typeof { text } +db.rdfalite.property = + + ## The RDFa Lite property + attribute property { text } +db.rdfalite.resource = + + ## The RDFa Lite resource + attribute resource { text } +db.rdfalite.prefix = + + ## The RDFa Lite prefix + attribute prefix { text } +db.rdfalite.attributes = + db.rdfalite.vocab? + & db.rdfalite.typeof? + & db.rdfalite.property? + & db.rdfalite.resource? + & db.rdfalite.prefix? +db.trans.idfixup.enumeration = + + ## No ID fixup strategy + "none" + | + ## ID fixup by concatenating suffixes + "suffix" + | + ## ID fixup by creating unique values + "auto" +db.trans.idfixup.attribute = + + ## The transclusion ID fixup strategy + attribute trans:idfixup { db.trans.idfixup.enumeration } +db.trans.suffix.attribute = + + ## The transclusion suffix to use when the suffix ID fixup strategy is employed + [ + s:pattern [ + s:title [ "Suffix fixup must be specified" ] + s:rule [ + context = "db:*[@trans:suffix]" + s:assert [ + test = "@trans:idfixup = 'suffix'" + "If a suffix is specified, suffix ID fixup must also be specified." + ] + ] + ] + ] + attribute trans:suffix { text } +db.trans.linkscope.enumeration = + + ## No link scope adjustments are made + "user" + | + ## The link scopes are adjusted with the suffix property + "local" + | + ## The link scopes are adjusted based on proximity + "near" + | + ## The link scopes are adjusted based on document order + "global" +db.trans.linkscope.attribute = + + ## The transclusion link scope adjustment + attribute trans:linkscope { db.trans.linkscope.enumeration } +db.common.transclusion.attributes = + db.trans.idfixup.attribute? + & db.trans.suffix.attribute? + & db.trans.linkscope.attribute? +db.common.base.attributes = + db.version.attribute? + & db.xml.lang.attribute? + & db.xml.base.attribute? + & db.remap.attribute? + & db.xreflabel.attribute? + & db.revisionflag.attribute? + & db.dir.attribute? + & db.effectivity.attributes + & db.rdfalite.attributes + & db.common.transclusion.attributes + & db._any_other.attribute* +db.common.attributes = + db.xml.id.attribute? + & db.common.base.attributes + & db.annotations.attribute? +db.common.idreq.attributes = + db.xml.id.attribute + & db.common.base.attributes + & db.annotations.attribute? +db.common.linking.attributes = + (db.linkend.attribute | db.xlink.attributes)? +db.common.req.linking.attributes = + db.linkend.attribute | db.xlink.attributes +db.common.data.attributes = + + ## Specifies the format of the data + attribute format { text }?, + ( + ## Indentifies the location of the data by URI + attribute fileref { xsd:anyURI } + | + ## Identifies the location of the data by external identifier (entity name) + attribute entityref { xsd:ENTITY }) +db.verbatim.continuation.enumeration = + + ## Line numbering continues from the immediately preceding element with the same name. + "continues" + | + ## Line numbering restarts (begins at 1, usually). + "restarts" +db.verbatim.continuation.attribute = + + ## Determines whether line numbering continues from the previous element or restarts + attribute continuation { db.verbatim.continuation.enumeration } +db.verbatim.linenumbering.enumeration = + + ## Lines are numbered. + "numbered" + | + ## Lines are not numbered. + "unnumbered" +db.verbatim.linenumbering.attribute = + + ## Determines whether lines are numbered + attribute linenumbering { db.verbatim.linenumbering.enumeration } +db.verbatim.startinglinenumber.attribute = + + ## Specifies the initial line number + attribute startinglinenumber { xsd:integer } +db.verbatim.language.attribute = + + ## Identifies the language (i.e. programming language) of the verbatim content + attribute language { text } +db.verbatim.xml.space.attribute = + + ## Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not + attribute xml:space { + + ## Whitespace must be preserved. + "preserve" + } +db.verbatim.common.attributes = + db.verbatim.continuation.attribute? + & db.verbatim.linenumbering.attribute? + & db.verbatim.startinglinenumber.attribute? + & db.verbatim.xml.space.attribute? +db.verbatim.attributes = + db.verbatim.common.attributes & db.verbatim.language.attribute? +db.label.attribute = + + ## Specifies an identifying string for presentation purposes + attribute label { text } +db.width.characters.attribute = + + ## Specifies the width (in characters) of the element + attribute width { xsd:nonNegativeInteger } +db.spacing.enumeration = + + ## The spacing should be "compact". + "compact" + | + ## The spacing should be "normal". + "normal" +db.spacing.attribute = + + ## Specifies (a hint about) the spacing of the content + attribute spacing { db.spacing.enumeration } +db.pgwide.enumeration = + + ## The element should be rendered in the current text flow (with the flow column width). + "0" + | + ## The element should be rendered across the full text page. + "1" +db.pgwide.attribute = + + ## Indicates if the element is rendered across the column or the page + attribute pgwide { db.pgwide.enumeration } +db.language.attribute = + + ## Identifies the language (i.e. programming language) of the content + attribute language { text } +db.performance.enumeration = + + ## The content describes an optional step or steps. + "optional" + | + ## The content describes a required step or steps. + "required" +db.performance.attribute = + + ## Specifies if the content is required or optional + attribute performance { db.performance.enumeration } +db.floatstyle.attribute = + + ## Specifies style information to be used when rendering the float + attribute floatstyle { text } +db.width.attribute = + + ## Specifies the width of the element + attribute width { text } +db.depth.attribute = + + ## Specifies the depth of the element + attribute depth { text } +db.contentwidth.attribute = + + ## Specifies the width of the content rectangle + attribute contentwidth { text } +db.contentdepth.attribute = + + ## Specifies the depth of the content rectangle + attribute contentdepth { text } +db.scalefit.enumeration = + + ## False (do not scale-to-fit; anamorphic scaling may occur) + "0" + | + ## True (scale-to-fit; anamorphic scaling is forbidden) + "1" +db.scale.attribute = + + ## Specifies the scaling factor + attribute scale { xsd:positiveInteger } +db.classid.attribute = + + ## Specifies a classid for a media object player + attribute classid { text } +db.autoplay.attribute = + + ## Specifies the autoplay setting for a media object player + attribute autoplay { text } +db.halign.enumeration = + + ## Centered horizontally + "center" + | + ## Aligned horizontally on the specified character + "char" + | + ## Fully justified (left and right margins or edges) + "justify" + | + ## Left aligned + "left" + | + ## Right aligned + "right" +db.valign.enumeration = + + ## Aligned on the bottom of the region + "bottom" + | + ## Centered vertically + "middle" + | + ## Aligned on the top of the region + "top" +db.biblio.class.enumeration = + + ## A digital object identifier. + "doi" + | + ## An international standard book number. + "isbn" + | + ## An international standard technical report number (ISO 10444). + "isrn" + | + ## An international standard serial number. + "issn" + | + ## An international standard text code. + "istc" + | + ## A Library of Congress reference number. + "libraryofcongress" + | + ## A publication number (an internal number or possibly organizational standard). + "pubsnumber" + | + ## A Uniform Resource Identifier + "uri" +db.biblio.class-enum.attribute = + + ## Identifies the kind of bibliographic identifier + attribute class { db.biblio.class.enumeration }? +db.biblio.class-other.attribute = + + ## Identifies the nature of the non-standard bibliographic identifier + attribute otherclass { xsd:NMTOKEN } +db.biblio.class-other.attributes = + + ## Identifies the kind of bibliographic identifier + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.biblio.class-other.attribute +db.biblio.class.attribute = + db.biblio.class-enum.attribute | db.biblio.class-other.attributes +db.pubwork.enumeration = + + ## An article + "article" + | + ## A bulletin board system + "bbs" + | + ## A book + "book" + | + ## A CD-ROM + "cdrom" + | + ## A chapter (as of a book) + "chapter" + | + ## A DVD + "dvd" + | + ## An email message + "emailmessage" + | + ## A gopher page + "gopher" + | + ## A journal + "journal" + | + ## A manuscript + "manuscript" + | + ## A posting to a newsgroup + "newsposting" + | + ## A part (as of a book) + "part" + | + ## A reference entry + "refentry" + | + ## A section (as of a book or article) + "section" + | + ## A series + "series" + | + ## A set (as of books) + "set" + | + ## A web page + "webpage" + | + ## A wiki page + "wiki" + | + ## Some other kind of work + "other" +db.biblio.pubwork.enumeration = db.pubwork.enumeration +db.biblio.pubwork-enum.attribute = + + ## Identifies the nature of the published work + attribute pubwork { db.biblio.pubwork.enumeration }? +db.biblio.pubwork-other.attribute = + + ## Identifies the nature of some other kind of published work + attribute otherpubwork { xsd:NMTOKEN } +db.biblio.pubwork-other.attributes = + + ## Identifies that this is some other kind of published work + attribute pubwork { + + ## Indicates that the published work is some 'other' kind. + "other" + } + & db.biblio.pubwork-other.attribute +db.biblio.pubwork.attribute = + db.biblio.pubwork-enum.attribute | db.biblio.pubwork-other.attributes +db.ubiq.inlines = + (db.inlinemediaobject + | db.remark + | db.link.inlines + | db.alt + | db.trademark + | # below, effectively the publishing inlines (as of 5.0) + db.abbrev + | db.acronym + | db.date + | db._emphasis + | db.footnote + | db.footnoteref + | db._foreignphrase + | db._phrase + | db._quote + | db.subscript + | db.superscript + | db.wordasword) + | db.annotation + | (db._firstterm | db._glossterm) + | db.indexterm + | db.coref +db._text = (text | db.ubiq.inlines | db._phrase | db.replaceable)* +db._title = db.title? & db.titleabbrev? & db.subtitle? +db._title.req = db.title & db.titleabbrev? & db.subtitle? +db._title.only = db.title? & db.titleabbrev? +db._title.onlyreq = db.title & db.titleabbrev? +db._info = (db._title, db.titleforbidden.info?) | db.info? +db._info.title.req = + (db._title.req, db.titleforbidden.info?) | db.titlereq.info +db._info.title.only = + (db._title.only, db.titleforbidden.info?) | db.titleonly.info +db._info.title.onlyreq = + (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info +db._info.title.forbidden = db.titleforbidden.info? +db.all.inlines = + text + | db.ubiq.inlines + | db.general.inlines + | db.domain.inlines + | db.extension.inlines +db.general.inlines = + db.publishing.inlines + | db.product.inlines + | db.bibliography.inlines + | db.graphic.inlines + | db.indexing.inlines + | db.link.inlines +db.domain.inlines = + db.technical.inlines + | db.math.inlines + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines + | db.os.inlines + | db.programming.inlines + | db.error.inlines +db.technical.inlines = + (db.replaceable | db.package | db.parameter) + | db.termdef + | db.nonterminal + | (db.systemitem | db.option | db.optional | db.property) +db.product.inlines = + db.trademark + | (db.productnumber + | db.productname + | db.database + | db.application + | db.hardware) +db.bibliography.inlines = + db.citation + | db.citerefentry + | db.citetitle + | db.citebiblioid + | db.author + | db.person + | db.personname + | db.org + | db.orgname + | db.editor + | db.jobtitle +db.publishing.inlines = + (db.abbrev + | db.acronym + | db.date + | db.emphasis + | db.footnote + | db.footnoteref + | db.foreignphrase + | db.phrase + | db.quote + | db.revnumber + | db.subscript + | db.superscript + | db.wordasword) + | db.glossary.inlines + | db.coref +db.graphic.inlines = db.inlinemediaobject +db.indexing.inlines = notAllowed | db.indexterm +db.link.inlines = + (db.xref | db.link | db.olink | db.anchor) | db.biblioref +db.extension.inlines = notAllowed +db.nopara.blocks = + (db.list.blocks + | db.wrapper.blocks + | db.formal.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.indexterm + | db.synopsis.blocks + | db.admonition.blocks +db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara +db.all.blocks = + (db.nopara.blocks | db.para.blocks | db.extension.blocks) + | db.annotation +db.wrapper.blocks = db.formalgroup +db.formal.blocks = (db.example | db.figure | db.table) | db.equation +db.informal.blocks = + (db.informalexample | db.informalfigure | db.informaltable) + | db.informalequation +db.publishing.blocks = + db.sidebar | db.blockquote | db.address | db.epigraph +db.graphic.blocks = db.mediaobject | db.screenshot +db.technical.blocks = + db.procedure + | db.task + | (db.productionset | db.constraintdef) + | db.msgset +db.list.blocks = + (db.itemizedlist + | db.orderedlist + | db.procedure + | db.simplelist + | db.variablelist + | db.segmentedlist) + | db.glosslist + | db.bibliolist + | db.calloutlist + | db.qandaset +db.verbatim.blocks = + (db.screen | db.literallayout) + | (db.programlistingco | db.screenco) + | (db.programlisting | db.synopsis) +db.extension.blocks = notAllowed +db.info.extension = db._any +db.info.elements = + (db.abstract + | db.address + | db.artpagenums + | db.author + | db.authorgroup + | db.authorinitials + | db.bibliocoverage + | db.biblioid + | db.bibliosource + | db.collab + | db.confgroup + | db.contractsponsor + | db.contractnum + | db.copyright + | db.cover + | db.date + | db.edition + | db.editor + | db.issuenum + | db.keywordset + | db.legalnotice + | db.mediaobject + | db.org + | db.orgname + | db.othercredit + | db.pagenums + | db.printhistory + | db.pubdate + | db.publisher + | db.publishername + | db.releaseinfo + | db.revhistory + | db.seriesvolnums + | db.subjectset + | db.volumenum + | db.meta + | db.info.extension) + | db.annotation + | db.extendedlink + | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset) + | db.itermset + | (db.productname | db.productnumber) +db.bibliographic.elements = + db.info.elements + | db.publishing.inlines + | db.citerefentry + | db.citetitle + | db.citebiblioid + | db.person + | db.personblurb + | db.personname + | db.subtitle + | db.title + | db.titleabbrev +div { + db.title.role.attribute = attribute role { text } + db.title.attlist = + db.title.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.title = + + ## The text of the title of a section of a document or of a formal block-level element + element title { db.title.attlist, db.all.inlines* } +} +div { + db.titleabbrev.role.attribute = attribute role { text } + db.titleabbrev.attlist = + db.titleabbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.titleabbrev = + + ## The abbreviation of a title + element titleabbrev { db.titleabbrev.attlist, db.all.inlines* } +} +div { + db.subtitle.role.attribute = attribute role { text } + db.subtitle.attlist = + db.subtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subtitle = + + ## The subtitle of a document + element subtitle { db.subtitle.attlist, db.all.inlines* } +} +div { + db.info.role.attribute = attribute role { text } + db.info.attlist = db.info.role.attribute? & db.common.attributes + db.info = + + ## A wrapper for information about a component or other block + element info { db.info.attlist, (db._title & db.info.elements*) } +} +div { + db.titlereq.info.role.attribute = attribute role { text } + db.titlereq.info.attlist = + db.titlereq.info.role.attribute? & db.common.attributes + db.titlereq.info = + + ## A wrapper for information about a component or other block with a required title + element info { + db.titlereq.info.attlist, (db._title.req & db.info.elements*) + } +} +div { + db.titleonly.info.role.attribute = attribute role { text } + db.titleonly.info.attlist = + db.titleonly.info.role.attribute? & db.common.attributes + db.titleonly.info = + + ## A wrapper for information about a component or other block with only a title + element info { + db.titleonly.info.attlist, (db._title.only & db.info.elements*) + } +} +div { + db.titleonlyreq.info.role.attribute = attribute role { text } + db.titleonlyreq.info.attlist = + db.titleonlyreq.info.role.attribute? & db.common.attributes + db.titleonlyreq.info = + + ## A wrapper for information about a component or other block with only a required title + element info { + db.titleonlyreq.info.attlist, + (db._title.onlyreq & db.info.elements*) + } +} +div { + db.titleforbidden.info.role.attribute = attribute role { text } + db.titleforbidden.info.attlist = + db.titleforbidden.info.role.attribute? & db.common.attributes + db.titleforbidden.info = + + ## A wrapper for information about a component or other block without a title + element info { db.titleforbidden.info.attlist, db.info.elements* } +} +div { + db.subjectset.role.attribute = attribute role { text } + db.subjectset.scheme.attribute = + + ## Identifies the controlled vocabulary used by this set's terms + attribute scheme { xsd:NMTOKEN } + db.subjectset.attlist = + db.subjectset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.subjectset.scheme.attribute? + db.subjectset = + + ## A set of terms describing the subject matter of a document + element subjectset { db.subjectset.attlist, db.subject+ } +} +div { + db.subject.role.attribute = attribute role { text } + db.subject.weight.attribute = + + ## Specifies a ranking for this subject relative to other subjects in the same set + attribute weight { text } + db.subject.attlist = + db.subject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.subject.weight.attribute? + db.subject = + + ## One of a group of terms describing the subject matter of a document + element subject { db.subject.attlist, db.subjectterm+ } +} +div { + db.subjectterm.role.attribute = attribute role { text } + db.subjectterm.attlist = + db.subjectterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subjectterm = + + ## A term in a group of terms describing the subject matter of a document + element subjectterm { db.subjectterm.attlist, text } +} +div { + db.keywordset.role.attribute = attribute role { text } + db.keywordset.attlist = + db.keywordset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keywordset = + + ## A set of keywords describing the content of a document + element keywordset { db.keywordset.attlist, db.keyword+ } +} +div { + db.keyword.role.attribute = attribute role { text } + db.keyword.attlist = + db.keyword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keyword = + + ## One of a set of keywords describing the content of a document + element keyword { db.keyword.attlist, text } +} +db.table.choice = notAllowed | db.cals.table | db.html.table +db.informaltable.choice = + notAllowed | db.cals.informaltable | db.html.informaltable +db.table = db.table.choice +db.informaltable = db.informaltable.choice +div { + db.procedure.role.attribute = attribute role { text } + db.procedure.type.attribute = + + ## Identifies the type of procedure + attribute type { text }? + db.procedure.attlist = + db.procedure.role.attribute? + & db.procedure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + db.procedure.info = db._info.title.only + db.procedure = + + ## A list of operations to be performed in a well-defined sequence + element procedure { + db.procedure.attlist, + db.procedure.info, + db.all.blocks*, + db.step+, + db.result? + } +} +div { + db.step.role.attribute = attribute role { text } + db.step.attlist = + db.step.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.step.info = db._info.title.only + # This content model is blocks*, step|stepalternatives, blocks* but + # expressed this way it avoids UPA issues in XSD and DTD versions + db.step = + + ## A unit of action in a procedure + element step { + db.step.attlist, + db.step.info, + ((db.all.blocks+, + ((db.substeps | db.stepalternatives), db.all.blocks*)?, + db.result?) + | ((db.substeps | db.stepalternatives), + db.all.blocks*, + db.result?)) + } +} +div { + db.stepalternatives.role.attribute = attribute role { text } + db.stepalternatives.attlist = + db.stepalternatives.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.stepalternatives.info = db._info.title.forbidden + db.stepalternatives = + + ## Alternative steps in a procedure + element stepalternatives { + db.stepalternatives.attlist, db.stepalternatives.info, db.step+ + } +} +div { + db.substeps.role.attribute = attribute role { text } + db.substeps.attlist = + db.substeps.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.substeps = + + ## A wrapper for steps that occur within steps in a procedure + element substeps { db.substeps.attlist, db.step+ } +} +div { + db.result.role.attribute = attribute role { text } + db.result.attlist = + db.result.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.result = + + ## A wrapper for identifying the results of a procedure or step + element result { db.result.attlist, db.all.blocks+ } +} +div { + db.sidebar.floatstyle.attribute = db.floatstyle.attribute + db.sidebar.role.attribute = attribute role { text } + db.sidebar.attlist = + db.sidebar.role.attribute? + & db.sidebar.floatstyle.attribute? + & db.common.attributes + & db.common.linking.attributes + db.sidebar.info = db._info + db.sidebar = + + ## A portion of a document that is isolated from the main narrative flow + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:sidebar" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of sidebar" + ] + ] + ] + ] + element sidebar { + db.sidebar.attlist, db.sidebar.info, db.all.blocks+ + } +} +div { + db.abstract.role.attribute = attribute role { text } + db.abstract.attlist = + db.abstract.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abstract.info = db._info.title.only + db.abstract = + + ## A summary + element abstract { + db.abstract.attlist, db.abstract.info, db.all.blocks+ + } +} +div { + db.personblurb.role.attribute = attribute role { text } + db.personblurb.attlist = + db.personblurb.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.personblurb.info = db._info.title.only + db.personblurb = + + ## A short description or note about a person + element personblurb { + db.personblurb.attlist, db.personblurb.info, db.para.blocks+ + } +} +div { + db.blockquote.role.attribute = attribute role { text } + db.blockquote.attlist = + db.blockquote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.blockquote.info = db._info.title.only + db.blockquote = + + ## A quotation set off from the main text + element blockquote { + db.blockquote.attlist, + db.blockquote.info, + db.attribution?, + db.all.blocks+ + } +} +div { + db.attribution.role.attribute = attribute role { text } + db.attribution.attlist = + db.attribution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.attribution = + + ## The source of a block quote or epigraph + element attribution { + db.attribution.attlist, + (db._text + | db.person + | db.personname + | db.citetitle + | db.citation)* + } +} +div { + db.bridgehead.renderas.enumeration = + + ## Render as a first-level section + "sect1" + | + ## Render as a second-level section + "sect2" + | + ## Render as a third-level section + "sect3" + | + ## Render as a fourth-level section + "sect4" + | + ## Render as a fifth-level section + "sect5" + db.bridgehead.renderas-enum.attribute = + + ## Indicates how the bridge head should be rendered + attribute renderas { db.bridgehead.renderas.enumeration }? + db.bridgehead.renderas-other.attribute = + + ## Identifies the nature of the non-standard rendering + attribute otherrenderas { xsd:NMTOKEN } + db.bridgehead.renderas-other.attributes = + + ## Indicates how the bridge head should be rendered + attribute renderas { + + ## Identifies a non-standard rendering + "other" + } + & db.bridgehead.renderas-other.attribute + db.bridgehead.renderas.attribute = + db.bridgehead.renderas-enum.attribute + | db.bridgehead.renderas-other.attributes + db.bridgehead.role.attribute = attribute role { text } + db.bridgehead.attlist = + db.bridgehead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bridgehead.renderas.attribute? + db.bridgehead = + + ## A free-floating heading + element bridgehead { db.bridgehead.attlist, db.all.inlines* } +} +div { + db.remark.role.attribute = attribute role { text } + db.remark.attlist = + db.remark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.remark = + + ## A remark (or comment) intended for presentation in a draft manuscript + element remark { db.remark.attlist, db.all.inlines* } +} +div { + db.epigraph.role.attribute = attribute role { text } + db.epigraph.attlist = + db.epigraph.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.epigraph.info = db._info.title.forbidden + db.epigraph = + + ## A short inscription at the beginning of a document or component + element epigraph { + db.epigraph.attlist, + db.epigraph.info, + db.attribution?, + (db.para.blocks | db.literallayout)+ + } +} +div { + db.footnote.role.attribute = attribute role { text } + db.footnote.label.attribute = + + ## Identifies the desired footnote mark + attribute label { xsd:NMTOKEN } + db.footnote.attlist = + db.footnote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.footnote.label.attribute? + db.footnote = + + ## A footnote + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:footnote)" + "footnote must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:epigraph)" + "epigraph must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of footnote" + ] + ] + ] + ] + element footnote { db.footnote.attlist, db.all.blocks+ } +} +div { + db.formalpara.role.attribute = attribute role { text } + db.formalpara.attlist = + db.formalpara.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.formalpara.info = db._info.title.onlyreq + db.formalpara = + + ## A paragraph with a title + element formalpara { + db.formalpara.attlist, + db.formalpara.info, + db.indexing.inlines*, + db.para + } +} +div { + db.para.role.attribute = attribute role { text } + db.para.attlist = + db.para.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.para.info = db._info.title.forbidden + db.para = + + ## A paragraph + element para { + db.para.attlist, + db.para.info, + (db.all.inlines | db.nopara.blocks)* + } +} +div { + db.simpara.role.attribute = attribute role { text } + db.simpara.attlist = + db.simpara.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.simpara.info = db._info.title.forbidden + db.simpara = + + ## A paragraph that contains only text and inline markup, no block elements + element simpara { + db.simpara.attlist, db.simpara.info, db.all.inlines* + } +} +div { + db.itemizedlist.role.attribute = attribute role { text } + db.itemizedlist.mark.attribute = + + ## Identifies the type of mark to be used on items in this list + attribute mark { xsd:NMTOKEN } + db.itemizedlist.attlist = + db.itemizedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & db.itemizedlist.mark.attribute? + db.itemizedlist.info = db._info.title.only + db.itemizedlist = + + ## A list in which each entry is marked with a bullet or other dingbat + element itemizedlist { + db.itemizedlist.attlist, + db.itemizedlist.info, + db.all.blocks*, + db.listitem+ + } +} +div { + db.orderedlist.role.attribute = attribute role { text } + db.orderedlist.continuation.enumeration = + + ## Specifies that numbering should begin where the preceding list left off + "continues" + | + ## Specifies that numbering should begin again at 1 + "restarts" + db.orderedlist.continuation.attribute = + + ## Indicates how list numbering should begin relative to the immediately preceding list + attribute continuation { db.orderedlist.continuation.enumeration } + db.orderedlist.startingnumber.attribute = + + ## Specifies the initial line number + attribute startingnumber { xsd:integer } + db.orderedlist.inheritnum.enumeration = + + ## Specifies that numbering should ignore list nesting + "ignore" + | + ## Specifies that numbering should inherit from outer-level lists + "inherit" + db.orderedlist.inheritnum.attribute = + + ## Indicates whether or not item numbering should be influenced by list nesting + attribute inheritnum { db.orderedlist.inheritnum.enumeration } + db.orderedlist.numeration.enumeration = + + ## Specifies Arabic numeration (1, 2, 3, …) + "arabic" + | + ## Specifies upper-case alphabetic numeration (A, B, C, …) + "upperalpha" + | + ## Specifies lower-case alphabetic numeration (a, b, c, …) + "loweralpha" + | + ## Specifies upper-case Roman numeration (I, II, III, …) + "upperroman" + | + ## Specifies lower-case Roman numeration (i, ii, iii …) + "lowerroman" + db.orderedlist.numeration.attribute = + + ## Indicates the desired numeration + attribute numeration { db.orderedlist.numeration.enumeration } + db.orderedlist.attlist = + db.orderedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & (db.orderedlist.continuation.attribute + | db.orderedlist.startingnumber.attribute)? + & db.orderedlist.inheritnum.attribute? + & db.orderedlist.numeration.attribute? + db.orderedlist.info = db._info.title.only + db.orderedlist = + + ## A list in which each entry is marked with a sequentially incremented label + element orderedlist { + db.orderedlist.attlist, + db.orderedlist.info, + db.all.blocks*, + db.listitem+ + } +} +div { + db.listitem.role.attribute = attribute role { text } + db.listitem.override.attribute = + + ## Specifies the keyword for the type of mark that should be used on this + ## item, instead of the mark that would be used by default + attribute override { xsd:NMTOKEN } + db.listitem.attlist = + db.listitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.listitem.override.attribute? + db.listitem.info = db._info.title.forbidden + db.listitem = + + ## A wrapper for the elements of a list item + element listitem { + db.listitem.attlist, db.listitem.info, db.all.blocks+ + } +} +div { + db.segmentedlist.role.attribute = attribute role { text } + db.segmentedlist.attlist = + db.segmentedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.segmentedlist.info = db._info.title.only + db.segmentedlist = + + ## A segmented list, a list of sets of elements + element segmentedlist { + db.segmentedlist.attlist, + db.segmentedlist.info, + db.segtitle+, + db.seglistitem+ + } +} +div { + db.segtitle.role.attribute = attribute role { text } + db.segtitle.attlist = + db.segtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.segtitle = + + ## The title of an element of a list item in a segmented list + element segtitle { db.segtitle.attlist, db.all.inlines* } +} +div { + db.seglistitem.role.attribute = attribute role { text } + db.seglistitem.attlist = + db.seglistitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seglistitem = + + ## A list item in a segmented list + [ + s:pattern [ + s:title [ "Cardinality of segments and titles" ] + s:rule [ + context = "db:seglistitem" + s:assert [ + test = "count(db:seg) = count(../db:segtitle)" + "The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist" + ] + ] + ] + ] + element seglistitem { db.seglistitem.attlist, db.seg+ } +} +div { + db.seg.role.attribute = attribute role { text } + db.seg.attlist = + db.seg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seg = + + ## An element of a list item in a segmented list + element seg { db.seg.attlist, db.all.inlines* } +} +div { + db.simplelist.role.attribute = attribute role { text } + db.simplelist.type.enumeration = + + ## A tabular presentation in row-major order. + "horiz" + | + ## A tabular presentation in column-major order. + "vert" + | + ## An inline presentation, usually a comma-delimited list. + "inline" + db.simplelist.type.attribute = + + ## Specifies the type of list presentation + [ a:defaultValue = "vert" ] + attribute type { db.simplelist.type.enumeration } + db.simplelist.columns.attribute = + + ## Specifies the number of columns for horizontal or vertical presentation + attribute columns { xsd:integer } + db.simplelist.attlist = + db.simplelist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplelist.type.attribute? + & db.simplelist.columns.attribute? + db.simplelist = + + ## An undecorated list of single words or short phrases + element simplelist { db.simplelist.attlist, db.member+ } +} +div { + db.member.role.attribute = attribute role { text } + db.member.attlist = + db.member.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.member = + + ## An element of a simple list + element member { db.member.attlist, db.all.inlines* } +} +div { + db.variablelist.role.attribute = attribute role { text } + db.variablelist.termlength.attribute = + + ## Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list + attribute termlength { text } + db.variablelist.attlist = + db.variablelist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & db.variablelist.termlength.attribute? + db.variablelist.info = db._info.title.only + db.variablelist = + + ## A list in which each entry is composed of a set of one or more terms and an associated description + element variablelist { + db.variablelist.attlist, + db.variablelist.info, + db.all.blocks*, + db.varlistentry+ + } +} +div { + db.varlistentry.role.attribute = attribute role { text } + db.varlistentry.attlist = + db.varlistentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varlistentry = + + ## A wrapper for a set of terms and the associated description in a variable list + element varlistentry { + db.varlistentry.attlist, db.term+, db.listitem + } +} +div { + db.term.role.attribute = attribute role { text } + db.term.attlist = + db.term.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.term = + + ## The word or phrase being defined or described in a variable list + element term { db.term.attlist, db.all.inlines* } +} +div { + db.example.role.attribute = attribute role { text } + db.example.label.attribute = db.label.attribute + db.example.width.attribute = db.width.characters.attribute + db.example.pgwide.attribute = db.pgwide.attribute + db.example.floatstyle.attribute = db.floatstyle.attribute + db.example.type.attribute = + + ## Identifies the type of example + attribute type { text }? + db.example.attlist = + db.example.role.attribute? + & db.example.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.example.label.attribute? + & db.example.floatstyle.attribute? + & (db.example.width.attribute | db.example.pgwide.attribute)? + db.example.info = db._info.title.onlyreq + db.example = + + ## A formal example, with a title + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of example" + ] + ] + ] + ] + element example { + db.example.attlist, db.example.info, db.all.blocks+, db.caption? + } +} +div { + db.informalexample.role.attribute = attribute role { text } + db.informalexample.width.attribute = db.width.characters.attribute + db.informalexample.pgwide.attribute = db.pgwide.attribute + db.informalexample.floatstyle.attribute = db.floatstyle.attribute + db.informalexample.type.attribute = + + ## Identifies the type of example + attribute type { text }? + db.informalexample.attlist = + db.informalexample.role.attribute? + & db.informalexample.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.informalexample.floatstyle.attribute? + & (db.informalexample.width.attribute + | db.informalexample.pgwide.attribute)? + db.informalexample.info = db._info.title.forbidden + db.informalexample = + + ## A displayed example without a title + element informalexample { + db.informalexample.attlist, + db.informalexample.info, + db.all.blocks+, + db.caption? + } +} +db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co +db.verbatim.contentmodel = + db._info.title.forbidden, (db.textobject | db.verbatim.inlines*) +div { + db.literallayout.role.attribute = attribute role { text } + db.literallayout.class.enumeration = + + ## The literal layout should be formatted with a monospaced font + "monospaced" + | + ## The literal layout should be formatted with the current font + "normal" + db.literallayout.class.attribute = + + ## Specifies the class of literal layout + attribute class { db.literallayout.class.enumeration } + db.literallayout.attlist = + db.literallayout.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.literallayout.class.attribute? + db.literallayout = + + ## A block of text in which line breaks and white space are to be reproduced faithfully + element literallayout { + db.literallayout.attlist, db.verbatim.contentmodel + } +} +div { + db.screen.role.attribute = attribute role { text } + db.screen.width.attribute = db.width.characters.attribute + db.screen.attlist = + db.screen.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.screen.width.attribute? + db.screen = + + ## Text that a user sees or might see on a computer screen + element screen { db.screen.attlist, db.verbatim.contentmodel } +} +div { + db.screenshot.role.attribute = attribute role { text } + db.screenshot.attlist = + db.screenshot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenshot.info = db._info + db.screenshot = + + ## A representation of what the user sees or might see on a computer screen + element screenshot { + db.screenshot.attlist, db.screenshot.info, db.mediaobject + } +} +div { + db.figure.role.attribute = attribute role { text } + db.figure.label.attribute = db.label.attribute + db.figure.pgwide.attribute = db.pgwide.attribute + db.figure.floatstyle.attribute = db.floatstyle.attribute + db.figure.type.attribute = + + ## Identifies the type of figure + attribute type { text }? + db.figure.attlist = + db.figure.role.attribute? + & db.figure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.figure.label.attribute? + & db.figure.pgwide.attribute? + & db.figure.floatstyle.attribute? + db.figure.info = db._info.title.onlyreq + db.figure = + + ## A formal figure, generally an illustration, with a title + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of figure" + ] + ] + ] + ] + element figure { + db.figure.attlist, db.figure.info, db.all.blocks+, db.caption? + } +} +div { + db.informalfigure.role.attribute = attribute role { text } + db.informalfigure.label.attribute = db.label.attribute + db.informalfigure.pgwide.attribute = db.pgwide.attribute + db.informalfigure.floatstyle.attribute = db.floatstyle.attribute + db.informalfigure.type.attribute = + + ## Identifies the type of figure + attribute type { text }? + db.informalfigure.attlist = + db.informalfigure.role.attribute? + & db.informalfigure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.informalfigure.label.attribute? + & db.informalfigure.pgwide.attribute? + & db.informalfigure.floatstyle.attribute? + db.informalfigure.info = db._info.title.forbidden + db.informalfigure = + + ## A untitled figure + element informalfigure { + db.informalfigure.attlist, + db.informalfigure.info, + db.all.blocks+, + db.caption? + } +} +db.mediaobject.content = + (db.videoobject | db.audioobject | db.imageobject | db.textobject) + | db.imageobjectco +div { + db.mediaobject.role.attribute = attribute role { text } + db.mediaobject.attlist = + db.mediaobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mediaobject.info = db._info.title.forbidden + db.mediaobject = + + ## A displayed media object (video, audio, image, etc.) + element mediaobject { + db.mediaobject.attlist, + db.mediaobject.info, + db.alt?, + db.mediaobject.content+, + db.caption? + } +} +div { + db.inlinemediaobject.role.attribute = attribute role { text } + db.inlinemediaobject.attlist = + db.inlinemediaobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlinemediaobject.info = db._info.title.forbidden + db.inlinemediaobject = + + ## An inline media object (video, audio, image, and so on) + element inlinemediaobject { + db.inlinemediaobject.attlist, + db.inlinemediaobject.info, + db.alt?, + db.mediaobject.content+ + } +} +div { + db.videoobject.role.attribute = attribute role { text } + db.videoobject.attlist = + db.videoobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.videoobject.info = db._info.title.forbidden + db.videoobject = + + ## A wrapper for video data and its associated meta-information + element videoobject { + db.videoobject.attlist, db.videoobject.info, db.videodata+ + } +} +div { + db.audioobject.role.attribute = attribute role { text } + db.audioobject.attlist = + db.audioobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.audioobject.info = db._info.title.forbidden + db.audioobject = + + ## A wrapper for audio data and its associated meta-information + element audioobject { + db.audioobject.attlist, db.audioobject.info, db.audiodata+ + } +} +db.imageobject.content = + db.imagedata+ | db.imagedata.mathml | db.imagedata.svg+ +div { + db.imageobject.role.attribute = attribute role { text } + db.imageobject.attlist = + db.imageobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobject.info = db._info.title.forbidden + db.imageobject = + + ## A wrapper for image data and its associated meta-information + element imageobject { + db.imageobject.attlist, + db.imageobject.info, + db.imageobject.content + } +} +div { + db.textobject.role.attribute = attribute role { text } + db.textobject.attlist = + db.textobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.textobject.info = db._info.title.forbidden + db.textobject = + + ## A wrapper for a text description of an object and its associated meta-information + element textobject { + db.textobject.attlist, + db.textobject.info, + (db.phrase | db.textdata | db.all.blocks+) + } +} +div { + db.videodata.role.attribute = attribute role { text } + db.videodata.align.enumeration = db.halign.enumeration + db.videodata.align.attribute = + + ## Specifies the (horizontal) alignment of the video data + attribute align { db.videodata.align.enumeration } + db.videodata.autoplay.attribute = db.autoplay.attribute + db.videodata.classid.attribute = db.classid.attribute + db.videodata.valign.enumeration = db.valign.enumeration + db.videodata.valign.attribute = + + ## Specifies the vertical alignment of the video data + attribute valign { db.videodata.valign.enumeration } + db.videodata.width.attribute = db.width.attribute + db.videodata.depth.attribute = db.depth.attribute + db.videodata.contentwidth.attribute = db.contentwidth.attribute + db.videodata.contentdepth.attribute = db.contentdepth.attribute + db.videodata.scalefit.enumeration = db.scalefit.enumeration + db.videodata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.videodata.scalefit.enumeration } + db.videodata.scale.attribute = db.scale.attribute + db.videodata.attlist = + db.videodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.videodata.align.attribute? + & db.videodata.valign.attribute? + & db.videodata.width.attribute? + & db.videodata.contentwidth.attribute? + & db.videodata.scalefit.attribute? + & db.videodata.scale.attribute? + & db.videodata.depth.attribute? + & db.videodata.contentdepth.attribute? + & db.videodata.autoplay.attribute? + & db.videodata.classid.attribute? + db.videodata.info = db._info.title.forbidden + db.videodata = + + ## Pointer to external video data + element videodata { + db.videodata.attlist, db.videodata.info, db.multimediaparam* + } +} +div { + db.audiodata.role.attribute = attribute role { text } + db.audiodata.align.enumeration = db.halign.enumeration + db.audiodata.align.attribute = + + ## Specifies the (horizontal) alignment of the video data + attribute align { db.audiodata.align.enumeration } + db.audiodata.autoplay.attribute = db.autoplay.attribute + db.audiodata.classid.attribute = db.classid.attribute + db.audiodata.contentwidth.attribute = db.contentwidth.attribute + db.audiodata.contentdepth.attribute = db.contentdepth.attribute + db.audiodata.depth.attribute = db.depth.attribute + db.audiodata.scale.attribute = db.scale.attribute + db.audiodata.scalefit.enumeration = db.scalefit.enumeration + db.audiodata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.audiodata.scalefit.enumeration } + db.audiodata.valign.enumeration = db.valign.enumeration + db.audiodata.valign.attribute = + + ## Specifies the vertical alignment of the video data + attribute valign { db.audiodata.valign.enumeration } + db.audiodata.width.attribute = db.width.attribute + db.audiodata.attlist = + db.audiodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.audiodata.align.attribute? + & db.audiodata.autoplay.attribute? + & db.audiodata.classid.attribute? + & db.audiodata.contentdepth.attribute? + & db.audiodata.contentwidth.attribute? + & db.audiodata.depth.attribute? + & db.audiodata.scale.attribute? + & db.audiodata.scalefit.attribute? + & db.audiodata.valign.attribute? + & db.audiodata.width.attribute? + db.audiodata.info = db._info.title.forbidden + db.audiodata = + + ## Pointer to external audio data + element audiodata { + db.audiodata.attlist, db.audiodata.info, db.multimediaparam* + } +} +div { + db.imagedata.role.attribute = attribute role { text } + db.imagedata.align.enumeration = db.halign.enumeration + db.imagedata.align.attribute = + + ## Specifies the (horizontal) alignment of the image data + attribute align { db.imagedata.align.enumeration } + db.imagedata.valign.enumeration = db.valign.enumeration + db.imagedata.valign.attribute = + + ## Specifies the vertical alignment of the image data + attribute valign { db.imagedata.valign.enumeration } + db.imagedata.width.attribute = db.width.attribute + db.imagedata.depth.attribute = db.depth.attribute + db.imagedata.contentwidth.attribute = db.contentwidth.attribute + db.imagedata.contentdepth.attribute = db.contentdepth.attribute + db.imagedata.scalefit.enumeration = db.scalefit.enumeration + db.imagedata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.imagedata.scalefit.enumeration } + db.imagedata.scale.attribute = db.scale.attribute + db.imagedata.attlist = + db.imagedata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.info = db._info.title.forbidden + db.imagedata = + + ## Pointer to external image data + element imagedata { + db.imagedata.attlist, db.imagedata.info, db.multimediaparam* + } +} +div { + db.textdata.role.attribute = attribute role { text } + db.textdata.encoding.attribute = + + ## Identifies the encoding of the text in the external file + attribute encoding { text } + db.textdata.attlist = + db.textdata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.textdata.encoding.attribute? + db.textdata.info = db._info.title.forbidden + db.textdata = + + ## Pointer to external text data + element textdata { db.textdata.attlist, db.textdata.info } +} +div { + db.multimediaparam.role.attribute = attribute role { text } + db.multimediaparam.name.attribute = + + ## Specifies the name of the parameter + attribute name { text } + db.multimediaparam.value.attribute = + + ## Specifies the value of the parameter + attribute value { text } + db.multimediaparam.valuetype.attribute = + + ## Specifies the type of the value of the parameter + attribute valuetype { text } + db.multimediaparam.attlist = + db.multimediaparam.role.attribute? + & db.common.attributes + & db.multimediaparam.name.attribute + & db.multimediaparam.value.attribute + & db.multimediaparam.valuetype.attribute? + db.multimediaparam = + + ## Application specific parameters for a media player + element multimediaparam { db.multimediaparam.attlist, empty } +} +div { + db.caption.role.attribute = attribute role { text } + db.caption.attlist = + db.caption.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caption.info = db._info.title.forbidden + db.caption = + + ## A caption + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caption" + ] + ] + ] + ] + element caption { + db.caption.attlist, db.caption.info, db.all.blocks+ + } +} +div { + db.address.role.attribute = attribute role { text } + db.address.attlist = + db.address.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.address = + + ## A real-world address, generally a postal address + element address { + db.address.attlist, + (db._text + | db.personname + | db.orgname + | db.pob + | db.street + | db.city + | db.state + | db.postcode + | db.country + | db.phone + | db.fax + | db.email + | db.uri + | db.otheraddr)* + } +} +div { + db.street.role.attribute = attribute role { text } + db.street.attlist = + db.street.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.street = + + ## A street address in an address + element street { db.street.attlist, db._text } +} +div { + db.pob.role.attribute = attribute role { text } + db.pob.attlist = + db.pob.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pob = + + ## A post office box in an address + element pob { db.pob.attlist, db._text } +} +div { + db.postcode.role.attribute = attribute role { text } + db.postcode.attlist = + db.postcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.postcode = + + ## A postal code in an address + element postcode { db.postcode.attlist, db._text } +} +div { + db.city.role.attribute = attribute role { text } + db.city.attlist = + db.city.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.city = + + ## The name of a city in an address + element city { db.city.attlist, db._text } +} +div { + db.state.role.attribute = attribute role { text } + db.state.attlist = + db.state.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.state = + + ## A state or province in an address + element state { db.state.attlist, db._text } +} +div { + db.country.role.attribute = attribute role { text } + db.country.attlist = + db.country.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.country = + + ## The name of a country + element country { db.country.attlist, db._text } +} +div { + db.phone.role.attribute = attribute role { text } + db.phone.attlist = + db.phone.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phone = + + ## A telephone number + element phone { db.phone.attlist, db._text } +} +div { + db.fax.role.attribute = attribute role { text } + db.fax.attlist = + db.fax.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.fax = + + ## A fax number + element fax { db.fax.attlist, db._text } +} +div { + db.otheraddr.role.attribute = attribute role { text } + db.otheraddr.attlist = + db.otheraddr.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.otheraddr = + + ## Uncategorized information in address + element otheraddr { db.otheraddr.attlist, db._text } +} +div { + db.affiliation.role.attribute = attribute role { text } + db.affiliation.attlist = + db.affiliation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.affiliation = + + ## The institutional affiliation of an individual + element affiliation { + db.affiliation.attlist, + db.shortaffil?, + db.jobtitle*, + (db.org? | (db.orgname?, db.orgdiv*, db.address*)) + } +} +div { + db.shortaffil.role.attribute = attribute role { text } + db.shortaffil.attlist = + db.shortaffil.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.shortaffil = + + ## A brief description of an affiliation + element shortaffil { db.shortaffil.attlist, db._text } +} +div { + db.jobtitle.role.attribute = attribute role { text } + db.jobtitle.attlist = + db.jobtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.jobtitle = + + ## The title of an individual in an organization + element jobtitle { db.jobtitle.attlist, db._text } +} +div { + db.orgname.class.enumeration = + + ## A consortium + "consortium" + | + ## A corporation + "corporation" + | + ## An informal organization + "informal" + | + ## A non-profit organization + "nonprofit" + db.orgname.class-enum.attribute = + + ## Specifies the nature of the organization + attribute class { db.orgname.class.enumeration } + db.orgname.class-other.attributes = + + ## Specifies the nature of the organization + attribute class { + + ## Indicates a non-standard organization class + "other" + }, + + ## Identifies the non-standard nature of the organization + attribute otherclass { text } + db.orgname.class.attribute = + db.orgname.class-enum.attribute | db.orgname.class-other.attributes + db.orgname.role.attribute = attribute role { text } + db.orgname.attlist = + db.orgname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.orgname.class.attribute? + db.orgname = + + ## The name of an organization + element orgname { db.orgname.attlist, db._text } +} +div { + db.orgdiv.role.attribute = attribute role { text } + db.orgdiv.attlist = + db.orgdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.orgdiv = + + ## A division of an organization + element orgdiv { db.orgdiv.attlist, db.all.inlines* } +} +div { + db.artpagenums.role.attribute = attribute role { text } + db.artpagenums.attlist = + db.artpagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.artpagenums = + + ## The page numbers of an article as published + element artpagenums { db.artpagenums.attlist, db._text } +} +div { + db.personname.role.attribute = attribute role { text } + db.personname.attlist = + db.personname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.personname = + + ## The personal name of an individual + element personname { + db.personname.attlist, + (db._text + | (db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername)+ + | (db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername)+) + } +} +db.person.author.contentmodel = + db.personname, + (db.personblurb + | db.affiliation + | db.email + | db.uri + | db.address + | db.contrib)* +db.org.author.contentmodel = + db.orgname, + (db.orgdiv + | db.affiliation + | db.email + | db.uri + | db.address + | db.contrib)* +db.credit.contentmodel = + db.person.author.contentmodel | db.org.author.contentmodel +div { + db.author.role.attribute = attribute role { text } + db.author.attlist = + db.author.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.author = + + ## The name of an individual author + element author { db.author.attlist, db.credit.contentmodel } +} +div { + db.authorgroup.role.attribute = attribute role { text } + db.authorgroup.attlist = + db.authorgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.authorgroup = + + ## Wrapper for author information when a document has multiple authors or collaborators + element authorgroup { + db.authorgroup.attlist, (db.author | db.editor | db.othercredit)+ + } +} +div { + db.collab.role.attribute = attribute role { text } + db.collab.attlist = + db.collab.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.collab = + + ## Identifies a collaborator + element collab { + db.collab.attlist, + (db.person | db.personname | db.org | db.orgname)+, + db.affiliation* + } +} +div { + db.authorinitials.role.attribute = attribute role { text } + db.authorinitials.attlist = + db.authorinitials.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.authorinitials = + + ## The initials or other short identifier for an author + element authorinitials { db.authorinitials.attlist, db._text } +} +div { + db.person.role.attribute = attribute role { text } + db.person.attlist = + db.person.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.person = + + ## A person and associated metadata + element person { + db.person.attlist, + db.personname, + (db.address + | db.affiliation + | db.email + | db.uri + | db.personblurb)* + } +} +div { + db.org.role.attribute = attribute role { text } + db.org.attlist = + db.org.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.org = + + ## An organization and associated metadata + element org { + db.org.attlist, + db.orgname, + (db.address | db.affiliation | db.email | db.uri | db.orgdiv)* + } +} +div { + db.confgroup.role.attribute = attribute role { text } + db.confgroup.attlist = + db.confgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confgroup = + + ## A wrapper for document meta-information about a conference + element confgroup { + db.confgroup.attlist, + (db.confdates + | db.conftitle + | db.confnum + | db.confsponsor + | db.address)* + } +} +div { + db.confdates.role.attribute = attribute role { text } + db.confdates.attlist = + db.confdates.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confdates = + + ## The dates of a conference for which a document was written + element confdates { db.confdates.attlist, db._text } +} +div { + db.conftitle.role.attribute = attribute role { text } + db.conftitle.attlist = + db.conftitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.conftitle = + + ## The title of a conference for which a document was written + element conftitle { db.conftitle.attlist, db._text } +} +div { + db.confnum.role.attribute = attribute role { text } + db.confnum.attlist = + db.confnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confnum = + + ## An identifier, frequently numerical, associated with a conference for which a document was written + element confnum { db.confnum.attlist, db._text } +} +div { + db.confsponsor.role.attribute = attribute role { text } + db.confsponsor.attlist = + db.confsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confsponsor = + + ## The sponsor of a conference for which a document was written + element confsponsor { db.confsponsor.attlist, db._text } +} +div { + db.contractnum.role.attribute = attribute role { text } + db.contractnum.attlist = + db.contractnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractnum = + + ## The contract number of a document + element contractnum { db.contractnum.attlist, db._text } +} +div { + db.contractsponsor.role.attribute = attribute role { text } + db.contractsponsor.attlist = + db.contractsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractsponsor = + + ## The sponsor of a contract + element contractsponsor { db.contractsponsor.attlist, db._text } +} +div { + db.copyright.role.attribute = attribute role { text } + db.copyright.attlist = + db.copyright.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.copyright = + + ## Copyright information about a document + element copyright { db.copyright.attlist, db.year+, db.holder* } +} +div { + db.year.role.attribute = attribute role { text } + db.year.attlist = + db.year.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.year = + + ## The year of publication of a document + element year { db.year.attlist, db._text } +} +div { + db.holder.role.attribute = attribute role { text } + db.holder.attlist = + db.holder.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.holder = + + ## The name of the individual or organization that holds a copyright + element holder { db.holder.attlist, db._text } +} +db.cover.contentmodel = + (db.para.blocks + | db.extension.blocks + | db.list.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.synopsis.blocks +div { + db.cover.role.attribute = attribute role { text } + db.cover.attlist = + db.cover.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.cover = + + ## Additional content for the cover of a publication + element cover { db.cover.attlist, db.cover.contentmodel+ } +} +db.date.contentmodel = + xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text +div { + db.date.role.attribute = attribute role { text } + db.date.attlist = + db.date.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.date = + + ## The date of publication or revision of a document + element date { db.date.attlist, db.date.contentmodel } +} +div { + db.edition.role.attribute = attribute role { text } + db.edition.attlist = + db.edition.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.edition = + + ## The name or number of an edition of a document + element edition { db.edition.attlist, db._text } +} +div { + db.editor.role.attribute = attribute role { text } + db.editor.attlist = + db.editor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.editor = + + ## The name of the editor of a document + element editor { db.editor.attlist, db.credit.contentmodel } +} +div { + db.biblioid.role.attribute = attribute role { text } + db.biblioid.attlist = + db.biblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.biblioid = + + ## An identifier for a document + element biblioid { db.biblioid.attlist, db._text } +} +div { + db.citebiblioid.role.attribute = attribute role { text } + db.citebiblioid.attlist = + db.citebiblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.citebiblioid = + + ## A citation of a bibliographic identifier + element citebiblioid { db.citebiblioid.attlist, db._text } +} +div { + db.bibliosource.role.attribute = attribute role { text } + db.bibliosource.attlist = + db.bibliosource.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.bibliosource = + + ## The source of a document + element bibliosource { db.bibliosource.attlist, db._text } +} +div { + db.bibliorelation.type.enumeration = + + ## The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + "hasformat" + | + ## The described resource includes the referenced resource either physically or logically + "haspart" + | + ## The described resource has a version, edition, or adaptation, namely, the referenced resource + "hasversion" + | + ## The described resource is the same intellectual content of the referenced resource, but presented in another format + "isformatof" + | + ## The described resource is a physical or logical part of the referenced resource + "ispartof" + | + ## The described resource is referenced, cited, or otherwise pointed to by the referenced resource + "isreferencedby" + | + ## The described resource is supplanted, displaced, or superceded by the referenced resource + "isreplacedby" + | + ## The described resource is required by the referenced resource, either physically or logically + "isrequiredby" + | + ## The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + "isversionof" + | + ## The described resource references, cites, or otherwise points to the referenced resource + "references" + | + ## The described resource supplants, displaces, or supersedes the referenced resource + "replaces" + | + ## The described resource requires the referenced resource to support its function, delivery, or coherence of content + "requires" + db.bibliorelation.type-enum.attribute = + + ## Identifies the type of relationship + attribute type { db.bibliorelation.type.enumeration }? + db.bibliorelation.type-other.attributes = + + ## Identifies the type of relationship + attribute type { + + ## The described resource has a non-standard relationship with the referenced resource + "othertype" + }?, + + ## A keyword that identififes the type of the non-standard relationship + attribute othertype { xsd:NMTOKEN } + db.bibliorelation.type.attribute = + db.bibliorelation.type-enum.attribute + | db.bibliorelation.type-other.attributes + db.bibliorelation.role.attribute = attribute role { text } + db.bibliorelation.attlist = + db.bibliorelation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + & db.bibliorelation.type.attribute + db.bibliorelation = + + ## The relationship of a document to another + element bibliorelation { db.bibliorelation.attlist, db._text } +} +div { + db.bibliocoverage.spacial.enumeration = + + ## The DCMI Point identifies a point in space using its geographic coordinates + "dcmipoint" + | + ## ISO 3166 Codes for the representation of names of countries + "iso3166" + | + ## The DCMI Box identifies a region of space using its geographic limits + "dcmibox" + | + ## The Getty Thesaurus of Geographic Names + "tgn" + db.bibliocoverage.spatial-enum.attribute = + + ## Specifies the type of spatial coverage + attribute spatial { db.bibliocoverage.spacial.enumeration }? + db.bibliocoverage.spatial-other.attributes = + + ## Specifies the type of spatial coverage + attribute spatial { + + ## Identifies a non-standard type of coverage + "otherspatial" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute otherspatial { xsd:NMTOKEN } + db.bibliocoverage.spatial.attribute = + db.bibliocoverage.spatial-enum.attribute + | db.bibliocoverage.spatial-other.attributes + db.bibliocoverage.temporal.enumeration = + + ## A specification of the limits of a time interval + "dcmiperiod" + | + ## W3C Encoding rules for dates and times—a profile based on ISO 8601 + "w3c-dtf" + db.bibliocoverage.temporal-enum.attribute = + + ## Specifies the type of temporal coverage + attribute temporal { db.bibliocoverage.temporal.enumeration }? + db.bibliocoverage.temporal-other.attributes = + + ## Specifies the type of temporal coverage + attribute temporal { + + ## Specifies a non-standard type of coverage + "othertemporal" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute othertemporal { xsd:NMTOKEN } + db.bibliocoverage.temporal.attribute = + db.bibliocoverage.temporal-enum.attribute + | db.bibliocoverage.temporal-other.attributes + db.bibliocoverage.coverage.attrib = + db.bibliocoverage.spatial.attribute + & db.bibliocoverage.temporal.attribute + db.bibliocoverage.role.attribute = attribute role { text } + db.bibliocoverage.attlist = + db.bibliocoverage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliocoverage.coverage.attrib + db.bibliocoverage = + + ## The spatial or temporal coverage of a document + element bibliocoverage { db.bibliocoverage.attlist, db._text } +} +div { + db.legalnotice.role.attribute = attribute role { text } + db.legalnotice.attlist = + db.legalnotice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.legalnotice.info = db._info.title.only + db.legalnotice = + + ## A statement of legal obligations or requirements + element legalnotice { + db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+ + } +} +div { + db.othercredit.class.enumeration = + + ## A copy editor + "copyeditor" + | + ## A graphic designer + "graphicdesigner" + | + ## A production editor + "productioneditor" + | + ## A technical editor + "technicaleditor" + | + ## A translator + "translator" + | + ## An indexer + "indexer" + | + ## A proof-reader + "proofreader" + | + ## A cover designer + "coverdesigner" + | + ## An interior designer + "interiordesigner" + | + ## An illustrator + "illustrator" + | + ## A reviewer + "reviewer" + | + ## A typesetter + "typesetter" + | + ## A converter (a persons responsible for conversion, not an application) + "conversion" + db.othercredit.class-enum.attribute = + + ## Identifies the nature of the contributor + attribute class { db.othercredit.class.enumeration }? + db.othercredit.class-other.attribute = + + ## Identifies the nature of the non-standard contribution + attribute otherclass { xsd:NMTOKEN } + db.othercredit.class-other.attributes = + + ## Identifies the nature of the contributor + attribute class { + + ## Identifies a non-standard contribution + "other" + } + & db.othercredit.class-other.attribute + db.othercredit.class.attribute = + db.othercredit.class-enum.attribute + | db.othercredit.class-other.attributes + db.othercredit.role.attribute = attribute role { text } + db.othercredit.attlist = + db.othercredit.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.othercredit.class.attribute + db.othercredit = + + ## A person or entity, other than an author or editor, credited in a document + element othercredit { + db.othercredit.attlist, db.credit.contentmodel + } +} +div { + db.pagenums.role.attribute = attribute role { text } + db.pagenums.attlist = + db.pagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pagenums = + + ## The numbers of the pages in a book, for use in a bibliographic entry + element pagenums { db.pagenums.attlist, db._text } +} +div { + db.contrib.role.attribute = attribute role { text } + db.contrib.attlist = + db.contrib.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contrib = + + ## A summary of the contributions made to a document by a credited source + element contrib { db.contrib.attlist, db.all.inlines* } +} +div { + db.honorific.role.attribute = attribute role { text } + db.honorific.attlist = + db.honorific.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.honorific = + + ## The title of a person + element honorific { db.honorific.attlist, db._text } +} +div { + db.firstname.role.attribute = attribute role { text } + db.firstname.attlist = + db.firstname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.firstname = + + ## A given name of a person + element firstname { db.firstname.attlist, db._text } +} +div { + db.givenname.role.attribute = attribute role { text } + db.givenname.attlist = + db.givenname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.givenname = + + ## The given name of a person + element givenname { db.givenname.attlist, db._text } +} +div { + db.surname.role.attribute = attribute role { text } + db.surname.attlist = + db.surname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.surname = + + ## An inherited or family name; in western cultures the last name + element surname { db.surname.attlist, db._text } +} +div { + db.lineage.role.attribute = attribute role { text } + db.lineage.attlist = + db.lineage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineage = + + ## The portion of a person's name indicating a relationship to ancestors + element lineage { db.lineage.attlist, db._text } +} +div { + db.othername.role.attribute = attribute role { text } + db.othername.attlist = + db.othername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.othername = + + ## A component of a person's name that is not a first name, surname, or lineage + element othername { db.othername.attlist, db._text } +} +div { + db.printhistory.role.attribute = attribute role { text } + db.printhistory.attlist = + db.printhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.printhistory = + + ## The printing history of a document + element printhistory { db.printhistory.attlist, db.para.blocks+ } +} +div { + db.pubdate.role.attribute = attribute role { text } + db.pubdate.attlist = + db.pubdate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pubdate = + + ## The date of publication of a document + element pubdate { db.pubdate.attlist, db.date.contentmodel } +} +div { + db.publisher.role.attribute = attribute role { text } + db.publisher.attlist = + db.publisher.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publisher = + + ## The publisher of a document + element publisher { + db.publisher.attlist, db.publishername, db.address* + } +} +div { + db.publishername.role.attribute = attribute role { text } + db.publishername.attlist = + db.publishername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publishername = + + ## The name of the publisher of a document + element publishername { db.publishername.attlist, db._text } +} +div { + db.releaseinfo.role.attribute = attribute role { text } + db.releaseinfo.attlist = + db.releaseinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.releaseinfo = + + ## Information about a particular release of a document + element releaseinfo { db.releaseinfo.attlist, db._text } +} +div { + db.revhistory.role.attribute = attribute role { text } + db.revhistory.attlist = + db.revhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revhistory.info = db._info.title.only + db.revhistory = + + ## A history of the revisions to a document + element revhistory { + db.revhistory.attlist, db.revhistory.info, db.revision+ + } +} +div { + db.revision.role.attribute = attribute role { text } + db.revision.attlist = + db.revision.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revision = + + ## An entry describing a single revision in the history of the revisions to a document + element revision { + db.revision.attlist, + db.revnumber?, + db.date, + (db.authorinitials | db.author)*, + (db.revremark | db.revdescription)? + } +} +div { + db.revnumber.role.attribute = attribute role { text } + db.revnumber.attlist = + db.revnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revnumber = + + ## A document revision number + element revnumber { db.revnumber.attlist, db._text } +} +div { + db.revremark.role.attribute = attribute role { text } + db.revremark.attlist = + db.revremark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revremark = + + ## A description of a revision to a document + element revremark { db.revremark.attlist, db._text } +} +div { + db.revdescription.role.attribute = attribute role { text } + db.revdescription.attlist = + db.revdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revdescription = + + ## A extended description of a revision to a document + element revdescription { db.revdescription.attlist, db.all.blocks* } +} +div { + db.seriesvolnums.role.attribute = attribute role { text } + db.seriesvolnums.attlist = + db.seriesvolnums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seriesvolnums = + + ## Numbers of the volumes in a series of books + element seriesvolnums { db.seriesvolnums.attlist, db._text } +} +div { + db.volumenum.role.attribute = attribute role { text } + db.volumenum.attlist = + db.volumenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.volumenum = + + ## The volume number of a document in a set (as of books in a set or articles in a journal) + element volumenum { db.volumenum.attlist, db._text } +} +div { + db.issuenum.role.attribute = attribute role { text } + db.issuenum.attlist = + db.issuenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.issuenum = + + ## The number of an issue of a journal + element issuenum { db.issuenum.attlist, db._text } +} +div { + db.meta.role.attribute = attribute role { text } + db.meta.name.attribute = + + ## A name for the metadata element + attribute name { text } + db.meta.content.attribute = + + ## The metadata content + attribute content { text } + db.meta.attlist = + db.meta.name.attribute? + & db.meta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.meta.empty = + + ## A generic metadata element + element meta { db.meta.attlist, db.meta.content.attribute, empty } + db.meta.content = + + ## A generic metadata element + element meta { + db.meta.attlist, + (text | db._any | db.all.inlines | db.all.blocks)* + } + db.meta = db.meta.empty | db.meta.content +} +div { + db.package.role.attribute = attribute role { text } + db.package.attlist = + db.package.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.package = + + ## A software or application package + element package { db.package.attlist, db._text } +} +div { + db.email.role.attribute = attribute role { text } + db.email.attlist = + db.email.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.email = + + ## An email address + element email { db.email.attlist, db._text } +} +div { + db.lineannotation.role.attribute = attribute role { text } + db.lineannotation.attlist = + db.lineannotation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineannotation = + + ## A comment on a line in a verbatim listing + element lineannotation { db.lineannotation.attlist, db._text } +} +div { + db.parameter.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + db.parameter.class.attribute = + + ## Identifies the class of parameter + attribute class { db.parameter.class.enumeration } + db.parameter.role.attribute = attribute role { text } + db.parameter.attlist = + db.parameter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.parameter.class.attribute? + db.parameter = + + ## A value or a symbolic reference to a value + element parameter { db.parameter.attlist, db._text } +} +db.replaceable.inlines = db._text | db.co +div { + db.replaceable.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + | + ## A parameter + "parameter" + db.replaceable.class.attribute = + + ## Identifies the nature of the replaceable text + attribute class { db.replaceable.class.enumeration } + db.replaceable.role.attribute = attribute role { text } + db.replaceable.attlist = + db.replaceable.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.replaceable.class.attribute? + db.replaceable = + + ## Content that may or must be replaced by the user + element replaceable { + db.replaceable.attlist, db.replaceable.inlines* + } +} +div { + db.uri.type.attribute = + + ## Identifies the type of URI specified + attribute type { text }? + db.uri.role.attribute = attribute role { text } + db.uri.attlist = + db.uri.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.uri.type.attribute + db.uri = + + ## A Uniform Resource Identifier + element uri { db.uri.attlist, db._text } +} +div { + db.abbrev.role.attribute = attribute role { text } + db.abbrev.attlist = + db.abbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abbrev = + + ## An abbreviation, especially one followed by a period + element abbrev { + db.abbrev.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.acronym.role.attribute = attribute role { text } + db.acronym.attlist = + db.acronym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.acronym = + + ## An often pronounceable word made from the initial (or selected) letters of a name or phrase + element acronym { + db.acronym.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.citation.role.attribute = attribute role { text } + db.citation.attlist = + db.citation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citation = + + ## An inline bibliographic reference to another published work + element citation { db.citation.attlist, db.all.inlines* } +} +div { + db.citerefentry.role.attribute = attribute role { text } + db.citerefentry.attlist = + db.citerefentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citerefentry = + + ## A citation to a reference page + element citerefentry { + db.citerefentry.attlist, db.refentrytitle, db.manvolnum? + } +} +div { + db.refentrytitle.role.attribute = attribute role { text } + db.refentrytitle.attlist = + db.refentrytitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refentrytitle = + + ## The title of a reference page + element refentrytitle { db.refentrytitle.attlist, db.all.inlines* } +} +div { + db.manvolnum.role.attribute = attribute role { text } + db.manvolnum.attlist = + db.manvolnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.manvolnum = + + ## A reference volume number + element manvolnum { db.manvolnum.attlist, db._text } +} +div { + db.citetitle.pubwork.enumeration = db.pubwork.enumeration + db.citetitle.pubwork-enum.attribute = + + ## Identifies the nature of the publication being cited + attribute pubwork { db.citetitle.pubwork.enumeration } + db.citetitle.pubwork-other.attribute = + + ## Identifies the nature of some other kind of publication being cited + attribute otherpubwork { xsd:NMTOKEN } + db.citetitle.pubwork-other.attributes = + + ## Identifies that this is some other kind of publication being cited + attribute pubwork { + + ## Indicates that the published work is some 'other' kind. + "other" + } + & db.citetitle.pubwork-other.attribute + db.citetitle.pubwork.attribute = + db.citetitle.pubwork-enum.attribute + | db.citetitle.pubwork-other.attributes + db.citetitle.role.attribute = attribute role { text } + db.citetitle.attlist = + db.citetitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.citetitle.pubwork.attribute? + db.citetitle = + + ## The title of a cited work + element citetitle { db.citetitle.attlist, db.all.inlines* } +} +div { + db.emphasis.role.attribute = attribute role { text } + db.emphasis.attlist = + db.emphasis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.emphasis = + + ## Emphasized text + element emphasis { db.emphasis.attlist, db.all.inlines* } +} +div { + db._emphasis = + + ## A limited span of emphasized text + element emphasis { db.emphasis.attlist, db._text } +} +div { + db.foreignphrase.role.attribute = attribute role { text } + db.foreignphrase.attlist = + db.foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.foreignphrase = + + ## A word or phrase in a language other than the primary language of the document + element foreignphrase { + db.foreignphrase.attlist, (text | db.general.inlines)* + } +} +div { + db._foreignphrase.role.attribute = attribute role { text } + db._foreignphrase.attlist = + db._foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db._foreignphrase = + + ## A limited word or phrase in a language other than the primary language of the document + element foreignphrase { db._foreignphrase.attlist, db._text } +} +div { + db.phrase.role.attribute = attribute role { text } + db.phrase.attlist = + db.phrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phrase = + + ## A span of text + element phrase { db.phrase.attlist, db.all.inlines* } +} +div { + db._phrase = + + ## A limited span of text + element phrase { db.phrase.attlist, db._text } +} +div { + db.quote.role.attribute = attribute role { text } + db.quote.attlist = + db.quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.quote = + + ## An inline quotation + element quote { db.quote.attlist, db.all.inlines* } +} +div { + db._quote.role.attribute = attribute role { text } + db._quote.attlist = + db._quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db._quote = + + ## A limited inline quotation + element quote { db._quote.attlist, db._text } +} +div { + db.subscript.role.attribute = attribute role { text } + db.subscript.attlist = + db.subscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subscript = + + ## A subscript (as in H₂O, the molecular formula for water) + element subscript { db.subscript.attlist, db._text } +} +div { + db.superscript.role.attribute = attribute role { text } + db.superscript.attlist = + db.superscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.superscript = + + ## A superscript (as in x², the mathematical notation for x multiplied by itself) + element superscript { db.superscript.attlist, db._text } +} +div { + db.trademark.class.enumeration = + + ## A copyright + "copyright" + | + ## A registered copyright + "registered" + | + ## A service + "service" + | + ## A trademark + "trade" + db.trademark.class.attribute = + + ## Identifies the class of trade mark + attribute class { db.trademark.class.enumeration } + db.trademark.role.attribute = attribute role { text } + db.trademark.attlist = + db.trademark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.trademark.class.attribute? + db.trademark = + + ## A trademark + element trademark { db.trademark.attlist, db._text } +} +div { + db.wordasword.role.attribute = attribute role { text } + db.wordasword.attlist = + db.wordasword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.wordasword = + + ## A word meant specifically as a word and not representing anything else + element wordasword { db.wordasword.attlist, db._text } +} +div { + db.footnoteref.role.attribute = attribute role { text } + db.footnoteref.label.attribute = db.label.attribute + db.footnoteref.attlist = + db.footnoteref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.footnoteref.label.attribute? + db.footnoteref = + + ## A cross reference to a footnote (a footnote mark) + [ + s:pattern [ + s:title [ "Footnote reference type constraint" ] + s:rule [ + context = "db:footnoteref" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on footnoteref must point to a footnote." + ] + ] + ] + ] + element footnoteref { db.footnoteref.attlist, empty } +} +div { + db.xref.role.attribute = attribute role { text } + db.xref.xrefstyle.attribute = db.xrefstyle.attribute + db.xref.endterm.attribute = db.endterm.attribute + db.xref.attlist = + db.xref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.xref.xrefstyle.attribute? + & db.xref.endterm.attribute? + db.xref = + + ## A cross reference to another part of the document + element xref { db.xref.attlist, empty } +} +div { + db.link.role.attribute = attribute role { text } + db.link.xrefstyle.attribute = db.xrefstyle.attribute + db.link.endterm.attribute = db.endterm.attribute + db.link.attlist = + db.link.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.link.xrefstyle.attribute? + & db.link.endterm.attribute? + db.link = + + ## A hypertext link + element link { db.link.attlist, db.all.inlines* } +} +div { + db.olink.role.attribute = attribute role { text } + db.olink.xrefstyle.attribute = db.xrefstyle.attribute + db.olink.localinfo.attribute = + + ## Holds additional information that may be used by the application when resolving the link + attribute localinfo { text } + db.olink.targetdoc.attribute = + + ## Specifies the URI of the document in which the link target appears + attribute targetdoc { xsd:anyURI } + db.olink.targetptr.attribute = + + ## Specifies the location of the link target in the document + attribute targetptr { text } + db.olink.type.attribute = + + ## Identifies application-specific customization of the link behavior + attribute type { text } + db.olink.attlist = + db.common.attributes + & db.olink.targetdoc.attribute? + & db.olink.role.attribute? + & db.olink.xrefstyle.attribute? + & db.olink.localinfo.attribute? + & db.olink.targetptr.attribute? + & db.olink.type.attribute? + db.olink = + + ## A link that addresses its target indirectly + element olink { db.olink.attlist, db.all.inlines* } +} +div { + db.anchor.role.attribute = attribute role { text } + db.anchor.attlist = + db.anchor.role.attribute? & db.common.idreq.attributes + db.anchor = + + ## A spot in the document + element anchor { db.anchor.attlist, empty } +} +div { + db.alt.role.attribute = attribute role { text } + db.alt.attlist = db.alt.role.attribute? & db.common.attributes + db.alt = + + ## A text-only annotation, often used for accessibility + element alt { db.alt.attlist, (text | db.inlinemediaobject)* } +} +div { + db.formalgroup.fgstyle.attribute = + + ## Holds style of formalgroup - this can be used to specify desired layout and positioning of subfigures + attribute fgstyle { text } + db.formalgroup.role.attribute = attribute role { text } + db.formalgroup.pgwide.attribute = db.pgwide.attribute + db.formalgroup.floatstyle.attribute = db.floatstyle.attribute + db.formalgroup.attlist = + db.formalgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.formalgroup.floatstyle.attribute? + & db.formalgroup.pgwide.attribute? + & db.formalgroup.fgstyle.attribute? + db.formalgroup.info = db._info.title.onlyreq + db.formalgroup = + + ## A group of formal objects, for example subfigures + element formalgroup { + db.formalgroup.attlist, + db.formalgroup.info, + (db.figure+ | db.table+ | db.example+ | db.equation+) + } +} +db.status.attribute = + + ## Identifies the editorial or publication status of the element on which it occurs + attribute status { text } +db.toplevel.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | (db.sect1+, db.simplesect*) + | db.refentry+ +db.toplevel.blocks.or.sections = + (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections +db.recursive.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | db.refentry+ +db.recursive.blocks.or.sections = + (db.all.blocks+, db.recursive.sections?) | db.recursive.sections +db.divisions = db.part | db.reference +db.components = + db.dedication + | db.acknowledgements + | db.preface + | db.chapter + | db.appendix + | db.article + | db.colophon +db.navigation.components = + notAllowed | db.glossary | db.bibliography | db.index | db.toc +db.component.contentmodel = + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* +db.setindex.components = notAllowed | db.setindex +db.toc.components = notAllowed | db.toc +db.set.components = db.set | db.book | db.article +div { + db.set.status.attribute = db.status.attribute + db.set.role.attribute = attribute role { text } + db.set.attlist = + db.set.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.set.status.attribute? + db.set.info = db._info.title.req + db.set = + + ## A collection of books + element set { + db.set.attlist, + db.set.info, + db.toc.components?, + db.set.components+, + db.setindex.components? + } +} +db.book.components = + (db.navigation.components | db.components | db.divisions)* | db.topic* +div { + db.book.status.attribute = db.status.attribute + db.book.role.attribute = attribute role { text } + db.book.attlist = + db.book.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.book.status.attribute? + db.book.info = db._info + db.book = + + ## A book + element book { db.book.attlist, db.book.info, db.book.components } +} +div { + db.dedication.status.attribute = db.status.attribute + db.dedication.role.attribute = attribute role { text } + db.dedication.attlist = + db.dedication.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.dedication.status.attribute? + db.dedication.info = db._info + db.dedication = + + ## The dedication of a book or other component + element dedication { + db.dedication.attlist, db.dedication.info, db.all.blocks+ + } +} +div { + db.acknowledgements.status.attribute = db.status.attribute + db.acknowledgements.role.attribute = attribute role { text } + db.acknowledgements.attlist = + db.acknowledgements.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.acknowledgements.status.attribute? + db.acknowledgements.info = db._info + db.acknowledgements = + + ## Acknowledgements of a book or other component + element acknowledgements { + db.acknowledgements.attlist, + db.acknowledgements.info, + db.all.blocks+ + } +} +div { + db.colophon.status.attribute = db.status.attribute + db.colophon.role.attribute = attribute role { text } + db.colophon.attlist = + db.colophon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.colophon.status.attribute? + db.colophon.info = db._info + db.colophon = + + ## Text at the back of a book describing facts about its production + element colophon { + db.colophon.attlist, + db.colophon.info, + ((db.all.blocks+, db.simplesect*) + | (db.all.blocks*, db.simplesect+)) + } +} +db.appendix.contentmodel = db.component.contentmodel | db.topic+ +div { + db.appendix.status.attribute = db.status.attribute + db.appendix.role.attribute = attribute role { text } + db.appendix.attlist = + db.appendix.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.appendix.status.attribute? + db.appendix.info = db._info.title.req + db.appendix = + + ## An appendix in a book or article + element appendix { + db.appendix.attlist, db.appendix.info, db.appendix.contentmodel? + } +} +db.chapter.contentmodel = db.component.contentmodel | db.topic+ +div { + db.chapter.status.attribute = db.status.attribute + db.chapter.role.attribute = attribute role { text } + db.chapter.attlist = + db.chapter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.chapter.status.attribute? + db.chapter.info = db._info.title.req + db.chapter = + + ## A chapter, as of a book + element chapter { + db.chapter.attlist, db.chapter.info, db.chapter.contentmodel? + } +} +db.part.components = + (db.navigation.components | db.components) + | (db.refentry | db.reference) +db.part.contentmodel = db.part.components+ | db.topic+ +div { + db.part.status.attribute = db.status.attribute + db.part.role.attribute = attribute role { text } + db.part.attlist = + db.part.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.part.status.attribute? + db.part.info = db._info.title.req + db.part = + + ## A division in a book + element part { + db.part.attlist, + db.part.info, + db.partintro?, + db.part.contentmodel? + } +} +div { + db.preface.status.attribute = db.status.attribute + db.preface.role.attribute = attribute role { text } + db.preface.attlist = + db.preface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.preface.status.attribute? + db.preface.info = db._info.title.req + db.preface = + + ## Introductory matter preceding the first chapter of a book + element preface { + db.preface.attlist, db.preface.info, db.component.contentmodel? + } +} +div { + db.partintro.status.attribute = db.status.attribute + db.partintro.role.attribute = attribute role { text } + db.partintro.attlist = + db.partintro.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.partintro.status.attribute? + db.partintro.info = db._info + db.partintro = + + ## An introduction to the contents of a part + element partintro { + db.partintro.attlist, + db.partintro.info, + db.toplevel.blocks.or.sections? + } +} +div { + db.section.status.attribute = db.status.attribute + db.section.class.enumeration = + + ## A section of legal obligations or requirements + "legal" + db.section.class-enum.attribute = + + ## Identifies the nature of the section + attribute class { db.section.class.enumeration } + db.section.class-other.attribute = + + ## Identifies a non-standard section class + attribute otherclass { xsd:NMTOKEN } + db.section.class-other.attributes = + + ## Indicates that a non-standard section class is applied + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.section.class-other.attribute + db.section.class.attribute = + db.section.class-enum.attribute | db.section.class-other.attributes + db.section.role.attribute = attribute role { text } + db.section.attlist = + db.section.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.section.status.attribute? + & db.section.class.attribute? + db.section.info = db._info.title.req + db.section = + + ## A recursive section + element section { + db.section.attlist, + db.section.info, + db.navigation.components*, + db.recursive.blocks.or.sections?, + db.navigation.components* + } +} +div { + db.simplesect.status.attribute = db.status.attribute + db.simplesect.role.attribute = attribute role { text } + db.simplesect.attlist = + db.simplesect.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.simplesect.status.attribute? + db.simplesect.info = db._info.title.req + db.simplesect = + + ## A section of a document with no subdivisions + element simplesect { + db.simplesect.attlist, db.simplesect.info, db.all.blocks* + } +} +db.article.components = db.toplevel.sections +db.article.navcomponents = + db.navigation.components + | db.acknowledgements + | db.dedication + | db.appendix + | db.colophon +div { + db.article.status.attribute = db.status.attribute + db.article.class.enumeration = + + ## A collection of frequently asked questions. + "faq" + | + ## An article in a journal or other periodical. + "journalarticle" + | + ## A description of a product. + "productsheet" + | + ## A specification. + "specification" + | + ## A technical report. + "techreport" + | + ## A white paper. + "whitepaper" + db.article.class-enum.attribute = + + ## Identifies the nature of the article + attribute class { db.article.class.enumeration } + db.article.class-other.attribute = + + ## Identifies the nature of the non-standard article + attribute otherclass { xsd:NMTOKEN } + db.article.class-other.attributes = + + ## Identifies the nature of the article + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.article.class-other.attribute + db.article.class.attribute = + db.article.class-enum.attribute | db.article.class-other.attributes + db.article.role.attribute = attribute role { text } + db.article.attlist = + db.article.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.article.status.attribute? + & db.article.class.attribute? + db.article.info = db._info.title.req + db.article = + + ## An article + element article { + db.article.attlist, + db.article.info, + db.article.navcomponents*, + ((db.all.blocks+, db.article.components?) + | db.article.components), + db.article.navcomponents* + } +} +db.annotations.attribute = + + ## Identifies one or more annotations that apply to this element + attribute annotations { text } +div { + db.annotation.role.attribute = attribute role { text } + db.annotation.annotates.attribute = + + ## Identifies one or more elements to which this annotation applies + attribute annotates { text } + db.annotation.attlist = + db.annotation.role.attribute? + & db.annotation.annotates.attribute? + & db.common.attributes + db.annotation.info = db._info.title.only + db.annotation = + + ## An annotation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:annotation" + s:assert [ + test = "not(.//db:annotation)" + "annotation must not occur among the children or descendants of annotation" + ] + ] + ] + ] + element annotation { + db.annotation.attlist, db.annotation.info, db.all.blocks+ + } +} +db.xlink.extended.type.attribute = + + ## Identifies the XLink extended link type + [ + s:pattern [ + s:title [ "XLink extended placement" ] + s:rule [ + context = "*[@xlink:type='extended']" + s:assert [ + test = "not(parent::*[@xlink:type='extended'])" + "An XLink extended type element may not occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink extended link type + "extended" + } +db.xlink.locator.type.attribute = + + ## Identifies the XLink locator link type + [ + s:pattern [ + s:title [ "XLink locator placement" ] + s:rule [ + context = "*[@xlink:type='locator']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink locator type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink locator link type + "locator" + } +db.xlink.arc.type.attribute = + + ## Identifies the XLink arc link type + [ + s:pattern [ + s:title [ "XLink arc placement" ] + s:rule [ + context = "*[@xlink:type='arc']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink arc type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink arc link type + "arc" + } +db.xlink.resource.type.attribute = + + ## Identifies the XLink resource link type + [ + s:pattern [ + s:title [ "XLink resource placement" ] + s:rule [ + context = "*[@xlink:type='resource']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink resource type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink resource link type + "resource" + } +db.xlink.title.type.attribute = + + ## Identifies the XLink title link type + [ + s:pattern [ + s:title [ "XLink title placement" ] + s:rule [ + context = "*[@xlink:type='title']" + s:assert [ + test = + "parent::*[@xlink:type='extended'] or parent::*[@xlink:type='locator'] or parent::*[@xlink:type='arc']" + "An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink title link type + "title" + } +db.xlink.extended.link.attributes = + db.xlink.extended.type.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? +db.xlink.locator.link.attributes = + db.xlink.locator.type.attribute + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? +db.xlink.arc.link.attributes = + db.xlink.arc.type.attribute + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? +db.xlink.resource.link.attributes = + db.xlink.resource.type.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? +db.xlink.title.link.attributes = db.xlink.title.type.attribute +db.xlink.from.attribute = + + ## Specifies the XLink traversal-from + attribute xlink:from { xsd:NMTOKEN } +db.xlink.label.attribute = + + ## Specifies the XLink label + attribute xlink:label { xsd:NMTOKEN } +db.xlink.to.attribute = + + ## Specifies the XLink traversal-to + attribute xlink:to { xsd:NMTOKEN } +div { + db.extendedlink.role.attribute = attribute role { text } + db.extendedlink.attlist = + db.extendedlink.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "extended" ] + attribute xlink:type { + + ## An XLink extended link + "extended" + }? + & db.xlink.role.attribute? + & db.xlink.title.attribute? + db.extendedlink = + + ## An XLink extended link + element extendedlink { + db.extendedlink.attlist, (db.locator | db.arc | db.link)+ + } +} +div { + db.locator.role.attribute = attribute role { text } + db.locator.attlist = + db.locator.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "locator" ] + attribute xlink:type { + + ## An XLink locator link + "locator" + }? + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? + db.locator = + + ## An XLink locator in an extendedlink + element locator { db.locator.attlist, empty } +} +div { + db.arc.role.attribute = attribute role { text } + db.arc.attlist = + db.arc.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "arc" ] + attribute xlink:type { + + ## An XLink arc link + "arc" + }? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? + db.arc = + + ## An XLink arc in an extendedlink + element arc { db.arc.attlist, empty } +} +db.sect1.sections = + ((db.sect2+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect1.status.attribute = db.status.attribute + db.sect1.class.attribute = db.section.class.attribute + db.sect1.role.attribute = attribute role { text } + db.sect1.attlist = + db.sect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect1.status.attribute? + & db.sect1.class.attribute? + db.sect1.info = db._info.title.req + db.sect1 = + + ## A top-level section of document + element sect1 { + db.sect1.attlist, + db.sect1.info, + db.navigation.components*, + ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections)?, + db.navigation.components* + } +} +db.sect2.sections = + ((db.sect3+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect2.status.attribute = db.status.attribute + db.sect2.class.attribute = db.section.class.attribute + db.sect2.role.attribute = attribute role { text } + db.sect2.attlist = + db.sect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect2.status.attribute? + & db.sect2.class.attribute? + db.sect2.info = db._info.title.req + db.sect2 = + + ## A subsection within a sect1 + element sect2 { + db.sect2.attlist, + db.sect2.info, + db.navigation.components*, + ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections)?, + db.navigation.components* + } +} +db.sect3.sections = + ((db.sect4+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect3.status.attribute = db.status.attribute + db.sect3.class.attribute = db.section.class.attribute + db.sect3.role.attribute = attribute role { text } + db.sect3.attlist = + db.sect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect3.status.attribute? + & db.sect3.class.attribute? + db.sect3.info = db._info.title.req + db.sect3 = + + ## A subsection within a sect2 + element sect3 { + db.sect3.attlist, + db.sect3.info, + db.navigation.components*, + ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections)?, + db.navigation.components* + } +} +db.sect4.sections = + ((db.sect5+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect4.status.attribute = db.status.attribute + db.sect4.class.attribute = db.section.class.attribute + db.sect4.role.attribute = attribute role { text } + db.sect4.attlist = + db.sect4.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect4.status.attribute? + & db.sect4.class.attribute? + db.sect4.info = db._info.title.req + db.sect4 = + + ## A subsection within a sect3 + element sect4 { + db.sect4.attlist, + db.sect4.info, + db.navigation.components*, + ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections)?, + db.navigation.components* + } +} +db.sect5.sections = db.simplesect+ | db.refentry+ +div { + db.sect5.status.attribute = db.status.attribute + db.sect5.class.attribute = db.section.class.attribute + db.sect5.role.attribute = attribute role { text } + db.sect5.attlist = + db.sect5.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect5.status.attribute? + & db.sect5.class.attribute? + db.sect5.info = db._info.title.req + db.sect5 = + + ## A subsection within a sect4 + element sect5 { + db.sect5.attlist, + db.sect5.info, + db.navigation.components*, + ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections)?, + db.navigation.components* + } +} +db.toplevel.refsection = db.refsection+ | db.refsect1+ +db.secondlevel.refsection = db.refsection+ | db.refsect2+ +db.reference.components = db.refentry +div { + db.reference.status.attribute = db.status.attribute + db.reference.role.attribute = attribute role { text } + db.reference.attlist = + db.reference.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.reference.status.attribute? + & db.label.attribute? + db.reference.info = db._info.title.req + db.reference = + + ## A collection of reference entries + element reference { + db.reference.attlist, + db.reference.info, + db.partintro?, + db.reference.components* + } +} +div { + db.refentry.status.attribute = db.status.attribute + db.refentry.role.attribute = attribute role { text } + db.refentry.attlist = + db.refentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refentry.status.attribute? + & db.label.attribute? + db.refentry.info = db._info.title.forbidden + db.refentry = + + ## A reference page (originally a UNIX man-style reference page) + element refentry { + db.refentry.attlist, + db.indexterm*, + db.refentry.info, + db.refmeta?, + db.refnamediv+, + db.refsynopsisdiv?, + db.toplevel.refsection + } +} +div { + db.refmeta.role.attribute = attribute role { text } + db.refmeta.attlist = + db.refmeta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refmeta = + + ## Meta-information for a reference entry + element refmeta { + db.refmeta.attlist, + db.indexterm*, + db.refentrytitle, + db.manvolnum?, + db.refmiscinfo*, + db.indexterm* + } +} +db.refmiscinfo.class.enumeration = + + ## The name of the software product or component to which this topic applies + "source" + | + ## The version of the software product or component to which this topic applies + "version" + | + ## The section title of the reference page (e.g., User Commands) + "manual" + | + ## The section title of the reference page (believed synonymous with "manual" but in wide use) + "sectdesc" + | + ## The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + "software" +db.refmiscinfo.class-enum.attribute = + + ## Identifies the kind of miscellaneous information + attribute class { db.refmiscinfo.class.enumeration }? +db.refmiscinfo.class-other.attribute = + + ## Identifies the nature of non-standard miscellaneous information + attribute otherclass { text } +db.refmiscinfo.class-other.attributes = + + ## Identifies the kind of miscellaneious information + attribute class { + + ## Indicates that the information is some 'other' kind. + "other" + } + & db.refmiscinfo.class-other.attribute +db.refmiscinfo.class.attribute = + db.refmiscinfo.class-enum.attribute + | db.refmiscinfo.class-other.attributes +div { + db.refmiscinfo.role.attribute = attribute role { text } + db.refmiscinfo.attlist = + db.refmiscinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refmiscinfo.class.attribute? + db.refmiscinfo = + + ## Meta-information for a reference entry other than the title and volume number + element refmiscinfo { db.refmiscinfo.attlist, db._text } +} +div { + db.refnamediv.role.attribute = attribute role { text } + db.refnamediv.attlist = + db.refnamediv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refnamediv = + + ## The name, purpose, and classification of a reference page + element refnamediv { + db.refnamediv.attlist, + db.refdescriptor?, + db.refname+, + db.refpurpose, + db.refclass* + } +} +div { + db.refdescriptor.role.attribute = attribute role { text } + db.refdescriptor.attlist = + db.refdescriptor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refdescriptor = + + ## A description of the topic of a reference page + element refdescriptor { db.refdescriptor.attlist, db.all.inlines* } +} +div { + db.refname.role.attribute = attribute role { text } + db.refname.attlist = + db.refname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refname = + + ## The name of (one of) the subject(s) of a reference page + element refname { db.refname.attlist, db.all.inlines* } +} +div { + db.refpurpose.role.attribute = attribute role { text } + db.refpurpose.attlist = + db.refpurpose.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refpurpose = + + ## A short (one sentence) synopsis of the topic of a reference page + element refpurpose { db.refpurpose.attlist, db.all.inlines* } +} +div { + db.refclass.role.attribute = attribute role { text } + db.refclass.attlist = + db.refclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refclass = + + ## The scope or other indication of applicability of a reference entry + element refclass { db.refclass.attlist, (text | db.application)* } +} +div { + db.refsynopsisdiv.role.attribute = attribute role { text } + db.refsynopsisdiv.attlist = + db.refsynopsisdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refsynopsisdiv.info = db._info + db.refsynopsisdiv = + + ## A syntactic synopsis of the subject of the reference page + element refsynopsisdiv { + db.refsynopsisdiv.attlist, + db.refsynopsisdiv.info, + ((db.all.blocks+, db.secondlevel.refsection?) + | db.secondlevel.refsection) + } +} +div { + db.refsection.status.attribute = db.status.attribute + db.refsection.role.attribute = attribute role { text } + db.refsection.attlist = + db.refsection.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refsection.status.attribute? + & db.label.attribute? + db.refsection.info = db._info.title.req + db.refsection = + + ## A recursive section in a refentry + element refsection { + db.refsection.attlist, + db.refsection.info, + ((db.all.blocks+, db.refsection*) | db.refsection+) + } +} +db.refsect1.sections = db.refsect2+ +div { + db.refsect1.status.attribute = db.status.attribute + db.refsect1.role.attribute = attribute role { text } + db.refsect1.attlist = + db.refsect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect1.status.attribute? + db.refsect1.info = db._info.title.req + db.refsect1 = + + ## A major subsection of a reference entry + element refsect1 { + db.refsect1.attlist, + db.refsect1.info, + ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections) + } +} +db.refsect2.sections = db.refsect3+ +div { + db.refsect2.status.attribute = db.status.attribute + db.refsect2.role.attribute = attribute role { text } + db.refsect2.attlist = + db.refsect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect2.status.attribute? + db.refsect2.info = db._info.title.req + db.refsect2 = + + ## A subsection of a refsect1 + element refsect2 { + db.refsect2.attlist, + db.refsect2.info, + ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections) + } +} +div { + db.refsect3.status.attribute = db.status.attribute + db.refsect3.role.attribute = attribute role { text } + db.refsect3.attlist = + db.refsect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect3.status.attribute? + db.refsect3.info = db._info.title.req + db.refsect3 = + + ## A subsection of a refsect2 + element refsect3 { + db.refsect3.attlist, db.refsect3.info, db.all.blocks+ + } +} +db.glossary.inlines = + db.firstterm | db.glossterm | db._firstterm | db._glossterm +db.baseform.attribute = + + ## Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + attribute baseform { text }? +div { + db.glosslist.role.attribute = attribute role { text } + db.glosslist.attlist = + db.glosslist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.glosslist.info = db._info.title.only + db.glosslist = + + ## A wrapper for a list of glossary entries + element glosslist { + db.glosslist.attlist, + db.glosslist.info?, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.glossentry.role.attribute = attribute role { text } + db.glossentry.sortas.attribute = + + ## Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + attribute sortas { text } + db.glossentry.attlist = + db.glossentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossentry.sortas.attribute? + db.glossentry = + + ## An entry in a glossary or glosslist + element glossentry { + db.glossentry.attlist, + db.glossterm, + db.acronym?, + db.abbrev?, + db.indexterm*, + (db.glosssee | db.glossdef+) + } +} +div { + db.glossdef.role.attribute = attribute role { text } + db.glossdef.subject.attribute = + + ## Specifies a list of keywords for the definition + attribute subject { text } + db.glossdef.attlist = + db.glossdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossdef.subject.attribute? + db.glossdef = + + ## A definition in a glossentry + element glossdef { + db.glossdef.attlist, db.all.blocks+, db.glossseealso* + } +} +div { + db.glosssee.role.attribute = attribute role { text } + db.glosssee.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glosssee.attlist = + db.glosssee.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glosssee.otherterm.attribute? + db.glosssee = + + ## A cross-reference from one glossentry + ## to another + [ + s:pattern [ + s:title [ "Glosssary 'see' type constraint" ] + s:rule [ + context = "db:glosssee[@otherterm]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glosssee must point to a glossentry." + ] + ] + ] + ] + element glosssee { db.glosssee.attlist, db.all.inlines* } +} +div { + db.glossseealso.role.attribute = attribute role { text } + db.glossseealso.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glossseealso.attlist = + db.glossseealso.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossseealso.otherterm.attribute? + db.glossseealso = + + ## A cross-reference from one glossentry to another + [ + s:pattern [ + s:title [ "Glossary 'seealso' type constraint" ] + s:rule [ + context = "db:glossseealso[@otherterm]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glossseealso must point to a glossentry." + ] + ] + ] + ] + element glossseealso { db.glossseealso.attlist, db.all.inlines* } +} +div { + db.firstterm.role.attribute = attribute role { text } + db.firstterm.attlist = + db.firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.firstterm = + + ## The first occurrence of a term + [ + s:pattern [ + s:title [ "Glossary 'firstterm' type constraint" ] + s:rule [ + context = "db:firstterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + ] + ] + ] + element firstterm { db.firstterm.attlist, db.all.inlines* } +} +div { + db._firstterm.role.attribute = attribute role { text } + db._firstterm.attlist = + db._firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db._firstterm = + + ## The first occurrence of a term, with limited content + [ + s:pattern [ + s:title [ "Glossary 'firstterm' type constraint" ] + s:rule [ + context = "db:firstterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + ] + ] + ] + element firstterm { db._firstterm.attlist, db._text } +} +div { + db.glossterm.role.attribute = attribute role { text } + db.glossterm.attlist = + db.glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.glossterm = + + ## A glossary term + [ + s:pattern [ + s:title [ "Glossary 'glossterm' type constraint" ] + s:rule [ + context = "db:glossterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + ] + ] + ] + element glossterm { db.glossterm.attlist, db.all.inlines* } +} +div { + db._glossterm.role.attribute = attribute role { text } + db._glossterm.attlist = + db._glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db._glossterm = + + ## A glossary term + [ + s:pattern [ + s:title [ "Glossary 'glossterm' type constraint" ] + s:rule [ + context = "db:glossterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + ] + ] + ] + element glossterm { db._glossterm.attlist, db._text } +} +div { + db.glossary.status.attribute = db.status.attribute + db.glossary.role.attribute = attribute role { text } + db.glossary.attlist = + db.glossary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossary.status.attribute? + db.glossary.info = db._info + db.glossary = + + ## A glossary + element glossary { + db.glossary.attlist, + db.glossary.info, + db.all.blocks*, + (db.glossdiv* | db.glossentry*), + db.bibliography? + } +} +div { + db.glossdiv.status.attribute = db.status.attribute + db.glossdiv.role.attribute = attribute role { text } + db.glossdiv.attlist = + db.glossdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossdiv.status.attribute? + db.glossdiv.info = db._info.title.req + db.glossdiv = + + ## A division in a glossary + element glossdiv { + db.glossdiv.attlist, + db.glossdiv.info, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.termdef.role.attribute = attribute role { text } + db.termdef.attlist = + db.termdef.role.attribute? + & db.glossentry.sortas.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.termdef = + + ## An inline definition of a term + [ + s:pattern [ + s:title [ "Glossary term definition constraint" ] + s:rule [ + context = "db:termdef" + s:assert [ + test = "count(db:firstterm) = 1" + "A termdef must contain exactly one firstterm" + ] + ] + ] + ] + element termdef { db.termdef.attlist, db.all.inlines* } +} +db.relation.attribute = + + ## Identifies the relationship between the bibliographic elemnts + attribute relation { text } +div { + db.biblioentry.role.attribute = attribute role { text } + db.biblioentry.pubwork.attribute = db.biblio.pubwork.attribute + db.biblioentry.attlist = + db.biblioentry.role.attribute? + & db.biblioentry.pubwork.attribute? + & db.common.attributes + & db.common.linking.attributes + db.biblioentry = + + ## A raw entry in a bibliography + element biblioentry { + db.biblioentry.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomixed.role.attribute = attribute role { text } + db.bibliomixed.pubwork.attribute = db.biblio.pubwork.attribute + db.bibliomixed.attlist = + db.bibliomixed.role.attribute? + & db.bibliomixed.pubwork.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomixed = + + ## A cooked entry in a bibliography + element bibliomixed { + db.bibliomixed.attlist, + ((db._text + | db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)* + | (db._text + | db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)*) + } +} +div { + db.biblioset.relation.attribute = db.relation.attribute + db.biblioset.role.attribute = attribute role { text } + db.biblioset.attlist = + db.biblioset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblioset.relation.attribute? + db.biblioset = + + ## A raw container for related bibliographic information + element biblioset { + db.biblioset.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomset.relation.attribute = db.relation.attribute + db.bibliomset.role.attribute = attribute role { text } + db.bibliomset.attlist = + db.bibliomset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliomset.relation.attribute? + db.bibliomset = + + ## A cooked container for related bibliographic information + element bibliomset { + db.bibliomset.attlist, + ((db._text + | db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)* + | (db._text + | db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)*) + } +} +div { + db.bibliomisc.role.attribute = attribute role { text } + db.bibliomisc.attlist = + db.bibliomisc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomisc = + + ## Untyped bibliographic information + element bibliomisc { db.bibliomisc.attlist, db._text } +} +div { + db.bibliography.status.attrib = db.status.attribute + db.bibliography.role.attribute = attribute role { text } + db.bibliography.attlist = + db.bibliography.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliography.status.attrib? + db.bibliography.info = db._info + db.bibliography = + + ## A bibliography + element bibliography { + db.bibliography.attlist, + db.bibliography.info, + db.all.blocks*, + (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+) + } +} +div { + db.bibliodiv.status.attrib = db.status.attribute + db.bibliodiv.role.attribute = attribute role { text } + db.bibliodiv.attlist = + db.bibliodiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliodiv.status.attrib? + db.bibliodiv.info = db._info.title.req + db.bibliodiv = + + ## A section of a bibliography + element bibliodiv { + db.bibliodiv.attlist, + db.bibliodiv.info, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.bibliolist.role.attribute = attribute role { text } + db.bibliolist.attlist = + db.bibliolist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliolist.info = db._info.title.only + db.bibliolist = + + ## A wrapper for a list of bibliography entries + element bibliolist { + db.bibliolist.attlist, + db.bibliolist.info?, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.biblioref.role.attribute = attribute role { text } + db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute + db.biblioref.endterm.attribute = db.endterm.attribute + db.biblioref.units.attribute = + + ## The units (for example, pages) used to identify the beginning and ending of a reference. + attribute units { xsd:token } + db.biblioref.begin.attribute = + + ## Identifies the beginning of a reference; the location within the work that is being referenced. + attribute begin { xsd:token } + db.biblioref.end.attribute = + + ## Identifies the end of a reference. + attribute end { xsd:token } + db.biblioref.attlist = + db.biblioref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.biblioref.xrefstyle.attribute? + & db.biblioref.endterm.attribute? + & db.biblioref.units.attribute? + & db.biblioref.begin.attribute? + & db.biblioref.end.attribute? + db.biblioref = + + ## A cross-reference to a bibliographic entry + element biblioref { db.biblioref.attlist, empty } +} +db.significance.enumeration = + + ## Normal + "normal" + | + ## Preferred + "preferred" +db.significance.attribute = + + ## Specifies the significance of the term + attribute significance { db.significance.enumeration } +db.zone.attribute = + + ## Specifies the IDs of the elements to which this term applies + attribute zone { xsd:IDREFS } +db.indexterm.pagenum.attribute = + + ## Indicates the page on which this index term occurs in some version of the printed document + attribute pagenum { text } +db.scope.enumeration = + + ## All indexes + "all" + | + ## The global index (as for a combined index of a set of books) + "global" + | + ## The local index (the index for this document only) + "local" +db.scope.attribute = + + ## Specifies the scope of the index term + attribute scope { db.scope.enumeration } +db.sortas.attribute = + + ## Specifies the string by which the term is to be sorted; if unspecified, the term content is used + attribute sortas { text } +db.index.type.attribute = + + ## Specifies the target index for this term + attribute type { text } +div { + db.itermset.role.attribute = attribute role { text } + db.itermset.attlist = + db.itermset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.itermset = + + ## A set of index terms in the meta-information of a document + element itermset { db.itermset.attlist, db.indexterm.singular+ } +} +db.indexterm.contentmodel = + (db.primary, + (db.secondary, + ((db.tertiary, (db.see | db.seealso+)?)? + | (db.see | db.seealso+)?)?)?)?, + (db.see | db.seealso+)? +div { + db.indexterm.singular.role.attribute = attribute role { text } + db.indexterm.singular.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## A singular index term + "singular" + } + db.indexterm.singular.attlist = + db.indexterm.singular.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.singular.class.attribute? + db.indexterm.singular = + + ## A wrapper for an indexed term + element indexterm { + db.indexterm.singular.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.startofrange.role.attribute = attribute role { text } + db.indexterm.startofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The start of a range + "startofrange" + } + db.indexterm.startofrange.attlist = + db.indexterm.startofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.startofrange.class.attribute + db.indexterm.startofrange = + + ## A wrapper for an indexed term that covers a range + element indexterm { + db.indexterm.startofrange.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.endofrange.role.attribute = attribute role { text } + db.indexterm.endofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The end of a range + "endofrange" + } + db.indexterm.endofrange.startref.attribute = + + ## Points to the start of the range + attribute startref { xsd:IDREF } + db.indexterm.endofrange.attlist = + db.indexterm.endofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.indexterm.endofrange.class.attribute + & db.indexterm.endofrange.startref.attribute + db.indexterm.endofrange = + + ## Identifies the end of a range associated with an indexed term + [ + s:pattern [ + s:title [ "Indexterm 'startref' type constraint" ] + s:rule [ + context = "db:indexterm[@startref]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@startref]) = 'indexterm' and namespace-uri(//*[@xml:id=current()/@startref]) = 'http://docbook.org/ns/docbook'" + "@startref on indexterm must point to an indexterm." + ] + s:assert [ + test = + "//*[@xml:id=current()/@startref]/@class='startofrange'" + "@startref on indexterm must point to a startofrange indexterm." + ] + ] + ] + ] + element indexterm { db.indexterm.endofrange.attlist, empty } +} +div { + db.indexterm = + db.indexterm.singular + | db.indexterm.startofrange + | db.indexterm.endofrange +} +div { + db.primary.role.attribute = attribute role { text } + db.primary.attlist = + db.primary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.primary = + + ## The primary word or phrase under which an index term should be sorted + element primary { db.primary.attlist, db.all.inlines* } +} +div { + db.secondary.role.attribute = attribute role { text } + db.secondary.attlist = + db.secondary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.secondary = + + ## A secondary word or phrase in an index term + element secondary { db.secondary.attlist, db.all.inlines* } +} +div { + db.tertiary.role.attribute = attribute role { text } + db.tertiary.attlist = + db.tertiary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.tertiary = + + ## A tertiary word or phrase in an index term + element tertiary { db.tertiary.attlist, db.all.inlines* } +} +div { + db.see.role.attribute = attribute role { text } + db.see.class.attribute = + + ## Identifies the class of 'see' + attribute class { + + ## Normal + "normal" + | + ## See 'under' + "under" + } + db.see.attlist = + db.see.role.attribute? + & db.see.class.attribute? + & db.common.attributes + & db.common.linking.attributes + db.see = + + ## Part of an index term directing the reader instead to another entry in the index + element see { db.see.attlist, db.all.inlines* } +} +div { + db.seealso.role.attribute = attribute role { text } + db.seealso.class.attribute = + + ## Identifies the class of 'seealso' + attribute class { + + ## Normal + "normal" + | + ## See 'under' + "under" + } + db.seealso.attlist = + db.seealso.role.attribute? + & db.seealso.class.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seealso = + + ## Part of an index term directing the reader also to another entry in the index + element seealso { db.seealso.attlist, db.all.inlines* } +} +div { + db.index.status.attribute = db.status.attribute + db.index.role.attribute = attribute role { text } + db.index.attlist = + db.index.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.index.status.attribute? + & db.index.type.attribute? + db.index.info = db._info + # Yes, db.indexdiv* and db.indexentry*; that way an is valid. + # Authors can use an empty index to indicate where a generated index should + # appear. + db.index = + + ## An index to a book or part of a book + element index { + db.index.attlist, + db.index.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry* | db.segmentedlist) + } +} +div { + db.setindex.status.attribute = db.status.attribute + db.setindex.role.attribute = attribute role { text } + db.setindex.attlist = + db.setindex.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.setindex.status.attribute? + & db.index.type.attribute? + db.setindex.info = db._info + db.setindex = + + ## An index to a set of books + element setindex { + db.setindex.attlist, + db.setindex.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry*) + } +} +div { + db.indexdiv.status.attribute = db.status.attribute + db.indexdiv.role.attribute = attribute role { text } + db.indexdiv.attlist = + db.indexdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.indexdiv.status.attribute? + db.indexdiv.info = db._info.title.req + db.indexdiv = + + ## A division in an index + element indexdiv { + db.indexdiv.attlist, + db.indexdiv.info, + db.all.blocks*, + (db.indexentry+ | db.segmentedlist) + } +} +div { + db.indexentry.role.attribute = attribute role { text } + db.indexentry.attlist = + db.indexentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.indexentry = + + ## An entry in an index + element indexentry { + db.indexentry.attlist, + db.primaryie, + (db.seeie | db.seealsoie)*, + (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)* + } +} +div { + db.primaryie.role.attribute = attribute role { text } + db.primaryie.attlist = + db.primaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.primaryie = + + ## A primary term in an index entry, not in the text + element primaryie { db.primaryie.attlist, db.all.inlines* } +} +div { + db.secondaryie.role.attribute = attribute role { text } + db.secondaryie.attlist = + db.secondaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.secondaryie = + + ## A secondary term in an index entry, rather than in the text + element secondaryie { db.secondaryie.attlist, db.all.inlines* } +} +div { + db.tertiaryie.role.attribute = attribute role { text } + db.tertiaryie.attlist = + db.tertiaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.tertiaryie = + + ## A tertiary term in an index entry, rather than in the text + element tertiaryie { db.tertiaryie.attlist, db.all.inlines* } +} +div { + db.seeie.role.attribute = attribute role { text } + db.seeie.attlist = + db.seeie.role.attribute? + & db.common.attributes + & db.linkend.attribute? + db.seeie = + + ## A See + ## entry in an index, rather than in the text + element seeie { db.seeie.attlist, db.all.inlines* } +} +div { + db.seealsoie.role.attribute = attribute role { text } + db.seealsoie.attlist = + db.seealsoie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.seealsoie = + + ## A See also + ## entry in an index, rather than in the text + element seealsoie { db.seealsoie.attlist, db.all.inlines* } +} +db.toc.pagenum.attribute = + + ## Indicates the page on which this element occurs in some version of the printed document + attribute pagenum { text } +div { + db.toc.role.attribute = attribute role { text } + db.toc.attlist = + db.toc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.toc.info = db._info.title.only + db.toc = + + ## A table of contents + element toc { + db.toc.attlist, + db.toc.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)* + } +} +div { + db.tocdiv.role.attribute = attribute role { text } + db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute + db.tocdiv.attlist = + db.tocdiv.role.attribute? + & db.common.attributes + & db.tocdiv.pagenum.attribute? + & db.linkend.attribute? + db.tocdiv.info = db._info + db.tocdiv = + + ## A division in a table of contents + element tocdiv { + db.tocdiv.attlist, + db.tocdiv.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)+ + } +} +div { + db.tocentry.role.attribute = attribute role { text } + db.tocentry.pagenum.attribute = db.toc.pagenum.attribute + db.tocentry.attlist = + db.tocentry.role.attribute? + & db.common.attributes + & db.tocentry.pagenum.attribute? + & db.linkend.attribute? + db.tocentry = + + ## A component title in a table of contents + element tocentry { db.tocentry.attlist, db.all.inlines* } +} +db.task.info = db._info.title.req +div { + db.task.role.attribute = attribute role { text } + db.task.attlist = + db.task.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.task = + + ## A task to be completed + element task { + db.task.attlist, + db.task.info, + db.tasksummary?, + db.taskprerequisites?, + db.procedure+, + db.example*, + db.taskrelated? + } +} +div { + db.tasksummary.role.attribute = attribute role { text } + db.tasksummary.attlist = + db.tasksummary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tasksummary.info = db._info.title.only + db.tasksummary = + + ## A summary of a task + element tasksummary { + db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+ + } +} +div { + db.taskprerequisites.role.attribute = attribute role { text } + db.taskprerequisites.attlist = + db.taskprerequisites.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskprerequisites.info = db._info.title.only + db.taskprerequisites = + + ## The prerequisites for a task + element taskprerequisites { + db.taskprerequisites.attlist, + db.taskprerequisites.info, + db.all.blocks+ + } +} +div { + db.taskrelated.role.attribute = attribute role { text } + db.taskrelated.attlist = + db.taskrelated.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskrelated.info = db._info.title.only + db.taskrelated = + + ## Information related to a task + element taskrelated { + db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+ + } +} +db.area.units.enumeration = + + ## Coordinates expressed as a pair of CALS graphic coordinates. + "calspair" + | + ## Coordinates expressed as a line and column. + "linecolumn" + | + ## Coordinates expressed as a pair of lines and columns. + "linecolumnpair" + | + ## Coordinates expressed as a line range. + "linerange" +db.area.units-enum.attribute = + + ## Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair + ## for graphics and linecolumn + ## for line-oriented elements. + attribute units { db.area.units.enumeration }? +db.area.units-other.attributes = + + ## Indicates that non-standard units are used for this area + ## . In this case otherunits + ## must be specified. + attribute units { + + ## Coordinates expressed in some non-standard units. + "other" + }?, + + ## Identifies the units used in the coords + ## attribute when the units + ## attribute is other + ## . This attribute is forbidden otherwise. + attribute otherunits { xsd:NMTOKEN } +db.area.units.attribute = + db.area.units-enum.attribute | db.area.units-other.attributes +div { + db.calloutlist.role.attribute = attribute role { text } + db.calloutlist.attlist = + db.calloutlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.calloutlist.info = db._info.title.only + db.calloutlist = + + ## A list of callout + ## s + element calloutlist { + db.calloutlist.attlist, + db.calloutlist.info, + db.all.blocks*, + db.callout+ + } +} +div { + db.callout.role.attribute = attribute role { text } + db.callout.arearefs.attribute = + + ## Identifies the areas described by this callout. + attribute arearefs { xsd:IDREFS } + db.callout.attlist = + db.callout.role.attribute? + & db.common.attributes + & db.callout.arearefs.attribute + # This requires an XPath 2.0 compatible Schematron processor + db.callout = + + ## A called out + ## description of a marked area + [ + s:pattern [ + s:title [ "Callout cross reference constraint" ] + s:rule [ + context = "db:callout[@arearefs]" + s:assert [ + test = + "every $id in tokenize(current()/@arearefs) satisfies (every $ar in //*[@xml:id = $id] satisfies (local-name($ar) = ('areaset', 'area', 'co') and namespace-uri($ar) = 'http://docbook.org/ns/docbook'))" + "@arearefs on callout must point to a areaset, area, or co." + ] + ] + ] + ] + element callout { db.callout.attlist, db.all.blocks+ } +} +div { + db.programlistingco.role.attribute = attribute role { text } + db.programlistingco.attlist = + db.programlistingco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.programlistingco.info = db._info.title.forbidden + db.programlistingco = + + ## A program listing with associated areas used in callouts + element programlistingco { + db.programlistingco.attlist, + db.programlistingco.info, + db.areaspec, + db.programlisting, + db.calloutlist* + } +} +div { + db.areaspec.role.attribute = attribute role { text } + db.areaspec.attlist = + db.areaspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.area.units.attribute + db.areaspec = + + ## A collection of regions in a graphic or code example + element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ } +} +div { + db.area.role.attribute = attribute role { text } + db.area.linkends.attribute = + + ## Point to the callout + ## s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + attribute linkends { xsd:IDREFS } + db.area.label.attribute = + + ## Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + attribute label { text } + db.area.coords.attribute = + + ## Provides the coordinates of the area. The coordinates must be interpreted using the units + ## specified. + attribute coords { text } + db.area.attlist = + db.area.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.xlink.simple.link.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area = + + ## A region defined for a callout in a graphic or code example + element area { db.area.attlist, db.alt? } +} +div { + # The only difference is that xml:id is optional + db.area.inareaset.attlist = + db.area.role.attribute? + & db.common.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.xlink.simple.link.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area.inareaset = + + ## A region defined for a callout in a graphic or code example + element area { db.area.inareaset.attlist, db.alt? } +} +div { + db.areaset.role.attribute = attribute role { text } + db.areaset.linkends.attribute = db.linkends.attribute + db.areaset.label.attribute = db.label.attribute + db.areaset.attlist = + db.areaset.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.areaset.linkends.attribute | db.xlink.simple.link.attributes)? + & db.areaset.label.attribute? + db.areaset = + + ## A set of related areas in a graphic or code example + element areaset { db.areaset.attlist, db.area.inareaset+ } +} +div { + db.screenco.role.attribute = attribute role { text } + db.screenco.attlist = + db.screenco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenco.info = db._info.title.forbidden + db.screenco = + + ## A screen with associated areas used in callouts + element screenco { + db.screenco.attlist, + db.screenco.info, + db.areaspec, + db.screen, + db.calloutlist* + } +} +div { + db.imageobjectco.role.attribute = attribute role { text } + db.imageobjectco.attlist = + db.imageobjectco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobjectco.info = db._info.title.forbidden + db.imageobjectco = + + ## A wrapper for an image object with callouts + element imageobjectco { + db.imageobjectco.attlist, + db.imageobjectco.info, + db.areaspec, + db.imageobject+, + db.calloutlist* + } +} +div { + db.co.role.attribute = attribute role { text } + db.co.linkends.attribute = db.linkends.attribute + db.co.label.attribute = db.label.attribute + db.co.attlist = + db.co.role.attribute? + & db.common.idreq.attributes + & db.co.linkends.attribute? + & db.co.label.attribute? + db.co = + + ## The location of a callout embedded in text + element co { db.co.attlist, empty } +} +div { + db.coref.role.attribute = attribute role { text } + db.coref.label.attribute = db.label.attribute + db.coref.attlist = + db.coref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.coref.label.attribute? + db.coref = + + ## A cross reference to a co + element coref { db.coref.attlist, empty } +} +div { + db.productionset.role.attribute = attribute role { text } + db.productionset.attlist = + db.productionset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productionset.info = db._info.title.only + db.productionset = + + ## A set of EBNF productions + element productionset { + db.productionset.attlist, + db.productionset.info, + (db.production | db.productionrecap)+ + } +} +div { + db.production.role.attribute = attribute role { text } + db.production.attlist = + db.production.role.attribute? + & db.common.idreq.attributes + & db.common.linking.attributes + db.production = + + ## A production in a set of EBNF productions + element production { + db.production.attlist, db.lhs, db.rhs+, db.constraint* + } +} +div { + db.lhs.role.attribute = attribute role { text } + db.lhs.attlist = + db.lhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lhs = + + ## The left-hand side of an EBNF production + element lhs { db.lhs.attlist, text } +} +div { + db.rhs.role.attribute = attribute role { text } + db.rhs.attlist = + db.rhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.rhs = + + ## The right-hand side of an EBNF production + element rhs { + db.rhs.attlist, + (text | db.nonterminal | db.lineannotation | db.sbr)* + } +} +div { + db.nonterminal.role.attribute = attribute role { text } + db.nonterminal.def.attribute = + + ## Specifies a URI that points to a production + ## where the nonterminal + ## is defined + attribute def { xsd:anyURI } + db.nonterminal.attlist = + db.nonterminal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.nonterminal.def.attribute + db.nonterminal = + + ## A non-terminal in an EBNF production + element nonterminal { db.nonterminal.attlist, text } +} +div { + db.constraint.role.attribute = attribute role { text } + db.constraint.attlist = + db.constraint.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.constraint = + + ## A constraint in an EBNF production + [ + s:pattern [ + s:title [ "Constraint cross reference constraint" ] + s:rule [ + context = "db:constraint[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'constraintdef' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on constraint must point to a constraintdef." + ] + ] + ] + ] + element constraint { db.constraint.attlist, empty } +} +div { + db.productionrecap.role.attribute = attribute role { text } + db.productionrecap.attlist = + db.productionrecap.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.productionrecap = + + ## A cross-reference to an EBNF production + [ + s:pattern [ + s:title [ "Production recap cross reference constraint" ] + s:rule [ + context = "db:productionrecap[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'production' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on productionrecap must point to a production." + ] + ] + ] + ] + element productionrecap { db.productionrecap.attlist, empty } +} +div { + db.constraintdef.role.attribute = attribute role { text } + db.constraintdef.attlist = + db.constraintdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.constraintdef.info = db._info.title.only + db.constraintdef = + + ## The definition of a constraint in an EBNF production + element constraintdef { + db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+ + } +} +db.char.attribute = + + ## Specifies the alignment character when align + ## is set to char + ## . + attribute char { text } +db.charoff.attribute = + + ## Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + ## when align + ## is set to char + ## . + attribute charoff { + xsd:decimal { minExclusive = "0" maxExclusive = "100" } + } +db.frame.attribute = + + ## Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + attribute frame { + + ## Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + "all" + | + ## Frame only the bottom of the table. + "bottom" + | + ## Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + "none" + | + ## Frame the left and right sides of the table. + "sides" + | + ## Frame the top of the table. + "top" + | + ## Frame the top and bottom of the table. + "topbot" + } +db.colsep.attribute = + + ## Specifies the presence or absence of the column separator + attribute colsep { + + ## No column separator rule. + "0" + | + ## Provide a column separator rule on the right + "1" + } +db.rowsep.attribute = + + ## Specifies the presence or absence of the row separator + attribute rowsep { + + ## No row separator rule. + "0" + | + ## Provide a row separator rule below + "1" + } +db.orient.attribute = + + ## Specifies the orientation of the table + attribute orient { + + ## 90 degrees counter-clockwise from the rest of the text flow. + "land" + | + ## The same orientation as the rest of the text flow. + "port" + } +db.tabstyle.attribute = + + ## Specifies the table style + attribute tabstyle { text } +db.rowheader.attribute = + + ## Indicates whether or not the entries in the first column should be considered row headers + attribute rowheader { + + ## Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + "firstcol" + | + ## Indicates that row headers are identified by use of the headers attribute on entries in the table. + "headers" + | + ## Indicates that entries in the first column have no special significance with respect to column headers. + "norowheader" + } +db.align.attribute = + + ## Specifies the horizontal alignment of text in an entry. + attribute align { + + ## Centered. + "center" + | + ## Aligned on a particular character. + "char" + | + ## Left and right justified. + "justify" + | + ## Left justified. + "left" + | + ## Right justified. + "right" + } +db.valign.attribute = + + ## Specifies the vertical alignment of text in an entry. + attribute valign { + + ## Aligned on the bottom of the entry. + "bottom" + | + ## Aligned in the middle. + "middle" + | + ## Aligned at the top of the entry. + "top" + } +db.specify-col-by-colname.attributes = + + ## Specifies a column specification by name. + attribute colname { text } +db.specify-col-by-namest.attributes = + + ## Specifies a starting column by name. + attribute namest { text } +db.specify-span-by-spanspec.attributes = + + ## Specifies a span by name. + attribute spanname { text } +db.specify-span-directly.attributes = + + ## Specifies a starting column by name. + attribute namest { text } + & + ## Specifies an ending column by name. + attribute nameend { text } +db.column-spec.attributes = + db.specify-col-by-colname.attributes + | db.specify-col-by-namest.attributes + | db.specify-span-by-spanspec.attributes + | db.specify-span-directly.attributes +db.colname.attribute = + + ## Provides a name for a column specification. + attribute colname { text } +db.spanname.attribute = + + ## Provides a name for a span specification. + attribute spanname { text } +div { + db.tgroup.role.attribute = attribute role { text } + db.tgroup.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.tgroup.cols.attribute = + + ## The number of columns in the table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.tgroup.attlist = + db.tgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.tgroup.tgroupstyle.attribute? + & db.tgroup.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.tgroup = + + ## A wrapper for the main content of a table, or part of a table + element tgroup { + db.tgroup.attlist, + db.colspec*, + db.spanspec*, + db.cals.thead?, + db.cals.tfoot?, + db.cals.tbody + } +} +div { + db.colspec.role.attribute = attribute role { text } + db.colspec.colnum.attribute = + + ## The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + attribute colnum { xsd:positiveInteger } + db.colspec.colwidth.attribute = + + ## Specifies the width of the column. + attribute colwidth { text } + db.colspec.attlist = + db.colspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.colspec.colnum.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.colspec.colwidth.attribute? + & db.charoff.attribute? + & db.colname.attribute? + & db.rowsep.attribute? + & db.align.attribute? + & db.rowheader.attribute? + db.colspec = + + ## Specifications for a column in a table + element colspec { db.colspec.attlist, empty } +} +div { + db.spanspec.role.attribute = attribute role { text } + db.spanspec.namest.attribute = + + ## Specifies a starting column by name. + attribute namest { text } + db.spanspec.nameend.attribute = + + ## Specifies an ending column by name. + attribute nameend { text } + db.spanspec.attlist = + db.spanspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spanname.attribute + & db.spanspec.namest.attribute + & db.spanspec.nameend.attribute + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.spanspec = + + ## Formatting information for a spanned column in a table + element spanspec { db.spanspec.attlist, empty } +} +div { + db.cals.thead.role.attribute = attribute role { text } + db.cals.thead.attlist = + db.cals.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.thead = + + ## A table header consisting of one or more rows + element thead { db.cals.thead.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tfoot.role.attribute = attribute role { text } + db.cals.tfoot.attlist = + db.cals.tfoot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tfoot = + + ## A table footer consisting of one or more rows + element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tbody.role.attribute = attribute role { text } + db.cals.tbody.attlist = + db.cals.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.tbody.attlist, db.row+ } +} +div { + db.row.role.attribute = attribute role { text } + db.row.attlist = + db.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.row = + + ## A row in a table + element row { db.row.attlist, (db.entry | db.entrytbl)+ } +} +div { + db.entry.role.attribute = attribute role { text } + db.entry.morerows.attribute = + + ## Specifies the number of additional rows which this entry occupies. Defaults to zero. + attribute morerows { xsd:integer } + db.entry.rotate.attribute = + + ## Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + attribute rotate { + + ## Do not rotate the cell. + "0" + | + ## Rotate the cell 90 degrees counter-clockwise. + "1" + } + db.entry.scope.attribute = + + ## Specifies the scope of a header. + attribute scope { + + ## Applies to the row + "row" + | + ## Applies to the column + "col" + | + ## Applies to the row group + "rowgroup" + | + ## Applies to the column group + "colgroup" + } + db.entry.headers.attribute = + + ## Specifies the entry or entries which serve as headers for this element. + attribute headers { xsd:IDREFS } + db.entry.attlist = + db.entry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.entry.morerows.attribute? + & db.column-spec.attributes? + & db.rowsep.attribute? + & db.entry.rotate.attribute? + & db.align.attribute? + & db.entry.scope.attribute? + & db.entry.headers.attribute? + db.entry = + + ## A cell in a table + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:entry" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of entry" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:entry" + s:assert [ + test = "not(.//db:informaltable)" + "informaltable must not occur among the children or descendants of entry" + ] + ] + ] + ] + element entry { + db.entry.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.entrytbl.role.attribute = attribute role { text } + db.entrytbl.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.entrytbl.cols.attribute = + + ## The number of columns in the entry table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.entrytbl.attlist = + db.entrytbl.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.column-spec.attributes? + & db.entrytbl.tgroupstyle.attribute? + & db.entrytbl.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.entrytbl = + + ## A subtable appearing in place of an entry in a table + element entrytbl { + db.entrytbl.attlist, + db.colspec*, + db.spanspec*, + db.cals.entrytbl.thead?, + db.cals.entrytbl.tbody + } +} +div { + db.cals.entrytbl.thead.role.attribute = attribute role { text } + db.cals.entrytbl.thead.attlist = + db.cals.entrytbl.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.thead = + + ## A table header consisting of one or more rows + element thead { + db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+ + } +} +div { + db.cals.entrytbl.tbody.role.attribute = attribute role { text } + db.cals.entrytbl.tbody.attlist = + db.cals.entrytbl.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ } +} +div { + db.entrytbl.row.role.attribute = attribute role { text } + db.entrytbl.row.attlist = + db.entrytbl.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.entrytbl.row = + + ## A row in a table + element row { db.entrytbl.row.attlist, db.entry+ } +} +div { + db.cals.table.role.attribute = attribute role { text } + db.cals.table.label.attribute = db.label.attribute + db.cals.table.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.cals.table.attlist = + db.cals.table.role.attribute? + & db.cals.table.type.attribute? + & db.cals.table.label.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & + ## Indicates if the short or long title should be used in a List of Tables + attribute shortentry { + + ## Indicates that the full title should be used. + "0" + | + ## Indicates that the short short title (titleabbrev) should be used. + "1" + }? + & + ## Indicates if the table should appear in a List of Tables + attribute tocentry { + + ## Indicates that the table should not occur in the List of Tables. + "0" + | + ## Indicates that the table should appear in the List of Tables. + "1" + }? + & db.rowheader.attribute? + db.cals.table.info = db._info.title.onlyreq + db.cals.table = + + ## A formal table in a document + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of table" + ] + ] + ] + ] + element table { + db.cals.table.attlist, + db.cals.table.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +div { + db.cals.informaltable.role.attribute = attribute role { text } + db.cals.informaltable.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.cals.informaltable.attlist = + db.cals.informaltable.role.attribute? + & db.cals.informaltable.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & db.rowheader.attribute? + db.cals.informaltable.info = db._info.title.forbidden + db.cals.informaltable = + + ## A table without a title + element informaltable { + db.cals.informaltable.attlist, + db.cals.informaltable.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +db.html.coreattrs = + + ## This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + attribute class { text }? + & + ## This attribute specifies style information for the current element. + attribute style { text }? + & + ## This attribute offers advisory information about the element for which it is set. + attribute title { text }? +db.html.i18n = + + ## This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + attribute lang { text }? +db.html.events = + + ## Occurs when the pointing device button is clicked over an element. + attribute onclick { text }? + & + ## Occurs when the pointing device button is double clicked over an element. + attribute ondblclick { text }? + & + ## Occurs when the pointing device button is pressed over an element. + attribute onmousedown { text }? + & + ## Occurs when the pointing device button is released over an element. + attribute onmouseup { text }? + & + ## Occurs when the pointing device is moved onto an element. + attribute onmouseover { text }? + & + ## Occurs when the pointing device is moved while it is over an element. + attribute onmousemove { text }? + & + ## Occurs when the pointing device is moved away from an element. + attribute onmouseout { text }? + & + ## Occurs when a key is pressed and released over an element. + attribute onkeypress { text }? + & + ## Occurs when a key is pressed down over an element. + attribute onkeydown { text }? + & + ## Occurs when a key is released over an element. + attribute onkeyup { text }? +db.html.attrs = + db.common.attributes + & db.html.coreattrs + & db.html.i18n + & db.html.events +db.html.cellhalign = + + ## Specifies the alignment of data and the justification of text in a cell. + attribute align { + + ## Left-flush data/Left-justify text. This is the default value for table data. + "left" + | + ## Center data/Center-justify text. This is the default value for table headers. + "center" + | + ## Right-flush data/Right-justify text. + "right" + | + ## Double-justify text. + "justify" + | + ## Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + "char" + }? + & + ## This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + attribute char { text }? + & + ## When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + attribute charoff { + xsd:integer >> a:documentation [ "An explicit offset." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage offset." ] + }? +db.html.cellvalign = + + ## Specifies the vertical position of data within a cell. + attribute valign { + + ## Cell data is flush with the top of the cell. + "top" + | + ## Cell data is centered vertically within the cell. This is the default value. + "middle" + | + ## Cell data is flush with the bottom of the cell. + "bottom" + | + ## All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + "baseline" + }? +db.html.table.attributes = + + ## Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + attribute summary { text }? + & + ## Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + attribute width { + xsd:integer >> a:documentation [ "An explicit width." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage width." ] + }? + & + ## Specifies the width (in pixels only) of the frame around a table. + attribute border { xsd:nonNegativeInteger }? + & + ## Specifies which sides of the frame surrounding a table will be visible. + attribute frame { + + ## No sides. This is the default value. + "void" + | + ## The top side only. + "above" + | + ## The bottom side only. + "below" + | + ## The top and bottom sides only. + "hsides" + | + ## The left-hand side only. + "lhs" + | + ## The right-hand side only. + "rhs" + | + ## The right and left sides only. + "vsides" + | + ## All four sides. + "box" + | + ## All four sides. + "border" + }? + & + ## Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + attribute rules { + + ## No rules. This is the default value. + "none" + | + ## Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + "groups" + | + ## Rules will appear between rows only. + "rows" + | + ## Rules will appear between columns only. + "cols" + | + ## Rules will appear between all rows and columns. + "all" + }? + & + ## Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + attribute cellspacing { + xsd:integer >> a:documentation [ "An explicit spacing." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage spacing." ] + }? + & + ## Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + attribute cellpadding { + xsd:integer >> a:documentation [ "An explicit padding." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage padding." ] + }? +db.html.tablecell.attributes = + + ## Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + attribute abbr { text }? + & + ## This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + attribute axis { text }? + & + ## Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + attribute headers { text }? + & + ## Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + attribute scope { + + ## The current cell provides header information for the rest of the row that contains it + "row" + | + ## The current cell provides header information for the rest of the column that contains it. + "col" + | + ## The header cell provides header information for the rest of the row group that contains it. + "rowgroup" + | + ## The header cell provides header information for the rest of the column group that contains it. + "colgroup" + }? + & + ## Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all rows from the current row to the last row of the table section (thead + ## , tbody + ## , or tfoot + ## ) in which the cell is defined. + attribute rowspan { xsd:nonNegativeInteger }? + & + ## Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all columns from the current column to the last column of the column group (colgroup + ## ) in which the cell is defined. + attribute colspan { xsd:nonNegativeInteger }? +db.html.table.info = db._info.title.forbidden +db.html.table.model = + db.html.table.info?, + db.html.caption, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +db.html.informaltable.info = db._info.title.forbidden +db.html.informaltable.model = + db.html.informaltable.info?, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +div { + db.html.table.role.attribute = attribute role { text } + db.html.table.label.attribute = db.label.attribute + db.html.table.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.html.table.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.table.role.attribute? + & db.html.table.type.attribute? + & db.html.table.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.table = + + ## A formal (captioned) HTML table in a document + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of table" + ] + ] + ] + ] + element table { db.html.table.attlist, db.html.table.model } +} +div { + db.html.informaltable.role.attribute = attribute role { text } + db.html.informaltable.label.attribute = db.label.attribute + db.html.informaltable.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.html.informaltable.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.informaltable.role.attribute? + & db.html.informaltable.type.attribute? + & db.html.informaltable.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.informaltable = + + ## An HTML table without a title + element informaltable { + db.html.informaltable.attlist, db.html.informaltable.model + } +} +div { + db.html.caption.attlist = db.html.attrs + db.html.caption = + + ## An HTML table caption + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caption" + ] + ] + ] + ] + element caption { db.html.caption.attlist, db.all.inlines* } +} +div { + db.html.col.attlist = + db.html.attrs + & + ## This attribute, whose value must be an integer > 0, specifies the number of columns spanned + ## by the col + ## element; the col + ## element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + ## element shares its attributes with the next N-1 columns. + attribute span { xsd:nonNegativeInteger }? + & + ## Specifies a default width for each column spanned by the current col + ## element. It has the same meaning as the width + ## attribute for the colgroup + ## element and overrides it. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.col = + + ## Specifications for a column in an HTML table + element col { db.html.col.attlist, empty } +} +div { + db.html.colgroup.attlist = + db.html.attrs + & + ## This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + ## defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + ## element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + ## element contains one or more col + ## elements. + attribute span { xsd:nonNegativeInteger }? + & + ## This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + ## (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + ## will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + ## element. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.colgroup = + + ## A group of columns in an HTML table + element colgroup { db.html.colgroup.attlist, db.html.col* } +} +div { + db.html.thead.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.thead = + + ## A table header consisting of one or more rows in an HTML table + element thead { db.html.thead.attlist, db.html.tr+ } +} +div { + db.html.tfoot.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tfoot = + + ## A table footer consisting of one or more rows in an HTML table + element tfoot { db.html.tfoot.attlist, db.html.tr+ } +} +div { + db.html.tbody.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tbody = + + ## A wrapper for the rows of an HTML table or informal HTML table + element tbody { db.html.tbody.attlist, db.html.tr+ } +} +div { + db.html.tr.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tr = + + ## A row in an HTML table + element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ } +} +div { + db.html.th.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.th = + + ## A table header entry in an HTML table + element th { + db.html.th.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.html.td.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.td = + + ## A table entry in an HTML table + element td { + db.html.td.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.msgset.role.attribute = attribute role { text } + db.msgset.attlist = + db.msgset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgset.info = db._info.title.only + db.msgset = + + ## A detailed set of messages, usually error messages + element msgset { + db.msgset.attlist, + db.msgset.info, + (db.msgentry+ | db.simplemsgentry+) + } +} +div { + db.msgentry.role.attribute = attribute role { text } + db.msgentry.attlist = + db.msgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgentry = + + ## A wrapper for an entry in a message set + element msgentry { + db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan* + } +} +div { + db.simplemsgentry.role.attribute = attribute role { text } + db.simplemsgentry.msgaud.attribute = + + ## The audience to which the message relevant + attribute msgaud { text } + db.simplemsgentry.msgorig.attribute = + + ## The origin of the message + attribute msgorig { text } + db.simplemsgentry.msglevel.attribute = + + ## The level of importance or severity of a message + attribute msglevel { text } + db.simplemsgentry.attlist = + db.simplemsgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplemsgentry.msgaud.attribute? + & db.simplemsgentry.msgorig.attribute? + & db.simplemsgentry.msglevel.attribute? + db.simplemsgentry = + + ## A wrapper for a simpler entry in a message set + element simplemsgentry { + db.simplemsgentry.attlist, db.msgtext, db.msgexplan+ + } +} +div { + db.msg.role.attribute = attribute role { text } + db.msg.attlist = + db.msg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msg.info = db._info.title.only + db.msg = + + ## A message in a message set + element msg { + db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)* + } +} +div { + db.msgmain.role.attribute = attribute role { text } + db.msgmain.attlist = + db.msgmain.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgmain.info = db._info.title.only + db.msgmain = + + ## The primary component of a message in a message set + element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext } +} +div { + db.msgsub.role.attribute = attribute role { text } + db.msgsub.attlist = + db.msgsub.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgsub.info = db._info.title.only + db.msgsub = + + ## A subcomponent of a message in a message set + element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext } +} +div { + db.msgrel.role.attribute = attribute role { text } + db.msgrel.attlist = + db.msgrel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgrel.info = db._info.title.only + db.msgrel = + + ## A related component of a message in a message set + element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext } +} +div { + db.msgtext.role.attribute = attribute role { text } + db.msgtext.attlist = + db.msgtext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgtext = + + ## The actual text of a message component in a message set + element msgtext { db.msgtext.attlist, db.all.blocks+ } +} +div { + db.msginfo.role.attribute = attribute role { text } + db.msginfo.attlist = + db.msginfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msginfo = + + ## Information about a message in a message set + element msginfo { + db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)* + } +} +div { + db.msglevel.role.attribute = attribute role { text } + db.msglevel.attlist = + db.msglevel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msglevel = + + ## The level of importance or severity of a message in a message set + element msglevel { db.msglevel.attlist, db._text } +} +div { + db.msgorig.role.attribute = attribute role { text } + db.msgorig.attlist = + db.msgorig.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgorig = + + ## The origin of a message in a message set + element msgorig { db.msgorig.attlist, db._text } +} +div { + db.msgaud.role.attribute = attribute role { text } + db.msgaud.attlist = + db.msgaud.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgaud = + + ## The audience to which a message in a message set is relevant + element msgaud { db.msgaud.attlist, db._text } +} +div { + db.msgexplan.role.attribute = attribute role { text } + db.msgexplan.attlist = + db.msgexplan.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgexplan.info = db._info.title.only + db.msgexplan = + + ## Explanatory material relating to a message in a message set + element msgexplan { + db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+ + } +} +div { + db.qandaset.role.attribute = attribute role { text } + db.qandaset.defaultlabel.enumeration = + + ## No labels + "none" + | + ## Numeric labels + "number" + | + ## "Q:" and "A:" labels + "qanda" + db.qandaset.defaultlabel.attribute = + + ## Specifies the default labelling + attribute defaultlabel { db.qandaset.defaultlabel.enumeration } + db.qandaset.attlist = + db.qandaset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.qandaset.defaultlabel.attribute? + db.qandaset.info = db._info.title.only + db.qandaset = + + ## A question-and-answer set + element qandaset { + db.qandaset.attlist, + db.qandaset.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandadiv.role.attribute = attribute role { text } + db.qandadiv.attlist = + db.qandadiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandadiv.info = db._info.title.only + db.qandadiv = + + ## A titled division in a qandaset + element qandadiv { + db.qandadiv.attlist, + db.qandadiv.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandaentry.role.attribute = attribute role { text } + db.qandaentry.attlist = + db.qandaentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandaentry.info = db._info.title.only + db.qandaentry = + + ## A question/answer set within a qandaset + element qandaentry { + db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer* + } +} +div { + db.question.role.attribute = attribute role { text } + db.question.attlist = + db.question.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.question = + + ## A question in a qandaset + element question { db.question.attlist, db.label?, db.all.blocks+ } +} +div { + db.answer.role.attribute = attribute role { text } + db.answer.attlist = + db.answer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.answer = + + ## An answer to a question posed in a qandaset + element answer { db.answer.attlist, db.label?, db.all.blocks+ } +} +div { + db.label.role.attribute = attribute role { text } + db.label.attlist = + db.label.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.label = + + ## A label on a question or answer + element label { db.label.attlist, db._text } +} +db.math.inlines = db.inlineequation +db.equation.content = (db.mediaobject+ | db.mathphrase+) | db._any.mml+ +db.inlineequation.content = + (db.inlinemediaobject+ | db.mathphrase+) | db._any.mml+ +div { + db.equation.role.attribute = attribute role { text } + db.equation.label.attribute = db.label.attribute + db.equation.type.attribute = + + ## Identifies the type of equation + attribute type { text }? + db.equation.attlist = + db.equation.role.attribute? + & db.equation.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.equation.label.attribute? + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.equation.info = db._info.title.only + db.equation = + + ## A displayed mathematical equation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of equation" + ] + ] + ] + ] + element equation { + db.equation.attlist, + db.equation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.informalequation.role.attribute = attribute role { text } + db.informalequation.type.attribute = + + ## Identifies the type of equation + attribute type { text }? + db.informalequation.attlist = + db.informalequation.role.attribute? + & db.informalequation.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.informalequation.info = db._info.title.forbidden + db.informalequation = + + ## A displayed mathematical equation without a title + element informalequation { + db.informalequation.attlist, + db.informalequation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.inlineequation.role.attribute = attribute role { text } + db.inlineequation.attlist = + db.inlineequation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlineequation = + + ## A mathematical equation or expression occurring inline + element inlineequation { + db.inlineequation.attlist, db.alt?, db.inlineequation.content + } +} +div { + db.mathphrase.role.attribute = attribute role { text } + db.mathphrase.attlist = + db.mathphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mathphrase = + + ## A mathematical phrase that can be represented with ordinary text and a small amount of markup + element mathphrase { + db.mathphrase.attlist, + (db._text | db.ubiq.inlines | db._emphasis)* + } +} +db.imagedata.mathml.content = db._any.mml +div { + db.imagedata.mathml.role.attribute = attribute role { text } + db.imagedata.mathml.attlist = + db.imagedata.mathml.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is MathML + attribute format { + + ## Specifies MathML. + "mathml" + }? + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.mathml.info = db._info.title.forbidden + db.imagedata.mathml = + + ## A MathML expression in a media object + element imagedata { + db.imagedata.mathml.attlist, + db.imagedata.mathml.info, + db.imagedata.mathml.content+ + } +} +div { + db._any.mml = + + ## Any element from the MathML namespace + element mml:* { (db._any.attribute | text | db._any)* } +} +db.imagedata.svg.content = db._any.svg +div { + db.imagedata.svg.role.attribute = attribute role { text } + db.imagedata.svg.attlist = + db.imagedata.svg.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is SVG + attribute format { + + ## Specifies SVG. + "svg" + }? + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.svg.info = db._info.title.forbidden + db.imagedata.svg = + + ## An SVG drawing in a media object + element imagedata { + db.imagedata.svg.attlist, + db.imagedata.svg.info, + db.imagedata.svg.content+ + } +} +div { + db._any.svg = + + ## Any element from the SVG namespace + element svg:* { (db._any.attribute | text | db._any)* } +} +db.markup.inlines = + db.tag + | db.markup + | db.token + | db.symbol + | db.literal + | db.code + | db.constant + | db.email + | db.uri +div { + db.markup.role.attribute = attribute role { text } + db.markup.attlist = + db.markup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.markup = + + ## A string of formatting markup in text that is to be represented literally + element markup { db.markup.attlist, db._text } +} +div { + db.tag.role.attribute = attribute role { text } + db.tag.class.enumeration = + + ## An attribute + "attribute" + | + ## An attribute value + "attvalue" + | + ## An element + "element" + | + ## An empty element tag + "emptytag" + | + ## An end tag + "endtag" + | + ## A general entity + "genentity" + | + ## The local name part of a qualified name + "localname" + | + ## A namespace + "namespace" + | + ## A numeric character reference + "numcharref" + | + ## A parameter entity + "paramentity" + | + ## A processing instruction + "pi" + | + ## The prefix part of a qualified name + "prefix" + | + ## An SGML comment + "comment" + | + ## A start tag + "starttag" + | + ## An XML processing instruction + "xmlpi" + db.tag.class.attribute = + + ## Identifies the nature of the tag content + attribute class { db.tag.class.enumeration } + db.tag.namespace.attribute = + + ## Identifies the namespace of the tag content + attribute namespace { xsd:anyURI } + db.tag.attlist = + db.tag.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tag.class.attribute? + & db.tag.namespace.attribute? + db.tag = + + ## A component of XML (or SGML) markup + element tag { db.tag.attlist, (db._text | db.tag)* } +} +div { + db.symbol.class.attribute = + + ## Identifies the class of symbol + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.symbol.role.attribute = attribute role { text } + db.symbol.attlist = + db.symbol.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.symbol.class.attribute? + db.symbol = + + ## A name that is replaced by a value before processing + element symbol { db.symbol.attlist, db._text } +} +div { + db.token.role.attribute = attribute role { text } + db.token.attlist = + db.token.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.token = + + ## A unit of information + element token { db.token.attlist, db._text } +} +div { + db.literal.role.attribute = attribute role { text } + db.literal.attlist = + db.literal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.literal = + + ## Inline text that is some literal value + element literal { db.literal.attlist, db._text } +} +div { + code.language.attribute = + + ## Identifies the (computer) language of the code fragment + attribute language { text } + db.code.role.attribute = attribute role { text } + db.code.attlist = + db.code.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & code.language.attribute? + db.code = + + ## An inline code fragment + element code { + db.code.attlist, (db.programming.inlines | db._text)* + } +} +div { + db.constant.class.attribute = + + ## Identifies the class of constant + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.constant.role.attribute = attribute role { text } + db.constant.attlist = + db.constant.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.constant.class.attribute? + db.constant = + + ## A programming or system constant + element constant { db.constant.attlist, db._text } +} +div { + db.productname.role.attribute = attribute role { text } + db.productname.class.enumeration = + + ## A name with a copyright + "copyright" + | + ## A name with a registered copyright + "registered" + | + ## A name of a service + "service" + | + ## A name which is trademarked + "trade" + db.productname.class.attribute = + + ## Specifies the class of product name + attribute class { db.productname.class.enumeration } + db.productname.attlist = + db.productname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.productname.class.attribute? + db.productname = + + ## The formal name of a product + element productname { db.productname.attlist, db._text } +} +div { + db.productnumber.role.attribute = attribute role { text } + db.productnumber.attlist = + db.productnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productnumber = + + ## A number assigned to a product + element productnumber { db.productnumber.attlist, db._text } +} +div { + db.database.class.enumeration = + + ## An alternate or secondary key + "altkey" + | + ## A constraint + "constraint" + | + ## A data type + "datatype" + | + ## A field + "field" + | + ## A foreign key + "foreignkey" + | + ## A group + "group" + | + ## An index + "index" + | + ## The first or primary key + "key1" + | + ## An alternate or secondary key + "key2" + | + ## A name + "name" + | + ## The primary key + "primarykey" + | + ## A (stored) procedure + "procedure" + | + ## A record + "record" + | + ## A rule + "rule" + | + ## The secondary key + "secondarykey" + | + ## A table + "table" + | + ## A user + "user" + | + ## A view + "view" + db.database.class.attribute = + + ## Identifies the class of database artifact + attribute class { db.database.class.enumeration } + db.database.role.attribute = attribute role { text } + db.database.attlist = + db.database.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.database.class.attribute? + db.database = + + ## The name of a database, or part of a database + element database { db.database.attlist, db._text } +} +div { + db.application.class.enumeration = + + ## A hardware application + "hardware" + | + ## A software application + "software" + db.application.class.attribute = + + ## Identifies the class of application + attribute class { db.application.class.enumeration } + db.application.role.attribute = attribute role { text } + db.application.attlist = + db.application.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.application.class.attribute? + db.application = + + ## The name of a software program + element application { db.application.attlist, db._text } +} +div { + db.hardware.role.attribute = attribute role { text } + db.hardware.attlist = + db.hardware.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.hardware = + + ## A physical part of a computer system + element hardware { db.hardware.attlist, db._text } +} +db.gui.inlines = + db.guiicon + | db.guibutton + | db.guimenuitem + | db.guimenu + | db.guisubmenu + | db.guilabel + | db.menuchoice + | db.mousebutton +div { + db.guibutton.role.attribute = attribute role { text } + db.guibutton.attlist = + db.guibutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guibutton = + + ## The text on a button in a GUI + element guibutton { + db.guibutton.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guiicon.role.attribute = attribute role { text } + db.guiicon.attlist = + db.guiicon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guiicon = + + ## Graphic and/or text appearing as a icon in a GUI + element guiicon { + db.guiicon.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guilabel.role.attribute = attribute role { text } + db.guilabel.attlist = + db.guilabel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guilabel = + + ## The text of a label in a GUI + element guilabel { + db.guilabel.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenu.role.attribute = attribute role { text } + db.guimenu.attlist = + db.guimenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenu = + + ## The name of a menu in a GUI + element guimenu { + db.guimenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenuitem.role.attribute = attribute role { text } + db.guimenuitem.attlist = + db.guimenuitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenuitem = + + ## The name of a terminal menu item in a GUI + element guimenuitem { + db.guimenuitem.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guisubmenu.role.attribute = attribute role { text } + db.guisubmenu.attlist = + db.guisubmenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guisubmenu = + + ## The name of a submenu in a GUI + element guisubmenu { + db.guisubmenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.menuchoice.role.attribute = attribute role { text } + db.menuchoice.attlist = + db.menuchoice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.menuchoice = + + ## A selection or series of selections from a menu + element menuchoice { + db.menuchoice.attlist, + db.shortcut?, + (db.guibutton + | db.guiicon + | db.guilabel + | db.guimenu + | db.guimenuitem + | db.guisubmenu)+ + } +} +div { + db.mousebutton.role.attribute = attribute role { text } + db.mousebutton.attlist = + db.mousebutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mousebutton = + + ## The conventional name of a mouse button + element mousebutton { db.mousebutton.attlist, db._text } +} +db.keyboard.inlines = + db.keycombo + | db.keycap + | db.keycode + | db.keysym + | db.shortcut + | db.accel +div { + db.keycap.function.enumeration = + + ## The "Alt" key + "alt" + | + ## The "Alt Graph" key + "altgr" + | + ## The "Backspace" key + "backspace" + | + ## The "Command" key + "command" + | + ## The "Control" key + "control" + | + ## The "Delete" key + "delete" + | + ## The down arrow + "down" + | + ## The "End" key + "end" + | + ## The "Enter" key + "enter" + | + ## The "Escape" key + "escape" + | + ## The "Home" key + "home" + | + ## The "Insert" key + "insert" + | + ## The left arrow + "left" + | + ## The "Meta" key + "meta" + | + ## The "Option" key + "option" + | + ## The page down key + "pagedown" + | + ## The page up key + "pageup" + | + ## The right arrow + "right" + | + ## The "Return" key + "return" + | + ## The "Shift" key + "shift" + | + ## The spacebar + "space" + | + ## The "Tab" key + "tab" + | + ## The up arrow + "up" + db.keycap.function-enum.attribute = + + ## Identifies the function key + attribute function { db.keycap.function.enumeration }? + db.keycap.function-other.attributes = + + ## Identifies the function key + attribute function { + + ## Indicates a non-standard function key + "other" + }?, + + ## Specifies a keyword that identifies the non-standard key + attribute otherfunction { text } + db.keycap.function.attrib = + db.keycap.function-enum.attribute + | db.keycap.function-other.attributes + db.keycap.role.attribute = attribute role { text } + db.keycap.attlist = + db.keycap.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycap.function.attrib + db.keycap = + + ## The text printed on a key on a keyboard + element keycap { db.keycap.attlist, db._text } +} +div { + db.keycode.role.attribute = attribute role { text } + db.keycode.attlist = + db.keycode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keycode = + + ## The internal, frequently numeric, identifier for a key on a keyboard + element keycode { db.keycode.attlist, db._text } +} +db.keycombination.contentmodel = + (db.keycap | db.keycombo | db.keysym) | db.mousebutton +div { + db.keycombo.action.enumeration = + + ## A (single) mouse click. + "click" + | + ## A double mouse click. + "double-click" + | + ## A mouse or key press. + "press" + | + ## Sequential clicks or presses. + "seq" + | + ## Simultaneous clicks or presses. + "simul" + db.keycombo.action-enum.attribute = + + ## Identifies the nature of the action taken. If keycombo + ## contains more than one element, simul + ## is the default, otherwise there is no default. + attribute action { db.keycombo.action.enumeration }? + db.keycombo.action-other.attributes = + + ## Identifies the nature of the action taken + attribute action { + + ## Indicates a non-standard action + "other" + }?, + + ## Identifies the non-standard action in some unspecified way. + attribute otheraction { text } + db.keycombo.action.attrib = + db.keycombo.action-enum.attribute + | db.keycombo.action-other.attributes + db.keycombo.role.attribute = attribute role { text } + db.keycombo.attlist = + db.keycombo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycombo.action.attrib + db.keycombo = + + ## A combination of input actions + element keycombo { + db.keycombo.attlist, db.keycombination.contentmodel+ + } +} +div { + db.keysym.role.attribute = attribute role { text } + db.keysym.attlist = + db.keysym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keysym = + + ## The symbolic name of a key on a keyboard + element keysym { db.keysym.attlist, db._text } +} +div { + db.accel.role.attribute = attribute role { text } + db.accel.attlist = + db.accel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.accel = + + ## A graphical user interface (GUI) keyboard shortcut + element accel { db.accel.attlist, db._text } +} +div { + db.shortcut.action.attrib = db.keycombo.action.attrib + db.shortcut.role.attribute = attribute role { text } + db.shortcut.attlist = + db.shortcut.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.shortcut.action.attrib + db.shortcut = + + ## A key combination for an action that is also accessible through a menu + element shortcut { + db.shortcut.attlist, db.keycombination.contentmodel+ + } +} +db.os.inlines = + db.prompt + | db.envar + | db.filename + | db.command + | db.computeroutput + | db.userinput +db.computeroutput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines +db.userinput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines +db.prompt.inlines = db._text | db.co +div { + db.prompt.role.attribute = attribute role { text } + db.prompt.attlist = + db.prompt.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.prompt = + + ## A character or string indicating the start of an input field in a computer display + element prompt { db.prompt.attlist, db.prompt.inlines* } +} +div { + db.envar.role.attribute = attribute role { text } + db.envar.attlist = + db.envar.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.envar = + + ## A software environment variable + element envar { db.envar.attlist, db._text } +} +div { + db.filename.class.enumeration = + + ## A device + "devicefile" + | + ## A directory + "directory" + | + ## A filename extension + "extension" + | + ## A header file (as for a programming language) + "headerfile" + | + ## A library file + "libraryfile" + | + ## A partition (as of a hard disk) + "partition" + | + ## A symbolic link + "symlink" + db.filename.class.attribute = + + ## Identifies the class of filename + attribute class { db.filename.class.enumeration } + db.filename.path.attribute = + + ## Specifies the path of the filename + attribute path { text } + db.filename.role.attribute = attribute role { text } + db.filename.attlist = + db.filename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.filename.path.attribute? + & db.filename.class.attribute? + db.filename = + + ## The name of a file + element filename { db.filename.attlist, db._text } +} +div { + db.command.role.attribute = attribute role { text } + db.command.attlist = + db.command.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.command = + + ## The name of an executable program or other software command + element command { db.command.attlist, db._text } +} +div { + db.computeroutput.role.attribute = attribute role { text } + db.computeroutput.attlist = + db.computeroutput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.computeroutput = + + ## Data, generally text, displayed or presented by a computer + element computeroutput { + db.computeroutput.attlist, db.computeroutput.inlines* + } +} +div { + db.userinput.role.attribute = attribute role { text } + db.userinput.attlist = + db.userinput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.userinput = + + ## Data entered by the user + element userinput { db.userinput.attlist, db.userinput.inlines* } +} +div { + db.cmdsynopsis.role.attribute = attribute role { text } + db.cmdsynopsis.sepchar.attribute = + + ## Specifies the character that should separate the command and its top-level arguments + attribute sepchar { text } + db.cmdsynopsis.cmdlength.attribute = + + ## Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + attribute cmdlength { text } + db.cmdsynopsis.label.attribute = db.label.attribute + db.cmdsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.cmdsynopsis.attlist = + db.cmdsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.cmdsynopsis.sepchar.attribute? + & db.cmdsynopsis.cmdlength.attribute? + & db.cmdsynopsis.label.attribute? + & db.cmdsynopsis.packageref.attribute? + db.cmdsynopsis.info = db._info.title.forbidden + db.cmdsynopsis = + + ## A syntax summary for a software command + element cmdsynopsis { + db.cmdsynopsis.attlist, + db.cmdsynopsis.info, + (db.command | db.arg | db.group | db.sbr)+, + db.synopfragment* + } +} +db.rep.enumeration = + + ## Can not be repeated. + "norepeat" + | + ## Can be repeated. + "repeat" +db.rep.attribute = + + ## Indicates whether or not repetition is possible. + [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration } +db.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted without indication. + "plain" + | + ## Formatted to indicate that it is required. + "req" +db.choice.opt.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration } +db.choice.req.attribute = + + ## Indicates optionality. + [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration } +div { + db.arg.role.attribute = attribute role { text } + db.arg.rep.attribute = db.rep.attribute + db.arg.choice.attribute = db.choice.opt.attribute + db.arg.attlist = + db.arg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.arg.rep.attribute? + & db.arg.choice.attribute? + db.arg = + + ## An argument in a cmdsynopsis + element arg { + db.arg.attlist, + (db._text + | db.arg + | db.group + | db.option + | db.synopfragmentref + | db.sbr)* + } +} +div { + db.group.role.attribute = attribute role { text } + db.group.rep.attribute = db.rep.attribute + db.group.choice.attribute = db.choice.opt.attribute + db.group.attlist = + db.group.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.rep.attribute? + & db.group.choice.attribute? + db.group = + + ## A group of elements in a cmdsynopsis + element group { + db.group.attlist, + (db.arg + | db.group + | db.option + | db.synopfragmentref + | db.replaceable + | db.sbr)+ + } +} +div { + db.sbr.role.attribute = attribute role { text } + db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes + db.sbr = + + ## An explicit line break in a command synopsis + element sbr { db.sbr.attlist, empty } +} +div { + db.synopfragment.role.attribute = attribute role { text } + db.synopfragment.attlist = + db.synopfragment.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.synopfragment = + + ## A portion of a cmdsynopsis broken out from the main body of the synopsis + element synopfragment { + db.synopfragment.attlist, (db.arg | db.group)+ + } +} +div { + db.synopfragmentref.role.attribute = attribute role { text } + db.synopfragmentref.attlist = + db.synopfragmentref.role.attribute? + & db.common.attributes + & db.linkend.attribute + db.synopfragmentref = + + ## A reference to a fragment of a command synopsis + [ + s:pattern [ + s:title [ "Synopsis fragment type constraint" ] + s:rule [ + context = "db:synopfragmentref" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on synopfragmentref must point to a synopfragment." + ] + ] + ] + ] + element synopfragmentref { db.synopfragmentref.attlist, text } +} +db.programming.inlines = + db.function + | db.parameter + | db.varname + | db.returnvalue + | db.type + | db.classname + | db.exceptionname + | db.interfacename + | db.methodname + | db.modifier + | db.initializer + | db.buildtarget + | db.oo.inlines + | db.templatename + | db.macroname + | db.unionname + | db.enumname + | db.enumvalue + | db.enumidentifier + | db.typedefname +db.oo.inlines = db.ooclass | db.ooexception | db.oointerface +db.synopsis.blocks = + (db.funcsynopsis + | db.classsynopsis + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis + | db.enumsynopsis + | db.typedefsynopsis + | db.packagesynopsis + | db.macrosynopsis + | db.unionsynopsis) + | db.cmdsynopsis +div { + db.synopsis.role.attribute = attribute role { text } + db.synopsis.label.attribute = db.label.attribute + db.synopsis.attlist = + db.synopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.synopsis.label.attribute? + db.synopsis = + + ## A general-purpose element for representing the syntax of commands or functions + element synopsis { db.synopsis.attlist, db.verbatim.contentmodel } +} +div { + db.synopsisinfo.role.attribute = attribute role { text } + db.synopsisinfo.attlist = + db.synopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.synopsisinfo = + + ## Information supplementing synopsis + element synopsisinfo { + db.synopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcsynopsis.info = db._info.title.forbidden + db.funcsynopsis.role.attribute = attribute role { text } + db.funcsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.funcsynopsis.attlist = + db.funcsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.funcsynopsis.packageref.attribute? + db.funcsynopsis = + + ## The syntax summary for a function definition + element funcsynopsis { + db.funcsynopsis.attlist, + db.funcsynopsis.info, + (db.funcsynopsisinfo | db.funcprototype)+ + } +} +div { + db.funcsynopsisinfo.role.attribute = attribute role { text } + db.funcsynopsisinfo.attlist = + db.funcsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.funcsynopsisinfo = + + ## Information supplementing the funcdefs of a funcsynopsis + element funcsynopsisinfo { + db.funcsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcprototype.role.attribute = attribute role { text } + db.funcprototype.attlist = + db.funcprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcprototype = + + ## The prototype of a function + element funcprototype { + db.funcprototype.attlist, + db.modifier*, + db.funcdef, + (db.void + | db.varargs + | ((db.paramdef | db.group.paramdef)+, db.varargs?)), + db.modifier* + } +} +div { + db.funcdef.role.attribute = attribute role { text } + db.funcdef.attlist = + db.funcdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcdef = + + ## A function (subroutine) name and its return type + element funcdef { + db.funcdef.attlist, + (db._text | db.type | db.templatename | db.void | db.function)* + } +} +div { + db.function.role.attribute = attribute role { text } + db.function.attlist = + db.function.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.function = + + ## The name of a function or subroutine, as in a programming language + element function { db.function.attlist, db._text } +} +div { + db.void.role.attribute = attribute role { text } + db.void.attlist = + db.void.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.void = + + ## An empty element in a function synopsis indicating that the function in question takes no arguments + element void { db.void.attlist, empty } +} +div { + db.varargs.role.attribute = attribute role { text } + db.varargs.attlist = + db.varargs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varargs = + + ## An empty element in a function synopsis indicating a variable number of arguments + element varargs { db.varargs.attlist, empty } +} +div { + db.group.paramdef.role.attribute = attribute role { text } + db.group.paramdef.choice.attribute = db.choice.opt.attribute + db.group.paramdef.attlist = + db.group.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.paramdef.choice.attribute? + db.group.paramdef = + + ## A group of parameters + element group { + db.group.paramdef.attlist, (db.paramdef | db.group.paramdef)+ + } +} +div { + db.paramdef.role.attribute = attribute role { text } + db.paramdef.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted to indicate that it is required. + "req" + db.paramdef.choice.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] + attribute choice { db.paramdef.choice.enumeration } + db.paramdef.attlist = + db.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.paramdef.choice.attribute? + db.paramdef = + + ## Information about a function parameter in a programming language + element paramdef { + db.paramdef.attlist, + (db._text + | db.initializer + | db.modifier + | db.type + | db.templatename + | db.parameter + | db.funcparams)* + } +} +div { + db.funcparams.role.attribute = attribute role { text } + db.funcparams.attlist = + db.funcparams.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcparams = + + ## Parameters for a function referenced through a function pointer in a synopsis + element funcparams { db.funcparams.attlist, db._text } +} +div { + db.classsynopsis.info = db._info.title.forbidden + db.classsynopsis.role.attribute = attribute role { text } + db.classsynopsis.class.enumeration = + + ## This is the synopsis of a class + "class" + | + ## This is the synopsis of an interface + "interface" + db.classsynopsis.class.attribute = + + ## Specifies the nature of the synopsis + attribute class { db.classsynopsis.class.enumeration } + db.classsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.classsynopsis.attlist = + db.classsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.classsynopsis.class.attribute? + & db.classsynopsis.packageref.attribute? + db.classsynopsis = + + ## The syntax summary for a class definition + element classsynopsis { + db.classsynopsis.attlist, + db.classsynopsis.info, + db.classsynopsisinfo*, + db.templatename*, + db.oo.inlines, + (db.template + | db.ooexception + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis + | db.classsynopsisinfo)* + } +} +div { + db.classsynopsisinfo.role.attribute = attribute role { text } + db.classsynopsisinfo.attlist = + db.classsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.classsynopsisinfo = + + ## Information supplementing the contents of a classsynopsis + element classsynopsisinfo { + db.classsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.ooclass.role.attribute = attribute role { text } + db.ooclass.attlist = + db.ooclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooclass = + + ## A class in an object-oriented programming language + element ooclass { + db.ooclass.attlist, + (db.package | db.modifier)*, + db.classname, + db.modifier* + } +} +div { + db.oointerface.role.attribute = attribute role { text } + db.oointerface.attlist = + db.oointerface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.oointerface = + + ## An interface in an object-oriented programming language + element oointerface { + db.oointerface.attlist, + (db.package | db.modifier)*, + db.interfacename, + db.modifier* + } +} +div { + db.ooexception.role.attribute = attribute role { text } + db.ooexception.attlist = + db.ooexception.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooexception = + + ## An exception in an object-oriented programming language + element ooexception { + db.ooexception.attlist, + (db.package | db.modifier)*, + db.exceptionname, + db.modifier* + } +} +db.modifier.xml.space.attribute = + + ## Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + attribute xml:space { + + ## Extra whitespace and line breaks must be preserved. + [ + # Ideally the definition of xml:space used on modifier would be + # different from the definition used on the verbatim elements. The + # verbatim elements forbid the use of xml:space="default" which + # wouldn't be a problem on modifier. But doing that causes the + # generated XSD schemas to be broken so I'm just reusing the existing + # definition for now. It won't be backwards incompatible to fix this + # problem in the future. + # | ## Extra whitespace and line breaks are not preserved. + # "default" + + ] + "preserve" + } +div { + db.modifier.role.attribute = attribute role { text } + db.modifier.attlist = + db.modifier.xml.space.attribute? + & db.modifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.modifier = + + ## Modifiers in a synopsis + element modifier { db.modifier.attlist, db._text } +} +div { + db.interfacename.role.attribute = attribute role { text } + db.interfacename.attlist = + db.interfacename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.interfacename = + + ## The name of an interface + element interfacename { db.interfacename.attlist, db._text } +} +div { + db.exceptionname.role.attribute = attribute role { text } + db.exceptionname.attlist = + db.exceptionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.exceptionname = + + ## The name of an exception + element exceptionname { db.exceptionname.attlist, db._text } +} +div { + db.fieldsynopsis.info = db._info.title.forbidden + db.fieldsynopsis.role.attribute = attribute role { text } + db.fieldsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.fieldsynopsis.attlist = + db.fieldsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.fieldsynopsis.packageref.attribute? + db.fieldsynopsis = + + ## The name of a field in a class definition + element fieldsynopsis { + db.fieldsynopsis.attlist, + db.fieldsynopsis.info, + db.synopsisinfo*, + db.modifier*, + (db.type | db.templatename)*, + db.varname, + db.modifier*, + db.initializer?, + db.synopsisinfo* + } +} +div { + db.initializer.role.attribute = attribute role { text } + db.initializer.attlist = + db.initializer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.initializer.inlines = db._text | db.mathphrase | db.markup.inlines + db.initializer = + + ## The initializer for a fieldsynopsis + element initializer { + db.initializer.attlist, db.initializer.inlines* + } +} +div { + db.constructorsynopsis.info = db._info.title.forbidden + db.constructorsynopsis.role.attribute = attribute role { text } + db.constructorsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.constructorsynopsis.attlist = + db.constructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.constructorsynopsis.packageref.attribute? + db.constructorsynopsis = + + ## A syntax summary for a constructor + element constructorsynopsis { + db.constructorsynopsis.attlist, + db.constructorsynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.methodname?, + ((db.methodparam | db.group.methodparam)+ | db.void?), + db.modifier*, + db.exceptionname*, + db.synopsisinfo* + } +} +div { + db.destructorsynopsis.info = db._info.title.forbidden + db.destructorsynopsis.role.attribute = attribute role { text } + db.destructorsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.destructorsynopsis.attlist = + db.destructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.destructorsynopsis.packageref.attribute? + db.destructorsynopsis = + + ## A syntax summary for a destructor + element destructorsynopsis { + db.destructorsynopsis.attlist, + db.destructorsynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.methodname?, + ((db.methodparam | db.group.methodparam)+ | db.void?), + db.modifier*, + db.exceptionname*, + db.synopsisinfo* + } +} +div { + db.methodsynopsis.info = db._info.title.forbidden + db.methodsynopsis.role.attribute = attribute role { text } + db.methodsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.methodsynopsis.attlist = + db.methodsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.methodsynopsis.packageref.attribute? + db.methodsynopsis = + + ## A syntax summary for a method + element methodsynopsis { + db.methodsynopsis.attlist, + db.methodsynopsis.info, + db.synopsisinfo*, + (db.templatename | db.modifier)*, + (db.type | db.void)?, + db.methodname, + db.templatename*, + ((db.methodparam | db.group.methodparam)+ | db.void), + (db.exceptionname | db.modifier | db.templatename)*, + db.synopsisinfo* + } +} +div { + db.methodname.role.attribute = attribute role { text } + db.methodname.attlist = + db.methodname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.methodname = + + ## The name of a method + element methodname { db.methodname.attlist, db._text } +} +div { + db.methodparam.role.attribute = attribute role { text } + db.methodparam.rep.attribute = db.rep.attribute + db.methodparam.choice.attribute = db.choice.req.attribute + db.methodparam.attlist = + db.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.methodparam.rep.attribute? + & db.methodparam.choice.attribute? + db.methodparam = + + ## Parameters to a method + element methodparam { + db.methodparam.attlist, + (db.modifier | db.type | db.templatename)*, + ((db.parameter, db.initializer?) | db.funcparams), + db.modifier* + } +} +div { + db.group.methodparam.role.attribute = attribute role { text } + db.group.methodparam.choice.attribute = db.choice.opt.attribute + db.group.methodparam.attlist = + db.group.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.methodparam.choice.attribute? + db.group.methodparam = + + ## A group of method parameters + element group { + db.group.methodparam.attlist, + (db.methodparam | db.group.methodparam)+ + } +} +div { + db.varname.role.attribute = attribute role { text } + db.varname.attlist = + db.varname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varname = + + ## The name of a variable + element varname { db.varname.attlist, db._text } +} +div { + db.buildtarget.role.attribute = attribute role { text } + db.buildtarget.attlist = + db.buildtarget.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.buildtarget = + + ## Target of a build + element buildtarget { db.buildtarget.attlist, db._text } +} +div { + db.returnvalue.role.attribute = attribute role { text } + db.returnvalue.attlist = + db.returnvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.returnvalue = + + ## The value returned by a function + element returnvalue { db.returnvalue.attlist, db._text } +} +div { + db.type.role.attribute = attribute role { text } + db.type.class.enumeration = + + ## Combined type is union of nested types + "union" + | + ## Combined type is intersection of nested types + "intersection" + db.type.class.attribute = + + ## Specifies the way how are nested types combined together + attribute class { db.type.class.enumeration } + db.type.attlist = + db.type.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.type.class.attribute? + db.type = + + ## The classification of a value + element type { + db.type.attlist, (db._text | db.programming.inlines)* + } +} +div { + db.classname.role.attribute = attribute role { text } + db.classname.attlist = + db.classname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.classname = + + ## The name of a class, in the object-oriented programming sense + element classname { db.classname.attlist, db._text } +} +div { + db.templatename.role.attribute = attribute role { text } + db.templatename.attlist = + db.templatename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.templatename = + + ## The identifier for a template, in the generic programming sense + element templatename { db.templatename.attlist, db._text } +} +div { + db.template.role.attribute = attribute role { text } + db.template.attlist = + db.template.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.template = + + ## The definition of a template, in the generic programming sense + element template { + db.template.attlist, + (((db.modifier | db.type | db._text)*, + db.templatename, + (db.modifier | db.type | db._text)*) + | db.specializedtemplate) + } +} +div { + db.specializedtemplate.role.attribute = attribute role { text } + db.specializedtemplate.attlist = + db.specializedtemplate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.specializedtemplate = + + ## The specialization of a template identifier, in the generic programming sense + element specializedtemplate { + db.specializedtemplate.attlist, + (db.modifier | db.type | db._text)* + } +} +div { + db.packagesynopsis.info = db._info.title.forbidden + db.packagesynopsis.role.attribute = attribute role { text } + db.packagesynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.packagesynopsis.attlist = + db.packagesynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.packagesynopsis.packageref.attribute? + db.packagesynopsis = + + ## The syntax summary for a package definition + element packagesynopsis { + db.packagesynopsis.attlist, + db.packagesynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.package, + db.modifier*, + (db.synopsis.blocks | db.synopsisinfo)* + } +} +div { + db.macroname.role.attribute = attribute role { text } + db.macroname.attlist = + db.macroname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macroname = + + ## The name of a macro (a code-generating function) + element macroname { db.macroname.attlist, db._text } +} +div { + db.macrosynopsis.info = db._info.title.forbidden + db.macrosynopsis.role.attribute = attribute role { text } + db.macrosynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.macrosynopsis.attlist = + db.macrosynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.macrosynopsis.packageref.attribute? + db.macrosynopsis = + + ## The syntax summary for a macro definition (code-generating function) + element macrosynopsis { + db.macrosynopsis.attlist, + db.macrosynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.macroname, + (db.package | db.modifier)*, + db.macroprototype+, + db.synopsisinfo* + } +} +div { + db.macroprototype.role.attribute = attribute role { text } + db.macroprototype.attlist = + db.macroprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macroprototype = + + ## The prototype of a macro (code-generating function) + element macroprototype { + db.macroprototype.attlist, + db.modifier*, + db.macrodef, + (db.void + | db.varargs + | ((db.paramdef | db.group.paramdef)+, db.varargs?)), + db.modifier* + } +} +div { + db.macrodef.role.attribute = attribute role { text } + db.macrodef.attlist = + db.macrodef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macrodef = + + ## A macro name and its return type + element macrodef { + db.macrodef.attlist, (db.type | db.templatename)*, db.macroname + } +} +div { + db.unionname.role.attribute = attribute role { text } + db.unionname.attlist = + db.unionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.unionname = + + ## The name of a union of types + element unionname { db.unionname.attlist, db._text } +} +div { + db.union.role.attribute = attribute role { text } + db.union.attlist = + db.union.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.union = + + ## The definition of a union of types, which may be more than a name + element union { db.union.attlist, db.type+ } +} +div { + db.unionsynopsis.info = db._info.title.forbidden + db.unionsynopsis.role.attribute = attribute role { text } + # N.B. the enumeration is explicitly identical to the enumeration + # on enumsynopsis by default. + db.unionsynopsis.ordered.attribute = + + ## Indicates how the value of a union is specified. + attribute ordered { db.enumsynopsis.ordered.enumeration } + db.unionsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.unionsynopsis.attlist = + db.unionsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.unionsynopsis.ordered.attribute? + & db.unionsynopsis.packageref.attribute? + db.unionsynopsis = + + ## The syntax summary for a union-of-types definition + element unionsynopsis { + db.unionsynopsis.attlist, + db.unionsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.unionname?, + db.union, + (db.package | db.modifier)*, + db.synopsisinfo* + } +} +div { + db.enumname.role.attribute = attribute role { text } + db.enumname.attlist = + db.enumname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumname = + + ## The name of an enumeration + element enumname { db.enumname.attlist, db._text } +} +div { + db.enumvalue.role.attribute = attribute role { text } + db.enumvalue.attlist = + db.enumvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumvalue = + + ## The value an enumerated type can take + element enumvalue { db.enumvalue.attlist, db._text } +} +div { + db.enumitemdescription.role.attribute = attribute role { text } + db.enumitemdescription.attlist = + db.enumitemdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumitemdescription = + + ## The description of a value an enumerated type can take + element enumitemdescription { + db.enumitemdescription.attlist, db.all.inlines* + } +} +div { + db.enumidentifier.role.attribute = attribute role { text } + db.enumidentifier.attlist = + db.enumidentifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumidentifier = + + ## The identifier of a value an enumerated type can take + element enumidentifier { db.enumidentifier.attlist, db._text } +} +div { + db.enumitem.role.attribute = attribute role { text } + db.enumitem.attlist = + db.enumitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumitem = + + ## A value an enumerated type can take and its description + element enumitem { + db.enumitem.attlist, + db.enumidentifier, + db.enumvalue*, + db.enumitemdescription? + } +} +div { + db.enumsynopsis.info = db._info.title.forbidden + db.enumsynopsis.role.attribute = attribute role { text } + db.enumsynopsis.ordered.enumeration = + + ## Value of enum is specified explicitly using enumvalue + "0" + | + ## Value of enum is inferred from its position + "1" + db.enumsynopsis.ordered.attribute = + + ## Indicates how the value of an enumeration is specified. + attribute ordered { db.enumsynopsis.ordered.enumeration } + db.enumsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.enumsynopsis.attlist = + db.enumsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.enumsynopsis.ordered.attribute? + & db.enumsynopsis.packageref.attribute? + db.enumsynopsis = + + ## The syntax summary for an enumerated-type definition + element enumsynopsis { + db.enumsynopsis.attlist, + db.enumsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + (db.enumname, db.modifier*)?, + db.enumitem+, + db.synopsisinfo* + } +} +div { + db.typedefname.role.attribute = attribute role { text } + db.typedefname.attlist = + db.typedefname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.typedefname = + + ## The name of a type alias + element typedefname { db.typedefname.attlist, db._text } +} +div { + db.typedefsynopsis.info = db._info.title.forbidden + db.typedefsynopsis.role.attribute = attribute role { text } + db.typedefsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.typedefsynopsis.attlist = + db.typedefsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.typedefsynopsis.packageref.attribute? + db.typedefsynopsis = + + ## The syntax summary for a type-alias definition + element typedefsynopsis { + db.typedefsynopsis.attlist, + db.typedefsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.typedefname, + (db.package | db.modifier)*, + db.synopsisinfo* + } +} +div { + db.programlisting.role.attribute = attribute role { text } + db.programlisting.width.attribute = db.width.characters.attribute + db.programlisting.attlist = + db.programlisting.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.programlisting.width.attribute? + db.programlisting = + + ## A literal listing of all or part of a program + element programlisting { + db.programlisting.attlist, db.verbatim.contentmodel + } +} +db.admonition.blocks = + db.caution | db.danger | db.important | db.note | db.tip | db.warning +db.admonition.contentmodel = db._info.title.only, db.all.blocks+ +div { + db.caution.role.attribute = attribute role { text } + db.caution.attlist = + db.caution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caution = + + ## A note of caution + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caution" + ] + ] + ] + ] + element caution { db.caution.attlist, db.admonition.contentmodel } +} +div { + db.danger.role.attribute = attribute role { text } + db.danger.attlist = + db.danger.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.danger = + + ## An admonition set off from the text indicating hazardous situation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of danger" + ] + ] + ] + ] + element danger { db.danger.attlist, db.admonition.contentmodel } +} +div { + db.important.role.attribute = attribute role { text } + db.important.attlist = + db.important.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.important = + + ## An admonition set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of important" + ] + ] + ] + ] + element important { + db.important.attlist, db.admonition.contentmodel + } +} +div { + db.note.role.attribute = attribute role { text } + db.note.attlist = + db.note.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.note = + + ## A message set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of note" + ] + ] + ] + ] + element note { db.note.attlist, db.admonition.contentmodel } +} +div { + db.tip.role.attribute = attribute role { text } + db.tip.attlist = + db.tip.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tip = + + ## A suggestion to the user, set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of tip" + ] + ] + ] + ] + element tip { db.tip.attlist, db.admonition.contentmodel } +} +div { + db.warning.role.attribute = attribute role { text } + db.warning.attlist = + db.warning.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.warning = + + ## An admonition set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of warning" + ] + ] + ] + ] + element warning { db.warning.attlist, db.admonition.contentmodel } +} +db.error.inlines = + db.errorcode | db.errortext | db.errorname | db.errortype +div { + db.errorcode.role.attribute = attribute role { text } + db.errorcode.attlist = + db.errorcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorcode = + + ## An error code + element errorcode { db.errorcode.attlist, db._text } +} +div { + db.errorname.role.attribute = attribute role { text } + db.errorname.attlist = + db.errorname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorname = + + ## An error name + element errorname { db.errorname.attlist, db._text } +} +div { + db.errortext.role.attribute = attribute role { text } + db.errortext.attlist = + db.errortext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortext = + + ## An error message. + element errortext { db.errortext.attlist, db._text } +} +div { + db.errortype.role.attribute = attribute role { text } + db.errortype.attlist = + db.errortype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortype = + + ## The classification of an error message + element errortype { db.errortype.attlist, db._text } +} +db.systemitem.inlines = db._text | db.co +div { + db.systemitem.class.enumeration = + + ## A daemon or other system process (syslogd) + "daemon" + | + ## A domain name (example.com) + "domainname" + | + ## An ethernet address (00:05:4E:49:FD:8E) + "etheraddress" + | + ## An event of some sort (SIGHUP) + "event" + | + ## An event handler of some sort (hangup) + "eventhandler" + | + ## A filesystem (ext3) + "filesystem" + | + ## A fully qualified domain name (my.example.com) + "fqdomainname" + | + ## A group name (wheel) + "groupname" + | + ## A network interface (eth0) + "interface" + | + ## An IP address (127.0.0.1) + "ipaddress" + | + ## A library (libncurses) + "library" + | + ## A macro + "macro" + | + ## A netmask (255.255.255.192) + "netmask" + | + ## A newsgroup (comp.text.xml) + "newsgroup" + | + ## An operating system name (Hurd) + "osname" + | + ## A process (gnome-cups-icon) + "process" + | + ## A protocol (ftp) + "protocol" + | + ## A resource + "resource" + | + ## A security context (a role, permission, or security token, for example) + "securitycontext" + | + ## A server (mail.example.com) + "server" + | + ## A service (ppp) + "service" + | + ## A system name (hephaistos) + "systemname" + | + ## A user name (ndw) + "username" + db.systemitem.class-enum.attribute = + + ## Identifies the nature of the system item + attribute class { db.systemitem.class.enumeration }? + db.systemitem.class-other.attribute = + + ## Identifies the nature of the non-standard system item + attribute otherclass { xsd:NMTOKEN } + db.systemitem.class-other.attributes = + + ## Identifies the kind of systemitemgraphic identifier + attribute class { + + ## Indicates that the system item is some 'other' kind. + "other" + } + & db.systemitem.class-other.attribute + db.systemitem.class.attribute = + db.systemitem.class-enum.attribute + | db.systemitem.class-other.attributes + db.systemitem.role.attribute = attribute role { text } + db.systemitem.attlist = + db.systemitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.systemitem.class.attribute? + db.systemitem = + + ## A system-related item or term + element systemitem { db.systemitem.attlist, db.systemitem.inlines* } +} +div { + db.option.role.attribute = attribute role { text } + db.option.attlist = + db.option.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.option = + + ## An option for a software command + element option { db.option.attlist, db._text } +} +div { + db.optional.role.attribute = attribute role { text } + db.optional.attlist = + db.optional.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.optional = + + ## Optional information + element optional { db.optional.attlist, (db._text | db.optional)* } +} +div { + db.property.role.attribute = attribute role { text } + db.property.attlist = + db.property.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.property = + + ## A unit of data associated with some part of a computer system + element property { db.property.attlist, db._text } +} +div { + db.topic.status.attribute = db.status.attribute + db.topic.role.attribute = attribute role { text } + db.topic.type.attribute = + + ## Identifies the topic type + attribute type { text } + db.topic.attlist = + db.topic.role.attribute? + & db.topic.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.topic.status.attribute? + db.topic.info = db._info.title.req + db.topic = + + ## A modular unit of documentation not part of any particular narrative flow + element topic { + db.topic.attlist, + db.topic.info, + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* + } +} +start = + db.assembly + | db.structure + | db.resources + | db.relationships + | db.transforms + | db.module +db.grammar.attribute = + + ## Identifies the markup grammar of a resource + attribute grammar { text } +div { + db.assembly.role.attribute = attribute role { text } + db.assembly.attlist = + db.assembly.role.attribute? & db.common.attributes + db.assembly.info = db._info + db.assembly = + + ## Defines the hierarchy and relationships for a collection of resources + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:assembly" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element assembly { + db.assembly.attlist, + db.assembly.info, + db.resources+, + db.structure*, + db.relationships*, + db.transforms? + } +} +div { + db.resources.role.attribute = attribute role { text } + db.resources.grammar.attribute = db.grammar.attribute + db.resources.attlist = + db.resources.role.attribute? + & db.resources.grammar.attribute? + & db.common.attributes + db.resources.info = db._info.title.forbidden + db.resources = + + ## Contains one or more resource objects that are managed by the assembly + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:resources" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element resources { + db.resources.attlist, + db.resources.info?, + (db.description*, db.resource+) + } +} +div { + db.resource.role.attribute = attribute role { text } + db.resource.href.attribute = + + ## Indentifies the location of the data by URI + attribute href { xsd:anyURI } + db.resource.grammar.attribute = db.grammar.attribute + db.resource.transform.attribute = + + ## Identifies the markup grammar of a resource + attribute transform { xsd:NMTOKEN } + db.resource.attlist = + db.resource.role.attribute? + & (db.resource.transform.attribute | db.resource.grammar.attribute)? + & db.common.attributes + db.resource = + + ## Identifies an object managed within the assembly + element resource { + db.resource.attlist, db.resource.href.attribute, db.description* + } +} +div { + db.structure.role.attribute = attribute role { text } + db.structure.type.attribute = + + ## Identifies the structure type of the structure + attribute type { xsd:NMTOKEN } + db.structure.resourceref.attribute = + + ## Indicates a single resource from which to construct this structure + attribute resourceref { xsd:IDREF } + db.structure.defaultformat.attribute = + + ## Identifies the default format of the structure + attribute defaultformat { xsd:NMTOKEN } + db.structure.renderas.attribute = + + ## Specifies the DocBook element to which this unit should be renamed + attribute renderas { xsd:QName } + db.structure.attlist = + db.structure.role.attribute? + & db.structure.type.attribute? + & db.structure.resourceref.attribute? + & db.structure.renderas.attribute? + & db.structure.defaultformat.attribute? + & db.common.attributes + db.structure.info = db.info? + db.structure = + + ## Describes the structure of a document + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:structure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + s:pattern [ + s:title [ "Specification of renderas" ] + s:rule [ + context = "db:structure" + s:assert [ + test = "not(@renderas and db:output/@renderas)" + "The renderas attribute can be specified on either the structure or output, but not both." + ] + ] + ] + ] + element structure { + db.structure.attlist, + (db.output* & db.filterin? & db.filterout? & db.structure.info), + db.merge?, + db.revhistory?, + db.module+ + } +} +div { + db.output.role.attribute = attribute role { text } + db.output.chunk.attribute = + + ## Specifies chunking for this module + [ a:defaultValue = "auto" ] + attribute chunk { db.module.chunk.enumeration } + db.output.file.attribute = + + ## Specifies the output file for this module or structure + attribute file { xsd:anyURI } + db.output.renderas.attribute = + + ## Specifies the DocBook element to which this unit should be renamed + attribute renderas { xsd:QName } + db.output.transform.attribute = + + ## Specifies the transformation that should be applied to this unit + attribute transform { xsd:NMTOKEN } + db.output.suppress.attribute = + + ## Indicates whether or not this unit should be suppressed + attribute suppress { xsd:boolean } + db.output.attlist = + db.output.role.attribute? + & db.common.attributes + & db.output.chunk.attribute? + & db.output.file.attribute? + & db.output.renderas.attribute? + & db.output.transform.attribute? + & db.output.suppress.attribute? + db.output = + + ## Specify an output format and/or file name and/or renderas + element output { db.output.attlist, empty } +} +div { + db.merge.role.attribute = attribute role { text } + db.merge.resourceref.attribute = + + ## Indicates a single resource from which to read merged info + attribute resourceref { xsd:IDREF } + db.merge.attlist = + db.merge.role.attribute? + & db.merge.resourceref.attribute? + & db.common.attributes + db.merge = + + ## A wrapper for information that a module overrides in the resource it includes + element merge { db.merge.attlist, (db._title & db.info.elements*) } +} +div { + db.module.role.attribute = attribute role { text } + db.module.chunk.enumeration = + + ## This module will be in a chunk + "true" + | + ## This module will not be in a chunk + "false" + | + ## Chunking of this module depends on the overall chunking algorithm + "auto" + db.module.chunk.attribute = + + ## Specifies chunking for this module + [ a:defaultValue = "auto" ] + attribute chunk { db.module.chunk.enumeration } + db.module.resourceref.attribute = + + ## Identifies a single resource or structure within the assembly from which to construct this module + attribute resourceref { xsd:IDREF } + db.module.omittitles.attribute = + + ## Indicates if titles should be omitted when including a resource + attribute omittitles { xsd:boolean }? + db.module.contentonly.attribute = + + ## Indicates if the root element should be omitted when including the resource (copying only the children) + attribute contentonly { xsd:boolean }? + db.module.renderas.attribute = + + ## Changes the name of the root element of the included resource to the specified name + attribute renderas { xsd:QName } + db.module.attlist = + db.module.role.attribute? + & db.module.chunk.attribute? + & db.module.resourceref.attribute? + & db.module.omittitles.attribute? + & db.module.contentonly.attribute? + & db.module.renderas.attribute? + & db.common.attributes + db.module.info = db.info? + db.module = + + ## A modular component within a structure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:module" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + s:pattern [ + s:title [ "Specification of renderas" ] + s:rule [ + context = "db:module" + s:assert [ + test = "not(@renderas and db:output/@renderas)" + "The renderas attribute can be specified on either the structure or output, but not both." + ] + ] + ] + ] + element module { + db.module.attlist, + ((db.output | db.filterin | db.filterout)*, + db.module.info, + db.merge?, + db.module*) + } +} +div { + db.filterout.role.attribute = attribute role { text } + db.filterout.attlist = + db.filterout.role.attribute? & db.common.attributes + db.filterout = + + ## Elements with effectivity attributes matching this element are suppressed + element filterout { db.filterout.attlist, empty } +} +div { + db.filterin.role.attribute = attribute role { text } + db.filterin.attlist = + db.filterin.role.attribute? & db.common.attributes + db.filterin = + + ## Elements with effectivity attributes matching this element are allowed + element filterin { db.filterin.attlist, empty } +} +div { + db.relationships.role.attribute = attribute role { text } + db.relationships.type.attribute = + + ## Identifies the type of the contained relationships + attribute type { xsd:NMTOKENS } + db.relationships.attlist = + db.relationships.role.attribute? + & db.relationships.type.attribute? + & db.common.attributes + db.relationships.info = db._info + db.relationships = + + ## Groups relationship elements to define associations between resources + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:relationships" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element relationships { + db.relationships.attlist, + db.relationships.info, + (db.relationship | db.instance)+ + } +} +div { + db.relationship.role.attribute = attribute role { text } + db.relationship.type.attribute = + + ## Identifies the type of the relationship + attribute type { xsd:NMTOKEN } + db.relationship.attlist = + db.relationship.role.attribute? + & db.relationship.type.attribute? + & db.linkend.attribute? + & db.common.attributes + db.relationship = + + ## A relationship associates one or more resources + element relationship { + db.relationship.attlist, db.association, db.instance+ + } +} +div { + db.association.role.attribute = attribute role { text } + db.association.attlist = + db.association.role.attribute? + & db.linkend.attribute? + & db.common.attributes + db.association = + + ## Identifies the type of relationship between one or more resources + element association { db.association.attlist, text? } +} +div { + db.instance.role.attribute = attribute role { text } + db.instance.linking.attribute = + + ## Specifies the type of link for this instance + attribute linking { xsd:NMTOKENS } + db.instance.attlist = + db.instance.role.attribute? + & db.instance.linking.attribute? + & db.common.attributes + db.instance = + + ## Identifies a resource that is part of a relationship + element instance { + db.instance.attlist, db.linkend.attribute, empty + } +} +div { + db.transforms.role.attribute = attribute role { text } + db.transforms.attlist = + db.transforms.role.attribute? & db.common.attributes + db.transforms.info = db._info + db.transforms = + + ## List of transforms for converting from non-DocBook schemas + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:transforms" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element transforms { + db.transforms.attlist, db.transforms.info, db.transform+ + } +} +div { + db.transform.role.attribute = attribute role { text } + db.transform.grammar.attribute = db.grammar.attribute + db.transform.href.attribute = + + ## Indentifies the location of the data by URI + attribute href { xsd:anyURI } + db.transform.name.attribute = + + ## The name of the transform + attribute name { xsd:NMTOKEN } + db.transform.attlist = + db.transform.role.attribute? + & (db.transform.grammar.attribute | db.transform.name.attribute) + & db.transform.href.attribute + & db.common.attributes + db.transform = + + ## Identifies a transform for converting from a non-DocBook schema + element transform { db.transform.attlist, empty } +} +div { + db.description.role.attribute = attribute role { text } + db.description.attlist = + db.description.role.attribute? & db.common.attributes + db.description = + + ## A description of a resource or resources + element description { db.description.attlist, db._text } +} diff --git a/catalog/docbook5.2/rng/assembly.rng b/catalog/docbook5.2/rng/assembly.rng new file mode 100755 index 0000000..bcb2adc --- /dev/null +++ b/catalog/docbook5.2/rng/assembly.rng @@ -0,0 +1,18266 @@ + + + + + + + + + + + + + +
+ + + Any attribute, including any attribute in any namespace + + + + + + Any attribute in any other explicit namespace + + + + + + + + + + + + + + Any element from almost any namespace + + + + + + + + + + + + + + +
+ + + Designates the computer or chip architecture to which the element applies + + + + + Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + + + + + provides a standard place for application-specific effectivity + + + + + Indicates standards conformance characteristics of the element + + + + + Indicates the operating system to which the element is applicable + + + + + Indicates the editorial revision to which the element belongs + + + + + Indicates something about the security level associated with the element to which it applies + + + + + Indicates the level of user experience for which the element applies + + + + + Indicates the computer vendor to which the element applies + + + + + Indicates the word size (width in bits) of the computer architecture to which the element applies + + + + + Indicates the output format (for example, print or epub) to which the element applies + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Points to the element whose content is to be used as the text of the link + + + + + + Points to an internal link target by identifying the value of its xml:id attribute + + + + + + Points to one or more internal link targets by identifying the value of their xml:id attributes + + + + + + Identifies a link target with a URI + + + + + + Identifies the XLink link type + simple + An XLink simple link type + + + + + Identifies the XLink role of the link + + + + + + Identifies the XLink arcrole of the link + + + + + + Identifies the XLink title of the link + + + + + new + An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + replace + An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. + embed + An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + other + The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior. + none + The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + + + + + Identifies the XLink show behavior of the link + + + + + + onLoad + An application should traverse to the ending resource immediately on loading the starting resource. + onRequest + An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + other + The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior. + none + The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + + + + + Identifies the XLink actuate behavior of the link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Identifies the unique ID value of the element + + + + + + Specifies the DocBook version of the element and its descendants + + + + + Specifies the natural language of the element and its descendants + + + + + Specifies the base URI of the element and its descendants + + + + + + Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + + + + + Provides the text that is to be generated for a cross reference to the element + + + + + Specifies a keyword or keywords identifying additional style information + + + + + changed + The element has been changed. + added + The element is new (has been added to the document). + deleted + The element has been deleted. + off + Explicitly turns off revision markup for this element. + + + + + Identifies the revision status of the element + + + + + + ltr + Left-to-right text + rtl + Right-to-left text + lro + Left-to-right override + rlo + Right-to-left override + + + + + Identifies the direction of text in an element + + + + + + The RDFa Lite vocab + + + + + + The RDFa Lite typeof + + + + + The RDFa Lite property + + + + + The RDFa Lite resource + + + + + The RDFa Lite prefix + + + + + + + + + + + + + + + + + + + + + + + + none + No ID fixup strategy + suffix + ID fixup by concatenating suffixes + auto + ID fixup by creating unique values + + + + + The transclusion ID fixup strategy + + + + + + The transclusion suffix to use when the suffix ID fixup strategy is employed + + Suffix fixup must be specified + + If a suffix is specified, suffix ID fixup must also be specified. + + + + + + + user + No link scope adjustments are made + local + The link scopes are adjusted with the suffix property + near + The link scopes are adjusted based on proximity + global + The link scopes are adjusted based on document order + + + + + The transclusion link scope adjustment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the format of the data + + + + + Indentifies the location of the data by URI + + + + Identifies the location of the data by external identifier (entity name) + + + + + + + continues + Line numbering continues from the immediately preceding element with the same name. + restarts + Line numbering restarts (begins at 1, usually). + + + + + Determines whether line numbering continues from the previous element or restarts + + + + + + numbered + Lines are numbered. + unnumbered + Lines are not numbered. + + + + + Determines whether lines are numbered + + + + + + Specifies the initial line number + + + + + + Identifies the language (i.e. programming language) of the verbatim content + + + + + Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not + preserve + Whitespace must be preserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies an identifying string for presentation purposes + + + + + Specifies the width (in characters) of the element + + + + + + compact + The spacing should be "compact". + normal + The spacing should be "normal". + + + + + Specifies (a hint about) the spacing of the content + + + + + + 0 + The element should be rendered in the current text flow (with the flow column width). + 1 + The element should be rendered across the full text page. + + + + + Indicates if the element is rendered across the column or the page + + + + + + Identifies the language (i.e. programming language) of the content + + + + + optional + The content describes an optional step or steps. + required + The content describes a required step or steps. + + + + + Specifies if the content is required or optional + + + + + + Specifies style information to be used when rendering the float + + + + + Specifies the width of the element + + + + + Specifies the depth of the element + + + + + Specifies the width of the content rectangle + + + + + Specifies the depth of the content rectangle + + + + + 0 + False (do not scale-to-fit; anamorphic scaling may occur) + 1 + True (scale-to-fit; anamorphic scaling is forbidden) + + + + + Specifies the scaling factor + + + + + + Specifies a classid for a media object player + + + + + Specifies the autoplay setting for a media object player + + + + + center + Centered horizontally + char + Aligned horizontally on the specified character + justify + Fully justified (left and right margins or edges) + left + Left aligned + right + Right aligned + + + + + bottom + Aligned on the bottom of the region + middle + Centered vertically + top + Aligned on the top of the region + + + + + doi + A digital object identifier. + isbn + An international standard book number. + isrn + An international standard technical report number (ISO 10444). + issn + An international standard serial number. + istc + An international standard text code. + libraryofcongress + A Library of Congress reference number. + pubsnumber + A publication number (an internal number or possibly organizational standard). + uri + A Uniform Resource Identifier + + + + + + Identifies the kind of bibliographic identifier + + + + + + + Identifies the nature of the non-standard bibliographic identifier + + + + + + + Identifies the kind of bibliographic identifier + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + article + An article + bbs + A bulletin board system + book + A book + cdrom + A CD-ROM + chapter + A chapter (as of a book) + dvd + A DVD + emailmessage + An email message + gopher + A gopher page + journal + A journal + manuscript + A manuscript + newsposting + A posting to a newsgroup + part + A part (as of a book) + refentry + A reference entry + section + A section (as of a book or article) + series + A series + set + A set (as of books) + webpage + A web page + wiki + A wiki page + other + Some other kind of work + + + + + + + + + Identifies the nature of the published work + + + + + + + Identifies the nature of some other kind of published work + + + + + + + Identifies that this is some other kind of published work + other + Indicates that the published work is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text of the title of a section of a document or of a formal block-level element + + + + + + +
+
+ + + + + + + + + + + + + + + The abbreviation of a title + + + + + + +
+
+ + + + + + + + + + + + + + + The subtitle of a document + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with a required title + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a title + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a required title + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block without a title + + + + + + +
+
+ + + + + + Identifies the controlled vocabulary used by this set's terms + + + + + + + + + + + + + + + + + + A set of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + Specifies a ranking for this subject relative to other subjects in the same set + + + + + + + + + + + + + + + + + One of a group of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + + + + + + + + + + A term in a group of terms describing the subject matter of a document + + + + +
+
+ + + + + + + + + + + + + + + A set of keywords describing the content of a document + + + + + + +
+
+ + + + + + + + + + + + + + + One of a set of keywords describing the content of a document + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + Identifies the type of procedure + + + + + + + + + + + + + + + + + + + + + A list of operations to be performed in a well-defined sequence + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A unit of action in a procedure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + Alternative steps in a procedure + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for steps that occur within steps in a procedure + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for identifying the results of a procedure or step + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + A portion of a document that is isolated from the main narrative flow + + Element exclusion + + sidebar must not occur among the children or descendants of sidebar + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short description or note about a person + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A quotation set off from the main text + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The source of a block quote or epigraph + + + + + + + + + + + + +
+
+ + + sect1 + Render as a first-level section + sect2 + Render as a second-level section + sect3 + Render as a third-level section + sect4 + Render as a fourth-level section + sect5 + Render as a fifth-level section + + + + + + Indicates how the bridge head should be rendered + + + + + + + Identifies the nature of the non-standard rendering + + + + + + + Indicates how the bridge head should be rendered + other + Identifies a non-standard rendering + + + + + + + + + + + + + + + + + + + + + + + + + + + + A free-floating heading + + + + + + +
+
+ + + + + + + + + + + + + + + A remark (or comment) intended for presentation in a draft manuscript + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short inscription at the beginning of a document or component + + + + + + + + + + + + + +
+
+ + + + + + Identifies the desired footnote mark + + + + + + + + + + + + + + + + + + A footnote + + Element exclusion + + footnote must not occur among the children or descendants of footnote + + + + Element exclusion + + example must not occur among the children or descendants of footnote + + + + Element exclusion + + figure must not occur among the children or descendants of footnote + + + + Element exclusion + + table must not occur among the children or descendants of footnote + + + + Element exclusion + + equation must not occur among the children or descendants of footnote + + + + Element exclusion + + sidebar must not occur among the children or descendants of footnote + + + + Element exclusion + + task must not occur among the children or descendants of footnote + + + + Element exclusion + + epigraph must not occur among the children or descendants of footnote + + + + Element exclusion + + caution must not occur among the children or descendants of footnote + + + + Element exclusion + + danger must not occur among the children or descendants of footnote + + + + Element exclusion + + important must not occur among the children or descendants of footnote + + + + Element exclusion + + note must not occur among the children or descendants of footnote + + + + Element exclusion + + tip must not occur among the children or descendants of footnote + + + + Element exclusion + + warning must not occur among the children or descendants of footnote + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph with a title + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph that contains only text and inline markup, no block elements + + + + + + + +
+
+ + + + + + Identifies the type of mark to be used on items in this list + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a bullet or other dingbat + + + + + + + + + + +
+
+ + + + + + continues + Specifies that numbering should begin where the preceding list left off + restarts + Specifies that numbering should begin again at 1 + + + + + Indicates how list numbering should begin relative to the immediately preceding list + + + + + + Specifies the initial line number + + + + + + ignore + Specifies that numbering should ignore list nesting + inherit + Specifies that numbering should inherit from outer-level lists + + + + + Indicates whether or not item numbering should be influenced by list nesting + + + + + + arabic + Specifies Arabic numeration (1, 2, 3, …) + upperalpha + Specifies upper-case alphabetic numeration (A, B, C, …) + loweralpha + Specifies lower-case alphabetic numeration (a, b, c, …) + upperroman + Specifies upper-case Roman numeration (I, II, III, …) + lowerroman + Specifies lower-case Roman numeration (i, ii, iii …) + + + + + Indicates the desired numeration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a sequentially incremented label + + + + + + + + + + +
+
+ + + + + + Specifies the keyword for the type of mark that should be used on this + item, instead of the mark that would be used by default + + + + + + + + + + + + + + + + + + + + + A wrapper for the elements of a list item + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A segmented list, a list of sets of elements + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of an element of a list item in a segmented list + + + + + + +
+
+ + + + + + + + + + + + + + + A list item in a segmented list + + Cardinality of segments and titles + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a list item in a segmented list + + + + + + +
+
+ + + + + + horiz + A tabular presentation in row-major order. + vert + A tabular presentation in column-major order. + inline + An inline presentation, usually a comma-delimited list. + + + + + Specifies the type of list presentation + + + + + + Specifies the number of columns for horizontal or vertical presentation + + + + + + + + + + + + + + + + + + + + + An undecorated list of single words or short phrases + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a simple list + + + + + + +
+
+ + + + + + Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is composed of a set of one or more terms and an associated description + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for a set of terms and the associated description in a variable list + + + + + + + +
+
+ + + + + + + + + + + + + + + The word or phrase being defined or described in a variable list + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + Identifies the type of example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal example, with a title + + Element exclusion + + example must not occur among the children or descendants of example + + + + Element exclusion + + figure must not occur among the children or descendants of example + + + + Element exclusion + + table must not occur among the children or descendants of example + + + + Element exclusion + + equation must not occur among the children or descendants of example + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed example without a title + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + monospaced + The literal layout should be formatted with a monospaced font + normal + The literal layout should be formatted with the current font + + + + + Specifies the class of literal layout + + + + + + + + + + + + + + + + + + + A block of text in which line breaks and white space are to be reproduced faithfully + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + Text that a user sees or might see on a computer screen + + + + +
+
+ + + + + + + + + + + + + + + + + + A representation of what the user sees or might see on a computer screen + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of figure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal figure, generally an illustration, with a title + + Element exclusion + + example must not occur among the children or descendants of figure + + + + Element exclusion + + figure must not occur among the children or descendants of figure + + + + Element exclusion + + table must not occur among the children or descendants of figure + + + + Element exclusion + + equation must not occur among the children or descendants of figure + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of figure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A untitled figure + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A displayed media object (video, audio, image, etc.) + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + An inline media object (video, audio, image, and so on) + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for video data and its associated meta-information + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for audio data and its associated meta-information + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for image data and its associated meta-information + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a text description of an object and its associated meta-information + + + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external video data + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external audio data + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the image data + + + + + + + + + Specifies the vertical alignment of the image data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external image data + + + + + + + +
+
+ + + + + + Identifies the encoding of the text in the external file + + + + + + + + + + + + + + + + + + + + Pointer to external text data + + + + +
+
+ + + + + + Specifies the name of the parameter + + + + + Specifies the value of the parameter + + + + + Specifies the type of the value of the parameter + + + + + + + + + + + + + + + + + + Application specific parameters for a media player + + + + +
+
+ + + + + + + + + + + + + + + + + + A caption + + Element exclusion + + example must not occur among the children or descendants of caption + + + + Element exclusion + + figure must not occur among the children or descendants of caption + + + + Element exclusion + + table must not occur among the children or descendants of caption + + + + Element exclusion + + equation must not occur among the children or descendants of caption + + + + Element exclusion + + sidebar must not occur among the children or descendants of caption + + + + Element exclusion + + task must not occur among the children or descendants of caption + + + + Element exclusion + + caution must not occur among the children or descendants of caption + + + + Element exclusion + + danger must not occur among the children or descendants of caption + + + + Element exclusion + + important must not occur among the children or descendants of caption + + + + Element exclusion + + note must not occur among the children or descendants of caption + + + + Element exclusion + + tip must not occur among the children or descendants of caption + + + + Element exclusion + + warning must not occur among the children or descendants of caption + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A real-world address, generally a postal address + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A street address in an address + + + + +
+
+ + + + + + + + + + + + + + + A post office box in an address + + + + +
+
+ + + + + + + + + + + + + + + A postal code in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a city in an address + + + + +
+
+ + + + + + + + + + + + + + + A state or province in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a country + + + + +
+
+ + + + + + + + + + + + + + + A telephone number + + + + +
+
+ + + + + + + + + + + + + + + A fax number + + + + +
+
+ + + + + + + + + + + + + + + Uncategorized information in address + + + + +
+
+ + + + + + + + + + + + + + + The institutional affiliation of an individual + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A brief description of an affiliation + + + + +
+
+ + + + + + + + + + + + + + + The title of an individual in an organization + + + + +
+
+ + + consortium + A consortium + corporation + A corporation + informal + An informal organization + nonprofit + A non-profit organization + + + + + Specifies the nature of the organization + + + + + + Specifies the nature of the organization + other + Indicates a non-standard organization class + + + Identifies the non-standard nature of the organization + + + + + + + + + + + + + + + + + + + + + + + + + + The name of an organization + + + + +
+
+ + + + + + + + + + + + + + + A division of an organization + + + + + + +
+
+ + + + + + + + + + + + + + + The page numbers of an article as published + + + + +
+
+ + + + + + + + + + + + + + + The personal name of an individual + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The name of an individual author + + + + +
+
+ + + + + + + + + + + + + + + Wrapper for author information when a document has multiple authors or collaborators + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Identifies a collaborator + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The initials or other short identifier for an author + + + + +
+
+ + + + + + + + + + + + + + + A person and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An organization and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for document meta-information about a conference + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The dates of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The title of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + An identifier, frequently numerical, associated with a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The contract number of a document + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a contract + + + + +
+
+ + + + + + + + + + + + + + + Copyright information about a document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The year of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the individual or organization that holds a copyright + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + Additional content for the cover of a publication + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + The date of publication or revision of a document + + + + +
+
+ + + + + + + + + + + + + + + The name or number of an edition of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the editor of a document + + + + +
+
+ + + + + + + + + + + + + + + + An identifier for a document + + + + +
+
+ + + + + + + + + + + + + + + + A citation of a bibliographic identifier + + + + +
+
+ + + + + + + + + + + + + + + + The source of a document + + + + +
+
+ + + hasformat + The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + haspart + The described resource includes the referenced resource either physically or logically + hasversion + The described resource has a version, edition, or adaptation, namely, the referenced resource + isformatof + The described resource is the same intellectual content of the referenced resource, but presented in another format + ispartof + The described resource is a physical or logical part of the referenced resource + isreferencedby + The described resource is referenced, cited, or otherwise pointed to by the referenced resource + isreplacedby + The described resource is supplanted, displaced, or superceded by the referenced resource + isrequiredby + The described resource is required by the referenced resource, either physically or logically + isversionof + The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + references + The described resource references, cites, or otherwise points to the referenced resource + replaces + The described resource supplants, displaces, or supersedes the referenced resource + requires + The described resource requires the referenced resource to support its function, delivery, or coherence of content + + + + + + Identifies the type of relationship + + + + + + + + Identifies the type of relationship + othertype + The described resource has a non-standard relationship with the referenced resource + + + + A keyword that identififes the type of the non-standard relationship + + + + + + + + + + + + + + + + + + + + + + + + + + The relationship of a document to another + + + + +
+
+ + + dcmipoint + The DCMI Point identifies a point in space using its geographic coordinates + iso3166 + ISO 3166 Codes for the representation of names of countries + dcmibox + The DCMI Box identifies a region of space using its geographic limits + tgn + The Getty Thesaurus of Geographic Names + + + + + + Specifies the type of spatial coverage + + + + + + + + Specifies the type of spatial coverage + otherspatial + Identifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + dcmiperiod + A specification of the limits of a time interval + w3c-dtf + W3C Encoding rules for dates and times—a profile based on ISO 8601 + + + + + + Specifies the type of temporal coverage + + + + + + + + Specifies the type of temporal coverage + othertemporal + Specifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The spatial or temporal coverage of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A statement of legal obligations or requirements + + + + + + + +
+
+ + + copyeditor + A copy editor + graphicdesigner + A graphic designer + productioneditor + A production editor + technicaleditor + A technical editor + translator + A translator + indexer + An indexer + proofreader + A proof-reader + coverdesigner + A cover designer + interiordesigner + An interior designer + illustrator + An illustrator + reviewer + A reviewer + typesetter + A typesetter + conversion + A converter (a persons responsible for conversion, not an application) + + + + + + Identifies the nature of the contributor + + + + + + + Identifies the nature of the non-standard contribution + + + + + + + Identifies the nature of the contributor + other + Identifies a non-standard contribution + + + + + + + + + + + + + + + + + + + + + + + + + + A person or entity, other than an author or editor, credited in a document + + + + +
+
+ + + + + + + + + + + + + + + The numbers of the pages in a book, for use in a bibliographic entry + + + + +
+
+ + + + + + + + + + + + + + + A summary of the contributions made to a document by a credited source + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a person + + + + +
+
+ + + + + + + + + + + + + + + A given name of a person + + + + +
+
+ + + + + + + + + + + + + + + The given name of a person + + + + +
+
+ + + + + + + + + + + + + + + An inherited or family name; in western cultures the last name + + + + +
+
+ + + + + + + + + + + + + + + The portion of a person's name indicating a relationship to ancestors + + + + +
+
+ + + + + + + + + + + + + + + A component of a person's name that is not a first name, surname, or lineage + + + + +
+
+ + + + + + + + + + + + + + + The printing history of a document + + + + + + +
+
+ + + + + + + + + + + + + + + The date of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The publisher of a document + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of the publisher of a document + + + + +
+
+ + + + + + + + + + + + + + + Information about a particular release of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A history of the revisions to a document + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry describing a single revision in the history of the revisions to a document + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A document revision number + + + + +
+
+ + + + + + + + + + + + + + + A description of a revision to a document + + + + +
+
+ + + + + + + + + + + + + + + A extended description of a revision to a document + + + + + + +
+
+ + + + + + + + + + + + + + + Numbers of the volumes in a series of books + + + + +
+
+ + + + + + + + + + + + + + + The volume number of a document in a set (as of books in a set or articles in a journal) + + + + +
+
+ + + + + + + + + + + + + + + The number of an issue of a journal + + + + +
+
+ + + + + + A name for the metadata element + + + + + The metadata content + + + + + + + + + + + + + + + + + A generic metadata element + + + + + + + + A generic metadata element + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A software or application package + + + + +
+
+ + + + + + + + + + + + + + + An email address + + + + +
+
+ + + + + + + + + + + + + + + A comment on a line in a verbatim listing + + + + +
+
+ + + command + A command + function + A function + option + An option + + + + + Identifies the class of parameter + + + + + + + + + + + + + + + + + + + + + A value or a symbolic reference to a value + + + + +
+ + + + + + +
+ + + command + A command + function + A function + option + An option + parameter + A parameter + + + + + Identifies the nature of the replaceable text + + + + + + + + + + + + + + + + + + + + + Content that may or must be replaced by the user + + + + + + +
+
+ + + + Identifies the type of URI specified + + + + + + + + + + + + + + + + + + + A Uniform Resource Identifier + + + + +
+
+ + + + + + + + + + + + + + + An abbreviation, especially one followed by a period + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An often pronounceable word made from the initial (or selected) letters of a name or phrase + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An inline bibliographic reference to another published work + + + + + + +
+
+ + + + + + + + + + + + + + + A citation to a reference page + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A reference volume number + + + + +
+
+ + + + + + Identifies the nature of the publication being cited + + + + + + Identifies the nature of some other kind of publication being cited + + + + + + + Identifies that this is some other kind of publication being cited + other + Indicates that the published work is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + The title of a cited work + + + + + + +
+
+ + + + + + + + + + + + + + + Emphasized text + + + + + + +
+
+ + + A limited span of emphasized text + + + + +
+
+ + + + + + + + + + + + + + + A word or phrase in a language other than the primary language of the document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A limited word or phrase in a language other than the primary language of the document + + + + +
+
+ + + + + + + + + + + + + + + A span of text + + + + + + +
+
+ + + A limited span of text + + + + +
+
+ + + + + + + + + + + + + + + An inline quotation + + + + + + +
+
+ + + + + + + + + + + + + + + A limited inline quotation + + + + +
+
+ + + + + + + + + + + + + + + A subscript (as in Hâ‚‚O, the molecular formula for water) + + + + +
+
+ + + + + + + + + + + + + + + A superscript (as in x², the mathematical notation for x multiplied by itself) + + + + +
+
+ + + copyright + A copyright + registered + A registered copyright + service + A service + trade + A trademark + + + + + Identifies the class of trade mark + + + + + + + + + + + + + + + + + + + + + A trademark + + + + +
+
+ + + + + + + + + + + + + + + A word meant specifically as a word and not representing anything else + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a footnote (a footnote mark) + + Footnote reference type constraint + + @linkend on footnoteref must point to a footnote. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A cross reference to another part of the document + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A hypertext link + + + + + + +
+
+ + + + + + + + + Holds additional information that may be used by the application when resolving the link + + + + + Specifies the URI of the document in which the link target appears + + + + + + Specifies the location of the link target in the document + + + + + Identifies application-specific customization of the link behavior + + + + + + + + + + + + + + + + + + + + + + + + + + + + A link that addresses its target indirectly + + + + + + +
+
+ + + + + + + + + + + + + + A spot in the document + + + + +
+
+ + + + + + + + + + + + + + A text-only annotation, often used for accessibility + + + + + + + + + +
+
+ + + Holds style of formalgroup - this can be used to specify desired layout and positioning of subfigures + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A group of formal objects, for example subfigures + + + + + + + + + + + + + + + + + + +
+ + + Identifies the editorial or publication status of the element on which it occurs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of books + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A book + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + The dedication of a book or other component + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Acknowledgements of a book or other component + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Text at the back of a book describing facts about its production + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An appendix in a book or article + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A chapter, as of a book + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a book + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Introductory matter preceding the first chapter of a book + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An introduction to the contents of a part + + + + + + + +
+
+ + + + + legal + A section of legal obligations or requirements + + + + Identifies the nature of the section + + + + + + Identifies a non-standard section class + + + + + + + Indicates that a non-standard section class is applied + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a document with no subdivisions + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + faq + A collection of frequently asked questions. + journalarticle + An article in a journal or other periodical. + productsheet + A description of a product. + specification + A specification. + techreport + A technical report. + whitepaper + A white paper. + + + + + Identifies the nature of the article + + + + + + Identifies the nature of the non-standard article + + + + + + + Identifies the nature of the article + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An article + + + + + + + + + + + + + + + + + + + + + +
+ + + Identifies one or more annotations that apply to this element + + +
+ + + + + + Identifies one or more elements to which this annotation applies + + + + + + + + + + + + + + + + + + + An annotation + + Element exclusion + + annotation must not occur among the children or descendants of annotation + + + + + + + + + +
+ + + Identifies the XLink extended link type + + XLink extended placement + + An XLink extended type element may not occur as the direct child of an XLink extended type element. + + + extended + An XLink extended link type + + + + + Identifies the XLink locator link type + + XLink locator placement + + An XLink locator type element must occur as the direct child of an XLink extended type element. + + + locator + An XLink locator link type + + + + + Identifies the XLink arc link type + + XLink arc placement + + An XLink arc type element must occur as the direct child of an XLink extended type element. + + + arc + An XLink arc link type + + + + + Identifies the XLink resource link type + + XLink resource placement + + An XLink resource type element must occur as the direct child of an XLink extended type element. + + + resource + An XLink resource link type + + + + + Identifies the XLink title link type + + XLink title placement + + An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element. + + + title + An XLink title link type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the XLink traversal-from + + + + + + Specifies the XLink label + + + + + + Specifies the XLink traversal-to + + + +
+ + + + + + + + + + + + Identifies the XLink link type + extended + An XLink extended link + + + + + + + + + + + + + An XLink extended link + + + + + + + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + locator + An XLink locator link + + + + + + + + + + + + + + + + + An XLink locator in an extendedlink + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + arc + An XLink arc link + + + + + + + + + + + + + + + + + + + + + + + + + An XLink arc in an extendedlink + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A top-level section of document + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect1 + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect2 + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect3 + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect4 + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of reference entries + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A reference page (originally a UNIX man-style reference page) + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Meta-information for a reference entry + + + + + + + + + + + + + + + + +
+ + + source + The name of the software product or component to which this topic applies + version + The version of the software product or component to which this topic applies + manual + The section title of the reference page (e.g., User Commands) + sectdesc + The section title of the reference page (believed synonymous with "manual" but in wide use) + software + The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + + + + + + Identifies the kind of miscellaneous information + + + + + + + Identifies the nature of non-standard miscellaneous information + + + + + + Identifies the kind of miscellaneious information + other + Indicates that the information is some 'other' kind. + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + Meta-information for a reference entry other than the title and volume number + + + + +
+
+ + + + + + + + + + + + + + + The name, purpose, and classification of a reference page + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A description of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The name of (one of) the subject(s) of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A short (one sentence) synopsis of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The scope or other indication of applicability of a reference entry + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntactic synopsis of the subject of the reference page + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section in a refentry + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A major subsection of a reference entry + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect1 + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect2 + + + + + + + +
+ + + + + + + + + + + + Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for a list of glossary entries + + + + + + + + + + + + +
+
+ + + + + + Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + + + + + + + + + + + + + + + + + An entry in a glossary or glosslist + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + Specifies a list of keywords for the definition + + + + + + + + + + + + + + + + + A definition in a glossentry + + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry + to another + + Glosssary 'see' type constraint + + @otherterm on glosssee must point to a glossentry. + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry to another + + Glossary 'seealso' type constraint + + @otherterm on glossseealso must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term, with limited content + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A glossary + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a glossary + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + An inline definition of a term + + Glossary term definition constraint + + A termdef must contain exactly one firstterm + + + + + + + + +
+ + + Identifies the relationship between the bibliographic elemnts + + +
+ + + + + + + + + + + + + + + + + + + + + A raw entry in a bibliography + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked entry in a bibliography + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A raw container for related bibliographic information + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked container for related bibliographic information + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Untyped bibliographic information + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A bibliography + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a bibliography + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a list of bibliography entries + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + The units (for example, pages) used to identify the beginning and ending of a reference. + + + + + + Identifies the beginning of a reference; the location within the work that is being referenced. + + + + + + Identifies the end of a reference. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cross-reference to a bibliographic entry + + + + +
+ + + normal + Normal + preferred + Preferred + + + + + Specifies the significance of the term + + + + + + Specifies the IDs of the elements to which this term applies + + + + + + Indicates the page on which this index term occurs in some version of the printed document + + + + + all + All indexes + global + The global index (as for a combined index of a set of books) + local + The local index (the index for this document only) + + + + + Specifies the scope of the index term + + + + + + Specifies the string by which the term is to be sorted; if unspecified, the term content is used + + + + + Specifies the target index for this term + + +
+ + + + + + + + + + + + + + + A set of index terms in the meta-information of a document + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + Identifies the class of index term + singular + A singular index term + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term + + + + +
+
+ + + + + + Identifies the class of index term + startofrange + The start of a range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term that covers a range + + + + +
+
+ + + + + + Identifies the class of index term + endofrange + The end of a range + + + + + Points to the start of the range + + + + + + + + + + + + + + + + + Identifies the end of a range associated with an indexed term + + Indexterm 'startref' type constraint + + @startref on indexterm must point to an indexterm. + @startref on indexterm must point to a startofrange indexterm. + + + + + + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary word or phrase under which an index term should be sorted + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A secondary word or phrase in an index term + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A tertiary word or phrase in an index term + + + + + + +
+
+ + + + + + Identifies the class of 'see' + + normal + Normal + under + See 'under' + + + + + + + + + + + + + + + + + + Part of an index term directing the reader instead to another entry in the index + + + + + + +
+
+ + + + + + Identifies the class of 'seealso' + + normal + Normal + under + See 'under' + + + + + + + + + + + + + + + + + + Part of an index term directing the reader also to another entry in the index + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a book or part of a book + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a set of books + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in an index + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry in an index + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + A primary term in an index entry, not in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A secondary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A tertiary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See +entry in an index, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See also + entry in an index, rather than in the text + + + + + + +
+ + + Indicates the page on which this element occurs in some version of the printed document + + +
+ + + + + + + + + + + + + + + + + + A table of contents + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + A division in a table of contents + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A component title in a table of contents + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + A task to be completed + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary of a task + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The prerequisites for a task + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + Information related to a task + + + + + + + +
+ + + calspair + Coordinates expressed as a pair of CALS graphic coordinates. + linecolumn + Coordinates expressed as a line and column. + linecolumnpair + Coordinates expressed as a pair of lines and columns. + linerange + Coordinates expressed as a line range. + + + + + + Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair + for graphics and linecolumn + for line-oriented elements. + + + + + + + + Indicates that non-standard units are used for this area +. In this case otherunits + must be specified. + other + Coordinates expressed in some non-standard units. + + + + Identifies the units used in the coords + attribute when the units + attribute is other +. This attribute is forbidden otherwise. + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A list of callout +s + + + + + + + + + + +
+
+ + + + + + Identifies the areas described by this callout. + + + + + + + + + + + + + + + + A called out + description of a marked area + + Callout cross reference constraint + + @arearefs on callout must point to a areaset, area, or co. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A program listing with associated areas used in callouts + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A collection of regions in a graphic or code example + + + + + + + + + +
+
+ + + + + + Point to the callout +s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + + + + + + Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + + + + + Provides the coordinates of the area. The coordinates must be interpreted using the units + specified. + + + + + + + + + + + + + + + + + + + + + + + + A region defined for a callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A region defined for a callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A set of related areas in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A screen with associated areas used in callouts + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for an image object with callouts + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + The location of a callout embedded in text + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a co + + + + +
+
+ + + + + + + + + + + + + + + + + + A set of EBNF productions + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A production in a set of EBNF productions + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The left-hand side of an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + The right-hand side of an EBNF production + + + + + + + + + + + +
+
+ + + + + + Specifies a URI that points to a production +where the nonterminal + is defined + + + + + + + + + + + + + + + + A non-terminal in an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + A constraint in an EBNF production + + Constraint cross reference constraint + + @linkend on constraint must point to a constraintdef. + + + + + + +
+
+ + + + + + + + + + + + + + + A cross-reference to an EBNF production + + Production recap cross reference constraint + + @linkend on productionrecap must point to a production. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The definition of a constraint in an EBNF production + + + + + + + +
+ + + Specifies the alignment character when align + is set to char +. + + + + + Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + when align + is set to char +. + + 0 + 100 + + + + + + Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + + all + Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + bottom + Frame only the bottom of the table. + none + Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + sides + Frame the left and right sides of the table. + top + Frame the top of the table. + topbot + Frame the top and bottom of the table. + + + + + + Specifies the presence or absence of the column separator + + 0 + No column separator rule. + 1 + Provide a column separator rule on the right + + + + + + Specifies the presence or absence of the row separator + + 0 + No row separator rule. + 1 + Provide a row separator rule below + + + + + + Specifies the orientation of the table + + land + 90 degrees counter-clockwise from the rest of the text flow. + port + The same orientation as the rest of the text flow. + + + + + + Specifies the table style + + + + + Indicates whether or not the entries in the first column should be considered row headers + + firstcol + Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + headers + Indicates that row headers are identified by use of the headers attribute on entries in the table. + norowheader + Indicates that entries in the first column have no special significance with respect to column headers. + + + + + + Specifies the horizontal alignment of text in an entry. + + center + Centered. + char + Aligned on a particular character. + justify + Left and right justified. + left + Left justified. + right + Right justified. + + + + + + Specifies the vertical alignment of text in an entry. + + bottom + Aligned on the bottom of the entry. + middle + Aligned in the middle. + top + Aligned at the top of the entry. + + + + + + Specifies a column specification by name. + + + + + Specifies a starting column by name. + + + + + Specifies a span by name. + + + + + + Specifies a starting column by name. + + + Specifies an ending column by name. + + + + + + + + + + + + + + Provides a name for a column specification. + + + + + Provides a name for a span specification. + + +
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for the main content of a table, or part of a table + + + + + + + + + + + + + + + + +
+
+ + + + + + The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + + + + + + Specifies the width of the column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifications for a column in a table + + + + +
+
+ + + + + + Specifies a starting column by name. + + + + + Specifies an ending column by name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Formatting information for a spanned column in a table + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table footer consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + + + + +
+
+ + + + + + Specifies the number of additional rows which this entry occupies. Defaults to zero. + + + + + + Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + + 0 + Do not rotate the cell. + 1 + Rotate the cell 90 degrees counter-clockwise. + + + + + + Specifies the scope of a header. + + row + Applies to the row + col + Applies to the column + rowgroup + Applies to the row group + colgroup + Applies to the column group + + + + + + Specifies the entry or entries which serve as headers for this element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cell in a table + + Element exclusion + + table must not occur among the children or descendants of entry + + + + Element exclusion + + informaltable must not occur among the children or descendants of entry + + + + + + + + + + + + + +
+
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the entry table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subtable appearing in place of an entry in a table + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + +
+
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates if the short or long title should be used in a List of Tables + + 0 + Indicates that the full title should be used. + 1 + Indicates that the short short title (titleabbrev) should be used. + + + + + + Indicates if the table should appear in a List of Tables + + 0 + Indicates that the table should not occur in the List of Tables. + 1 + Indicates that the table should appear in the List of Tables. + + + + + + + + + + + + + + A formal table in a document + + Element exclusion + + example must not occur among the children or descendants of table + + + + Element exclusion + + figure must not occur among the children or descendants of table + + + + Element exclusion + + equation must not occur among the children or descendants of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A table without a title + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + + + + + This attribute specifies style information for the current element. + + + + + This attribute offers advisory information about the element for which it is set. + + + + + + + + This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + + + + + + + + Occurs when the pointing device button is clicked over an element. + + + + + Occurs when the pointing device button is double clicked over an element. + + + + + Occurs when the pointing device button is pressed over an element. + + + + + Occurs when the pointing device button is released over an element. + + + + + Occurs when the pointing device is moved onto an element. + + + + + Occurs when the pointing device is moved while it is over an element. + + + + + Occurs when the pointing device is moved away from an element. + + + + + Occurs when a key is pressed and released over an element. + + + + + Occurs when a key is pressed down over an element. + + + + + Occurs when a key is released over an element. + + + + + + + + + + + + + + + + + Specifies the alignment of data and the justification of text in a cell. + + left + Left-flush data/Left-justify text. This is the default value for table data. + center + Center data/Center-justify text. This is the default value for table headers. + right + Right-flush data/Right-justify text. + justify + Double-justify text. + char + Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + + + + + + This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + + + + + When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + + + An explicit offset. + + [0-9]+% + + A percentage offset. + + + + + + + + + Specifies the vertical position of data within a cell. + + top + Cell data is flush with the top of the cell. + middle + Cell data is centered vertically within the cell. This is the default value. + bottom + Cell data is flush with the bottom of the cell. + baseline + All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + + + + + + + + + Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + + + + + Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + + + An explicit width. + + [0-9]+% + + A percentage width. + + + + + + Specifies the width (in pixels only) of the frame around a table. + + + + + + Specifies which sides of the frame surrounding a table will be visible. + + void + No sides. This is the default value. + above + The top side only. + below + The bottom side only. + hsides + The top and bottom sides only. + lhs + The left-hand side only. + rhs + The right-hand side only. + vsides + The right and left sides only. + box + All four sides. + border + All four sides. + + + + + + Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + + none + No rules. This is the default value. + groups + Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + rows + Rules will appear between rows only. + cols + Rules will appear between columns only. + all + Rules will appear between all rows and columns. + + + + + + Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + + + An explicit spacing. + + [0-9]+% + + A percentage spacing. + + + + + + Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + + + An explicit padding. + + [0-9]+% + + A percentage padding. + + + + + + + + + + Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + + + + + This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + + + + + Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + + + + + Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + + row + The current cell provides header information for the rest of the row that contains it + col + The current cell provides header information for the rest of the column that contains it. + rowgroup + The header cell provides header information for the rest of the row group that contains it. + colgroup + The header cell provides header information for the rest of the column group that contains it. + + + + + + Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all rows from the current row to the last row of the table section (thead +, tbody +, or tfoot +) in which the cell is defined. + + + + + + Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all columns from the current column to the last column of the column group (colgroup +) in which the cell is defined. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal (captioned) HTML table in a document + + Element exclusion + + example must not occur among the children or descendants of table + + + + Element exclusion + + figure must not occur among the children or descendants of table + + + + Element exclusion + + equation must not occur among the children or descendants of table + + + + + + +
+
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An HTML table without a title + + + + +
+
+ + + + + + An HTML table caption + + Element exclusion + + example must not occur among the children or descendants of caption + + + + Element exclusion + + figure must not occur among the children or descendants of caption + + + + Element exclusion + + table must not occur among the children or descendants of caption + + + + Element exclusion + + equation must not occur among the children or descendants of caption + + + + Element exclusion + + sidebar must not occur among the children or descendants of caption + + + + Element exclusion + + task must not occur among the children or descendants of caption + + + + Element exclusion + + caution must not occur among the children or descendants of caption + + + + Element exclusion + + danger must not occur among the children or descendants of caption + + + + Element exclusion + + important must not occur among the children or descendants of caption + + + + Element exclusion + + note must not occur among the children or descendants of caption + + + + Element exclusion + + tip must not occur among the children or descendants of caption + + + + Element exclusion + + warning must not occur among the children or descendants of caption + + + + + + + + +
+
+ + + + + + This attribute, whose value must be an integer > 0, specifies the number of columns spanned + by the col + element; the col + element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + element shares its attributes with the next N-1 columns. + + + + + + Specifies a default width for each column spanned by the current col + element. It has the same meaning as the width + attribute for the colgroup + element and overrides it. + + + + + + + + + Specifications for a column in an HTML table + + + + +
+
+ + + + + + This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + element contains one or more col + elements. + + + + + + This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + element. + + + + + + + + + A group of columns in an HTML table + + + + + + +
+
+ + + + + + + + + + A table header consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A table footer consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A wrapper for the rows of an HTML table or informal HTML table + + + + + + +
+
+ + + + + + + + + + A row in an HTML table + + + + + + + + + +
+
+ + + + + + + + + + + A table header entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + A table entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A detailed set of messages, usually error messages + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for an entry in a message set + + + + + + + + + + + + +
+
+ + + + + + The audience to which the message relevant + + + + + The origin of the message + + + + + The level of importance or severity of a message + + + + + + + + + + + + + + + + + + + + + + + A wrapper for a simpler entry in a message set + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A message in a message set + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary component of a message in a message set + + + + + +
+
+ + + + + + + + + + + + + + + + + + A subcomponent of a message in a message set + + + + + +
+
+ + + + + + + + + + + + + + + + + + A related component of a message in a message set + + + + + +
+
+ + + + + + + + + + + + + + + The actual text of a message component in a message set + + + + + + +
+
+ + + + + + + + + + + + + + + Information about a message in a message set + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The level of importance or severity of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The origin of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The audience to which a message in a message set is relevant + + + + +
+
+ + + + + + + + + + + + + + + + + + Explanatory material relating to a message in a message set + + + + + + + +
+
+ + + + + + none + No labels + number + Numeric labels + qanda + "Q:" and "A:" labels + + + + + Specifies the default labelling + + + + + + + + + + + + + + + + + + + + + A question-and-answer set + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A titled division in a qandaset + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A question/answer set within a qandaset + + + + + + + + +
+
+ + + + + + + + + + + + + + + A question in a qandaset + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An answer to a question posed in a qandaset + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A label on a question or answer + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + Identifies the type of equation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation + + Element exclusion + + example must not occur among the children or descendants of equation + + + + Element exclusion + + figure must not occur among the children or descendants of equation + + + + Element exclusion + + table must not occur among the children or descendants of equation + + + + Element exclusion + + equation must not occur among the children or descendants of equation + + + + + + + + + + + + + +
+
+ + + + + + + Identifies the type of equation + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation without a title + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical equation or expression occurring inline + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical phrase that can be represented with ordinary text and a small amount of markup + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + Specifies that the format of the data is MathML + mathml + Specifies MathML. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A MathML expression in a media object + + + + + + + +
+
+ + + Any element from the MathML namespace + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + Specifies that the format of the data is SVG + svg + Specifies SVG. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An SVG drawing in a media object + + + + + + + +
+
+ + + Any element from the SVG namespace + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A string of formatting markup in text that is to be represented literally + + + + +
+
+ + + + + + attribute + An attribute + attvalue + An attribute value + element + An element + emptytag + An empty element tag + endtag + An end tag + genentity + A general entity + localname + The local name part of a qualified name + namespace + A namespace + numcharref + A numeric character reference + paramentity + A parameter entity + pi + A processing instruction + prefix + The prefix part of a qualified name + comment + An SGML comment + starttag + A start tag + xmlpi + An XML processing instruction + + + + + Identifies the nature of the tag content + + + + + + Identifies the namespace of the tag content + + + + + + + + + + + + + + + + + + + + + A component of XML (or SGML) markup + + + + + + + + + +
+
+ + + Identifies the class of symbol + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A name that is replaced by a value before processing + + + + +
+
+ + + + + + + + + + + + + + + A unit of information + + + + +
+
+ + + + + + + + + + + + + + + Inline text that is some literal value + + + + +
+
+ + + Identifies the (computer) language of the code fragment + + + + + + + + + + + + + + + + + + + + An inline code fragment + + + + + + + + + +
+
+ + + Identifies the class of constant + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A programming or system constant + + + + +
+
+ + + + + + copyright + A name with a copyright + registered + A name with a registered copyright + service + A name of a service + trade + A name which is trademarked + + + + + Specifies the class of product name + + + + + + + + + + + + + + + + + + The formal name of a product + + + + +
+
+ + + + + + + + + + + + + + + A number assigned to a product + + + + +
+
+ + + altkey + An alternate or secondary key + constraint + A constraint + datatype + A data type + field + A field + foreignkey + A foreign key + group + A group + index + An index + key1 + The first or primary key + key2 + An alternate or secondary key + name + A name + primarykey + The primary key + procedure + A (stored) procedure + record + A record + rule + A rule + secondarykey + The secondary key + table + A table + user + A user + view + A view + + + + + Identifies the class of database artifact + + + + + + + + + + + + + + + + + + + + + The name of a database, or part of a database + + + + +
+
+ + + hardware + A hardware application + software + A software application + + + + + Identifies the class of application + + + + + + + + + + + + + + + + + + + + + The name of a software program + + + + +
+
+ + + + + + + + + + + + + + + A physical part of a computer system + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text on a button in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Graphic and/or text appearing as a icon in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The text of a label in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a menu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a terminal menu item in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a submenu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A selection or series of selections from a menu + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The conventional name of a mouse button + + + + +
+ + + + + + + + + + +
+ + + alt + The "Alt" key + altgr + The "Alt Graph" key + backspace + The "Backspace" key + command + The "Command" key + control + The "Control" key + delete + The "Delete" key + down + The down arrow + end + The "End" key + enter + The "Enter" key + escape + The "Escape" key + home + The "Home" key + insert + The "Insert" key + left + The left arrow + meta + The "Meta" key + option + The "Option" key + pagedown + The page down key + pageup + The page up key + right + The right arrow + return + The "Return" key + shift + The "Shift" key + space + The spacebar + tab + The "Tab" key + up + The up arrow + + + + + + Identifies the function key + + + + + + + + Identifies the function key + other + Indicates a non-standard function key + + + + Specifies a keyword that identifies the non-standard key + + + + + + + + + + + + + + + + + + + + + + + + The text printed on a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + The internal, frequently numeric, identifier for a key on a keyboard + + + + +
+ + + + + + + + + + +
+ + + click + A (single) mouse click. + double-click + A double mouse click. + press + A mouse or key press. + seq + Sequential clicks or presses. + simul + Simultaneous clicks or presses. + + + + + + Identifies the nature of the action taken. If keycombo + contains more than one element, simul + is the default, otherwise there is no default. + + + + + + + + Identifies the nature of the action taken + other + Indicates a non-standard action + + + + Identifies the non-standard action in some unspecified way. + + + + + + + + + + + + + + + + + + + + + + + + A combination of input actions + + + + + + +
+
+ + + + + + + + + + + + + + + The symbolic name of a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + A graphical user interface (GUI) keyboard shortcut + + + + +
+
+ + + + + + + + + + + + + + + + + + + A key combination for an action that is also accessible through a menu + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A character or string indicating the start of an input field in a computer display + + + + + + +
+
+ + + + + + + + + + + + + + + A software environment variable + + + + +
+
+ + + devicefile + A device + directory + A directory + extension + A filename extension + headerfile + A header file (as for a programming language) + libraryfile + A library file + partition + A partition (as of a hard disk) + symlink + A symbolic link + + + + + Identifies the class of filename + + + + + + Specifies the path of the filename + + + + + + + + + + + + + + + + + + + + + + + The name of a file + + + + +
+
+ + + + + + + + + + + + + + + The name of an executable program or other software command + + + + +
+
+ + + + + + + + + + + + + + + Data, generally text, displayed or presented by a computer + + + + + + +
+
+ + + + + + + + + + + + + + + Data entered by the user + + + + + + +
+
+ + + + + + Specifies the character that should separate the command and its top-level arguments + + + + + Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A syntax summary for a software command + + + + + + + + + + + + + + + +
+ + + norepeat + Can not be repeated. + repeat + Can be repeated. + + + + + Indicates whether or not repetition is possible. + + + + + + opt + Formatted to indicate that it is optional. + plain + Formatted without indication. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + Indicates optionality. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An argument in a cmdsynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A group of elements in a cmdsynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + An explicit line break in a command synopsis + + + + +
+
+ + + + + + + + + + + + + + + A portion of a cmdsynopsis broken out from the main body of the synopsis + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A reference to a fragment of a command synopsis + + Synopsis fragment type constraint + + @linkend on synopfragmentref must point to a synopfragment. + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + A general-purpose element for representing the syntax of commands or functions + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing synopsis + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a function definition + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the funcdefs of a funcsynopsis + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a function + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A function (subroutine) name and its return type + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a function or subroutine, as in a programming language + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating that the function in question takes no arguments + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating a variable number of arguments + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A group of parameters + + + + + + + + + +
+
+ + + + + + opt + Formatted to indicate that it is optional. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + + + + + + + + + + + + + Information about a function parameter in a programming language + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Parameters for a function referenced through a function pointer in a synopsis + + + + +
+
+ + + + + + + + + class + This is the synopsis of a class + interface + This is the synopsis of an interface + + + + + Specifies the nature of the synopsis + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for a class definition + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the contents of a classsynopsis + + + + +
+
+ + + + + + + + + + + + + + + A class in an object-oriented programming language + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An interface in an object-oriented programming language + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An exception in an object-oriented programming language + + + + + + + + + + + + + +
+ + + Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + preserve + Extra whitespace and line breaks must be preserved. + + + +
+ + + + + + + + + + + + + + + + + + Modifiers in a synopsis + + + + +
+
+ + + + + + + + + + + + + + + The name of an interface + + + + +
+
+ + + + + + + + + + + + + + + The name of an exception + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The name of a field in a class definition + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + The initializer for a fieldsynopsis + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a constructor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a destructor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a method + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a method + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Parameters to a method + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A group of method parameters + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a variable + + + + +
+
+ + + + + + + + + + + + + + + Target of a build + + + + +
+
+ + + + + + + + + + + + + + + The value returned by a function + + + + +
+
+ + + + + + union + Combined type is union of nested types + intersection + Combined type is intersection of nested types + + + + + Specifies the way how are nested types combined together + + + + + + + + + + + + + + + + + + The classification of a value + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a class, in the object-oriented programming sense + + + + +
+
+ + + + + + + + + + + + + + + The identifier for a template, in the generic programming sense + + + + +
+
+ + + + + + + + + + + + + + + The definition of a template, in the generic programming sense + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The specialization of a template identifier, in the generic programming sense + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a package definition + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a macro (a code-generating function) + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a macro definition (code-generating function) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a macro (code-generating function) + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A macro name and its return type + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a union of types + + + + +
+
+ + + + + + + + + + + + + + + The definition of a union of types, which may be more than a name + + + + + + +
+
+ + + + + + + + + + Indicates how the value of a union is specified. + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for a union-of-types definition + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of an enumeration + + + + +
+
+ + + + + + + + + + + + + + + The value an enumerated type can take + + + + +
+
+ + + + + + + + + + + + + + + The description of a value an enumerated type can take + + + + + + +
+
+ + + + + + + + + + + + + + + The identifier of a value an enumerated type can take + + + + +
+
+ + + + + + + + + + + + + + + A value an enumerated type can take and its description + + + + + + + + + + +
+
+ + + + + + + + + 0 + Value of enum is specified explicitly using enumvalue + 1 + Value of enum is inferred from its position + + + + + Indicates how the value of an enumeration is specified. + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for an enumerated-type definition + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a type alias + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a type-alias definition + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A literal listing of all or part of a program + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A note of caution + + Element exclusion + + caution must not occur among the children or descendants of caution + + + + Element exclusion + + danger must not occur among the children or descendants of caution + + + + Element exclusion + + important must not occur among the children or descendants of caution + + + + Element exclusion + + note must not occur among the children or descendants of caution + + + + Element exclusion + + tip must not occur among the children or descendants of caution + + + + Element exclusion + + warning must not occur among the children or descendants of caution + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text indicating hazardous situation + + Element exclusion + + caution must not occur among the children or descendants of danger + + + + Element exclusion + + danger must not occur among the children or descendants of danger + + + + Element exclusion + + important must not occur among the children or descendants of danger + + + + Element exclusion + + note must not occur among the children or descendants of danger + + + + Element exclusion + + tip must not occur among the children or descendants of danger + + + + Element exclusion + + warning must not occur among the children or descendants of danger + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + Element exclusion + + caution must not occur among the children or descendants of important + + + + Element exclusion + + danger must not occur among the children or descendants of important + + + + Element exclusion + + important must not occur among the children or descendants of important + + + + Element exclusion + + note must not occur among the children or descendants of important + + + + Element exclusion + + tip must not occur among the children or descendants of important + + + + Element exclusion + + warning must not occur among the children or descendants of important + + + + + + +
+
+ + + + + + + + + + + + + + + A message set off from the text + + Element exclusion + + caution must not occur among the children or descendants of note + + + + Element exclusion + + danger must not occur among the children or descendants of note + + + + Element exclusion + + important must not occur among the children or descendants of note + + + + Element exclusion + + note must not occur among the children or descendants of note + + + + Element exclusion + + tip must not occur among the children or descendants of note + + + + Element exclusion + + warning must not occur among the children or descendants of note + + + + + + +
+
+ + + + + + + + + + + + + + + A suggestion to the user, set off from the text + + Element exclusion + + caution must not occur among the children or descendants of tip + + + + Element exclusion + + danger must not occur among the children or descendants of tip + + + + Element exclusion + + important must not occur among the children or descendants of tip + + + + Element exclusion + + note must not occur among the children or descendants of tip + + + + Element exclusion + + tip must not occur among the children or descendants of tip + + + + Element exclusion + + warning must not occur among the children or descendants of tip + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + Element exclusion + + caution must not occur among the children or descendants of warning + + + + Element exclusion + + danger must not occur among the children or descendants of warning + + + + Element exclusion + + important must not occur among the children or descendants of warning + + + + Element exclusion + + note must not occur among the children or descendants of warning + + + + Element exclusion + + tip must not occur among the children or descendants of warning + + + + Element exclusion + + warning must not occur among the children or descendants of warning + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + An error code + + + + +
+
+ + + + + + + + + + + + + + + An error name + + + + +
+
+ + + + + + + + + + + + + + + An error message. + + + + +
+
+ + + + + + + + + + + + + + + The classification of an error message + + + + +
+ + + + + + +
+ + + daemon + A daemon or other system process (syslogd) + domainname + A domain name (example.com) + etheraddress + An ethernet address (00:05:4E:49:FD:8E) + event + An event of some sort (SIGHUP) + eventhandler + An event handler of some sort (hangup) + filesystem + A filesystem (ext3) + fqdomainname + A fully qualified domain name (my.example.com) + groupname + A group name (wheel) + interface + A network interface (eth0) + ipaddress + An IP address (127.0.0.1) + library + A library (libncurses) + macro + A macro + netmask + A netmask (255.255.255.192) + newsgroup + A newsgroup (comp.text.xml) + osname + An operating system name (Hurd) + process + A process (gnome-cups-icon) + protocol + A protocol (ftp) + resource + A resource + securitycontext + A security context (a role, permission, or security token, for example) + server + A server (mail.example.com) + service + A service (ppp) + systemname + A system name (hephaistos) + username + A user name (ndw) + + + + + + Identifies the nature of the system item + + + + + + + Identifies the nature of the non-standard system item + + + + + + + Identifies the kind of systemitemgraphic identifier + other + Indicates that the system item is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + A system-related item or term + + + + + + +
+
+ + + + + + + + + + + + + + + An option for a software command + + + + +
+
+ + + + + + + + + + + + + + + Optional information + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A unit of data associated with some part of a computer system + + + + +
+
+ + + + + + + + + Identifies the topic type + + + + + + + + + + + + + + + + + + + + + + + + + + A modular unit of documentation not part of any particular narrative flow + + + + + + + + + + + +
+ + + + + + + + + + + + + Identifies the markup grammar of a resource + + +
+ + + + + + + + + + + + + + + + + Defines the hierarchy and relationships for a collection of resources + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + Contains one or more resource objects that are managed by the assembly + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + +
+
+ + + + + + Indentifies the location of the data by URI + + + + + + + + + Identifies the markup grammar of a resource + + + + + + + + + + + + + + + + + + + + Identifies an object managed within the assembly + + + + + + + +
+
+ + + + + + Identifies the structure type of the structure + + + + + + Indicates a single resource from which to construct this structure + + + + + + Identifies the default format of the structure + + + + + + Specifies the DocBook element to which this unit should be renamed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Describes the structure of a document + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + Specification of renderas + + The renderas attribute can be specified on either the structure or output, but not both. + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + Specifies chunking for this module + + + + + + Specifies the output file for this module or structure + + + + + + Specifies the DocBook element to which this unit should be renamed + + + + + + Specifies the transformation that should be applied to this unit + + + + + + Indicates whether or not this unit should be suppressed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specify an output format and/or file name and/or renderas + + + + +
+
+ + + + + + Indicates a single resource from which to read merged info + + + + + + + + + + + + + + + + + A wrapper for information that a module overrides in the resource it includes + + + + + + + + + +
+
+ + + + + + true + This module will be in a chunk + false + This module will not be in a chunk + auto + Chunking of this module depends on the overall chunking algorithm + + + + + Specifies chunking for this module + + + + + + Identifies a single resource or structure within the assembly from which to construct this module + + + + + + + Indicates if titles should be omitted when including a resource + + + + + + + + Indicates if the root element should be omitted when including the resource (copying only the children) + + + + + + + Changes the name of the root element of the included resource to the specified name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A modular component within a structure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + Specification of renderas + + The renderas attribute can be specified on either the structure or output, but not both. + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + Elements with effectivity attributes matching this element are suppressed + + + + +
+
+ + + + + + + + + + + + + + Elements with effectivity attributes matching this element are allowed + + + + +
+
+ + + + + + Identifies the type of the contained relationships + + + + + + + + + + + + + + + + + + + + Groups relationship elements to define associations between resources + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + Identifies the type of the relationship + + + + + + + + + + + + + + + + + + + + A relationship associates one or more resources + + + + + + + +
+
+ + + + + + + + + + + + + + + + + Identifies the type of relationship between one or more resources + + + + + + +
+
+ + + + + + Specifies the type of link for this instance + + + + + + + + + + + + + + + + + Identifies a resource that is part of a relationship + + + + + +
+
+ + + + + + + + + + + + + + + + + List of transforms for converting from non-DocBook schemas + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + Indentifies the location of the data by URI + + + + + + The name of the transform + + + + + + + + + + + + + + + + + + + Identifies a transform for converting from a non-DocBook schema + + + + +
+
+ + + + + + + + + + + + + + A description of a resource or resources + + + + +
+
diff --git a/catalog/docbook5.2/rng/assemblyxi.rnc b/catalog/docbook5.2/rng/assemblyxi.rnc new file mode 100755 index 0000000..52259fc --- /dev/null +++ b/catalog/docbook5.2/rng/assemblyxi.rnc @@ -0,0 +1,10858 @@ +namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" +namespace ctrl = "http://nwalsh.com/xmlns/schema-control/" +default namespace db = "http://docbook.org/ns/docbook" +namespace html = "http://www.w3.org/1999/xhtml" +namespace local = "" +namespace mml = "http://www.w3.org/1998/Math/MathML" +namespace rng = "http://relaxng.org/ns/structure/1.0" +namespace s = "http://purl.oclc.org/dsdl/schematron" +namespace svg = "http://www.w3.org/2000/svg" +namespace trans = "http://docbook.org/ns/transclusion" +namespace xi = "http://www.w3.org/2001/XInclude" +namespace xlink = "http://www.w3.org/1999/xlink" + +# This file is part of DocBook Assembly XIncludeV5.2CR5 +# +# Copyright 2020 HaL Computer Systems, Inc., +# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software +# Corporation, Norman Walsh, Sun Microsystems, Inc., and the +# Organization for the Advancement of Structured Information +# Standards (OASIS). +# +# Permission to use, copy, modify and distribute the DocBook schema +# and its accompanying documentation for any purpose and without fee +# is hereby granted in perpetuity, provided that the above copyright +# notice and this paragraph appear in all copies. The copyright +# holders make no representation about the suitability of the schema +# for any purpose. It is provided "as is" without expressed or implied +# warranty. +# +# If you modify the DocBook schema in any way, label your schema as a +# variant of DocBook. See the reference documentation +# (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook) +# for more information. +# +# Please direct all questions, bug reports, or suggestions for changes +# to the docbook-comment@lists.oasis-open.org mailing list. For more +# information, see http://www.oasis-open.org/docbook/. +# +# ====================================================================== + +s:ns [ + prefix = "a" + uri = "http://relaxng.org/ns/compatibility/annotations/1.0" +] +s:ns [ prefix = "ctrl" uri = "http://nwalsh.com/xmlns/schema-control/" ] +s:ns [ prefix = "db" uri = "http://docbook.org/ns/docbook" ] +s:ns [ prefix = "html" uri = "http://www.w3.org/1999/xhtml" ] +s:ns [ prefix = "mml" uri = "http://www.w3.org/1998/Math/MathML" ] +s:ns [ prefix = "rng" uri = "http://relaxng.org/ns/structure/1.0" ] +s:ns [ prefix = "s" uri = "http://purl.oclc.org/dsdl/schematron" ] +s:ns [ prefix = "svg" uri = "http://www.w3.org/2000/svg" ] +s:ns [ prefix = "trans" uri = "http://docbook.org/ns/transclusion" ] +s:ns [ prefix = "xi" uri = "http://www.w3.org/2001/XInclude" ] +s:ns [ prefix = "xlink" uri = "http://www.w3.org/1999/xlink" ] +div { + db._any.attribute = + + ## Any attribute, including any attribute in any namespace + attribute * { text } + db._any_other.attribute = + + ## Any attribute in any other explicit namespace + attribute * - (db:* | xml:* | xlink:* | trans:* | local:*) { text } + db._any = + + ## Any element from almost any namespace + element * - db:* { (db._any.attribute | text | db._any)* } +} +db.arch.attribute = + + ## Designates the computer or chip architecture to which the element applies + attribute arch { text } +db.audience.attribute = + + ## Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + attribute audience { text } +db.condition.attribute = + + ## provides a standard place for application-specific effectivity + attribute condition { text } +db.conformance.attribute = + + ## Indicates standards conformance characteristics of the element + attribute conformance { text } +db.os.attribute = + + ## Indicates the operating system to which the element is applicable + attribute os { text } +db.revision.attribute = + + ## Indicates the editorial revision to which the element belongs + attribute revision { text } +db.security.attribute = + + ## Indicates something about the security level associated with the element to which it applies + attribute security { text } +db.userlevel.attribute = + + ## Indicates the level of user experience for which the element applies + attribute userlevel { text } +db.vendor.attribute = + + ## Indicates the computer vendor to which the element applies + attribute vendor { text } +db.wordsize.attribute = + + ## Indicates the word size (width in bits) of the computer architecture to which the element applies + attribute wordsize { text } +db.outputformat.attribute = + + ## Indicates the output format (for example, print or epub) to which the element applies + attribute outputformat { text } +db.effectivity.attributes = + db.arch.attribute? + & db.audience.attribute? + & db.condition.attribute? + & db.conformance.attribute? + & db.os.attribute? + & db.revision.attribute? + & db.security.attribute? + & db.userlevel.attribute? + & db.vendor.attribute? + & db.wordsize.attribute? + & db.outputformat.attribute? +db.endterm.attribute = + + ## Points to the element whose content is to be used as the text of the link + attribute endterm { xsd:IDREF } +db.linkend.attribute = + + ## Points to an internal link target by identifying the value of its xml:id attribute + attribute linkend { xsd:IDREF } +db.linkends.attribute = + + ## Points to one or more internal link targets by identifying the value of their xml:id attributes + attribute linkends { xsd:IDREFS } +db.xlink.href.attribute = + + ## Identifies a link target with a URI + attribute xlink:href { xsd:anyURI } +db.xlink.simple.type.attribute = + + ## Identifies the XLink link type + attribute xlink:type { + + ## An XLink simple link type + "simple" + } +db.xlink.role.attribute = + + ## Identifies the XLink role of the link + attribute xlink:role { xsd:anyURI } +db.xlink.arcrole.attribute = + + ## Identifies the XLink arcrole of the link + attribute xlink:arcrole { xsd:anyURI } +db.xlink.title.attribute = + + ## Identifies the XLink title of the link + attribute xlink:title { text } +db.xlink.show.enumeration = + + ## An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + "new" + | + ## An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. + "replace" + | + ## An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + "embed" + | + ## The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior. + "other" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + "none" +db.xlink.show.attribute = + + ## Identifies the XLink show behavior of the link + attribute xlink:show { db.xlink.show.enumeration } +db.xlink.actuate.enumeration = + + ## An application should traverse to the ending resource immediately on loading the starting resource. + "onLoad" + | + ## An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + "onRequest" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior. + "other" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + "none" +db.xlink.actuate.attribute = + + ## Identifies the XLink actuate behavior of the link + attribute xlink:actuate { db.xlink.actuate.enumeration } +db.xlink.simple.link.attributes = + db.xlink.simple.type.attribute? + & db.xlink.href.attribute? + & db.xlink.role.attribute? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? +db.xlink.attributes = + db.xlink.simple.link.attributes + | (db.xlink.extended.link.attributes + | db.xlink.locator.link.attributes + | db.xlink.arc.link.attributes + | db.xlink.resource.link.attributes + | db.xlink.title.link.attributes) +db.xml.id.attribute = + + ## Identifies the unique ID value of the element + attribute xml:id { xsd:ID } +db.version.attribute = + + ## Specifies the DocBook version of the element and its descendants + attribute version { text } +db.xml.lang.attribute = + + ## Specifies the natural language of the element and its descendants + attribute xml:lang { text } +db.xml.base.attribute = + + ## Specifies the base URI of the element and its descendants + attribute xml:base { xsd:anyURI } +db.remap.attribute = + + ## Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + attribute remap { text } +db.xreflabel.attribute = + + ## Provides the text that is to be generated for a cross reference to the element + attribute xreflabel { text } +db.xrefstyle.attribute = + + ## Specifies a keyword or keywords identifying additional style information + attribute xrefstyle { text } +db.revisionflag.enumeration = + + ## The element has been changed. + "changed" + | + ## The element is new (has been added to the document). + "added" + | + ## The element has been deleted. + "deleted" + | + ## Explicitly turns off revision markup for this element. + "off" +db.revisionflag.attribute = + + ## Identifies the revision status of the element + attribute revisionflag { db.revisionflag.enumeration } +db.dir.enumeration = + + ## Left-to-right text + "ltr" + | + ## Right-to-left text + "rtl" + | + ## Left-to-right override + "lro" + | + ## Right-to-left override + "rlo" +db.dir.attribute = + + ## Identifies the direction of text in an element + attribute dir { db.dir.enumeration } +db.rdfalite.vocab = + + ## The RDFa Lite vocab + attribute vocab { xsd:anyURI } +db.rdfalite.typeof = + + ## The RDFa Lite typeof + attribute typeof { text } +db.rdfalite.property = + + ## The RDFa Lite property + attribute property { text } +db.rdfalite.resource = + + ## The RDFa Lite resource + attribute resource { text } +db.rdfalite.prefix = + + ## The RDFa Lite prefix + attribute prefix { text } +db.rdfalite.attributes = + db.rdfalite.vocab? + & db.rdfalite.typeof? + & db.rdfalite.property? + & db.rdfalite.resource? + & db.rdfalite.prefix? +db.trans.idfixup.enumeration = + + ## No ID fixup strategy + "none" + | + ## ID fixup by concatenating suffixes + "suffix" + | + ## ID fixup by creating unique values + "auto" +db.trans.idfixup.attribute = + + ## The transclusion ID fixup strategy + attribute trans:idfixup { db.trans.idfixup.enumeration } +db.trans.suffix.attribute = + + ## The transclusion suffix to use when the suffix ID fixup strategy is employed + [ + s:pattern [ + s:title [ "Suffix fixup must be specified" ] + s:rule [ + context = "db:*[@trans:suffix]" + s:assert [ + test = "@trans:idfixup = 'suffix'" + "If a suffix is specified, suffix ID fixup must also be specified." + ] + ] + ] + ] + attribute trans:suffix { text } +db.trans.linkscope.enumeration = + + ## No link scope adjustments are made + "user" + | + ## The link scopes are adjusted with the suffix property + "local" + | + ## The link scopes are adjusted based on proximity + "near" + | + ## The link scopes are adjusted based on document order + "global" +db.trans.linkscope.attribute = + + ## The transclusion link scope adjustment + attribute trans:linkscope { db.trans.linkscope.enumeration } +db.common.transclusion.attributes = + db.trans.idfixup.attribute? + & db.trans.suffix.attribute? + & db.trans.linkscope.attribute? +db.common.base.attributes = + db.version.attribute? + & db.xml.lang.attribute? + & db.xml.base.attribute? + & db.remap.attribute? + & db.xreflabel.attribute? + & db.revisionflag.attribute? + & db.dir.attribute? + & db.effectivity.attributes + & db.rdfalite.attributes + & db.common.transclusion.attributes + & db._any_other.attribute* +db.common.attributes = + db.xml.id.attribute? + & db.common.base.attributes + & db.annotations.attribute? +db.common.idreq.attributes = + db.xml.id.attribute + & db.common.base.attributes + & db.annotations.attribute? +db.common.linking.attributes = + (db.linkend.attribute | db.xlink.attributes)? +db.common.req.linking.attributes = + db.linkend.attribute | db.xlink.attributes +db.common.data.attributes = + + ## Specifies the format of the data + attribute format { text }?, + ( + ## Indentifies the location of the data by URI + attribute fileref { xsd:anyURI } + | + ## Identifies the location of the data by external identifier (entity name) + attribute entityref { xsd:ENTITY }) +db.verbatim.continuation.enumeration = + + ## Line numbering continues from the immediately preceding element with the same name. + "continues" + | + ## Line numbering restarts (begins at 1, usually). + "restarts" +db.verbatim.continuation.attribute = + + ## Determines whether line numbering continues from the previous element or restarts + attribute continuation { db.verbatim.continuation.enumeration } +db.verbatim.linenumbering.enumeration = + + ## Lines are numbered. + "numbered" + | + ## Lines are not numbered. + "unnumbered" +db.verbatim.linenumbering.attribute = + + ## Determines whether lines are numbered + attribute linenumbering { db.verbatim.linenumbering.enumeration } +db.verbatim.startinglinenumber.attribute = + + ## Specifies the initial line number + attribute startinglinenumber { xsd:integer } +db.verbatim.language.attribute = + + ## Identifies the language (i.e. programming language) of the verbatim content + attribute language { text } +db.verbatim.xml.space.attribute = + + ## Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not + attribute xml:space { + + ## Whitespace must be preserved. + "preserve" + } +db.verbatim.common.attributes = + db.verbatim.continuation.attribute? + & db.verbatim.linenumbering.attribute? + & db.verbatim.startinglinenumber.attribute? + & db.verbatim.xml.space.attribute? +db.verbatim.attributes = + db.verbatim.common.attributes & db.verbatim.language.attribute? +db.label.attribute = + + ## Specifies an identifying string for presentation purposes + attribute label { text } +db.width.characters.attribute = + + ## Specifies the width (in characters) of the element + attribute width { xsd:nonNegativeInteger } +db.spacing.enumeration = + + ## The spacing should be "compact". + "compact" + | + ## The spacing should be "normal". + "normal" +db.spacing.attribute = + + ## Specifies (a hint about) the spacing of the content + attribute spacing { db.spacing.enumeration } +db.pgwide.enumeration = + + ## The element should be rendered in the current text flow (with the flow column width). + "0" + | + ## The element should be rendered across the full text page. + "1" +db.pgwide.attribute = + + ## Indicates if the element is rendered across the column or the page + attribute pgwide { db.pgwide.enumeration } +db.language.attribute = + + ## Identifies the language (i.e. programming language) of the content + attribute language { text } +db.performance.enumeration = + + ## The content describes an optional step or steps. + "optional" + | + ## The content describes a required step or steps. + "required" +db.performance.attribute = + + ## Specifies if the content is required or optional + attribute performance { db.performance.enumeration } +db.floatstyle.attribute = + + ## Specifies style information to be used when rendering the float + attribute floatstyle { text } +db.width.attribute = + + ## Specifies the width of the element + attribute width { text } +db.depth.attribute = + + ## Specifies the depth of the element + attribute depth { text } +db.contentwidth.attribute = + + ## Specifies the width of the content rectangle + attribute contentwidth { text } +db.contentdepth.attribute = + + ## Specifies the depth of the content rectangle + attribute contentdepth { text } +db.scalefit.enumeration = + + ## False (do not scale-to-fit; anamorphic scaling may occur) + "0" + | + ## True (scale-to-fit; anamorphic scaling is forbidden) + "1" +db.scale.attribute = + + ## Specifies the scaling factor + attribute scale { xsd:positiveInteger } +db.classid.attribute = + + ## Specifies a classid for a media object player + attribute classid { text } +db.autoplay.attribute = + + ## Specifies the autoplay setting for a media object player + attribute autoplay { text } +db.halign.enumeration = + + ## Centered horizontally + "center" + | + ## Aligned horizontally on the specified character + "char" + | + ## Fully justified (left and right margins or edges) + "justify" + | + ## Left aligned + "left" + | + ## Right aligned + "right" +db.valign.enumeration = + + ## Aligned on the bottom of the region + "bottom" + | + ## Centered vertically + "middle" + | + ## Aligned on the top of the region + "top" +db.biblio.class.enumeration = + + ## A digital object identifier. + "doi" + | + ## An international standard book number. + "isbn" + | + ## An international standard technical report number (ISO 10444). + "isrn" + | + ## An international standard serial number. + "issn" + | + ## An international standard text code. + "istc" + | + ## A Library of Congress reference number. + "libraryofcongress" + | + ## A publication number (an internal number or possibly organizational standard). + "pubsnumber" + | + ## A Uniform Resource Identifier + "uri" +db.biblio.class-enum.attribute = + + ## Identifies the kind of bibliographic identifier + attribute class { db.biblio.class.enumeration }? +db.biblio.class-other.attribute = + + ## Identifies the nature of the non-standard bibliographic identifier + attribute otherclass { xsd:NMTOKEN } +db.biblio.class-other.attributes = + + ## Identifies the kind of bibliographic identifier + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.biblio.class-other.attribute +db.biblio.class.attribute = + db.biblio.class-enum.attribute | db.biblio.class-other.attributes +db.pubwork.enumeration = + + ## An article + "article" + | + ## A bulletin board system + "bbs" + | + ## A book + "book" + | + ## A CD-ROM + "cdrom" + | + ## A chapter (as of a book) + "chapter" + | + ## A DVD + "dvd" + | + ## An email message + "emailmessage" + | + ## A gopher page + "gopher" + | + ## A journal + "journal" + | + ## A manuscript + "manuscript" + | + ## A posting to a newsgroup + "newsposting" + | + ## A part (as of a book) + "part" + | + ## A reference entry + "refentry" + | + ## A section (as of a book or article) + "section" + | + ## A series + "series" + | + ## A set (as of books) + "set" + | + ## A web page + "webpage" + | + ## A wiki page + "wiki" + | + ## Some other kind of work + "other" +db.biblio.pubwork.enumeration = db.pubwork.enumeration +db.biblio.pubwork-enum.attribute = + + ## Identifies the nature of the published work + attribute pubwork { db.biblio.pubwork.enumeration }? +db.biblio.pubwork-other.attribute = + + ## Identifies the nature of some other kind of published work + attribute otherpubwork { xsd:NMTOKEN } +db.biblio.pubwork-other.attributes = + + ## Identifies that this is some other kind of published work + attribute pubwork { + + ## Indicates that the published work is some 'other' kind. + "other" + } + & db.biblio.pubwork-other.attribute +db.biblio.pubwork.attribute = + db.biblio.pubwork-enum.attribute | db.biblio.pubwork-other.attributes +db.ubiq.inlines = + (db.inlinemediaobject + | db.remark + | db.link.inlines + | db.alt + | db.trademark + | # below, effectively the publishing inlines (as of 5.0) + db.abbrev + | db.acronym + | db.date + | db._emphasis + | db.footnote + | db.footnoteref + | db._foreignphrase + | db._phrase + | db._quote + | db.subscript + | db.superscript + | db.wordasword) + | db.annotation + | (db._firstterm | db._glossterm) + | db.indexterm + | db.coref +db._text = (text | db.ubiq.inlines | db._phrase | db.replaceable)* +db._title = db.title? & db.titleabbrev? & db.subtitle? +db._title.req = db.title & db.titleabbrev? & db.subtitle? +db._title.only = db.title? & db.titleabbrev? +db._title.onlyreq = db.title & db.titleabbrev? +db._info = (db._title, db.titleforbidden.info?) | db.info? +db._info.title.req = + (db._title.req, db.titleforbidden.info?) | db.titlereq.info +db._info.title.only = + (db._title.only, db.titleforbidden.info?) | db.titleonly.info +db._info.title.onlyreq = + (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info +db._info.title.forbidden = db.titleforbidden.info? +db.all.inlines = + text + | db.ubiq.inlines + | db.general.inlines + | db.domain.inlines + | db.extension.inlines +db.general.inlines = + db.publishing.inlines + | db.product.inlines + | db.bibliography.inlines + | db.graphic.inlines + | db.indexing.inlines + | db.link.inlines +db.domain.inlines = + db.technical.inlines + | db.math.inlines + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines + | db.os.inlines + | db.programming.inlines + | db.error.inlines +db.technical.inlines = + (db.replaceable | db.package | db.parameter) + | db.termdef + | db.nonterminal + | (db.systemitem | db.option | db.optional | db.property) +db.product.inlines = + db.trademark + | (db.productnumber + | db.productname + | db.database + | db.application + | db.hardware) +db.bibliography.inlines = + db.citation + | db.citerefentry + | db.citetitle + | db.citebiblioid + | db.author + | db.person + | db.personname + | db.org + | db.orgname + | db.editor + | db.jobtitle +db.publishing.inlines = + (db.abbrev + | db.acronym + | db.date + | db.emphasis + | db.footnote + | db.footnoteref + | db.foreignphrase + | db.phrase + | db.quote + | db.revnumber + | db.subscript + | db.superscript + | db.wordasword) + | db.glossary.inlines + | db.coref +db.graphic.inlines = db.inlinemediaobject +db.indexing.inlines = notAllowed | db.indexterm +db.link.inlines = + (db.xref | db.link | db.olink | db.anchor) | db.biblioref +db.extension.inlines = notAllowed +db.nopara.blocks = + (db.list.blocks + | db.wrapper.blocks + | db.formal.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.indexterm + | db.synopsis.blocks + | db.admonition.blocks +db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara +db.all.blocks = + (db.nopara.blocks | db.para.blocks | db.extension.blocks) + | db.annotation +db.wrapper.blocks = db.formalgroup +db.formal.blocks = (db.example | db.figure | db.table) | db.equation +db.informal.blocks = + (db.informalexample | db.informalfigure | db.informaltable) + | db.informalequation +db.publishing.blocks = + db.sidebar | db.blockquote | db.address | db.epigraph +db.graphic.blocks = db.mediaobject | db.screenshot +db.technical.blocks = + db.procedure + | db.task + | (db.productionset | db.constraintdef) + | db.msgset +db.list.blocks = + (db.itemizedlist + | db.orderedlist + | db.procedure + | db.simplelist + | db.variablelist + | db.segmentedlist) + | db.glosslist + | db.bibliolist + | db.calloutlist + | db.qandaset +db.verbatim.blocks = + (db.screen | db.literallayout) + | (db.programlistingco | db.screenco) + | (db.programlisting | db.synopsis) +db.extension.blocks = notAllowed +db.info.extension = db._any +db.info.elements = + (db.abstract + | db.address + | db.artpagenums + | db.author + | db.authorgroup + | db.authorinitials + | db.bibliocoverage + | db.biblioid + | db.bibliosource + | db.collab + | db.confgroup + | db.contractsponsor + | db.contractnum + | db.copyright + | db.cover + | db.date + | db.edition + | db.editor + | db.issuenum + | db.keywordset + | db.legalnotice + | db.mediaobject + | db.org + | db.orgname + | db.othercredit + | db.pagenums + | db.printhistory + | db.pubdate + | db.publisher + | db.publishername + | db.releaseinfo + | db.revhistory + | db.seriesvolnums + | db.subjectset + | db.volumenum + | db.meta + | db.info.extension) + | db.annotation + | db.extendedlink + | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset) + | db.itermset + | (db.productname | db.productnumber) +db.bibliographic.elements = + db.info.elements + | db.publishing.inlines + | db.citerefentry + | db.citetitle + | db.citebiblioid + | db.person + | db.personblurb + | db.personname + | db.subtitle + | db.title + | db.titleabbrev +div { + db.title.role.attribute = attribute role { text } + db.title.attlist = + db.title.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.title = + + ## The text of the title of a section of a document or of a formal block-level element + element title { db.title.attlist, db.all.inlines* } +} +div { + db.titleabbrev.role.attribute = attribute role { text } + db.titleabbrev.attlist = + db.titleabbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.titleabbrev = + + ## The abbreviation of a title + element titleabbrev { db.titleabbrev.attlist, db.all.inlines* } +} +div { + db.subtitle.role.attribute = attribute role { text } + db.subtitle.attlist = + db.subtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subtitle = + + ## The subtitle of a document + element subtitle { db.subtitle.attlist, db.all.inlines* } +} +div { + db.info.role.attribute = attribute role { text } + db.info.attlist = db.info.role.attribute? & db.common.attributes + db.info = + + ## A wrapper for information about a component or other block + element info { db.info.attlist, (db._title & db.info.elements*) } +} +div { + db.titlereq.info.role.attribute = attribute role { text } + db.titlereq.info.attlist = + db.titlereq.info.role.attribute? & db.common.attributes + db.titlereq.info = + + ## A wrapper for information about a component or other block with a required title + element info { + db.titlereq.info.attlist, (db._title.req & db.info.elements*) + } +} +div { + db.titleonly.info.role.attribute = attribute role { text } + db.titleonly.info.attlist = + db.titleonly.info.role.attribute? & db.common.attributes + db.titleonly.info = + + ## A wrapper for information about a component or other block with only a title + element info { + db.titleonly.info.attlist, (db._title.only & db.info.elements*) + } +} +div { + db.titleonlyreq.info.role.attribute = attribute role { text } + db.titleonlyreq.info.attlist = + db.titleonlyreq.info.role.attribute? & db.common.attributes + db.titleonlyreq.info = + + ## A wrapper for information about a component or other block with only a required title + element info { + db.titleonlyreq.info.attlist, + (db._title.onlyreq & db.info.elements*) + } +} +div { + db.titleforbidden.info.role.attribute = attribute role { text } + db.titleforbidden.info.attlist = + db.titleforbidden.info.role.attribute? & db.common.attributes + db.titleforbidden.info = + + ## A wrapper for information about a component or other block without a title + element info { db.titleforbidden.info.attlist, db.info.elements* } +} +div { + db.subjectset.role.attribute = attribute role { text } + db.subjectset.scheme.attribute = + + ## Identifies the controlled vocabulary used by this set's terms + attribute scheme { xsd:NMTOKEN } + db.subjectset.attlist = + db.subjectset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.subjectset.scheme.attribute? + db.subjectset = + + ## A set of terms describing the subject matter of a document + element subjectset { db.subjectset.attlist, db.subject+ } +} +div { + db.subject.role.attribute = attribute role { text } + db.subject.weight.attribute = + + ## Specifies a ranking for this subject relative to other subjects in the same set + attribute weight { text } + db.subject.attlist = + db.subject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.subject.weight.attribute? + db.subject = + + ## One of a group of terms describing the subject matter of a document + element subject { db.subject.attlist, db.subjectterm+ } +} +div { + db.subjectterm.role.attribute = attribute role { text } + db.subjectterm.attlist = + db.subjectterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subjectterm = + + ## A term in a group of terms describing the subject matter of a document + element subjectterm { db.subjectterm.attlist, text } +} +div { + db.keywordset.role.attribute = attribute role { text } + db.keywordset.attlist = + db.keywordset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keywordset = + + ## A set of keywords describing the content of a document + element keywordset { db.keywordset.attlist, db.keyword+ } +} +div { + db.keyword.role.attribute = attribute role { text } + db.keyword.attlist = + db.keyword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keyword = + + ## One of a set of keywords describing the content of a document + element keyword { db.keyword.attlist, text } +} +db.table.choice = notAllowed | db.cals.table | db.html.table +db.informaltable.choice = + notAllowed | db.cals.informaltable | db.html.informaltable +db.table = db.table.choice +db.informaltable = db.informaltable.choice +div { + db.procedure.role.attribute = attribute role { text } + db.procedure.type.attribute = + + ## Identifies the type of procedure + attribute type { text }? + db.procedure.attlist = + db.procedure.role.attribute? + & db.procedure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + db.procedure.info = db._info.title.only + db.procedure = + + ## A list of operations to be performed in a well-defined sequence + element procedure { + db.procedure.attlist, + db.procedure.info, + db.all.blocks*, + db.step+, + db.result? + } +} +div { + db.step.role.attribute = attribute role { text } + db.step.attlist = + db.step.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.step.info = db._info.title.only + # This content model is blocks*, step|stepalternatives, blocks* but + # expressed this way it avoids UPA issues in XSD and DTD versions + db.step = + + ## A unit of action in a procedure + element step { + db.step.attlist, + db.step.info, + ((db.all.blocks+, + ((db.substeps | db.stepalternatives), db.all.blocks*)?, + db.result?) + | ((db.substeps | db.stepalternatives), + db.all.blocks*, + db.result?)) + } +} +div { + db.stepalternatives.role.attribute = attribute role { text } + db.stepalternatives.attlist = + db.stepalternatives.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.stepalternatives.info = db._info.title.forbidden + db.stepalternatives = + + ## Alternative steps in a procedure + element stepalternatives { + db.stepalternatives.attlist, db.stepalternatives.info, db.step+ + } +} +div { + db.substeps.role.attribute = attribute role { text } + db.substeps.attlist = + db.substeps.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.substeps = + + ## A wrapper for steps that occur within steps in a procedure + element substeps { db.substeps.attlist, db.step+ } +} +div { + db.result.role.attribute = attribute role { text } + db.result.attlist = + db.result.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.result = + + ## A wrapper for identifying the results of a procedure or step + element result { db.result.attlist, db.all.blocks+ } +} +div { + db.sidebar.floatstyle.attribute = db.floatstyle.attribute + db.sidebar.role.attribute = attribute role { text } + db.sidebar.attlist = + db.sidebar.role.attribute? + & db.sidebar.floatstyle.attribute? + & db.common.attributes + & db.common.linking.attributes + db.sidebar.info = db._info + db.sidebar = + + ## A portion of a document that is isolated from the main narrative flow + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:sidebar" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of sidebar" + ] + ] + ] + ] + element sidebar { + db.sidebar.attlist, db.sidebar.info, db.all.blocks+ + } +} +div { + db.abstract.role.attribute = attribute role { text } + db.abstract.attlist = + db.abstract.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abstract.info = db._info.title.only + db.abstract = + + ## A summary + element abstract { + db.abstract.attlist, db.abstract.info, db.all.blocks+ + } +} +div { + db.personblurb.role.attribute = attribute role { text } + db.personblurb.attlist = + db.personblurb.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.personblurb.info = db._info.title.only + db.personblurb = + + ## A short description or note about a person + element personblurb { + db.personblurb.attlist, db.personblurb.info, db.para.blocks+ + } +} +div { + db.blockquote.role.attribute = attribute role { text } + db.blockquote.attlist = + db.blockquote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.blockquote.info = db._info.title.only + db.blockquote = + + ## A quotation set off from the main text + element blockquote { + db.blockquote.attlist, + db.blockquote.info, + db.attribution?, + db.all.blocks+ + } +} +div { + db.attribution.role.attribute = attribute role { text } + db.attribution.attlist = + db.attribution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.attribution = + + ## The source of a block quote or epigraph + element attribution { + db.attribution.attlist, + (db._text + | db.person + | db.personname + | db.citetitle + | db.citation)* + } +} +div { + db.bridgehead.renderas.enumeration = + + ## Render as a first-level section + "sect1" + | + ## Render as a second-level section + "sect2" + | + ## Render as a third-level section + "sect3" + | + ## Render as a fourth-level section + "sect4" + | + ## Render as a fifth-level section + "sect5" + db.bridgehead.renderas-enum.attribute = + + ## Indicates how the bridge head should be rendered + attribute renderas { db.bridgehead.renderas.enumeration }? + db.bridgehead.renderas-other.attribute = + + ## Identifies the nature of the non-standard rendering + attribute otherrenderas { xsd:NMTOKEN } + db.bridgehead.renderas-other.attributes = + + ## Indicates how the bridge head should be rendered + attribute renderas { + + ## Identifies a non-standard rendering + "other" + } + & db.bridgehead.renderas-other.attribute + db.bridgehead.renderas.attribute = + db.bridgehead.renderas-enum.attribute + | db.bridgehead.renderas-other.attributes + db.bridgehead.role.attribute = attribute role { text } + db.bridgehead.attlist = + db.bridgehead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bridgehead.renderas.attribute? + db.bridgehead = + + ## A free-floating heading + element bridgehead { db.bridgehead.attlist, db.all.inlines* } +} +div { + db.remark.role.attribute = attribute role { text } + db.remark.attlist = + db.remark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.remark = + + ## A remark (or comment) intended for presentation in a draft manuscript + element remark { db.remark.attlist, db.all.inlines* } +} +div { + db.epigraph.role.attribute = attribute role { text } + db.epigraph.attlist = + db.epigraph.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.epigraph.info = db._info.title.forbidden + db.epigraph = + + ## A short inscription at the beginning of a document or component + element epigraph { + db.epigraph.attlist, + db.epigraph.info, + db.attribution?, + (db.para.blocks | db.literallayout)+ + } +} +div { + db.footnote.role.attribute = attribute role { text } + db.footnote.label.attribute = + + ## Identifies the desired footnote mark + attribute label { xsd:NMTOKEN } + db.footnote.attlist = + db.footnote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.footnote.label.attribute? + db.footnote = + + ## A footnote + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:footnote)" + "footnote must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:epigraph)" + "epigraph must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of footnote" + ] + ] + ] + ] + element footnote { db.footnote.attlist, db.all.blocks+ } +} +div { + db.formalpara.role.attribute = attribute role { text } + db.formalpara.attlist = + db.formalpara.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.formalpara.info = db._info.title.onlyreq + db.formalpara = + + ## A paragraph with a title + element formalpara { + db.formalpara.attlist, + db.formalpara.info, + db.indexing.inlines*, + db.para + } +} +div { + db.para.role.attribute = attribute role { text } + db.para.attlist = + db.para.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.para.info = db._info.title.forbidden + db.para = + + ## A paragraph + element para { + db.para.attlist, + db.para.info, + (db.all.inlines | db.nopara.blocks)* + } +} +div { + db.simpara.role.attribute = attribute role { text } + db.simpara.attlist = + db.simpara.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.simpara.info = db._info.title.forbidden + db.simpara = + + ## A paragraph that contains only text and inline markup, no block elements + element simpara { + db.simpara.attlist, db.simpara.info, db.all.inlines* + } +} +div { + db.itemizedlist.role.attribute = attribute role { text } + db.itemizedlist.mark.attribute = + + ## Identifies the type of mark to be used on items in this list + attribute mark { xsd:NMTOKEN } + db.itemizedlist.attlist = + db.itemizedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & db.itemizedlist.mark.attribute? + db.itemizedlist.info = db._info.title.only + db.itemizedlist = + + ## A list in which each entry is marked with a bullet or other dingbat + element itemizedlist { + db.itemizedlist.attlist, + db.itemizedlist.info, + db.all.blocks*, + db.listitem+ + } +} +div { + db.orderedlist.role.attribute = attribute role { text } + db.orderedlist.continuation.enumeration = + + ## Specifies that numbering should begin where the preceding list left off + "continues" + | + ## Specifies that numbering should begin again at 1 + "restarts" + db.orderedlist.continuation.attribute = + + ## Indicates how list numbering should begin relative to the immediately preceding list + attribute continuation { db.orderedlist.continuation.enumeration } + db.orderedlist.startingnumber.attribute = + + ## Specifies the initial line number + attribute startingnumber { xsd:integer } + db.orderedlist.inheritnum.enumeration = + + ## Specifies that numbering should ignore list nesting + "ignore" + | + ## Specifies that numbering should inherit from outer-level lists + "inherit" + db.orderedlist.inheritnum.attribute = + + ## Indicates whether or not item numbering should be influenced by list nesting + attribute inheritnum { db.orderedlist.inheritnum.enumeration } + db.orderedlist.numeration.enumeration = + + ## Specifies Arabic numeration (1, 2, 3, …) + "arabic" + | + ## Specifies upper-case alphabetic numeration (A, B, C, …) + "upperalpha" + | + ## Specifies lower-case alphabetic numeration (a, b, c, …) + "loweralpha" + | + ## Specifies upper-case Roman numeration (I, II, III, …) + "upperroman" + | + ## Specifies lower-case Roman numeration (i, ii, iii …) + "lowerroman" + db.orderedlist.numeration.attribute = + + ## Indicates the desired numeration + attribute numeration { db.orderedlist.numeration.enumeration } + db.orderedlist.attlist = + db.orderedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & (db.orderedlist.continuation.attribute + | db.orderedlist.startingnumber.attribute)? + & db.orderedlist.inheritnum.attribute? + & db.orderedlist.numeration.attribute? + db.orderedlist.info = db._info.title.only + db.orderedlist = + + ## A list in which each entry is marked with a sequentially incremented label + element orderedlist { + db.orderedlist.attlist, + db.orderedlist.info, + db.all.blocks*, + db.listitem+ + } +} +div { + db.listitem.role.attribute = attribute role { text } + db.listitem.override.attribute = + + ## Specifies the keyword for the type of mark that should be used on this + ## item, instead of the mark that would be used by default + attribute override { xsd:NMTOKEN } + db.listitem.attlist = + db.listitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.listitem.override.attribute? + db.listitem.info = db._info.title.forbidden + db.listitem = + + ## A wrapper for the elements of a list item + element listitem { + db.listitem.attlist, db.listitem.info, db.all.blocks+ + } +} +div { + db.segmentedlist.role.attribute = attribute role { text } + db.segmentedlist.attlist = + db.segmentedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.segmentedlist.info = db._info.title.only + db.segmentedlist = + + ## A segmented list, a list of sets of elements + element segmentedlist { + db.segmentedlist.attlist, + db.segmentedlist.info, + db.segtitle+, + db.seglistitem+ + } +} +div { + db.segtitle.role.attribute = attribute role { text } + db.segtitle.attlist = + db.segtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.segtitle = + + ## The title of an element of a list item in a segmented list + element segtitle { db.segtitle.attlist, db.all.inlines* } +} +div { + db.seglistitem.role.attribute = attribute role { text } + db.seglistitem.attlist = + db.seglistitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seglistitem = + + ## A list item in a segmented list + [ + s:pattern [ + s:title [ "Cardinality of segments and titles" ] + s:rule [ + context = "db:seglistitem" + s:assert [ + test = "count(db:seg) = count(../db:segtitle)" + "The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist" + ] + ] + ] + ] + element seglistitem { db.seglistitem.attlist, db.seg+ } +} +div { + db.seg.role.attribute = attribute role { text } + db.seg.attlist = + db.seg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seg = + + ## An element of a list item in a segmented list + element seg { db.seg.attlist, db.all.inlines* } +} +div { + db.simplelist.role.attribute = attribute role { text } + db.simplelist.type.enumeration = + + ## A tabular presentation in row-major order. + "horiz" + | + ## A tabular presentation in column-major order. + "vert" + | + ## An inline presentation, usually a comma-delimited list. + "inline" + db.simplelist.type.attribute = + + ## Specifies the type of list presentation + [ a:defaultValue = "vert" ] + attribute type { db.simplelist.type.enumeration } + db.simplelist.columns.attribute = + + ## Specifies the number of columns for horizontal or vertical presentation + attribute columns { xsd:integer } + db.simplelist.attlist = + db.simplelist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplelist.type.attribute? + & db.simplelist.columns.attribute? + db.simplelist = + + ## An undecorated list of single words or short phrases + element simplelist { db.simplelist.attlist, db.member+ } +} +div { + db.member.role.attribute = attribute role { text } + db.member.attlist = + db.member.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.member = + + ## An element of a simple list + element member { db.member.attlist, db.all.inlines* } +} +div { + db.variablelist.role.attribute = attribute role { text } + db.variablelist.termlength.attribute = + + ## Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list + attribute termlength { text } + db.variablelist.attlist = + db.variablelist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & db.variablelist.termlength.attribute? + db.variablelist.info = db._info.title.only + db.variablelist = + + ## A list in which each entry is composed of a set of one or more terms and an associated description + element variablelist { + db.variablelist.attlist, + db.variablelist.info, + db.all.blocks*, + db.varlistentry+ + } +} +div { + db.varlistentry.role.attribute = attribute role { text } + db.varlistentry.attlist = + db.varlistentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varlistentry = + + ## A wrapper for a set of terms and the associated description in a variable list + element varlistentry { + db.varlistentry.attlist, db.term+, db.listitem + } +} +div { + db.term.role.attribute = attribute role { text } + db.term.attlist = + db.term.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.term = + + ## The word or phrase being defined or described in a variable list + element term { db.term.attlist, db.all.inlines* } +} +div { + db.example.role.attribute = attribute role { text } + db.example.label.attribute = db.label.attribute + db.example.width.attribute = db.width.characters.attribute + db.example.pgwide.attribute = db.pgwide.attribute + db.example.floatstyle.attribute = db.floatstyle.attribute + db.example.type.attribute = + + ## Identifies the type of example + attribute type { text }? + db.example.attlist = + db.example.role.attribute? + & db.example.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.example.label.attribute? + & db.example.floatstyle.attribute? + & (db.example.width.attribute | db.example.pgwide.attribute)? + db.example.info = db._info.title.onlyreq + db.example = + + ## A formal example, with a title + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of example" + ] + ] + ] + ] + element example { + db.example.attlist, db.example.info, db.all.blocks+, db.caption? + } +} +div { + db.informalexample.role.attribute = attribute role { text } + db.informalexample.width.attribute = db.width.characters.attribute + db.informalexample.pgwide.attribute = db.pgwide.attribute + db.informalexample.floatstyle.attribute = db.floatstyle.attribute + db.informalexample.type.attribute = + + ## Identifies the type of example + attribute type { text }? + db.informalexample.attlist = + db.informalexample.role.attribute? + & db.informalexample.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.informalexample.floatstyle.attribute? + & (db.informalexample.width.attribute + | db.informalexample.pgwide.attribute)? + db.informalexample.info = db._info.title.forbidden + db.informalexample = + + ## A displayed example without a title + element informalexample { + db.informalexample.attlist, + db.informalexample.info, + db.all.blocks+, + db.caption? + } +} +db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co +db.verbatim.contentmodel = + db._info.title.forbidden, (db.textobject | db.verbatim.inlines*) +div { + db.literallayout.role.attribute = attribute role { text } + db.literallayout.class.enumeration = + + ## The literal layout should be formatted with a monospaced font + "monospaced" + | + ## The literal layout should be formatted with the current font + "normal" + db.literallayout.class.attribute = + + ## Specifies the class of literal layout + attribute class { db.literallayout.class.enumeration } + db.literallayout.attlist = + db.literallayout.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.literallayout.class.attribute? + db.literallayout = + + ## A block of text in which line breaks and white space are to be reproduced faithfully + element literallayout { + db.literallayout.attlist, db.verbatim.contentmodel + } +} +div { + db.screen.role.attribute = attribute role { text } + db.screen.width.attribute = db.width.characters.attribute + db.screen.attlist = + db.screen.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.screen.width.attribute? + db.screen = + + ## Text that a user sees or might see on a computer screen + element screen { db.screen.attlist, db.verbatim.contentmodel } +} +div { + db.screenshot.role.attribute = attribute role { text } + db.screenshot.attlist = + db.screenshot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenshot.info = db._info + db.screenshot = + + ## A representation of what the user sees or might see on a computer screen + element screenshot { + db.screenshot.attlist, db.screenshot.info, db.mediaobject + } +} +div { + db.figure.role.attribute = attribute role { text } + db.figure.label.attribute = db.label.attribute + db.figure.pgwide.attribute = db.pgwide.attribute + db.figure.floatstyle.attribute = db.floatstyle.attribute + db.figure.type.attribute = + + ## Identifies the type of figure + attribute type { text }? + db.figure.attlist = + db.figure.role.attribute? + & db.figure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.figure.label.attribute? + & db.figure.pgwide.attribute? + & db.figure.floatstyle.attribute? + db.figure.info = db._info.title.onlyreq + db.figure = + + ## A formal figure, generally an illustration, with a title + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of figure" + ] + ] + ] + ] + element figure { + db.figure.attlist, db.figure.info, db.all.blocks+, db.caption? + } +} +div { + db.informalfigure.role.attribute = attribute role { text } + db.informalfigure.label.attribute = db.label.attribute + db.informalfigure.pgwide.attribute = db.pgwide.attribute + db.informalfigure.floatstyle.attribute = db.floatstyle.attribute + db.informalfigure.type.attribute = + + ## Identifies the type of figure + attribute type { text }? + db.informalfigure.attlist = + db.informalfigure.role.attribute? + & db.informalfigure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.informalfigure.label.attribute? + & db.informalfigure.pgwide.attribute? + & db.informalfigure.floatstyle.attribute? + db.informalfigure.info = db._info.title.forbidden + db.informalfigure = + + ## A untitled figure + element informalfigure { + db.informalfigure.attlist, + db.informalfigure.info, + db.all.blocks+, + db.caption? + } +} +db.mediaobject.content = + (db.videoobject | db.audioobject | db.imageobject | db.textobject) + | db.imageobjectco +div { + db.mediaobject.role.attribute = attribute role { text } + db.mediaobject.attlist = + db.mediaobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mediaobject.info = db._info.title.forbidden + db.mediaobject = + + ## A displayed media object (video, audio, image, etc.) + element mediaobject { + db.mediaobject.attlist, + db.mediaobject.info, + db.alt?, + db.mediaobject.content+, + db.caption? + } +} +div { + db.inlinemediaobject.role.attribute = attribute role { text } + db.inlinemediaobject.attlist = + db.inlinemediaobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlinemediaobject.info = db._info.title.forbidden + db.inlinemediaobject = + + ## An inline media object (video, audio, image, and so on) + element inlinemediaobject { + db.inlinemediaobject.attlist, + db.inlinemediaobject.info, + db.alt?, + db.mediaobject.content+ + } +} +div { + db.videoobject.role.attribute = attribute role { text } + db.videoobject.attlist = + db.videoobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.videoobject.info = db._info.title.forbidden + db.videoobject = + + ## A wrapper for video data and its associated meta-information + element videoobject { + db.videoobject.attlist, db.videoobject.info, db.videodata+ + } +} +div { + db.audioobject.role.attribute = attribute role { text } + db.audioobject.attlist = + db.audioobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.audioobject.info = db._info.title.forbidden + db.audioobject = + + ## A wrapper for audio data and its associated meta-information + element audioobject { + db.audioobject.attlist, db.audioobject.info, db.audiodata+ + } +} +db.imageobject.content = + db.imagedata+ | db.imagedata.mathml | db.imagedata.svg+ +div { + db.imageobject.role.attribute = attribute role { text } + db.imageobject.attlist = + db.imageobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobject.info = db._info.title.forbidden + db.imageobject = + + ## A wrapper for image data and its associated meta-information + element imageobject { + db.imageobject.attlist, + db.imageobject.info, + db.imageobject.content + } +} +div { + db.textobject.role.attribute = attribute role { text } + db.textobject.attlist = + db.textobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.textobject.info = db._info.title.forbidden + db.textobject = + + ## A wrapper for a text description of an object and its associated meta-information + element textobject { + db.textobject.attlist, + db.textobject.info, + (db.phrase | db.textdata | db.all.blocks+) + } +} +div { + db.videodata.role.attribute = attribute role { text } + db.videodata.align.enumeration = db.halign.enumeration + db.videodata.align.attribute = + + ## Specifies the (horizontal) alignment of the video data + attribute align { db.videodata.align.enumeration } + db.videodata.autoplay.attribute = db.autoplay.attribute + db.videodata.classid.attribute = db.classid.attribute + db.videodata.valign.enumeration = db.valign.enumeration + db.videodata.valign.attribute = + + ## Specifies the vertical alignment of the video data + attribute valign { db.videodata.valign.enumeration } + db.videodata.width.attribute = db.width.attribute + db.videodata.depth.attribute = db.depth.attribute + db.videodata.contentwidth.attribute = db.contentwidth.attribute + db.videodata.contentdepth.attribute = db.contentdepth.attribute + db.videodata.scalefit.enumeration = db.scalefit.enumeration + db.videodata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.videodata.scalefit.enumeration } + db.videodata.scale.attribute = db.scale.attribute + db.videodata.attlist = + db.videodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.videodata.align.attribute? + & db.videodata.valign.attribute? + & db.videodata.width.attribute? + & db.videodata.contentwidth.attribute? + & db.videodata.scalefit.attribute? + & db.videodata.scale.attribute? + & db.videodata.depth.attribute? + & db.videodata.contentdepth.attribute? + & db.videodata.autoplay.attribute? + & db.videodata.classid.attribute? + db.videodata.info = db._info.title.forbidden + db.videodata = + + ## Pointer to external video data + element videodata { + db.videodata.attlist, db.videodata.info, db.multimediaparam* + } +} +div { + db.audiodata.role.attribute = attribute role { text } + db.audiodata.align.enumeration = db.halign.enumeration + db.audiodata.align.attribute = + + ## Specifies the (horizontal) alignment of the video data + attribute align { db.audiodata.align.enumeration } + db.audiodata.autoplay.attribute = db.autoplay.attribute + db.audiodata.classid.attribute = db.classid.attribute + db.audiodata.contentwidth.attribute = db.contentwidth.attribute + db.audiodata.contentdepth.attribute = db.contentdepth.attribute + db.audiodata.depth.attribute = db.depth.attribute + db.audiodata.scale.attribute = db.scale.attribute + db.audiodata.scalefit.enumeration = db.scalefit.enumeration + db.audiodata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.audiodata.scalefit.enumeration } + db.audiodata.valign.enumeration = db.valign.enumeration + db.audiodata.valign.attribute = + + ## Specifies the vertical alignment of the video data + attribute valign { db.audiodata.valign.enumeration } + db.audiodata.width.attribute = db.width.attribute + db.audiodata.attlist = + db.audiodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.audiodata.align.attribute? + & db.audiodata.autoplay.attribute? + & db.audiodata.classid.attribute? + & db.audiodata.contentdepth.attribute? + & db.audiodata.contentwidth.attribute? + & db.audiodata.depth.attribute? + & db.audiodata.scale.attribute? + & db.audiodata.scalefit.attribute? + & db.audiodata.valign.attribute? + & db.audiodata.width.attribute? + db.audiodata.info = db._info.title.forbidden + db.audiodata = + + ## Pointer to external audio data + element audiodata { + db.audiodata.attlist, db.audiodata.info, db.multimediaparam* + } +} +div { + db.imagedata.role.attribute = attribute role { text } + db.imagedata.align.enumeration = db.halign.enumeration + db.imagedata.align.attribute = + + ## Specifies the (horizontal) alignment of the image data + attribute align { db.imagedata.align.enumeration } + db.imagedata.valign.enumeration = db.valign.enumeration + db.imagedata.valign.attribute = + + ## Specifies the vertical alignment of the image data + attribute valign { db.imagedata.valign.enumeration } + db.imagedata.width.attribute = db.width.attribute + db.imagedata.depth.attribute = db.depth.attribute + db.imagedata.contentwidth.attribute = db.contentwidth.attribute + db.imagedata.contentdepth.attribute = db.contentdepth.attribute + db.imagedata.scalefit.enumeration = db.scalefit.enumeration + db.imagedata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.imagedata.scalefit.enumeration } + db.imagedata.scale.attribute = db.scale.attribute + db.imagedata.attlist = + db.imagedata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.info = db._info.title.forbidden + db.imagedata = + + ## Pointer to external image data + element imagedata { + db.imagedata.attlist, db.imagedata.info, db.multimediaparam* + } +} +div { + db.textdata.role.attribute = attribute role { text } + db.textdata.encoding.attribute = + + ## Identifies the encoding of the text in the external file + attribute encoding { text } + db.textdata.attlist = + db.textdata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.textdata.encoding.attribute? + db.textdata.info = db._info.title.forbidden + db.textdata = + + ## Pointer to external text data + element textdata { db.textdata.attlist, db.textdata.info } +} +div { + db.multimediaparam.role.attribute = attribute role { text } + db.multimediaparam.name.attribute = + + ## Specifies the name of the parameter + attribute name { text } + db.multimediaparam.value.attribute = + + ## Specifies the value of the parameter + attribute value { text } + db.multimediaparam.valuetype.attribute = + + ## Specifies the type of the value of the parameter + attribute valuetype { text } + db.multimediaparam.attlist = + db.multimediaparam.role.attribute? + & db.common.attributes + & db.multimediaparam.name.attribute + & db.multimediaparam.value.attribute + & db.multimediaparam.valuetype.attribute? + db.multimediaparam = + + ## Application specific parameters for a media player + element multimediaparam { db.multimediaparam.attlist, empty } +} +div { + db.caption.role.attribute = attribute role { text } + db.caption.attlist = + db.caption.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caption.info = db._info.title.forbidden + db.caption = + + ## A caption + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caption" + ] + ] + ] + ] + element caption { + db.caption.attlist, db.caption.info, db.all.blocks+ + } +} +div { + db.address.role.attribute = attribute role { text } + db.address.attlist = + db.address.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.address = + + ## A real-world address, generally a postal address + element address { + db.address.attlist, + (db._text + | db.personname + | db.orgname + | db.pob + | db.street + | db.city + | db.state + | db.postcode + | db.country + | db.phone + | db.fax + | db.email + | db.uri + | db.otheraddr)* + } +} +div { + db.street.role.attribute = attribute role { text } + db.street.attlist = + db.street.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.street = + + ## A street address in an address + element street { db.street.attlist, db._text } +} +div { + db.pob.role.attribute = attribute role { text } + db.pob.attlist = + db.pob.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pob = + + ## A post office box in an address + element pob { db.pob.attlist, db._text } +} +div { + db.postcode.role.attribute = attribute role { text } + db.postcode.attlist = + db.postcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.postcode = + + ## A postal code in an address + element postcode { db.postcode.attlist, db._text } +} +div { + db.city.role.attribute = attribute role { text } + db.city.attlist = + db.city.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.city = + + ## The name of a city in an address + element city { db.city.attlist, db._text } +} +div { + db.state.role.attribute = attribute role { text } + db.state.attlist = + db.state.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.state = + + ## A state or province in an address + element state { db.state.attlist, db._text } +} +div { + db.country.role.attribute = attribute role { text } + db.country.attlist = + db.country.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.country = + + ## The name of a country + element country { db.country.attlist, db._text } +} +div { + db.phone.role.attribute = attribute role { text } + db.phone.attlist = + db.phone.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phone = + + ## A telephone number + element phone { db.phone.attlist, db._text } +} +div { + db.fax.role.attribute = attribute role { text } + db.fax.attlist = + db.fax.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.fax = + + ## A fax number + element fax { db.fax.attlist, db._text } +} +div { + db.otheraddr.role.attribute = attribute role { text } + db.otheraddr.attlist = + db.otheraddr.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.otheraddr = + + ## Uncategorized information in address + element otheraddr { db.otheraddr.attlist, db._text } +} +div { + db.affiliation.role.attribute = attribute role { text } + db.affiliation.attlist = + db.affiliation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.affiliation = + + ## The institutional affiliation of an individual + element affiliation { + db.affiliation.attlist, + db.shortaffil?, + db.jobtitle*, + (db.org? | (db.orgname?, db.orgdiv*, db.address*)) + } +} +div { + db.shortaffil.role.attribute = attribute role { text } + db.shortaffil.attlist = + db.shortaffil.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.shortaffil = + + ## A brief description of an affiliation + element shortaffil { db.shortaffil.attlist, db._text } +} +div { + db.jobtitle.role.attribute = attribute role { text } + db.jobtitle.attlist = + db.jobtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.jobtitle = + + ## The title of an individual in an organization + element jobtitle { db.jobtitle.attlist, db._text } +} +div { + db.orgname.class.enumeration = + + ## A consortium + "consortium" + | + ## A corporation + "corporation" + | + ## An informal organization + "informal" + | + ## A non-profit organization + "nonprofit" + db.orgname.class-enum.attribute = + + ## Specifies the nature of the organization + attribute class { db.orgname.class.enumeration } + db.orgname.class-other.attributes = + + ## Specifies the nature of the organization + attribute class { + + ## Indicates a non-standard organization class + "other" + }, + + ## Identifies the non-standard nature of the organization + attribute otherclass { text } + db.orgname.class.attribute = + db.orgname.class-enum.attribute | db.orgname.class-other.attributes + db.orgname.role.attribute = attribute role { text } + db.orgname.attlist = + db.orgname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.orgname.class.attribute? + db.orgname = + + ## The name of an organization + element orgname { db.orgname.attlist, db._text } +} +div { + db.orgdiv.role.attribute = attribute role { text } + db.orgdiv.attlist = + db.orgdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.orgdiv = + + ## A division of an organization + element orgdiv { db.orgdiv.attlist, db.all.inlines* } +} +div { + db.artpagenums.role.attribute = attribute role { text } + db.artpagenums.attlist = + db.artpagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.artpagenums = + + ## The page numbers of an article as published + element artpagenums { db.artpagenums.attlist, db._text } +} +div { + db.personname.role.attribute = attribute role { text } + db.personname.attlist = + db.personname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.personname = + + ## The personal name of an individual + element personname { + db.personname.attlist, + (db._text + | (db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername)+ + | (db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername)+) + } +} +db.person.author.contentmodel = + db.personname, + (db.personblurb + | db.affiliation + | db.email + | db.uri + | db.address + | db.contrib)* +db.org.author.contentmodel = + db.orgname, + (db.orgdiv + | db.affiliation + | db.email + | db.uri + | db.address + | db.contrib)* +db.credit.contentmodel = + db.person.author.contentmodel | db.org.author.contentmodel +div { + db.author.role.attribute = attribute role { text } + db.author.attlist = + db.author.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.author = + + ## The name of an individual author + element author { db.author.attlist, db.credit.contentmodel } +} +div { + db.authorgroup.role.attribute = attribute role { text } + db.authorgroup.attlist = + db.authorgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.authorgroup = + + ## Wrapper for author information when a document has multiple authors or collaborators + element authorgroup { + db.authorgroup.attlist, (db.author | db.editor | db.othercredit)+ + } +} +div { + db.collab.role.attribute = attribute role { text } + db.collab.attlist = + db.collab.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.collab = + + ## Identifies a collaborator + element collab { + db.collab.attlist, + (db.person | db.personname | db.org | db.orgname)+, + db.affiliation* + } +} +div { + db.authorinitials.role.attribute = attribute role { text } + db.authorinitials.attlist = + db.authorinitials.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.authorinitials = + + ## The initials or other short identifier for an author + element authorinitials { db.authorinitials.attlist, db._text } +} +div { + db.person.role.attribute = attribute role { text } + db.person.attlist = + db.person.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.person = + + ## A person and associated metadata + element person { + db.person.attlist, + db.personname, + (db.address + | db.affiliation + | db.email + | db.uri + | db.personblurb)* + } +} +div { + db.org.role.attribute = attribute role { text } + db.org.attlist = + db.org.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.org = + + ## An organization and associated metadata + element org { + db.org.attlist, + db.orgname, + (db.address | db.affiliation | db.email | db.uri | db.orgdiv)* + } +} +div { + db.confgroup.role.attribute = attribute role { text } + db.confgroup.attlist = + db.confgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confgroup = + + ## A wrapper for document meta-information about a conference + element confgroup { + db.confgroup.attlist, + (db.confdates + | db.conftitle + | db.confnum + | db.confsponsor + | db.address)* + } +} +div { + db.confdates.role.attribute = attribute role { text } + db.confdates.attlist = + db.confdates.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confdates = + + ## The dates of a conference for which a document was written + element confdates { db.confdates.attlist, db._text } +} +div { + db.conftitle.role.attribute = attribute role { text } + db.conftitle.attlist = + db.conftitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.conftitle = + + ## The title of a conference for which a document was written + element conftitle { db.conftitle.attlist, db._text } +} +div { + db.confnum.role.attribute = attribute role { text } + db.confnum.attlist = + db.confnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confnum = + + ## An identifier, frequently numerical, associated with a conference for which a document was written + element confnum { db.confnum.attlist, db._text } +} +div { + db.confsponsor.role.attribute = attribute role { text } + db.confsponsor.attlist = + db.confsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confsponsor = + + ## The sponsor of a conference for which a document was written + element confsponsor { db.confsponsor.attlist, db._text } +} +div { + db.contractnum.role.attribute = attribute role { text } + db.contractnum.attlist = + db.contractnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractnum = + + ## The contract number of a document + element contractnum { db.contractnum.attlist, db._text } +} +div { + db.contractsponsor.role.attribute = attribute role { text } + db.contractsponsor.attlist = + db.contractsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractsponsor = + + ## The sponsor of a contract + element contractsponsor { db.contractsponsor.attlist, db._text } +} +div { + db.copyright.role.attribute = attribute role { text } + db.copyright.attlist = + db.copyright.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.copyright = + + ## Copyright information about a document + element copyright { db.copyright.attlist, db.year+, db.holder* } +} +div { + db.year.role.attribute = attribute role { text } + db.year.attlist = + db.year.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.year = + + ## The year of publication of a document + element year { db.year.attlist, db._text } +} +div { + db.holder.role.attribute = attribute role { text } + db.holder.attlist = + db.holder.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.holder = + + ## The name of the individual or organization that holds a copyright + element holder { db.holder.attlist, db._text } +} +db.cover.contentmodel = + (db.para.blocks + | db.extension.blocks + | db.list.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.synopsis.blocks +div { + db.cover.role.attribute = attribute role { text } + db.cover.attlist = + db.cover.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.cover = + + ## Additional content for the cover of a publication + element cover { db.cover.attlist, db.cover.contentmodel+ } +} +db.date.contentmodel = + xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text +div { + db.date.role.attribute = attribute role { text } + db.date.attlist = + db.date.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.date = + + ## The date of publication or revision of a document + element date { db.date.attlist, db.date.contentmodel } +} +div { + db.edition.role.attribute = attribute role { text } + db.edition.attlist = + db.edition.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.edition = + + ## The name or number of an edition of a document + element edition { db.edition.attlist, db._text } +} +div { + db.editor.role.attribute = attribute role { text } + db.editor.attlist = + db.editor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.editor = + + ## The name of the editor of a document + element editor { db.editor.attlist, db.credit.contentmodel } +} +div { + db.biblioid.role.attribute = attribute role { text } + db.biblioid.attlist = + db.biblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.biblioid = + + ## An identifier for a document + element biblioid { db.biblioid.attlist, db._text } +} +div { + db.citebiblioid.role.attribute = attribute role { text } + db.citebiblioid.attlist = + db.citebiblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.citebiblioid = + + ## A citation of a bibliographic identifier + element citebiblioid { db.citebiblioid.attlist, db._text } +} +div { + db.bibliosource.role.attribute = attribute role { text } + db.bibliosource.attlist = + db.bibliosource.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.bibliosource = + + ## The source of a document + element bibliosource { db.bibliosource.attlist, db._text } +} +div { + db.bibliorelation.type.enumeration = + + ## The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + "hasformat" + | + ## The described resource includes the referenced resource either physically or logically + "haspart" + | + ## The described resource has a version, edition, or adaptation, namely, the referenced resource + "hasversion" + | + ## The described resource is the same intellectual content of the referenced resource, but presented in another format + "isformatof" + | + ## The described resource is a physical or logical part of the referenced resource + "ispartof" + | + ## The described resource is referenced, cited, or otherwise pointed to by the referenced resource + "isreferencedby" + | + ## The described resource is supplanted, displaced, or superceded by the referenced resource + "isreplacedby" + | + ## The described resource is required by the referenced resource, either physically or logically + "isrequiredby" + | + ## The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + "isversionof" + | + ## The described resource references, cites, or otherwise points to the referenced resource + "references" + | + ## The described resource supplants, displaces, or supersedes the referenced resource + "replaces" + | + ## The described resource requires the referenced resource to support its function, delivery, or coherence of content + "requires" + db.bibliorelation.type-enum.attribute = + + ## Identifies the type of relationship + attribute type { db.bibliorelation.type.enumeration }? + db.bibliorelation.type-other.attributes = + + ## Identifies the type of relationship + attribute type { + + ## The described resource has a non-standard relationship with the referenced resource + "othertype" + }?, + + ## A keyword that identififes the type of the non-standard relationship + attribute othertype { xsd:NMTOKEN } + db.bibliorelation.type.attribute = + db.bibliorelation.type-enum.attribute + | db.bibliorelation.type-other.attributes + db.bibliorelation.role.attribute = attribute role { text } + db.bibliorelation.attlist = + db.bibliorelation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + & db.bibliorelation.type.attribute + db.bibliorelation = + + ## The relationship of a document to another + element bibliorelation { db.bibliorelation.attlist, db._text } +} +div { + db.bibliocoverage.spacial.enumeration = + + ## The DCMI Point identifies a point in space using its geographic coordinates + "dcmipoint" + | + ## ISO 3166 Codes for the representation of names of countries + "iso3166" + | + ## The DCMI Box identifies a region of space using its geographic limits + "dcmibox" + | + ## The Getty Thesaurus of Geographic Names + "tgn" + db.bibliocoverage.spatial-enum.attribute = + + ## Specifies the type of spatial coverage + attribute spatial { db.bibliocoverage.spacial.enumeration }? + db.bibliocoverage.spatial-other.attributes = + + ## Specifies the type of spatial coverage + attribute spatial { + + ## Identifies a non-standard type of coverage + "otherspatial" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute otherspatial { xsd:NMTOKEN } + db.bibliocoverage.spatial.attribute = + db.bibliocoverage.spatial-enum.attribute + | db.bibliocoverage.spatial-other.attributes + db.bibliocoverage.temporal.enumeration = + + ## A specification of the limits of a time interval + "dcmiperiod" + | + ## W3C Encoding rules for dates and times—a profile based on ISO 8601 + "w3c-dtf" + db.bibliocoverage.temporal-enum.attribute = + + ## Specifies the type of temporal coverage + attribute temporal { db.bibliocoverage.temporal.enumeration }? + db.bibliocoverage.temporal-other.attributes = + + ## Specifies the type of temporal coverage + attribute temporal { + + ## Specifies a non-standard type of coverage + "othertemporal" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute othertemporal { xsd:NMTOKEN } + db.bibliocoverage.temporal.attribute = + db.bibliocoverage.temporal-enum.attribute + | db.bibliocoverage.temporal-other.attributes + db.bibliocoverage.coverage.attrib = + db.bibliocoverage.spatial.attribute + & db.bibliocoverage.temporal.attribute + db.bibliocoverage.role.attribute = attribute role { text } + db.bibliocoverage.attlist = + db.bibliocoverage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliocoverage.coverage.attrib + db.bibliocoverage = + + ## The spatial or temporal coverage of a document + element bibliocoverage { db.bibliocoverage.attlist, db._text } +} +div { + db.legalnotice.role.attribute = attribute role { text } + db.legalnotice.attlist = + db.legalnotice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.legalnotice.info = db._info.title.only + db.legalnotice = + + ## A statement of legal obligations or requirements + element legalnotice { + db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+ + } +} +div { + db.othercredit.class.enumeration = + + ## A copy editor + "copyeditor" + | + ## A graphic designer + "graphicdesigner" + | + ## A production editor + "productioneditor" + | + ## A technical editor + "technicaleditor" + | + ## A translator + "translator" + | + ## An indexer + "indexer" + | + ## A proof-reader + "proofreader" + | + ## A cover designer + "coverdesigner" + | + ## An interior designer + "interiordesigner" + | + ## An illustrator + "illustrator" + | + ## A reviewer + "reviewer" + | + ## A typesetter + "typesetter" + | + ## A converter (a persons responsible for conversion, not an application) + "conversion" + db.othercredit.class-enum.attribute = + + ## Identifies the nature of the contributor + attribute class { db.othercredit.class.enumeration }? + db.othercredit.class-other.attribute = + + ## Identifies the nature of the non-standard contribution + attribute otherclass { xsd:NMTOKEN } + db.othercredit.class-other.attributes = + + ## Identifies the nature of the contributor + attribute class { + + ## Identifies a non-standard contribution + "other" + } + & db.othercredit.class-other.attribute + db.othercredit.class.attribute = + db.othercredit.class-enum.attribute + | db.othercredit.class-other.attributes + db.othercredit.role.attribute = attribute role { text } + db.othercredit.attlist = + db.othercredit.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.othercredit.class.attribute + db.othercredit = + + ## A person or entity, other than an author or editor, credited in a document + element othercredit { + db.othercredit.attlist, db.credit.contentmodel + } +} +div { + db.pagenums.role.attribute = attribute role { text } + db.pagenums.attlist = + db.pagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pagenums = + + ## The numbers of the pages in a book, for use in a bibliographic entry + element pagenums { db.pagenums.attlist, db._text } +} +div { + db.contrib.role.attribute = attribute role { text } + db.contrib.attlist = + db.contrib.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contrib = + + ## A summary of the contributions made to a document by a credited source + element contrib { db.contrib.attlist, db.all.inlines* } +} +div { + db.honorific.role.attribute = attribute role { text } + db.honorific.attlist = + db.honorific.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.honorific = + + ## The title of a person + element honorific { db.honorific.attlist, db._text } +} +div { + db.firstname.role.attribute = attribute role { text } + db.firstname.attlist = + db.firstname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.firstname = + + ## A given name of a person + element firstname { db.firstname.attlist, db._text } +} +div { + db.givenname.role.attribute = attribute role { text } + db.givenname.attlist = + db.givenname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.givenname = + + ## The given name of a person + element givenname { db.givenname.attlist, db._text } +} +div { + db.surname.role.attribute = attribute role { text } + db.surname.attlist = + db.surname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.surname = + + ## An inherited or family name; in western cultures the last name + element surname { db.surname.attlist, db._text } +} +div { + db.lineage.role.attribute = attribute role { text } + db.lineage.attlist = + db.lineage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineage = + + ## The portion of a person's name indicating a relationship to ancestors + element lineage { db.lineage.attlist, db._text } +} +div { + db.othername.role.attribute = attribute role { text } + db.othername.attlist = + db.othername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.othername = + + ## A component of a person's name that is not a first name, surname, or lineage + element othername { db.othername.attlist, db._text } +} +div { + db.printhistory.role.attribute = attribute role { text } + db.printhistory.attlist = + db.printhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.printhistory = + + ## The printing history of a document + element printhistory { db.printhistory.attlist, db.para.blocks+ } +} +div { + db.pubdate.role.attribute = attribute role { text } + db.pubdate.attlist = + db.pubdate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pubdate = + + ## The date of publication of a document + element pubdate { db.pubdate.attlist, db.date.contentmodel } +} +div { + db.publisher.role.attribute = attribute role { text } + db.publisher.attlist = + db.publisher.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publisher = + + ## The publisher of a document + element publisher { + db.publisher.attlist, db.publishername, db.address* + } +} +div { + db.publishername.role.attribute = attribute role { text } + db.publishername.attlist = + db.publishername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publishername = + + ## The name of the publisher of a document + element publishername { db.publishername.attlist, db._text } +} +div { + db.releaseinfo.role.attribute = attribute role { text } + db.releaseinfo.attlist = + db.releaseinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.releaseinfo = + + ## Information about a particular release of a document + element releaseinfo { db.releaseinfo.attlist, db._text } +} +div { + db.revhistory.role.attribute = attribute role { text } + db.revhistory.attlist = + db.revhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revhistory.info = db._info.title.only + db.revhistory = + + ## A history of the revisions to a document + element revhistory { + db.revhistory.attlist, db.revhistory.info, db.revision+ + } +} +div { + db.revision.role.attribute = attribute role { text } + db.revision.attlist = + db.revision.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revision = + + ## An entry describing a single revision in the history of the revisions to a document + element revision { + db.revision.attlist, + db.revnumber?, + db.date, + (db.authorinitials | db.author)*, + (db.revremark | db.revdescription)? + } +} +div { + db.revnumber.role.attribute = attribute role { text } + db.revnumber.attlist = + db.revnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revnumber = + + ## A document revision number + element revnumber { db.revnumber.attlist, db._text } +} +div { + db.revremark.role.attribute = attribute role { text } + db.revremark.attlist = + db.revremark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revremark = + + ## A description of a revision to a document + element revremark { db.revremark.attlist, db._text } +} +div { + db.revdescription.role.attribute = attribute role { text } + db.revdescription.attlist = + db.revdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revdescription = + + ## A extended description of a revision to a document + element revdescription { db.revdescription.attlist, db.all.blocks* } +} +div { + db.seriesvolnums.role.attribute = attribute role { text } + db.seriesvolnums.attlist = + db.seriesvolnums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seriesvolnums = + + ## Numbers of the volumes in a series of books + element seriesvolnums { db.seriesvolnums.attlist, db._text } +} +div { + db.volumenum.role.attribute = attribute role { text } + db.volumenum.attlist = + db.volumenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.volumenum = + + ## The volume number of a document in a set (as of books in a set or articles in a journal) + element volumenum { db.volumenum.attlist, db._text } +} +div { + db.issuenum.role.attribute = attribute role { text } + db.issuenum.attlist = + db.issuenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.issuenum = + + ## The number of an issue of a journal + element issuenum { db.issuenum.attlist, db._text } +} +div { + db.meta.role.attribute = attribute role { text } + db.meta.name.attribute = + + ## A name for the metadata element + attribute name { text } + db.meta.content.attribute = + + ## The metadata content + attribute content { text } + db.meta.attlist = + db.meta.name.attribute? + & db.meta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.meta.empty = + + ## A generic metadata element + element meta { db.meta.attlist, db.meta.content.attribute, empty } + db.meta.content = + + ## A generic metadata element + element meta { + db.meta.attlist, + (text | db._any | db.all.inlines | db.all.blocks)* + } + db.meta = db.meta.empty | db.meta.content +} +div { + db.package.role.attribute = attribute role { text } + db.package.attlist = + db.package.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.package = + + ## A software or application package + element package { db.package.attlist, db._text } +} +div { + db.email.role.attribute = attribute role { text } + db.email.attlist = + db.email.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.email = + + ## An email address + element email { db.email.attlist, db._text } +} +div { + db.lineannotation.role.attribute = attribute role { text } + db.lineannotation.attlist = + db.lineannotation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineannotation = + + ## A comment on a line in a verbatim listing + element lineannotation { db.lineannotation.attlist, db._text } +} +div { + db.parameter.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + db.parameter.class.attribute = + + ## Identifies the class of parameter + attribute class { db.parameter.class.enumeration } + db.parameter.role.attribute = attribute role { text } + db.parameter.attlist = + db.parameter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.parameter.class.attribute? + db.parameter = + + ## A value or a symbolic reference to a value + element parameter { db.parameter.attlist, db._text } +} +db.replaceable.inlines = db._text | db.co +div { + db.replaceable.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + | + ## A parameter + "parameter" + db.replaceable.class.attribute = + + ## Identifies the nature of the replaceable text + attribute class { db.replaceable.class.enumeration } + db.replaceable.role.attribute = attribute role { text } + db.replaceable.attlist = + db.replaceable.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.replaceable.class.attribute? + db.replaceable = + + ## Content that may or must be replaced by the user + element replaceable { + db.replaceable.attlist, db.replaceable.inlines* + } +} +div { + db.uri.type.attribute = + + ## Identifies the type of URI specified + attribute type { text }? + db.uri.role.attribute = attribute role { text } + db.uri.attlist = + db.uri.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.uri.type.attribute + db.uri = + + ## A Uniform Resource Identifier + element uri { db.uri.attlist, db._text } +} +div { + db.abbrev.role.attribute = attribute role { text } + db.abbrev.attlist = + db.abbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abbrev = + + ## An abbreviation, especially one followed by a period + element abbrev { + db.abbrev.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.acronym.role.attribute = attribute role { text } + db.acronym.attlist = + db.acronym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.acronym = + + ## An often pronounceable word made from the initial (or selected) letters of a name or phrase + element acronym { + db.acronym.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.citation.role.attribute = attribute role { text } + db.citation.attlist = + db.citation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citation = + + ## An inline bibliographic reference to another published work + element citation { db.citation.attlist, db.all.inlines* } +} +div { + db.citerefentry.role.attribute = attribute role { text } + db.citerefentry.attlist = + db.citerefentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citerefentry = + + ## A citation to a reference page + element citerefentry { + db.citerefentry.attlist, db.refentrytitle, db.manvolnum? + } +} +div { + db.refentrytitle.role.attribute = attribute role { text } + db.refentrytitle.attlist = + db.refentrytitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refentrytitle = + + ## The title of a reference page + element refentrytitle { db.refentrytitle.attlist, db.all.inlines* } +} +div { + db.manvolnum.role.attribute = attribute role { text } + db.manvolnum.attlist = + db.manvolnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.manvolnum = + + ## A reference volume number + element manvolnum { db.manvolnum.attlist, db._text } +} +div { + db.citetitle.pubwork.enumeration = db.pubwork.enumeration + db.citetitle.pubwork-enum.attribute = + + ## Identifies the nature of the publication being cited + attribute pubwork { db.citetitle.pubwork.enumeration } + db.citetitle.pubwork-other.attribute = + + ## Identifies the nature of some other kind of publication being cited + attribute otherpubwork { xsd:NMTOKEN } + db.citetitle.pubwork-other.attributes = + + ## Identifies that this is some other kind of publication being cited + attribute pubwork { + + ## Indicates that the published work is some 'other' kind. + "other" + } + & db.citetitle.pubwork-other.attribute + db.citetitle.pubwork.attribute = + db.citetitle.pubwork-enum.attribute + | db.citetitle.pubwork-other.attributes + db.citetitle.role.attribute = attribute role { text } + db.citetitle.attlist = + db.citetitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.citetitle.pubwork.attribute? + db.citetitle = + + ## The title of a cited work + element citetitle { db.citetitle.attlist, db.all.inlines* } +} +div { + db.emphasis.role.attribute = attribute role { text } + db.emphasis.attlist = + db.emphasis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.emphasis = + + ## Emphasized text + element emphasis { db.emphasis.attlist, db.all.inlines* } +} +div { + db._emphasis = + + ## A limited span of emphasized text + element emphasis { db.emphasis.attlist, db._text } +} +div { + db.foreignphrase.role.attribute = attribute role { text } + db.foreignphrase.attlist = + db.foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.foreignphrase = + + ## A word or phrase in a language other than the primary language of the document + element foreignphrase { + db.foreignphrase.attlist, (text | db.general.inlines)* + } +} +div { + db._foreignphrase.role.attribute = attribute role { text } + db._foreignphrase.attlist = + db._foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db._foreignphrase = + + ## A limited word or phrase in a language other than the primary language of the document + element foreignphrase { db._foreignphrase.attlist, db._text } +} +div { + db.phrase.role.attribute = attribute role { text } + db.phrase.attlist = + db.phrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phrase = + + ## A span of text + element phrase { db.phrase.attlist, db.all.inlines* } +} +div { + db._phrase = + + ## A limited span of text + element phrase { db.phrase.attlist, db._text } +} +div { + db.quote.role.attribute = attribute role { text } + db.quote.attlist = + db.quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.quote = + + ## An inline quotation + element quote { db.quote.attlist, db.all.inlines* } +} +div { + db._quote.role.attribute = attribute role { text } + db._quote.attlist = + db._quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db._quote = + + ## A limited inline quotation + element quote { db._quote.attlist, db._text } +} +div { + db.subscript.role.attribute = attribute role { text } + db.subscript.attlist = + db.subscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subscript = + + ## A subscript (as in H₂O, the molecular formula for water) + element subscript { db.subscript.attlist, db._text } +} +div { + db.superscript.role.attribute = attribute role { text } + db.superscript.attlist = + db.superscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.superscript = + + ## A superscript (as in x², the mathematical notation for x multiplied by itself) + element superscript { db.superscript.attlist, db._text } +} +div { + db.trademark.class.enumeration = + + ## A copyright + "copyright" + | + ## A registered copyright + "registered" + | + ## A service + "service" + | + ## A trademark + "trade" + db.trademark.class.attribute = + + ## Identifies the class of trade mark + attribute class { db.trademark.class.enumeration } + db.trademark.role.attribute = attribute role { text } + db.trademark.attlist = + db.trademark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.trademark.class.attribute? + db.trademark = + + ## A trademark + element trademark { db.trademark.attlist, db._text } +} +div { + db.wordasword.role.attribute = attribute role { text } + db.wordasword.attlist = + db.wordasword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.wordasword = + + ## A word meant specifically as a word and not representing anything else + element wordasword { db.wordasword.attlist, db._text } +} +div { + db.footnoteref.role.attribute = attribute role { text } + db.footnoteref.label.attribute = db.label.attribute + db.footnoteref.attlist = + db.footnoteref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.footnoteref.label.attribute? + db.footnoteref = + + ## A cross reference to a footnote (a footnote mark) + [ + s:pattern [ + s:title [ "Footnote reference type constraint" ] + s:rule [ + context = "db:footnoteref" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on footnoteref must point to a footnote." + ] + ] + ] + ] + element footnoteref { db.footnoteref.attlist, empty } +} +div { + db.xref.role.attribute = attribute role { text } + db.xref.xrefstyle.attribute = db.xrefstyle.attribute + db.xref.endterm.attribute = db.endterm.attribute + db.xref.attlist = + db.xref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.xref.xrefstyle.attribute? + & db.xref.endterm.attribute? + db.xref = + + ## A cross reference to another part of the document + element xref { db.xref.attlist, empty } +} +div { + db.link.role.attribute = attribute role { text } + db.link.xrefstyle.attribute = db.xrefstyle.attribute + db.link.endterm.attribute = db.endterm.attribute + db.link.attlist = + db.link.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.link.xrefstyle.attribute? + & db.link.endterm.attribute? + db.link = + + ## A hypertext link + element link { db.link.attlist, db.all.inlines* } +} +div { + db.olink.role.attribute = attribute role { text } + db.olink.xrefstyle.attribute = db.xrefstyle.attribute + db.olink.localinfo.attribute = + + ## Holds additional information that may be used by the application when resolving the link + attribute localinfo { text } + db.olink.targetdoc.attribute = + + ## Specifies the URI of the document in which the link target appears + attribute targetdoc { xsd:anyURI } + db.olink.targetptr.attribute = + + ## Specifies the location of the link target in the document + attribute targetptr { text } + db.olink.type.attribute = + + ## Identifies application-specific customization of the link behavior + attribute type { text } + db.olink.attlist = + db.common.attributes + & db.olink.targetdoc.attribute? + & db.olink.role.attribute? + & db.olink.xrefstyle.attribute? + & db.olink.localinfo.attribute? + & db.olink.targetptr.attribute? + & db.olink.type.attribute? + db.olink = + + ## A link that addresses its target indirectly + element olink { db.olink.attlist, db.all.inlines* } +} +div { + db.anchor.role.attribute = attribute role { text } + db.anchor.attlist = + db.anchor.role.attribute? & db.common.idreq.attributes + db.anchor = + + ## A spot in the document + element anchor { db.anchor.attlist, empty } +} +div { + db.alt.role.attribute = attribute role { text } + db.alt.attlist = db.alt.role.attribute? & db.common.attributes + db.alt = + + ## A text-only annotation, often used for accessibility + element alt { db.alt.attlist, (text | db.inlinemediaobject)* } +} +div { + db.formalgroup.fgstyle.attribute = + + ## Holds style of formalgroup - this can be used to specify desired layout and positioning of subfigures + attribute fgstyle { text } + db.formalgroup.role.attribute = attribute role { text } + db.formalgroup.pgwide.attribute = db.pgwide.attribute + db.formalgroup.floatstyle.attribute = db.floatstyle.attribute + db.formalgroup.attlist = + db.formalgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.formalgroup.floatstyle.attribute? + & db.formalgroup.pgwide.attribute? + & db.formalgroup.fgstyle.attribute? + db.formalgroup.info = db._info.title.onlyreq + db.formalgroup = + + ## A group of formal objects, for example subfigures + element formalgroup { + db.formalgroup.attlist, + db.formalgroup.info, + (db.figure+ | db.table+ | db.example+ | db.equation+) + } +} +db.status.attribute = + + ## Identifies the editorial or publication status of the element on which it occurs + attribute status { text } +db.toplevel.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | (db.sect1+, db.simplesect*) + | db.refentry+ +db.toplevel.blocks.or.sections = + (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections +db.recursive.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | db.refentry+ +db.recursive.blocks.or.sections = + (db.all.blocks+, db.recursive.sections?) | db.recursive.sections +db.divisions = db.part | db.reference +db.components = + db.dedication + | db.acknowledgements + | db.preface + | db.chapter + | db.appendix + | db.article + | db.colophon +db.navigation.components = + notAllowed | db.glossary | db.bibliography | db.index | db.toc +db.component.contentmodel = + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* +db.setindex.components = notAllowed | db.setindex +db.toc.components = notAllowed | db.toc +db.set.components = db.set | db.book | db.article +div { + db.set.status.attribute = db.status.attribute + db.set.role.attribute = attribute role { text } + db.set.attlist = + db.set.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.set.status.attribute? + db.set.info = db._info.title.req + db.set = + + ## A collection of books + element set { + db.set.attlist, + db.set.info, + db.toc.components?, + db.set.components+, + db.setindex.components? + } +} +db.book.components = + (db.navigation.components | db.components | db.divisions)* | db.topic* +div { + db.book.status.attribute = db.status.attribute + db.book.role.attribute = attribute role { text } + db.book.attlist = + db.book.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.book.status.attribute? + db.book.info = db._info + db.book = + + ## A book + element book { db.book.attlist, db.book.info, db.book.components } +} +div { + db.dedication.status.attribute = db.status.attribute + db.dedication.role.attribute = attribute role { text } + db.dedication.attlist = + db.dedication.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.dedication.status.attribute? + db.dedication.info = db._info + db.dedication = + + ## The dedication of a book or other component + element dedication { + db.dedication.attlist, db.dedication.info, db.all.blocks+ + } +} +div { + db.acknowledgements.status.attribute = db.status.attribute + db.acknowledgements.role.attribute = attribute role { text } + db.acknowledgements.attlist = + db.acknowledgements.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.acknowledgements.status.attribute? + db.acknowledgements.info = db._info + db.acknowledgements = + + ## Acknowledgements of a book or other component + element acknowledgements { + db.acknowledgements.attlist, + db.acknowledgements.info, + db.all.blocks+ + } +} +div { + db.colophon.status.attribute = db.status.attribute + db.colophon.role.attribute = attribute role { text } + db.colophon.attlist = + db.colophon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.colophon.status.attribute? + db.colophon.info = db._info + db.colophon = + + ## Text at the back of a book describing facts about its production + element colophon { + db.colophon.attlist, + db.colophon.info, + ((db.all.blocks+, db.simplesect*) + | (db.all.blocks*, db.simplesect+)) + } +} +db.appendix.contentmodel = db.component.contentmodel | db.topic+ +div { + db.appendix.status.attribute = db.status.attribute + db.appendix.role.attribute = attribute role { text } + db.appendix.attlist = + db.appendix.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.appendix.status.attribute? + db.appendix.info = db._info.title.req + db.appendix = + + ## An appendix in a book or article + element appendix { + db.appendix.attlist, db.appendix.info, db.appendix.contentmodel? + } +} +db.chapter.contentmodel = db.component.contentmodel | db.topic+ +div { + db.chapter.status.attribute = db.status.attribute + db.chapter.role.attribute = attribute role { text } + db.chapter.attlist = + db.chapter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.chapter.status.attribute? + db.chapter.info = db._info.title.req + db.chapter = + + ## A chapter, as of a book + element chapter { + db.chapter.attlist, db.chapter.info, db.chapter.contentmodel? + } +} +db.part.components = + (db.navigation.components | db.components) + | (db.refentry | db.reference) +db.part.contentmodel = db.part.components+ | db.topic+ +div { + db.part.status.attribute = db.status.attribute + db.part.role.attribute = attribute role { text } + db.part.attlist = + db.part.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.part.status.attribute? + db.part.info = db._info.title.req + db.part = + + ## A division in a book + element part { + db.part.attlist, + db.part.info, + db.partintro?, + db.part.contentmodel? + } +} +div { + db.preface.status.attribute = db.status.attribute + db.preface.role.attribute = attribute role { text } + db.preface.attlist = + db.preface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.preface.status.attribute? + db.preface.info = db._info.title.req + db.preface = + + ## Introductory matter preceding the first chapter of a book + element preface { + db.preface.attlist, db.preface.info, db.component.contentmodel? + } +} +div { + db.partintro.status.attribute = db.status.attribute + db.partintro.role.attribute = attribute role { text } + db.partintro.attlist = + db.partintro.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.partintro.status.attribute? + db.partintro.info = db._info + db.partintro = + + ## An introduction to the contents of a part + element partintro { + db.partintro.attlist, + db.partintro.info, + db.toplevel.blocks.or.sections? + } +} +div { + db.section.status.attribute = db.status.attribute + db.section.class.enumeration = + + ## A section of legal obligations or requirements + "legal" + db.section.class-enum.attribute = + + ## Identifies the nature of the section + attribute class { db.section.class.enumeration } + db.section.class-other.attribute = + + ## Identifies a non-standard section class + attribute otherclass { xsd:NMTOKEN } + db.section.class-other.attributes = + + ## Indicates that a non-standard section class is applied + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.section.class-other.attribute + db.section.class.attribute = + db.section.class-enum.attribute | db.section.class-other.attributes + db.section.role.attribute = attribute role { text } + db.section.attlist = + db.section.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.section.status.attribute? + & db.section.class.attribute? + db.section.info = db._info.title.req + db.section = + + ## A recursive section + element section { + db.section.attlist, + db.section.info, + db.navigation.components*, + db.recursive.blocks.or.sections?, + db.navigation.components* + } +} +div { + db.simplesect.status.attribute = db.status.attribute + db.simplesect.role.attribute = attribute role { text } + db.simplesect.attlist = + db.simplesect.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.simplesect.status.attribute? + db.simplesect.info = db._info.title.req + db.simplesect = + + ## A section of a document with no subdivisions + element simplesect { + db.simplesect.attlist, db.simplesect.info, db.all.blocks* + } +} +db.article.components = db.toplevel.sections +db.article.navcomponents = + db.navigation.components + | db.acknowledgements + | db.dedication + | db.appendix + | db.colophon +div { + db.article.status.attribute = db.status.attribute + db.article.class.enumeration = + + ## A collection of frequently asked questions. + "faq" + | + ## An article in a journal or other periodical. + "journalarticle" + | + ## A description of a product. + "productsheet" + | + ## A specification. + "specification" + | + ## A technical report. + "techreport" + | + ## A white paper. + "whitepaper" + db.article.class-enum.attribute = + + ## Identifies the nature of the article + attribute class { db.article.class.enumeration } + db.article.class-other.attribute = + + ## Identifies the nature of the non-standard article + attribute otherclass { xsd:NMTOKEN } + db.article.class-other.attributes = + + ## Identifies the nature of the article + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.article.class-other.attribute + db.article.class.attribute = + db.article.class-enum.attribute | db.article.class-other.attributes + db.article.role.attribute = attribute role { text } + db.article.attlist = + db.article.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.article.status.attribute? + & db.article.class.attribute? + db.article.info = db._info.title.req + db.article = + + ## An article + element article { + db.article.attlist, + db.article.info, + db.article.navcomponents*, + ((db.all.blocks+, db.article.components?) + | db.article.components), + db.article.navcomponents* + } +} +db.annotations.attribute = + + ## Identifies one or more annotations that apply to this element + attribute annotations { text } +div { + db.annotation.role.attribute = attribute role { text } + db.annotation.annotates.attribute = + + ## Identifies one or more elements to which this annotation applies + attribute annotates { text } + db.annotation.attlist = + db.annotation.role.attribute? + & db.annotation.annotates.attribute? + & db.common.attributes + db.annotation.info = db._info.title.only + db.annotation = + + ## An annotation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:annotation" + s:assert [ + test = "not(.//db:annotation)" + "annotation must not occur among the children or descendants of annotation" + ] + ] + ] + ] + element annotation { + db.annotation.attlist, db.annotation.info, db.all.blocks+ + } +} +db.xlink.extended.type.attribute = + + ## Identifies the XLink extended link type + [ + s:pattern [ + s:title [ "XLink extended placement" ] + s:rule [ + context = "*[@xlink:type='extended']" + s:assert [ + test = "not(parent::*[@xlink:type='extended'])" + "An XLink extended type element may not occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink extended link type + "extended" + } +db.xlink.locator.type.attribute = + + ## Identifies the XLink locator link type + [ + s:pattern [ + s:title [ "XLink locator placement" ] + s:rule [ + context = "*[@xlink:type='locator']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink locator type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink locator link type + "locator" + } +db.xlink.arc.type.attribute = + + ## Identifies the XLink arc link type + [ + s:pattern [ + s:title [ "XLink arc placement" ] + s:rule [ + context = "*[@xlink:type='arc']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink arc type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink arc link type + "arc" + } +db.xlink.resource.type.attribute = + + ## Identifies the XLink resource link type + [ + s:pattern [ + s:title [ "XLink resource placement" ] + s:rule [ + context = "*[@xlink:type='resource']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink resource type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink resource link type + "resource" + } +db.xlink.title.type.attribute = + + ## Identifies the XLink title link type + [ + s:pattern [ + s:title [ "XLink title placement" ] + s:rule [ + context = "*[@xlink:type='title']" + s:assert [ + test = + "parent::*[@xlink:type='extended'] or parent::*[@xlink:type='locator'] or parent::*[@xlink:type='arc']" + "An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink title link type + "title" + } +db.xlink.extended.link.attributes = + db.xlink.extended.type.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? +db.xlink.locator.link.attributes = + db.xlink.locator.type.attribute + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? +db.xlink.arc.link.attributes = + db.xlink.arc.type.attribute + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? +db.xlink.resource.link.attributes = + db.xlink.resource.type.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? +db.xlink.title.link.attributes = db.xlink.title.type.attribute +db.xlink.from.attribute = + + ## Specifies the XLink traversal-from + attribute xlink:from { xsd:NMTOKEN } +db.xlink.label.attribute = + + ## Specifies the XLink label + attribute xlink:label { xsd:NMTOKEN } +db.xlink.to.attribute = + + ## Specifies the XLink traversal-to + attribute xlink:to { xsd:NMTOKEN } +div { + db.extendedlink.role.attribute = attribute role { text } + db.extendedlink.attlist = + db.extendedlink.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "extended" ] + attribute xlink:type { + + ## An XLink extended link + "extended" + }? + & db.xlink.role.attribute? + & db.xlink.title.attribute? + db.extendedlink = + + ## An XLink extended link + element extendedlink { + db.extendedlink.attlist, (db.locator | db.arc | db.link)+ + } +} +div { + db.locator.role.attribute = attribute role { text } + db.locator.attlist = + db.locator.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "locator" ] + attribute xlink:type { + + ## An XLink locator link + "locator" + }? + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? + db.locator = + + ## An XLink locator in an extendedlink + element locator { db.locator.attlist, empty } +} +div { + db.arc.role.attribute = attribute role { text } + db.arc.attlist = + db.arc.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "arc" ] + attribute xlink:type { + + ## An XLink arc link + "arc" + }? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? + db.arc = + + ## An XLink arc in an extendedlink + element arc { db.arc.attlist, empty } +} +db.sect1.sections = + ((db.sect2+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect1.status.attribute = db.status.attribute + db.sect1.class.attribute = db.section.class.attribute + db.sect1.role.attribute = attribute role { text } + db.sect1.attlist = + db.sect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect1.status.attribute? + & db.sect1.class.attribute? + db.sect1.info = db._info.title.req + db.sect1 = + + ## A top-level section of document + element sect1 { + db.sect1.attlist, + db.sect1.info, + db.navigation.components*, + ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections)?, + db.navigation.components* + } +} +db.sect2.sections = + ((db.sect3+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect2.status.attribute = db.status.attribute + db.sect2.class.attribute = db.section.class.attribute + db.sect2.role.attribute = attribute role { text } + db.sect2.attlist = + db.sect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect2.status.attribute? + & db.sect2.class.attribute? + db.sect2.info = db._info.title.req + db.sect2 = + + ## A subsection within a sect1 + element sect2 { + db.sect2.attlist, + db.sect2.info, + db.navigation.components*, + ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections)?, + db.navigation.components* + } +} +db.sect3.sections = + ((db.sect4+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect3.status.attribute = db.status.attribute + db.sect3.class.attribute = db.section.class.attribute + db.sect3.role.attribute = attribute role { text } + db.sect3.attlist = + db.sect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect3.status.attribute? + & db.sect3.class.attribute? + db.sect3.info = db._info.title.req + db.sect3 = + + ## A subsection within a sect2 + element sect3 { + db.sect3.attlist, + db.sect3.info, + db.navigation.components*, + ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections)?, + db.navigation.components* + } +} +db.sect4.sections = + ((db.sect5+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect4.status.attribute = db.status.attribute + db.sect4.class.attribute = db.section.class.attribute + db.sect4.role.attribute = attribute role { text } + db.sect4.attlist = + db.sect4.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect4.status.attribute? + & db.sect4.class.attribute? + db.sect4.info = db._info.title.req + db.sect4 = + + ## A subsection within a sect3 + element sect4 { + db.sect4.attlist, + db.sect4.info, + db.navigation.components*, + ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections)?, + db.navigation.components* + } +} +db.sect5.sections = db.simplesect+ | db.refentry+ +div { + db.sect5.status.attribute = db.status.attribute + db.sect5.class.attribute = db.section.class.attribute + db.sect5.role.attribute = attribute role { text } + db.sect5.attlist = + db.sect5.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect5.status.attribute? + & db.sect5.class.attribute? + db.sect5.info = db._info.title.req + db.sect5 = + + ## A subsection within a sect4 + element sect5 { + db.sect5.attlist, + db.sect5.info, + db.navigation.components*, + ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections)?, + db.navigation.components* + } +} +db.toplevel.refsection = db.refsection+ | db.refsect1+ +db.secondlevel.refsection = db.refsection+ | db.refsect2+ +db.reference.components = db.refentry +div { + db.reference.status.attribute = db.status.attribute + db.reference.role.attribute = attribute role { text } + db.reference.attlist = + db.reference.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.reference.status.attribute? + & db.label.attribute? + db.reference.info = db._info.title.req + db.reference = + + ## A collection of reference entries + element reference { + db.reference.attlist, + db.reference.info, + db.partintro?, + db.reference.components* + } +} +div { + db.refentry.status.attribute = db.status.attribute + db.refentry.role.attribute = attribute role { text } + db.refentry.attlist = + db.refentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refentry.status.attribute? + & db.label.attribute? + db.refentry.info = db._info.title.forbidden + db.refentry = + + ## A reference page (originally a UNIX man-style reference page) + element refentry { + db.refentry.attlist, + db.indexterm*, + db.refentry.info, + db.refmeta?, + db.refnamediv+, + db.refsynopsisdiv?, + db.toplevel.refsection + } +} +div { + db.refmeta.role.attribute = attribute role { text } + db.refmeta.attlist = + db.refmeta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refmeta = + + ## Meta-information for a reference entry + element refmeta { + db.refmeta.attlist, + db.indexterm*, + db.refentrytitle, + db.manvolnum?, + db.refmiscinfo*, + db.indexterm* + } +} +db.refmiscinfo.class.enumeration = + + ## The name of the software product or component to which this topic applies + "source" + | + ## The version of the software product or component to which this topic applies + "version" + | + ## The section title of the reference page (e.g., User Commands) + "manual" + | + ## The section title of the reference page (believed synonymous with "manual" but in wide use) + "sectdesc" + | + ## The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + "software" +db.refmiscinfo.class-enum.attribute = + + ## Identifies the kind of miscellaneous information + attribute class { db.refmiscinfo.class.enumeration }? +db.refmiscinfo.class-other.attribute = + + ## Identifies the nature of non-standard miscellaneous information + attribute otherclass { text } +db.refmiscinfo.class-other.attributes = + + ## Identifies the kind of miscellaneious information + attribute class { + + ## Indicates that the information is some 'other' kind. + "other" + } + & db.refmiscinfo.class-other.attribute +db.refmiscinfo.class.attribute = + db.refmiscinfo.class-enum.attribute + | db.refmiscinfo.class-other.attributes +div { + db.refmiscinfo.role.attribute = attribute role { text } + db.refmiscinfo.attlist = + db.refmiscinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refmiscinfo.class.attribute? + db.refmiscinfo = + + ## Meta-information for a reference entry other than the title and volume number + element refmiscinfo { db.refmiscinfo.attlist, db._text } +} +div { + db.refnamediv.role.attribute = attribute role { text } + db.refnamediv.attlist = + db.refnamediv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refnamediv = + + ## The name, purpose, and classification of a reference page + element refnamediv { + db.refnamediv.attlist, + db.refdescriptor?, + db.refname+, + db.refpurpose, + db.refclass* + } +} +div { + db.refdescriptor.role.attribute = attribute role { text } + db.refdescriptor.attlist = + db.refdescriptor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refdescriptor = + + ## A description of the topic of a reference page + element refdescriptor { db.refdescriptor.attlist, db.all.inlines* } +} +div { + db.refname.role.attribute = attribute role { text } + db.refname.attlist = + db.refname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refname = + + ## The name of (one of) the subject(s) of a reference page + element refname { db.refname.attlist, db.all.inlines* } +} +div { + db.refpurpose.role.attribute = attribute role { text } + db.refpurpose.attlist = + db.refpurpose.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refpurpose = + + ## A short (one sentence) synopsis of the topic of a reference page + element refpurpose { db.refpurpose.attlist, db.all.inlines* } +} +div { + db.refclass.role.attribute = attribute role { text } + db.refclass.attlist = + db.refclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refclass = + + ## The scope or other indication of applicability of a reference entry + element refclass { db.refclass.attlist, (text | db.application)* } +} +div { + db.refsynopsisdiv.role.attribute = attribute role { text } + db.refsynopsisdiv.attlist = + db.refsynopsisdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refsynopsisdiv.info = db._info + db.refsynopsisdiv = + + ## A syntactic synopsis of the subject of the reference page + element refsynopsisdiv { + db.refsynopsisdiv.attlist, + db.refsynopsisdiv.info, + ((db.all.blocks+, db.secondlevel.refsection?) + | db.secondlevel.refsection) + } +} +div { + db.refsection.status.attribute = db.status.attribute + db.refsection.role.attribute = attribute role { text } + db.refsection.attlist = + db.refsection.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refsection.status.attribute? + & db.label.attribute? + db.refsection.info = db._info.title.req + db.refsection = + + ## A recursive section in a refentry + element refsection { + db.refsection.attlist, + db.refsection.info, + ((db.all.blocks+, db.refsection*) | db.refsection+) + } +} +db.refsect1.sections = db.refsect2+ +div { + db.refsect1.status.attribute = db.status.attribute + db.refsect1.role.attribute = attribute role { text } + db.refsect1.attlist = + db.refsect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect1.status.attribute? + db.refsect1.info = db._info.title.req + db.refsect1 = + + ## A major subsection of a reference entry + element refsect1 { + db.refsect1.attlist, + db.refsect1.info, + ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections) + } +} +db.refsect2.sections = db.refsect3+ +div { + db.refsect2.status.attribute = db.status.attribute + db.refsect2.role.attribute = attribute role { text } + db.refsect2.attlist = + db.refsect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect2.status.attribute? + db.refsect2.info = db._info.title.req + db.refsect2 = + + ## A subsection of a refsect1 + element refsect2 { + db.refsect2.attlist, + db.refsect2.info, + ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections) + } +} +div { + db.refsect3.status.attribute = db.status.attribute + db.refsect3.role.attribute = attribute role { text } + db.refsect3.attlist = + db.refsect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect3.status.attribute? + db.refsect3.info = db._info.title.req + db.refsect3 = + + ## A subsection of a refsect2 + element refsect3 { + db.refsect3.attlist, db.refsect3.info, db.all.blocks+ + } +} +db.glossary.inlines = + db.firstterm | db.glossterm | db._firstterm | db._glossterm +db.baseform.attribute = + + ## Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + attribute baseform { text }? +div { + db.glosslist.role.attribute = attribute role { text } + db.glosslist.attlist = + db.glosslist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.glosslist.info = db._info.title.only + db.glosslist = + + ## A wrapper for a list of glossary entries + element glosslist { + db.glosslist.attlist, + db.glosslist.info?, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.glossentry.role.attribute = attribute role { text } + db.glossentry.sortas.attribute = + + ## Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + attribute sortas { text } + db.glossentry.attlist = + db.glossentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossentry.sortas.attribute? + db.glossentry = + + ## An entry in a glossary or glosslist + element glossentry { + db.glossentry.attlist, + db.glossterm, + db.acronym?, + db.abbrev?, + db.indexterm*, + (db.glosssee | db.glossdef+) + } +} +div { + db.glossdef.role.attribute = attribute role { text } + db.glossdef.subject.attribute = + + ## Specifies a list of keywords for the definition + attribute subject { text } + db.glossdef.attlist = + db.glossdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossdef.subject.attribute? + db.glossdef = + + ## A definition in a glossentry + element glossdef { + db.glossdef.attlist, db.all.blocks+, db.glossseealso* + } +} +div { + db.glosssee.role.attribute = attribute role { text } + db.glosssee.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glosssee.attlist = + db.glosssee.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glosssee.otherterm.attribute? + db.glosssee = + + ## A cross-reference from one glossentry + ## to another + [ + s:pattern [ + s:title [ "Glosssary 'see' type constraint" ] + s:rule [ + context = "db:glosssee[@otherterm]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glosssee must point to a glossentry." + ] + ] + ] + ] + element glosssee { db.glosssee.attlist, db.all.inlines* } +} +div { + db.glossseealso.role.attribute = attribute role { text } + db.glossseealso.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glossseealso.attlist = + db.glossseealso.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossseealso.otherterm.attribute? + db.glossseealso = + + ## A cross-reference from one glossentry to another + [ + s:pattern [ + s:title [ "Glossary 'seealso' type constraint" ] + s:rule [ + context = "db:glossseealso[@otherterm]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glossseealso must point to a glossentry." + ] + ] + ] + ] + element glossseealso { db.glossseealso.attlist, db.all.inlines* } +} +div { + db.firstterm.role.attribute = attribute role { text } + db.firstterm.attlist = + db.firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.firstterm = + + ## The first occurrence of a term + [ + s:pattern [ + s:title [ "Glossary 'firstterm' type constraint" ] + s:rule [ + context = "db:firstterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + ] + ] + ] + element firstterm { db.firstterm.attlist, db.all.inlines* } +} +div { + db._firstterm.role.attribute = attribute role { text } + db._firstterm.attlist = + db._firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db._firstterm = + + ## The first occurrence of a term, with limited content + [ + s:pattern [ + s:title [ "Glossary 'firstterm' type constraint" ] + s:rule [ + context = "db:firstterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + ] + ] + ] + element firstterm { db._firstterm.attlist, db._text } +} +div { + db.glossterm.role.attribute = attribute role { text } + db.glossterm.attlist = + db.glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.glossterm = + + ## A glossary term + [ + s:pattern [ + s:title [ "Glossary 'glossterm' type constraint" ] + s:rule [ + context = "db:glossterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + ] + ] + ] + element glossterm { db.glossterm.attlist, db.all.inlines* } +} +div { + db._glossterm.role.attribute = attribute role { text } + db._glossterm.attlist = + db._glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db._glossterm = + + ## A glossary term + [ + s:pattern [ + s:title [ "Glossary 'glossterm' type constraint" ] + s:rule [ + context = "db:glossterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + ] + ] + ] + element glossterm { db._glossterm.attlist, db._text } +} +div { + db.glossary.status.attribute = db.status.attribute + db.glossary.role.attribute = attribute role { text } + db.glossary.attlist = + db.glossary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossary.status.attribute? + db.glossary.info = db._info + db.glossary = + + ## A glossary + element glossary { + db.glossary.attlist, + db.glossary.info, + db.all.blocks*, + (db.glossdiv* | db.glossentry*), + db.bibliography? + } +} +div { + db.glossdiv.status.attribute = db.status.attribute + db.glossdiv.role.attribute = attribute role { text } + db.glossdiv.attlist = + db.glossdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossdiv.status.attribute? + db.glossdiv.info = db._info.title.req + db.glossdiv = + + ## A division in a glossary + element glossdiv { + db.glossdiv.attlist, + db.glossdiv.info, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.termdef.role.attribute = attribute role { text } + db.termdef.attlist = + db.termdef.role.attribute? + & db.glossentry.sortas.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.termdef = + + ## An inline definition of a term + [ + s:pattern [ + s:title [ "Glossary term definition constraint" ] + s:rule [ + context = "db:termdef" + s:assert [ + test = "count(db:firstterm) = 1" + "A termdef must contain exactly one firstterm" + ] + ] + ] + ] + element termdef { db.termdef.attlist, db.all.inlines* } +} +db.relation.attribute = + + ## Identifies the relationship between the bibliographic elemnts + attribute relation { text } +div { + db.biblioentry.role.attribute = attribute role { text } + db.biblioentry.pubwork.attribute = db.biblio.pubwork.attribute + db.biblioentry.attlist = + db.biblioentry.role.attribute? + & db.biblioentry.pubwork.attribute? + & db.common.attributes + & db.common.linking.attributes + db.biblioentry = + + ## A raw entry in a bibliography + element biblioentry { + db.biblioentry.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomixed.role.attribute = attribute role { text } + db.bibliomixed.pubwork.attribute = db.biblio.pubwork.attribute + db.bibliomixed.attlist = + db.bibliomixed.role.attribute? + & db.bibliomixed.pubwork.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomixed = + + ## A cooked entry in a bibliography + element bibliomixed { + db.bibliomixed.attlist, + ((db._text + | db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)* + | (db._text + | db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)*) + } +} +div { + db.biblioset.relation.attribute = db.relation.attribute + db.biblioset.role.attribute = attribute role { text } + db.biblioset.attlist = + db.biblioset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblioset.relation.attribute? + db.biblioset = + + ## A raw container for related bibliographic information + element biblioset { + db.biblioset.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomset.relation.attribute = db.relation.attribute + db.bibliomset.role.attribute = attribute role { text } + db.bibliomset.attlist = + db.bibliomset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliomset.relation.attribute? + db.bibliomset = + + ## A cooked container for related bibliographic information + element bibliomset { + db.bibliomset.attlist, + ((db._text + | db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)* + | (db._text + | db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)*) + } +} +div { + db.bibliomisc.role.attribute = attribute role { text } + db.bibliomisc.attlist = + db.bibliomisc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomisc = + + ## Untyped bibliographic information + element bibliomisc { db.bibliomisc.attlist, db._text } +} +div { + db.bibliography.status.attrib = db.status.attribute + db.bibliography.role.attribute = attribute role { text } + db.bibliography.attlist = + db.bibliography.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliography.status.attrib? + db.bibliography.info = db._info + db.bibliography = + + ## A bibliography + element bibliography { + db.bibliography.attlist, + db.bibliography.info, + db.all.blocks*, + (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+) + } +} +div { + db.bibliodiv.status.attrib = db.status.attribute + db.bibliodiv.role.attribute = attribute role { text } + db.bibliodiv.attlist = + db.bibliodiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliodiv.status.attrib? + db.bibliodiv.info = db._info.title.req + db.bibliodiv = + + ## A section of a bibliography + element bibliodiv { + db.bibliodiv.attlist, + db.bibliodiv.info, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.bibliolist.role.attribute = attribute role { text } + db.bibliolist.attlist = + db.bibliolist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliolist.info = db._info.title.only + db.bibliolist = + + ## A wrapper for a list of bibliography entries + element bibliolist { + db.bibliolist.attlist, + db.bibliolist.info?, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.biblioref.role.attribute = attribute role { text } + db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute + db.biblioref.endterm.attribute = db.endterm.attribute + db.biblioref.units.attribute = + + ## The units (for example, pages) used to identify the beginning and ending of a reference. + attribute units { xsd:token } + db.biblioref.begin.attribute = + + ## Identifies the beginning of a reference; the location within the work that is being referenced. + attribute begin { xsd:token } + db.biblioref.end.attribute = + + ## Identifies the end of a reference. + attribute end { xsd:token } + db.biblioref.attlist = + db.biblioref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.biblioref.xrefstyle.attribute? + & db.biblioref.endterm.attribute? + & db.biblioref.units.attribute? + & db.biblioref.begin.attribute? + & db.biblioref.end.attribute? + db.biblioref = + + ## A cross-reference to a bibliographic entry + element biblioref { db.biblioref.attlist, empty } +} +db.significance.enumeration = + + ## Normal + "normal" + | + ## Preferred + "preferred" +db.significance.attribute = + + ## Specifies the significance of the term + attribute significance { db.significance.enumeration } +db.zone.attribute = + + ## Specifies the IDs of the elements to which this term applies + attribute zone { xsd:IDREFS } +db.indexterm.pagenum.attribute = + + ## Indicates the page on which this index term occurs in some version of the printed document + attribute pagenum { text } +db.scope.enumeration = + + ## All indexes + "all" + | + ## The global index (as for a combined index of a set of books) + "global" + | + ## The local index (the index for this document only) + "local" +db.scope.attribute = + + ## Specifies the scope of the index term + attribute scope { db.scope.enumeration } +db.sortas.attribute = + + ## Specifies the string by which the term is to be sorted; if unspecified, the term content is used + attribute sortas { text } +db.index.type.attribute = + + ## Specifies the target index for this term + attribute type { text } +div { + db.itermset.role.attribute = attribute role { text } + db.itermset.attlist = + db.itermset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.itermset = + + ## A set of index terms in the meta-information of a document + element itermset { db.itermset.attlist, db.indexterm.singular+ } +} +db.indexterm.contentmodel = + (db.primary, + (db.secondary, + ((db.tertiary, (db.see | db.seealso+)?)? + | (db.see | db.seealso+)?)?)?)?, + (db.see | db.seealso+)? +div { + db.indexterm.singular.role.attribute = attribute role { text } + db.indexterm.singular.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## A singular index term + "singular" + } + db.indexterm.singular.attlist = + db.indexterm.singular.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.singular.class.attribute? + db.indexterm.singular = + + ## A wrapper for an indexed term + element indexterm { + db.indexterm.singular.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.startofrange.role.attribute = attribute role { text } + db.indexterm.startofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The start of a range + "startofrange" + } + db.indexterm.startofrange.attlist = + db.indexterm.startofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.startofrange.class.attribute + db.indexterm.startofrange = + + ## A wrapper for an indexed term that covers a range + element indexterm { + db.indexterm.startofrange.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.endofrange.role.attribute = attribute role { text } + db.indexterm.endofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The end of a range + "endofrange" + } + db.indexterm.endofrange.startref.attribute = + + ## Points to the start of the range + attribute startref { xsd:IDREF } + db.indexterm.endofrange.attlist = + db.indexterm.endofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.indexterm.endofrange.class.attribute + & db.indexterm.endofrange.startref.attribute + db.indexterm.endofrange = + + ## Identifies the end of a range associated with an indexed term + [ + s:pattern [ + s:title [ "Indexterm 'startref' type constraint" ] + s:rule [ + context = "db:indexterm[@startref]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@startref]) = 'indexterm' and namespace-uri(//*[@xml:id=current()/@startref]) = 'http://docbook.org/ns/docbook'" + "@startref on indexterm must point to an indexterm." + ] + s:assert [ + test = + "//*[@xml:id=current()/@startref]/@class='startofrange'" + "@startref on indexterm must point to a startofrange indexterm." + ] + ] + ] + ] + element indexterm { db.indexterm.endofrange.attlist, empty } +} +div { + db.indexterm = + db.indexterm.singular + | db.indexterm.startofrange + | db.indexterm.endofrange +} +div { + db.primary.role.attribute = attribute role { text } + db.primary.attlist = + db.primary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.primary = + + ## The primary word or phrase under which an index term should be sorted + element primary { db.primary.attlist, db.all.inlines* } +} +div { + db.secondary.role.attribute = attribute role { text } + db.secondary.attlist = + db.secondary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.secondary = + + ## A secondary word or phrase in an index term + element secondary { db.secondary.attlist, db.all.inlines* } +} +div { + db.tertiary.role.attribute = attribute role { text } + db.tertiary.attlist = + db.tertiary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.tertiary = + + ## A tertiary word or phrase in an index term + element tertiary { db.tertiary.attlist, db.all.inlines* } +} +div { + db.see.role.attribute = attribute role { text } + db.see.class.attribute = + + ## Identifies the class of 'see' + attribute class { + + ## Normal + "normal" + | + ## See 'under' + "under" + } + db.see.attlist = + db.see.role.attribute? + & db.see.class.attribute? + & db.common.attributes + & db.common.linking.attributes + db.see = + + ## Part of an index term directing the reader instead to another entry in the index + element see { db.see.attlist, db.all.inlines* } +} +div { + db.seealso.role.attribute = attribute role { text } + db.seealso.class.attribute = + + ## Identifies the class of 'seealso' + attribute class { + + ## Normal + "normal" + | + ## See 'under' + "under" + } + db.seealso.attlist = + db.seealso.role.attribute? + & db.seealso.class.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seealso = + + ## Part of an index term directing the reader also to another entry in the index + element seealso { db.seealso.attlist, db.all.inlines* } +} +div { + db.index.status.attribute = db.status.attribute + db.index.role.attribute = attribute role { text } + db.index.attlist = + db.index.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.index.status.attribute? + & db.index.type.attribute? + db.index.info = db._info + # Yes, db.indexdiv* and db.indexentry*; that way an is valid. + # Authors can use an empty index to indicate where a generated index should + # appear. + db.index = + + ## An index to a book or part of a book + element index { + db.index.attlist, + db.index.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry* | db.segmentedlist) + } +} +div { + db.setindex.status.attribute = db.status.attribute + db.setindex.role.attribute = attribute role { text } + db.setindex.attlist = + db.setindex.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.setindex.status.attribute? + & db.index.type.attribute? + db.setindex.info = db._info + db.setindex = + + ## An index to a set of books + element setindex { + db.setindex.attlist, + db.setindex.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry*) + } +} +div { + db.indexdiv.status.attribute = db.status.attribute + db.indexdiv.role.attribute = attribute role { text } + db.indexdiv.attlist = + db.indexdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.indexdiv.status.attribute? + db.indexdiv.info = db._info.title.req + db.indexdiv = + + ## A division in an index + element indexdiv { + db.indexdiv.attlist, + db.indexdiv.info, + db.all.blocks*, + (db.indexentry+ | db.segmentedlist) + } +} +div { + db.indexentry.role.attribute = attribute role { text } + db.indexentry.attlist = + db.indexentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.indexentry = + + ## An entry in an index + element indexentry { + db.indexentry.attlist, + db.primaryie, + (db.seeie | db.seealsoie)*, + (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)* + } +} +div { + db.primaryie.role.attribute = attribute role { text } + db.primaryie.attlist = + db.primaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.primaryie = + + ## A primary term in an index entry, not in the text + element primaryie { db.primaryie.attlist, db.all.inlines* } +} +div { + db.secondaryie.role.attribute = attribute role { text } + db.secondaryie.attlist = + db.secondaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.secondaryie = + + ## A secondary term in an index entry, rather than in the text + element secondaryie { db.secondaryie.attlist, db.all.inlines* } +} +div { + db.tertiaryie.role.attribute = attribute role { text } + db.tertiaryie.attlist = + db.tertiaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.tertiaryie = + + ## A tertiary term in an index entry, rather than in the text + element tertiaryie { db.tertiaryie.attlist, db.all.inlines* } +} +div { + db.seeie.role.attribute = attribute role { text } + db.seeie.attlist = + db.seeie.role.attribute? + & db.common.attributes + & db.linkend.attribute? + db.seeie = + + ## A See + ## entry in an index, rather than in the text + element seeie { db.seeie.attlist, db.all.inlines* } +} +div { + db.seealsoie.role.attribute = attribute role { text } + db.seealsoie.attlist = + db.seealsoie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.seealsoie = + + ## A See also + ## entry in an index, rather than in the text + element seealsoie { db.seealsoie.attlist, db.all.inlines* } +} +db.toc.pagenum.attribute = + + ## Indicates the page on which this element occurs in some version of the printed document + attribute pagenum { text } +div { + db.toc.role.attribute = attribute role { text } + db.toc.attlist = + db.toc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.toc.info = db._info.title.only + db.toc = + + ## A table of contents + element toc { + db.toc.attlist, + db.toc.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)* + } +} +div { + db.tocdiv.role.attribute = attribute role { text } + db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute + db.tocdiv.attlist = + db.tocdiv.role.attribute? + & db.common.attributes + & db.tocdiv.pagenum.attribute? + & db.linkend.attribute? + db.tocdiv.info = db._info + db.tocdiv = + + ## A division in a table of contents + element tocdiv { + db.tocdiv.attlist, + db.tocdiv.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)+ + } +} +div { + db.tocentry.role.attribute = attribute role { text } + db.tocentry.pagenum.attribute = db.toc.pagenum.attribute + db.tocentry.attlist = + db.tocentry.role.attribute? + & db.common.attributes + & db.tocentry.pagenum.attribute? + & db.linkend.attribute? + db.tocentry = + + ## A component title in a table of contents + element tocentry { db.tocentry.attlist, db.all.inlines* } +} +db.task.info = db._info.title.req +div { + db.task.role.attribute = attribute role { text } + db.task.attlist = + db.task.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.task = + + ## A task to be completed + element task { + db.task.attlist, + db.task.info, + db.tasksummary?, + db.taskprerequisites?, + db.procedure+, + db.example*, + db.taskrelated? + } +} +div { + db.tasksummary.role.attribute = attribute role { text } + db.tasksummary.attlist = + db.tasksummary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tasksummary.info = db._info.title.only + db.tasksummary = + + ## A summary of a task + element tasksummary { + db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+ + } +} +div { + db.taskprerequisites.role.attribute = attribute role { text } + db.taskprerequisites.attlist = + db.taskprerequisites.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskprerequisites.info = db._info.title.only + db.taskprerequisites = + + ## The prerequisites for a task + element taskprerequisites { + db.taskprerequisites.attlist, + db.taskprerequisites.info, + db.all.blocks+ + } +} +div { + db.taskrelated.role.attribute = attribute role { text } + db.taskrelated.attlist = + db.taskrelated.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskrelated.info = db._info.title.only + db.taskrelated = + + ## Information related to a task + element taskrelated { + db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+ + } +} +db.area.units.enumeration = + + ## Coordinates expressed as a pair of CALS graphic coordinates. + "calspair" + | + ## Coordinates expressed as a line and column. + "linecolumn" + | + ## Coordinates expressed as a pair of lines and columns. + "linecolumnpair" + | + ## Coordinates expressed as a line range. + "linerange" +db.area.units-enum.attribute = + + ## Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair + ## for graphics and linecolumn + ## for line-oriented elements. + attribute units { db.area.units.enumeration }? +db.area.units-other.attributes = + + ## Indicates that non-standard units are used for this area + ## . In this case otherunits + ## must be specified. + attribute units { + + ## Coordinates expressed in some non-standard units. + "other" + }?, + + ## Identifies the units used in the coords + ## attribute when the units + ## attribute is other + ## . This attribute is forbidden otherwise. + attribute otherunits { xsd:NMTOKEN } +db.area.units.attribute = + db.area.units-enum.attribute | db.area.units-other.attributes +div { + db.calloutlist.role.attribute = attribute role { text } + db.calloutlist.attlist = + db.calloutlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.calloutlist.info = db._info.title.only + db.calloutlist = + + ## A list of callout + ## s + element calloutlist { + db.calloutlist.attlist, + db.calloutlist.info, + db.all.blocks*, + db.callout+ + } +} +div { + db.callout.role.attribute = attribute role { text } + db.callout.arearefs.attribute = + + ## Identifies the areas described by this callout. + attribute arearefs { xsd:IDREFS } + db.callout.attlist = + db.callout.role.attribute? + & db.common.attributes + & db.callout.arearefs.attribute + # This requires an XPath 2.0 compatible Schematron processor + db.callout = + + ## A called out + ## description of a marked area + [ + s:pattern [ + s:title [ "Callout cross reference constraint" ] + s:rule [ + context = "db:callout[@arearefs]" + s:assert [ + test = + "every $id in tokenize(current()/@arearefs) satisfies (every $ar in //*[@xml:id = $id] satisfies (local-name($ar) = ('areaset', 'area', 'co') and namespace-uri($ar) = 'http://docbook.org/ns/docbook'))" + "@arearefs on callout must point to a areaset, area, or co." + ] + ] + ] + ] + element callout { db.callout.attlist, db.all.blocks+ } +} +div { + db.programlistingco.role.attribute = attribute role { text } + db.programlistingco.attlist = + db.programlistingco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.programlistingco.info = db._info.title.forbidden + db.programlistingco = + + ## A program listing with associated areas used in callouts + element programlistingco { + db.programlistingco.attlist, + db.programlistingco.info, + db.areaspec, + db.programlisting, + db.calloutlist* + } +} +div { + db.areaspec.role.attribute = attribute role { text } + db.areaspec.attlist = + db.areaspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.area.units.attribute + db.areaspec = + + ## A collection of regions in a graphic or code example + element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ } +} +div { + db.area.role.attribute = attribute role { text } + db.area.linkends.attribute = + + ## Point to the callout + ## s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + attribute linkends { xsd:IDREFS } + db.area.label.attribute = + + ## Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + attribute label { text } + db.area.coords.attribute = + + ## Provides the coordinates of the area. The coordinates must be interpreted using the units + ## specified. + attribute coords { text } + db.area.attlist = + db.area.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.xlink.simple.link.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area = + + ## A region defined for a callout in a graphic or code example + element area { db.area.attlist, db.alt? } +} +div { + # The only difference is that xml:id is optional + db.area.inareaset.attlist = + db.area.role.attribute? + & db.common.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.xlink.simple.link.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area.inareaset = + + ## A region defined for a callout in a graphic or code example + element area { db.area.inareaset.attlist, db.alt? } +} +div { + db.areaset.role.attribute = attribute role { text } + db.areaset.linkends.attribute = db.linkends.attribute + db.areaset.label.attribute = db.label.attribute + db.areaset.attlist = + db.areaset.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.areaset.linkends.attribute | db.xlink.simple.link.attributes)? + & db.areaset.label.attribute? + db.areaset = + + ## A set of related areas in a graphic or code example + element areaset { db.areaset.attlist, db.area.inareaset+ } +} +div { + db.screenco.role.attribute = attribute role { text } + db.screenco.attlist = + db.screenco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenco.info = db._info.title.forbidden + db.screenco = + + ## A screen with associated areas used in callouts + element screenco { + db.screenco.attlist, + db.screenco.info, + db.areaspec, + db.screen, + db.calloutlist* + } +} +div { + db.imageobjectco.role.attribute = attribute role { text } + db.imageobjectco.attlist = + db.imageobjectco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobjectco.info = db._info.title.forbidden + db.imageobjectco = + + ## A wrapper for an image object with callouts + element imageobjectco { + db.imageobjectco.attlist, + db.imageobjectco.info, + db.areaspec, + db.imageobject+, + db.calloutlist* + } +} +div { + db.co.role.attribute = attribute role { text } + db.co.linkends.attribute = db.linkends.attribute + db.co.label.attribute = db.label.attribute + db.co.attlist = + db.co.role.attribute? + & db.common.idreq.attributes + & db.co.linkends.attribute? + & db.co.label.attribute? + db.co = + + ## The location of a callout embedded in text + element co { db.co.attlist, empty } +} +div { + db.coref.role.attribute = attribute role { text } + db.coref.label.attribute = db.label.attribute + db.coref.attlist = + db.coref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.coref.label.attribute? + db.coref = + + ## A cross reference to a co + element coref { db.coref.attlist, empty } +} +div { + db.productionset.role.attribute = attribute role { text } + db.productionset.attlist = + db.productionset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productionset.info = db._info.title.only + db.productionset = + + ## A set of EBNF productions + element productionset { + db.productionset.attlist, + db.productionset.info, + (db.production | db.productionrecap)+ + } +} +div { + db.production.role.attribute = attribute role { text } + db.production.attlist = + db.production.role.attribute? + & db.common.idreq.attributes + & db.common.linking.attributes + db.production = + + ## A production in a set of EBNF productions + element production { + db.production.attlist, db.lhs, db.rhs+, db.constraint* + } +} +div { + db.lhs.role.attribute = attribute role { text } + db.lhs.attlist = + db.lhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lhs = + + ## The left-hand side of an EBNF production + element lhs { db.lhs.attlist, text } +} +div { + db.rhs.role.attribute = attribute role { text } + db.rhs.attlist = + db.rhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.rhs = + + ## The right-hand side of an EBNF production + element rhs { + db.rhs.attlist, + (text | db.nonterminal | db.lineannotation | db.sbr)* + } +} +div { + db.nonterminal.role.attribute = attribute role { text } + db.nonterminal.def.attribute = + + ## Specifies a URI that points to a production + ## where the nonterminal + ## is defined + attribute def { xsd:anyURI } + db.nonterminal.attlist = + db.nonterminal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.nonterminal.def.attribute + db.nonterminal = + + ## A non-terminal in an EBNF production + element nonterminal { db.nonterminal.attlist, text } +} +div { + db.constraint.role.attribute = attribute role { text } + db.constraint.attlist = + db.constraint.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.constraint = + + ## A constraint in an EBNF production + [ + s:pattern [ + s:title [ "Constraint cross reference constraint" ] + s:rule [ + context = "db:constraint[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'constraintdef' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on constraint must point to a constraintdef." + ] + ] + ] + ] + element constraint { db.constraint.attlist, empty } +} +div { + db.productionrecap.role.attribute = attribute role { text } + db.productionrecap.attlist = + db.productionrecap.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.productionrecap = + + ## A cross-reference to an EBNF production + [ + s:pattern [ + s:title [ "Production recap cross reference constraint" ] + s:rule [ + context = "db:productionrecap[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'production' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on productionrecap must point to a production." + ] + ] + ] + ] + element productionrecap { db.productionrecap.attlist, empty } +} +div { + db.constraintdef.role.attribute = attribute role { text } + db.constraintdef.attlist = + db.constraintdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.constraintdef.info = db._info.title.only + db.constraintdef = + + ## The definition of a constraint in an EBNF production + element constraintdef { + db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+ + } +} +db.char.attribute = + + ## Specifies the alignment character when align + ## is set to char + ## . + attribute char { text } +db.charoff.attribute = + + ## Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + ## when align + ## is set to char + ## . + attribute charoff { + xsd:decimal { minExclusive = "0" maxExclusive = "100" } + } +db.frame.attribute = + + ## Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + attribute frame { + + ## Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + "all" + | + ## Frame only the bottom of the table. + "bottom" + | + ## Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + "none" + | + ## Frame the left and right sides of the table. + "sides" + | + ## Frame the top of the table. + "top" + | + ## Frame the top and bottom of the table. + "topbot" + } +db.colsep.attribute = + + ## Specifies the presence or absence of the column separator + attribute colsep { + + ## No column separator rule. + "0" + | + ## Provide a column separator rule on the right + "1" + } +db.rowsep.attribute = + + ## Specifies the presence or absence of the row separator + attribute rowsep { + + ## No row separator rule. + "0" + | + ## Provide a row separator rule below + "1" + } +db.orient.attribute = + + ## Specifies the orientation of the table + attribute orient { + + ## 90 degrees counter-clockwise from the rest of the text flow. + "land" + | + ## The same orientation as the rest of the text flow. + "port" + } +db.tabstyle.attribute = + + ## Specifies the table style + attribute tabstyle { text } +db.rowheader.attribute = + + ## Indicates whether or not the entries in the first column should be considered row headers + attribute rowheader { + + ## Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + "firstcol" + | + ## Indicates that row headers are identified by use of the headers attribute on entries in the table. + "headers" + | + ## Indicates that entries in the first column have no special significance with respect to column headers. + "norowheader" + } +db.align.attribute = + + ## Specifies the horizontal alignment of text in an entry. + attribute align { + + ## Centered. + "center" + | + ## Aligned on a particular character. + "char" + | + ## Left and right justified. + "justify" + | + ## Left justified. + "left" + | + ## Right justified. + "right" + } +db.valign.attribute = + + ## Specifies the vertical alignment of text in an entry. + attribute valign { + + ## Aligned on the bottom of the entry. + "bottom" + | + ## Aligned in the middle. + "middle" + | + ## Aligned at the top of the entry. + "top" + } +db.specify-col-by-colname.attributes = + + ## Specifies a column specification by name. + attribute colname { text } +db.specify-col-by-namest.attributes = + + ## Specifies a starting column by name. + attribute namest { text } +db.specify-span-by-spanspec.attributes = + + ## Specifies a span by name. + attribute spanname { text } +db.specify-span-directly.attributes = + + ## Specifies a starting column by name. + attribute namest { text } + & + ## Specifies an ending column by name. + attribute nameend { text } +db.column-spec.attributes = + db.specify-col-by-colname.attributes + | db.specify-col-by-namest.attributes + | db.specify-span-by-spanspec.attributes + | db.specify-span-directly.attributes +db.colname.attribute = + + ## Provides a name for a column specification. + attribute colname { text } +db.spanname.attribute = + + ## Provides a name for a span specification. + attribute spanname { text } +div { + db.tgroup.role.attribute = attribute role { text } + db.tgroup.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.tgroup.cols.attribute = + + ## The number of columns in the table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.tgroup.attlist = + db.tgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.tgroup.tgroupstyle.attribute? + & db.tgroup.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.tgroup = + + ## A wrapper for the main content of a table, or part of a table + element tgroup { + db.tgroup.attlist, + db.colspec*, + db.spanspec*, + db.cals.thead?, + db.cals.tfoot?, + db.cals.tbody + } +} +div { + db.colspec.role.attribute = attribute role { text } + db.colspec.colnum.attribute = + + ## The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + attribute colnum { xsd:positiveInteger } + db.colspec.colwidth.attribute = + + ## Specifies the width of the column. + attribute colwidth { text } + db.colspec.attlist = + db.colspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.colspec.colnum.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.colspec.colwidth.attribute? + & db.charoff.attribute? + & db.colname.attribute? + & db.rowsep.attribute? + & db.align.attribute? + & db.rowheader.attribute? + db.colspec = + + ## Specifications for a column in a table + element colspec { db.colspec.attlist, empty } +} +div { + db.spanspec.role.attribute = attribute role { text } + db.spanspec.namest.attribute = + + ## Specifies a starting column by name. + attribute namest { text } + db.spanspec.nameend.attribute = + + ## Specifies an ending column by name. + attribute nameend { text } + db.spanspec.attlist = + db.spanspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spanname.attribute + & db.spanspec.namest.attribute + & db.spanspec.nameend.attribute + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.spanspec = + + ## Formatting information for a spanned column in a table + element spanspec { db.spanspec.attlist, empty } +} +div { + db.cals.thead.role.attribute = attribute role { text } + db.cals.thead.attlist = + db.cals.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.thead = + + ## A table header consisting of one or more rows + element thead { db.cals.thead.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tfoot.role.attribute = attribute role { text } + db.cals.tfoot.attlist = + db.cals.tfoot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tfoot = + + ## A table footer consisting of one or more rows + element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tbody.role.attribute = attribute role { text } + db.cals.tbody.attlist = + db.cals.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.tbody.attlist, db.row+ } +} +div { + db.row.role.attribute = attribute role { text } + db.row.attlist = + db.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.row = + + ## A row in a table + element row { db.row.attlist, (db.entry | db.entrytbl)+ } +} +div { + db.entry.role.attribute = attribute role { text } + db.entry.morerows.attribute = + + ## Specifies the number of additional rows which this entry occupies. Defaults to zero. + attribute morerows { xsd:integer } + db.entry.rotate.attribute = + + ## Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + attribute rotate { + + ## Do not rotate the cell. + "0" + | + ## Rotate the cell 90 degrees counter-clockwise. + "1" + } + db.entry.scope.attribute = + + ## Specifies the scope of a header. + attribute scope { + + ## Applies to the row + "row" + | + ## Applies to the column + "col" + | + ## Applies to the row group + "rowgroup" + | + ## Applies to the column group + "colgroup" + } + db.entry.headers.attribute = + + ## Specifies the entry or entries which serve as headers for this element. + attribute headers { xsd:IDREFS } + db.entry.attlist = + db.entry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.entry.morerows.attribute? + & db.column-spec.attributes? + & db.rowsep.attribute? + & db.entry.rotate.attribute? + & db.align.attribute? + & db.entry.scope.attribute? + & db.entry.headers.attribute? + db.entry = + + ## A cell in a table + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:entry" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of entry" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:entry" + s:assert [ + test = "not(.//db:informaltable)" + "informaltable must not occur among the children or descendants of entry" + ] + ] + ] + ] + element entry { + db.entry.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.entrytbl.role.attribute = attribute role { text } + db.entrytbl.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.entrytbl.cols.attribute = + + ## The number of columns in the entry table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.entrytbl.attlist = + db.entrytbl.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.column-spec.attributes? + & db.entrytbl.tgroupstyle.attribute? + & db.entrytbl.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.entrytbl = + + ## A subtable appearing in place of an entry in a table + element entrytbl { + db.entrytbl.attlist, + db.colspec*, + db.spanspec*, + db.cals.entrytbl.thead?, + db.cals.entrytbl.tbody + } +} +div { + db.cals.entrytbl.thead.role.attribute = attribute role { text } + db.cals.entrytbl.thead.attlist = + db.cals.entrytbl.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.thead = + + ## A table header consisting of one or more rows + element thead { + db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+ + } +} +div { + db.cals.entrytbl.tbody.role.attribute = attribute role { text } + db.cals.entrytbl.tbody.attlist = + db.cals.entrytbl.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ } +} +div { + db.entrytbl.row.role.attribute = attribute role { text } + db.entrytbl.row.attlist = + db.entrytbl.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.entrytbl.row = + + ## A row in a table + element row { db.entrytbl.row.attlist, db.entry+ } +} +div { + db.cals.table.role.attribute = attribute role { text } + db.cals.table.label.attribute = db.label.attribute + db.cals.table.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.cals.table.attlist = + db.cals.table.role.attribute? + & db.cals.table.type.attribute? + & db.cals.table.label.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & + ## Indicates if the short or long title should be used in a List of Tables + attribute shortentry { + + ## Indicates that the full title should be used. + "0" + | + ## Indicates that the short short title (titleabbrev) should be used. + "1" + }? + & + ## Indicates if the table should appear in a List of Tables + attribute tocentry { + + ## Indicates that the table should not occur in the List of Tables. + "0" + | + ## Indicates that the table should appear in the List of Tables. + "1" + }? + & db.rowheader.attribute? + db.cals.table.info = db._info.title.onlyreq + db.cals.table = + + ## A formal table in a document + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of table" + ] + ] + ] + ] + element table { + db.cals.table.attlist, + db.cals.table.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +div { + db.cals.informaltable.role.attribute = attribute role { text } + db.cals.informaltable.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.cals.informaltable.attlist = + db.cals.informaltable.role.attribute? + & db.cals.informaltable.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & db.rowheader.attribute? + db.cals.informaltable.info = db._info.title.forbidden + db.cals.informaltable = + + ## A table without a title + element informaltable { + db.cals.informaltable.attlist, + db.cals.informaltable.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +db.html.coreattrs = + + ## This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + attribute class { text }? + & + ## This attribute specifies style information for the current element. + attribute style { text }? + & + ## This attribute offers advisory information about the element for which it is set. + attribute title { text }? +db.html.i18n = + + ## This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + attribute lang { text }? +db.html.events = + + ## Occurs when the pointing device button is clicked over an element. + attribute onclick { text }? + & + ## Occurs when the pointing device button is double clicked over an element. + attribute ondblclick { text }? + & + ## Occurs when the pointing device button is pressed over an element. + attribute onmousedown { text }? + & + ## Occurs when the pointing device button is released over an element. + attribute onmouseup { text }? + & + ## Occurs when the pointing device is moved onto an element. + attribute onmouseover { text }? + & + ## Occurs when the pointing device is moved while it is over an element. + attribute onmousemove { text }? + & + ## Occurs when the pointing device is moved away from an element. + attribute onmouseout { text }? + & + ## Occurs when a key is pressed and released over an element. + attribute onkeypress { text }? + & + ## Occurs when a key is pressed down over an element. + attribute onkeydown { text }? + & + ## Occurs when a key is released over an element. + attribute onkeyup { text }? +db.html.attrs = + db.common.attributes + & db.html.coreattrs + & db.html.i18n + & db.html.events +db.html.cellhalign = + + ## Specifies the alignment of data and the justification of text in a cell. + attribute align { + + ## Left-flush data/Left-justify text. This is the default value for table data. + "left" + | + ## Center data/Center-justify text. This is the default value for table headers. + "center" + | + ## Right-flush data/Right-justify text. + "right" + | + ## Double-justify text. + "justify" + | + ## Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + "char" + }? + & + ## This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + attribute char { text }? + & + ## When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + attribute charoff { + xsd:integer >> a:documentation [ "An explicit offset." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage offset." ] + }? +db.html.cellvalign = + + ## Specifies the vertical position of data within a cell. + attribute valign { + + ## Cell data is flush with the top of the cell. + "top" + | + ## Cell data is centered vertically within the cell. This is the default value. + "middle" + | + ## Cell data is flush with the bottom of the cell. + "bottom" + | + ## All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + "baseline" + }? +db.html.table.attributes = + + ## Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + attribute summary { text }? + & + ## Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + attribute width { + xsd:integer >> a:documentation [ "An explicit width." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage width." ] + }? + & + ## Specifies the width (in pixels only) of the frame around a table. + attribute border { xsd:nonNegativeInteger }? + & + ## Specifies which sides of the frame surrounding a table will be visible. + attribute frame { + + ## No sides. This is the default value. + "void" + | + ## The top side only. + "above" + | + ## The bottom side only. + "below" + | + ## The top and bottom sides only. + "hsides" + | + ## The left-hand side only. + "lhs" + | + ## The right-hand side only. + "rhs" + | + ## The right and left sides only. + "vsides" + | + ## All four sides. + "box" + | + ## All four sides. + "border" + }? + & + ## Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + attribute rules { + + ## No rules. This is the default value. + "none" + | + ## Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + "groups" + | + ## Rules will appear between rows only. + "rows" + | + ## Rules will appear between columns only. + "cols" + | + ## Rules will appear between all rows and columns. + "all" + }? + & + ## Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + attribute cellspacing { + xsd:integer >> a:documentation [ "An explicit spacing." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage spacing." ] + }? + & + ## Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + attribute cellpadding { + xsd:integer >> a:documentation [ "An explicit padding." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage padding." ] + }? +db.html.tablecell.attributes = + + ## Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + attribute abbr { text }? + & + ## This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + attribute axis { text }? + & + ## Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + attribute headers { text }? + & + ## Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + attribute scope { + + ## The current cell provides header information for the rest of the row that contains it + "row" + | + ## The current cell provides header information for the rest of the column that contains it. + "col" + | + ## The header cell provides header information for the rest of the row group that contains it. + "rowgroup" + | + ## The header cell provides header information for the rest of the column group that contains it. + "colgroup" + }? + & + ## Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all rows from the current row to the last row of the table section (thead + ## , tbody + ## , or tfoot + ## ) in which the cell is defined. + attribute rowspan { xsd:nonNegativeInteger }? + & + ## Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all columns from the current column to the last column of the column group (colgroup + ## ) in which the cell is defined. + attribute colspan { xsd:nonNegativeInteger }? +db.html.table.info = db._info.title.forbidden +db.html.table.model = + db.html.table.info?, + db.html.caption, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +db.html.informaltable.info = db._info.title.forbidden +db.html.informaltable.model = + db.html.informaltable.info?, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +div { + db.html.table.role.attribute = attribute role { text } + db.html.table.label.attribute = db.label.attribute + db.html.table.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.html.table.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.table.role.attribute? + & db.html.table.type.attribute? + & db.html.table.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.table = + + ## A formal (captioned) HTML table in a document + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of table" + ] + ] + ] + ] + element table { db.html.table.attlist, db.html.table.model } +} +div { + db.html.informaltable.role.attribute = attribute role { text } + db.html.informaltable.label.attribute = db.label.attribute + db.html.informaltable.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.html.informaltable.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.informaltable.role.attribute? + & db.html.informaltable.type.attribute? + & db.html.informaltable.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.informaltable = + + ## An HTML table without a title + element informaltable { + db.html.informaltable.attlist, db.html.informaltable.model + } +} +div { + db.html.caption.attlist = db.html.attrs + db.html.caption = + + ## An HTML table caption + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caption" + ] + ] + ] + ] + element caption { db.html.caption.attlist, db.all.inlines* } +} +div { + db.html.col.attlist = + db.html.attrs + & + ## This attribute, whose value must be an integer > 0, specifies the number of columns spanned + ## by the col + ## element; the col + ## element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + ## element shares its attributes with the next N-1 columns. + attribute span { xsd:nonNegativeInteger }? + & + ## Specifies a default width for each column spanned by the current col + ## element. It has the same meaning as the width + ## attribute for the colgroup + ## element and overrides it. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.col = + + ## Specifications for a column in an HTML table + element col { db.html.col.attlist, empty } +} +div { + db.html.colgroup.attlist = + db.html.attrs + & + ## This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + ## defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + ## element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + ## element contains one or more col + ## elements. + attribute span { xsd:nonNegativeInteger }? + & + ## This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + ## (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + ## will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + ## element. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.colgroup = + + ## A group of columns in an HTML table + element colgroup { db.html.colgroup.attlist, db.html.col* } +} +div { + db.html.thead.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.thead = + + ## A table header consisting of one or more rows in an HTML table + element thead { db.html.thead.attlist, db.html.tr+ } +} +div { + db.html.tfoot.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tfoot = + + ## A table footer consisting of one or more rows in an HTML table + element tfoot { db.html.tfoot.attlist, db.html.tr+ } +} +div { + db.html.tbody.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tbody = + + ## A wrapper for the rows of an HTML table or informal HTML table + element tbody { db.html.tbody.attlist, db.html.tr+ } +} +div { + db.html.tr.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tr = + + ## A row in an HTML table + element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ } +} +div { + db.html.th.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.th = + + ## A table header entry in an HTML table + element th { + db.html.th.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.html.td.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.td = + + ## A table entry in an HTML table + element td { + db.html.td.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.msgset.role.attribute = attribute role { text } + db.msgset.attlist = + db.msgset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgset.info = db._info.title.only + db.msgset = + + ## A detailed set of messages, usually error messages + element msgset { + db.msgset.attlist, + db.msgset.info, + (db.msgentry+ | db.simplemsgentry+) + } +} +div { + db.msgentry.role.attribute = attribute role { text } + db.msgentry.attlist = + db.msgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgentry = + + ## A wrapper for an entry in a message set + element msgentry { + db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan* + } +} +div { + db.simplemsgentry.role.attribute = attribute role { text } + db.simplemsgentry.msgaud.attribute = + + ## The audience to which the message relevant + attribute msgaud { text } + db.simplemsgentry.msgorig.attribute = + + ## The origin of the message + attribute msgorig { text } + db.simplemsgentry.msglevel.attribute = + + ## The level of importance or severity of a message + attribute msglevel { text } + db.simplemsgentry.attlist = + db.simplemsgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplemsgentry.msgaud.attribute? + & db.simplemsgentry.msgorig.attribute? + & db.simplemsgentry.msglevel.attribute? + db.simplemsgentry = + + ## A wrapper for a simpler entry in a message set + element simplemsgentry { + db.simplemsgentry.attlist, db.msgtext, db.msgexplan+ + } +} +div { + db.msg.role.attribute = attribute role { text } + db.msg.attlist = + db.msg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msg.info = db._info.title.only + db.msg = + + ## A message in a message set + element msg { + db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)* + } +} +div { + db.msgmain.role.attribute = attribute role { text } + db.msgmain.attlist = + db.msgmain.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgmain.info = db._info.title.only + db.msgmain = + + ## The primary component of a message in a message set + element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext } +} +div { + db.msgsub.role.attribute = attribute role { text } + db.msgsub.attlist = + db.msgsub.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgsub.info = db._info.title.only + db.msgsub = + + ## A subcomponent of a message in a message set + element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext } +} +div { + db.msgrel.role.attribute = attribute role { text } + db.msgrel.attlist = + db.msgrel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgrel.info = db._info.title.only + db.msgrel = + + ## A related component of a message in a message set + element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext } +} +div { + db.msgtext.role.attribute = attribute role { text } + db.msgtext.attlist = + db.msgtext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgtext = + + ## The actual text of a message component in a message set + element msgtext { db.msgtext.attlist, db.all.blocks+ } +} +div { + db.msginfo.role.attribute = attribute role { text } + db.msginfo.attlist = + db.msginfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msginfo = + + ## Information about a message in a message set + element msginfo { + db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)* + } +} +div { + db.msglevel.role.attribute = attribute role { text } + db.msglevel.attlist = + db.msglevel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msglevel = + + ## The level of importance or severity of a message in a message set + element msglevel { db.msglevel.attlist, db._text } +} +div { + db.msgorig.role.attribute = attribute role { text } + db.msgorig.attlist = + db.msgorig.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgorig = + + ## The origin of a message in a message set + element msgorig { db.msgorig.attlist, db._text } +} +div { + db.msgaud.role.attribute = attribute role { text } + db.msgaud.attlist = + db.msgaud.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgaud = + + ## The audience to which a message in a message set is relevant + element msgaud { db.msgaud.attlist, db._text } +} +div { + db.msgexplan.role.attribute = attribute role { text } + db.msgexplan.attlist = + db.msgexplan.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgexplan.info = db._info.title.only + db.msgexplan = + + ## Explanatory material relating to a message in a message set + element msgexplan { + db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+ + } +} +div { + db.qandaset.role.attribute = attribute role { text } + db.qandaset.defaultlabel.enumeration = + + ## No labels + "none" + | + ## Numeric labels + "number" + | + ## "Q:" and "A:" labels + "qanda" + db.qandaset.defaultlabel.attribute = + + ## Specifies the default labelling + attribute defaultlabel { db.qandaset.defaultlabel.enumeration } + db.qandaset.attlist = + db.qandaset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.qandaset.defaultlabel.attribute? + db.qandaset.info = db._info.title.only + db.qandaset = + + ## A question-and-answer set + element qandaset { + db.qandaset.attlist, + db.qandaset.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandadiv.role.attribute = attribute role { text } + db.qandadiv.attlist = + db.qandadiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandadiv.info = db._info.title.only + db.qandadiv = + + ## A titled division in a qandaset + element qandadiv { + db.qandadiv.attlist, + db.qandadiv.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandaentry.role.attribute = attribute role { text } + db.qandaentry.attlist = + db.qandaentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandaentry.info = db._info.title.only + db.qandaentry = + + ## A question/answer set within a qandaset + element qandaentry { + db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer* + } +} +div { + db.question.role.attribute = attribute role { text } + db.question.attlist = + db.question.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.question = + + ## A question in a qandaset + element question { db.question.attlist, db.label?, db.all.blocks+ } +} +div { + db.answer.role.attribute = attribute role { text } + db.answer.attlist = + db.answer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.answer = + + ## An answer to a question posed in a qandaset + element answer { db.answer.attlist, db.label?, db.all.blocks+ } +} +div { + db.label.role.attribute = attribute role { text } + db.label.attlist = + db.label.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.label = + + ## A label on a question or answer + element label { db.label.attlist, db._text } +} +db.math.inlines = db.inlineequation +db.equation.content = (db.mediaobject+ | db.mathphrase+) | db._any.mml+ +db.inlineequation.content = + (db.inlinemediaobject+ | db.mathphrase+) | db._any.mml+ +div { + db.equation.role.attribute = attribute role { text } + db.equation.label.attribute = db.label.attribute + db.equation.type.attribute = + + ## Identifies the type of equation + attribute type { text }? + db.equation.attlist = + db.equation.role.attribute? + & db.equation.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.equation.label.attribute? + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.equation.info = db._info.title.only + db.equation = + + ## A displayed mathematical equation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of equation" + ] + ] + ] + ] + element equation { + db.equation.attlist, + db.equation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.informalequation.role.attribute = attribute role { text } + db.informalequation.type.attribute = + + ## Identifies the type of equation + attribute type { text }? + db.informalequation.attlist = + db.informalequation.role.attribute? + & db.informalequation.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.informalequation.info = db._info.title.forbidden + db.informalequation = + + ## A displayed mathematical equation without a title + element informalequation { + db.informalequation.attlist, + db.informalequation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.inlineequation.role.attribute = attribute role { text } + db.inlineequation.attlist = + db.inlineequation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlineequation = + + ## A mathematical equation or expression occurring inline + element inlineequation { + db.inlineequation.attlist, db.alt?, db.inlineequation.content + } +} +div { + db.mathphrase.role.attribute = attribute role { text } + db.mathphrase.attlist = + db.mathphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mathphrase = + + ## A mathematical phrase that can be represented with ordinary text and a small amount of markup + element mathphrase { + db.mathphrase.attlist, + (db._text | db.ubiq.inlines | db._emphasis)* + } +} +db.imagedata.mathml.content = db._any.mml +div { + db.imagedata.mathml.role.attribute = attribute role { text } + db.imagedata.mathml.attlist = + db.imagedata.mathml.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is MathML + attribute format { + + ## Specifies MathML. + "mathml" + }? + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.mathml.info = db._info.title.forbidden + db.imagedata.mathml = + + ## A MathML expression in a media object + element imagedata { + db.imagedata.mathml.attlist, + db.imagedata.mathml.info, + db.imagedata.mathml.content+ + } +} +div { + db._any.mml = + + ## Any element from the MathML namespace + element mml:* { (db._any.attribute | text | db._any)* } +} +db.imagedata.svg.content = db._any.svg +div { + db.imagedata.svg.role.attribute = attribute role { text } + db.imagedata.svg.attlist = + db.imagedata.svg.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is SVG + attribute format { + + ## Specifies SVG. + "svg" + }? + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.svg.info = db._info.title.forbidden + db.imagedata.svg = + + ## An SVG drawing in a media object + element imagedata { + db.imagedata.svg.attlist, + db.imagedata.svg.info, + db.imagedata.svg.content+ + } +} +div { + db._any.svg = + + ## Any element from the SVG namespace + element svg:* { (db._any.attribute | text | db._any)* } +} +db.markup.inlines = + db.tag + | db.markup + | db.token + | db.symbol + | db.literal + | db.code + | db.constant + | db.email + | db.uri +div { + db.markup.role.attribute = attribute role { text } + db.markup.attlist = + db.markup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.markup = + + ## A string of formatting markup in text that is to be represented literally + element markup { db.markup.attlist, db._text } +} +div { + db.tag.role.attribute = attribute role { text } + db.tag.class.enumeration = + + ## An attribute + "attribute" + | + ## An attribute value + "attvalue" + | + ## An element + "element" + | + ## An empty element tag + "emptytag" + | + ## An end tag + "endtag" + | + ## A general entity + "genentity" + | + ## The local name part of a qualified name + "localname" + | + ## A namespace + "namespace" + | + ## A numeric character reference + "numcharref" + | + ## A parameter entity + "paramentity" + | + ## A processing instruction + "pi" + | + ## The prefix part of a qualified name + "prefix" + | + ## An SGML comment + "comment" + | + ## A start tag + "starttag" + | + ## An XML processing instruction + "xmlpi" + db.tag.class.attribute = + + ## Identifies the nature of the tag content + attribute class { db.tag.class.enumeration } + db.tag.namespace.attribute = + + ## Identifies the namespace of the tag content + attribute namespace { xsd:anyURI } + db.tag.attlist = + db.tag.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tag.class.attribute? + & db.tag.namespace.attribute? + db.tag = + + ## A component of XML (or SGML) markup + element tag { db.tag.attlist, (db._text | db.tag)* } +} +div { + db.symbol.class.attribute = + + ## Identifies the class of symbol + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.symbol.role.attribute = attribute role { text } + db.symbol.attlist = + db.symbol.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.symbol.class.attribute? + db.symbol = + + ## A name that is replaced by a value before processing + element symbol { db.symbol.attlist, db._text } +} +div { + db.token.role.attribute = attribute role { text } + db.token.attlist = + db.token.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.token = + + ## A unit of information + element token { db.token.attlist, db._text } +} +div { + db.literal.role.attribute = attribute role { text } + db.literal.attlist = + db.literal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.literal = + + ## Inline text that is some literal value + element literal { db.literal.attlist, db._text } +} +div { + code.language.attribute = + + ## Identifies the (computer) language of the code fragment + attribute language { text } + db.code.role.attribute = attribute role { text } + db.code.attlist = + db.code.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & code.language.attribute? + db.code = + + ## An inline code fragment + element code { + db.code.attlist, (db.programming.inlines | db._text)* + } +} +div { + db.constant.class.attribute = + + ## Identifies the class of constant + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.constant.role.attribute = attribute role { text } + db.constant.attlist = + db.constant.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.constant.class.attribute? + db.constant = + + ## A programming or system constant + element constant { db.constant.attlist, db._text } +} +div { + db.productname.role.attribute = attribute role { text } + db.productname.class.enumeration = + + ## A name with a copyright + "copyright" + | + ## A name with a registered copyright + "registered" + | + ## A name of a service + "service" + | + ## A name which is trademarked + "trade" + db.productname.class.attribute = + + ## Specifies the class of product name + attribute class { db.productname.class.enumeration } + db.productname.attlist = + db.productname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.productname.class.attribute? + db.productname = + + ## The formal name of a product + element productname { db.productname.attlist, db._text } +} +div { + db.productnumber.role.attribute = attribute role { text } + db.productnumber.attlist = + db.productnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productnumber = + + ## A number assigned to a product + element productnumber { db.productnumber.attlist, db._text } +} +div { + db.database.class.enumeration = + + ## An alternate or secondary key + "altkey" + | + ## A constraint + "constraint" + | + ## A data type + "datatype" + | + ## A field + "field" + | + ## A foreign key + "foreignkey" + | + ## A group + "group" + | + ## An index + "index" + | + ## The first or primary key + "key1" + | + ## An alternate or secondary key + "key2" + | + ## A name + "name" + | + ## The primary key + "primarykey" + | + ## A (stored) procedure + "procedure" + | + ## A record + "record" + | + ## A rule + "rule" + | + ## The secondary key + "secondarykey" + | + ## A table + "table" + | + ## A user + "user" + | + ## A view + "view" + db.database.class.attribute = + + ## Identifies the class of database artifact + attribute class { db.database.class.enumeration } + db.database.role.attribute = attribute role { text } + db.database.attlist = + db.database.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.database.class.attribute? + db.database = + + ## The name of a database, or part of a database + element database { db.database.attlist, db._text } +} +div { + db.application.class.enumeration = + + ## A hardware application + "hardware" + | + ## A software application + "software" + db.application.class.attribute = + + ## Identifies the class of application + attribute class { db.application.class.enumeration } + db.application.role.attribute = attribute role { text } + db.application.attlist = + db.application.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.application.class.attribute? + db.application = + + ## The name of a software program + element application { db.application.attlist, db._text } +} +div { + db.hardware.role.attribute = attribute role { text } + db.hardware.attlist = + db.hardware.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.hardware = + + ## A physical part of a computer system + element hardware { db.hardware.attlist, db._text } +} +db.gui.inlines = + db.guiicon + | db.guibutton + | db.guimenuitem + | db.guimenu + | db.guisubmenu + | db.guilabel + | db.menuchoice + | db.mousebutton +div { + db.guibutton.role.attribute = attribute role { text } + db.guibutton.attlist = + db.guibutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guibutton = + + ## The text on a button in a GUI + element guibutton { + db.guibutton.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guiicon.role.attribute = attribute role { text } + db.guiicon.attlist = + db.guiicon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guiicon = + + ## Graphic and/or text appearing as a icon in a GUI + element guiicon { + db.guiicon.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guilabel.role.attribute = attribute role { text } + db.guilabel.attlist = + db.guilabel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guilabel = + + ## The text of a label in a GUI + element guilabel { + db.guilabel.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenu.role.attribute = attribute role { text } + db.guimenu.attlist = + db.guimenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenu = + + ## The name of a menu in a GUI + element guimenu { + db.guimenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenuitem.role.attribute = attribute role { text } + db.guimenuitem.attlist = + db.guimenuitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenuitem = + + ## The name of a terminal menu item in a GUI + element guimenuitem { + db.guimenuitem.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guisubmenu.role.attribute = attribute role { text } + db.guisubmenu.attlist = + db.guisubmenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guisubmenu = + + ## The name of a submenu in a GUI + element guisubmenu { + db.guisubmenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.menuchoice.role.attribute = attribute role { text } + db.menuchoice.attlist = + db.menuchoice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.menuchoice = + + ## A selection or series of selections from a menu + element menuchoice { + db.menuchoice.attlist, + db.shortcut?, + (db.guibutton + | db.guiicon + | db.guilabel + | db.guimenu + | db.guimenuitem + | db.guisubmenu)+ + } +} +div { + db.mousebutton.role.attribute = attribute role { text } + db.mousebutton.attlist = + db.mousebutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mousebutton = + + ## The conventional name of a mouse button + element mousebutton { db.mousebutton.attlist, db._text } +} +db.keyboard.inlines = + db.keycombo + | db.keycap + | db.keycode + | db.keysym + | db.shortcut + | db.accel +div { + db.keycap.function.enumeration = + + ## The "Alt" key + "alt" + | + ## The "Alt Graph" key + "altgr" + | + ## The "Backspace" key + "backspace" + | + ## The "Command" key + "command" + | + ## The "Control" key + "control" + | + ## The "Delete" key + "delete" + | + ## The down arrow + "down" + | + ## The "End" key + "end" + | + ## The "Enter" key + "enter" + | + ## The "Escape" key + "escape" + | + ## The "Home" key + "home" + | + ## The "Insert" key + "insert" + | + ## The left arrow + "left" + | + ## The "Meta" key + "meta" + | + ## The "Option" key + "option" + | + ## The page down key + "pagedown" + | + ## The page up key + "pageup" + | + ## The right arrow + "right" + | + ## The "Return" key + "return" + | + ## The "Shift" key + "shift" + | + ## The spacebar + "space" + | + ## The "Tab" key + "tab" + | + ## The up arrow + "up" + db.keycap.function-enum.attribute = + + ## Identifies the function key + attribute function { db.keycap.function.enumeration }? + db.keycap.function-other.attributes = + + ## Identifies the function key + attribute function { + + ## Indicates a non-standard function key + "other" + }?, + + ## Specifies a keyword that identifies the non-standard key + attribute otherfunction { text } + db.keycap.function.attrib = + db.keycap.function-enum.attribute + | db.keycap.function-other.attributes + db.keycap.role.attribute = attribute role { text } + db.keycap.attlist = + db.keycap.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycap.function.attrib + db.keycap = + + ## The text printed on a key on a keyboard + element keycap { db.keycap.attlist, db._text } +} +div { + db.keycode.role.attribute = attribute role { text } + db.keycode.attlist = + db.keycode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keycode = + + ## The internal, frequently numeric, identifier for a key on a keyboard + element keycode { db.keycode.attlist, db._text } +} +db.keycombination.contentmodel = + (db.keycap | db.keycombo | db.keysym) | db.mousebutton +div { + db.keycombo.action.enumeration = + + ## A (single) mouse click. + "click" + | + ## A double mouse click. + "double-click" + | + ## A mouse or key press. + "press" + | + ## Sequential clicks or presses. + "seq" + | + ## Simultaneous clicks or presses. + "simul" + db.keycombo.action-enum.attribute = + + ## Identifies the nature of the action taken. If keycombo + ## contains more than one element, simul + ## is the default, otherwise there is no default. + attribute action { db.keycombo.action.enumeration }? + db.keycombo.action-other.attributes = + + ## Identifies the nature of the action taken + attribute action { + + ## Indicates a non-standard action + "other" + }?, + + ## Identifies the non-standard action in some unspecified way. + attribute otheraction { text } + db.keycombo.action.attrib = + db.keycombo.action-enum.attribute + | db.keycombo.action-other.attributes + db.keycombo.role.attribute = attribute role { text } + db.keycombo.attlist = + db.keycombo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycombo.action.attrib + db.keycombo = + + ## A combination of input actions + element keycombo { + db.keycombo.attlist, db.keycombination.contentmodel+ + } +} +div { + db.keysym.role.attribute = attribute role { text } + db.keysym.attlist = + db.keysym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keysym = + + ## The symbolic name of a key on a keyboard + element keysym { db.keysym.attlist, db._text } +} +div { + db.accel.role.attribute = attribute role { text } + db.accel.attlist = + db.accel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.accel = + + ## A graphical user interface (GUI) keyboard shortcut + element accel { db.accel.attlist, db._text } +} +div { + db.shortcut.action.attrib = db.keycombo.action.attrib + db.shortcut.role.attribute = attribute role { text } + db.shortcut.attlist = + db.shortcut.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.shortcut.action.attrib + db.shortcut = + + ## A key combination for an action that is also accessible through a menu + element shortcut { + db.shortcut.attlist, db.keycombination.contentmodel+ + } +} +db.os.inlines = + db.prompt + | db.envar + | db.filename + | db.command + | db.computeroutput + | db.userinput +db.computeroutput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines +db.userinput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines +db.prompt.inlines = db._text | db.co +div { + db.prompt.role.attribute = attribute role { text } + db.prompt.attlist = + db.prompt.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.prompt = + + ## A character or string indicating the start of an input field in a computer display + element prompt { db.prompt.attlist, db.prompt.inlines* } +} +div { + db.envar.role.attribute = attribute role { text } + db.envar.attlist = + db.envar.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.envar = + + ## A software environment variable + element envar { db.envar.attlist, db._text } +} +div { + db.filename.class.enumeration = + + ## A device + "devicefile" + | + ## A directory + "directory" + | + ## A filename extension + "extension" + | + ## A header file (as for a programming language) + "headerfile" + | + ## A library file + "libraryfile" + | + ## A partition (as of a hard disk) + "partition" + | + ## A symbolic link + "symlink" + db.filename.class.attribute = + + ## Identifies the class of filename + attribute class { db.filename.class.enumeration } + db.filename.path.attribute = + + ## Specifies the path of the filename + attribute path { text } + db.filename.role.attribute = attribute role { text } + db.filename.attlist = + db.filename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.filename.path.attribute? + & db.filename.class.attribute? + db.filename = + + ## The name of a file + element filename { db.filename.attlist, db._text } +} +div { + db.command.role.attribute = attribute role { text } + db.command.attlist = + db.command.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.command = + + ## The name of an executable program or other software command + element command { db.command.attlist, db._text } +} +div { + db.computeroutput.role.attribute = attribute role { text } + db.computeroutput.attlist = + db.computeroutput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.computeroutput = + + ## Data, generally text, displayed or presented by a computer + element computeroutput { + db.computeroutput.attlist, db.computeroutput.inlines* + } +} +div { + db.userinput.role.attribute = attribute role { text } + db.userinput.attlist = + db.userinput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.userinput = + + ## Data entered by the user + element userinput { db.userinput.attlist, db.userinput.inlines* } +} +div { + db.cmdsynopsis.role.attribute = attribute role { text } + db.cmdsynopsis.sepchar.attribute = + + ## Specifies the character that should separate the command and its top-level arguments + attribute sepchar { text } + db.cmdsynopsis.cmdlength.attribute = + + ## Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + attribute cmdlength { text } + db.cmdsynopsis.label.attribute = db.label.attribute + db.cmdsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.cmdsynopsis.attlist = + db.cmdsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.cmdsynopsis.sepchar.attribute? + & db.cmdsynopsis.cmdlength.attribute? + & db.cmdsynopsis.label.attribute? + & db.cmdsynopsis.packageref.attribute? + db.cmdsynopsis.info = db._info.title.forbidden + db.cmdsynopsis = + + ## A syntax summary for a software command + element cmdsynopsis { + db.cmdsynopsis.attlist, + db.cmdsynopsis.info, + (db.command | db.arg | db.group | db.sbr)+, + db.synopfragment* + } +} +db.rep.enumeration = + + ## Can not be repeated. + "norepeat" + | + ## Can be repeated. + "repeat" +db.rep.attribute = + + ## Indicates whether or not repetition is possible. + [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration } +db.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted without indication. + "plain" + | + ## Formatted to indicate that it is required. + "req" +db.choice.opt.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration } +db.choice.req.attribute = + + ## Indicates optionality. + [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration } +div { + db.arg.role.attribute = attribute role { text } + db.arg.rep.attribute = db.rep.attribute + db.arg.choice.attribute = db.choice.opt.attribute + db.arg.attlist = + db.arg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.arg.rep.attribute? + & db.arg.choice.attribute? + db.arg = + + ## An argument in a cmdsynopsis + element arg { + db.arg.attlist, + (db._text + | db.arg + | db.group + | db.option + | db.synopfragmentref + | db.sbr)* + } +} +div { + db.group.role.attribute = attribute role { text } + db.group.rep.attribute = db.rep.attribute + db.group.choice.attribute = db.choice.opt.attribute + db.group.attlist = + db.group.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.rep.attribute? + & db.group.choice.attribute? + db.group = + + ## A group of elements in a cmdsynopsis + element group { + db.group.attlist, + (db.arg + | db.group + | db.option + | db.synopfragmentref + | db.replaceable + | db.sbr)+ + } +} +div { + db.sbr.role.attribute = attribute role { text } + db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes + db.sbr = + + ## An explicit line break in a command synopsis + element sbr { db.sbr.attlist, empty } +} +div { + db.synopfragment.role.attribute = attribute role { text } + db.synopfragment.attlist = + db.synopfragment.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.synopfragment = + + ## A portion of a cmdsynopsis broken out from the main body of the synopsis + element synopfragment { + db.synopfragment.attlist, (db.arg | db.group)+ + } +} +div { + db.synopfragmentref.role.attribute = attribute role { text } + db.synopfragmentref.attlist = + db.synopfragmentref.role.attribute? + & db.common.attributes + & db.linkend.attribute + db.synopfragmentref = + + ## A reference to a fragment of a command synopsis + [ + s:pattern [ + s:title [ "Synopsis fragment type constraint" ] + s:rule [ + context = "db:synopfragmentref" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on synopfragmentref must point to a synopfragment." + ] + ] + ] + ] + element synopfragmentref { db.synopfragmentref.attlist, text } +} +db.programming.inlines = + db.function + | db.parameter + | db.varname + | db.returnvalue + | db.type + | db.classname + | db.exceptionname + | db.interfacename + | db.methodname + | db.modifier + | db.initializer + | db.buildtarget + | db.oo.inlines + | db.templatename + | db.macroname + | db.unionname + | db.enumname + | db.enumvalue + | db.enumidentifier + | db.typedefname +db.oo.inlines = db.ooclass | db.ooexception | db.oointerface +db.synopsis.blocks = + (db.funcsynopsis + | db.classsynopsis + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis + | db.enumsynopsis + | db.typedefsynopsis + | db.packagesynopsis + | db.macrosynopsis + | db.unionsynopsis) + | db.cmdsynopsis +div { + db.synopsis.role.attribute = attribute role { text } + db.synopsis.label.attribute = db.label.attribute + db.synopsis.attlist = + db.synopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.synopsis.label.attribute? + db.synopsis = + + ## A general-purpose element for representing the syntax of commands or functions + element synopsis { db.synopsis.attlist, db.verbatim.contentmodel } +} +div { + db.synopsisinfo.role.attribute = attribute role { text } + db.synopsisinfo.attlist = + db.synopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.synopsisinfo = + + ## Information supplementing synopsis + element synopsisinfo { + db.synopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcsynopsis.info = db._info.title.forbidden + db.funcsynopsis.role.attribute = attribute role { text } + db.funcsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.funcsynopsis.attlist = + db.funcsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.funcsynopsis.packageref.attribute? + db.funcsynopsis = + + ## The syntax summary for a function definition + element funcsynopsis { + db.funcsynopsis.attlist, + db.funcsynopsis.info, + (db.funcsynopsisinfo | db.funcprototype)+ + } +} +div { + db.funcsynopsisinfo.role.attribute = attribute role { text } + db.funcsynopsisinfo.attlist = + db.funcsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.funcsynopsisinfo = + + ## Information supplementing the funcdefs of a funcsynopsis + element funcsynopsisinfo { + db.funcsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcprototype.role.attribute = attribute role { text } + db.funcprototype.attlist = + db.funcprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcprototype = + + ## The prototype of a function + element funcprototype { + db.funcprototype.attlist, + db.modifier*, + db.funcdef, + (db.void + | db.varargs + | ((db.paramdef | db.group.paramdef)+, db.varargs?)), + db.modifier* + } +} +div { + db.funcdef.role.attribute = attribute role { text } + db.funcdef.attlist = + db.funcdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcdef = + + ## A function (subroutine) name and its return type + element funcdef { + db.funcdef.attlist, + (db._text | db.type | db.templatename | db.void | db.function)* + } +} +div { + db.function.role.attribute = attribute role { text } + db.function.attlist = + db.function.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.function = + + ## The name of a function or subroutine, as in a programming language + element function { db.function.attlist, db._text } +} +div { + db.void.role.attribute = attribute role { text } + db.void.attlist = + db.void.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.void = + + ## An empty element in a function synopsis indicating that the function in question takes no arguments + element void { db.void.attlist, empty } +} +div { + db.varargs.role.attribute = attribute role { text } + db.varargs.attlist = + db.varargs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varargs = + + ## An empty element in a function synopsis indicating a variable number of arguments + element varargs { db.varargs.attlist, empty } +} +div { + db.group.paramdef.role.attribute = attribute role { text } + db.group.paramdef.choice.attribute = db.choice.opt.attribute + db.group.paramdef.attlist = + db.group.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.paramdef.choice.attribute? + db.group.paramdef = + + ## A group of parameters + element group { + db.group.paramdef.attlist, (db.paramdef | db.group.paramdef)+ + } +} +div { + db.paramdef.role.attribute = attribute role { text } + db.paramdef.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted to indicate that it is required. + "req" + db.paramdef.choice.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] + attribute choice { db.paramdef.choice.enumeration } + db.paramdef.attlist = + db.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.paramdef.choice.attribute? + db.paramdef = + + ## Information about a function parameter in a programming language + element paramdef { + db.paramdef.attlist, + (db._text + | db.initializer + | db.modifier + | db.type + | db.templatename + | db.parameter + | db.funcparams)* + } +} +div { + db.funcparams.role.attribute = attribute role { text } + db.funcparams.attlist = + db.funcparams.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcparams = + + ## Parameters for a function referenced through a function pointer in a synopsis + element funcparams { db.funcparams.attlist, db._text } +} +div { + db.classsynopsis.info = db._info.title.forbidden + db.classsynopsis.role.attribute = attribute role { text } + db.classsynopsis.class.enumeration = + + ## This is the synopsis of a class + "class" + | + ## This is the synopsis of an interface + "interface" + db.classsynopsis.class.attribute = + + ## Specifies the nature of the synopsis + attribute class { db.classsynopsis.class.enumeration } + db.classsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.classsynopsis.attlist = + db.classsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.classsynopsis.class.attribute? + & db.classsynopsis.packageref.attribute? + db.classsynopsis = + + ## The syntax summary for a class definition + element classsynopsis { + db.classsynopsis.attlist, + db.classsynopsis.info, + db.classsynopsisinfo*, + db.templatename*, + db.oo.inlines, + (db.template + | db.ooexception + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis + | db.classsynopsisinfo)* + } +} +div { + db.classsynopsisinfo.role.attribute = attribute role { text } + db.classsynopsisinfo.attlist = + db.classsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.classsynopsisinfo = + + ## Information supplementing the contents of a classsynopsis + element classsynopsisinfo { + db.classsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.ooclass.role.attribute = attribute role { text } + db.ooclass.attlist = + db.ooclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooclass = + + ## A class in an object-oriented programming language + element ooclass { + db.ooclass.attlist, + (db.package | db.modifier)*, + db.classname, + db.modifier* + } +} +div { + db.oointerface.role.attribute = attribute role { text } + db.oointerface.attlist = + db.oointerface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.oointerface = + + ## An interface in an object-oriented programming language + element oointerface { + db.oointerface.attlist, + (db.package | db.modifier)*, + db.interfacename, + db.modifier* + } +} +div { + db.ooexception.role.attribute = attribute role { text } + db.ooexception.attlist = + db.ooexception.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooexception = + + ## An exception in an object-oriented programming language + element ooexception { + db.ooexception.attlist, + (db.package | db.modifier)*, + db.exceptionname, + db.modifier* + } +} +db.modifier.xml.space.attribute = + + ## Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + attribute xml:space { + + ## Extra whitespace and line breaks must be preserved. + [ + # Ideally the definition of xml:space used on modifier would be + # different from the definition used on the verbatim elements. The + # verbatim elements forbid the use of xml:space="default" which + # wouldn't be a problem on modifier. But doing that causes the + # generated XSD schemas to be broken so I'm just reusing the existing + # definition for now. It won't be backwards incompatible to fix this + # problem in the future. + # | ## Extra whitespace and line breaks are not preserved. + # "default" + + ] + "preserve" + } +div { + db.modifier.role.attribute = attribute role { text } + db.modifier.attlist = + db.modifier.xml.space.attribute? + & db.modifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.modifier = + + ## Modifiers in a synopsis + element modifier { db.modifier.attlist, db._text } +} +div { + db.interfacename.role.attribute = attribute role { text } + db.interfacename.attlist = + db.interfacename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.interfacename = + + ## The name of an interface + element interfacename { db.interfacename.attlist, db._text } +} +div { + db.exceptionname.role.attribute = attribute role { text } + db.exceptionname.attlist = + db.exceptionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.exceptionname = + + ## The name of an exception + element exceptionname { db.exceptionname.attlist, db._text } +} +div { + db.fieldsynopsis.info = db._info.title.forbidden + db.fieldsynopsis.role.attribute = attribute role { text } + db.fieldsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.fieldsynopsis.attlist = + db.fieldsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.fieldsynopsis.packageref.attribute? + db.fieldsynopsis = + + ## The name of a field in a class definition + element fieldsynopsis { + db.fieldsynopsis.attlist, + db.fieldsynopsis.info, + db.synopsisinfo*, + db.modifier*, + (db.type | db.templatename)*, + db.varname, + db.modifier*, + db.initializer?, + db.synopsisinfo* + } +} +div { + db.initializer.role.attribute = attribute role { text } + db.initializer.attlist = + db.initializer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.initializer.inlines = db._text | db.mathphrase | db.markup.inlines + db.initializer = + + ## The initializer for a fieldsynopsis + element initializer { + db.initializer.attlist, db.initializer.inlines* + } +} +div { + db.constructorsynopsis.info = db._info.title.forbidden + db.constructorsynopsis.role.attribute = attribute role { text } + db.constructorsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.constructorsynopsis.attlist = + db.constructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.constructorsynopsis.packageref.attribute? + db.constructorsynopsis = + + ## A syntax summary for a constructor + element constructorsynopsis { + db.constructorsynopsis.attlist, + db.constructorsynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.methodname?, + ((db.methodparam | db.group.methodparam)+ | db.void?), + db.modifier*, + db.exceptionname*, + db.synopsisinfo* + } +} +div { + db.destructorsynopsis.info = db._info.title.forbidden + db.destructorsynopsis.role.attribute = attribute role { text } + db.destructorsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.destructorsynopsis.attlist = + db.destructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.destructorsynopsis.packageref.attribute? + db.destructorsynopsis = + + ## A syntax summary for a destructor + element destructorsynopsis { + db.destructorsynopsis.attlist, + db.destructorsynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.methodname?, + ((db.methodparam | db.group.methodparam)+ | db.void?), + db.modifier*, + db.exceptionname*, + db.synopsisinfo* + } +} +div { + db.methodsynopsis.info = db._info.title.forbidden + db.methodsynopsis.role.attribute = attribute role { text } + db.methodsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.methodsynopsis.attlist = + db.methodsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.methodsynopsis.packageref.attribute? + db.methodsynopsis = + + ## A syntax summary for a method + element methodsynopsis { + db.methodsynopsis.attlist, + db.methodsynopsis.info, + db.synopsisinfo*, + (db.templatename | db.modifier)*, + (db.type | db.void)?, + db.methodname, + db.templatename*, + ((db.methodparam | db.group.methodparam)+ | db.void), + (db.exceptionname | db.modifier | db.templatename)*, + db.synopsisinfo* + } +} +div { + db.methodname.role.attribute = attribute role { text } + db.methodname.attlist = + db.methodname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.methodname = + + ## The name of a method + element methodname { db.methodname.attlist, db._text } +} +div { + db.methodparam.role.attribute = attribute role { text } + db.methodparam.rep.attribute = db.rep.attribute + db.methodparam.choice.attribute = db.choice.req.attribute + db.methodparam.attlist = + db.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.methodparam.rep.attribute? + & db.methodparam.choice.attribute? + db.methodparam = + + ## Parameters to a method + element methodparam { + db.methodparam.attlist, + (db.modifier | db.type | db.templatename)*, + ((db.parameter, db.initializer?) | db.funcparams), + db.modifier* + } +} +div { + db.group.methodparam.role.attribute = attribute role { text } + db.group.methodparam.choice.attribute = db.choice.opt.attribute + db.group.methodparam.attlist = + db.group.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.methodparam.choice.attribute? + db.group.methodparam = + + ## A group of method parameters + element group { + db.group.methodparam.attlist, + (db.methodparam | db.group.methodparam)+ + } +} +div { + db.varname.role.attribute = attribute role { text } + db.varname.attlist = + db.varname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varname = + + ## The name of a variable + element varname { db.varname.attlist, db._text } +} +div { + db.buildtarget.role.attribute = attribute role { text } + db.buildtarget.attlist = + db.buildtarget.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.buildtarget = + + ## Target of a build + element buildtarget { db.buildtarget.attlist, db._text } +} +div { + db.returnvalue.role.attribute = attribute role { text } + db.returnvalue.attlist = + db.returnvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.returnvalue = + + ## The value returned by a function + element returnvalue { db.returnvalue.attlist, db._text } +} +div { + db.type.role.attribute = attribute role { text } + db.type.class.enumeration = + + ## Combined type is union of nested types + "union" + | + ## Combined type is intersection of nested types + "intersection" + db.type.class.attribute = + + ## Specifies the way how are nested types combined together + attribute class { db.type.class.enumeration } + db.type.attlist = + db.type.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.type.class.attribute? + db.type = + + ## The classification of a value + element type { + db.type.attlist, (db._text | db.programming.inlines)* + } +} +div { + db.classname.role.attribute = attribute role { text } + db.classname.attlist = + db.classname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.classname = + + ## The name of a class, in the object-oriented programming sense + element classname { db.classname.attlist, db._text } +} +div { + db.templatename.role.attribute = attribute role { text } + db.templatename.attlist = + db.templatename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.templatename = + + ## The identifier for a template, in the generic programming sense + element templatename { db.templatename.attlist, db._text } +} +div { + db.template.role.attribute = attribute role { text } + db.template.attlist = + db.template.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.template = + + ## The definition of a template, in the generic programming sense + element template { + db.template.attlist, + (((db.modifier | db.type | db._text)*, + db.templatename, + (db.modifier | db.type | db._text)*) + | db.specializedtemplate) + } +} +div { + db.specializedtemplate.role.attribute = attribute role { text } + db.specializedtemplate.attlist = + db.specializedtemplate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.specializedtemplate = + + ## The specialization of a template identifier, in the generic programming sense + element specializedtemplate { + db.specializedtemplate.attlist, + (db.modifier | db.type | db._text)* + } +} +div { + db.packagesynopsis.info = db._info.title.forbidden + db.packagesynopsis.role.attribute = attribute role { text } + db.packagesynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.packagesynopsis.attlist = + db.packagesynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.packagesynopsis.packageref.attribute? + db.packagesynopsis = + + ## The syntax summary for a package definition + element packagesynopsis { + db.packagesynopsis.attlist, + db.packagesynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.package, + db.modifier*, + (db.synopsis.blocks | db.synopsisinfo)* + } +} +div { + db.macroname.role.attribute = attribute role { text } + db.macroname.attlist = + db.macroname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macroname = + + ## The name of a macro (a code-generating function) + element macroname { db.macroname.attlist, db._text } +} +div { + db.macrosynopsis.info = db._info.title.forbidden + db.macrosynopsis.role.attribute = attribute role { text } + db.macrosynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.macrosynopsis.attlist = + db.macrosynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.macrosynopsis.packageref.attribute? + db.macrosynopsis = + + ## The syntax summary for a macro definition (code-generating function) + element macrosynopsis { + db.macrosynopsis.attlist, + db.macrosynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.macroname, + (db.package | db.modifier)*, + db.macroprototype+, + db.synopsisinfo* + } +} +div { + db.macroprototype.role.attribute = attribute role { text } + db.macroprototype.attlist = + db.macroprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macroprototype = + + ## The prototype of a macro (code-generating function) + element macroprototype { + db.macroprototype.attlist, + db.modifier*, + db.macrodef, + (db.void + | db.varargs + | ((db.paramdef | db.group.paramdef)+, db.varargs?)), + db.modifier* + } +} +div { + db.macrodef.role.attribute = attribute role { text } + db.macrodef.attlist = + db.macrodef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macrodef = + + ## A macro name and its return type + element macrodef { + db.macrodef.attlist, (db.type | db.templatename)*, db.macroname + } +} +div { + db.unionname.role.attribute = attribute role { text } + db.unionname.attlist = + db.unionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.unionname = + + ## The name of a union of types + element unionname { db.unionname.attlist, db._text } +} +div { + db.union.role.attribute = attribute role { text } + db.union.attlist = + db.union.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.union = + + ## The definition of a union of types, which may be more than a name + element union { db.union.attlist, db.type+ } +} +div { + db.unionsynopsis.info = db._info.title.forbidden + db.unionsynopsis.role.attribute = attribute role { text } + # N.B. the enumeration is explicitly identical to the enumeration + # on enumsynopsis by default. + db.unionsynopsis.ordered.attribute = + + ## Indicates how the value of a union is specified. + attribute ordered { db.enumsynopsis.ordered.enumeration } + db.unionsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.unionsynopsis.attlist = + db.unionsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.unionsynopsis.ordered.attribute? + & db.unionsynopsis.packageref.attribute? + db.unionsynopsis = + + ## The syntax summary for a union-of-types definition + element unionsynopsis { + db.unionsynopsis.attlist, + db.unionsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.unionname?, + db.union, + (db.package | db.modifier)*, + db.synopsisinfo* + } +} +div { + db.enumname.role.attribute = attribute role { text } + db.enumname.attlist = + db.enumname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumname = + + ## The name of an enumeration + element enumname { db.enumname.attlist, db._text } +} +div { + db.enumvalue.role.attribute = attribute role { text } + db.enumvalue.attlist = + db.enumvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumvalue = + + ## The value an enumerated type can take + element enumvalue { db.enumvalue.attlist, db._text } +} +div { + db.enumitemdescription.role.attribute = attribute role { text } + db.enumitemdescription.attlist = + db.enumitemdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumitemdescription = + + ## The description of a value an enumerated type can take + element enumitemdescription { + db.enumitemdescription.attlist, db.all.inlines* + } +} +div { + db.enumidentifier.role.attribute = attribute role { text } + db.enumidentifier.attlist = + db.enumidentifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumidentifier = + + ## The identifier of a value an enumerated type can take + element enumidentifier { db.enumidentifier.attlist, db._text } +} +div { + db.enumitem.role.attribute = attribute role { text } + db.enumitem.attlist = + db.enumitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumitem = + + ## A value an enumerated type can take and its description + element enumitem { + db.enumitem.attlist, + db.enumidentifier, + db.enumvalue*, + db.enumitemdescription? + } +} +div { + db.enumsynopsis.info = db._info.title.forbidden + db.enumsynopsis.role.attribute = attribute role { text } + db.enumsynopsis.ordered.enumeration = + + ## Value of enum is specified explicitly using enumvalue + "0" + | + ## Value of enum is inferred from its position + "1" + db.enumsynopsis.ordered.attribute = + + ## Indicates how the value of an enumeration is specified. + attribute ordered { db.enumsynopsis.ordered.enumeration } + db.enumsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.enumsynopsis.attlist = + db.enumsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.enumsynopsis.ordered.attribute? + & db.enumsynopsis.packageref.attribute? + db.enumsynopsis = + + ## The syntax summary for an enumerated-type definition + element enumsynopsis { + db.enumsynopsis.attlist, + db.enumsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + (db.enumname, db.modifier*)?, + db.enumitem+, + db.synopsisinfo* + } +} +div { + db.typedefname.role.attribute = attribute role { text } + db.typedefname.attlist = + db.typedefname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.typedefname = + + ## The name of a type alias + element typedefname { db.typedefname.attlist, db._text } +} +div { + db.typedefsynopsis.info = db._info.title.forbidden + db.typedefsynopsis.role.attribute = attribute role { text } + db.typedefsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.typedefsynopsis.attlist = + db.typedefsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.typedefsynopsis.packageref.attribute? + db.typedefsynopsis = + + ## The syntax summary for a type-alias definition + element typedefsynopsis { + db.typedefsynopsis.attlist, + db.typedefsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.typedefname, + (db.package | db.modifier)*, + db.synopsisinfo* + } +} +div { + db.programlisting.role.attribute = attribute role { text } + db.programlisting.width.attribute = db.width.characters.attribute + db.programlisting.attlist = + db.programlisting.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.programlisting.width.attribute? + db.programlisting = + + ## A literal listing of all or part of a program + element programlisting { + db.programlisting.attlist, db.verbatim.contentmodel + } +} +db.admonition.blocks = + db.caution | db.danger | db.important | db.note | db.tip | db.warning +db.admonition.contentmodel = db._info.title.only, db.all.blocks+ +div { + db.caution.role.attribute = attribute role { text } + db.caution.attlist = + db.caution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caution = + + ## A note of caution + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caution" + ] + ] + ] + ] + element caution { db.caution.attlist, db.admonition.contentmodel } +} +div { + db.danger.role.attribute = attribute role { text } + db.danger.attlist = + db.danger.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.danger = + + ## An admonition set off from the text indicating hazardous situation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of danger" + ] + ] + ] + ] + element danger { db.danger.attlist, db.admonition.contentmodel } +} +div { + db.important.role.attribute = attribute role { text } + db.important.attlist = + db.important.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.important = + + ## An admonition set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of important" + ] + ] + ] + ] + element important { + db.important.attlist, db.admonition.contentmodel + } +} +div { + db.note.role.attribute = attribute role { text } + db.note.attlist = + db.note.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.note = + + ## A message set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of note" + ] + ] + ] + ] + element note { db.note.attlist, db.admonition.contentmodel } +} +div { + db.tip.role.attribute = attribute role { text } + db.tip.attlist = + db.tip.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tip = + + ## A suggestion to the user, set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of tip" + ] + ] + ] + ] + element tip { db.tip.attlist, db.admonition.contentmodel } +} +div { + db.warning.role.attribute = attribute role { text } + db.warning.attlist = + db.warning.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.warning = + + ## An admonition set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of warning" + ] + ] + ] + ] + element warning { db.warning.attlist, db.admonition.contentmodel } +} +db.error.inlines = + db.errorcode | db.errortext | db.errorname | db.errortype +div { + db.errorcode.role.attribute = attribute role { text } + db.errorcode.attlist = + db.errorcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorcode = + + ## An error code + element errorcode { db.errorcode.attlist, db._text } +} +div { + db.errorname.role.attribute = attribute role { text } + db.errorname.attlist = + db.errorname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorname = + + ## An error name + element errorname { db.errorname.attlist, db._text } +} +div { + db.errortext.role.attribute = attribute role { text } + db.errortext.attlist = + db.errortext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortext = + + ## An error message. + element errortext { db.errortext.attlist, db._text } +} +div { + db.errortype.role.attribute = attribute role { text } + db.errortype.attlist = + db.errortype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortype = + + ## The classification of an error message + element errortype { db.errortype.attlist, db._text } +} +db.systemitem.inlines = db._text | db.co +div { + db.systemitem.class.enumeration = + + ## A daemon or other system process (syslogd) + "daemon" + | + ## A domain name (example.com) + "domainname" + | + ## An ethernet address (00:05:4E:49:FD:8E) + "etheraddress" + | + ## An event of some sort (SIGHUP) + "event" + | + ## An event handler of some sort (hangup) + "eventhandler" + | + ## A filesystem (ext3) + "filesystem" + | + ## A fully qualified domain name (my.example.com) + "fqdomainname" + | + ## A group name (wheel) + "groupname" + | + ## A network interface (eth0) + "interface" + | + ## An IP address (127.0.0.1) + "ipaddress" + | + ## A library (libncurses) + "library" + | + ## A macro + "macro" + | + ## A netmask (255.255.255.192) + "netmask" + | + ## A newsgroup (comp.text.xml) + "newsgroup" + | + ## An operating system name (Hurd) + "osname" + | + ## A process (gnome-cups-icon) + "process" + | + ## A protocol (ftp) + "protocol" + | + ## A resource + "resource" + | + ## A security context (a role, permission, or security token, for example) + "securitycontext" + | + ## A server (mail.example.com) + "server" + | + ## A service (ppp) + "service" + | + ## A system name (hephaistos) + "systemname" + | + ## A user name (ndw) + "username" + db.systemitem.class-enum.attribute = + + ## Identifies the nature of the system item + attribute class { db.systemitem.class.enumeration }? + db.systemitem.class-other.attribute = + + ## Identifies the nature of the non-standard system item + attribute otherclass { xsd:NMTOKEN } + db.systemitem.class-other.attributes = + + ## Identifies the kind of systemitemgraphic identifier + attribute class { + + ## Indicates that the system item is some 'other' kind. + "other" + } + & db.systemitem.class-other.attribute + db.systemitem.class.attribute = + db.systemitem.class-enum.attribute + | db.systemitem.class-other.attributes + db.systemitem.role.attribute = attribute role { text } + db.systemitem.attlist = + db.systemitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.systemitem.class.attribute? + db.systemitem = + + ## A system-related item or term + element systemitem { db.systemitem.attlist, db.systemitem.inlines* } +} +div { + db.option.role.attribute = attribute role { text } + db.option.attlist = + db.option.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.option = + + ## An option for a software command + element option { db.option.attlist, db._text } +} +div { + db.optional.role.attribute = attribute role { text } + db.optional.attlist = + db.optional.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.optional = + + ## Optional information + element optional { db.optional.attlist, (db._text | db.optional)* } +} +div { + db.property.role.attribute = attribute role { text } + db.property.attlist = + db.property.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.property = + + ## A unit of data associated with some part of a computer system + element property { db.property.attlist, db._text } +} +div { + db.topic.status.attribute = db.status.attribute + db.topic.role.attribute = attribute role { text } + db.topic.type.attribute = + + ## Identifies the topic type + attribute type { text } + db.topic.attlist = + db.topic.role.attribute? + & db.topic.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.topic.status.attribute? + db.topic.info = db._info.title.req + db.topic = + + ## A modular unit of documentation not part of any particular narrative flow + element topic { + db.topic.attlist, + db.topic.info, + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* + } +} +start = + db.assembly + | db.structure + | db.resources + | db.relationships + | db.transforms + | db.module +db.grammar.attribute = + + ## Identifies the markup grammar of a resource + attribute grammar { text } +div { + db.assembly.role.attribute = attribute role { text } + db.assembly.attlist = + db.assembly.role.attribute? & db.common.attributes + db.assembly.info = db._info + db.assembly = + + ## Defines the hierarchy and relationships for a collection of resources + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:assembly" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element assembly { + db.assembly.attlist, + db.assembly.info, + db.resources+, + db.structure*, + db.relationships*, + db.transforms? + } + | db.xi.include +} +div { + db.resources.role.attribute = attribute role { text } + db.resources.grammar.attribute = db.grammar.attribute + db.resources.attlist = + db.resources.role.attribute? + & db.resources.grammar.attribute? + & db.common.attributes + db.resources.info = db._info.title.forbidden + db.resources = + + ## Contains one or more resource objects that are managed by the assembly + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:resources" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element resources { + db.resources.attlist, + db.resources.info?, + (db.description*, db.resource+) + } + | db.xi.include +} +div { + db.resource.role.attribute = attribute role { text } + db.resource.href.attribute = + + ## Indentifies the location of the data by URI + attribute href { xsd:anyURI } + db.resource.grammar.attribute = db.grammar.attribute + db.resource.transform.attribute = + + ## Identifies the markup grammar of a resource + attribute transform { xsd:NMTOKEN } + db.resource.attlist = + db.resource.role.attribute? + & (db.resource.transform.attribute | db.resource.grammar.attribute)? + & db.common.attributes + db.resource = + + ## Identifies an object managed within the assembly + element resource { + db.resource.attlist, db.resource.href.attribute, db.description* + } +} +div { + db.structure.role.attribute = attribute role { text } + db.structure.type.attribute = + + ## Identifies the structure type of the structure + attribute type { xsd:NMTOKEN } + db.structure.resourceref.attribute = + + ## Indicates a single resource from which to construct this structure + attribute resourceref { xsd:IDREF } + db.structure.defaultformat.attribute = + + ## Identifies the default format of the structure + attribute defaultformat { xsd:NMTOKEN } + db.structure.renderas.attribute = + + ## Specifies the DocBook element to which this unit should be renamed + attribute renderas { xsd:QName } + db.structure.attlist = + db.structure.role.attribute? + & db.structure.type.attribute? + & db.structure.resourceref.attribute? + & db.structure.renderas.attribute? + & db.structure.defaultformat.attribute? + & db.common.attributes + db.structure.info = db.info? + db.structure = + + ## Describes the structure of a document + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:structure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + s:pattern [ + s:title [ "Specification of renderas" ] + s:rule [ + context = "db:structure" + s:assert [ + test = "not(@renderas and db:output/@renderas)" + "The renderas attribute can be specified on either the structure or output, but not both." + ] + ] + ] + ] + element structure { + db.structure.attlist, + (db.output* & db.filterin? & db.filterout? & db.structure.info), + db.merge?, + db.revhistory?, + db.module+ + } +} +div { + db.output.role.attribute = attribute role { text } + db.output.chunk.attribute = + + ## Specifies chunking for this module + [ a:defaultValue = "auto" ] + attribute chunk { db.module.chunk.enumeration } + db.output.file.attribute = + + ## Specifies the output file for this module or structure + attribute file { xsd:anyURI } + db.output.renderas.attribute = + + ## Specifies the DocBook element to which this unit should be renamed + attribute renderas { xsd:QName } + db.output.transform.attribute = + + ## Specifies the transformation that should be applied to this unit + attribute transform { xsd:NMTOKEN } + db.output.suppress.attribute = + + ## Indicates whether or not this unit should be suppressed + attribute suppress { xsd:boolean } + db.output.attlist = + db.output.role.attribute? + & db.common.attributes + & db.output.chunk.attribute? + & db.output.file.attribute? + & db.output.renderas.attribute? + & db.output.transform.attribute? + & db.output.suppress.attribute? + db.output = + + ## Specify an output format and/or file name and/or renderas + element output { db.output.attlist, empty } +} +div { + db.merge.role.attribute = attribute role { text } + db.merge.resourceref.attribute = + + ## Indicates a single resource from which to read merged info + attribute resourceref { xsd:IDREF } + db.merge.attlist = + db.merge.role.attribute? + & db.merge.resourceref.attribute? + & db.common.attributes + db.merge = + + ## A wrapper for information that a module overrides in the resource it includes + element merge { db.merge.attlist, (db._title & db.info.elements*) } +} +div { + db.module.role.attribute = attribute role { text } + db.module.chunk.enumeration = + + ## This module will be in a chunk + "true" + | + ## This module will not be in a chunk + "false" + | + ## Chunking of this module depends on the overall chunking algorithm + "auto" + db.module.chunk.attribute = + + ## Specifies chunking for this module + [ a:defaultValue = "auto" ] + attribute chunk { db.module.chunk.enumeration } + db.module.resourceref.attribute = + + ## Identifies a single resource or structure within the assembly from which to construct this module + attribute resourceref { xsd:IDREF } + db.module.omittitles.attribute = + + ## Indicates if titles should be omitted when including a resource + attribute omittitles { xsd:boolean }? + db.module.contentonly.attribute = + + ## Indicates if the root element should be omitted when including the resource (copying only the children) + attribute contentonly { xsd:boolean }? + db.module.renderas.attribute = + + ## Changes the name of the root element of the included resource to the specified name + attribute renderas { xsd:QName } + db.module.attlist = + db.module.role.attribute? + & db.module.chunk.attribute? + & db.module.resourceref.attribute? + & db.module.omittitles.attribute? + & db.module.contentonly.attribute? + & db.module.renderas.attribute? + & db.common.attributes + db.module.info = db.info? + db.module = + + ## A modular component within a structure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:module" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + s:pattern [ + s:title [ "Specification of renderas" ] + s:rule [ + context = "db:module" + s:assert [ + test = "not(@renderas and db:output/@renderas)" + "The renderas attribute can be specified on either the structure or output, but not both." + ] + ] + ] + ] + element module { + db.module.attlist, + ((db.output | db.filterin | db.filterout)*, + db.module.info, + db.merge?, + db.module*) + } + | db.xi.include +} +div { + db.filterout.role.attribute = attribute role { text } + db.filterout.attlist = + db.filterout.role.attribute? & db.common.attributes + db.filterout = + + ## Elements with effectivity attributes matching this element are suppressed + element filterout { db.filterout.attlist, empty } +} +div { + db.filterin.role.attribute = attribute role { text } + db.filterin.attlist = + db.filterin.role.attribute? & db.common.attributes + db.filterin = + + ## Elements with effectivity attributes matching this element are allowed + element filterin { db.filterin.attlist, empty } +} +div { + db.relationships.role.attribute = attribute role { text } + db.relationships.type.attribute = + + ## Identifies the type of the contained relationships + attribute type { xsd:NMTOKENS } + db.relationships.attlist = + db.relationships.role.attribute? + & db.relationships.type.attribute? + & db.common.attributes + db.relationships.info = db._info + db.relationships = + + ## Groups relationship elements to define associations between resources + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:relationships" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element relationships { + db.relationships.attlist, + db.relationships.info, + (db.relationship | db.instance)+ + } + | db.xi.include +} +div { + db.relationship.role.attribute = attribute role { text } + db.relationship.type.attribute = + + ## Identifies the type of the relationship + attribute type { xsd:NMTOKEN } + db.relationship.attlist = + db.relationship.role.attribute? + & db.relationship.type.attribute? + & db.linkend.attribute? + & db.common.attributes + db.relationship = + + ## A relationship associates one or more resources + element relationship { + db.relationship.attlist, db.association, db.instance+ + } +} +div { + db.association.role.attribute = attribute role { text } + db.association.attlist = + db.association.role.attribute? + & db.linkend.attribute? + & db.common.attributes + db.association = + + ## Identifies the type of relationship between one or more resources + element association { db.association.attlist, text? } +} +div { + db.instance.role.attribute = attribute role { text } + db.instance.linking.attribute = + + ## Specifies the type of link for this instance + attribute linking { xsd:NMTOKENS } + db.instance.attlist = + db.instance.role.attribute? + & db.instance.linking.attribute? + & db.common.attributes + db.instance = + + ## Identifies a resource that is part of a relationship + element instance { + db.instance.attlist, db.linkend.attribute, empty + } +} +div { + db.transforms.role.attribute = attribute role { text } + db.transforms.attlist = + db.transforms.role.attribute? & db.common.attributes + db.transforms.info = db._info + db.transforms = + + ## List of transforms for converting from non-DocBook schemas + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:transforms" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element transforms { + db.transforms.attlist, db.transforms.info, db.transform+ + } + | db.xi.include +} +div { + db.transform.role.attribute = attribute role { text } + db.transform.grammar.attribute = db.grammar.attribute + db.transform.href.attribute = + + ## Indentifies the location of the data by URI + attribute href { xsd:anyURI } + db.transform.name.attribute = + + ## The name of the transform + attribute name { xsd:NMTOKEN } + db.transform.attlist = + db.transform.role.attribute? + & (db.transform.grammar.attribute | db.transform.name.attribute) + & db.transform.href.attribute + & db.common.attributes + db.transform = + + ## Identifies a transform for converting from a non-DocBook schema + element transform { db.transform.attlist, empty } +} +div { + db.description.role.attribute = attribute role { text } + db.description.attlist = + db.description.role.attribute? & db.common.attributes + db.description = + + ## A description of a resource or resources + element description { db.description.attlist, db._text } +} +div { + db.any.other.attribute = attribute * - local:* { text } + db.xi.include.attlist = + attribute href { + xsd:anyURI { pattern = "[^#]+" } + }?, + [ a:defaultValue = "xml" ] attribute parse { "xml" | "text" }?, + attribute xpointer { text }?, + attribute fragid { text }?, + attribute set-xml-id { text }?, + attribute encoding { text }?, + attribute accept { text }?, + attribute accept-language { text }?, + db.any.other.attribute* + db.xi.include = + + ## An XInclude + element xi:include { db.xi.include.attlist, db.xi.fallback? } +} +div { + # The fallback element has no attributes + db.xi.fallback = + + ## An XInclude fallback + element xi:fallback { db.all.blocks+ | db.all.inlines+ | db._any* } +} diff --git a/catalog/docbook5.2/rng/assemblyxi.rng b/catalog/docbook5.2/rng/assemblyxi.rng new file mode 100755 index 0000000..00c9b74 --- /dev/null +++ b/catalog/docbook5.2/rng/assemblyxi.rng @@ -0,0 +1,18359 @@ + + + + + + + + + + + + + + +
+ + + Any attribute, including any attribute in any namespace + + + + + + Any attribute in any other explicit namespace + + + + + + + + + + + + + + Any element from almost any namespace + + + + + + + + + + + + + + +
+ + + Designates the computer or chip architecture to which the element applies + + + + + Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + + + + + provides a standard place for application-specific effectivity + + + + + Indicates standards conformance characteristics of the element + + + + + Indicates the operating system to which the element is applicable + + + + + Indicates the editorial revision to which the element belongs + + + + + Indicates something about the security level associated with the element to which it applies + + + + + Indicates the level of user experience for which the element applies + + + + + Indicates the computer vendor to which the element applies + + + + + Indicates the word size (width in bits) of the computer architecture to which the element applies + + + + + Indicates the output format (for example, print or epub) to which the element applies + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Points to the element whose content is to be used as the text of the link + + + + + + Points to an internal link target by identifying the value of its xml:id attribute + + + + + + Points to one or more internal link targets by identifying the value of their xml:id attributes + + + + + + Identifies a link target with a URI + + + + + + Identifies the XLink link type + simple + An XLink simple link type + + + + + Identifies the XLink role of the link + + + + + + Identifies the XLink arcrole of the link + + + + + + Identifies the XLink title of the link + + + + + new + An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + replace + An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. + embed + An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + other + The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior. + none + The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + + + + + Identifies the XLink show behavior of the link + + + + + + onLoad + An application should traverse to the ending resource immediately on loading the starting resource. + onRequest + An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + other + The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior. + none + The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + + + + + Identifies the XLink actuate behavior of the link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Identifies the unique ID value of the element + + + + + + Specifies the DocBook version of the element and its descendants + + + + + Specifies the natural language of the element and its descendants + + + + + Specifies the base URI of the element and its descendants + + + + + + Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + + + + + Provides the text that is to be generated for a cross reference to the element + + + + + Specifies a keyword or keywords identifying additional style information + + + + + changed + The element has been changed. + added + The element is new (has been added to the document). + deleted + The element has been deleted. + off + Explicitly turns off revision markup for this element. + + + + + Identifies the revision status of the element + + + + + + ltr + Left-to-right text + rtl + Right-to-left text + lro + Left-to-right override + rlo + Right-to-left override + + + + + Identifies the direction of text in an element + + + + + + The RDFa Lite vocab + + + + + + The RDFa Lite typeof + + + + + The RDFa Lite property + + + + + The RDFa Lite resource + + + + + The RDFa Lite prefix + + + + + + + + + + + + + + + + + + + + + + + + none + No ID fixup strategy + suffix + ID fixup by concatenating suffixes + auto + ID fixup by creating unique values + + + + + The transclusion ID fixup strategy + + + + + + The transclusion suffix to use when the suffix ID fixup strategy is employed + + Suffix fixup must be specified + + If a suffix is specified, suffix ID fixup must also be specified. + + + + + + + user + No link scope adjustments are made + local + The link scopes are adjusted with the suffix property + near + The link scopes are adjusted based on proximity + global + The link scopes are adjusted based on document order + + + + + The transclusion link scope adjustment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the format of the data + + + + + Indentifies the location of the data by URI + + + + Identifies the location of the data by external identifier (entity name) + + + + + + + continues + Line numbering continues from the immediately preceding element with the same name. + restarts + Line numbering restarts (begins at 1, usually). + + + + + Determines whether line numbering continues from the previous element or restarts + + + + + + numbered + Lines are numbered. + unnumbered + Lines are not numbered. + + + + + Determines whether lines are numbered + + + + + + Specifies the initial line number + + + + + + Identifies the language (i.e. programming language) of the verbatim content + + + + + Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not + preserve + Whitespace must be preserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies an identifying string for presentation purposes + + + + + Specifies the width (in characters) of the element + + + + + + compact + The spacing should be "compact". + normal + The spacing should be "normal". + + + + + Specifies (a hint about) the spacing of the content + + + + + + 0 + The element should be rendered in the current text flow (with the flow column width). + 1 + The element should be rendered across the full text page. + + + + + Indicates if the element is rendered across the column or the page + + + + + + Identifies the language (i.e. programming language) of the content + + + + + optional + The content describes an optional step or steps. + required + The content describes a required step or steps. + + + + + Specifies if the content is required or optional + + + + + + Specifies style information to be used when rendering the float + + + + + Specifies the width of the element + + + + + Specifies the depth of the element + + + + + Specifies the width of the content rectangle + + + + + Specifies the depth of the content rectangle + + + + + 0 + False (do not scale-to-fit; anamorphic scaling may occur) + 1 + True (scale-to-fit; anamorphic scaling is forbidden) + + + + + Specifies the scaling factor + + + + + + Specifies a classid for a media object player + + + + + Specifies the autoplay setting for a media object player + + + + + center + Centered horizontally + char + Aligned horizontally on the specified character + justify + Fully justified (left and right margins or edges) + left + Left aligned + right + Right aligned + + + + + bottom + Aligned on the bottom of the region + middle + Centered vertically + top + Aligned on the top of the region + + + + + doi + A digital object identifier. + isbn + An international standard book number. + isrn + An international standard technical report number (ISO 10444). + issn + An international standard serial number. + istc + An international standard text code. + libraryofcongress + A Library of Congress reference number. + pubsnumber + A publication number (an internal number or possibly organizational standard). + uri + A Uniform Resource Identifier + + + + + + Identifies the kind of bibliographic identifier + + + + + + + Identifies the nature of the non-standard bibliographic identifier + + + + + + + Identifies the kind of bibliographic identifier + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + article + An article + bbs + A bulletin board system + book + A book + cdrom + A CD-ROM + chapter + A chapter (as of a book) + dvd + A DVD + emailmessage + An email message + gopher + A gopher page + journal + A journal + manuscript + A manuscript + newsposting + A posting to a newsgroup + part + A part (as of a book) + refentry + A reference entry + section + A section (as of a book or article) + series + A series + set + A set (as of books) + webpage + A web page + wiki + A wiki page + other + Some other kind of work + + + + + + + + + Identifies the nature of the published work + + + + + + + Identifies the nature of some other kind of published work + + + + + + + Identifies that this is some other kind of published work + other + Indicates that the published work is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text of the title of a section of a document or of a formal block-level element + + + + + + +
+
+ + + + + + + + + + + + + + + The abbreviation of a title + + + + + + +
+
+ + + + + + + + + + + + + + + The subtitle of a document + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with a required title + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a title + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a required title + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block without a title + + + + + + +
+
+ + + + + + Identifies the controlled vocabulary used by this set's terms + + + + + + + + + + + + + + + + + + A set of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + Specifies a ranking for this subject relative to other subjects in the same set + + + + + + + + + + + + + + + + + One of a group of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + + + + + + + + + + A term in a group of terms describing the subject matter of a document + + + + +
+
+ + + + + + + + + + + + + + + A set of keywords describing the content of a document + + + + + + +
+
+ + + + + + + + + + + + + + + One of a set of keywords describing the content of a document + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + Identifies the type of procedure + + + + + + + + + + + + + + + + + + + + + A list of operations to be performed in a well-defined sequence + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A unit of action in a procedure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + Alternative steps in a procedure + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for steps that occur within steps in a procedure + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for identifying the results of a procedure or step + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + A portion of a document that is isolated from the main narrative flow + + Element exclusion + + sidebar must not occur among the children or descendants of sidebar + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short description or note about a person + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A quotation set off from the main text + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The source of a block quote or epigraph + + + + + + + + + + + + +
+
+ + + sect1 + Render as a first-level section + sect2 + Render as a second-level section + sect3 + Render as a third-level section + sect4 + Render as a fourth-level section + sect5 + Render as a fifth-level section + + + + + + Indicates how the bridge head should be rendered + + + + + + + Identifies the nature of the non-standard rendering + + + + + + + Indicates how the bridge head should be rendered + other + Identifies a non-standard rendering + + + + + + + + + + + + + + + + + + + + + + + + + + + + A free-floating heading + + + + + + +
+
+ + + + + + + + + + + + + + + A remark (or comment) intended for presentation in a draft manuscript + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short inscription at the beginning of a document or component + + + + + + + + + + + + + +
+
+ + + + + + Identifies the desired footnote mark + + + + + + + + + + + + + + + + + + A footnote + + Element exclusion + + footnote must not occur among the children or descendants of footnote + + + + Element exclusion + + example must not occur among the children or descendants of footnote + + + + Element exclusion + + figure must not occur among the children or descendants of footnote + + + + Element exclusion + + table must not occur among the children or descendants of footnote + + + + Element exclusion + + equation must not occur among the children or descendants of footnote + + + + Element exclusion + + sidebar must not occur among the children or descendants of footnote + + + + Element exclusion + + task must not occur among the children or descendants of footnote + + + + Element exclusion + + epigraph must not occur among the children or descendants of footnote + + + + Element exclusion + + caution must not occur among the children or descendants of footnote + + + + Element exclusion + + danger must not occur among the children or descendants of footnote + + + + Element exclusion + + important must not occur among the children or descendants of footnote + + + + Element exclusion + + note must not occur among the children or descendants of footnote + + + + Element exclusion + + tip must not occur among the children or descendants of footnote + + + + Element exclusion + + warning must not occur among the children or descendants of footnote + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph with a title + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph that contains only text and inline markup, no block elements + + + + + + + +
+
+ + + + + + Identifies the type of mark to be used on items in this list + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a bullet or other dingbat + + + + + + + + + + +
+
+ + + + + + continues + Specifies that numbering should begin where the preceding list left off + restarts + Specifies that numbering should begin again at 1 + + + + + Indicates how list numbering should begin relative to the immediately preceding list + + + + + + Specifies the initial line number + + + + + + ignore + Specifies that numbering should ignore list nesting + inherit + Specifies that numbering should inherit from outer-level lists + + + + + Indicates whether or not item numbering should be influenced by list nesting + + + + + + arabic + Specifies Arabic numeration (1, 2, 3, …) + upperalpha + Specifies upper-case alphabetic numeration (A, B, C, …) + loweralpha + Specifies lower-case alphabetic numeration (a, b, c, …) + upperroman + Specifies upper-case Roman numeration (I, II, III, …) + lowerroman + Specifies lower-case Roman numeration (i, ii, iii …) + + + + + Indicates the desired numeration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a sequentially incremented label + + + + + + + + + + +
+
+ + + + + + Specifies the keyword for the type of mark that should be used on this + item, instead of the mark that would be used by default + + + + + + + + + + + + + + + + + + + + + A wrapper for the elements of a list item + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A segmented list, a list of sets of elements + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of an element of a list item in a segmented list + + + + + + +
+
+ + + + + + + + + + + + + + + A list item in a segmented list + + Cardinality of segments and titles + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a list item in a segmented list + + + + + + +
+
+ + + + + + horiz + A tabular presentation in row-major order. + vert + A tabular presentation in column-major order. + inline + An inline presentation, usually a comma-delimited list. + + + + + Specifies the type of list presentation + + + + + + Specifies the number of columns for horizontal or vertical presentation + + + + + + + + + + + + + + + + + + + + + An undecorated list of single words or short phrases + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a simple list + + + + + + +
+
+ + + + + + Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is composed of a set of one or more terms and an associated description + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for a set of terms and the associated description in a variable list + + + + + + + +
+
+ + + + + + + + + + + + + + + The word or phrase being defined or described in a variable list + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + Identifies the type of example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal example, with a title + + Element exclusion + + example must not occur among the children or descendants of example + + + + Element exclusion + + figure must not occur among the children or descendants of example + + + + Element exclusion + + table must not occur among the children or descendants of example + + + + Element exclusion + + equation must not occur among the children or descendants of example + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed example without a title + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + monospaced + The literal layout should be formatted with a monospaced font + normal + The literal layout should be formatted with the current font + + + + + Specifies the class of literal layout + + + + + + + + + + + + + + + + + + + A block of text in which line breaks and white space are to be reproduced faithfully + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + Text that a user sees or might see on a computer screen + + + + +
+
+ + + + + + + + + + + + + + + + + + A representation of what the user sees or might see on a computer screen + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of figure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal figure, generally an illustration, with a title + + Element exclusion + + example must not occur among the children or descendants of figure + + + + Element exclusion + + figure must not occur among the children or descendants of figure + + + + Element exclusion + + table must not occur among the children or descendants of figure + + + + Element exclusion + + equation must not occur among the children or descendants of figure + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of figure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A untitled figure + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A displayed media object (video, audio, image, etc.) + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + An inline media object (video, audio, image, and so on) + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for video data and its associated meta-information + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for audio data and its associated meta-information + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for image data and its associated meta-information + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a text description of an object and its associated meta-information + + + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external video data + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external audio data + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the image data + + + + + + + + + Specifies the vertical alignment of the image data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external image data + + + + + + + +
+
+ + + + + + Identifies the encoding of the text in the external file + + + + + + + + + + + + + + + + + + + + Pointer to external text data + + + + +
+
+ + + + + + Specifies the name of the parameter + + + + + Specifies the value of the parameter + + + + + Specifies the type of the value of the parameter + + + + + + + + + + + + + + + + + + Application specific parameters for a media player + + + + +
+
+ + + + + + + + + + + + + + + + + + A caption + + Element exclusion + + example must not occur among the children or descendants of caption + + + + Element exclusion + + figure must not occur among the children or descendants of caption + + + + Element exclusion + + table must not occur among the children or descendants of caption + + + + Element exclusion + + equation must not occur among the children or descendants of caption + + + + Element exclusion + + sidebar must not occur among the children or descendants of caption + + + + Element exclusion + + task must not occur among the children or descendants of caption + + + + Element exclusion + + caution must not occur among the children or descendants of caption + + + + Element exclusion + + danger must not occur among the children or descendants of caption + + + + Element exclusion + + important must not occur among the children or descendants of caption + + + + Element exclusion + + note must not occur among the children or descendants of caption + + + + Element exclusion + + tip must not occur among the children or descendants of caption + + + + Element exclusion + + warning must not occur among the children or descendants of caption + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A real-world address, generally a postal address + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A street address in an address + + + + +
+
+ + + + + + + + + + + + + + + A post office box in an address + + + + +
+
+ + + + + + + + + + + + + + + A postal code in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a city in an address + + + + +
+
+ + + + + + + + + + + + + + + A state or province in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a country + + + + +
+
+ + + + + + + + + + + + + + + A telephone number + + + + +
+
+ + + + + + + + + + + + + + + A fax number + + + + +
+
+ + + + + + + + + + + + + + + Uncategorized information in address + + + + +
+
+ + + + + + + + + + + + + + + The institutional affiliation of an individual + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A brief description of an affiliation + + + + +
+
+ + + + + + + + + + + + + + + The title of an individual in an organization + + + + +
+
+ + + consortium + A consortium + corporation + A corporation + informal + An informal organization + nonprofit + A non-profit organization + + + + + Specifies the nature of the organization + + + + + + Specifies the nature of the organization + other + Indicates a non-standard organization class + + + Identifies the non-standard nature of the organization + + + + + + + + + + + + + + + + + + + + + + + + + + The name of an organization + + + + +
+
+ + + + + + + + + + + + + + + A division of an organization + + + + + + +
+
+ + + + + + + + + + + + + + + The page numbers of an article as published + + + + +
+
+ + + + + + + + + + + + + + + The personal name of an individual + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The name of an individual author + + + + +
+
+ + + + + + + + + + + + + + + Wrapper for author information when a document has multiple authors or collaborators + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Identifies a collaborator + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The initials or other short identifier for an author + + + + +
+
+ + + + + + + + + + + + + + + A person and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An organization and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for document meta-information about a conference + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The dates of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The title of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + An identifier, frequently numerical, associated with a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The contract number of a document + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a contract + + + + +
+
+ + + + + + + + + + + + + + + Copyright information about a document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The year of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the individual or organization that holds a copyright + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + Additional content for the cover of a publication + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + The date of publication or revision of a document + + + + +
+
+ + + + + + + + + + + + + + + The name or number of an edition of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the editor of a document + + + + +
+
+ + + + + + + + + + + + + + + + An identifier for a document + + + + +
+
+ + + + + + + + + + + + + + + + A citation of a bibliographic identifier + + + + +
+
+ + + + + + + + + + + + + + + + The source of a document + + + + +
+
+ + + hasformat + The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + haspart + The described resource includes the referenced resource either physically or logically + hasversion + The described resource has a version, edition, or adaptation, namely, the referenced resource + isformatof + The described resource is the same intellectual content of the referenced resource, but presented in another format + ispartof + The described resource is a physical or logical part of the referenced resource + isreferencedby + The described resource is referenced, cited, or otherwise pointed to by the referenced resource + isreplacedby + The described resource is supplanted, displaced, or superceded by the referenced resource + isrequiredby + The described resource is required by the referenced resource, either physically or logically + isversionof + The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + references + The described resource references, cites, or otherwise points to the referenced resource + replaces + The described resource supplants, displaces, or supersedes the referenced resource + requires + The described resource requires the referenced resource to support its function, delivery, or coherence of content + + + + + + Identifies the type of relationship + + + + + + + + Identifies the type of relationship + othertype + The described resource has a non-standard relationship with the referenced resource + + + + A keyword that identififes the type of the non-standard relationship + + + + + + + + + + + + + + + + + + + + + + + + + + The relationship of a document to another + + + + +
+
+ + + dcmipoint + The DCMI Point identifies a point in space using its geographic coordinates + iso3166 + ISO 3166 Codes for the representation of names of countries + dcmibox + The DCMI Box identifies a region of space using its geographic limits + tgn + The Getty Thesaurus of Geographic Names + + + + + + Specifies the type of spatial coverage + + + + + + + + Specifies the type of spatial coverage + otherspatial + Identifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + dcmiperiod + A specification of the limits of a time interval + w3c-dtf + W3C Encoding rules for dates and times—a profile based on ISO 8601 + + + + + + Specifies the type of temporal coverage + + + + + + + + Specifies the type of temporal coverage + othertemporal + Specifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The spatial or temporal coverage of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A statement of legal obligations or requirements + + + + + + + +
+
+ + + copyeditor + A copy editor + graphicdesigner + A graphic designer + productioneditor + A production editor + technicaleditor + A technical editor + translator + A translator + indexer + An indexer + proofreader + A proof-reader + coverdesigner + A cover designer + interiordesigner + An interior designer + illustrator + An illustrator + reviewer + A reviewer + typesetter + A typesetter + conversion + A converter (a persons responsible for conversion, not an application) + + + + + + Identifies the nature of the contributor + + + + + + + Identifies the nature of the non-standard contribution + + + + + + + Identifies the nature of the contributor + other + Identifies a non-standard contribution + + + + + + + + + + + + + + + + + + + + + + + + + + A person or entity, other than an author or editor, credited in a document + + + + +
+
+ + + + + + + + + + + + + + + The numbers of the pages in a book, for use in a bibliographic entry + + + + +
+
+ + + + + + + + + + + + + + + A summary of the contributions made to a document by a credited source + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a person + + + + +
+
+ + + + + + + + + + + + + + + A given name of a person + + + + +
+
+ + + + + + + + + + + + + + + The given name of a person + + + + +
+
+ + + + + + + + + + + + + + + An inherited or family name; in western cultures the last name + + + + +
+
+ + + + + + + + + + + + + + + The portion of a person's name indicating a relationship to ancestors + + + + +
+
+ + + + + + + + + + + + + + + A component of a person's name that is not a first name, surname, or lineage + + + + +
+
+ + + + + + + + + + + + + + + The printing history of a document + + + + + + +
+
+ + + + + + + + + + + + + + + The date of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The publisher of a document + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of the publisher of a document + + + + +
+
+ + + + + + + + + + + + + + + Information about a particular release of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A history of the revisions to a document + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry describing a single revision in the history of the revisions to a document + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A document revision number + + + + +
+
+ + + + + + + + + + + + + + + A description of a revision to a document + + + + +
+
+ + + + + + + + + + + + + + + A extended description of a revision to a document + + + + + + +
+
+ + + + + + + + + + + + + + + Numbers of the volumes in a series of books + + + + +
+
+ + + + + + + + + + + + + + + The volume number of a document in a set (as of books in a set or articles in a journal) + + + + +
+
+ + + + + + + + + + + + + + + The number of an issue of a journal + + + + +
+
+ + + + + + A name for the metadata element + + + + + The metadata content + + + + + + + + + + + + + + + + + A generic metadata element + + + + + + + + A generic metadata element + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A software or application package + + + + +
+
+ + + + + + + + + + + + + + + An email address + + + + +
+
+ + + + + + + + + + + + + + + A comment on a line in a verbatim listing + + + + +
+
+ + + command + A command + function + A function + option + An option + + + + + Identifies the class of parameter + + + + + + + + + + + + + + + + + + + + + A value or a symbolic reference to a value + + + + +
+ + + + + + +
+ + + command + A command + function + A function + option + An option + parameter + A parameter + + + + + Identifies the nature of the replaceable text + + + + + + + + + + + + + + + + + + + + + Content that may or must be replaced by the user + + + + + + +
+
+ + + + Identifies the type of URI specified + + + + + + + + + + + + + + + + + + + A Uniform Resource Identifier + + + + +
+
+ + + + + + + + + + + + + + + An abbreviation, especially one followed by a period + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An often pronounceable word made from the initial (or selected) letters of a name or phrase + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An inline bibliographic reference to another published work + + + + + + +
+
+ + + + + + + + + + + + + + + A citation to a reference page + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A reference volume number + + + + +
+
+ + + + + + Identifies the nature of the publication being cited + + + + + + Identifies the nature of some other kind of publication being cited + + + + + + + Identifies that this is some other kind of publication being cited + other + Indicates that the published work is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + The title of a cited work + + + + + + +
+
+ + + + + + + + + + + + + + + Emphasized text + + + + + + +
+
+ + + A limited span of emphasized text + + + + +
+
+ + + + + + + + + + + + + + + A word or phrase in a language other than the primary language of the document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A limited word or phrase in a language other than the primary language of the document + + + + +
+
+ + + + + + + + + + + + + + + A span of text + + + + + + +
+
+ + + A limited span of text + + + + +
+
+ + + + + + + + + + + + + + + An inline quotation + + + + + + +
+
+ + + + + + + + + + + + + + + A limited inline quotation + + + + +
+
+ + + + + + + + + + + + + + + A subscript (as in Hâ‚‚O, the molecular formula for water) + + + + +
+
+ + + + + + + + + + + + + + + A superscript (as in x², the mathematical notation for x multiplied by itself) + + + + +
+
+ + + copyright + A copyright + registered + A registered copyright + service + A service + trade + A trademark + + + + + Identifies the class of trade mark + + + + + + + + + + + + + + + + + + + + + A trademark + + + + +
+
+ + + + + + + + + + + + + + + A word meant specifically as a word and not representing anything else + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a footnote (a footnote mark) + + Footnote reference type constraint + + @linkend on footnoteref must point to a footnote. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A cross reference to another part of the document + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A hypertext link + + + + + + +
+
+ + + + + + + + + Holds additional information that may be used by the application when resolving the link + + + + + Specifies the URI of the document in which the link target appears + + + + + + Specifies the location of the link target in the document + + + + + Identifies application-specific customization of the link behavior + + + + + + + + + + + + + + + + + + + + + + + + + + + + A link that addresses its target indirectly + + + + + + +
+
+ + + + + + + + + + + + + + A spot in the document + + + + +
+
+ + + + + + + + + + + + + + A text-only annotation, often used for accessibility + + + + + + + + + +
+
+ + + Holds style of formalgroup - this can be used to specify desired layout and positioning of subfigures + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A group of formal objects, for example subfigures + + + + + + + + + + + + + + + + + + +
+ + + Identifies the editorial or publication status of the element on which it occurs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of books + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A book + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + The dedication of a book or other component + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Acknowledgements of a book or other component + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Text at the back of a book describing facts about its production + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An appendix in a book or article + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A chapter, as of a book + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a book + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Introductory matter preceding the first chapter of a book + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An introduction to the contents of a part + + + + + + + +
+
+ + + + + legal + A section of legal obligations or requirements + + + + Identifies the nature of the section + + + + + + Identifies a non-standard section class + + + + + + + Indicates that a non-standard section class is applied + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a document with no subdivisions + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + faq + A collection of frequently asked questions. + journalarticle + An article in a journal or other periodical. + productsheet + A description of a product. + specification + A specification. + techreport + A technical report. + whitepaper + A white paper. + + + + + Identifies the nature of the article + + + + + + Identifies the nature of the non-standard article + + + + + + + Identifies the nature of the article + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An article + + + + + + + + + + + + + + + + + + + + + +
+ + + Identifies one or more annotations that apply to this element + + +
+ + + + + + Identifies one or more elements to which this annotation applies + + + + + + + + + + + + + + + + + + + An annotation + + Element exclusion + + annotation must not occur among the children or descendants of annotation + + + + + + + + + +
+ + + Identifies the XLink extended link type + + XLink extended placement + + An XLink extended type element may not occur as the direct child of an XLink extended type element. + + + extended + An XLink extended link type + + + + + Identifies the XLink locator link type + + XLink locator placement + + An XLink locator type element must occur as the direct child of an XLink extended type element. + + + locator + An XLink locator link type + + + + + Identifies the XLink arc link type + + XLink arc placement + + An XLink arc type element must occur as the direct child of an XLink extended type element. + + + arc + An XLink arc link type + + + + + Identifies the XLink resource link type + + XLink resource placement + + An XLink resource type element must occur as the direct child of an XLink extended type element. + + + resource + An XLink resource link type + + + + + Identifies the XLink title link type + + XLink title placement + + An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element. + + + title + An XLink title link type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the XLink traversal-from + + + + + + Specifies the XLink label + + + + + + Specifies the XLink traversal-to + + + +
+ + + + + + + + + + + + Identifies the XLink link type + extended + An XLink extended link + + + + + + + + + + + + + An XLink extended link + + + + + + + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + locator + An XLink locator link + + + + + + + + + + + + + + + + + An XLink locator in an extendedlink + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + arc + An XLink arc link + + + + + + + + + + + + + + + + + + + + + + + + + An XLink arc in an extendedlink + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A top-level section of document + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect1 + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect2 + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect3 + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect4 + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of reference entries + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A reference page (originally a UNIX man-style reference page) + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Meta-information for a reference entry + + + + + + + + + + + + + + + + +
+ + + source + The name of the software product or component to which this topic applies + version + The version of the software product or component to which this topic applies + manual + The section title of the reference page (e.g., User Commands) + sectdesc + The section title of the reference page (believed synonymous with "manual" but in wide use) + software + The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + + + + + + Identifies the kind of miscellaneous information + + + + + + + Identifies the nature of non-standard miscellaneous information + + + + + + Identifies the kind of miscellaneious information + other + Indicates that the information is some 'other' kind. + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + Meta-information for a reference entry other than the title and volume number + + + + +
+
+ + + + + + + + + + + + + + + The name, purpose, and classification of a reference page + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A description of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The name of (one of) the subject(s) of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A short (one sentence) synopsis of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The scope or other indication of applicability of a reference entry + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntactic synopsis of the subject of the reference page + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section in a refentry + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A major subsection of a reference entry + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect1 + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect2 + + + + + + + +
+ + + + + + + + + + + + Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for a list of glossary entries + + + + + + + + + + + + +
+
+ + + + + + Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + + + + + + + + + + + + + + + + + An entry in a glossary or glosslist + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + Specifies a list of keywords for the definition + + + + + + + + + + + + + + + + + A definition in a glossentry + + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry + to another + + Glosssary 'see' type constraint + + @otherterm on glosssee must point to a glossentry. + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry to another + + Glossary 'seealso' type constraint + + @otherterm on glossseealso must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term, with limited content + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A glossary + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a glossary + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + An inline definition of a term + + Glossary term definition constraint + + A termdef must contain exactly one firstterm + + + + + + + + +
+ + + Identifies the relationship between the bibliographic elemnts + + +
+ + + + + + + + + + + + + + + + + + + + + A raw entry in a bibliography + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked entry in a bibliography + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A raw container for related bibliographic information + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked container for related bibliographic information + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Untyped bibliographic information + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A bibliography + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a bibliography + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a list of bibliography entries + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + The units (for example, pages) used to identify the beginning and ending of a reference. + + + + + + Identifies the beginning of a reference; the location within the work that is being referenced. + + + + + + Identifies the end of a reference. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cross-reference to a bibliographic entry + + + + +
+ + + normal + Normal + preferred + Preferred + + + + + Specifies the significance of the term + + + + + + Specifies the IDs of the elements to which this term applies + + + + + + Indicates the page on which this index term occurs in some version of the printed document + + + + + all + All indexes + global + The global index (as for a combined index of a set of books) + local + The local index (the index for this document only) + + + + + Specifies the scope of the index term + + + + + + Specifies the string by which the term is to be sorted; if unspecified, the term content is used + + + + + Specifies the target index for this term + + +
+ + + + + + + + + + + + + + + A set of index terms in the meta-information of a document + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + Identifies the class of index term + singular + A singular index term + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term + + + + +
+
+ + + + + + Identifies the class of index term + startofrange + The start of a range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term that covers a range + + + + +
+
+ + + + + + Identifies the class of index term + endofrange + The end of a range + + + + + Points to the start of the range + + + + + + + + + + + + + + + + + Identifies the end of a range associated with an indexed term + + Indexterm 'startref' type constraint + + @startref on indexterm must point to an indexterm. + @startref on indexterm must point to a startofrange indexterm. + + + + + + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary word or phrase under which an index term should be sorted + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A secondary word or phrase in an index term + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A tertiary word or phrase in an index term + + + + + + +
+
+ + + + + + Identifies the class of 'see' + + normal + Normal + under + See 'under' + + + + + + + + + + + + + + + + + + Part of an index term directing the reader instead to another entry in the index + + + + + + +
+
+ + + + + + Identifies the class of 'seealso' + + normal + Normal + under + See 'under' + + + + + + + + + + + + + + + + + + Part of an index term directing the reader also to another entry in the index + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a book or part of a book + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a set of books + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in an index + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry in an index + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + A primary term in an index entry, not in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A secondary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A tertiary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See +entry in an index, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See also + entry in an index, rather than in the text + + + + + + +
+ + + Indicates the page on which this element occurs in some version of the printed document + + +
+ + + + + + + + + + + + + + + + + + A table of contents + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + A division in a table of contents + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A component title in a table of contents + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + A task to be completed + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary of a task + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The prerequisites for a task + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + Information related to a task + + + + + + + +
+ + + calspair + Coordinates expressed as a pair of CALS graphic coordinates. + linecolumn + Coordinates expressed as a line and column. + linecolumnpair + Coordinates expressed as a pair of lines and columns. + linerange + Coordinates expressed as a line range. + + + + + + Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair + for graphics and linecolumn + for line-oriented elements. + + + + + + + + Indicates that non-standard units are used for this area +. In this case otherunits + must be specified. + other + Coordinates expressed in some non-standard units. + + + + Identifies the units used in the coords + attribute when the units + attribute is other +. This attribute is forbidden otherwise. + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A list of callout +s + + + + + + + + + + +
+
+ + + + + + Identifies the areas described by this callout. + + + + + + + + + + + + + + + + A called out + description of a marked area + + Callout cross reference constraint + + @arearefs on callout must point to a areaset, area, or co. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A program listing with associated areas used in callouts + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A collection of regions in a graphic or code example + + + + + + + + + +
+
+ + + + + + Point to the callout +s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + + + + + + Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + + + + + Provides the coordinates of the area. The coordinates must be interpreted using the units + specified. + + + + + + + + + + + + + + + + + + + + + + + + A region defined for a callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A region defined for a callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A set of related areas in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A screen with associated areas used in callouts + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for an image object with callouts + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + The location of a callout embedded in text + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a co + + + + +
+
+ + + + + + + + + + + + + + + + + + A set of EBNF productions + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A production in a set of EBNF productions + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The left-hand side of an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + The right-hand side of an EBNF production + + + + + + + + + + + +
+
+ + + + + + Specifies a URI that points to a production +where the nonterminal + is defined + + + + + + + + + + + + + + + + A non-terminal in an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + A constraint in an EBNF production + + Constraint cross reference constraint + + @linkend on constraint must point to a constraintdef. + + + + + + +
+
+ + + + + + + + + + + + + + + A cross-reference to an EBNF production + + Production recap cross reference constraint + + @linkend on productionrecap must point to a production. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The definition of a constraint in an EBNF production + + + + + + + +
+ + + Specifies the alignment character when align + is set to char +. + + + + + Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + when align + is set to char +. + + 0 + 100 + + + + + + Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + + all + Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + bottom + Frame only the bottom of the table. + none + Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + sides + Frame the left and right sides of the table. + top + Frame the top of the table. + topbot + Frame the top and bottom of the table. + + + + + + Specifies the presence or absence of the column separator + + 0 + No column separator rule. + 1 + Provide a column separator rule on the right + + + + + + Specifies the presence or absence of the row separator + + 0 + No row separator rule. + 1 + Provide a row separator rule below + + + + + + Specifies the orientation of the table + + land + 90 degrees counter-clockwise from the rest of the text flow. + port + The same orientation as the rest of the text flow. + + + + + + Specifies the table style + + + + + Indicates whether or not the entries in the first column should be considered row headers + + firstcol + Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + headers + Indicates that row headers are identified by use of the headers attribute on entries in the table. + norowheader + Indicates that entries in the first column have no special significance with respect to column headers. + + + + + + Specifies the horizontal alignment of text in an entry. + + center + Centered. + char + Aligned on a particular character. + justify + Left and right justified. + left + Left justified. + right + Right justified. + + + + + + Specifies the vertical alignment of text in an entry. + + bottom + Aligned on the bottom of the entry. + middle + Aligned in the middle. + top + Aligned at the top of the entry. + + + + + + Specifies a column specification by name. + + + + + Specifies a starting column by name. + + + + + Specifies a span by name. + + + + + + Specifies a starting column by name. + + + Specifies an ending column by name. + + + + + + + + + + + + + + Provides a name for a column specification. + + + + + Provides a name for a span specification. + + +
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for the main content of a table, or part of a table + + + + + + + + + + + + + + + + +
+
+ + + + + + The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + + + + + + Specifies the width of the column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifications for a column in a table + + + + +
+
+ + + + + + Specifies a starting column by name. + + + + + Specifies an ending column by name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Formatting information for a spanned column in a table + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table footer consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + + + + +
+
+ + + + + + Specifies the number of additional rows which this entry occupies. Defaults to zero. + + + + + + Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + + 0 + Do not rotate the cell. + 1 + Rotate the cell 90 degrees counter-clockwise. + + + + + + Specifies the scope of a header. + + row + Applies to the row + col + Applies to the column + rowgroup + Applies to the row group + colgroup + Applies to the column group + + + + + + Specifies the entry or entries which serve as headers for this element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cell in a table + + Element exclusion + + table must not occur among the children or descendants of entry + + + + Element exclusion + + informaltable must not occur among the children or descendants of entry + + + + + + + + + + + + + +
+
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the entry table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subtable appearing in place of an entry in a table + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + +
+
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates if the short or long title should be used in a List of Tables + + 0 + Indicates that the full title should be used. + 1 + Indicates that the short short title (titleabbrev) should be used. + + + + + + Indicates if the table should appear in a List of Tables + + 0 + Indicates that the table should not occur in the List of Tables. + 1 + Indicates that the table should appear in the List of Tables. + + + + + + + + + + + + + + A formal table in a document + + Element exclusion + + example must not occur among the children or descendants of table + + + + Element exclusion + + figure must not occur among the children or descendants of table + + + + Element exclusion + + equation must not occur among the children or descendants of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A table without a title + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + + + + + This attribute specifies style information for the current element. + + + + + This attribute offers advisory information about the element for which it is set. + + + + + + + + This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + + + + + + + + Occurs when the pointing device button is clicked over an element. + + + + + Occurs when the pointing device button is double clicked over an element. + + + + + Occurs when the pointing device button is pressed over an element. + + + + + Occurs when the pointing device button is released over an element. + + + + + Occurs when the pointing device is moved onto an element. + + + + + Occurs when the pointing device is moved while it is over an element. + + + + + Occurs when the pointing device is moved away from an element. + + + + + Occurs when a key is pressed and released over an element. + + + + + Occurs when a key is pressed down over an element. + + + + + Occurs when a key is released over an element. + + + + + + + + + + + + + + + + + Specifies the alignment of data and the justification of text in a cell. + + left + Left-flush data/Left-justify text. This is the default value for table data. + center + Center data/Center-justify text. This is the default value for table headers. + right + Right-flush data/Right-justify text. + justify + Double-justify text. + char + Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + + + + + + This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + + + + + When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + + + An explicit offset. + + [0-9]+% + + A percentage offset. + + + + + + + + + Specifies the vertical position of data within a cell. + + top + Cell data is flush with the top of the cell. + middle + Cell data is centered vertically within the cell. This is the default value. + bottom + Cell data is flush with the bottom of the cell. + baseline + All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + + + + + + + + + Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + + + + + Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + + + An explicit width. + + [0-9]+% + + A percentage width. + + + + + + Specifies the width (in pixels only) of the frame around a table. + + + + + + Specifies which sides of the frame surrounding a table will be visible. + + void + No sides. This is the default value. + above + The top side only. + below + The bottom side only. + hsides + The top and bottom sides only. + lhs + The left-hand side only. + rhs + The right-hand side only. + vsides + The right and left sides only. + box + All four sides. + border + All four sides. + + + + + + Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + + none + No rules. This is the default value. + groups + Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + rows + Rules will appear between rows only. + cols + Rules will appear between columns only. + all + Rules will appear between all rows and columns. + + + + + + Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + + + An explicit spacing. + + [0-9]+% + + A percentage spacing. + + + + + + Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + + + An explicit padding. + + [0-9]+% + + A percentage padding. + + + + + + + + + + Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + + + + + This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + + + + + Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + + + + + Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + + row + The current cell provides header information for the rest of the row that contains it + col + The current cell provides header information for the rest of the column that contains it. + rowgroup + The header cell provides header information for the rest of the row group that contains it. + colgroup + The header cell provides header information for the rest of the column group that contains it. + + + + + + Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all rows from the current row to the last row of the table section (thead +, tbody +, or tfoot +) in which the cell is defined. + + + + + + Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all columns from the current column to the last column of the column group (colgroup +) in which the cell is defined. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal (captioned) HTML table in a document + + Element exclusion + + example must not occur among the children or descendants of table + + + + Element exclusion + + figure must not occur among the children or descendants of table + + + + Element exclusion + + equation must not occur among the children or descendants of table + + + + + + +
+
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An HTML table without a title + + + + +
+
+ + + + + + An HTML table caption + + Element exclusion + + example must not occur among the children or descendants of caption + + + + Element exclusion + + figure must not occur among the children or descendants of caption + + + + Element exclusion + + table must not occur among the children or descendants of caption + + + + Element exclusion + + equation must not occur among the children or descendants of caption + + + + Element exclusion + + sidebar must not occur among the children or descendants of caption + + + + Element exclusion + + task must not occur among the children or descendants of caption + + + + Element exclusion + + caution must not occur among the children or descendants of caption + + + + Element exclusion + + danger must not occur among the children or descendants of caption + + + + Element exclusion + + important must not occur among the children or descendants of caption + + + + Element exclusion + + note must not occur among the children or descendants of caption + + + + Element exclusion + + tip must not occur among the children or descendants of caption + + + + Element exclusion + + warning must not occur among the children or descendants of caption + + + + + + + + +
+
+ + + + + + This attribute, whose value must be an integer > 0, specifies the number of columns spanned + by the col + element; the col + element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + element shares its attributes with the next N-1 columns. + + + + + + Specifies a default width for each column spanned by the current col + element. It has the same meaning as the width + attribute for the colgroup + element and overrides it. + + + + + + + + + Specifications for a column in an HTML table + + + + +
+
+ + + + + + This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + element contains one or more col + elements. + + + + + + This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + element. + + + + + + + + + A group of columns in an HTML table + + + + + + +
+
+ + + + + + + + + + A table header consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A table footer consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A wrapper for the rows of an HTML table or informal HTML table + + + + + + +
+
+ + + + + + + + + + A row in an HTML table + + + + + + + + + +
+
+ + + + + + + + + + + A table header entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + A table entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A detailed set of messages, usually error messages + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for an entry in a message set + + + + + + + + + + + + +
+
+ + + + + + The audience to which the message relevant + + + + + The origin of the message + + + + + The level of importance or severity of a message + + + + + + + + + + + + + + + + + + + + + + + A wrapper for a simpler entry in a message set + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A message in a message set + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary component of a message in a message set + + + + + +
+
+ + + + + + + + + + + + + + + + + + A subcomponent of a message in a message set + + + + + +
+
+ + + + + + + + + + + + + + + + + + A related component of a message in a message set + + + + + +
+
+ + + + + + + + + + + + + + + The actual text of a message component in a message set + + + + + + +
+
+ + + + + + + + + + + + + + + Information about a message in a message set + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The level of importance or severity of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The origin of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The audience to which a message in a message set is relevant + + + + +
+
+ + + + + + + + + + + + + + + + + + Explanatory material relating to a message in a message set + + + + + + + +
+
+ + + + + + none + No labels + number + Numeric labels + qanda + "Q:" and "A:" labels + + + + + Specifies the default labelling + + + + + + + + + + + + + + + + + + + + + A question-and-answer set + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A titled division in a qandaset + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A question/answer set within a qandaset + + + + + + + + +
+
+ + + + + + + + + + + + + + + A question in a qandaset + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An answer to a question posed in a qandaset + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A label on a question or answer + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + Identifies the type of equation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation + + Element exclusion + + example must not occur among the children or descendants of equation + + + + Element exclusion + + figure must not occur among the children or descendants of equation + + + + Element exclusion + + table must not occur among the children or descendants of equation + + + + Element exclusion + + equation must not occur among the children or descendants of equation + + + + + + + + + + + + + +
+
+ + + + + + + Identifies the type of equation + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation without a title + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical equation or expression occurring inline + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical phrase that can be represented with ordinary text and a small amount of markup + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + Specifies that the format of the data is MathML + mathml + Specifies MathML. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A MathML expression in a media object + + + + + + + +
+
+ + + Any element from the MathML namespace + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + Specifies that the format of the data is SVG + svg + Specifies SVG. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An SVG drawing in a media object + + + + + + + +
+
+ + + Any element from the SVG namespace + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A string of formatting markup in text that is to be represented literally + + + + +
+
+ + + + + + attribute + An attribute + attvalue + An attribute value + element + An element + emptytag + An empty element tag + endtag + An end tag + genentity + A general entity + localname + The local name part of a qualified name + namespace + A namespace + numcharref + A numeric character reference + paramentity + A parameter entity + pi + A processing instruction + prefix + The prefix part of a qualified name + comment + An SGML comment + starttag + A start tag + xmlpi + An XML processing instruction + + + + + Identifies the nature of the tag content + + + + + + Identifies the namespace of the tag content + + + + + + + + + + + + + + + + + + + + + A component of XML (or SGML) markup + + + + + + + + + +
+
+ + + Identifies the class of symbol + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A name that is replaced by a value before processing + + + + +
+
+ + + + + + + + + + + + + + + A unit of information + + + + +
+
+ + + + + + + + + + + + + + + Inline text that is some literal value + + + + +
+
+ + + Identifies the (computer) language of the code fragment + + + + + + + + + + + + + + + + + + + + An inline code fragment + + + + + + + + + +
+
+ + + Identifies the class of constant + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A programming or system constant + + + + +
+
+ + + + + + copyright + A name with a copyright + registered + A name with a registered copyright + service + A name of a service + trade + A name which is trademarked + + + + + Specifies the class of product name + + + + + + + + + + + + + + + + + + The formal name of a product + + + + +
+
+ + + + + + + + + + + + + + + A number assigned to a product + + + + +
+
+ + + altkey + An alternate or secondary key + constraint + A constraint + datatype + A data type + field + A field + foreignkey + A foreign key + group + A group + index + An index + key1 + The first or primary key + key2 + An alternate or secondary key + name + A name + primarykey + The primary key + procedure + A (stored) procedure + record + A record + rule + A rule + secondarykey + The secondary key + table + A table + user + A user + view + A view + + + + + Identifies the class of database artifact + + + + + + + + + + + + + + + + + + + + + The name of a database, or part of a database + + + + +
+
+ + + hardware + A hardware application + software + A software application + + + + + Identifies the class of application + + + + + + + + + + + + + + + + + + + + + The name of a software program + + + + +
+
+ + + + + + + + + + + + + + + A physical part of a computer system + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text on a button in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Graphic and/or text appearing as a icon in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The text of a label in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a menu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a terminal menu item in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a submenu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A selection or series of selections from a menu + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The conventional name of a mouse button + + + + +
+ + + + + + + + + + +
+ + + alt + The "Alt" key + altgr + The "Alt Graph" key + backspace + The "Backspace" key + command + The "Command" key + control + The "Control" key + delete + The "Delete" key + down + The down arrow + end + The "End" key + enter + The "Enter" key + escape + The "Escape" key + home + The "Home" key + insert + The "Insert" key + left + The left arrow + meta + The "Meta" key + option + The "Option" key + pagedown + The page down key + pageup + The page up key + right + The right arrow + return + The "Return" key + shift + The "Shift" key + space + The spacebar + tab + The "Tab" key + up + The up arrow + + + + + + Identifies the function key + + + + + + + + Identifies the function key + other + Indicates a non-standard function key + + + + Specifies a keyword that identifies the non-standard key + + + + + + + + + + + + + + + + + + + + + + + + The text printed on a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + The internal, frequently numeric, identifier for a key on a keyboard + + + + +
+ + + + + + + + + + +
+ + + click + A (single) mouse click. + double-click + A double mouse click. + press + A mouse or key press. + seq + Sequential clicks or presses. + simul + Simultaneous clicks or presses. + + + + + + Identifies the nature of the action taken. If keycombo + contains more than one element, simul + is the default, otherwise there is no default. + + + + + + + + Identifies the nature of the action taken + other + Indicates a non-standard action + + + + Identifies the non-standard action in some unspecified way. + + + + + + + + + + + + + + + + + + + + + + + + A combination of input actions + + + + + + +
+
+ + + + + + + + + + + + + + + The symbolic name of a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + A graphical user interface (GUI) keyboard shortcut + + + + +
+
+ + + + + + + + + + + + + + + + + + + A key combination for an action that is also accessible through a menu + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A character or string indicating the start of an input field in a computer display + + + + + + +
+
+ + + + + + + + + + + + + + + A software environment variable + + + + +
+
+ + + devicefile + A device + directory + A directory + extension + A filename extension + headerfile + A header file (as for a programming language) + libraryfile + A library file + partition + A partition (as of a hard disk) + symlink + A symbolic link + + + + + Identifies the class of filename + + + + + + Specifies the path of the filename + + + + + + + + + + + + + + + + + + + + + + + The name of a file + + + + +
+
+ + + + + + + + + + + + + + + The name of an executable program or other software command + + + + +
+
+ + + + + + + + + + + + + + + Data, generally text, displayed or presented by a computer + + + + + + +
+
+ + + + + + + + + + + + + + + Data entered by the user + + + + + + +
+
+ + + + + + Specifies the character that should separate the command and its top-level arguments + + + + + Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A syntax summary for a software command + + + + + + + + + + + + + + + +
+ + + norepeat + Can not be repeated. + repeat + Can be repeated. + + + + + Indicates whether or not repetition is possible. + + + + + + opt + Formatted to indicate that it is optional. + plain + Formatted without indication. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + Indicates optionality. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An argument in a cmdsynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A group of elements in a cmdsynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + An explicit line break in a command synopsis + + + + +
+
+ + + + + + + + + + + + + + + A portion of a cmdsynopsis broken out from the main body of the synopsis + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A reference to a fragment of a command synopsis + + Synopsis fragment type constraint + + @linkend on synopfragmentref must point to a synopfragment. + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + A general-purpose element for representing the syntax of commands or functions + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing synopsis + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a function definition + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the funcdefs of a funcsynopsis + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a function + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A function (subroutine) name and its return type + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a function or subroutine, as in a programming language + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating that the function in question takes no arguments + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating a variable number of arguments + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A group of parameters + + + + + + + + + +
+
+ + + + + + opt + Formatted to indicate that it is optional. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + + + + + + + + + + + + + Information about a function parameter in a programming language + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Parameters for a function referenced through a function pointer in a synopsis + + + + +
+
+ + + + + + + + + class + This is the synopsis of a class + interface + This is the synopsis of an interface + + + + + Specifies the nature of the synopsis + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for a class definition + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the contents of a classsynopsis + + + + +
+
+ + + + + + + + + + + + + + + A class in an object-oriented programming language + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An interface in an object-oriented programming language + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An exception in an object-oriented programming language + + + + + + + + + + + + + +
+ + + Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + preserve + Extra whitespace and line breaks must be preserved. + + + +
+ + + + + + + + + + + + + + + + + + Modifiers in a synopsis + + + + +
+
+ + + + + + + + + + + + + + + The name of an interface + + + + +
+
+ + + + + + + + + + + + + + + The name of an exception + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The name of a field in a class definition + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + The initializer for a fieldsynopsis + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a constructor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a destructor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a method + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a method + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Parameters to a method + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A group of method parameters + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a variable + + + + +
+
+ + + + + + + + + + + + + + + Target of a build + + + + +
+
+ + + + + + + + + + + + + + + The value returned by a function + + + + +
+
+ + + + + + union + Combined type is union of nested types + intersection + Combined type is intersection of nested types + + + + + Specifies the way how are nested types combined together + + + + + + + + + + + + + + + + + + The classification of a value + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a class, in the object-oriented programming sense + + + + +
+
+ + + + + + + + + + + + + + + The identifier for a template, in the generic programming sense + + + + +
+
+ + + + + + + + + + + + + + + The definition of a template, in the generic programming sense + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The specialization of a template identifier, in the generic programming sense + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a package definition + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a macro (a code-generating function) + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a macro definition (code-generating function) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a macro (code-generating function) + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A macro name and its return type + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a union of types + + + + +
+
+ + + + + + + + + + + + + + + The definition of a union of types, which may be more than a name + + + + + + +
+
+ + + + + + + + + + Indicates how the value of a union is specified. + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for a union-of-types definition + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of an enumeration + + + + +
+
+ + + + + + + + + + + + + + + The value an enumerated type can take + + + + +
+
+ + + + + + + + + + + + + + + The description of a value an enumerated type can take + + + + + + +
+
+ + + + + + + + + + + + + + + The identifier of a value an enumerated type can take + + + + +
+
+ + + + + + + + + + + + + + + A value an enumerated type can take and its description + + + + + + + + + + +
+
+ + + + + + + + + 0 + Value of enum is specified explicitly using enumvalue + 1 + Value of enum is inferred from its position + + + + + Indicates how the value of an enumeration is specified. + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for an enumerated-type definition + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a type alias + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a type-alias definition + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A literal listing of all or part of a program + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A note of caution + + Element exclusion + + caution must not occur among the children or descendants of caution + + + + Element exclusion + + danger must not occur among the children or descendants of caution + + + + Element exclusion + + important must not occur among the children or descendants of caution + + + + Element exclusion + + note must not occur among the children or descendants of caution + + + + Element exclusion + + tip must not occur among the children or descendants of caution + + + + Element exclusion + + warning must not occur among the children or descendants of caution + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text indicating hazardous situation + + Element exclusion + + caution must not occur among the children or descendants of danger + + + + Element exclusion + + danger must not occur among the children or descendants of danger + + + + Element exclusion + + important must not occur among the children or descendants of danger + + + + Element exclusion + + note must not occur among the children or descendants of danger + + + + Element exclusion + + tip must not occur among the children or descendants of danger + + + + Element exclusion + + warning must not occur among the children or descendants of danger + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + Element exclusion + + caution must not occur among the children or descendants of important + + + + Element exclusion + + danger must not occur among the children or descendants of important + + + + Element exclusion + + important must not occur among the children or descendants of important + + + + Element exclusion + + note must not occur among the children or descendants of important + + + + Element exclusion + + tip must not occur among the children or descendants of important + + + + Element exclusion + + warning must not occur among the children or descendants of important + + + + + + +
+
+ + + + + + + + + + + + + + + A message set off from the text + + Element exclusion + + caution must not occur among the children or descendants of note + + + + Element exclusion + + danger must not occur among the children or descendants of note + + + + Element exclusion + + important must not occur among the children or descendants of note + + + + Element exclusion + + note must not occur among the children or descendants of note + + + + Element exclusion + + tip must not occur among the children or descendants of note + + + + Element exclusion + + warning must not occur among the children or descendants of note + + + + + + +
+
+ + + + + + + + + + + + + + + A suggestion to the user, set off from the text + + Element exclusion + + caution must not occur among the children or descendants of tip + + + + Element exclusion + + danger must not occur among the children or descendants of tip + + + + Element exclusion + + important must not occur among the children or descendants of tip + + + + Element exclusion + + note must not occur among the children or descendants of tip + + + + Element exclusion + + tip must not occur among the children or descendants of tip + + + + Element exclusion + + warning must not occur among the children or descendants of tip + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + Element exclusion + + caution must not occur among the children or descendants of warning + + + + Element exclusion + + danger must not occur among the children or descendants of warning + + + + Element exclusion + + important must not occur among the children or descendants of warning + + + + Element exclusion + + note must not occur among the children or descendants of warning + + + + Element exclusion + + tip must not occur among the children or descendants of warning + + + + Element exclusion + + warning must not occur among the children or descendants of warning + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + An error code + + + + +
+
+ + + + + + + + + + + + + + + An error name + + + + +
+
+ + + + + + + + + + + + + + + An error message. + + + + +
+
+ + + + + + + + + + + + + + + The classification of an error message + + + + +
+ + + + + + +
+ + + daemon + A daemon or other system process (syslogd) + domainname + A domain name (example.com) + etheraddress + An ethernet address (00:05:4E:49:FD:8E) + event + An event of some sort (SIGHUP) + eventhandler + An event handler of some sort (hangup) + filesystem + A filesystem (ext3) + fqdomainname + A fully qualified domain name (my.example.com) + groupname + A group name (wheel) + interface + A network interface (eth0) + ipaddress + An IP address (127.0.0.1) + library + A library (libncurses) + macro + A macro + netmask + A netmask (255.255.255.192) + newsgroup + A newsgroup (comp.text.xml) + osname + An operating system name (Hurd) + process + A process (gnome-cups-icon) + protocol + A protocol (ftp) + resource + A resource + securitycontext + A security context (a role, permission, or security token, for example) + server + A server (mail.example.com) + service + A service (ppp) + systemname + A system name (hephaistos) + username + A user name (ndw) + + + + + + Identifies the nature of the system item + + + + + + + Identifies the nature of the non-standard system item + + + + + + + Identifies the kind of systemitemgraphic identifier + other + Indicates that the system item is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + A system-related item or term + + + + + + +
+
+ + + + + + + + + + + + + + + An option for a software command + + + + +
+
+ + + + + + + + + + + + + + + Optional information + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A unit of data associated with some part of a computer system + + + + +
+
+ + + + + + + + + Identifies the topic type + + + + + + + + + + + + + + + + + + + + + + + + + + A modular unit of documentation not part of any particular narrative flow + + + + + + + + + + + +
+ + + + + + + + + + + + + Identifies the markup grammar of a resource + + +
+ + + + + + + + + + + + + + + + + + Defines the hierarchy and relationships for a collection of resources + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + Contains one or more resource objects that are managed by the assembly + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + +
+
+ + + + + + Indentifies the location of the data by URI + + + + + + + + + Identifies the markup grammar of a resource + + + + + + + + + + + + + + + + + + + + Identifies an object managed within the assembly + + + + + + + +
+
+ + + + + + Identifies the structure type of the structure + + + + + + Indicates a single resource from which to construct this structure + + + + + + Identifies the default format of the structure + + + + + + Specifies the DocBook element to which this unit should be renamed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Describes the structure of a document + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + Specification of renderas + + The renderas attribute can be specified on either the structure or output, but not both. + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + Specifies chunking for this module + + + + + + Specifies the output file for this module or structure + + + + + + Specifies the DocBook element to which this unit should be renamed + + + + + + Specifies the transformation that should be applied to this unit + + + + + + Indicates whether or not this unit should be suppressed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specify an output format and/or file name and/or renderas + + + + +
+
+ + + + + + Indicates a single resource from which to read merged info + + + + + + + + + + + + + + + + + A wrapper for information that a module overrides in the resource it includes + + + + + + + + + +
+
+ + + + + + true + This module will be in a chunk + false + This module will not be in a chunk + auto + Chunking of this module depends on the overall chunking algorithm + + + + + Specifies chunking for this module + + + + + + Identifies a single resource or structure within the assembly from which to construct this module + + + + + + + Indicates if titles should be omitted when including a resource + + + + + + + + Indicates if the root element should be omitted when including the resource (copying only the children) + + + + + + + Changes the name of the root element of the included resource to the specified name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A modular component within a structure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + Specification of renderas + + The renderas attribute can be specified on either the structure or output, but not both. + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + Elements with effectivity attributes matching this element are suppressed + + + + +
+
+ + + + + + + + + + + + + + Elements with effectivity attributes matching this element are allowed + + + + +
+
+ + + + + + Identifies the type of the contained relationships + + + + + + + + + + + + + + + + + + + + + Groups relationship elements to define associations between resources + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + +
+
+ + + + + + Identifies the type of the relationship + + + + + + + + + + + + + + + + + + + + A relationship associates one or more resources + + + + + + + +
+
+ + + + + + + + + + + + + + + + + Identifies the type of relationship between one or more resources + + + + + + +
+
+ + + + + + Specifies the type of link for this instance + + + + + + + + + + + + + + + + + Identifies a resource that is part of a relationship + + + + + +
+
+ + + + + + + + + + + + + + + + + + List of transforms for converting from non-DocBook schemas + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + Indentifies the location of the data by URI + + + + + + The name of the transform + + + + + + + + + + + + + + + + + + + Identifies a transform for converting from a non-DocBook schema + + + + +
+
+ + + + + + + + + + + + + + A description of a resource or resources + + + + +
+
+ + + + + + + + + + + + + + [^#]+ + + + + + + + xml + text + + + + + + + + + + + + + + + + + + + + + + + + + + + + An XInclude + + + + + + +
+
+ + + + An XInclude fallback + + + + + + + + + + + + + +
+
diff --git a/catalog/docbook5.2/rng/dbits.rnc b/catalog/docbook5.2/rng/dbits.rnc new file mode 100755 index 0000000..ba3db29 --- /dev/null +++ b/catalog/docbook5.2/rng/dbits.rnc @@ -0,0 +1,12791 @@ +namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" +namespace ctrl = "http://nwalsh.com/xmlns/schema-control/" +default namespace db = "http://docbook.org/ns/docbook" +namespace html = "http://www.w3.org/1999/xhtml" +namespace its = "http://www.w3.org/2005/11/its" +namespace local = "" +namespace mml = "http://www.w3.org/1998/Math/MathML" +namespace rng = "http://relaxng.org/ns/structure/1.0" +namespace s = "http://purl.oclc.org/dsdl/schematron" +namespace svg = "http://www.w3.org/2000/svg" +namespace trans = "http://docbook.org/ns/transclusion" +namespace xlink = "http://www.w3.org/1999/xlink" + +# This file is part of DocBook ITS V5.2CR5 +# +# Copyright 2007-2020 HaL Computer Systems, Inc., +# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software +# Corporation, Norman Walsh, Jirka Kosek, Sun Microsystems, Inc., +# and the Organization for the Advancement of Structured Information +# Standards (OASIS). +# +# Permission to use, copy, modify and distribute the DocBook schema +# and its accompanying documentation for any purpose and without fee +# is hereby granted in perpetuity, provided that the above copyright +# notice and this paragraph appear in all copies. The copyright +# holders make no representation about the suitability of the schema +# for any purpose. It is provided "as is" without expressed or implied +# warranty. +# +# If you modify the DocBook schema in any way, label your schema as a +# variant of DocBook. See the reference documentation +# (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook) +# for more information. +# +# Please direct all questions, bug reports, or suggestions for changes +# to the docbook-comment@lists.oasis-open.org mailing list. For more +# information, see http://www.oasis-open.org/docbook/. +# +# ====================================================================== + +s:ns [ + prefix = "a" + uri = "http://relaxng.org/ns/compatibility/annotations/1.0" +] +s:ns [ prefix = "ctrl" uri = "http://nwalsh.com/xmlns/schema-control/" ] +s:ns [ prefix = "db" uri = "http://docbook.org/ns/docbook" ] +s:ns [ prefix = "html" uri = "http://www.w3.org/1999/xhtml" ] +s:ns [ prefix = "its" uri = "http://www.w3.org/2005/11/its" ] +s:ns [ prefix = "mml" uri = "http://www.w3.org/1998/Math/MathML" ] +s:ns [ prefix = "rng" uri = "http://relaxng.org/ns/structure/1.0" ] +s:ns [ prefix = "s" uri = "http://purl.oclc.org/dsdl/schematron" ] +s:ns [ prefix = "svg" uri = "http://www.w3.org/2000/svg" ] +s:ns [ prefix = "trans" uri = "http://docbook.org/ns/transclusion" ] +s:ns [ prefix = "xlink" uri = "http://www.w3.org/1999/xlink" ] +start = + (db.set + | db.book + | db.divisions + | db.components + | db.navigation.components + | db.section + | db.para) + | (db.abstract + | db.mediaobject.content + | db.audiodata + | db.imagedata + | db.textdata + | db.videodata + | db.caption + | db.publishing.blocks + | db.wrapper.blocks + | db.formal.blocks + | db.informal.blocks + | db.formalpara + | db.inlinemediaobject + | db.list.blocks + | db.legalnotice + | db.verbatim.blocks + | db.graphic.blocks + | db.personblurb + | db.revhistory + | db.simpara + | db.step + | db.stepalternatives + | db.info) + | (db.partintro | db.simplesect) + | db.annotation + | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5) + | (db.refentry | db.refsection | db.refsynopsisdiv) + | (db.refsect1 | db.refsect2 | db.refsect3) + | (db.glossary | db.glossdiv | db.glosslist) + | (db.bibliodiv | db.bibliolist) + | (db.setindex | db.index | db.indexdiv) + | (db.toc | db.tocdiv) + | (db.task | db.taskprerequisites | db.taskrelated | db.tasksummary) + | (db.calloutlist + | db.programlistingco + | db.screenco + | db.imageobjectco) + | (db.productionset | db.constraintdef) + | (db.msg + | db.msgexplan + | db.msgmain + | db.msgrel + | db.msgset + | db.msgsub) + | (db.qandadiv | db.qandaentry | db.qandaset) + | (db.equation | db.informalequation) + | db.cmdsynopsis + | (db.synopsis.blocks | db.funcsynopsisinfo | db.classsynopsisinfo) + | db.admonition.blocks + | db.topic +div { + db._any.attribute = + + ## Any attribute, including any attribute in any namespace + attribute * { text } +} +db.arch.attribute = + + ## Designates the computer or chip architecture to which the element applies + attribute arch { text } +db.audience.attribute = + + ## Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + attribute audience { text } +db.condition.attribute = + + ## provides a standard place for application-specific effectivity + attribute condition { text } +db.conformance.attribute = + + ## Indicates standards conformance characteristics of the element + attribute conformance { text } +db.os.attribute = + + ## Indicates the operating system to which the element is applicable + attribute os { text } +db.revision.attribute = + + ## Indicates the editorial revision to which the element belongs + attribute revision { text } +db.security.attribute = + + ## Indicates something about the security level associated with the element to which it applies + attribute security { text } +db.userlevel.attribute = + + ## Indicates the level of user experience for which the element applies + attribute userlevel { text } +db.vendor.attribute = + + ## Indicates the computer vendor to which the element applies + attribute vendor { text } +db.wordsize.attribute = + + ## Indicates the word size (width in bits) of the computer architecture to which the element applies + attribute wordsize { text } +db.outputformat.attribute = + + ## Indicates the output format (for example, print or epub) to which the element applies + attribute outputformat { text } +db.effectivity.attributes = + db.arch.attribute? + & db.audience.attribute? + & db.condition.attribute? + & db.conformance.attribute? + & db.os.attribute? + & db.revision.attribute? + & db.security.attribute? + & db.userlevel.attribute? + & db.vendor.attribute? + & db.wordsize.attribute? + & db.outputformat.attribute? +db.endterm.attribute = + + ## Points to the element whose content is to be used as the text of the link + attribute endterm { xsd:IDREF } +db.linkend.attribute = + + ## Points to an internal link target by identifying the value of its xml:id attribute + attribute linkend { xsd:IDREF } +db.linkends.attribute = + + ## Points to one or more internal link targets by identifying the value of their xml:id attributes + attribute linkends { xsd:IDREFS } +db.xlink.href.attribute = + + ## Identifies a link target with a URI + attribute xlink:href { xsd:anyURI } +db.xlink.simple.type.attribute = + + ## Identifies the XLink link type + attribute xlink:type { + + ## An XLink simple link type + "simple" + } +db.xlink.role.attribute = + + ## Identifies the XLink role of the link + attribute xlink:role { xsd:anyURI } +db.xlink.arcrole.attribute = + + ## Identifies the XLink arcrole of the link + attribute xlink:arcrole { xsd:anyURI } +db.xlink.title.attribute = + + ## Identifies the XLink title of the link + attribute xlink:title { text } +db.xlink.show.enumeration = + + ## An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + "new" + | + ## An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. + "replace" + | + ## An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + "embed" + | + ## The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior. + "other" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + "none" +db.xlink.show.attribute = + + ## Identifies the XLink show behavior of the link + attribute xlink:show { db.xlink.show.enumeration } +db.xlink.actuate.enumeration = + + ## An application should traverse to the ending resource immediately on loading the starting resource. + "onLoad" + | + ## An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + "onRequest" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior. + "other" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + "none" +db.xlink.actuate.attribute = + + ## Identifies the XLink actuate behavior of the link + attribute xlink:actuate { db.xlink.actuate.enumeration } +db.xlink.simple.link.attributes = + db.xlink.simple.type.attribute? + & db.xlink.href.attribute? + & db.xlink.role.attribute? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? +db.xlink.attributes = + db.xlink.simple.link.attributes + | (db.xlink.extended.link.attributes + | db.xlink.locator.link.attributes + | db.xlink.arc.link.attributes + | db.xlink.resource.link.attributes + | db.xlink.title.link.attributes) +db.xml.id.attribute = + + ## Identifies the unique ID value of the element + attribute xml:id { xsd:ID } +db.version.attribute = + + ## Specifies the DocBook version of the element and its descendants + attribute version { text } +db.xml.lang.attribute = + + ## Specifies the natural language of the element and its descendants + attribute xml:lang { text } +db.xml.base.attribute = + + ## Specifies the base URI of the element and its descendants + attribute xml:base { xsd:anyURI } +db.remap.attribute = + + ## Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + attribute remap { text } +db.xreflabel.attribute = + + ## Provides the text that is to be generated for a cross reference to the element + attribute xreflabel { text } +db.xrefstyle.attribute = + + ## Specifies a keyword or keywords identifying additional style information + attribute xrefstyle { text } +db.revisionflag.enumeration = + + ## The element has been changed. + "changed" + | + ## The element is new (has been added to the document). + "added" + | + ## The element has been deleted. + "deleted" + | + ## Explicitly turns off revision markup for this element. + "off" +db.revisionflag.attribute = + + ## Identifies the revision status of the element + attribute revisionflag { db.revisionflag.enumeration } +db.dir.enumeration = + + ## Left-to-right text + "ltr" + | + ## Right-to-left text + "rtl" + | + ## Left-to-right override + "lro" + | + ## Right-to-left override + "rlo" +db.dir.attribute = + + ## Identifies the direction of text in an element + attribute dir { db.dir.enumeration } +db.rdfalite.vocab = + + ## The RDFa Lite vocab + attribute vocab { xsd:anyURI } +db.rdfalite.typeof = + + ## The RDFa Lite typeof + attribute typeof { text } +db.rdfalite.property = + + ## The RDFa Lite property + attribute property { text } +db.rdfalite.resource = + + ## The RDFa Lite resource + attribute resource { text } +db.rdfalite.prefix = + + ## The RDFa Lite prefix + attribute prefix { text } +db.rdfalite.attributes = + db.rdfalite.vocab? + & db.rdfalite.typeof? + & db.rdfalite.property? + & db.rdfalite.resource? + & db.rdfalite.prefix? +db.trans.idfixup.enumeration = + + ## No ID fixup strategy + "none" + | + ## ID fixup by concatenating suffixes + "suffix" + | + ## ID fixup by creating unique values + "auto" +db.trans.idfixup.attribute = + + ## The transclusion ID fixup strategy + attribute trans:idfixup { db.trans.idfixup.enumeration } +db.trans.suffix.attribute = + + ## The transclusion suffix to use when the suffix ID fixup strategy is employed + [ + s:pattern [ + s:title [ "Suffix fixup must be specified" ] + s:rule [ + context = "db:*[@trans:suffix]" + s:assert [ + test = "@trans:idfixup = 'suffix'" + "If a suffix is specified, suffix ID fixup must also be specified." + ] + ] + ] + ] + attribute trans:suffix { text } +db.trans.linkscope.enumeration = + + ## No link scope adjustments are made + "user" + | + ## The link scopes are adjusted with the suffix property + "local" + | + ## The link scopes are adjusted based on proximity + "near" + | + ## The link scopes are adjusted based on document order + "global" +db.trans.linkscope.attribute = + + ## The transclusion link scope adjustment + attribute trans:linkscope { db.trans.linkscope.enumeration } +db.common.transclusion.attributes = + db.trans.idfixup.attribute? + & db.trans.suffix.attribute? + & db.trans.linkscope.attribute? +db.common.base.attributes = + db.version.attribute? + & db.xml.lang.attribute? + & db.xml.base.attribute? + & db.remap.attribute? + & db.xreflabel.attribute? + & db.revisionflag.attribute? + & db.dir.attribute? + & db.effectivity.attributes + & db.rdfalite.attributes + & db.common.transclusion.attributes + & db._any_other.attribute* + & (its-local.attributes & its-attribute.version?) +db.common.attributes = + db.xml.id.attribute? + & db.common.base.attributes + & db.annotations.attribute? +db.common.idreq.attributes = + db.xml.id.attribute + & db.common.base.attributes + & db.annotations.attribute? +db.common.linking.attributes = + (db.linkend.attribute | db.xlink.attributes)? +db.common.req.linking.attributes = + db.linkend.attribute | db.xlink.attributes +db.common.data.attributes = + + ## Specifies the format of the data + attribute format { text }?, + ( + ## Indentifies the location of the data by URI + attribute fileref { xsd:anyURI } + | + ## Identifies the location of the data by external identifier (entity name) + attribute entityref { xsd:ENTITY }) +db.verbatim.continuation.enumeration = + + ## Line numbering continues from the immediately preceding element with the same name. + "continues" + | + ## Line numbering restarts (begins at 1, usually). + "restarts" +db.verbatim.continuation.attribute = + + ## Determines whether line numbering continues from the previous element or restarts + attribute continuation { db.verbatim.continuation.enumeration } +db.verbatim.linenumbering.enumeration = + + ## Lines are numbered. + "numbered" + | + ## Lines are not numbered. + "unnumbered" +db.verbatim.linenumbering.attribute = + + ## Determines whether lines are numbered + attribute linenumbering { db.verbatim.linenumbering.enumeration } +db.verbatim.startinglinenumber.attribute = + + ## Specifies the initial line number + attribute startinglinenumber { xsd:integer } +db.verbatim.language.attribute = + + ## Identifies the language (i.e. programming language) of the verbatim content + attribute language { text } +db.verbatim.xml.space.attribute = + + ## Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not + attribute xml:space { + + ## Whitespace must be preserved. + "preserve" + } +db.verbatim.common.attributes = + db.verbatim.continuation.attribute? + & db.verbatim.linenumbering.attribute? + & db.verbatim.startinglinenumber.attribute? + & db.verbatim.xml.space.attribute? +db.verbatim.attributes = + db.verbatim.common.attributes & db.verbatim.language.attribute? +db.label.attribute = + + ## Specifies an identifying string for presentation purposes + attribute label { text } +db.width.characters.attribute = + + ## Specifies the width (in characters) of the element + attribute width { xsd:nonNegativeInteger } +db.spacing.enumeration = + + ## The spacing should be "compact". + "compact" + | + ## The spacing should be "normal". + "normal" +db.spacing.attribute = + + ## Specifies (a hint about) the spacing of the content + attribute spacing { db.spacing.enumeration } +db.pgwide.enumeration = + + ## The element should be rendered in the current text flow (with the flow column width). + "0" + | + ## The element should be rendered across the full text page. + "1" +db.pgwide.attribute = + + ## Indicates if the element is rendered across the column or the page + attribute pgwide { db.pgwide.enumeration } +db.language.attribute = + + ## Identifies the language (i.e. programming language) of the content + attribute language { text } +db.performance.enumeration = + + ## The content describes an optional step or steps. + "optional" + | + ## The content describes a required step or steps. + "required" +db.performance.attribute = + + ## Specifies if the content is required or optional + attribute performance { db.performance.enumeration } +db.floatstyle.attribute = + + ## Specifies style information to be used when rendering the float + attribute floatstyle { text } +db.width.attribute = + + ## Specifies the width of the element + attribute width { text } +db.depth.attribute = + + ## Specifies the depth of the element + attribute depth { text } +db.contentwidth.attribute = + + ## Specifies the width of the content rectangle + attribute contentwidth { text } +db.contentdepth.attribute = + + ## Specifies the depth of the content rectangle + attribute contentdepth { text } +db.scalefit.enumeration = + + ## False (do not scale-to-fit; anamorphic scaling may occur) + "0" + | + ## True (scale-to-fit; anamorphic scaling is forbidden) + "1" +db.scale.attribute = + + ## Specifies the scaling factor + attribute scale { xsd:positiveInteger } +db.classid.attribute = + + ## Specifies a classid for a media object player + attribute classid { text } +db.autoplay.attribute = + + ## Specifies the autoplay setting for a media object player + attribute autoplay { text } +db.halign.enumeration = + + ## Centered horizontally + "center" + | + ## Aligned horizontally on the specified character + "char" + | + ## Fully justified (left and right margins or edges) + "justify" + | + ## Left aligned + "left" + | + ## Right aligned + "right" +db.valign.enumeration = + + ## Aligned on the bottom of the region + "bottom" + | + ## Centered vertically + "middle" + | + ## Aligned on the top of the region + "top" +db.biblio.class.enumeration = + + ## A digital object identifier. + "doi" + | + ## An international standard book number. + "isbn" + | + ## An international standard technical report number (ISO 10444). + "isrn" + | + ## An international standard serial number. + "issn" + | + ## An international standard text code. + "istc" + | + ## A Library of Congress reference number. + "libraryofcongress" + | + ## A publication number (an internal number or possibly organizational standard). + "pubsnumber" + | + ## A Uniform Resource Identifier + "uri" +db.biblio.class-enum.attribute = + + ## Identifies the kind of bibliographic identifier + attribute class { db.biblio.class.enumeration }? +db.biblio.class-other.attribute = + + ## Identifies the nature of the non-standard bibliographic identifier + attribute otherclass { xsd:NMTOKEN } +db.biblio.class-other.attributes = + + ## Identifies the kind of bibliographic identifier + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.biblio.class-other.attribute +db.biblio.class.attribute = + db.biblio.class-enum.attribute | db.biblio.class-other.attributes +db.pubwork.enumeration = + + ## An article + "article" + | + ## A bulletin board system + "bbs" + | + ## A book + "book" + | + ## A CD-ROM + "cdrom" + | + ## A chapter (as of a book) + "chapter" + | + ## A DVD + "dvd" + | + ## An email message + "emailmessage" + | + ## A gopher page + "gopher" + | + ## A journal + "journal" + | + ## A manuscript + "manuscript" + | + ## A posting to a newsgroup + "newsposting" + | + ## A part (as of a book) + "part" + | + ## A reference entry + "refentry" + | + ## A section (as of a book or article) + "section" + | + ## A series + "series" + | + ## A set (as of books) + "set" + | + ## A web page + "webpage" + | + ## A wiki page + "wiki" + | + ## Some other kind of work + "other" +db.biblio.pubwork.enumeration = db.pubwork.enumeration +db.biblio.pubwork-enum.attribute = + + ## Identifies the nature of the published work + attribute pubwork { db.biblio.pubwork.enumeration }? +db.biblio.pubwork-other.attribute = + + ## Identifies the nature of some other kind of published work + attribute otherpubwork { xsd:NMTOKEN } +db.biblio.pubwork-other.attributes = + + ## Identifies that this is some other kind of published work + attribute pubwork { + + ## Indicates that the published work is some 'other' kind. + "other" + } + & db.biblio.pubwork-other.attribute +db.biblio.pubwork.attribute = + db.biblio.pubwork-enum.attribute | db.biblio.pubwork-other.attributes +db.ubiq.inlines = + (db.inlinemediaobject + | db.remark + | db.link.inlines + | db.alt + | db.trademark + | # below, effectively the publishing inlines (as of 5.0) + db.abbrev + | db.acronym + | db.date + | db._emphasis + | db.footnote + | db.footnoteref + | db._foreignphrase + | db._phrase + | db._quote + | db.subscript + | db.superscript + | db.wordasword) + | db.annotation + | (db._firstterm | db._glossterm) + | db.indexterm + | db.coref +db._text = (text | db.ubiq.inlines | db._phrase | db.replaceable)* +db._title = db.title? & db.titleabbrev? & db.subtitle? +db._title.req = db.title & db.titleabbrev? & db.subtitle? +db._title.only = db.title? & db.titleabbrev? +db._title.onlyreq = db.title & db.titleabbrev? +db._info = (db._title, db.titleforbidden.info?) | db.info? +db._info.title.req = + (db._title.req, db.titleforbidden.info?) | db.titlereq.info +db._info.title.only = + (db._title.only, db.titleforbidden.info?) | db.titleonly.info +db._info.title.onlyreq = + (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info +db._info.title.forbidden = db.titleforbidden.info? +db.all.inlines = + text + | db.ubiq.inlines + | db.general.inlines + | db.domain.inlines + | db.extension.inlines +db.general.inlines = + db.publishing.inlines + | db.product.inlines + | db.bibliography.inlines + | db.graphic.inlines + | db.indexing.inlines + | db.link.inlines +db.domain.inlines = + db.technical.inlines + | db.math.inlines + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines + | db.os.inlines + | db.programming.inlines + | db.error.inlines +db.technical.inlines = + (db.replaceable | db.package | db.parameter) + | db.termdef + | db.nonterminal + | (db.systemitem | db.option | db.optional | db.property) +db.product.inlines = + db.trademark + | (db.productnumber + | db.productname + | db.database + | db.application + | db.hardware) +db.bibliography.inlines = + db.citation + | db.citerefentry + | db.citetitle + | db.citebiblioid + | db.author + | db.person + | db.personname + | db.org + | db.orgname + | db.editor + | db.jobtitle +db.publishing.inlines = + (db.abbrev + | db.acronym + | db.date + | db.emphasis + | db.footnote + | db.footnoteref + | db.foreignphrase + | db.phrase + | db.quote + | db.revnumber + | db.subscript + | db.superscript + | db.wordasword) + | db.glossary.inlines + | db.coref +db.graphic.inlines = db.inlinemediaobject +db.indexing.inlines = notAllowed | db.indexterm +db.link.inlines = + (db.xref | db.link | db.olink | db.anchor) | db.biblioref +db.extension.inlines = notAllowed +db.nopara.blocks = + (db.list.blocks + | db.wrapper.blocks + | db.formal.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.indexterm + | db.synopsis.blocks + | db.admonition.blocks +db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara +db.all.blocks = + (db.nopara.blocks | db.para.blocks | db.extension.blocks) + | db.annotation +db.wrapper.blocks = db.formalgroup +db.formal.blocks = (db.example | db.figure | db.table) | db.equation +db.informal.blocks = + (db.informalexample | db.informalfigure | db.informaltable) + | db.informalequation +db.publishing.blocks = + db.sidebar | db.blockquote | db.address | db.epigraph +db.graphic.blocks = db.mediaobject | db.screenshot +db.technical.blocks = + db.procedure + | db.task + | (db.productionset | db.constraintdef) + | db.msgset +db.list.blocks = + (db.itemizedlist + | db.orderedlist + | db.procedure + | db.simplelist + | db.variablelist + | db.segmentedlist) + | db.glosslist + | db.bibliolist + | db.calloutlist + | db.qandaset +db.verbatim.blocks = + (db.screen | db.literallayout) + | (db.programlistingco | db.screenco) + | (db.programlisting | db.synopsis) +db.extension.blocks = notAllowed +db.info.extension = db._any | (its-rules | its-standoff) +db.info.elements = + (db.abstract + | db.address + | db.artpagenums + | db.author + | db.authorgroup + | db.authorinitials + | db.bibliocoverage + | db.biblioid + | db.bibliosource + | db.collab + | db.confgroup + | db.contractsponsor + | db.contractnum + | db.copyright + | db.cover + | db.date + | db.edition + | db.editor + | db.issuenum + | db.keywordset + | db.legalnotice + | db.mediaobject + | db.org + | db.orgname + | db.othercredit + | db.pagenums + | db.printhistory + | db.pubdate + | db.publisher + | db.publishername + | db.releaseinfo + | db.revhistory + | db.seriesvolnums + | db.subjectset + | db.volumenum + | db.meta + | db.info.extension) + | db.annotation + | db.extendedlink + | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset) + | db.itermset + | (db.productname | db.productnumber) +db.bibliographic.elements = + db.info.elements + | db.publishing.inlines + | db.citerefentry + | db.citetitle + | db.citebiblioid + | db.person + | db.personblurb + | db.personname + | db.subtitle + | db.title + | db.titleabbrev +div { + db.title.role.attribute = attribute role { text } + db.title.attlist = + db.title.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.title = + + ## The text of the title of a section of a document or of a formal block-level element + element title { db.title.attlist, db.all.inlines* } +} +div { + db.titleabbrev.role.attribute = attribute role { text } + db.titleabbrev.attlist = + db.titleabbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.titleabbrev = + + ## The abbreviation of a title + element titleabbrev { db.titleabbrev.attlist, db.all.inlines* } +} +div { + db.subtitle.role.attribute = attribute role { text } + db.subtitle.attlist = + db.subtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subtitle = + + ## The subtitle of a document + element subtitle { db.subtitle.attlist, db.all.inlines* } +} +div { + db.info.role.attribute = attribute role { text } + db.info.attlist = db.info.role.attribute? & db.common.attributes + db.info = + + ## A wrapper for information about a component or other block + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { db.info.attlist, (db._title & db.info.elements*) } +} +div { + db.titlereq.info.role.attribute = attribute role { text } + db.titlereq.info.attlist = + db.titlereq.info.role.attribute? & db.common.attributes + db.titlereq.info = + + ## A wrapper for information about a component or other block with a required title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { + db.titlereq.info.attlist, (db._title.req & db.info.elements*) + } +} +div { + db.titleonly.info.role.attribute = attribute role { text } + db.titleonly.info.attlist = + db.titleonly.info.role.attribute? & db.common.attributes + db.titleonly.info = + + ## A wrapper for information about a component or other block with only a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { + db.titleonly.info.attlist, (db._title.only & db.info.elements*) + } +} +div { + db.titleonlyreq.info.role.attribute = attribute role { text } + db.titleonlyreq.info.attlist = + db.titleonlyreq.info.role.attribute? & db.common.attributes + db.titleonlyreq.info = + + ## A wrapper for information about a component or other block with only a required title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { + db.titleonlyreq.info.attlist, + (db._title.onlyreq & db.info.elements*) + } +} +div { + db.titleforbidden.info.role.attribute = attribute role { text } + db.titleforbidden.info.attlist = + db.titleforbidden.info.role.attribute? & db.common.attributes + db.titleforbidden.info = + + ## A wrapper for information about a component or other block without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { db.titleforbidden.info.attlist, db.info.elements* } +} +div { + db.subjectset.role.attribute = attribute role { text } + db.subjectset.scheme.attribute = + + ## Identifies the controlled vocabulary used by this set's terms + attribute scheme { xsd:NMTOKEN } + db.subjectset.attlist = + db.subjectset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.subjectset.scheme.attribute? + db.subjectset = + + ## A set of terms describing the subject matter of a document + element subjectset { db.subjectset.attlist, db.subject+ } +} +div { + db.subject.role.attribute = attribute role { text } + db.subject.weight.attribute = + + ## Specifies a ranking for this subject relative to other subjects in the same set + attribute weight { text } + db.subject.attlist = + db.subject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.subject.weight.attribute? + db.subject = + + ## One of a group of terms describing the subject matter of a document + element subject { db.subject.attlist, db.subjectterm+ } +} +div { + db.subjectterm.role.attribute = attribute role { text } + db.subjectterm.attlist = + db.subjectterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subjectterm = + + ## A term in a group of terms describing the subject matter of a document + element subjectterm { db.subjectterm.attlist, text } +} +div { + db.keywordset.role.attribute = attribute role { text } + db.keywordset.attlist = + db.keywordset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keywordset = + + ## A set of keywords describing the content of a document + element keywordset { db.keywordset.attlist, db.keyword+ } +} +div { + db.keyword.role.attribute = attribute role { text } + db.keyword.attlist = + db.keyword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keyword = + + ## One of a set of keywords describing the content of a document + element keyword { db.keyword.attlist, text } +} +db.table.choice = notAllowed | db.cals.table | db.html.table +db.informaltable.choice = + notAllowed | db.cals.informaltable | db.html.informaltable +db.table = db.table.choice +db.informaltable = db.informaltable.choice +div { + db.procedure.role.attribute = attribute role { text } + db.procedure.type.attribute = + + ## Identifies the type of procedure + attribute type { text }? + db.procedure.attlist = + db.procedure.role.attribute? + & db.procedure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + db.procedure.info = db._info.title.only + db.procedure = + + ## A list of operations to be performed in a well-defined sequence + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:procedure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element procedure { + db.procedure.attlist, + db.procedure.info, + db.all.blocks*, + db.step+, + db.result? + } +} +div { + db.step.role.attribute = attribute role { text } + db.step.attlist = + db.step.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.step.info = db._info.title.only + # This content model is blocks*, step|stepalternatives, blocks* but + # expressed this way it avoids UPA issues in XSD and DTD versions + db.step = + + ## A unit of action in a procedure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:step" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element step { + db.step.attlist, + db.step.info, + ((db.all.blocks+, + ((db.substeps | db.stepalternatives), db.all.blocks*)?, + db.result?) + | ((db.substeps | db.stepalternatives), + db.all.blocks*, + db.result?)) + } +} +div { + db.stepalternatives.role.attribute = attribute role { text } + db.stepalternatives.attlist = + db.stepalternatives.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.stepalternatives.info = db._info.title.forbidden + db.stepalternatives = + + ## Alternative steps in a procedure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:stepalternatives" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element stepalternatives { + db.stepalternatives.attlist, db.stepalternatives.info, db.step+ + } +} +div { + db.substeps.role.attribute = attribute role { text } + db.substeps.attlist = + db.substeps.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.substeps = + + ## A wrapper for steps that occur within steps in a procedure + element substeps { db.substeps.attlist, db.step+ } +} +div { + db.result.role.attribute = attribute role { text } + db.result.attlist = + db.result.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.result = + + ## A wrapper for identifying the results of a procedure or step + element result { db.result.attlist, db.all.blocks+ } +} +div { + db.sidebar.floatstyle.attribute = db.floatstyle.attribute + db.sidebar.role.attribute = attribute role { text } + db.sidebar.attlist = + db.sidebar.role.attribute? + & db.sidebar.floatstyle.attribute? + & db.common.attributes + & db.common.linking.attributes + db.sidebar.info = db._info + db.sidebar = + + ## A portion of a document that is isolated from the main narrative flow + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:sidebar" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of sidebar" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sidebar" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sidebar { + db.sidebar.attlist, db.sidebar.info, db.all.blocks+ + } +} +div { + db.abstract.role.attribute = attribute role { text } + db.abstract.attlist = + db.abstract.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abstract.info = db._info.title.only + db.abstract = + + ## A summary + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:abstract" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element abstract { + db.abstract.attlist, db.abstract.info, db.all.blocks+ + } +} +div { + db.personblurb.role.attribute = attribute role { text } + db.personblurb.attlist = + db.personblurb.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.personblurb.info = db._info.title.only + db.personblurb = + + ## A short description or note about a person + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:personblurb" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element personblurb { + db.personblurb.attlist, db.personblurb.info, db.para.blocks+ + } +} +div { + db.blockquote.role.attribute = attribute role { text } + db.blockquote.attlist = + db.blockquote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.blockquote.info = db._info.title.only + db.blockquote = + + ## A quotation set off from the main text + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:blockquote" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element blockquote { + db.blockquote.attlist, + db.blockquote.info, + db.attribution?, + db.all.blocks+ + } +} +div { + db.attribution.role.attribute = attribute role { text } + db.attribution.attlist = + db.attribution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.attribution = + + ## The source of a block quote or epigraph + element attribution { + db.attribution.attlist, + (db._text + | db.person + | db.personname + | db.citetitle + | db.citation)* + } +} +div { + db.bridgehead.renderas.enumeration = + + ## Render as a first-level section + "sect1" + | + ## Render as a second-level section + "sect2" + | + ## Render as a third-level section + "sect3" + | + ## Render as a fourth-level section + "sect4" + | + ## Render as a fifth-level section + "sect5" + db.bridgehead.renderas-enum.attribute = + + ## Indicates how the bridge head should be rendered + attribute renderas { db.bridgehead.renderas.enumeration }? + db.bridgehead.renderas-other.attribute = + + ## Identifies the nature of the non-standard rendering + attribute otherrenderas { xsd:NMTOKEN } + db.bridgehead.renderas-other.attributes = + + ## Indicates how the bridge head should be rendered + attribute renderas { + + ## Identifies a non-standard rendering + "other" + } + & db.bridgehead.renderas-other.attribute + db.bridgehead.renderas.attribute = + db.bridgehead.renderas-enum.attribute + | db.bridgehead.renderas-other.attributes + db.bridgehead.role.attribute = attribute role { text } + db.bridgehead.attlist = + db.bridgehead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bridgehead.renderas.attribute? + db.bridgehead = + + ## A free-floating heading + element bridgehead { db.bridgehead.attlist, db.all.inlines* } +} +div { + db.remark.role.attribute = attribute role { text } + db.remark.attlist = + db.remark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.remark = + + ## A remark (or comment) intended for presentation in a draft manuscript + element remark { db.remark.attlist, db.all.inlines* } +} +div { + db.epigraph.role.attribute = attribute role { text } + db.epigraph.attlist = + db.epigraph.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.epigraph.info = db._info.title.forbidden + db.epigraph = + + ## A short inscription at the beginning of a document or component + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:epigraph" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element epigraph { + db.epigraph.attlist, + db.epigraph.info, + db.attribution?, + (db.para.blocks | db.literallayout)+ + } +} +div { + db.footnote.role.attribute = attribute role { text } + db.footnote.label.attribute = + + ## Identifies the desired footnote mark + attribute label { xsd:NMTOKEN } + db.footnote.attlist = + db.footnote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.footnote.label.attribute? + db.footnote = + + ## A footnote + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:footnote)" + "footnote must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:epigraph)" + "epigraph must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of footnote" + ] + ] + ] + ] + element footnote { db.footnote.attlist, db.all.blocks+ } +} +div { + db.formalpara.role.attribute = attribute role { text } + db.formalpara.attlist = + db.formalpara.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.formalpara.info = db._info.title.onlyreq + db.formalpara = + + ## A paragraph with a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:formalpara" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element formalpara { + db.formalpara.attlist, + db.formalpara.info, + db.indexing.inlines*, + db.para + } +} +div { + db.para.role.attribute = attribute role { text } + db.para.attlist = + db.para.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.para.info = db._info.title.forbidden + db.para = + + ## A paragraph + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:para" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element para { + db.para.attlist, + db.para.info, + (db.all.inlines | db.nopara.blocks)* + } +} +div { + db.simpara.role.attribute = attribute role { text } + db.simpara.attlist = + db.simpara.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.simpara.info = db._info.title.forbidden + db.simpara = + + ## A paragraph that contains only text and inline markup, no block elements + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:simpara" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element simpara { + db.simpara.attlist, db.simpara.info, db.all.inlines* + } +} +div { + db.itemizedlist.role.attribute = attribute role { text } + db.itemizedlist.mark.attribute = + + ## Identifies the type of mark to be used on items in this list + attribute mark { xsd:NMTOKEN } + db.itemizedlist.attlist = + db.itemizedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & db.itemizedlist.mark.attribute? + db.itemizedlist.info = db._info.title.only + db.itemizedlist = + + ## A list in which each entry is marked with a bullet or other dingbat + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:itemizedlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element itemizedlist { + db.itemizedlist.attlist, + db.itemizedlist.info, + db.all.blocks*, + db.listitem+ + } +} +div { + db.orderedlist.role.attribute = attribute role { text } + db.orderedlist.continuation.enumeration = + + ## Specifies that numbering should begin where the preceding list left off + "continues" + | + ## Specifies that numbering should begin again at 1 + "restarts" + db.orderedlist.continuation.attribute = + + ## Indicates how list numbering should begin relative to the immediately preceding list + attribute continuation { db.orderedlist.continuation.enumeration } + db.orderedlist.startingnumber.attribute = + + ## Specifies the initial line number + attribute startingnumber { xsd:integer } + db.orderedlist.inheritnum.enumeration = + + ## Specifies that numbering should ignore list nesting + "ignore" + | + ## Specifies that numbering should inherit from outer-level lists + "inherit" + db.orderedlist.inheritnum.attribute = + + ## Indicates whether or not item numbering should be influenced by list nesting + attribute inheritnum { db.orderedlist.inheritnum.enumeration } + db.orderedlist.numeration.enumeration = + + ## Specifies Arabic numeration (1, 2, 3, …) + "arabic" + | + ## Specifies upper-case alphabetic numeration (A, B, C, …) + "upperalpha" + | + ## Specifies lower-case alphabetic numeration (a, b, c, …) + "loweralpha" + | + ## Specifies upper-case Roman numeration (I, II, III, …) + "upperroman" + | + ## Specifies lower-case Roman numeration (i, ii, iii …) + "lowerroman" + db.orderedlist.numeration.attribute = + + ## Indicates the desired numeration + attribute numeration { db.orderedlist.numeration.enumeration } + db.orderedlist.attlist = + db.orderedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & (db.orderedlist.continuation.attribute + | db.orderedlist.startingnumber.attribute)? + & db.orderedlist.inheritnum.attribute? + & db.orderedlist.numeration.attribute? + db.orderedlist.info = db._info.title.only + db.orderedlist = + + ## A list in which each entry is marked with a sequentially incremented label + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:orderedlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element orderedlist { + db.orderedlist.attlist, + db.orderedlist.info, + db.all.blocks*, + db.listitem+ + } +} +div { + db.listitem.role.attribute = attribute role { text } + db.listitem.override.attribute = + + ## Specifies the keyword for the type of mark that should be used on this + ## item, instead of the mark that would be used by default + attribute override { xsd:NMTOKEN } + db.listitem.attlist = + db.listitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.listitem.override.attribute? + db.listitem.info = db._info.title.forbidden + db.listitem = + + ## A wrapper for the elements of a list item + element listitem { + db.listitem.attlist, db.listitem.info, db.all.blocks+ + } +} +div { + db.segmentedlist.role.attribute = attribute role { text } + db.segmentedlist.attlist = + db.segmentedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.segmentedlist.info = db._info.title.only + db.segmentedlist = + + ## A segmented list, a list of sets of elements + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:segmentedlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element segmentedlist { + db.segmentedlist.attlist, + db.segmentedlist.info, + db.segtitle+, + db.seglistitem+ + } +} +div { + db.segtitle.role.attribute = attribute role { text } + db.segtitle.attlist = + db.segtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.segtitle = + + ## The title of an element of a list item in a segmented list + element segtitle { db.segtitle.attlist, db.all.inlines* } +} +div { + db.seglistitem.role.attribute = attribute role { text } + db.seglistitem.attlist = + db.seglistitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seglistitem = + + ## A list item in a segmented list + [ + s:pattern [ + s:title [ "Cardinality of segments and titles" ] + s:rule [ + context = "db:seglistitem" + s:assert [ + test = "count(db:seg) = count(../db:segtitle)" + "The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist" + ] + ] + ] + ] + element seglistitem { db.seglistitem.attlist, db.seg+ } +} +div { + db.seg.role.attribute = attribute role { text } + db.seg.attlist = + db.seg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seg = + + ## An element of a list item in a segmented list + element seg { db.seg.attlist, db.all.inlines* } +} +div { + db.simplelist.role.attribute = attribute role { text } + db.simplelist.type.enumeration = + + ## A tabular presentation in row-major order. + "horiz" + | + ## A tabular presentation in column-major order. + "vert" + | + ## An inline presentation, usually a comma-delimited list. + "inline" + db.simplelist.type.attribute = + + ## Specifies the type of list presentation + [ a:defaultValue = "vert" ] + attribute type { db.simplelist.type.enumeration } + db.simplelist.columns.attribute = + + ## Specifies the number of columns for horizontal or vertical presentation + attribute columns { xsd:integer } + db.simplelist.attlist = + db.simplelist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplelist.type.attribute? + & db.simplelist.columns.attribute? + db.simplelist = + + ## An undecorated list of single words or short phrases + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:simplelist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element simplelist { db.simplelist.attlist, db.member+ } +} +div { + db.member.role.attribute = attribute role { text } + db.member.attlist = + db.member.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.member = + + ## An element of a simple list + element member { db.member.attlist, db.all.inlines* } +} +div { + db.variablelist.role.attribute = attribute role { text } + db.variablelist.termlength.attribute = + + ## Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list + attribute termlength { text } + db.variablelist.attlist = + db.variablelist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & db.variablelist.termlength.attribute? + db.variablelist.info = db._info.title.only + db.variablelist = + + ## A list in which each entry is composed of a set of one or more terms and an associated description + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:variablelist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element variablelist { + db.variablelist.attlist, + db.variablelist.info, + db.all.blocks*, + db.varlistentry+ + } +} +div { + db.varlistentry.role.attribute = attribute role { text } + db.varlistentry.attlist = + db.varlistentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varlistentry = + + ## A wrapper for a set of terms and the associated description in a variable list + element varlistentry { + db.varlistentry.attlist, db.term+, db.listitem + } +} +div { + db.term.role.attribute = attribute role { text } + db.term.attlist = + db.term.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.term = + + ## The word or phrase being defined or described in a variable list + element term { db.term.attlist, db.all.inlines* } +} +div { + db.example.role.attribute = attribute role { text } + db.example.label.attribute = db.label.attribute + db.example.width.attribute = db.width.characters.attribute + db.example.pgwide.attribute = db.pgwide.attribute + db.example.floatstyle.attribute = db.floatstyle.attribute + db.example.type.attribute = + + ## Identifies the type of example + attribute type { text }? + db.example.attlist = + db.example.role.attribute? + & db.example.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.example.label.attribute? + & db.example.floatstyle.attribute? + & (db.example.width.attribute | db.example.pgwide.attribute)? + db.example.info = db._info.title.onlyreq + db.example = + + ## A formal example, with a title + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:example" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element example { + db.example.attlist, db.example.info, db.all.blocks+, db.caption? + } +} +div { + db.informalexample.role.attribute = attribute role { text } + db.informalexample.width.attribute = db.width.characters.attribute + db.informalexample.pgwide.attribute = db.pgwide.attribute + db.informalexample.floatstyle.attribute = db.floatstyle.attribute + db.informalexample.type.attribute = + + ## Identifies the type of example + attribute type { text }? + db.informalexample.attlist = + db.informalexample.role.attribute? + & db.informalexample.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.informalexample.floatstyle.attribute? + & (db.informalexample.width.attribute + | db.informalexample.pgwide.attribute)? + db.informalexample.info = db._info.title.forbidden + db.informalexample = + + ## A displayed example without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informalexample" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informalexample { + db.informalexample.attlist, + db.informalexample.info, + db.all.blocks+, + db.caption? + } +} +db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co +db.verbatim.contentmodel = + db._info.title.forbidden, (db.textobject | db.verbatim.inlines*) +div { + db.literallayout.role.attribute = attribute role { text } + db.literallayout.class.enumeration = + + ## The literal layout should be formatted with a monospaced font + "monospaced" + | + ## The literal layout should be formatted with the current font + "normal" + db.literallayout.class.attribute = + + ## Specifies the class of literal layout + attribute class { db.literallayout.class.enumeration } + db.literallayout.attlist = + db.literallayout.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.literallayout.class.attribute? + db.literallayout = + + ## A block of text in which line breaks and white space are to be reproduced faithfully + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:literallayout" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element literallayout { + db.literallayout.attlist, db.verbatim.contentmodel + } +} +div { + db.screen.role.attribute = attribute role { text } + db.screen.width.attribute = db.width.characters.attribute + db.screen.attlist = + db.screen.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.screen.width.attribute? + db.screen = + + ## Text that a user sees or might see on a computer screen + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:screen" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element screen { db.screen.attlist, db.verbatim.contentmodel } +} +div { + db.screenshot.role.attribute = attribute role { text } + db.screenshot.attlist = + db.screenshot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenshot.info = db._info + db.screenshot = + + ## A representation of what the user sees or might see on a computer screen + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:screenshot" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element screenshot { + db.screenshot.attlist, db.screenshot.info, db.mediaobject + } +} +div { + db.figure.role.attribute = attribute role { text } + db.figure.label.attribute = db.label.attribute + db.figure.pgwide.attribute = db.pgwide.attribute + db.figure.floatstyle.attribute = db.floatstyle.attribute + db.figure.type.attribute = + + ## Identifies the type of figure + attribute type { text }? + db.figure.attlist = + db.figure.role.attribute? + & db.figure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.figure.label.attribute? + & db.figure.pgwide.attribute? + & db.figure.floatstyle.attribute? + db.figure.info = db._info.title.onlyreq + db.figure = + + ## A formal figure, generally an illustration, with a title + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:figure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element figure { + db.figure.attlist, db.figure.info, db.all.blocks+, db.caption? + } +} +div { + db.informalfigure.role.attribute = attribute role { text } + db.informalfigure.label.attribute = db.label.attribute + db.informalfigure.pgwide.attribute = db.pgwide.attribute + db.informalfigure.floatstyle.attribute = db.floatstyle.attribute + db.informalfigure.type.attribute = + + ## Identifies the type of figure + attribute type { text }? + db.informalfigure.attlist = + db.informalfigure.role.attribute? + & db.informalfigure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.informalfigure.label.attribute? + & db.informalfigure.pgwide.attribute? + & db.informalfigure.floatstyle.attribute? + db.informalfigure.info = db._info.title.forbidden + db.informalfigure = + + ## A untitled figure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informalfigure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informalfigure { + db.informalfigure.attlist, + db.informalfigure.info, + db.all.blocks+, + db.caption? + } +} +db.mediaobject.content = + (db.videoobject | db.audioobject | db.imageobject | db.textobject) + | db.imageobjectco +div { + db.mediaobject.role.attribute = attribute role { text } + db.mediaobject.attlist = + db.mediaobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mediaobject.info = db._info.title.forbidden + db.mediaobject = + + ## A displayed media object (video, audio, image, etc.) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:mediaobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element mediaobject { + db.mediaobject.attlist, + db.mediaobject.info, + db.alt?, + db.mediaobject.content+, + db.caption? + } +} +div { + db.inlinemediaobject.role.attribute = attribute role { text } + db.inlinemediaobject.attlist = + db.inlinemediaobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlinemediaobject.info = db._info.title.forbidden + db.inlinemediaobject = + + ## An inline media object (video, audio, image, and so on) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:inlinemediaobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element inlinemediaobject { + db.inlinemediaobject.attlist, + db.inlinemediaobject.info, + db.alt?, + db.mediaobject.content+ + } +} +div { + db.videoobject.role.attribute = attribute role { text } + db.videoobject.attlist = + db.videoobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.videoobject.info = db._info.title.forbidden + db.videoobject = + + ## A wrapper for video data and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:videoobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element videoobject { + db.videoobject.attlist, db.videoobject.info, db.videodata+ + } +} +div { + db.audioobject.role.attribute = attribute role { text } + db.audioobject.attlist = + db.audioobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.audioobject.info = db._info.title.forbidden + db.audioobject = + + ## A wrapper for audio data and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:audioobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element audioobject { + db.audioobject.attlist, db.audioobject.info, db.audiodata+ + } +} +db.imageobject.content = + db.imagedata+ | db.imagedata.mathml | db.imagedata.svg+ +div { + db.imageobject.role.attribute = attribute role { text } + db.imageobject.attlist = + db.imageobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobject.info = db._info.title.forbidden + db.imageobject = + + ## A wrapper for image data and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imageobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imageobject { + db.imageobject.attlist, + db.imageobject.info, + db.imageobject.content + } +} +div { + db.textobject.role.attribute = attribute role { text } + db.textobject.attlist = + db.textobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.textobject.info = db._info.title.forbidden + db.textobject = + + ## A wrapper for a text description of an object and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:textobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element textobject { + db.textobject.attlist, + db.textobject.info, + (db.phrase | db.textdata | db.all.blocks+) + } +} +div { + db.videodata.role.attribute = attribute role { text } + db.videodata.align.enumeration = db.halign.enumeration + db.videodata.align.attribute = + + ## Specifies the (horizontal) alignment of the video data + attribute align { db.videodata.align.enumeration } + db.videodata.autoplay.attribute = db.autoplay.attribute + db.videodata.classid.attribute = db.classid.attribute + db.videodata.valign.enumeration = db.valign.enumeration + db.videodata.valign.attribute = + + ## Specifies the vertical alignment of the video data + attribute valign { db.videodata.valign.enumeration } + db.videodata.width.attribute = db.width.attribute + db.videodata.depth.attribute = db.depth.attribute + db.videodata.contentwidth.attribute = db.contentwidth.attribute + db.videodata.contentdepth.attribute = db.contentdepth.attribute + db.videodata.scalefit.enumeration = db.scalefit.enumeration + db.videodata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.videodata.scalefit.enumeration } + db.videodata.scale.attribute = db.scale.attribute + db.videodata.attlist = + db.videodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.videodata.align.attribute? + & db.videodata.valign.attribute? + & db.videodata.width.attribute? + & db.videodata.contentwidth.attribute? + & db.videodata.scalefit.attribute? + & db.videodata.scale.attribute? + & db.videodata.depth.attribute? + & db.videodata.contentdepth.attribute? + & db.videodata.autoplay.attribute? + & db.videodata.classid.attribute? + db.videodata.info = db._info.title.forbidden + db.videodata = + + ## Pointer to external video data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:videodata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element videodata { + db.videodata.attlist, db.videodata.info, db.multimediaparam* + } +} +div { + db.audiodata.role.attribute = attribute role { text } + db.audiodata.align.enumeration = db.halign.enumeration + db.audiodata.align.attribute = + + ## Specifies the (horizontal) alignment of the video data + attribute align { db.audiodata.align.enumeration } + db.audiodata.autoplay.attribute = db.autoplay.attribute + db.audiodata.classid.attribute = db.classid.attribute + db.audiodata.contentwidth.attribute = db.contentwidth.attribute + db.audiodata.contentdepth.attribute = db.contentdepth.attribute + db.audiodata.depth.attribute = db.depth.attribute + db.audiodata.scale.attribute = db.scale.attribute + db.audiodata.scalefit.enumeration = db.scalefit.enumeration + db.audiodata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.audiodata.scalefit.enumeration } + db.audiodata.valign.enumeration = db.valign.enumeration + db.audiodata.valign.attribute = + + ## Specifies the vertical alignment of the video data + attribute valign { db.audiodata.valign.enumeration } + db.audiodata.width.attribute = db.width.attribute + db.audiodata.attlist = + db.audiodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.audiodata.align.attribute? + & db.audiodata.autoplay.attribute? + & db.audiodata.classid.attribute? + & db.audiodata.contentdepth.attribute? + & db.audiodata.contentwidth.attribute? + & db.audiodata.depth.attribute? + & db.audiodata.scale.attribute? + & db.audiodata.scalefit.attribute? + & db.audiodata.valign.attribute? + & db.audiodata.width.attribute? + db.audiodata.info = db._info.title.forbidden + db.audiodata = + + ## Pointer to external audio data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:audiodata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element audiodata { + db.audiodata.attlist, db.audiodata.info, db.multimediaparam* + } +} +div { + db.imagedata.role.attribute = attribute role { text } + db.imagedata.align.enumeration = db.halign.enumeration + db.imagedata.align.attribute = + + ## Specifies the (horizontal) alignment of the image data + attribute align { db.imagedata.align.enumeration } + db.imagedata.valign.enumeration = db.valign.enumeration + db.imagedata.valign.attribute = + + ## Specifies the vertical alignment of the image data + attribute valign { db.imagedata.valign.enumeration } + db.imagedata.width.attribute = db.width.attribute + db.imagedata.depth.attribute = db.depth.attribute + db.imagedata.contentwidth.attribute = db.contentwidth.attribute + db.imagedata.contentdepth.attribute = db.contentdepth.attribute + db.imagedata.scalefit.enumeration = db.scalefit.enumeration + db.imagedata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.imagedata.scalefit.enumeration } + db.imagedata.scale.attribute = db.scale.attribute + db.imagedata.attlist = + db.imagedata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.info = db._info.title.forbidden + db.imagedata = + + ## Pointer to external image data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imagedata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imagedata { + db.imagedata.attlist, db.imagedata.info, db.multimediaparam* + } +} +div { + db.textdata.role.attribute = attribute role { text } + db.textdata.encoding.attribute = + + ## Identifies the encoding of the text in the external file + attribute encoding { text } + db.textdata.attlist = + db.textdata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.textdata.encoding.attribute? + db.textdata.info = db._info.title.forbidden + db.textdata = + + ## Pointer to external text data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:textdata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element textdata { db.textdata.attlist, db.textdata.info } +} +div { + db.multimediaparam.role.attribute = attribute role { text } + db.multimediaparam.name.attribute = + + ## Specifies the name of the parameter + attribute name { text } + db.multimediaparam.value.attribute = + + ## Specifies the value of the parameter + attribute value { text } + db.multimediaparam.valuetype.attribute = + + ## Specifies the type of the value of the parameter + attribute valuetype { text } + db.multimediaparam.attlist = + db.multimediaparam.role.attribute? + & db.common.attributes + & db.multimediaparam.name.attribute + & db.multimediaparam.value.attribute + & db.multimediaparam.valuetype.attribute? + db.multimediaparam = + + ## Application specific parameters for a media player + element multimediaparam { db.multimediaparam.attlist, empty } +} +div { + db.caption.role.attribute = attribute role { text } + db.caption.attlist = + db.caption.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caption.info = db._info.title.forbidden + db.caption = + + ## A caption + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:caption" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element caption { + db.caption.attlist, db.caption.info, db.all.blocks+ + } +} +div { + db.address.role.attribute = attribute role { text } + db.address.attlist = + db.address.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.address = + + ## A real-world address, generally a postal address + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:address" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element address { + db.address.attlist, + (db._text + | db.personname + | db.orgname + | db.pob + | db.street + | db.city + | db.state + | db.postcode + | db.country + | db.phone + | db.fax + | db.email + | db.uri + | db.otheraddr)* + } +} +div { + db.street.role.attribute = attribute role { text } + db.street.attlist = + db.street.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.street = + + ## A street address in an address + element street { db.street.attlist, db._text } +} +div { + db.pob.role.attribute = attribute role { text } + db.pob.attlist = + db.pob.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pob = + + ## A post office box in an address + element pob { db.pob.attlist, db._text } +} +div { + db.postcode.role.attribute = attribute role { text } + db.postcode.attlist = + db.postcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.postcode = + + ## A postal code in an address + element postcode { db.postcode.attlist, db._text } +} +div { + db.city.role.attribute = attribute role { text } + db.city.attlist = + db.city.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.city = + + ## The name of a city in an address + element city { db.city.attlist, db._text } +} +div { + db.state.role.attribute = attribute role { text } + db.state.attlist = + db.state.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.state = + + ## A state or province in an address + element state { db.state.attlist, db._text } +} +div { + db.country.role.attribute = attribute role { text } + db.country.attlist = + db.country.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.country = + + ## The name of a country + element country { db.country.attlist, db._text } +} +div { + db.phone.role.attribute = attribute role { text } + db.phone.attlist = + db.phone.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phone = + + ## A telephone number + element phone { db.phone.attlist, db._text } +} +div { + db.fax.role.attribute = attribute role { text } + db.fax.attlist = + db.fax.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.fax = + + ## A fax number + element fax { db.fax.attlist, db._text } +} +div { + db.otheraddr.role.attribute = attribute role { text } + db.otheraddr.attlist = + db.otheraddr.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.otheraddr = + + ## Uncategorized information in address + element otheraddr { db.otheraddr.attlist, db._text } +} +div { + db.affiliation.role.attribute = attribute role { text } + db.affiliation.attlist = + db.affiliation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.affiliation = + + ## The institutional affiliation of an individual + element affiliation { + db.affiliation.attlist, + db.shortaffil?, + db.jobtitle*, + (db.org? | (db.orgname?, db.orgdiv*, db.address*)) + } +} +div { + db.shortaffil.role.attribute = attribute role { text } + db.shortaffil.attlist = + db.shortaffil.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.shortaffil = + + ## A brief description of an affiliation + element shortaffil { db.shortaffil.attlist, db._text } +} +div { + db.jobtitle.role.attribute = attribute role { text } + db.jobtitle.attlist = + db.jobtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.jobtitle = + + ## The title of an individual in an organization + element jobtitle { db.jobtitle.attlist, db._text } +} +div { + db.orgname.class.enumeration = + + ## A consortium + "consortium" + | + ## A corporation + "corporation" + | + ## An informal organization + "informal" + | + ## A non-profit organization + "nonprofit" + db.orgname.class-enum.attribute = + + ## Specifies the nature of the organization + attribute class { db.orgname.class.enumeration } + db.orgname.class-other.attributes = + + ## Specifies the nature of the organization + attribute class { + + ## Indicates a non-standard organization class + "other" + }, + + ## Identifies the non-standard nature of the organization + attribute otherclass { text } + db.orgname.class.attribute = + db.orgname.class-enum.attribute | db.orgname.class-other.attributes + db.orgname.role.attribute = attribute role { text } + db.orgname.attlist = + db.orgname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.orgname.class.attribute? + db.orgname = + + ## The name of an organization + element orgname { db.orgname.attlist, db._text } +} +div { + db.orgdiv.role.attribute = attribute role { text } + db.orgdiv.attlist = + db.orgdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.orgdiv = + + ## A division of an organization + element orgdiv { db.orgdiv.attlist, db.all.inlines* } +} +div { + db.artpagenums.role.attribute = attribute role { text } + db.artpagenums.attlist = + db.artpagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.artpagenums = + + ## The page numbers of an article as published + element artpagenums { db.artpagenums.attlist, db._text } +} +div { + db.personname.role.attribute = attribute role { text } + db.personname.attlist = + db.personname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.personname = + + ## The personal name of an individual + element personname { + db.personname.attlist, + (db._text + | (db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername)+ + | (db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername)+) + } +} +db.person.author.contentmodel = + db.personname, + (db.personblurb + | db.affiliation + | db.email + | db.uri + | db.address + | db.contrib)* +db.org.author.contentmodel = + db.orgname, + (db.orgdiv + | db.affiliation + | db.email + | db.uri + | db.address + | db.contrib)* +db.credit.contentmodel = + db.person.author.contentmodel | db.org.author.contentmodel +div { + db.author.role.attribute = attribute role { text } + db.author.attlist = + db.author.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.author = + + ## The name of an individual author + element author { db.author.attlist, db.credit.contentmodel } +} +div { + db.authorgroup.role.attribute = attribute role { text } + db.authorgroup.attlist = + db.authorgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.authorgroup = + + ## Wrapper for author information when a document has multiple authors or collaborators + element authorgroup { + db.authorgroup.attlist, (db.author | db.editor | db.othercredit)+ + } +} +div { + db.collab.role.attribute = attribute role { text } + db.collab.attlist = + db.collab.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.collab = + + ## Identifies a collaborator + element collab { + db.collab.attlist, + (db.person | db.personname | db.org | db.orgname)+, + db.affiliation* + } +} +div { + db.authorinitials.role.attribute = attribute role { text } + db.authorinitials.attlist = + db.authorinitials.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.authorinitials = + + ## The initials or other short identifier for an author + element authorinitials { db.authorinitials.attlist, db._text } +} +div { + db.person.role.attribute = attribute role { text } + db.person.attlist = + db.person.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.person = + + ## A person and associated metadata + element person { + db.person.attlist, + db.personname, + (db.address + | db.affiliation + | db.email + | db.uri + | db.personblurb)* + } +} +div { + db.org.role.attribute = attribute role { text } + db.org.attlist = + db.org.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.org = + + ## An organization and associated metadata + element org { + db.org.attlist, + db.orgname, + (db.address | db.affiliation | db.email | db.uri | db.orgdiv)* + } +} +div { + db.confgroup.role.attribute = attribute role { text } + db.confgroup.attlist = + db.confgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confgroup = + + ## A wrapper for document meta-information about a conference + element confgroup { + db.confgroup.attlist, + (db.confdates + | db.conftitle + | db.confnum + | db.confsponsor + | db.address)* + } +} +div { + db.confdates.role.attribute = attribute role { text } + db.confdates.attlist = + db.confdates.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confdates = + + ## The dates of a conference for which a document was written + element confdates { db.confdates.attlist, db._text } +} +div { + db.conftitle.role.attribute = attribute role { text } + db.conftitle.attlist = + db.conftitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.conftitle = + + ## The title of a conference for which a document was written + element conftitle { db.conftitle.attlist, db._text } +} +div { + db.confnum.role.attribute = attribute role { text } + db.confnum.attlist = + db.confnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confnum = + + ## An identifier, frequently numerical, associated with a conference for which a document was written + element confnum { db.confnum.attlist, db._text } +} +div { + db.confsponsor.role.attribute = attribute role { text } + db.confsponsor.attlist = + db.confsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confsponsor = + + ## The sponsor of a conference for which a document was written + element confsponsor { db.confsponsor.attlist, db._text } +} +div { + db.contractnum.role.attribute = attribute role { text } + db.contractnum.attlist = + db.contractnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractnum = + + ## The contract number of a document + element contractnum { db.contractnum.attlist, db._text } +} +div { + db.contractsponsor.role.attribute = attribute role { text } + db.contractsponsor.attlist = + db.contractsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractsponsor = + + ## The sponsor of a contract + element contractsponsor { db.contractsponsor.attlist, db._text } +} +div { + db.copyright.role.attribute = attribute role { text } + db.copyright.attlist = + db.copyright.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.copyright = + + ## Copyright information about a document + element copyright { db.copyright.attlist, db.year+, db.holder* } +} +div { + db.year.role.attribute = attribute role { text } + db.year.attlist = + db.year.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.year = + + ## The year of publication of a document + element year { db.year.attlist, db._text } +} +div { + db.holder.role.attribute = attribute role { text } + db.holder.attlist = + db.holder.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.holder = + + ## The name of the individual or organization that holds a copyright + element holder { db.holder.attlist, db._text } +} +db.cover.contentmodel = + (db.para.blocks + | db.extension.blocks + | db.list.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.synopsis.blocks +div { + db.cover.role.attribute = attribute role { text } + db.cover.attlist = + db.cover.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.cover = + + ## Additional content for the cover of a publication + element cover { db.cover.attlist, db.cover.contentmodel+ } +} +db.date.contentmodel = + xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text +div { + db.date.role.attribute = attribute role { text } + db.date.attlist = + db.date.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.date = + + ## The date of publication or revision of a document + element date { db.date.attlist, db.date.contentmodel } +} +div { + db.edition.role.attribute = attribute role { text } + db.edition.attlist = + db.edition.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.edition = + + ## The name or number of an edition of a document + element edition { db.edition.attlist, db._text } +} +div { + db.editor.role.attribute = attribute role { text } + db.editor.attlist = + db.editor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.editor = + + ## The name of the editor of a document + element editor { db.editor.attlist, db.credit.contentmodel } +} +div { + db.biblioid.role.attribute = attribute role { text } + db.biblioid.attlist = + db.biblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.biblioid = + + ## An identifier for a document + element biblioid { db.biblioid.attlist, db._text } +} +div { + db.citebiblioid.role.attribute = attribute role { text } + db.citebiblioid.attlist = + db.citebiblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.citebiblioid = + + ## A citation of a bibliographic identifier + element citebiblioid { db.citebiblioid.attlist, db._text } +} +div { + db.bibliosource.role.attribute = attribute role { text } + db.bibliosource.attlist = + db.bibliosource.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.bibliosource = + + ## The source of a document + element bibliosource { db.bibliosource.attlist, db._text } +} +div { + db.bibliorelation.type.enumeration = + + ## The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + "hasformat" + | + ## The described resource includes the referenced resource either physically or logically + "haspart" + | + ## The described resource has a version, edition, or adaptation, namely, the referenced resource + "hasversion" + | + ## The described resource is the same intellectual content of the referenced resource, but presented in another format + "isformatof" + | + ## The described resource is a physical or logical part of the referenced resource + "ispartof" + | + ## The described resource is referenced, cited, or otherwise pointed to by the referenced resource + "isreferencedby" + | + ## The described resource is supplanted, displaced, or superceded by the referenced resource + "isreplacedby" + | + ## The described resource is required by the referenced resource, either physically or logically + "isrequiredby" + | + ## The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + "isversionof" + | + ## The described resource references, cites, or otherwise points to the referenced resource + "references" + | + ## The described resource supplants, displaces, or supersedes the referenced resource + "replaces" + | + ## The described resource requires the referenced resource to support its function, delivery, or coherence of content + "requires" + db.bibliorelation.type-enum.attribute = + + ## Identifies the type of relationship + attribute type { db.bibliorelation.type.enumeration }? + db.bibliorelation.type-other.attributes = + + ## Identifies the type of relationship + attribute type { + + ## The described resource has a non-standard relationship with the referenced resource + "othertype" + }?, + + ## A keyword that identififes the type of the non-standard relationship + attribute othertype { xsd:NMTOKEN } + db.bibliorelation.type.attribute = + db.bibliorelation.type-enum.attribute + | db.bibliorelation.type-other.attributes + db.bibliorelation.role.attribute = attribute role { text } + db.bibliorelation.attlist = + db.bibliorelation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + & db.bibliorelation.type.attribute + db.bibliorelation = + + ## The relationship of a document to another + element bibliorelation { db.bibliorelation.attlist, db._text } +} +div { + db.bibliocoverage.spacial.enumeration = + + ## The DCMI Point identifies a point in space using its geographic coordinates + "dcmipoint" + | + ## ISO 3166 Codes for the representation of names of countries + "iso3166" + | + ## The DCMI Box identifies a region of space using its geographic limits + "dcmibox" + | + ## The Getty Thesaurus of Geographic Names + "tgn" + db.bibliocoverage.spatial-enum.attribute = + + ## Specifies the type of spatial coverage + attribute spatial { db.bibliocoverage.spacial.enumeration }? + db.bibliocoverage.spatial-other.attributes = + + ## Specifies the type of spatial coverage + attribute spatial { + + ## Identifies a non-standard type of coverage + "otherspatial" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute otherspatial { xsd:NMTOKEN } + db.bibliocoverage.spatial.attribute = + db.bibliocoverage.spatial-enum.attribute + | db.bibliocoverage.spatial-other.attributes + db.bibliocoverage.temporal.enumeration = + + ## A specification of the limits of a time interval + "dcmiperiod" + | + ## W3C Encoding rules for dates and times—a profile based on ISO 8601 + "w3c-dtf" + db.bibliocoverage.temporal-enum.attribute = + + ## Specifies the type of temporal coverage + attribute temporal { db.bibliocoverage.temporal.enumeration }? + db.bibliocoverage.temporal-other.attributes = + + ## Specifies the type of temporal coverage + attribute temporal { + + ## Specifies a non-standard type of coverage + "othertemporal" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute othertemporal { xsd:NMTOKEN } + db.bibliocoverage.temporal.attribute = + db.bibliocoverage.temporal-enum.attribute + | db.bibliocoverage.temporal-other.attributes + db.bibliocoverage.coverage.attrib = + db.bibliocoverage.spatial.attribute + & db.bibliocoverage.temporal.attribute + db.bibliocoverage.role.attribute = attribute role { text } + db.bibliocoverage.attlist = + db.bibliocoverage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliocoverage.coverage.attrib + db.bibliocoverage = + + ## The spatial or temporal coverage of a document + element bibliocoverage { db.bibliocoverage.attlist, db._text } +} +div { + db.legalnotice.role.attribute = attribute role { text } + db.legalnotice.attlist = + db.legalnotice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.legalnotice.info = db._info.title.only + db.legalnotice = + + ## A statement of legal obligations or requirements + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:legalnotice" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element legalnotice { + db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+ + } +} +div { + db.othercredit.class.enumeration = + + ## A copy editor + "copyeditor" + | + ## A graphic designer + "graphicdesigner" + | + ## A production editor + "productioneditor" + | + ## A technical editor + "technicaleditor" + | + ## A translator + "translator" + | + ## An indexer + "indexer" + | + ## A proof-reader + "proofreader" + | + ## A cover designer + "coverdesigner" + | + ## An interior designer + "interiordesigner" + | + ## An illustrator + "illustrator" + | + ## A reviewer + "reviewer" + | + ## A typesetter + "typesetter" + | + ## A converter (a persons responsible for conversion, not an application) + "conversion" + db.othercredit.class-enum.attribute = + + ## Identifies the nature of the contributor + attribute class { db.othercredit.class.enumeration }? + db.othercredit.class-other.attribute = + + ## Identifies the nature of the non-standard contribution + attribute otherclass { xsd:NMTOKEN } + db.othercredit.class-other.attributes = + + ## Identifies the nature of the contributor + attribute class { + + ## Identifies a non-standard contribution + "other" + } + & db.othercredit.class-other.attribute + db.othercredit.class.attribute = + db.othercredit.class-enum.attribute + | db.othercredit.class-other.attributes + db.othercredit.role.attribute = attribute role { text } + db.othercredit.attlist = + db.othercredit.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.othercredit.class.attribute + db.othercredit = + + ## A person or entity, other than an author or editor, credited in a document + element othercredit { + db.othercredit.attlist, db.credit.contentmodel + } +} +div { + db.pagenums.role.attribute = attribute role { text } + db.pagenums.attlist = + db.pagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pagenums = + + ## The numbers of the pages in a book, for use in a bibliographic entry + element pagenums { db.pagenums.attlist, db._text } +} +div { + db.contrib.role.attribute = attribute role { text } + db.contrib.attlist = + db.contrib.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contrib = + + ## A summary of the contributions made to a document by a credited source + element contrib { db.contrib.attlist, db.all.inlines* } +} +div { + db.honorific.role.attribute = attribute role { text } + db.honorific.attlist = + db.honorific.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.honorific = + + ## The title of a person + element honorific { db.honorific.attlist, db._text } +} +div { + db.firstname.role.attribute = attribute role { text } + db.firstname.attlist = + db.firstname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.firstname = + + ## A given name of a person + element firstname { db.firstname.attlist, db._text } +} +div { + db.givenname.role.attribute = attribute role { text } + db.givenname.attlist = + db.givenname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.givenname = + + ## The given name of a person + element givenname { db.givenname.attlist, db._text } +} +div { + db.surname.role.attribute = attribute role { text } + db.surname.attlist = + db.surname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.surname = + + ## An inherited or family name; in western cultures the last name + element surname { db.surname.attlist, db._text } +} +div { + db.lineage.role.attribute = attribute role { text } + db.lineage.attlist = + db.lineage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineage = + + ## The portion of a person's name indicating a relationship to ancestors + element lineage { db.lineage.attlist, db._text } +} +div { + db.othername.role.attribute = attribute role { text } + db.othername.attlist = + db.othername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.othername = + + ## A component of a person's name that is not a first name, surname, or lineage + element othername { db.othername.attlist, db._text } +} +div { + db.printhistory.role.attribute = attribute role { text } + db.printhistory.attlist = + db.printhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.printhistory = + + ## The printing history of a document + element printhistory { db.printhistory.attlist, db.para.blocks+ } +} +div { + db.pubdate.role.attribute = attribute role { text } + db.pubdate.attlist = + db.pubdate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pubdate = + + ## The date of publication of a document + element pubdate { db.pubdate.attlist, db.date.contentmodel } +} +div { + db.publisher.role.attribute = attribute role { text } + db.publisher.attlist = + db.publisher.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publisher = + + ## The publisher of a document + element publisher { + db.publisher.attlist, db.publishername, db.address* + } +} +div { + db.publishername.role.attribute = attribute role { text } + db.publishername.attlist = + db.publishername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publishername = + + ## The name of the publisher of a document + element publishername { db.publishername.attlist, db._text } +} +div { + db.releaseinfo.role.attribute = attribute role { text } + db.releaseinfo.attlist = + db.releaseinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.releaseinfo = + + ## Information about a particular release of a document + element releaseinfo { db.releaseinfo.attlist, db._text } +} +div { + db.revhistory.role.attribute = attribute role { text } + db.revhistory.attlist = + db.revhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revhistory.info = db._info.title.only + db.revhistory = + + ## A history of the revisions to a document + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:revhistory" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element revhistory { + db.revhistory.attlist, db.revhistory.info, db.revision+ + } +} +div { + db.revision.role.attribute = attribute role { text } + db.revision.attlist = + db.revision.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revision = + + ## An entry describing a single revision in the history of the revisions to a document + element revision { + db.revision.attlist, + db.revnumber?, + db.date, + (db.authorinitials | db.author)*, + (db.revremark | db.revdescription)? + } +} +div { + db.revnumber.role.attribute = attribute role { text } + db.revnumber.attlist = + db.revnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revnumber = + + ## A document revision number + element revnumber { db.revnumber.attlist, db._text } +} +div { + db.revremark.role.attribute = attribute role { text } + db.revremark.attlist = + db.revremark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revremark = + + ## A description of a revision to a document + element revremark { db.revremark.attlist, db._text } +} +div { + db.revdescription.role.attribute = attribute role { text } + db.revdescription.attlist = + db.revdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revdescription = + + ## A extended description of a revision to a document + element revdescription { db.revdescription.attlist, db.all.blocks* } +} +div { + db.seriesvolnums.role.attribute = attribute role { text } + db.seriesvolnums.attlist = + db.seriesvolnums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seriesvolnums = + + ## Numbers of the volumes in a series of books + element seriesvolnums { db.seriesvolnums.attlist, db._text } +} +div { + db.volumenum.role.attribute = attribute role { text } + db.volumenum.attlist = + db.volumenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.volumenum = + + ## The volume number of a document in a set (as of books in a set or articles in a journal) + element volumenum { db.volumenum.attlist, db._text } +} +div { + db.issuenum.role.attribute = attribute role { text } + db.issuenum.attlist = + db.issuenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.issuenum = + + ## The number of an issue of a journal + element issuenum { db.issuenum.attlist, db._text } +} +div { + db.meta.role.attribute = attribute role { text } + db.meta.name.attribute = + + ## A name for the metadata element + attribute name { text } + db.meta.content.attribute = + + ## The metadata content + attribute content { text } + db.meta.attlist = + db.meta.name.attribute? + & db.meta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.meta.empty = + + ## A generic metadata element + element meta { db.meta.attlist, db.meta.content.attribute, empty } + db.meta.content = + + ## A generic metadata element + element meta { + db.meta.attlist, + (text | db._any | db.all.inlines | db.all.blocks)* + } + db.meta = db.meta.empty | db.meta.content +} +div { + db.package.role.attribute = attribute role { text } + db.package.attlist = + db.package.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.package = + + ## A software or application package + element package { db.package.attlist, db._text } +} +div { + db.email.role.attribute = attribute role { text } + db.email.attlist = + db.email.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.email = + + ## An email address + element email { db.email.attlist, db._text } +} +div { + db.lineannotation.role.attribute = attribute role { text } + db.lineannotation.attlist = + db.lineannotation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineannotation = + + ## A comment on a line in a verbatim listing + element lineannotation { db.lineannotation.attlist, db._text } +} +div { + db.parameter.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + db.parameter.class.attribute = + + ## Identifies the class of parameter + attribute class { db.parameter.class.enumeration } + db.parameter.role.attribute = attribute role { text } + db.parameter.attlist = + db.parameter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.parameter.class.attribute? + db.parameter = + + ## A value or a symbolic reference to a value + element parameter { db.parameter.attlist, db._text } +} +db.replaceable.inlines = db._text | db.co +div { + db.replaceable.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + | + ## A parameter + "parameter" + db.replaceable.class.attribute = + + ## Identifies the nature of the replaceable text + attribute class { db.replaceable.class.enumeration } + db.replaceable.role.attribute = attribute role { text } + db.replaceable.attlist = + db.replaceable.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.replaceable.class.attribute? + db.replaceable = + + ## Content that may or must be replaced by the user + element replaceable { + db.replaceable.attlist, db.replaceable.inlines* + } +} +div { + db.uri.type.attribute = + + ## Identifies the type of URI specified + attribute type { text }? + db.uri.role.attribute = attribute role { text } + db.uri.attlist = + db.uri.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.uri.type.attribute + db.uri = + + ## A Uniform Resource Identifier + element uri { db.uri.attlist, db._text } +} +div { + db.abbrev.role.attribute = attribute role { text } + db.abbrev.attlist = + db.abbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abbrev = + + ## An abbreviation, especially one followed by a period + element abbrev { + db.abbrev.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.acronym.role.attribute = attribute role { text } + db.acronym.attlist = + db.acronym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.acronym = + + ## An often pronounceable word made from the initial (or selected) letters of a name or phrase + element acronym { + db.acronym.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.citation.role.attribute = attribute role { text } + db.citation.attlist = + db.citation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citation = + + ## An inline bibliographic reference to another published work + element citation { db.citation.attlist, db.all.inlines* } +} +div { + db.citerefentry.role.attribute = attribute role { text } + db.citerefentry.attlist = + db.citerefentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citerefentry = + + ## A citation to a reference page + element citerefentry { + db.citerefentry.attlist, db.refentrytitle, db.manvolnum? + } +} +div { + db.refentrytitle.role.attribute = attribute role { text } + db.refentrytitle.attlist = + db.refentrytitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refentrytitle = + + ## The title of a reference page + element refentrytitle { db.refentrytitle.attlist, db.all.inlines* } +} +div { + db.manvolnum.role.attribute = attribute role { text } + db.manvolnum.attlist = + db.manvolnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.manvolnum = + + ## A reference volume number + element manvolnum { db.manvolnum.attlist, db._text } +} +div { + db.citetitle.pubwork.enumeration = db.pubwork.enumeration + db.citetitle.pubwork-enum.attribute = + + ## Identifies the nature of the publication being cited + attribute pubwork { db.citetitle.pubwork.enumeration } + db.citetitle.pubwork-other.attribute = + + ## Identifies the nature of some other kind of publication being cited + attribute otherpubwork { xsd:NMTOKEN } + db.citetitle.pubwork-other.attributes = + + ## Identifies that this is some other kind of publication being cited + attribute pubwork { + + ## Indicates that the published work is some 'other' kind. + "other" + } + & db.citetitle.pubwork-other.attribute + db.citetitle.pubwork.attribute = + db.citetitle.pubwork-enum.attribute + | db.citetitle.pubwork-other.attributes + db.citetitle.role.attribute = attribute role { text } + db.citetitle.attlist = + db.citetitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.citetitle.pubwork.attribute? + db.citetitle = + + ## The title of a cited work + element citetitle { db.citetitle.attlist, db.all.inlines* } +} +div { + db.emphasis.role.attribute = attribute role { text } + db.emphasis.attlist = + db.emphasis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.emphasis = + + ## Emphasized text + element emphasis { db.emphasis.attlist, db.all.inlines* } +} +div { + db._emphasis = + + ## A limited span of emphasized text + element emphasis { db.emphasis.attlist, db._text } +} +div { + db.foreignphrase.role.attribute = attribute role { text } + db.foreignphrase.attlist = + db.foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.foreignphrase = + + ## A word or phrase in a language other than the primary language of the document + element foreignphrase { + db.foreignphrase.attlist, (text | db.general.inlines)* + } +} +div { + db._foreignphrase.role.attribute = attribute role { text } + db._foreignphrase.attlist = + db._foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db._foreignphrase = + + ## A limited word or phrase in a language other than the primary language of the document + element foreignphrase { db._foreignphrase.attlist, db._text } +} +div { + db.phrase.role.attribute = attribute role { text } + db.phrase.attlist = + db.phrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phrase = + + ## A span of text + element phrase { db.phrase.attlist, db.all.inlines* } +} +div { + db._phrase = + + ## A limited span of text + element phrase { db.phrase.attlist, db._text } +} +div { + db.quote.role.attribute = attribute role { text } + db.quote.attlist = + db.quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.quote = + + ## An inline quotation + element quote { db.quote.attlist, db.all.inlines* } +} +div { + db._quote.role.attribute = attribute role { text } + db._quote.attlist = + db._quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db._quote = + + ## A limited inline quotation + element quote { db._quote.attlist, db._text } +} +div { + db.subscript.role.attribute = attribute role { text } + db.subscript.attlist = + db.subscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subscript = + + ## A subscript (as in H₂O, the molecular formula for water) + element subscript { db.subscript.attlist, db._text } +} +div { + db.superscript.role.attribute = attribute role { text } + db.superscript.attlist = + db.superscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.superscript = + + ## A superscript (as in x², the mathematical notation for x multiplied by itself) + element superscript { db.superscript.attlist, db._text } +} +div { + db.trademark.class.enumeration = + + ## A copyright + "copyright" + | + ## A registered copyright + "registered" + | + ## A service + "service" + | + ## A trademark + "trade" + db.trademark.class.attribute = + + ## Identifies the class of trade mark + attribute class { db.trademark.class.enumeration } + db.trademark.role.attribute = attribute role { text } + db.trademark.attlist = + db.trademark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.trademark.class.attribute? + db.trademark = + + ## A trademark + element trademark { db.trademark.attlist, db._text } +} +div { + db.wordasword.role.attribute = attribute role { text } + db.wordasword.attlist = + db.wordasword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.wordasword = + + ## A word meant specifically as a word and not representing anything else + element wordasword { db.wordasword.attlist, db._text } +} +div { + db.footnoteref.role.attribute = attribute role { text } + db.footnoteref.label.attribute = db.label.attribute + db.footnoteref.attlist = + db.footnoteref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.footnoteref.label.attribute? + db.footnoteref = + + ## A cross reference to a footnote (a footnote mark) + [ + s:pattern [ + s:title [ "Footnote reference type constraint" ] + s:rule [ + context = "db:footnoteref" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on footnoteref must point to a footnote." + ] + ] + ] + ] + element footnoteref { db.footnoteref.attlist, empty } +} +div { + db.xref.role.attribute = attribute role { text } + db.xref.xrefstyle.attribute = db.xrefstyle.attribute + db.xref.endterm.attribute = db.endterm.attribute + db.xref.attlist = + db.xref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.xref.xrefstyle.attribute? + & db.xref.endterm.attribute? + db.xref = + + ## A cross reference to another part of the document + element xref { db.xref.attlist, empty } +} +div { + db.link.role.attribute = attribute role { text } + db.link.xrefstyle.attribute = db.xrefstyle.attribute + db.link.endterm.attribute = db.endterm.attribute + db.link.attlist = + db.link.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.link.xrefstyle.attribute? + & db.link.endterm.attribute? + db.link = + + ## A hypertext link + element link { db.link.attlist, db.all.inlines* } +} +div { + db.olink.role.attribute = attribute role { text } + db.olink.xrefstyle.attribute = db.xrefstyle.attribute + db.olink.localinfo.attribute = + + ## Holds additional information that may be used by the application when resolving the link + attribute localinfo { text } + db.olink.targetdoc.attribute = + + ## Specifies the URI of the document in which the link target appears + attribute targetdoc { xsd:anyURI } + db.olink.targetptr.attribute = + + ## Specifies the location of the link target in the document + attribute targetptr { text } + db.olink.type.attribute = + + ## Identifies application-specific customization of the link behavior + attribute type { text } + db.olink.attlist = + db.common.attributes + & db.olink.targetdoc.attribute? + & db.olink.role.attribute? + & db.olink.xrefstyle.attribute? + & db.olink.localinfo.attribute? + & db.olink.targetptr.attribute? + & db.olink.type.attribute? + db.olink = + + ## A link that addresses its target indirectly + element olink { db.olink.attlist, db.all.inlines* } +} +div { + db.anchor.role.attribute = attribute role { text } + db.anchor.attlist = + db.anchor.role.attribute? & db.common.idreq.attributes + db.anchor = + + ## A spot in the document + element anchor { db.anchor.attlist, empty } +} +div { + db.alt.role.attribute = attribute role { text } + db.alt.attlist = db.alt.role.attribute? & db.common.attributes + db.alt = + + ## A text-only annotation, often used for accessibility + element alt { db.alt.attlist, (text | db.inlinemediaobject)* } +} +div { + db.formalgroup.fgstyle.attribute = + + ## Holds style of formalgroup - this can be used to specify desired layout and positioning of subfigures + attribute fgstyle { text } + db.formalgroup.role.attribute = attribute role { text } + db.formalgroup.pgwide.attribute = db.pgwide.attribute + db.formalgroup.floatstyle.attribute = db.floatstyle.attribute + db.formalgroup.attlist = + db.formalgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.formalgroup.floatstyle.attribute? + & db.formalgroup.pgwide.attribute? + & db.formalgroup.fgstyle.attribute? + db.formalgroup.info = db._info.title.onlyreq + db.formalgroup = + + ## A group of formal objects, for example subfigures + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:formalgroup" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element formalgroup { + db.formalgroup.attlist, + db.formalgroup.info, + (db.figure+ | db.table+ | db.example+ | db.equation+) + } +} +db.status.attribute = + + ## Identifies the editorial or publication status of the element on which it occurs + attribute status { text } +db.toplevel.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | (db.sect1+, db.simplesect*) + | db.refentry+ +db.toplevel.blocks.or.sections = + (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections +db.recursive.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | db.refentry+ +db.recursive.blocks.or.sections = + (db.all.blocks+, db.recursive.sections?) | db.recursive.sections +db.divisions = db.part | db.reference +db.components = + db.dedication + | db.acknowledgements + | db.preface + | db.chapter + | db.appendix + | db.article + | db.colophon +db.navigation.components = + notAllowed | db.glossary | db.bibliography | db.index | db.toc +db.component.contentmodel = + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* +db.setindex.components = notAllowed | db.setindex +db.toc.components = notAllowed | db.toc +db.set.components = db.set | db.book | db.article +div { + db.set.status.attribute = db.status.attribute + db.set.role.attribute = attribute role { text } + db.set.attlist = + db.set.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.set.status.attribute? + db.set.info = db._info.title.req + db.set = + + ## A collection of books + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:set" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element set { + db.set.attlist, + db.set.info, + db.toc.components?, + db.set.components+, + db.setindex.components? + } +} +db.book.components = + (db.navigation.components | db.components | db.divisions)* | db.topic* +div { + db.book.status.attribute = db.status.attribute + db.book.role.attribute = attribute role { text } + db.book.attlist = + db.book.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.book.status.attribute? + db.book.info = db._info + db.book = + + ## A book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:book" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element book { db.book.attlist, db.book.info, db.book.components } +} +div { + db.dedication.status.attribute = db.status.attribute + db.dedication.role.attribute = attribute role { text } + db.dedication.attlist = + db.dedication.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.dedication.status.attribute? + db.dedication.info = db._info + db.dedication = + + ## The dedication of a book or other component + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:dedication" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element dedication { + db.dedication.attlist, db.dedication.info, db.all.blocks+ + } +} +div { + db.acknowledgements.status.attribute = db.status.attribute + db.acknowledgements.role.attribute = attribute role { text } + db.acknowledgements.attlist = + db.acknowledgements.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.acknowledgements.status.attribute? + db.acknowledgements.info = db._info + db.acknowledgements = + + ## Acknowledgements of a book or other component + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:acknowledgements" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element acknowledgements { + db.acknowledgements.attlist, + db.acknowledgements.info, + db.all.blocks+ + } +} +div { + db.colophon.status.attribute = db.status.attribute + db.colophon.role.attribute = attribute role { text } + db.colophon.attlist = + db.colophon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.colophon.status.attribute? + db.colophon.info = db._info + db.colophon = + + ## Text at the back of a book describing facts about its production + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:colophon" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element colophon { + db.colophon.attlist, + db.colophon.info, + ((db.all.blocks+, db.simplesect*) + | (db.all.blocks*, db.simplesect+)) + } +} +db.appendix.contentmodel = db.component.contentmodel | db.topic+ +div { + db.appendix.status.attribute = db.status.attribute + db.appendix.role.attribute = attribute role { text } + db.appendix.attlist = + db.appendix.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.appendix.status.attribute? + db.appendix.info = db._info.title.req + db.appendix = + + ## An appendix in a book or article + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:appendix" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element appendix { + db.appendix.attlist, db.appendix.info, db.appendix.contentmodel? + } +} +db.chapter.contentmodel = db.component.contentmodel | db.topic+ +div { + db.chapter.status.attribute = db.status.attribute + db.chapter.role.attribute = attribute role { text } + db.chapter.attlist = + db.chapter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.chapter.status.attribute? + db.chapter.info = db._info.title.req + db.chapter = + + ## A chapter, as of a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:chapter" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element chapter { + db.chapter.attlist, db.chapter.info, db.chapter.contentmodel? + } +} +db.part.components = + (db.navigation.components | db.components) + | (db.refentry | db.reference) +db.part.contentmodel = db.part.components+ | db.topic+ +div { + db.part.status.attribute = db.status.attribute + db.part.role.attribute = attribute role { text } + db.part.attlist = + db.part.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.part.status.attribute? + db.part.info = db._info.title.req + db.part = + + ## A division in a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:part" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element part { + db.part.attlist, + db.part.info, + db.partintro?, + db.part.contentmodel? + } +} +div { + db.preface.status.attribute = db.status.attribute + db.preface.role.attribute = attribute role { text } + db.preface.attlist = + db.preface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.preface.status.attribute? + db.preface.info = db._info.title.req + db.preface = + + ## Introductory matter preceding the first chapter of a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:preface" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element preface { + db.preface.attlist, db.preface.info, db.component.contentmodel? + } +} +div { + db.partintro.status.attribute = db.status.attribute + db.partintro.role.attribute = attribute role { text } + db.partintro.attlist = + db.partintro.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.partintro.status.attribute? + db.partintro.info = db._info + db.partintro = + + ## An introduction to the contents of a part + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:partintro" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element partintro { + db.partintro.attlist, + db.partintro.info, + db.toplevel.blocks.or.sections? + } +} +div { + db.section.status.attribute = db.status.attribute + db.section.class.enumeration = + + ## A section of legal obligations or requirements + "legal" + db.section.class-enum.attribute = + + ## Identifies the nature of the section + attribute class { db.section.class.enumeration } + db.section.class-other.attribute = + + ## Identifies a non-standard section class + attribute otherclass { xsd:NMTOKEN } + db.section.class-other.attributes = + + ## Indicates that a non-standard section class is applied + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.section.class-other.attribute + db.section.class.attribute = + db.section.class-enum.attribute | db.section.class-other.attributes + db.section.role.attribute = attribute role { text } + db.section.attlist = + db.section.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.section.status.attribute? + & db.section.class.attribute? + db.section.info = db._info.title.req + db.section = + + ## A recursive section + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:section" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element section { + db.section.attlist, + db.section.info, + db.navigation.components*, + db.recursive.blocks.or.sections?, + db.navigation.components* + } +} +div { + db.simplesect.status.attribute = db.status.attribute + db.simplesect.role.attribute = attribute role { text } + db.simplesect.attlist = + db.simplesect.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.simplesect.status.attribute? + db.simplesect.info = db._info.title.req + db.simplesect = + + ## A section of a document with no subdivisions + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:simplesect" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element simplesect { + db.simplesect.attlist, db.simplesect.info, db.all.blocks* + } +} +db.article.components = db.toplevel.sections +db.article.navcomponents = + db.navigation.components + | db.acknowledgements + | db.dedication + | db.appendix + | db.colophon +div { + db.article.status.attribute = db.status.attribute + db.article.class.enumeration = + + ## A collection of frequently asked questions. + "faq" + | + ## An article in a journal or other periodical. + "journalarticle" + | + ## A description of a product. + "productsheet" + | + ## A specification. + "specification" + | + ## A technical report. + "techreport" + | + ## A white paper. + "whitepaper" + db.article.class-enum.attribute = + + ## Identifies the nature of the article + attribute class { db.article.class.enumeration } + db.article.class-other.attribute = + + ## Identifies the nature of the non-standard article + attribute otherclass { xsd:NMTOKEN } + db.article.class-other.attributes = + + ## Identifies the nature of the article + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.article.class-other.attribute + db.article.class.attribute = + db.article.class-enum.attribute | db.article.class-other.attributes + db.article.role.attribute = attribute role { text } + db.article.attlist = + db.article.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.article.status.attribute? + & db.article.class.attribute? + db.article.info = db._info.title.req + db.article = + + ## An article + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:article" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element article { + db.article.attlist, + db.article.info, + db.article.navcomponents*, + ((db.all.blocks+, db.article.components?) + | db.article.components), + db.article.navcomponents* + } +} +db.annotations.attribute = + + ## Identifies one or more annotations that apply to this element + attribute annotations { text } +div { + db.annotation.role.attribute = attribute role { text } + db.annotation.annotates.attribute = + + ## Identifies one or more elements to which this annotation applies + attribute annotates { text } + db.annotation.attlist = + db.annotation.role.attribute? + & db.annotation.annotates.attribute? + & db.common.attributes + db.annotation.info = db._info.title.only + db.annotation = + + ## An annotation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:annotation" + s:assert [ + test = "not(.//db:annotation)" + "annotation must not occur among the children or descendants of annotation" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:annotation" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element annotation { + db.annotation.attlist, db.annotation.info, db.all.blocks+ + } +} +db.xlink.extended.type.attribute = + + ## Identifies the XLink extended link type + [ + s:pattern [ + s:title [ "XLink extended placement" ] + s:rule [ + context = "*[@xlink:type='extended']" + s:assert [ + test = "not(parent::*[@xlink:type='extended'])" + "An XLink extended type element may not occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink extended link type + "extended" + } +db.xlink.locator.type.attribute = + + ## Identifies the XLink locator link type + [ + s:pattern [ + s:title [ "XLink locator placement" ] + s:rule [ + context = "*[@xlink:type='locator']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink locator type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink locator link type + "locator" + } +db.xlink.arc.type.attribute = + + ## Identifies the XLink arc link type + [ + s:pattern [ + s:title [ "XLink arc placement" ] + s:rule [ + context = "*[@xlink:type='arc']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink arc type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink arc link type + "arc" + } +db.xlink.resource.type.attribute = + + ## Identifies the XLink resource link type + [ + s:pattern [ + s:title [ "XLink resource placement" ] + s:rule [ + context = "*[@xlink:type='resource']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink resource type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink resource link type + "resource" + } +db.xlink.title.type.attribute = + + ## Identifies the XLink title link type + [ + s:pattern [ + s:title [ "XLink title placement" ] + s:rule [ + context = "*[@xlink:type='title']" + s:assert [ + test = + "parent::*[@xlink:type='extended'] or parent::*[@xlink:type='locator'] or parent::*[@xlink:type='arc']" + "An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink title link type + "title" + } +db.xlink.extended.link.attributes = + db.xlink.extended.type.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? +db.xlink.locator.link.attributes = + db.xlink.locator.type.attribute + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? +db.xlink.arc.link.attributes = + db.xlink.arc.type.attribute + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? +db.xlink.resource.link.attributes = + db.xlink.resource.type.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? +db.xlink.title.link.attributes = db.xlink.title.type.attribute +db.xlink.from.attribute = + + ## Specifies the XLink traversal-from + attribute xlink:from { xsd:NMTOKEN } +db.xlink.label.attribute = + + ## Specifies the XLink label + attribute xlink:label { xsd:NMTOKEN } +db.xlink.to.attribute = + + ## Specifies the XLink traversal-to + attribute xlink:to { xsd:NMTOKEN } +div { + db.extendedlink.role.attribute = attribute role { text } + db.extendedlink.attlist = + db.extendedlink.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "extended" ] + attribute xlink:type { + + ## An XLink extended link + "extended" + }? + & db.xlink.role.attribute? + & db.xlink.title.attribute? + db.extendedlink = + + ## An XLink extended link + element extendedlink { + db.extendedlink.attlist, (db.locator | db.arc | db.link)+ + } +} +div { + db.locator.role.attribute = attribute role { text } + db.locator.attlist = + db.locator.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "locator" ] + attribute xlink:type { + + ## An XLink locator link + "locator" + }? + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? + db.locator = + + ## An XLink locator in an extendedlink + element locator { db.locator.attlist, empty } +} +div { + db.arc.role.attribute = attribute role { text } + db.arc.attlist = + db.arc.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "arc" ] + attribute xlink:type { + + ## An XLink arc link + "arc" + }? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? + db.arc = + + ## An XLink arc in an extendedlink + element arc { db.arc.attlist, empty } +} +db.sect1.sections = + ((db.sect2+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect1.status.attribute = db.status.attribute + db.sect1.class.attribute = db.section.class.attribute + db.sect1.role.attribute = attribute role { text } + db.sect1.attlist = + db.sect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect1.status.attribute? + & db.sect1.class.attribute? + db.sect1.info = db._info.title.req + db.sect1 = + + ## A top-level section of document + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect1" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect1 { + db.sect1.attlist, + db.sect1.info, + db.navigation.components*, + ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections)?, + db.navigation.components* + } +} +db.sect2.sections = + ((db.sect3+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect2.status.attribute = db.status.attribute + db.sect2.class.attribute = db.section.class.attribute + db.sect2.role.attribute = attribute role { text } + db.sect2.attlist = + db.sect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect2.status.attribute? + & db.sect2.class.attribute? + db.sect2.info = db._info.title.req + db.sect2 = + + ## A subsection within a sect1 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect2" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect2 { + db.sect2.attlist, + db.sect2.info, + db.navigation.components*, + ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections)?, + db.navigation.components* + } +} +db.sect3.sections = + ((db.sect4+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect3.status.attribute = db.status.attribute + db.sect3.class.attribute = db.section.class.attribute + db.sect3.role.attribute = attribute role { text } + db.sect3.attlist = + db.sect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect3.status.attribute? + & db.sect3.class.attribute? + db.sect3.info = db._info.title.req + db.sect3 = + + ## A subsection within a sect2 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect3" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect3 { + db.sect3.attlist, + db.sect3.info, + db.navigation.components*, + ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections)?, + db.navigation.components* + } +} +db.sect4.sections = + ((db.sect5+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect4.status.attribute = db.status.attribute + db.sect4.class.attribute = db.section.class.attribute + db.sect4.role.attribute = attribute role { text } + db.sect4.attlist = + db.sect4.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect4.status.attribute? + & db.sect4.class.attribute? + db.sect4.info = db._info.title.req + db.sect4 = + + ## A subsection within a sect3 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect4" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect4 { + db.sect4.attlist, + db.sect4.info, + db.navigation.components*, + ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections)?, + db.navigation.components* + } +} +db.sect5.sections = db.simplesect+ | db.refentry+ +div { + db.sect5.status.attribute = db.status.attribute + db.sect5.class.attribute = db.section.class.attribute + db.sect5.role.attribute = attribute role { text } + db.sect5.attlist = + db.sect5.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect5.status.attribute? + & db.sect5.class.attribute? + db.sect5.info = db._info.title.req + db.sect5 = + + ## A subsection within a sect4 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect5" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect5 { + db.sect5.attlist, + db.sect5.info, + db.navigation.components*, + ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections)?, + db.navigation.components* + } +} +db.toplevel.refsection = db.refsection+ | db.refsect1+ +db.secondlevel.refsection = db.refsection+ | db.refsect2+ +db.reference.components = db.refentry +div { + db.reference.status.attribute = db.status.attribute + db.reference.role.attribute = attribute role { text } + db.reference.attlist = + db.reference.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.reference.status.attribute? + & db.label.attribute? + db.reference.info = db._info.title.req + db.reference = + + ## A collection of reference entries + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:reference" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element reference { + db.reference.attlist, + db.reference.info, + db.partintro?, + db.reference.components* + } +} +div { + db.refentry.status.attribute = db.status.attribute + db.refentry.role.attribute = attribute role { text } + db.refentry.attlist = + db.refentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refentry.status.attribute? + & db.label.attribute? + db.refentry.info = db._info.title.forbidden + db.refentry = + + ## A reference page (originally a UNIX man-style reference page) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refentry" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refentry { + db.refentry.attlist, + db.indexterm*, + db.refentry.info, + db.refmeta?, + db.refnamediv+, + db.refsynopsisdiv?, + db.toplevel.refsection + } +} +div { + db.refmeta.role.attribute = attribute role { text } + db.refmeta.attlist = + db.refmeta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refmeta = + + ## Meta-information for a reference entry + element refmeta { + db.refmeta.attlist, + db.indexterm*, + db.refentrytitle, + db.manvolnum?, + db.refmiscinfo*, + db.indexterm* + } +} +db.refmiscinfo.class.enumeration = + + ## The name of the software product or component to which this topic applies + "source" + | + ## The version of the software product or component to which this topic applies + "version" + | + ## The section title of the reference page (e.g., User Commands) + "manual" + | + ## The section title of the reference page (believed synonymous with "manual" but in wide use) + "sectdesc" + | + ## The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + "software" +db.refmiscinfo.class-enum.attribute = + + ## Identifies the kind of miscellaneous information + attribute class { db.refmiscinfo.class.enumeration }? +db.refmiscinfo.class-other.attribute = + + ## Identifies the nature of non-standard miscellaneous information + attribute otherclass { text } +db.refmiscinfo.class-other.attributes = + + ## Identifies the kind of miscellaneious information + attribute class { + + ## Indicates that the information is some 'other' kind. + "other" + } + & db.refmiscinfo.class-other.attribute +db.refmiscinfo.class.attribute = + db.refmiscinfo.class-enum.attribute + | db.refmiscinfo.class-other.attributes +div { + db.refmiscinfo.role.attribute = attribute role { text } + db.refmiscinfo.attlist = + db.refmiscinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refmiscinfo.class.attribute? + db.refmiscinfo = + + ## Meta-information for a reference entry other than the title and volume number + element refmiscinfo { db.refmiscinfo.attlist, db._text } +} +div { + db.refnamediv.role.attribute = attribute role { text } + db.refnamediv.attlist = + db.refnamediv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refnamediv = + + ## The name, purpose, and classification of a reference page + element refnamediv { + db.refnamediv.attlist, + db.refdescriptor?, + db.refname+, + db.refpurpose, + db.refclass* + } +} +div { + db.refdescriptor.role.attribute = attribute role { text } + db.refdescriptor.attlist = + db.refdescriptor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refdescriptor = + + ## A description of the topic of a reference page + element refdescriptor { db.refdescriptor.attlist, db.all.inlines* } +} +div { + db.refname.role.attribute = attribute role { text } + db.refname.attlist = + db.refname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refname = + + ## The name of (one of) the subject(s) of a reference page + element refname { db.refname.attlist, db.all.inlines* } +} +div { + db.refpurpose.role.attribute = attribute role { text } + db.refpurpose.attlist = + db.refpurpose.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refpurpose = + + ## A short (one sentence) synopsis of the topic of a reference page + element refpurpose { db.refpurpose.attlist, db.all.inlines* } +} +div { + db.refclass.role.attribute = attribute role { text } + db.refclass.attlist = + db.refclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refclass = + + ## The scope or other indication of applicability of a reference entry + element refclass { db.refclass.attlist, (text | db.application)* } +} +div { + db.refsynopsisdiv.role.attribute = attribute role { text } + db.refsynopsisdiv.attlist = + db.refsynopsisdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refsynopsisdiv.info = db._info + db.refsynopsisdiv = + + ## A syntactic synopsis of the subject of the reference page + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsynopsisdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsynopsisdiv { + db.refsynopsisdiv.attlist, + db.refsynopsisdiv.info, + ((db.all.blocks+, db.secondlevel.refsection?) + | db.secondlevel.refsection) + } +} +div { + db.refsection.status.attribute = db.status.attribute + db.refsection.role.attribute = attribute role { text } + db.refsection.attlist = + db.refsection.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refsection.status.attribute? + & db.label.attribute? + db.refsection.info = db._info.title.req + db.refsection = + + ## A recursive section in a refentry + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsection" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsection { + db.refsection.attlist, + db.refsection.info, + ((db.all.blocks+, db.refsection*) | db.refsection+) + } +} +db.refsect1.sections = db.refsect2+ +div { + db.refsect1.status.attribute = db.status.attribute + db.refsect1.role.attribute = attribute role { text } + db.refsect1.attlist = + db.refsect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect1.status.attribute? + db.refsect1.info = db._info.title.req + db.refsect1 = + + ## A major subsection of a reference entry + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsect1" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsect1 { + db.refsect1.attlist, + db.refsect1.info, + ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections) + } +} +db.refsect2.sections = db.refsect3+ +div { + db.refsect2.status.attribute = db.status.attribute + db.refsect2.role.attribute = attribute role { text } + db.refsect2.attlist = + db.refsect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect2.status.attribute? + db.refsect2.info = db._info.title.req + db.refsect2 = + + ## A subsection of a refsect1 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsect2" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsect2 { + db.refsect2.attlist, + db.refsect2.info, + ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections) + } +} +div { + db.refsect3.status.attribute = db.status.attribute + db.refsect3.role.attribute = attribute role { text } + db.refsect3.attlist = + db.refsect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect3.status.attribute? + db.refsect3.info = db._info.title.req + db.refsect3 = + + ## A subsection of a refsect2 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsect3" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsect3 { + db.refsect3.attlist, db.refsect3.info, db.all.blocks+ + } +} +db.glossary.inlines = + db.firstterm | db.glossterm | db._firstterm | db._glossterm +db.baseform.attribute = + + ## Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + attribute baseform { text }? +div { + db.glosslist.role.attribute = attribute role { text } + db.glosslist.attlist = + db.glosslist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.glosslist.info = db._info.title.only + db.glosslist = + + ## A wrapper for a list of glossary entries + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:glosslist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element glosslist { + db.glosslist.attlist, + db.glosslist.info?, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.glossentry.role.attribute = attribute role { text } + db.glossentry.sortas.attribute = + + ## Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + attribute sortas { text } + db.glossentry.attlist = + db.glossentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossentry.sortas.attribute? + db.glossentry = + + ## An entry in a glossary or glosslist + element glossentry { + db.glossentry.attlist, + db.glossterm, + db.acronym?, + db.abbrev?, + db.indexterm*, + (db.glosssee | db.glossdef+) + } +} +div { + db.glossdef.role.attribute = attribute role { text } + db.glossdef.subject.attribute = + + ## Specifies a list of keywords for the definition + attribute subject { text } + db.glossdef.attlist = + db.glossdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossdef.subject.attribute? + db.glossdef = + + ## A definition in a glossentry + element glossdef { + db.glossdef.attlist, db.all.blocks+, db.glossseealso* + } +} +div { + db.glosssee.role.attribute = attribute role { text } + db.glosssee.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glosssee.attlist = + db.glosssee.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glosssee.otherterm.attribute? + db.glosssee = + + ## A cross-reference from one glossentry + ## to another + [ + s:pattern [ + s:title [ "Glosssary 'see' type constraint" ] + s:rule [ + context = "db:glosssee[@otherterm]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glosssee must point to a glossentry." + ] + ] + ] + ] + element glosssee { db.glosssee.attlist, db.all.inlines* } +} +div { + db.glossseealso.role.attribute = attribute role { text } + db.glossseealso.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glossseealso.attlist = + db.glossseealso.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossseealso.otherterm.attribute? + db.glossseealso = + + ## A cross-reference from one glossentry to another + [ + s:pattern [ + s:title [ "Glossary 'seealso' type constraint" ] + s:rule [ + context = "db:glossseealso[@otherterm]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glossseealso must point to a glossentry." + ] + ] + ] + ] + element glossseealso { db.glossseealso.attlist, db.all.inlines* } +} +div { + db.firstterm.role.attribute = attribute role { text } + db.firstterm.attlist = + db.firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.firstterm = + + ## The first occurrence of a term + [ + s:pattern [ + s:title [ "Glossary 'firstterm' type constraint" ] + s:rule [ + context = "db:firstterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + ] + ] + ] + element firstterm { db.firstterm.attlist, db.all.inlines* } +} +div { + db._firstterm.role.attribute = attribute role { text } + db._firstterm.attlist = + db._firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db._firstterm = + + ## The first occurrence of a term, with limited content + [ + s:pattern [ + s:title [ "Glossary 'firstterm' type constraint" ] + s:rule [ + context = "db:firstterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + ] + ] + ] + element firstterm { db._firstterm.attlist, db._text } +} +div { + db.glossterm.role.attribute = attribute role { text } + db.glossterm.attlist = + db.glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.glossterm = + + ## A glossary term + [ + s:pattern [ + s:title [ "Glossary 'glossterm' type constraint" ] + s:rule [ + context = "db:glossterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + ] + ] + ] + element glossterm { db.glossterm.attlist, db.all.inlines* } +} +div { + db._glossterm.role.attribute = attribute role { text } + db._glossterm.attlist = + db._glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db._glossterm = + + ## A glossary term + [ + s:pattern [ + s:title [ "Glossary 'glossterm' type constraint" ] + s:rule [ + context = "db:glossterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + ] + ] + ] + element glossterm { db._glossterm.attlist, db._text } +} +div { + db.glossary.status.attribute = db.status.attribute + db.glossary.role.attribute = attribute role { text } + db.glossary.attlist = + db.glossary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossary.status.attribute? + db.glossary.info = db._info + db.glossary = + + ## A glossary + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:glossary" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element glossary { + db.glossary.attlist, + db.glossary.info, + db.all.blocks*, + (db.glossdiv* | db.glossentry*), + db.bibliography? + } +} +div { + db.glossdiv.status.attribute = db.status.attribute + db.glossdiv.role.attribute = attribute role { text } + db.glossdiv.attlist = + db.glossdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossdiv.status.attribute? + db.glossdiv.info = db._info.title.req + db.glossdiv = + + ## A division in a glossary + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:glossdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element glossdiv { + db.glossdiv.attlist, + db.glossdiv.info, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.termdef.role.attribute = attribute role { text } + db.termdef.attlist = + db.termdef.role.attribute? + & db.glossentry.sortas.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.termdef = + + ## An inline definition of a term + [ + s:pattern [ + s:title [ "Glossary term definition constraint" ] + s:rule [ + context = "db:termdef" + s:assert [ + test = "count(db:firstterm) = 1" + "A termdef must contain exactly one firstterm" + ] + ] + ] + ] + element termdef { db.termdef.attlist, db.all.inlines* } +} +db.relation.attribute = + + ## Identifies the relationship between the bibliographic elemnts + attribute relation { text } +div { + db.biblioentry.role.attribute = attribute role { text } + db.biblioentry.pubwork.attribute = db.biblio.pubwork.attribute + db.biblioentry.attlist = + db.biblioentry.role.attribute? + & db.biblioentry.pubwork.attribute? + & db.common.attributes + & db.common.linking.attributes + db.biblioentry = + + ## A raw entry in a bibliography + element biblioentry { + db.biblioentry.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomixed.role.attribute = attribute role { text } + db.bibliomixed.pubwork.attribute = db.biblio.pubwork.attribute + db.bibliomixed.attlist = + db.bibliomixed.role.attribute? + & db.bibliomixed.pubwork.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomixed = + + ## A cooked entry in a bibliography + element bibliomixed { + db.bibliomixed.attlist, + ((db._text + | db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)* + | (db._text + | db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)*) + } +} +div { + db.biblioset.relation.attribute = db.relation.attribute + db.biblioset.role.attribute = attribute role { text } + db.biblioset.attlist = + db.biblioset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblioset.relation.attribute? + db.biblioset = + + ## A raw container for related bibliographic information + element biblioset { + db.biblioset.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomset.relation.attribute = db.relation.attribute + db.bibliomset.role.attribute = attribute role { text } + db.bibliomset.attlist = + db.bibliomset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliomset.relation.attribute? + db.bibliomset = + + ## A cooked container for related bibliographic information + element bibliomset { + db.bibliomset.attlist, + ((db._text + | db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)* + | (db._text + | db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)*) + } +} +div { + db.bibliomisc.role.attribute = attribute role { text } + db.bibliomisc.attlist = + db.bibliomisc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomisc = + + ## Untyped bibliographic information + element bibliomisc { db.bibliomisc.attlist, db._text } +} +div { + db.bibliography.status.attrib = db.status.attribute + db.bibliography.role.attribute = attribute role { text } + db.bibliography.attlist = + db.bibliography.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliography.status.attrib? + db.bibliography.info = db._info + db.bibliography = + + ## A bibliography + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:bibliography" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element bibliography { + db.bibliography.attlist, + db.bibliography.info, + db.all.blocks*, + (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+) + } +} +div { + db.bibliodiv.status.attrib = db.status.attribute + db.bibliodiv.role.attribute = attribute role { text } + db.bibliodiv.attlist = + db.bibliodiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliodiv.status.attrib? + db.bibliodiv.info = db._info.title.req + db.bibliodiv = + + ## A section of a bibliography + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:bibliodiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element bibliodiv { + db.bibliodiv.attlist, + db.bibliodiv.info, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.bibliolist.role.attribute = attribute role { text } + db.bibliolist.attlist = + db.bibliolist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliolist.info = db._info.title.only + db.bibliolist = + + ## A wrapper for a list of bibliography entries + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:bibliolist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element bibliolist { + db.bibliolist.attlist, + db.bibliolist.info?, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.biblioref.role.attribute = attribute role { text } + db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute + db.biblioref.endterm.attribute = db.endterm.attribute + db.biblioref.units.attribute = + + ## The units (for example, pages) used to identify the beginning and ending of a reference. + attribute units { xsd:token } + db.biblioref.begin.attribute = + + ## Identifies the beginning of a reference; the location within the work that is being referenced. + attribute begin { xsd:token } + db.biblioref.end.attribute = + + ## Identifies the end of a reference. + attribute end { xsd:token } + db.biblioref.attlist = + db.biblioref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.biblioref.xrefstyle.attribute? + & db.biblioref.endterm.attribute? + & db.biblioref.units.attribute? + & db.biblioref.begin.attribute? + & db.biblioref.end.attribute? + db.biblioref = + + ## A cross-reference to a bibliographic entry + element biblioref { db.biblioref.attlist, empty } +} +db.significance.enumeration = + + ## Normal + "normal" + | + ## Preferred + "preferred" +db.significance.attribute = + + ## Specifies the significance of the term + attribute significance { db.significance.enumeration } +db.zone.attribute = + + ## Specifies the IDs of the elements to which this term applies + attribute zone { xsd:IDREFS } +db.indexterm.pagenum.attribute = + + ## Indicates the page on which this index term occurs in some version of the printed document + attribute pagenum { text } +db.scope.enumeration = + + ## All indexes + "all" + | + ## The global index (as for a combined index of a set of books) + "global" + | + ## The local index (the index for this document only) + "local" +db.scope.attribute = + + ## Specifies the scope of the index term + attribute scope { db.scope.enumeration } +db.sortas.attribute = + + ## Specifies the string by which the term is to be sorted; if unspecified, the term content is used + attribute sortas { text } +db.index.type.attribute = + + ## Specifies the target index for this term + attribute type { text } +div { + db.itermset.role.attribute = attribute role { text } + db.itermset.attlist = + db.itermset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.itermset = + + ## A set of index terms in the meta-information of a document + element itermset { db.itermset.attlist, db.indexterm.singular+ } +} +db.indexterm.contentmodel = + (db.primary, + (db.secondary, + ((db.tertiary, (db.see | db.seealso+)?)? + | (db.see | db.seealso+)?)?)?)?, + (db.see | db.seealso+)? +div { + db.indexterm.singular.role.attribute = attribute role { text } + db.indexterm.singular.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## A singular index term + "singular" + } + db.indexterm.singular.attlist = + db.indexterm.singular.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.singular.class.attribute? + db.indexterm.singular = + + ## A wrapper for an indexed term + element indexterm { + db.indexterm.singular.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.startofrange.role.attribute = attribute role { text } + db.indexterm.startofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The start of a range + "startofrange" + } + db.indexterm.startofrange.attlist = + db.indexterm.startofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.startofrange.class.attribute + db.indexterm.startofrange = + + ## A wrapper for an indexed term that covers a range + element indexterm { + db.indexterm.startofrange.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.endofrange.role.attribute = attribute role { text } + db.indexterm.endofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The end of a range + "endofrange" + } + db.indexterm.endofrange.startref.attribute = + + ## Points to the start of the range + attribute startref { xsd:IDREF } + db.indexterm.endofrange.attlist = + db.indexterm.endofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.indexterm.endofrange.class.attribute + & db.indexterm.endofrange.startref.attribute + db.indexterm.endofrange = + + ## Identifies the end of a range associated with an indexed term + [ + s:pattern [ + s:title [ "Indexterm 'startref' type constraint" ] + s:rule [ + context = "db:indexterm[@startref]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@startref]) = 'indexterm' and namespace-uri(//*[@xml:id=current()/@startref]) = 'http://docbook.org/ns/docbook'" + "@startref on indexterm must point to an indexterm." + ] + s:assert [ + test = + "//*[@xml:id=current()/@startref]/@class='startofrange'" + "@startref on indexterm must point to a startofrange indexterm." + ] + ] + ] + ] + element indexterm { db.indexterm.endofrange.attlist, empty } +} +div { + db.indexterm = + db.indexterm.singular + | db.indexterm.startofrange + | db.indexterm.endofrange +} +div { + db.primary.role.attribute = attribute role { text } + db.primary.attlist = + db.primary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.primary = + + ## The primary word or phrase under which an index term should be sorted + element primary { db.primary.attlist, db.all.inlines* } +} +div { + db.secondary.role.attribute = attribute role { text } + db.secondary.attlist = + db.secondary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.secondary = + + ## A secondary word or phrase in an index term + element secondary { db.secondary.attlist, db.all.inlines* } +} +div { + db.tertiary.role.attribute = attribute role { text } + db.tertiary.attlist = + db.tertiary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.tertiary = + + ## A tertiary word or phrase in an index term + element tertiary { db.tertiary.attlist, db.all.inlines* } +} +div { + db.see.role.attribute = attribute role { text } + db.see.class.attribute = + + ## Identifies the class of 'see' + attribute class { + + ## Normal + "normal" + | + ## See 'under' + "under" + } + db.see.attlist = + db.see.role.attribute? + & db.see.class.attribute? + & db.common.attributes + & db.common.linking.attributes + db.see = + + ## Part of an index term directing the reader instead to another entry in the index + element see { db.see.attlist, db.all.inlines* } +} +div { + db.seealso.role.attribute = attribute role { text } + db.seealso.class.attribute = + + ## Identifies the class of 'seealso' + attribute class { + + ## Normal + "normal" + | + ## See 'under' + "under" + } + db.seealso.attlist = + db.seealso.role.attribute? + & db.seealso.class.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seealso = + + ## Part of an index term directing the reader also to another entry in the index + element seealso { db.seealso.attlist, db.all.inlines* } +} +div { + db.index.status.attribute = db.status.attribute + db.index.role.attribute = attribute role { text } + db.index.attlist = + db.index.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.index.status.attribute? + & db.index.type.attribute? + db.index.info = db._info + # Yes, db.indexdiv* and db.indexentry*; that way an is valid. + # Authors can use an empty index to indicate where a generated index should + # appear. + db.index = + + ## An index to a book or part of a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:index" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element index { + db.index.attlist, + db.index.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry* | db.segmentedlist) + } +} +div { + db.setindex.status.attribute = db.status.attribute + db.setindex.role.attribute = attribute role { text } + db.setindex.attlist = + db.setindex.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.setindex.status.attribute? + & db.index.type.attribute? + db.setindex.info = db._info + db.setindex = + + ## An index to a set of books + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:setindex" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element setindex { + db.setindex.attlist, + db.setindex.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry*) + } +} +div { + db.indexdiv.status.attribute = db.status.attribute + db.indexdiv.role.attribute = attribute role { text } + db.indexdiv.attlist = + db.indexdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.indexdiv.status.attribute? + db.indexdiv.info = db._info.title.req + db.indexdiv = + + ## A division in an index + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:indexdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element indexdiv { + db.indexdiv.attlist, + db.indexdiv.info, + db.all.blocks*, + (db.indexentry+ | db.segmentedlist) + } +} +div { + db.indexentry.role.attribute = attribute role { text } + db.indexentry.attlist = + db.indexentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.indexentry = + + ## An entry in an index + element indexentry { + db.indexentry.attlist, + db.primaryie, + (db.seeie | db.seealsoie)*, + (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)* + } +} +div { + db.primaryie.role.attribute = attribute role { text } + db.primaryie.attlist = + db.primaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.primaryie = + + ## A primary term in an index entry, not in the text + element primaryie { db.primaryie.attlist, db.all.inlines* } +} +div { + db.secondaryie.role.attribute = attribute role { text } + db.secondaryie.attlist = + db.secondaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.secondaryie = + + ## A secondary term in an index entry, rather than in the text + element secondaryie { db.secondaryie.attlist, db.all.inlines* } +} +div { + db.tertiaryie.role.attribute = attribute role { text } + db.tertiaryie.attlist = + db.tertiaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.tertiaryie = + + ## A tertiary term in an index entry, rather than in the text + element tertiaryie { db.tertiaryie.attlist, db.all.inlines* } +} +div { + db.seeie.role.attribute = attribute role { text } + db.seeie.attlist = + db.seeie.role.attribute? + & db.common.attributes + & db.linkend.attribute? + db.seeie = + + ## A See + ## entry in an index, rather than in the text + element seeie { db.seeie.attlist, db.all.inlines* } +} +div { + db.seealsoie.role.attribute = attribute role { text } + db.seealsoie.attlist = + db.seealsoie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.seealsoie = + + ## A See also + ## entry in an index, rather than in the text + element seealsoie { db.seealsoie.attlist, db.all.inlines* } +} +db.toc.pagenum.attribute = + + ## Indicates the page on which this element occurs in some version of the printed document + attribute pagenum { text } +div { + db.toc.role.attribute = attribute role { text } + db.toc.attlist = + db.toc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.toc.info = db._info.title.only + db.toc = + + ## A table of contents + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:toc" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element toc { + db.toc.attlist, + db.toc.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)* + } +} +div { + db.tocdiv.role.attribute = attribute role { text } + db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute + db.tocdiv.attlist = + db.tocdiv.role.attribute? + & db.common.attributes + & db.tocdiv.pagenum.attribute? + & db.linkend.attribute? + db.tocdiv.info = db._info + db.tocdiv = + + ## A division in a table of contents + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:tocdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element tocdiv { + db.tocdiv.attlist, + db.tocdiv.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)+ + } +} +div { + db.tocentry.role.attribute = attribute role { text } + db.tocentry.pagenum.attribute = db.toc.pagenum.attribute + db.tocentry.attlist = + db.tocentry.role.attribute? + & db.common.attributes + & db.tocentry.pagenum.attribute? + & db.linkend.attribute? + db.tocentry = + + ## A component title in a table of contents + element tocentry { db.tocentry.attlist, db.all.inlines* } +} +db.task.info = db._info.title.req +div { + db.task.role.attribute = attribute role { text } + db.task.attlist = + db.task.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.task = + + ## A task to be completed + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:task" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element task { + db.task.attlist, + db.task.info, + db.tasksummary?, + db.taskprerequisites?, + db.procedure+, + db.example*, + db.taskrelated? + } +} +div { + db.tasksummary.role.attribute = attribute role { text } + db.tasksummary.attlist = + db.tasksummary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tasksummary.info = db._info.title.only + db.tasksummary = + + ## A summary of a task + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:tasksummary" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element tasksummary { + db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+ + } +} +div { + db.taskprerequisites.role.attribute = attribute role { text } + db.taskprerequisites.attlist = + db.taskprerequisites.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskprerequisites.info = db._info.title.only + db.taskprerequisites = + + ## The prerequisites for a task + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:taskprerequisites" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element taskprerequisites { + db.taskprerequisites.attlist, + db.taskprerequisites.info, + db.all.blocks+ + } +} +div { + db.taskrelated.role.attribute = attribute role { text } + db.taskrelated.attlist = + db.taskrelated.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskrelated.info = db._info.title.only + db.taskrelated = + + ## Information related to a task + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:taskrelated" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element taskrelated { + db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+ + } +} +db.area.units.enumeration = + + ## Coordinates expressed as a pair of CALS graphic coordinates. + "calspair" + | + ## Coordinates expressed as a line and column. + "linecolumn" + | + ## Coordinates expressed as a pair of lines and columns. + "linecolumnpair" + | + ## Coordinates expressed as a line range. + "linerange" +db.area.units-enum.attribute = + + ## Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair + ## for graphics and linecolumn + ## for line-oriented elements. + attribute units { db.area.units.enumeration }? +db.area.units-other.attributes = + + ## Indicates that non-standard units are used for this area + ## . In this case otherunits + ## must be specified. + attribute units { + + ## Coordinates expressed in some non-standard units. + "other" + }?, + + ## Identifies the units used in the coords + ## attribute when the units + ## attribute is other + ## . This attribute is forbidden otherwise. + attribute otherunits { xsd:NMTOKEN } +db.area.units.attribute = + db.area.units-enum.attribute | db.area.units-other.attributes +div { + db.calloutlist.role.attribute = attribute role { text } + db.calloutlist.attlist = + db.calloutlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.calloutlist.info = db._info.title.only + db.calloutlist = + + ## A list of callout + ## s + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:calloutlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element calloutlist { + db.calloutlist.attlist, + db.calloutlist.info, + db.all.blocks*, + db.callout+ + } +} +div { + db.callout.role.attribute = attribute role { text } + db.callout.arearefs.attribute = + + ## Identifies the areas described by this callout. + attribute arearefs { xsd:IDREFS } + db.callout.attlist = + db.callout.role.attribute? + & db.common.attributes + & db.callout.arearefs.attribute + # This requires an XPath 2.0 compatible Schematron processor + db.callout = + + ## A called out + ## description of a marked area + [ + s:pattern [ + s:title [ "Callout cross reference constraint" ] + s:rule [ + context = "db:callout[@arearefs]" + s:assert [ + test = + "every $id in tokenize(current()/@arearefs) satisfies (every $ar in //*[@xml:id = $id] satisfies (local-name($ar) = ('areaset', 'area', 'co') and namespace-uri($ar) = 'http://docbook.org/ns/docbook'))" + "@arearefs on callout must point to a areaset, area, or co." + ] + ] + ] + ] + element callout { db.callout.attlist, db.all.blocks+ } +} +div { + db.programlistingco.role.attribute = attribute role { text } + db.programlistingco.attlist = + db.programlistingco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.programlistingco.info = db._info.title.forbidden + db.programlistingco = + + ## A program listing with associated areas used in callouts + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:programlistingco" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element programlistingco { + db.programlistingco.attlist, + db.programlistingco.info, + db.areaspec, + db.programlisting, + db.calloutlist* + } +} +div { + db.areaspec.role.attribute = attribute role { text } + db.areaspec.attlist = + db.areaspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.area.units.attribute + db.areaspec = + + ## A collection of regions in a graphic or code example + element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ } +} +div { + db.area.role.attribute = attribute role { text } + db.area.linkends.attribute = + + ## Point to the callout + ## s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + attribute linkends { xsd:IDREFS } + db.area.label.attribute = + + ## Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + attribute label { text } + db.area.coords.attribute = + + ## Provides the coordinates of the area. The coordinates must be interpreted using the units + ## specified. + attribute coords { text } + db.area.attlist = + db.area.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.xlink.simple.link.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area = + + ## A region defined for a callout in a graphic or code example + element area { db.area.attlist, db.alt? } +} +div { + # The only difference is that xml:id is optional + db.area.inareaset.attlist = + db.area.role.attribute? + & db.common.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.xlink.simple.link.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area.inareaset = + + ## A region defined for a callout in a graphic or code example + element area { db.area.inareaset.attlist, db.alt? } +} +div { + db.areaset.role.attribute = attribute role { text } + db.areaset.linkends.attribute = db.linkends.attribute + db.areaset.label.attribute = db.label.attribute + db.areaset.attlist = + db.areaset.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.areaset.linkends.attribute | db.xlink.simple.link.attributes)? + & db.areaset.label.attribute? + db.areaset = + + ## A set of related areas in a graphic or code example + element areaset { db.areaset.attlist, db.area.inareaset+ } +} +div { + db.screenco.role.attribute = attribute role { text } + db.screenco.attlist = + db.screenco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenco.info = db._info.title.forbidden + db.screenco = + + ## A screen with associated areas used in callouts + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:screenco" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element screenco { + db.screenco.attlist, + db.screenco.info, + db.areaspec, + db.screen, + db.calloutlist* + } +} +div { + db.imageobjectco.role.attribute = attribute role { text } + db.imageobjectco.attlist = + db.imageobjectco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobjectco.info = db._info.title.forbidden + db.imageobjectco = + + ## A wrapper for an image object with callouts + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imageobjectco" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imageobjectco { + db.imageobjectco.attlist, + db.imageobjectco.info, + db.areaspec, + db.imageobject+, + db.calloutlist* + } +} +div { + db.co.role.attribute = attribute role { text } + db.co.linkends.attribute = db.linkends.attribute + db.co.label.attribute = db.label.attribute + db.co.attlist = + db.co.role.attribute? + & db.common.idreq.attributes + & db.co.linkends.attribute? + & db.co.label.attribute? + db.co = + + ## The location of a callout embedded in text + element co { db.co.attlist, empty } +} +div { + db.coref.role.attribute = attribute role { text } + db.coref.label.attribute = db.label.attribute + db.coref.attlist = + db.coref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.coref.label.attribute? + db.coref = + + ## A cross reference to a co + element coref { db.coref.attlist, empty } +} +div { + db.productionset.role.attribute = attribute role { text } + db.productionset.attlist = + db.productionset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productionset.info = db._info.title.only + db.productionset = + + ## A set of EBNF productions + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:productionset" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element productionset { + db.productionset.attlist, + db.productionset.info, + (db.production | db.productionrecap)+ + } +} +div { + db.production.role.attribute = attribute role { text } + db.production.attlist = + db.production.role.attribute? + & db.common.idreq.attributes + & db.common.linking.attributes + db.production = + + ## A production in a set of EBNF productions + element production { + db.production.attlist, db.lhs, db.rhs+, db.constraint* + } +} +div { + db.lhs.role.attribute = attribute role { text } + db.lhs.attlist = + db.lhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lhs = + + ## The left-hand side of an EBNF production + element lhs { db.lhs.attlist, text } +} +div { + db.rhs.role.attribute = attribute role { text } + db.rhs.attlist = + db.rhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.rhs = + + ## The right-hand side of an EBNF production + element rhs { + db.rhs.attlist, + (text | db.nonterminal | db.lineannotation | db.sbr)* + } +} +div { + db.nonterminal.role.attribute = attribute role { text } + db.nonterminal.def.attribute = + + ## Specifies a URI that points to a production + ## where the nonterminal + ## is defined + attribute def { xsd:anyURI } + db.nonterminal.attlist = + db.nonterminal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.nonterminal.def.attribute + db.nonterminal = + + ## A non-terminal in an EBNF production + element nonterminal { db.nonterminal.attlist, text } +} +div { + db.constraint.role.attribute = attribute role { text } + db.constraint.attlist = + db.constraint.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.constraint = + + ## A constraint in an EBNF production + [ + s:pattern [ + s:title [ "Constraint cross reference constraint" ] + s:rule [ + context = "db:constraint[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'constraintdef' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on constraint must point to a constraintdef." + ] + ] + ] + ] + element constraint { db.constraint.attlist, empty } +} +div { + db.productionrecap.role.attribute = attribute role { text } + db.productionrecap.attlist = + db.productionrecap.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.productionrecap = + + ## A cross-reference to an EBNF production + [ + s:pattern [ + s:title [ "Production recap cross reference constraint" ] + s:rule [ + context = "db:productionrecap[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'production' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on productionrecap must point to a production." + ] + ] + ] + ] + element productionrecap { db.productionrecap.attlist, empty } +} +div { + db.constraintdef.role.attribute = attribute role { text } + db.constraintdef.attlist = + db.constraintdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.constraintdef.info = db._info.title.only + db.constraintdef = + + ## The definition of a constraint in an EBNF production + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:constraintdef" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element constraintdef { + db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+ + } +} +db.char.attribute = + + ## Specifies the alignment character when align + ## is set to char + ## . + attribute char { text } +db.charoff.attribute = + + ## Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + ## when align + ## is set to char + ## . + attribute charoff { + xsd:decimal { minExclusive = "0" maxExclusive = "100" } + } +db.frame.attribute = + + ## Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + attribute frame { + + ## Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + "all" + | + ## Frame only the bottom of the table. + "bottom" + | + ## Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + "none" + | + ## Frame the left and right sides of the table. + "sides" + | + ## Frame the top of the table. + "top" + | + ## Frame the top and bottom of the table. + "topbot" + } +db.colsep.attribute = + + ## Specifies the presence or absence of the column separator + attribute colsep { + + ## No column separator rule. + "0" + | + ## Provide a column separator rule on the right + "1" + } +db.rowsep.attribute = + + ## Specifies the presence or absence of the row separator + attribute rowsep { + + ## No row separator rule. + "0" + | + ## Provide a row separator rule below + "1" + } +db.orient.attribute = + + ## Specifies the orientation of the table + attribute orient { + + ## 90 degrees counter-clockwise from the rest of the text flow. + "land" + | + ## The same orientation as the rest of the text flow. + "port" + } +db.tabstyle.attribute = + + ## Specifies the table style + attribute tabstyle { text } +db.rowheader.attribute = + + ## Indicates whether or not the entries in the first column should be considered row headers + attribute rowheader { + + ## Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + "firstcol" + | + ## Indicates that row headers are identified by use of the headers attribute on entries in the table. + "headers" + | + ## Indicates that entries in the first column have no special significance with respect to column headers. + "norowheader" + } +db.align.attribute = + + ## Specifies the horizontal alignment of text in an entry. + attribute align { + + ## Centered. + "center" + | + ## Aligned on a particular character. + "char" + | + ## Left and right justified. + "justify" + | + ## Left justified. + "left" + | + ## Right justified. + "right" + } +db.valign.attribute = + + ## Specifies the vertical alignment of text in an entry. + attribute valign { + + ## Aligned on the bottom of the entry. + "bottom" + | + ## Aligned in the middle. + "middle" + | + ## Aligned at the top of the entry. + "top" + } +db.specify-col-by-colname.attributes = + + ## Specifies a column specification by name. + attribute colname { text } +db.specify-col-by-namest.attributes = + + ## Specifies a starting column by name. + attribute namest { text } +db.specify-span-by-spanspec.attributes = + + ## Specifies a span by name. + attribute spanname { text } +db.specify-span-directly.attributes = + + ## Specifies a starting column by name. + attribute namest { text } + & + ## Specifies an ending column by name. + attribute nameend { text } +db.column-spec.attributes = + db.specify-col-by-colname.attributes + | db.specify-col-by-namest.attributes + | db.specify-span-by-spanspec.attributes + | db.specify-span-directly.attributes +db.colname.attribute = + + ## Provides a name for a column specification. + attribute colname { text } +db.spanname.attribute = + + ## Provides a name for a span specification. + attribute spanname { text } +div { + db.tgroup.role.attribute = attribute role { text } + db.tgroup.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.tgroup.cols.attribute = + + ## The number of columns in the table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.tgroup.attlist = + db.tgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.tgroup.tgroupstyle.attribute? + & db.tgroup.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.tgroup = + + ## A wrapper for the main content of a table, or part of a table + element tgroup { + db.tgroup.attlist, + db.colspec*, + db.spanspec*, + db.cals.thead?, + db.cals.tfoot?, + db.cals.tbody + } +} +div { + db.colspec.role.attribute = attribute role { text } + db.colspec.colnum.attribute = + + ## The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + attribute colnum { xsd:positiveInteger } + db.colspec.colwidth.attribute = + + ## Specifies the width of the column. + attribute colwidth { text } + db.colspec.attlist = + db.colspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.colspec.colnum.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.colspec.colwidth.attribute? + & db.charoff.attribute? + & db.colname.attribute? + & db.rowsep.attribute? + & db.align.attribute? + & db.rowheader.attribute? + db.colspec = + + ## Specifications for a column in a table + element colspec { db.colspec.attlist, empty } +} +div { + db.spanspec.role.attribute = attribute role { text } + db.spanspec.namest.attribute = + + ## Specifies a starting column by name. + attribute namest { text } + db.spanspec.nameend.attribute = + + ## Specifies an ending column by name. + attribute nameend { text } + db.spanspec.attlist = + db.spanspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spanname.attribute + & db.spanspec.namest.attribute + & db.spanspec.nameend.attribute + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.spanspec = + + ## Formatting information for a spanned column in a table + element spanspec { db.spanspec.attlist, empty } +} +div { + db.cals.thead.role.attribute = attribute role { text } + db.cals.thead.attlist = + db.cals.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.thead = + + ## A table header consisting of one or more rows + element thead { db.cals.thead.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tfoot.role.attribute = attribute role { text } + db.cals.tfoot.attlist = + db.cals.tfoot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tfoot = + + ## A table footer consisting of one or more rows + element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tbody.role.attribute = attribute role { text } + db.cals.tbody.attlist = + db.cals.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.tbody.attlist, db.row+ } +} +div { + db.row.role.attribute = attribute role { text } + db.row.attlist = + db.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.row = + + ## A row in a table + element row { db.row.attlist, (db.entry | db.entrytbl)+ } +} +div { + db.entry.role.attribute = attribute role { text } + db.entry.morerows.attribute = + + ## Specifies the number of additional rows which this entry occupies. Defaults to zero. + attribute morerows { xsd:integer } + db.entry.rotate.attribute = + + ## Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + attribute rotate { + + ## Do not rotate the cell. + "0" + | + ## Rotate the cell 90 degrees counter-clockwise. + "1" + } + db.entry.scope.attribute = + + ## Specifies the scope of a header. + attribute scope { + + ## Applies to the row + "row" + | + ## Applies to the column + "col" + | + ## Applies to the row group + "rowgroup" + | + ## Applies to the column group + "colgroup" + } + db.entry.headers.attribute = + + ## Specifies the entry or entries which serve as headers for this element. + attribute headers { xsd:IDREFS } + db.entry.attlist = + db.entry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.entry.morerows.attribute? + & db.column-spec.attributes? + & db.rowsep.attribute? + & db.entry.rotate.attribute? + & db.align.attribute? + & db.entry.scope.attribute? + & db.entry.headers.attribute? + db.entry = + + ## A cell in a table + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:entry" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of entry" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:entry" + s:assert [ + test = "not(.//db:informaltable)" + "informaltable must not occur among the children or descendants of entry" + ] + ] + ] + ] + element entry { + db.entry.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.entrytbl.role.attribute = attribute role { text } + db.entrytbl.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.entrytbl.cols.attribute = + + ## The number of columns in the entry table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.entrytbl.attlist = + db.entrytbl.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.column-spec.attributes? + & db.entrytbl.tgroupstyle.attribute? + & db.entrytbl.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.entrytbl = + + ## A subtable appearing in place of an entry in a table + element entrytbl { + db.entrytbl.attlist, + db.colspec*, + db.spanspec*, + db.cals.entrytbl.thead?, + db.cals.entrytbl.tbody + } +} +div { + db.cals.entrytbl.thead.role.attribute = attribute role { text } + db.cals.entrytbl.thead.attlist = + db.cals.entrytbl.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.thead = + + ## A table header consisting of one or more rows + element thead { + db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+ + } +} +div { + db.cals.entrytbl.tbody.role.attribute = attribute role { text } + db.cals.entrytbl.tbody.attlist = + db.cals.entrytbl.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ } +} +div { + db.entrytbl.row.role.attribute = attribute role { text } + db.entrytbl.row.attlist = + db.entrytbl.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.entrytbl.row = + + ## A row in a table + element row { db.entrytbl.row.attlist, db.entry+ } +} +div { + db.cals.table.role.attribute = attribute role { text } + db.cals.table.label.attribute = db.label.attribute + db.cals.table.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.cals.table.attlist = + db.cals.table.role.attribute? + & db.cals.table.type.attribute? + & db.cals.table.label.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & + ## Indicates if the short or long title should be used in a List of Tables + attribute shortentry { + + ## Indicates that the full title should be used. + "0" + | + ## Indicates that the short short title (titleabbrev) should be used. + "1" + }? + & + ## Indicates if the table should appear in a List of Tables + attribute tocentry { + + ## Indicates that the table should not occur in the List of Tables. + "0" + | + ## Indicates that the table should appear in the List of Tables. + "1" + }? + & db.rowheader.attribute? + db.cals.table.info = db._info.title.onlyreq + db.cals.table = + + ## A formal table in a document + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:table" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element table { + db.cals.table.attlist, + db.cals.table.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +div { + db.cals.informaltable.role.attribute = attribute role { text } + db.cals.informaltable.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.cals.informaltable.attlist = + db.cals.informaltable.role.attribute? + & db.cals.informaltable.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & db.rowheader.attribute? + db.cals.informaltable.info = db._info.title.forbidden + db.cals.informaltable = + + ## A table without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informaltable" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informaltable { + db.cals.informaltable.attlist, + db.cals.informaltable.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +db.html.coreattrs = + + ## This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + attribute class { text }? + & + ## This attribute specifies style information for the current element. + attribute style { text }? + & + ## This attribute offers advisory information about the element for which it is set. + attribute title { text }? +db.html.i18n = + + ## This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + attribute lang { text }? +db.html.events = + + ## Occurs when the pointing device button is clicked over an element. + attribute onclick { text }? + & + ## Occurs when the pointing device button is double clicked over an element. + attribute ondblclick { text }? + & + ## Occurs when the pointing device button is pressed over an element. + attribute onmousedown { text }? + & + ## Occurs when the pointing device button is released over an element. + attribute onmouseup { text }? + & + ## Occurs when the pointing device is moved onto an element. + attribute onmouseover { text }? + & + ## Occurs when the pointing device is moved while it is over an element. + attribute onmousemove { text }? + & + ## Occurs when the pointing device is moved away from an element. + attribute onmouseout { text }? + & + ## Occurs when a key is pressed and released over an element. + attribute onkeypress { text }? + & + ## Occurs when a key is pressed down over an element. + attribute onkeydown { text }? + & + ## Occurs when a key is released over an element. + attribute onkeyup { text }? +db.html.attrs = + db.common.attributes + & db.html.coreattrs + & db.html.i18n + & db.html.events +db.html.cellhalign = + + ## Specifies the alignment of data and the justification of text in a cell. + attribute align { + + ## Left-flush data/Left-justify text. This is the default value for table data. + "left" + | + ## Center data/Center-justify text. This is the default value for table headers. + "center" + | + ## Right-flush data/Right-justify text. + "right" + | + ## Double-justify text. + "justify" + | + ## Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + "char" + }? + & + ## This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + attribute char { text }? + & + ## When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + attribute charoff { + xsd:integer >> a:documentation [ "An explicit offset." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage offset." ] + }? +db.html.cellvalign = + + ## Specifies the vertical position of data within a cell. + attribute valign { + + ## Cell data is flush with the top of the cell. + "top" + | + ## Cell data is centered vertically within the cell. This is the default value. + "middle" + | + ## Cell data is flush with the bottom of the cell. + "bottom" + | + ## All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + "baseline" + }? +db.html.table.attributes = + + ## Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + attribute summary { text }? + & + ## Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + attribute width { + xsd:integer >> a:documentation [ "An explicit width." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage width." ] + }? + & + ## Specifies the width (in pixels only) of the frame around a table. + attribute border { xsd:nonNegativeInteger }? + & + ## Specifies which sides of the frame surrounding a table will be visible. + attribute frame { + + ## No sides. This is the default value. + "void" + | + ## The top side only. + "above" + | + ## The bottom side only. + "below" + | + ## The top and bottom sides only. + "hsides" + | + ## The left-hand side only. + "lhs" + | + ## The right-hand side only. + "rhs" + | + ## The right and left sides only. + "vsides" + | + ## All four sides. + "box" + | + ## All four sides. + "border" + }? + & + ## Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + attribute rules { + + ## No rules. This is the default value. + "none" + | + ## Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + "groups" + | + ## Rules will appear between rows only. + "rows" + | + ## Rules will appear between columns only. + "cols" + | + ## Rules will appear between all rows and columns. + "all" + }? + & + ## Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + attribute cellspacing { + xsd:integer >> a:documentation [ "An explicit spacing." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage spacing." ] + }? + & + ## Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + attribute cellpadding { + xsd:integer >> a:documentation [ "An explicit padding." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage padding." ] + }? +db.html.tablecell.attributes = + + ## Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + attribute abbr { text }? + & + ## This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + attribute axis { text }? + & + ## Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + attribute headers { text }? + & + ## Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + attribute scope { + + ## The current cell provides header information for the rest of the row that contains it + "row" + | + ## The current cell provides header information for the rest of the column that contains it. + "col" + | + ## The header cell provides header information for the rest of the row group that contains it. + "rowgroup" + | + ## The header cell provides header information for the rest of the column group that contains it. + "colgroup" + }? + & + ## Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all rows from the current row to the last row of the table section (thead + ## , tbody + ## , or tfoot + ## ) in which the cell is defined. + attribute rowspan { xsd:nonNegativeInteger }? + & + ## Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all columns from the current column to the last column of the column group (colgroup + ## ) in which the cell is defined. + attribute colspan { xsd:nonNegativeInteger }? +db.html.table.info = db._info.title.forbidden +db.html.table.model = + db.html.table.info?, + db.html.caption, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +db.html.informaltable.info = db._info.title.forbidden +db.html.informaltable.model = + db.html.informaltable.info?, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +div { + db.html.table.role.attribute = attribute role { text } + db.html.table.label.attribute = db.label.attribute + db.html.table.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.html.table.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.table.role.attribute? + & db.html.table.type.attribute? + & db.html.table.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.table = + + ## A formal (captioned) HTML table in a document + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:table" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element table { db.html.table.attlist, db.html.table.model } +} +div { + db.html.informaltable.role.attribute = attribute role { text } + db.html.informaltable.label.attribute = db.label.attribute + db.html.informaltable.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.html.informaltable.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.informaltable.role.attribute? + & db.html.informaltable.type.attribute? + & db.html.informaltable.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.informaltable = + + ## An HTML table without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informaltable" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informaltable { + db.html.informaltable.attlist, db.html.informaltable.model + } +} +div { + db.html.caption.attlist = db.html.attrs + db.html.caption = + + ## An HTML table caption + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:caption" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element caption { db.html.caption.attlist, db.all.inlines* } +} +div { + db.html.col.attlist = + db.html.attrs + & + ## This attribute, whose value must be an integer > 0, specifies the number of columns spanned + ## by the col + ## element; the col + ## element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + ## element shares its attributes with the next N-1 columns. + attribute span { xsd:nonNegativeInteger }? + & + ## Specifies a default width for each column spanned by the current col + ## element. It has the same meaning as the width + ## attribute for the colgroup + ## element and overrides it. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.col = + + ## Specifications for a column in an HTML table + element col { db.html.col.attlist, empty } +} +div { + db.html.colgroup.attlist = + db.html.attrs + & + ## This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + ## defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + ## element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + ## element contains one or more col + ## elements. + attribute span { xsd:nonNegativeInteger }? + & + ## This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + ## (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + ## will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + ## element. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.colgroup = + + ## A group of columns in an HTML table + element colgroup { db.html.colgroup.attlist, db.html.col* } +} +div { + db.html.thead.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.thead = + + ## A table header consisting of one or more rows in an HTML table + element thead { db.html.thead.attlist, db.html.tr+ } +} +div { + db.html.tfoot.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tfoot = + + ## A table footer consisting of one or more rows in an HTML table + element tfoot { db.html.tfoot.attlist, db.html.tr+ } +} +div { + db.html.tbody.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tbody = + + ## A wrapper for the rows of an HTML table or informal HTML table + element tbody { db.html.tbody.attlist, db.html.tr+ } +} +div { + db.html.tr.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tr = + + ## A row in an HTML table + element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ } +} +div { + db.html.th.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.th = + + ## A table header entry in an HTML table + element th { + db.html.th.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.html.td.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.td = + + ## A table entry in an HTML table + element td { + db.html.td.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.msgset.role.attribute = attribute role { text } + db.msgset.attlist = + db.msgset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgset.info = db._info.title.only + db.msgset = + + ## A detailed set of messages, usually error messages + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgset" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgset { + db.msgset.attlist, + db.msgset.info, + (db.msgentry+ | db.simplemsgentry+) + } +} +div { + db.msgentry.role.attribute = attribute role { text } + db.msgentry.attlist = + db.msgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgentry = + + ## A wrapper for an entry in a message set + element msgentry { + db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan* + } +} +div { + db.simplemsgentry.role.attribute = attribute role { text } + db.simplemsgentry.msgaud.attribute = + + ## The audience to which the message relevant + attribute msgaud { text } + db.simplemsgentry.msgorig.attribute = + + ## The origin of the message + attribute msgorig { text } + db.simplemsgentry.msglevel.attribute = + + ## The level of importance or severity of a message + attribute msglevel { text } + db.simplemsgentry.attlist = + db.simplemsgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplemsgentry.msgaud.attribute? + & db.simplemsgentry.msgorig.attribute? + & db.simplemsgentry.msglevel.attribute? + db.simplemsgentry = + + ## A wrapper for a simpler entry in a message set + element simplemsgentry { + db.simplemsgentry.attlist, db.msgtext, db.msgexplan+ + } +} +div { + db.msg.role.attribute = attribute role { text } + db.msg.attlist = + db.msg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msg.info = db._info.title.only + db.msg = + + ## A message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msg" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msg { + db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)* + } +} +div { + db.msgmain.role.attribute = attribute role { text } + db.msgmain.attlist = + db.msgmain.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgmain.info = db._info.title.only + db.msgmain = + + ## The primary component of a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgmain" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext } +} +div { + db.msgsub.role.attribute = attribute role { text } + db.msgsub.attlist = + db.msgsub.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgsub.info = db._info.title.only + db.msgsub = + + ## A subcomponent of a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgsub" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext } +} +div { + db.msgrel.role.attribute = attribute role { text } + db.msgrel.attlist = + db.msgrel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgrel.info = db._info.title.only + db.msgrel = + + ## A related component of a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgrel" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext } +} +div { + db.msgtext.role.attribute = attribute role { text } + db.msgtext.attlist = + db.msgtext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgtext = + + ## The actual text of a message component in a message set + element msgtext { db.msgtext.attlist, db.all.blocks+ } +} +div { + db.msginfo.role.attribute = attribute role { text } + db.msginfo.attlist = + db.msginfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msginfo = + + ## Information about a message in a message set + element msginfo { + db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)* + } +} +div { + db.msglevel.role.attribute = attribute role { text } + db.msglevel.attlist = + db.msglevel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msglevel = + + ## The level of importance or severity of a message in a message set + element msglevel { db.msglevel.attlist, db._text } +} +div { + db.msgorig.role.attribute = attribute role { text } + db.msgorig.attlist = + db.msgorig.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgorig = + + ## The origin of a message in a message set + element msgorig { db.msgorig.attlist, db._text } +} +div { + db.msgaud.role.attribute = attribute role { text } + db.msgaud.attlist = + db.msgaud.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgaud = + + ## The audience to which a message in a message set is relevant + element msgaud { db.msgaud.attlist, db._text } +} +div { + db.msgexplan.role.attribute = attribute role { text } + db.msgexplan.attlist = + db.msgexplan.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgexplan.info = db._info.title.only + db.msgexplan = + + ## Explanatory material relating to a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgexplan" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgexplan { + db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+ + } +} +div { + db.qandaset.role.attribute = attribute role { text } + db.qandaset.defaultlabel.enumeration = + + ## No labels + "none" + | + ## Numeric labels + "number" + | + ## "Q:" and "A:" labels + "qanda" + db.qandaset.defaultlabel.attribute = + + ## Specifies the default labelling + attribute defaultlabel { db.qandaset.defaultlabel.enumeration } + db.qandaset.attlist = + db.qandaset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.qandaset.defaultlabel.attribute? + db.qandaset.info = db._info.title.only + db.qandaset = + + ## A question-and-answer set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:qandaset" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element qandaset { + db.qandaset.attlist, + db.qandaset.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandadiv.role.attribute = attribute role { text } + db.qandadiv.attlist = + db.qandadiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandadiv.info = db._info.title.only + db.qandadiv = + + ## A titled division in a qandaset + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:qandadiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element qandadiv { + db.qandadiv.attlist, + db.qandadiv.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandaentry.role.attribute = attribute role { text } + db.qandaentry.attlist = + db.qandaentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandaentry.info = db._info.title.only + db.qandaentry = + + ## A question/answer set within a qandaset + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:qandaentry" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element qandaentry { + db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer* + } +} +div { + db.question.role.attribute = attribute role { text } + db.question.attlist = + db.question.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.question = + + ## A question in a qandaset + element question { db.question.attlist, db.label?, db.all.blocks+ } +} +div { + db.answer.role.attribute = attribute role { text } + db.answer.attlist = + db.answer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.answer = + + ## An answer to a question posed in a qandaset + element answer { db.answer.attlist, db.label?, db.all.blocks+ } +} +div { + db.label.role.attribute = attribute role { text } + db.label.attlist = + db.label.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.label = + + ## A label on a question or answer + element label { db.label.attlist, db._text } +} +db.math.inlines = db.inlineequation +db.equation.content = (db.mediaobject+ | db.mathphrase+) | db._any.mml+ +db.inlineequation.content = + (db.inlinemediaobject+ | db.mathphrase+) | db._any.mml+ +div { + db.equation.role.attribute = attribute role { text } + db.equation.label.attribute = db.label.attribute + db.equation.type.attribute = + + ## Identifies the type of equation + attribute type { text }? + db.equation.attlist = + db.equation.role.attribute? + & db.equation.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.equation.label.attribute? + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.equation.info = db._info.title.only + db.equation = + + ## A displayed mathematical equation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:equation" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element equation { + db.equation.attlist, + db.equation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.informalequation.role.attribute = attribute role { text } + db.informalequation.type.attribute = + + ## Identifies the type of equation + attribute type { text }? + db.informalequation.attlist = + db.informalequation.role.attribute? + & db.informalequation.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.informalequation.info = db._info.title.forbidden + db.informalequation = + + ## A displayed mathematical equation without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informalequation" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informalequation { + db.informalequation.attlist, + db.informalequation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.inlineequation.role.attribute = attribute role { text } + db.inlineequation.attlist = + db.inlineequation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlineequation = + + ## A mathematical equation or expression occurring inline + element inlineequation { + db.inlineequation.attlist, db.alt?, db.inlineequation.content + } +} +div { + db.mathphrase.role.attribute = attribute role { text } + db.mathphrase.attlist = + db.mathphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mathphrase = + + ## A mathematical phrase that can be represented with ordinary text and a small amount of markup + element mathphrase { + db.mathphrase.attlist, + (db._text | db.ubiq.inlines | db._emphasis)* + } +} +db.imagedata.mathml.content = db._any.mml +div { + db.imagedata.mathml.role.attribute = attribute role { text } + db.imagedata.mathml.attlist = + db.imagedata.mathml.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is MathML + attribute format { + + ## Specifies MathML. + "mathml" + }? + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.mathml.info = db._info.title.forbidden + db.imagedata.mathml = + + ## A MathML expression in a media object + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imagedata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imagedata { + db.imagedata.mathml.attlist, + db.imagedata.mathml.info, + db.imagedata.mathml.content+ + } +} +div { + db._any.mml = + + ## Any element from the MathML namespace + element mml:* { (db._any.attribute | text | db._any)* } +} +db.imagedata.svg.content = db._any.svg +div { + db.imagedata.svg.role.attribute = attribute role { text } + db.imagedata.svg.attlist = + db.imagedata.svg.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is SVG + attribute format { + + ## Specifies SVG. + "svg" + }? + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.svg.info = db._info.title.forbidden + db.imagedata.svg = + + ## An SVG drawing in a media object + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imagedata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imagedata { + db.imagedata.svg.attlist, + db.imagedata.svg.info, + db.imagedata.svg.content+ + } +} +div { + db._any.svg = + + ## Any element from the SVG namespace + element svg:* { (db._any.attribute | text | db._any)* } +} +db.markup.inlines = + db.tag + | db.markup + | db.token + | db.symbol + | db.literal + | db.code + | db.constant + | db.email + | db.uri +div { + db.markup.role.attribute = attribute role { text } + db.markup.attlist = + db.markup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.markup = + + ## A string of formatting markup in text that is to be represented literally + element markup { db.markup.attlist, db._text } +} +div { + db.tag.role.attribute = attribute role { text } + db.tag.class.enumeration = + + ## An attribute + "attribute" + | + ## An attribute value + "attvalue" + | + ## An element + "element" + | + ## An empty element tag + "emptytag" + | + ## An end tag + "endtag" + | + ## A general entity + "genentity" + | + ## The local name part of a qualified name + "localname" + | + ## A namespace + "namespace" + | + ## A numeric character reference + "numcharref" + | + ## A parameter entity + "paramentity" + | + ## A processing instruction + "pi" + | + ## The prefix part of a qualified name + "prefix" + | + ## An SGML comment + "comment" + | + ## A start tag + "starttag" + | + ## An XML processing instruction + "xmlpi" + db.tag.class.attribute = + + ## Identifies the nature of the tag content + attribute class { db.tag.class.enumeration } + db.tag.namespace.attribute = + + ## Identifies the namespace of the tag content + attribute namespace { xsd:anyURI } + db.tag.attlist = + db.tag.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tag.class.attribute? + & db.tag.namespace.attribute? + db.tag = + + ## A component of XML (or SGML) markup + element tag { db.tag.attlist, (db._text | db.tag)* } +} +div { + db.symbol.class.attribute = + + ## Identifies the class of symbol + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.symbol.role.attribute = attribute role { text } + db.symbol.attlist = + db.symbol.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.symbol.class.attribute? + db.symbol = + + ## A name that is replaced by a value before processing + element symbol { db.symbol.attlist, db._text } +} +div { + db.token.role.attribute = attribute role { text } + db.token.attlist = + db.token.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.token = + + ## A unit of information + element token { db.token.attlist, db._text } +} +div { + db.literal.role.attribute = attribute role { text } + db.literal.attlist = + db.literal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.literal = + + ## Inline text that is some literal value + element literal { db.literal.attlist, db._text } +} +div { + code.language.attribute = + + ## Identifies the (computer) language of the code fragment + attribute language { text } + db.code.role.attribute = attribute role { text } + db.code.attlist = + db.code.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & code.language.attribute? + db.code = + + ## An inline code fragment + element code { + db.code.attlist, (db.programming.inlines | db._text)* + } +} +div { + db.constant.class.attribute = + + ## Identifies the class of constant + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.constant.role.attribute = attribute role { text } + db.constant.attlist = + db.constant.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.constant.class.attribute? + db.constant = + + ## A programming or system constant + element constant { db.constant.attlist, db._text } +} +div { + db.productname.role.attribute = attribute role { text } + db.productname.class.enumeration = + + ## A name with a copyright + "copyright" + | + ## A name with a registered copyright + "registered" + | + ## A name of a service + "service" + | + ## A name which is trademarked + "trade" + db.productname.class.attribute = + + ## Specifies the class of product name + attribute class { db.productname.class.enumeration } + db.productname.attlist = + db.productname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.productname.class.attribute? + db.productname = + + ## The formal name of a product + element productname { db.productname.attlist, db._text } +} +div { + db.productnumber.role.attribute = attribute role { text } + db.productnumber.attlist = + db.productnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productnumber = + + ## A number assigned to a product + element productnumber { db.productnumber.attlist, db._text } +} +div { + db.database.class.enumeration = + + ## An alternate or secondary key + "altkey" + | + ## A constraint + "constraint" + | + ## A data type + "datatype" + | + ## A field + "field" + | + ## A foreign key + "foreignkey" + | + ## A group + "group" + | + ## An index + "index" + | + ## The first or primary key + "key1" + | + ## An alternate or secondary key + "key2" + | + ## A name + "name" + | + ## The primary key + "primarykey" + | + ## A (stored) procedure + "procedure" + | + ## A record + "record" + | + ## A rule + "rule" + | + ## The secondary key + "secondarykey" + | + ## A table + "table" + | + ## A user + "user" + | + ## A view + "view" + db.database.class.attribute = + + ## Identifies the class of database artifact + attribute class { db.database.class.enumeration } + db.database.role.attribute = attribute role { text } + db.database.attlist = + db.database.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.database.class.attribute? + db.database = + + ## The name of a database, or part of a database + element database { db.database.attlist, db._text } +} +div { + db.application.class.enumeration = + + ## A hardware application + "hardware" + | + ## A software application + "software" + db.application.class.attribute = + + ## Identifies the class of application + attribute class { db.application.class.enumeration } + db.application.role.attribute = attribute role { text } + db.application.attlist = + db.application.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.application.class.attribute? + db.application = + + ## The name of a software program + element application { db.application.attlist, db._text } +} +div { + db.hardware.role.attribute = attribute role { text } + db.hardware.attlist = + db.hardware.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.hardware = + + ## A physical part of a computer system + element hardware { db.hardware.attlist, db._text } +} +db.gui.inlines = + db.guiicon + | db.guibutton + | db.guimenuitem + | db.guimenu + | db.guisubmenu + | db.guilabel + | db.menuchoice + | db.mousebutton +div { + db.guibutton.role.attribute = attribute role { text } + db.guibutton.attlist = + db.guibutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guibutton = + + ## The text on a button in a GUI + element guibutton { + db.guibutton.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guiicon.role.attribute = attribute role { text } + db.guiicon.attlist = + db.guiicon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guiicon = + + ## Graphic and/or text appearing as a icon in a GUI + element guiicon { + db.guiicon.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guilabel.role.attribute = attribute role { text } + db.guilabel.attlist = + db.guilabel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guilabel = + + ## The text of a label in a GUI + element guilabel { + db.guilabel.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenu.role.attribute = attribute role { text } + db.guimenu.attlist = + db.guimenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenu = + + ## The name of a menu in a GUI + element guimenu { + db.guimenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenuitem.role.attribute = attribute role { text } + db.guimenuitem.attlist = + db.guimenuitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenuitem = + + ## The name of a terminal menu item in a GUI + element guimenuitem { + db.guimenuitem.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guisubmenu.role.attribute = attribute role { text } + db.guisubmenu.attlist = + db.guisubmenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guisubmenu = + + ## The name of a submenu in a GUI + element guisubmenu { + db.guisubmenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.menuchoice.role.attribute = attribute role { text } + db.menuchoice.attlist = + db.menuchoice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.menuchoice = + + ## A selection or series of selections from a menu + element menuchoice { + db.menuchoice.attlist, + db.shortcut?, + (db.guibutton + | db.guiicon + | db.guilabel + | db.guimenu + | db.guimenuitem + | db.guisubmenu)+ + } +} +div { + db.mousebutton.role.attribute = attribute role { text } + db.mousebutton.attlist = + db.mousebutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mousebutton = + + ## The conventional name of a mouse button + element mousebutton { db.mousebutton.attlist, db._text } +} +db.keyboard.inlines = + db.keycombo + | db.keycap + | db.keycode + | db.keysym + | db.shortcut + | db.accel +div { + db.keycap.function.enumeration = + + ## The "Alt" key + "alt" + | + ## The "Alt Graph" key + "altgr" + | + ## The "Backspace" key + "backspace" + | + ## The "Command" key + "command" + | + ## The "Control" key + "control" + | + ## The "Delete" key + "delete" + | + ## The down arrow + "down" + | + ## The "End" key + "end" + | + ## The "Enter" key + "enter" + | + ## The "Escape" key + "escape" + | + ## The "Home" key + "home" + | + ## The "Insert" key + "insert" + | + ## The left arrow + "left" + | + ## The "Meta" key + "meta" + | + ## The "Option" key + "option" + | + ## The page down key + "pagedown" + | + ## The page up key + "pageup" + | + ## The right arrow + "right" + | + ## The "Return" key + "return" + | + ## The "Shift" key + "shift" + | + ## The spacebar + "space" + | + ## The "Tab" key + "tab" + | + ## The up arrow + "up" + db.keycap.function-enum.attribute = + + ## Identifies the function key + attribute function { db.keycap.function.enumeration }? + db.keycap.function-other.attributes = + + ## Identifies the function key + attribute function { + + ## Indicates a non-standard function key + "other" + }?, + + ## Specifies a keyword that identifies the non-standard key + attribute otherfunction { text } + db.keycap.function.attrib = + db.keycap.function-enum.attribute + | db.keycap.function-other.attributes + db.keycap.role.attribute = attribute role { text } + db.keycap.attlist = + db.keycap.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycap.function.attrib + db.keycap = + + ## The text printed on a key on a keyboard + element keycap { db.keycap.attlist, db._text } +} +div { + db.keycode.role.attribute = attribute role { text } + db.keycode.attlist = + db.keycode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keycode = + + ## The internal, frequently numeric, identifier for a key on a keyboard + element keycode { db.keycode.attlist, db._text } +} +db.keycombination.contentmodel = + (db.keycap | db.keycombo | db.keysym) | db.mousebutton +div { + db.keycombo.action.enumeration = + + ## A (single) mouse click. + "click" + | + ## A double mouse click. + "double-click" + | + ## A mouse or key press. + "press" + | + ## Sequential clicks or presses. + "seq" + | + ## Simultaneous clicks or presses. + "simul" + db.keycombo.action-enum.attribute = + + ## Identifies the nature of the action taken. If keycombo + ## contains more than one element, simul + ## is the default, otherwise there is no default. + attribute action { db.keycombo.action.enumeration }? + db.keycombo.action-other.attributes = + + ## Identifies the nature of the action taken + attribute action { + + ## Indicates a non-standard action + "other" + }?, + + ## Identifies the non-standard action in some unspecified way. + attribute otheraction { text } + db.keycombo.action.attrib = + db.keycombo.action-enum.attribute + | db.keycombo.action-other.attributes + db.keycombo.role.attribute = attribute role { text } + db.keycombo.attlist = + db.keycombo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycombo.action.attrib + db.keycombo = + + ## A combination of input actions + element keycombo { + db.keycombo.attlist, db.keycombination.contentmodel+ + } +} +div { + db.keysym.role.attribute = attribute role { text } + db.keysym.attlist = + db.keysym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keysym = + + ## The symbolic name of a key on a keyboard + element keysym { db.keysym.attlist, db._text } +} +div { + db.accel.role.attribute = attribute role { text } + db.accel.attlist = + db.accel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.accel = + + ## A graphical user interface (GUI) keyboard shortcut + element accel { db.accel.attlist, db._text } +} +div { + db.shortcut.action.attrib = db.keycombo.action.attrib + db.shortcut.role.attribute = attribute role { text } + db.shortcut.attlist = + db.shortcut.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.shortcut.action.attrib + db.shortcut = + + ## A key combination for an action that is also accessible through a menu + element shortcut { + db.shortcut.attlist, db.keycombination.contentmodel+ + } +} +db.os.inlines = + db.prompt + | db.envar + | db.filename + | db.command + | db.computeroutput + | db.userinput +db.computeroutput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines +db.userinput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines +db.prompt.inlines = db._text | db.co +div { + db.prompt.role.attribute = attribute role { text } + db.prompt.attlist = + db.prompt.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.prompt = + + ## A character or string indicating the start of an input field in a computer display + element prompt { db.prompt.attlist, db.prompt.inlines* } +} +div { + db.envar.role.attribute = attribute role { text } + db.envar.attlist = + db.envar.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.envar = + + ## A software environment variable + element envar { db.envar.attlist, db._text } +} +div { + db.filename.class.enumeration = + + ## A device + "devicefile" + | + ## A directory + "directory" + | + ## A filename extension + "extension" + | + ## A header file (as for a programming language) + "headerfile" + | + ## A library file + "libraryfile" + | + ## A partition (as of a hard disk) + "partition" + | + ## A symbolic link + "symlink" + db.filename.class.attribute = + + ## Identifies the class of filename + attribute class { db.filename.class.enumeration } + db.filename.path.attribute = + + ## Specifies the path of the filename + attribute path { text } + db.filename.role.attribute = attribute role { text } + db.filename.attlist = + db.filename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.filename.path.attribute? + & db.filename.class.attribute? + db.filename = + + ## The name of a file + element filename { db.filename.attlist, db._text } +} +div { + db.command.role.attribute = attribute role { text } + db.command.attlist = + db.command.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.command = + + ## The name of an executable program or other software command + element command { db.command.attlist, db._text } +} +div { + db.computeroutput.role.attribute = attribute role { text } + db.computeroutput.attlist = + db.computeroutput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.computeroutput = + + ## Data, generally text, displayed or presented by a computer + element computeroutput { + db.computeroutput.attlist, db.computeroutput.inlines* + } +} +div { + db.userinput.role.attribute = attribute role { text } + db.userinput.attlist = + db.userinput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.userinput = + + ## Data entered by the user + element userinput { db.userinput.attlist, db.userinput.inlines* } +} +div { + db.cmdsynopsis.role.attribute = attribute role { text } + db.cmdsynopsis.sepchar.attribute = + + ## Specifies the character that should separate the command and its top-level arguments + attribute sepchar { text } + db.cmdsynopsis.cmdlength.attribute = + + ## Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + attribute cmdlength { text } + db.cmdsynopsis.label.attribute = db.label.attribute + db.cmdsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.cmdsynopsis.attlist = + db.cmdsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.cmdsynopsis.sepchar.attribute? + & db.cmdsynopsis.cmdlength.attribute? + & db.cmdsynopsis.label.attribute? + & db.cmdsynopsis.packageref.attribute? + db.cmdsynopsis.info = db._info.title.forbidden + db.cmdsynopsis = + + ## A syntax summary for a software command + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:cmdsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element cmdsynopsis { + db.cmdsynopsis.attlist, + db.cmdsynopsis.info, + (db.command | db.arg | db.group | db.sbr)+, + db.synopfragment* + } +} +db.rep.enumeration = + + ## Can not be repeated. + "norepeat" + | + ## Can be repeated. + "repeat" +db.rep.attribute = + + ## Indicates whether or not repetition is possible. + [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration } +db.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted without indication. + "plain" + | + ## Formatted to indicate that it is required. + "req" +db.choice.opt.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration } +db.choice.req.attribute = + + ## Indicates optionality. + [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration } +div { + db.arg.role.attribute = attribute role { text } + db.arg.rep.attribute = db.rep.attribute + db.arg.choice.attribute = db.choice.opt.attribute + db.arg.attlist = + db.arg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.arg.rep.attribute? + & db.arg.choice.attribute? + db.arg = + + ## An argument in a cmdsynopsis + element arg { + db.arg.attlist, + (db._text + | db.arg + | db.group + | db.option + | db.synopfragmentref + | db.sbr)* + } +} +div { + db.group.role.attribute = attribute role { text } + db.group.rep.attribute = db.rep.attribute + db.group.choice.attribute = db.choice.opt.attribute + db.group.attlist = + db.group.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.rep.attribute? + & db.group.choice.attribute? + db.group = + + ## A group of elements in a cmdsynopsis + element group { + db.group.attlist, + (db.arg + | db.group + | db.option + | db.synopfragmentref + | db.replaceable + | db.sbr)+ + } +} +div { + db.sbr.role.attribute = attribute role { text } + db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes + db.sbr = + + ## An explicit line break in a command synopsis + element sbr { db.sbr.attlist, empty } +} +div { + db.synopfragment.role.attribute = attribute role { text } + db.synopfragment.attlist = + db.synopfragment.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.synopfragment = + + ## A portion of a cmdsynopsis broken out from the main body of the synopsis + element synopfragment { + db.synopfragment.attlist, (db.arg | db.group)+ + } +} +div { + db.synopfragmentref.role.attribute = attribute role { text } + db.synopfragmentref.attlist = + db.synopfragmentref.role.attribute? + & db.common.attributes + & db.linkend.attribute + db.synopfragmentref = + + ## A reference to a fragment of a command synopsis + [ + s:pattern [ + s:title [ "Synopsis fragment type constraint" ] + s:rule [ + context = "db:synopfragmentref" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on synopfragmentref must point to a synopfragment." + ] + ] + ] + ] + element synopfragmentref { db.synopfragmentref.attlist, text } +} +db.programming.inlines = + db.function + | db.parameter + | db.varname + | db.returnvalue + | db.type + | db.classname + | db.exceptionname + | db.interfacename + | db.methodname + | db.modifier + | db.initializer + | db.buildtarget + | db.oo.inlines + | db.templatename + | db.macroname + | db.unionname + | db.enumname + | db.enumvalue + | db.enumidentifier + | db.typedefname +db.oo.inlines = db.ooclass | db.ooexception | db.oointerface +db.synopsis.blocks = + (db.funcsynopsis + | db.classsynopsis + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis + | db.enumsynopsis + | db.typedefsynopsis + | db.packagesynopsis + | db.macrosynopsis + | db.unionsynopsis) + | db.cmdsynopsis +div { + db.synopsis.role.attribute = attribute role { text } + db.synopsis.label.attribute = db.label.attribute + db.synopsis.attlist = + db.synopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.synopsis.label.attribute? + db.synopsis = + + ## A general-purpose element for representing the syntax of commands or functions + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:synopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element synopsis { db.synopsis.attlist, db.verbatim.contentmodel } +} +div { + db.synopsisinfo.role.attribute = attribute role { text } + db.synopsisinfo.attlist = + db.synopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.synopsisinfo = + + ## Information supplementing synopsis + element synopsisinfo { + db.synopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcsynopsis.info = db._info.title.forbidden + db.funcsynopsis.role.attribute = attribute role { text } + db.funcsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.funcsynopsis.attlist = + db.funcsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.funcsynopsis.packageref.attribute? + db.funcsynopsis = + + ## The syntax summary for a function definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:funcsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element funcsynopsis { + db.funcsynopsis.attlist, + db.funcsynopsis.info, + (db.funcsynopsisinfo | db.funcprototype)+ + } +} +div { + db.funcsynopsisinfo.role.attribute = attribute role { text } + db.funcsynopsisinfo.attlist = + db.funcsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.funcsynopsisinfo = + + ## Information supplementing the funcdefs of a funcsynopsis + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:funcsynopsisinfo" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element funcsynopsisinfo { + db.funcsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcprototype.role.attribute = attribute role { text } + db.funcprototype.attlist = + db.funcprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcprototype = + + ## The prototype of a function + element funcprototype { + db.funcprototype.attlist, + db.modifier*, + db.funcdef, + (db.void + | db.varargs + | ((db.paramdef | db.group.paramdef)+, db.varargs?)), + db.modifier* + } +} +div { + db.funcdef.role.attribute = attribute role { text } + db.funcdef.attlist = + db.funcdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcdef = + + ## A function (subroutine) name and its return type + element funcdef { + db.funcdef.attlist, + (db._text | db.type | db.templatename | db.void | db.function)* + } +} +div { + db.function.role.attribute = attribute role { text } + db.function.attlist = + db.function.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.function = + + ## The name of a function or subroutine, as in a programming language + element function { db.function.attlist, db._text } +} +div { + db.void.role.attribute = attribute role { text } + db.void.attlist = + db.void.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.void = + + ## An empty element in a function synopsis indicating that the function in question takes no arguments + element void { db.void.attlist, empty } +} +div { + db.varargs.role.attribute = attribute role { text } + db.varargs.attlist = + db.varargs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varargs = + + ## An empty element in a function synopsis indicating a variable number of arguments + element varargs { db.varargs.attlist, empty } +} +div { + db.group.paramdef.role.attribute = attribute role { text } + db.group.paramdef.choice.attribute = db.choice.opt.attribute + db.group.paramdef.attlist = + db.group.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.paramdef.choice.attribute? + db.group.paramdef = + + ## A group of parameters + element group { + db.group.paramdef.attlist, (db.paramdef | db.group.paramdef)+ + } +} +div { + db.paramdef.role.attribute = attribute role { text } + db.paramdef.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted to indicate that it is required. + "req" + db.paramdef.choice.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] + attribute choice { db.paramdef.choice.enumeration } + db.paramdef.attlist = + db.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.paramdef.choice.attribute? + db.paramdef = + + ## Information about a function parameter in a programming language + element paramdef { + db.paramdef.attlist, + (db._text + | db.initializer + | db.modifier + | db.type + | db.templatename + | db.parameter + | db.funcparams)* + } +} +div { + db.funcparams.role.attribute = attribute role { text } + db.funcparams.attlist = + db.funcparams.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcparams = + + ## Parameters for a function referenced through a function pointer in a synopsis + element funcparams { db.funcparams.attlist, db._text } +} +div { + db.classsynopsis.info = db._info.title.forbidden + db.classsynopsis.role.attribute = attribute role { text } + db.classsynopsis.class.enumeration = + + ## This is the synopsis of a class + "class" + | + ## This is the synopsis of an interface + "interface" + db.classsynopsis.class.attribute = + + ## Specifies the nature of the synopsis + attribute class { db.classsynopsis.class.enumeration } + db.classsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.classsynopsis.attlist = + db.classsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.classsynopsis.class.attribute? + & db.classsynopsis.packageref.attribute? + db.classsynopsis = + + ## The syntax summary for a class definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:classsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element classsynopsis { + db.classsynopsis.attlist, + db.classsynopsis.info, + db.classsynopsisinfo*, + db.templatename*, + db.oo.inlines, + (db.template + | db.ooexception + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis + | db.classsynopsisinfo)* + } +} +div { + db.classsynopsisinfo.role.attribute = attribute role { text } + db.classsynopsisinfo.attlist = + db.classsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.classsynopsisinfo = + + ## Information supplementing the contents of a classsynopsis + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:classsynopsisinfo" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element classsynopsisinfo { + db.classsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.ooclass.role.attribute = attribute role { text } + db.ooclass.attlist = + db.ooclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooclass = + + ## A class in an object-oriented programming language + element ooclass { + db.ooclass.attlist, + (db.package | db.modifier)*, + db.classname, + db.modifier* + } +} +div { + db.oointerface.role.attribute = attribute role { text } + db.oointerface.attlist = + db.oointerface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.oointerface = + + ## An interface in an object-oriented programming language + element oointerface { + db.oointerface.attlist, + (db.package | db.modifier)*, + db.interfacename, + db.modifier* + } +} +div { + db.ooexception.role.attribute = attribute role { text } + db.ooexception.attlist = + db.ooexception.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooexception = + + ## An exception in an object-oriented programming language + element ooexception { + db.ooexception.attlist, + (db.package | db.modifier)*, + db.exceptionname, + db.modifier* + } +} +db.modifier.xml.space.attribute = + + ## Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + attribute xml:space { + + ## Extra whitespace and line breaks must be preserved. + [ + # Ideally the definition of xml:space used on modifier would be + # different from the definition used on the verbatim elements. The + # verbatim elements forbid the use of xml:space="default" which + # wouldn't be a problem on modifier. But doing that causes the + # generated XSD schemas to be broken so I'm just reusing the existing + # definition for now. It won't be backwards incompatible to fix this + # problem in the future. + # | ## Extra whitespace and line breaks are not preserved. + # "default" + + ] + "preserve" + } +div { + db.modifier.role.attribute = attribute role { text } + db.modifier.attlist = + db.modifier.xml.space.attribute? + & db.modifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.modifier = + + ## Modifiers in a synopsis + element modifier { db.modifier.attlist, db._text } +} +div { + db.interfacename.role.attribute = attribute role { text } + db.interfacename.attlist = + db.interfacename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.interfacename = + + ## The name of an interface + element interfacename { db.interfacename.attlist, db._text } +} +div { + db.exceptionname.role.attribute = attribute role { text } + db.exceptionname.attlist = + db.exceptionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.exceptionname = + + ## The name of an exception + element exceptionname { db.exceptionname.attlist, db._text } +} +div { + db.fieldsynopsis.info = db._info.title.forbidden + db.fieldsynopsis.role.attribute = attribute role { text } + db.fieldsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.fieldsynopsis.attlist = + db.fieldsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.fieldsynopsis.packageref.attribute? + db.fieldsynopsis = + + ## The name of a field in a class definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:fieldsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element fieldsynopsis { + db.fieldsynopsis.attlist, + db.fieldsynopsis.info, + db.synopsisinfo*, + db.modifier*, + (db.type | db.templatename)*, + db.varname, + db.modifier*, + db.initializer?, + db.synopsisinfo* + } +} +div { + db.initializer.role.attribute = attribute role { text } + db.initializer.attlist = + db.initializer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.initializer.inlines = db._text | db.mathphrase | db.markup.inlines + db.initializer = + + ## The initializer for a fieldsynopsis + element initializer { + db.initializer.attlist, db.initializer.inlines* + } +} +div { + db.constructorsynopsis.info = db._info.title.forbidden + db.constructorsynopsis.role.attribute = attribute role { text } + db.constructorsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.constructorsynopsis.attlist = + db.constructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.constructorsynopsis.packageref.attribute? + db.constructorsynopsis = + + ## A syntax summary for a constructor + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:constructorsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element constructorsynopsis { + db.constructorsynopsis.attlist, + db.constructorsynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.methodname?, + ((db.methodparam | db.group.methodparam)+ | db.void?), + db.modifier*, + db.exceptionname*, + db.synopsisinfo* + } +} +div { + db.destructorsynopsis.info = db._info.title.forbidden + db.destructorsynopsis.role.attribute = attribute role { text } + db.destructorsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.destructorsynopsis.attlist = + db.destructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.destructorsynopsis.packageref.attribute? + db.destructorsynopsis = + + ## A syntax summary for a destructor + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:destructorsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element destructorsynopsis { + db.destructorsynopsis.attlist, + db.destructorsynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.methodname?, + ((db.methodparam | db.group.methodparam)+ | db.void?), + db.modifier*, + db.exceptionname*, + db.synopsisinfo* + } +} +div { + db.methodsynopsis.info = db._info.title.forbidden + db.methodsynopsis.role.attribute = attribute role { text } + db.methodsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.methodsynopsis.attlist = + db.methodsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.methodsynopsis.packageref.attribute? + db.methodsynopsis = + + ## A syntax summary for a method + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:methodsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element methodsynopsis { + db.methodsynopsis.attlist, + db.methodsynopsis.info, + db.synopsisinfo*, + (db.templatename | db.modifier)*, + (db.type | db.void)?, + db.methodname, + db.templatename*, + ((db.methodparam | db.group.methodparam)+ | db.void), + (db.exceptionname | db.modifier | db.templatename)*, + db.synopsisinfo* + } +} +div { + db.methodname.role.attribute = attribute role { text } + db.methodname.attlist = + db.methodname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.methodname = + + ## The name of a method + element methodname { db.methodname.attlist, db._text } +} +div { + db.methodparam.role.attribute = attribute role { text } + db.methodparam.rep.attribute = db.rep.attribute + db.methodparam.choice.attribute = db.choice.req.attribute + db.methodparam.attlist = + db.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.methodparam.rep.attribute? + & db.methodparam.choice.attribute? + db.methodparam = + + ## Parameters to a method + element methodparam { + db.methodparam.attlist, + (db.modifier | db.type | db.templatename)*, + ((db.parameter, db.initializer?) | db.funcparams), + db.modifier* + } +} +div { + db.group.methodparam.role.attribute = attribute role { text } + db.group.methodparam.choice.attribute = db.choice.opt.attribute + db.group.methodparam.attlist = + db.group.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.methodparam.choice.attribute? + db.group.methodparam = + + ## A group of method parameters + element group { + db.group.methodparam.attlist, + (db.methodparam | db.group.methodparam)+ + } +} +div { + db.varname.role.attribute = attribute role { text } + db.varname.attlist = + db.varname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varname = + + ## The name of a variable + element varname { db.varname.attlist, db._text } +} +div { + db.buildtarget.role.attribute = attribute role { text } + db.buildtarget.attlist = + db.buildtarget.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.buildtarget = + + ## Target of a build + element buildtarget { db.buildtarget.attlist, db._text } +} +div { + db.returnvalue.role.attribute = attribute role { text } + db.returnvalue.attlist = + db.returnvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.returnvalue = + + ## The value returned by a function + element returnvalue { db.returnvalue.attlist, db._text } +} +div { + db.type.role.attribute = attribute role { text } + db.type.class.enumeration = + + ## Combined type is union of nested types + "union" + | + ## Combined type is intersection of nested types + "intersection" + db.type.class.attribute = + + ## Specifies the way how are nested types combined together + attribute class { db.type.class.enumeration } + db.type.attlist = + db.type.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.type.class.attribute? + db.type = + + ## The classification of a value + element type { + db.type.attlist, (db._text | db.programming.inlines)* + } +} +div { + db.classname.role.attribute = attribute role { text } + db.classname.attlist = + db.classname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.classname = + + ## The name of a class, in the object-oriented programming sense + element classname { db.classname.attlist, db._text } +} +div { + db.templatename.role.attribute = attribute role { text } + db.templatename.attlist = + db.templatename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.templatename = + + ## The identifier for a template, in the generic programming sense + element templatename { db.templatename.attlist, db._text } +} +div { + db.template.role.attribute = attribute role { text } + db.template.attlist = + db.template.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.template = + + ## The definition of a template, in the generic programming sense + element template { + db.template.attlist, + (((db.modifier | db.type | db._text)*, + db.templatename, + (db.modifier | db.type | db._text)*) + | db.specializedtemplate) + } +} +div { + db.specializedtemplate.role.attribute = attribute role { text } + db.specializedtemplate.attlist = + db.specializedtemplate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.specializedtemplate = + + ## The specialization of a template identifier, in the generic programming sense + element specializedtemplate { + db.specializedtemplate.attlist, + (db.modifier | db.type | db._text)* + } +} +div { + db.packagesynopsis.info = db._info.title.forbidden + db.packagesynopsis.role.attribute = attribute role { text } + db.packagesynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.packagesynopsis.attlist = + db.packagesynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.packagesynopsis.packageref.attribute? + db.packagesynopsis = + + ## The syntax summary for a package definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:packagesynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element packagesynopsis { + db.packagesynopsis.attlist, + db.packagesynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.package, + db.modifier*, + (db.synopsis.blocks | db.synopsisinfo)* + } +} +div { + db.macroname.role.attribute = attribute role { text } + db.macroname.attlist = + db.macroname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macroname = + + ## The name of a macro (a code-generating function) + element macroname { db.macroname.attlist, db._text } +} +div { + db.macrosynopsis.info = db._info.title.forbidden + db.macrosynopsis.role.attribute = attribute role { text } + db.macrosynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.macrosynopsis.attlist = + db.macrosynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.macrosynopsis.packageref.attribute? + db.macrosynopsis = + + ## The syntax summary for a macro definition (code-generating function) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:macrosynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element macrosynopsis { + db.macrosynopsis.attlist, + db.macrosynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.macroname, + (db.package | db.modifier)*, + db.macroprototype+, + db.synopsisinfo* + } +} +div { + db.macroprototype.role.attribute = attribute role { text } + db.macroprototype.attlist = + db.macroprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macroprototype = + + ## The prototype of a macro (code-generating function) + element macroprototype { + db.macroprototype.attlist, + db.modifier*, + db.macrodef, + (db.void + | db.varargs + | ((db.paramdef | db.group.paramdef)+, db.varargs?)), + db.modifier* + } +} +div { + db.macrodef.role.attribute = attribute role { text } + db.macrodef.attlist = + db.macrodef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macrodef = + + ## A macro name and its return type + element macrodef { + db.macrodef.attlist, (db.type | db.templatename)*, db.macroname + } +} +div { + db.unionname.role.attribute = attribute role { text } + db.unionname.attlist = + db.unionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.unionname = + + ## The name of a union of types + element unionname { db.unionname.attlist, db._text } +} +div { + db.union.role.attribute = attribute role { text } + db.union.attlist = + db.union.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.union = + + ## The definition of a union of types, which may be more than a name + element union { db.union.attlist, db.type+ } +} +div { + db.unionsynopsis.info = db._info.title.forbidden + db.unionsynopsis.role.attribute = attribute role { text } + # N.B. the enumeration is explicitly identical to the enumeration + # on enumsynopsis by default. + db.unionsynopsis.ordered.attribute = + + ## Indicates how the value of a union is specified. + attribute ordered { db.enumsynopsis.ordered.enumeration } + db.unionsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.unionsynopsis.attlist = + db.unionsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.unionsynopsis.ordered.attribute? + & db.unionsynopsis.packageref.attribute? + db.unionsynopsis = + + ## The syntax summary for a union-of-types definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:unionsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element unionsynopsis { + db.unionsynopsis.attlist, + db.unionsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.unionname?, + db.union, + (db.package | db.modifier)*, + db.synopsisinfo* + } +} +div { + db.enumname.role.attribute = attribute role { text } + db.enumname.attlist = + db.enumname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumname = + + ## The name of an enumeration + element enumname { db.enumname.attlist, db._text } +} +div { + db.enumvalue.role.attribute = attribute role { text } + db.enumvalue.attlist = + db.enumvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumvalue = + + ## The value an enumerated type can take + element enumvalue { db.enumvalue.attlist, db._text } +} +div { + db.enumitemdescription.role.attribute = attribute role { text } + db.enumitemdescription.attlist = + db.enumitemdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumitemdescription = + + ## The description of a value an enumerated type can take + element enumitemdescription { + db.enumitemdescription.attlist, db.all.inlines* + } +} +div { + db.enumidentifier.role.attribute = attribute role { text } + db.enumidentifier.attlist = + db.enumidentifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumidentifier = + + ## The identifier of a value an enumerated type can take + element enumidentifier { db.enumidentifier.attlist, db._text } +} +div { + db.enumitem.role.attribute = attribute role { text } + db.enumitem.attlist = + db.enumitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumitem = + + ## A value an enumerated type can take and its description + element enumitem { + db.enumitem.attlist, + db.enumidentifier, + db.enumvalue*, + db.enumitemdescription? + } +} +div { + db.enumsynopsis.info = db._info.title.forbidden + db.enumsynopsis.role.attribute = attribute role { text } + db.enumsynopsis.ordered.enumeration = + + ## Value of enum is specified explicitly using enumvalue + "0" + | + ## Value of enum is inferred from its position + "1" + db.enumsynopsis.ordered.attribute = + + ## Indicates how the value of an enumeration is specified. + attribute ordered { db.enumsynopsis.ordered.enumeration } + db.enumsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.enumsynopsis.attlist = + db.enumsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.enumsynopsis.ordered.attribute? + & db.enumsynopsis.packageref.attribute? + db.enumsynopsis = + + ## The syntax summary for an enumerated-type definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:enumsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element enumsynopsis { + db.enumsynopsis.attlist, + db.enumsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + (db.enumname, db.modifier*)?, + db.enumitem+, + db.synopsisinfo* + } +} +div { + db.typedefname.role.attribute = attribute role { text } + db.typedefname.attlist = + db.typedefname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.typedefname = + + ## The name of a type alias + element typedefname { db.typedefname.attlist, db._text } +} +div { + db.typedefsynopsis.info = db._info.title.forbidden + db.typedefsynopsis.role.attribute = attribute role { text } + db.typedefsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.typedefsynopsis.attlist = + db.typedefsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.typedefsynopsis.packageref.attribute? + db.typedefsynopsis = + + ## The syntax summary for a type-alias definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:typedefsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element typedefsynopsis { + db.typedefsynopsis.attlist, + db.typedefsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.typedefname, + (db.package | db.modifier)*, + db.synopsisinfo* + } +} +div { + db.programlisting.role.attribute = attribute role { text } + db.programlisting.width.attribute = db.width.characters.attribute + db.programlisting.attlist = + db.programlisting.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.programlisting.width.attribute? + db.programlisting = + + ## A literal listing of all or part of a program + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:programlisting" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element programlisting { + db.programlisting.attlist, db.verbatim.contentmodel + } +} +db.admonition.blocks = + db.caution | db.danger | db.important | db.note | db.tip | db.warning +db.admonition.contentmodel = db._info.title.only, db.all.blocks+ +div { + db.caution.role.attribute = attribute role { text } + db.caution.attlist = + db.caution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caution = + + ## A note of caution + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:caution" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element caution { db.caution.attlist, db.admonition.contentmodel } +} +div { + db.danger.role.attribute = attribute role { text } + db.danger.attlist = + db.danger.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.danger = + + ## An admonition set off from the text indicating hazardous situation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:danger" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element danger { db.danger.attlist, db.admonition.contentmodel } +} +div { + db.important.role.attribute = attribute role { text } + db.important.attlist = + db.important.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.important = + + ## An admonition set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:important" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element important { + db.important.attlist, db.admonition.contentmodel + } +} +div { + db.note.role.attribute = attribute role { text } + db.note.attlist = + db.note.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.note = + + ## A message set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:note" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element note { db.note.attlist, db.admonition.contentmodel } +} +div { + db.tip.role.attribute = attribute role { text } + db.tip.attlist = + db.tip.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tip = + + ## A suggestion to the user, set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:tip" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element tip { db.tip.attlist, db.admonition.contentmodel } +} +div { + db.warning.role.attribute = attribute role { text } + db.warning.attlist = + db.warning.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.warning = + + ## An admonition set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:warning" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element warning { db.warning.attlist, db.admonition.contentmodel } +} +db.error.inlines = + db.errorcode | db.errortext | db.errorname | db.errortype +div { + db.errorcode.role.attribute = attribute role { text } + db.errorcode.attlist = + db.errorcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorcode = + + ## An error code + element errorcode { db.errorcode.attlist, db._text } +} +div { + db.errorname.role.attribute = attribute role { text } + db.errorname.attlist = + db.errorname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorname = + + ## An error name + element errorname { db.errorname.attlist, db._text } +} +div { + db.errortext.role.attribute = attribute role { text } + db.errortext.attlist = + db.errortext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortext = + + ## An error message. + element errortext { db.errortext.attlist, db._text } +} +div { + db.errortype.role.attribute = attribute role { text } + db.errortype.attlist = + db.errortype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortype = + + ## The classification of an error message + element errortype { db.errortype.attlist, db._text } +} +db.systemitem.inlines = db._text | db.co +div { + db.systemitem.class.enumeration = + + ## A daemon or other system process (syslogd) + "daemon" + | + ## A domain name (example.com) + "domainname" + | + ## An ethernet address (00:05:4E:49:FD:8E) + "etheraddress" + | + ## An event of some sort (SIGHUP) + "event" + | + ## An event handler of some sort (hangup) + "eventhandler" + | + ## A filesystem (ext3) + "filesystem" + | + ## A fully qualified domain name (my.example.com) + "fqdomainname" + | + ## A group name (wheel) + "groupname" + | + ## A network interface (eth0) + "interface" + | + ## An IP address (127.0.0.1) + "ipaddress" + | + ## A library (libncurses) + "library" + | + ## A macro + "macro" + | + ## A netmask (255.255.255.192) + "netmask" + | + ## A newsgroup (comp.text.xml) + "newsgroup" + | + ## An operating system name (Hurd) + "osname" + | + ## A process (gnome-cups-icon) + "process" + | + ## A protocol (ftp) + "protocol" + | + ## A resource + "resource" + | + ## A security context (a role, permission, or security token, for example) + "securitycontext" + | + ## A server (mail.example.com) + "server" + | + ## A service (ppp) + "service" + | + ## A system name (hephaistos) + "systemname" + | + ## A user name (ndw) + "username" + db.systemitem.class-enum.attribute = + + ## Identifies the nature of the system item + attribute class { db.systemitem.class.enumeration }? + db.systemitem.class-other.attribute = + + ## Identifies the nature of the non-standard system item + attribute otherclass { xsd:NMTOKEN } + db.systemitem.class-other.attributes = + + ## Identifies the kind of systemitemgraphic identifier + attribute class { + + ## Indicates that the system item is some 'other' kind. + "other" + } + & db.systemitem.class-other.attribute + db.systemitem.class.attribute = + db.systemitem.class-enum.attribute + | db.systemitem.class-other.attributes + db.systemitem.role.attribute = attribute role { text } + db.systemitem.attlist = + db.systemitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.systemitem.class.attribute? + db.systemitem = + + ## A system-related item or term + element systemitem { db.systemitem.attlist, db.systemitem.inlines* } +} +div { + db.option.role.attribute = attribute role { text } + db.option.attlist = + db.option.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.option = + + ## An option for a software command + element option { db.option.attlist, db._text } +} +div { + db.optional.role.attribute = attribute role { text } + db.optional.attlist = + db.optional.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.optional = + + ## Optional information + element optional { db.optional.attlist, (db._text | db.optional)* } +} +div { + db.property.role.attribute = attribute role { text } + db.property.attlist = + db.property.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.property = + + ## A unit of data associated with some part of a computer system + element property { db.property.attlist, db._text } +} +div { + db.topic.status.attribute = db.status.attribute + db.topic.role.attribute = attribute role { text } + db.topic.type.attribute = + + ## Identifies the topic type + attribute type { text } + db.topic.attlist = + db.topic.role.attribute? + & db.topic.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.topic.status.attribute? + db.topic.info = db._info.title.req + db.topic = + + ## A modular unit of documentation not part of any particular narrative flow + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:topic" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element topic { + db.topic.attlist, + db.topic.info, + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* + } +} +db._any = + element * - (db:* | its:*) { + (attribute * { text } + | text + | db._any)* + } +db._any_other.attribute = + + ## Any attribute in an other explicit namespace. + attribute * - (db:* | xml:* | xlink:* | trans:* | its:* | local:*) { + text + } +# Include base ITS schema + +## Version of ITS +its-version.type = xsd:string { pattern = "[0-9]+\.[0-9]+" } + +## The query language to be used for processing the rules +its-queryLanguage.type = "xpath" | "css" | text +its-absolute-selector.type = + + ## Absolute selector + string +its-relative-selector.type = + + ## Relative selector + string +its-xpath-expression.type = string +its-confidence.type = + xsd:double { minInclusive = "0" maxInclusive = "1" } + +## The Translate data category information to be attached to the current node +its-translate.type = + + ## The nodes need to be translated + "yes" + | + ## The nodes must not be translated + "no" +its-locNote.type = string + +## The type of localization note +its-locNoteType.type = + + ## Localization note is an alert + "alert" + | + ## Localization note is a description + "description" +its-locNoteRef.type = xsd:anyURI +its-termInfoRef.type = xsd:anyURI + +## Indicates a term locally +its-term.type = + + ## The value 'yes' means that this is a term + "yes" + | + ## The value 'no' means that this is not a term + "no" +its-termConfidence.type = its-confidence.type + +## The text direction for the context +its-dir.type = + + ## Left-to-right text + "ltr" + | + ## Right-to-left text + "rtl" + | + ## Left-to-right override + "lro" + | + ## Right-to-left override + "rlo" + +## States whether current context is regarded as "within text" +its-withinText.type = + + ## The element and its content are part of the flow of its parent element + "yes" + | + ## The element splits the text flow of its parent element and its content is an independent text flow + "no" + | + ## The element is part of the flow of its parent element, its content is an independent flow + "nested" + +## A comma separated list of mappings between values in the content +## and workflow specific values. The values may contain spaces; in +## that case they MUST be delimited by quotation marks. +its-domainMapping.type = string +its-taConfidence.type = its-confidence.type +its-taClassRefPointer.type = its-relative-selector.type +its-taClassRef.type = xsd:anyURI +its-taIdentRef.type = xsd:anyURI +its-taIdent.type = string +its-taSource.type = string +its-taIdentPointer.type = its-relative-selector.type +its-taIdentRefPointer.type = its-relative-selector.type +its-taSourcePointer.type = its-relative-selector.type +its-localeFilterList.type = string +its-localeFilterType.type = "include" | "exclude" +its-provenanceRecordsRef.type = xsd:anyURI +its-person.type = string +its-personRef.type = xsd:anyURI +its-org.type = string +its-orgRef.type = xsd:anyURI +its-tool.type = string +its-toolRef.type = xsd:anyURI +its-revPerson.type = string +its-revPersonRef.type = xsd:anyURI +its-revOrg.type = string +its-revOrgRef.type = xsd:anyURI +its-revTool.type = string +its-revToolRef.type = xsd:anyURI +its-provRef.type = list { xsd:anyURI+ } +its-locQualityIssuesRef.type = xsd:anyURI +its-locQualityIssueType.type = + "terminology" + | "mistranslation" + | "omission" + | "untranslated" + | "addition" + | "duplication" + | "inconsistency" + | "grammar" + | "legal" + | "register" + | "locale-specific-content" + | "locale-violation" + | "style" + | "characters" + | "misspelling" + | "typographical" + | "formatting" + | "inconsistent-entities" + | "numbers" + | "markup" + | "pattern-problem" + | "whitespace" + | "internationalization" + | "length" + | "non-conformance" + | "uncategorized" + | "other" +its-locQualityIssueComment.type = string +its-locQualityIssueSeverity.type = + xsd:double { minInclusive = "0" maxInclusive = "100" } +its-locQualityIssueProfileRef.type = xsd:anyURI +its-locQualityIssueEnabled.type = "yes" | "no" +its-locQualityRatingScore.type = + xsd:double { minInclusive = "0" maxInclusive = "100" } +its-locQualityRatingVote.type = xsd:integer +its-locQualityRatingScoreThreshold.type = + xsd:double { minInclusive = "0" maxInclusive = "100" } +its-locQualityRatingVoteThreshold.type = xsd:integer +its-locQualityRatingProfileRef.type = xsd:anyURI +its-mtConfidence.type = its-confidence.type +its-allowedCharacters.type = string +its-storageSize.type = xsd:nonNegativeInteger +its-storageEncoding.type = string +its-lineBreakType.type = "cr" | "lf" | "crlf" +its-annotatorsRef.type = string +its-attribute.translate = attribute its:translate { its-translate.type } +its-attribute.translate.nons = + attribute translate { its-translate.type } +its-attribute.dir.nons = attribute dir { its-dir.type } +its-attribute.locNote = attribute its:locNote { its-locNote.type } +its-attribute.locNote.nons = attribute locNote { its-locNote.type } +its-attribute.locNoteType = + attribute its:locNoteType { its-locNoteType.type } +its-attribute.locNoteType.nons = + attribute locNoteType { its-locNoteType.type } +its-attribute.locNoteRef = + attribute its:locNoteRef { its-locNoteRef.type } +its-attribute.locNoteRef.nons = + attribute locNoteRef { its-locNoteRef.type } +its-attribute.termInfoRef = + attribute its:termInfoRef { its-termInfoRef.type } +its-attribute.termInfoRef.nons = + attribute termInfoRef { its-termInfoRef.type } +its-attribute.term = attribute its:term { its-term.type } +its-attribute.term.nons = attribute term { its-term.type } +its-attribute.termConfidence = + attribute its:termConfidence { its-termConfidence.type } +its-attribute.termConfidence.nons = + attribute termConfidence { its-termConfidence.type } +its-attribute.withinText = + attribute its:withinText { its-withinText.type } +its-attribute.withinText.nons = + attribute withinText { its-withinText.type } +its-attribute.domainMapping.nons = + attribute domainMapping { its-domainMapping.type } +its-attribute.taConfidence = + attribute its:taConfidence { its-taConfidence.type } +its-attribute.taConfidence.nons = + attribute taConfidence { its-taConfidence.type } +its-attribute.taClassRef = + attribute its:taClassRef { its-taClassRef.type } +its-attribute.taClassRef.nons = + attribute taClassRef { its-taClassRef.type } +its-attribute.taIdent = attribute its:taIdent { its-taIdent.type } +its-attribute.taIdent.nons = attribute taIdent { its-taIdent.type } +its-attribute.taIdentRef = + attribute its:taIdentRef { its-taIdentRef.type } +its-attribute.taIdentRef.nons = + attribute taIdentRef { its-taIdentRef.type } +its-attribute.taSource = attribute its:taSource { its-taSource.type } +its-attribute.taSource.nons = attribute taSource { its-taSource.type } +its-attribute.localeFilterList = + attribute its:localeFilterList { its-localeFilterList.type } +its-attribute.localeFilterList.nons = + attribute localeFilterList { its-localeFilterList.type } +its-attribute.localeFilterType = + attribute its:localeFilterType { its-localeFilterType.type } +its-attribute.localeFilterType.nons = + attribute localeFilterType { its-localeFilterType.type } +its-attribute.person = attribute its:person { its-person.type } +its-attribute.person.nons = attribute person { its-person.type } +its-attribute.personRef = attribute its:personRef { its-personRef.type } +its-attribute.personRef.nons = + attribute personRef { its-personRef.type } +its-attribute.org = attribute its:org { its-org.type } +its-attribute.org.nons = attribute org { its-org.type } +its-attribute.orgRef = attribute its:orgRef { its-orgRef.type } +its-attribute.orgRef.nons = attribute orgRef { its-orgRef.type } +its-attribute.tool = attribute its:tool { its-tool.type } +its-attribute.tool.nons = attribute tool { its-tool.type } +its-attribute.toolRef = attribute its:toolRef { its-toolRef.type } +its-attribute.toolRef.nons = attribute toolRef { its-toolRef.type } +its-attribute.revPerson = attribute its:revPerson { its-revPerson.type } +its-attribute.revPerson.nons = + attribute revPerson { its-revPerson.type } +its-attribute.revPersonRef = + attribute its:revPersonRef { its-revPersonRef.type } +its-attribute.revPersonRef.nons = + attribute revPersonRef { its-revPersonRef.type } +its-attribute.revOrg = attribute its:revOrg { its-revOrg.type } +its-attribute.revOrg.nons = attribute revOrg { its-revOrg.type } +its-attribute.revOrgRef = attribute its:revOrgRef { its-revOrgRef.type } +its-attribute.revOrgRef.nons = + attribute revOrgRef { its-revOrgRef.type } +its-attribute.revTool = attribute its:revTool { its-revTool.type } +its-attribute.revTool.nons = attribute revTool { its-revTool.type } +its-attribute.revToolRef = + attribute its:revToolRef { its-revToolRef.type } +its-attribute.revToolRef.nons = + attribute revToolRef { its-revToolRef.type } +its-attribute.provRef = attribute its:provRef { its-provRef.type } +its-attribute.provRef.nons = attribute provRef { its-provRef.type } +its-attribute.provenanceRecordsRef = + attribute its:provenanceRecordsRef { its-provenanceRecordsRef.type } +its-attribute.provenanceRecordsRef.nons = + attribute provenanceRecordsRef { its-provenanceRecordsRef.type } +its-attribute.locQualityIssuesRef = + attribute its:locQualityIssuesRef { its-locQualityIssuesRef.type } +its-attribute.locQualityIssuesRef.nons = + attribute locQualityIssuesRef { its-locQualityIssuesRef.type } +its-attribute.locQualityIssueType = + attribute its:locQualityIssueType { its-locQualityIssueType.type } +its-attribute.locQualityIssueType.nons = + attribute locQualityIssueType { its-locQualityIssueType.type } +its-attribute.locQualityIssueComment = + attribute its:locQualityIssueComment { + its-locQualityIssueComment.type + } +its-attribute.locQualityIssueComment.nons = + attribute locQualityIssueComment { its-locQualityIssueComment.type } +its-attribute.locQualityIssueSeverity = + attribute its:locQualityIssueSeverity { + its-locQualityIssueSeverity.type + } +its-attribute.locQualityIssueSeverity.nons = + attribute locQualityIssueSeverity { its-locQualityIssueSeverity.type } +its-attribute.locQualityIssueProfileRef = + attribute its:locQualityIssueProfileRef { + its-locQualityIssueProfileRef.type + } +its-attribute.locQualityIssueProfileRef.nons = + attribute locQualityIssueProfileRef { + its-locQualityIssueProfileRef.type + } +its-attribute.locQualityIssueEnabled = + attribute its:locQualityIssueEnabled { + its-locQualityIssueEnabled.type + } +its-attribute.locQualityIssueEnabled.nons = + attribute locQualityIssueEnabled { its-locQualityIssueEnabled.type } +its-attribute.locQualityRatingScore = + attribute its:locQualityRatingScore { its-locQualityRatingScore.type } +its-attribute.locQualityRatingScore.nons = + attribute locQualityRatingScore { its-locQualityRatingScore.type } +its-attribute.locQualityRatingVote = + attribute its:locQualityRatingVote { its-locQualityRatingVote.type } +its-attribute.locQualityRatingVote.nons = + attribute locQualityRatingVote { its-locQualityRatingVote.type } +its-attribute.locQualityRatingScoreThreshold = + attribute its:locQualityRatingScoreThreshold { + its-locQualityRatingScoreThreshold.type + } +its-attribute.locQualityRatingScoreThreshold.nons = + attribute locQualityRatingScoreThreshold { + its-locQualityRatingScoreThreshold.type + } +its-attribute.locQualityRatingVoteThreshold = + attribute its:locQualityRatingVoteThreshold { + its-locQualityRatingVoteThreshold.type + } +its-attribute.locQualityRatingVoteThreshold.nons = + attribute locQualityRatingVoteThreshold { + its-locQualityRatingVoteThreshold.type + } +its-attribute.locQualityRatingProfileRef = + attribute its:locQualityRatingProfileRef { + its-locQualityRatingProfileRef.type + } +its-attribute.locQualityRatingProfileRef.nons = + attribute locQualityRatingProfileRef { + its-locQualityRatingProfileRef.type + } +its-attribute.mtConfidence = + attribute its:mtConfidence { its-mtConfidence.type } +its-attribute.mtConfidence.nons = + attribute mtConfidence { its-mtConfidence.type } +its-attribute.allowedCharacters = + attribute its:allowedCharacters { its-allowedCharacters.type } +its-attribute.allowedCharacters.nons = + attribute allowedCharacters { its-allowedCharacters.type } +its-attribute.storageSize = + attribute its:storageSize { its-storageSize.type } +its-attribute.storageSize.nons = + attribute storageSize { its-storageSize.type } +its-attribute.storageEncoding = + attribute its:storageEncoding { its-storageEncoding.type } +its-attribute.storageEncoding.nons = + attribute storageEncoding { its-storageEncoding.type } +its-attribute.lineBreakType = + attribute its:lineBreakType { its-lineBreakType.type } +its-attribute.lineBreakType.nons = + attribute lineBreakType { its-lineBreakType.type } +its-attribute.annotatorsRef = + attribute its:annotatorsRef { its-annotatorsRef.type } +its-attribute.annotatorsRef.nons = + attribute annotatorsRef { its-annotatorsRef.type } +its-attribute.version = + + ## Version of ITS + attribute its:version { its-version.type } +its-attribute.version.nons = + + ## Version of ITS + attribute version { its-version.type } +its-attribute.queryLanguage.nons = + attribute queryLanguage { its-queryLanguage.type } +its-attribute.xlink.href = attribute xlink:href { xsd:anyURI } +its-attribute.xlink.type = attribute xlink:type { "simple" } +its-attribute.selector = + attribute selector { its-absolute-selector.type } +its-foreign-attribute = attribute * - local:* { text } +its-foreign-no-xml-id-attribute = + attribute * - (local:* | xml:id) { text } +its-foreign-no-xlink-attribute = + attribute * - (local:* | xlink:*) { text } +its-any-attribute = attribute * { text } +its-any-element = + element * { (its-any-attribute* | text | its-any-element)* } +its-rules = + + ## Container for global rules + element its:rules { its-rules.content, its-rules.attributes } +its-rules.content = + its-param*, + (its-translateRule + | its-locNoteRule + | its-termRule + | its-dirRule + | its-langRule + | its-withinTextRule + | its-domainRule + | its-textAnalysisRule + | its-localeFilterRule + | its-provRule + | its-locQualityIssueRule + | its-mtConfidenceRule + | its-externalResourceRefRule + | its-targetPointerRule + | its-idValueRule + | its-preserveSpaceRule + | its-allowedCharactersRule + | its-storageSizeRule + | its-foreign-element)* +its-rules.attributes = + its-attribute.version.nons, + (its-attribute.xlink.href, its-attribute.xlink.type?)?, + its-attribute.queryLanguage.nons?, + its-foreign-no-xlink-attribute* +its-param = + + ## Declaration of variable used in selectors + element its:param { its-param.content, its-param.attributes } +its-param.content = text +its-param.attributes = + attribute name { xsd:string }, + its-foreign-attribute* +its-local.attributes = + its-attribute.translate? + & its-attribute.dir? + & ((its-attribute.locNote | its-attribute.locNoteRef), + its-attribute.locNoteType?)? + & (its-attribute.term, + its-attribute.termInfoRef?, + its-attribute.termConfidence?)? + & its-attribute.withinText? + & (its-attribute.taConfidence? + & (its-attribute.taClassRef? + & ((its-attribute.taSource, its-attribute.taIdent) + | its-attribute.taIdentRef)?))? + & (its-attribute.localeFilterList, its-attribute.localeFilterType?)? + & (((its-attribute.person | its-attribute.personRef)? + & (its-attribute.org | its-attribute.orgRef)? + & (its-attribute.tool | its-attribute.toolRef)? + & (its-attribute.revPerson | its-attribute.revPersonRef)? + & (its-attribute.revOrg | its-attribute.revOrgRef)? + & (its-attribute.revTool | its-attribute.revToolRef)? + & its-attribute.provRef?) + | its-attribute.provenanceRecordsRef)? + & (its-attribute.locQualityIssuesRef + | ((its-attribute.locQualityIssueType? + & its-attribute.locQualityIssueComment?) + & its-attribute.locQualityIssueSeverity? + & its-attribute.locQualityIssueProfileRef? + & its-attribute.locQualityIssueEnabled?))? + & (((its-attribute.locQualityRatingScore, + its-attribute.locQualityRatingScoreThreshold?) + | (its-attribute.locQualityRatingVote, + its-attribute.locQualityRatingVoteThreshold?)), + its-attribute.locQualityRatingProfileRef?)? + & its-attribute.mtConfidence? + & its-attribute.allowedCharacters? + & (its-attribute.storageSize, + its-attribute.storageEncoding?, + its-attribute.lineBreakType?)? + & its-attribute.annotatorsRef? +its-local.nons.attributes = + its-attribute.translate.nons? + & its-attribute.dir.nons? + & ((its-attribute.locNote.nons | its-attribute.locNoteRef.nons), + its-attribute.locNoteType.nons?)? + & (its-attribute.term.nons, + its-attribute.termInfoRef.nons?, + its-attribute.termConfidence.nons?)? + & its-attribute.withinText.nons? + & (its-attribute.taConfidence.nons? + & (its-attribute.taClassRef.nons? + & ((its-attribute.taSource.nons, its-attribute.taIdent.nons) + | its-attribute.taIdentRef.nons)?))? + & (its-attribute.localeFilterList.nons, + its-attribute.localeFilterType.nons?)? + & (((its-attribute.person.nons | its-attribute.personRef.nons)? + & (its-attribute.org.nons | its-attribute.orgRef.nons)? + & (its-attribute.tool.nons | its-attribute.toolRef.nons)? + & (its-attribute.revPerson.nons + | its-attribute.revPersonRef.nons)? + & (its-attribute.revOrg.nons | its-attribute.revOrgRef.nons)? + & (its-attribute.revTool.nons | its-attribute.revToolRef.nons)? + & its-attribute.provRef.nons?) + | its-attribute.provenanceRecordsRef.nons)? + & (its-attribute.locQualityIssuesRef.nons + | ((its-attribute.locQualityIssueType.nons? + & its-attribute.locQualityIssueComment.nons?) + & its-attribute.locQualityIssueSeverity.nons? + & its-attribute.locQualityIssueProfileRef.nons? + & its-attribute.locQualityIssueEnabled.nons?))? + & (((its-attribute.locQualityRatingScore.nons, + its-attribute.locQualityRatingScoreThreshold.nons?) + | (its-attribute.locQualityRatingVote.nons, + its-attribute.locQualityRatingVoteThreshold.nons?)), + its-attribute.locQualityRatingProfileRef.nons?)? + & its-attribute.mtConfidence.nons? + & its-attribute.allowedCharacters.nons? + & (its-attribute.storageSize.nons, + its-attribute.storageEncoding.nons?, + its-attribute.lineBreakType.nons?)? + & its-attribute.annotatorsRef.nons? +its-span = + + ## Inline element to contain ITS information + element its:span { its-span.content, its-span.attributes } +its-span.content = (text | its-span)* +its-span.attributes = its-local.nons.attributes & its-foreign-attribute* +its-translateRule = + + ## Rule about the Translate data category + element its:translateRule { + its-translateRule.content, its-translateRule.attributes + } +its-translateRule.content = empty +its-translateRule.attributes = + its-attribute.selector, + its-attribute.translate.nons, + its-foreign-attribute* +its-locNoteRule = + + ## Rule about the Localization Note data category + element its:locNoteRule { + its-attribute.selector, + its-attribute.locNoteType.nons, + (its-locNote + | its-attribute.locNotePointer.nons + | its-attribute.locNoteRef.nons + | its-attribute.locNoteRefPointer.nons), + its-foreign-attribute* + } +its-attribute.locNotePointer.nons = + attribute locNotePointer { its-relative-selector.type } +its-attribute.locNoteRefPointer.nons = + attribute locNoteRefPointer { its-relative-selector.type } +its-locNote = + + ## Localization note + element its:locNote { its-locNote.content, its-locNote.attributes } +its-locNote.content = (text | its-span)* +its-locNote.attributes = + its-local.nons.attributes, its-foreign-attribute* +its-termRule = + + ## Rule about the Terminology data category + element its:termRule { its-termRule.content, its-termRule.attributes } +its-termRule.content = empty +its-termRule.attributes = + its-attribute.selector, + its-attribute.term.nons, + (its-attribute.termInfoPointer.nons + | its-attribute.termInfoRef.nons + | its-attribute.termInfoRefPointer.nons)?, + its-foreign-attribute* +its-attribute.termInfoPointer.nons = + attribute termInfoPointer { its-relative-selector.type } +its-attribute.termInfoRefPointer.nons = + attribute termInfoRefPointer { its-relative-selector.type } +its-dirRule = + + ## Rule about the Directionality data category + element its:dirRule { its-dirRule.content, its-dirRule.attributes } +its-dirRule.content = empty +its-dirRule.attributes = + its-attribute.selector, its-attribute.dir.nons, its-foreign-attribute* +its-langRule = + + ## Rule about the Language Information data category + element its:langRule { its-langRule.content, its-langRule.attributes } +its-langRule.content = empty +its-langRule.attributes = + its-attribute.selector, + its-attribute.langPointer.nons, + its-foreign-attribute* +its-attribute.langPointer.nons = + attribute langPointer { its-relative-selector.type } +its-withinTextRule = + + ## Rule about the Elements Within Text data category + element its:withinTextRule { + its-withinTextRule.content, its-withinTextRule.attributes + } +its-withinTextRule.content = empty +its-withinTextRule.attributes = + its-attribute.selector, + its-attribute.withinText.nons, + its-foreign-attribute* +its-domainRule = + + ## Rule about the Domain data category + element its:domainRule { + its-domainRule.content, its-domainRule.attributes + } +its-domainRule.content = empty +its-domainRule.attributes = + its-attribute.selector, + its-attribute.domainPointer.nons, + its-attribute.domainMapping.nons?, + its-foreign-attribute* +its-attribute.domainPointer.nons = + attribute domainPointer { its-relative-selector.type } +its-textAnalysisRule = + + ## Rule about the Disambiguation data category + element its:textAnalysisRule { + its-textAnalysisRule.content, its-textAnalysisRule.attributes + } +its-textAnalysisRule.content = empty +its-textAnalysisRule.attributes = + its-attribute.selector, + its-attribute.taClassRefPointer.nons?, + ((its-attribute.taSourcePointer.nons, + its-attribute.taIdentPointer.nons) + | its-attribute.taIdentRefPointer.nons)?, + its-foreign-attribute* +its-attribute.taClassRefPointer.nons = + attribute taClassRefPointer { its-taClassRefPointer.type } +its-attribute.taIdentPointer.nons = + attribute taIdentPointer { its-taIdentPointer.type } +its-attribute.taSourcePointer.nons = + attribute taSourcePointer { its-taSourcePointer.type } +its-attribute.taIdentRefPointer.nons = + attribute taIdentRefPointer { its-taIdentRefPointer.type } +its-localeFilterRule = + + ## Rule about the LocaleFilter data category + element its:localeFilterRule { + its-localeFilterRule.content, its-localeFilterRule.attributes + } +its-localeFilterRule.content = empty +its-localeFilterRule.attributes = + its-attribute.selector, + its-attribute.localeFilterList.nons, + its-attribute.localeFilterType.nons?, + its-foreign-attribute* +its-provRule = + + ## Rule about the Provenance data category + element its:provRule { its-provRule.content, its-provRule.attributes } +its-provRule.content = empty +its-provRule.attributes = + its-attribute.selector, + its-attribute.provenanceRecordsRefPointer.nons, + its-foreign-attribute* +its-attribute.provenanceRecordsRefPointer.nons = + attribute provenanceRecordsRefPointer { its-relative-selector.type } +its-externalResourceRefRule = + + ## Rule about the External Resource data category + element its:externalResourceRefRule { + its-externalResourceRefRule.content, + its-externalResourceRefRule.attributes + } +its-externalResourceRefRule.content = empty +its-externalResourceRefRule.attributes = + its-attribute.selector, + its-attribute.externalResourceRefPointer.nons, + its-foreign-attribute* +its-attribute.externalResourceRefPointer.nons = + attribute externalResourceRefPointer { its-relative-selector.type } +its-targetPointerRule = + + ## Rule about the Target Pointer data category + element its:targetPointerRule { + its-targetPointerRule.content, its-targetPointerRule.attributes + } +its-targetPointerRule.content = empty +its-targetPointerRule.attributes = + its-attribute.selector, + its-attribute.targetPointer.nons, + its-foreign-attribute* +its-attribute.targetPointer.nons = + attribute targetPointer { its-relative-selector.type } +its-idValueRule = + + ## Rule about the Id Value data category + element its:idValueRule { + its-idValueRule.content, its-idValueRule.attributes + } +its-idValueRule.content = empty +its-idValueRule.attributes = + its-attribute.selector, + its-attribute.idValue.nons, + its-foreign-attribute* +its-attribute.idValue.nons = + attribute idValue { its-xpath-expression.type } +its-preserveSpaceRule = + + ## Rule about the Preserve Space data category + element its:preserveSpaceRule { + its-preserveSpaceRule.content, its-preserveSpaceRule.attributes + } +its-preserveSpaceRule.content = empty +its-preserveSpaceRule.attributes = + its-attribute.selector, + its-attribute.space.nons, + its-foreign-attribute* +its-attribute.space.nons = attribute space { "default" | "preserve" } +its-locQualityIssueRule = + + ## Rule about the Localization Quality Issue data category + element its:locQualityIssueRule { + its-locQualityIssueRule.content, its-locQualityIssueRule.attributes + } +its-locQualityIssueRule.content = empty +its-locQualityIssueRule.attributes = + its-attribute.selector, + ((its-attribute.locQualityIssuesRef.nons + | its-attribute.locQualityIssuesRefPointer.nons) + | ((its-attribute.locQualityIssueType.nons + | its-attribute.locQualityIssueComment.nons)+, + its-attribute.locQualityIssueSeverity.nons?, + its-attribute.locQualityIssueProfileRef.nons?, + its-attribute.locQualityIssueEnabled.nons?)), + its-foreign-attribute* +its-attribute.locQualityIssuesRefPointer.nons = + attribute locQualityIssuesRefPointer { its-relative-selector.type } +its-mtConfidenceRule = + + ## Rule about the MT Confidence data category + element its:mtConfidenceRule { + its-mtConfidenceRule.content, its-mtConfidenceRule.attributes + } +its-mtConfidenceRule.content = empty +its-mtConfidenceRule.attributes = + its-attribute.selector, + its-attribute.mtConfidence.nons, + its-foreign-attribute* +its-allowedCharactersRule = + + ## Rule about the Allowed Characters data category + element its:allowedCharactersRule { + its-allowedCharactersRule.content, + its-allowedCharactersRule.attributes + } +its-allowedCharactersRule.content = empty +its-allowedCharactersRule.attributes = + its-attribute.selector, + (its-attribute.allowedCharacters.nons + | its-attribute.allowedCharactersPointer.nons), + its-foreign-attribute* +its-attribute.allowedCharactersPointer.nons = + attribute allowedCharactersPointer { its-relative-selector.type } +its-storageSizeRule = + + ## Rule about the Allowed Characters data category + element its:storageSizeRule { + its-storageSizeRule.content, its-storageSizeRule.attributes + } +its-storageSizeRule.content = empty +its-storageSizeRule.attributes = + its-attribute.selector, + (its-attribute.storageSize.nons + | its-attribute.storageSizePointer.nons), + (its-attribute.storageEncoding.nons + | its-attribute.storageEncodingPointer.nons)?, + its-attribute.lineBreakType.nons?, + its-foreign-attribute* +its-attribute.storageSizePointer.nons = + attribute storageSizePointer { its-relative-selector.type } +its-attribute.storageEncodingPointer.nons = + attribute storageEncodingPointer { its-relative-selector.type } +its-standoff = its-provenanceRecords | its-locQualityIssues +its-provenanceRecords = + + ## Standoff markup for Provenance data category + element its:provenanceRecords { + its-provenanceRecord+, + attribute xml:id { xsd:ID }, + its-attribute.version.nons?, + its-foreign-no-xml-id-attribute* + } +its-provenanceRecord = + + ## Provenance record used in Provenance standoff markup + element its:provenanceRecord { its-provenanceRecord.attributes } +its-provenanceRecord.attributes = + (its-attribute.person.nons | its-attribute.personRef.nons)? + & (its-attribute.org.nons | its-attribute.orgRef.nons)? + & (its-attribute.tool.nons | its-attribute.toolRef.nons)? + & (its-attribute.revPerson.nons | its-attribute.revPersonRef.nons)? + & (its-attribute.revOrg.nons | its-attribute.revOrgRef.nons)? + & (its-attribute.revTool.nons | its-attribute.revToolRef.nons)? + & its-attribute.provRef.nons? + & its-foreign-attribute* +its-locQualityIssues = + + ## Standoff markup for Localization Quality Issue data category + element its:locQualityIssues { + its-locQualityIssue+, + attribute xml:id { xsd:ID }, + its-attribute.version.nons?, + its-foreign-no-xml-id-attribute* + } +its-locQualityIssue = + + ## Issue recorded in Localization Quality standoff markup + element its:locQualityIssue { its-locQualityIssue.attributes } +its-locQualityIssue.attributes = + its-attribute.locQualityIssueType.nons? + & its-attribute.locQualityIssueComment.nons? + & its-attribute.locQualityIssueSeverity.nons? + & its-attribute.locQualityIssueProfileRef.nons? + & its-attribute.locQualityIssueEnabled.nons? + & its-foreign-attribute* +its-attribute.dir = empty +its-foreign-element = + element * - its:* { + (its-foreign-no-xml-id-attribute* | text | its-foreign-element)* + } +# Add local ITS attributes to all DocBook elements + +# Allow its:rules inside info element diff --git a/catalog/docbook5.2/rng/dbits.rng b/catalog/docbook5.2/rng/dbits.rng new file mode 100755 index 0000000..253b169 --- /dev/null +++ b/catalog/docbook5.2/rng/dbits.rng @@ -0,0 +1,20352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Any attribute, including any attribute in any namespace + + + +
+ + + Designates the computer or chip architecture to which the element applies + + + + + Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + + + + + provides a standard place for application-specific effectivity + + + + + Indicates standards conformance characteristics of the element + + + + + Indicates the operating system to which the element is applicable + + + + + Indicates the editorial revision to which the element belongs + + + + + Indicates something about the security level associated with the element to which it applies + + + + + Indicates the level of user experience for which the element applies + + + + + Indicates the computer vendor to which the element applies + + + + + Indicates the word size (width in bits) of the computer architecture to which the element applies + + + + + Indicates the output format (for example, print or epub) to which the element applies + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Points to the element whose content is to be used as the text of the link + + + + + + Points to an internal link target by identifying the value of its xml:id attribute + + + + + + Points to one or more internal link targets by identifying the value of their xml:id attributes + + + + + + Identifies a link target with a URI + + + + + + Identifies the XLink link type + simple + An XLink simple link type + + + + + Identifies the XLink role of the link + + + + + + Identifies the XLink arcrole of the link + + + + + + Identifies the XLink title of the link + + + + + new + An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + replace + An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. + embed + An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + other + The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior. + none + The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + + + + + Identifies the XLink show behavior of the link + + + + + + onLoad + An application should traverse to the ending resource immediately on loading the starting resource. + onRequest + An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + other + The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior. + none + The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + + + + + Identifies the XLink actuate behavior of the link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Identifies the unique ID value of the element + + + + + + Specifies the DocBook version of the element and its descendants + + + + + Specifies the natural language of the element and its descendants + + + + + Specifies the base URI of the element and its descendants + + + + + + Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + + + + + Provides the text that is to be generated for a cross reference to the element + + + + + Specifies a keyword or keywords identifying additional style information + + + + + changed + The element has been changed. + added + The element is new (has been added to the document). + deleted + The element has been deleted. + off + Explicitly turns off revision markup for this element. + + + + + Identifies the revision status of the element + + + + + + ltr + Left-to-right text + rtl + Right-to-left text + lro + Left-to-right override + rlo + Right-to-left override + + + + + Identifies the direction of text in an element + + + + + + The RDFa Lite vocab + + + + + + The RDFa Lite typeof + + + + + The RDFa Lite property + + + + + The RDFa Lite resource + + + + + The RDFa Lite prefix + + + + + + + + + + + + + + + + + + + + + + + + none + No ID fixup strategy + suffix + ID fixup by concatenating suffixes + auto + ID fixup by creating unique values + + + + + The transclusion ID fixup strategy + + + + + + The transclusion suffix to use when the suffix ID fixup strategy is employed + + Suffix fixup must be specified + + If a suffix is specified, suffix ID fixup must also be specified. + + + + + + + user + No link scope adjustments are made + local + The link scopes are adjusted with the suffix property + near + The link scopes are adjusted based on proximity + global + The link scopes are adjusted based on document order + + + + + The transclusion link scope adjustment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the format of the data + + + + + Indentifies the location of the data by URI + + + + Identifies the location of the data by external identifier (entity name) + + + + + + + continues + Line numbering continues from the immediately preceding element with the same name. + restarts + Line numbering restarts (begins at 1, usually). + + + + + Determines whether line numbering continues from the previous element or restarts + + + + + + numbered + Lines are numbered. + unnumbered + Lines are not numbered. + + + + + Determines whether lines are numbered + + + + + + Specifies the initial line number + + + + + + Identifies the language (i.e. programming language) of the verbatim content + + + + + Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not + preserve + Whitespace must be preserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies an identifying string for presentation purposes + + + + + Specifies the width (in characters) of the element + + + + + + compact + The spacing should be "compact". + normal + The spacing should be "normal". + + + + + Specifies (a hint about) the spacing of the content + + + + + + 0 + The element should be rendered in the current text flow (with the flow column width). + 1 + The element should be rendered across the full text page. + + + + + Indicates if the element is rendered across the column or the page + + + + + + Identifies the language (i.e. programming language) of the content + + + + + optional + The content describes an optional step or steps. + required + The content describes a required step or steps. + + + + + Specifies if the content is required or optional + + + + + + Specifies style information to be used when rendering the float + + + + + Specifies the width of the element + + + + + Specifies the depth of the element + + + + + Specifies the width of the content rectangle + + + + + Specifies the depth of the content rectangle + + + + + 0 + False (do not scale-to-fit; anamorphic scaling may occur) + 1 + True (scale-to-fit; anamorphic scaling is forbidden) + + + + + Specifies the scaling factor + + + + + + Specifies a classid for a media object player + + + + + Specifies the autoplay setting for a media object player + + + + + center + Centered horizontally + char + Aligned horizontally on the specified character + justify + Fully justified (left and right margins or edges) + left + Left aligned + right + Right aligned + + + + + bottom + Aligned on the bottom of the region + middle + Centered vertically + top + Aligned on the top of the region + + + + + doi + A digital object identifier. + isbn + An international standard book number. + isrn + An international standard technical report number (ISO 10444). + issn + An international standard serial number. + istc + An international standard text code. + libraryofcongress + A Library of Congress reference number. + pubsnumber + A publication number (an internal number or possibly organizational standard). + uri + A Uniform Resource Identifier + + + + + + Identifies the kind of bibliographic identifier + + + + + + + Identifies the nature of the non-standard bibliographic identifier + + + + + + + Identifies the kind of bibliographic identifier + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + article + An article + bbs + A bulletin board system + book + A book + cdrom + A CD-ROM + chapter + A chapter (as of a book) + dvd + A DVD + emailmessage + An email message + gopher + A gopher page + journal + A journal + manuscript + A manuscript + newsposting + A posting to a newsgroup + part + A part (as of a book) + refentry + A reference entry + section + A section (as of a book or article) + series + A series + set + A set (as of books) + webpage + A web page + wiki + A wiki page + other + Some other kind of work + + + + + + + + + Identifies the nature of the published work + + + + + + + Identifies the nature of some other kind of published work + + + + + + + Identifies that this is some other kind of published work + other + Indicates that the published work is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text of the title of a section of a document or of a formal block-level element + + + + + + +
+
+ + + + + + + + + + + + + + + The abbreviation of a title + + + + + + +
+
+ + + + + + + + + + + + + + + The subtitle of a document + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with a required title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a required title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + +
+
+ + + + + + Identifies the controlled vocabulary used by this set's terms + + + + + + + + + + + + + + + + + + A set of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + Specifies a ranking for this subject relative to other subjects in the same set + + + + + + + + + + + + + + + + + One of a group of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + + + + + + + + + + A term in a group of terms describing the subject matter of a document + + + + +
+
+ + + + + + + + + + + + + + + A set of keywords describing the content of a document + + + + + + +
+
+ + + + + + + + + + + + + + + One of a set of keywords describing the content of a document + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + Identifies the type of procedure + + + + + + + + + + + + + + + + + + + + + A list of operations to be performed in a well-defined sequence + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A unit of action in a procedure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + Alternative steps in a procedure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for steps that occur within steps in a procedure + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for identifying the results of a procedure or step + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + A portion of a document that is isolated from the main narrative flow + + Element exclusion + + sidebar must not occur among the children or descendants of sidebar + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short description or note about a person + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A quotation set off from the main text + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The source of a block quote or epigraph + + + + + + + + + + + + +
+
+ + + sect1 + Render as a first-level section + sect2 + Render as a second-level section + sect3 + Render as a third-level section + sect4 + Render as a fourth-level section + sect5 + Render as a fifth-level section + + + + + + Indicates how the bridge head should be rendered + + + + + + + Identifies the nature of the non-standard rendering + + + + + + + Indicates how the bridge head should be rendered + other + Identifies a non-standard rendering + + + + + + + + + + + + + + + + + + + + + + + + + + + + A free-floating heading + + + + + + +
+
+ + + + + + + + + + + + + + + A remark (or comment) intended for presentation in a draft manuscript + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short inscription at the beginning of a document or component + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + Identifies the desired footnote mark + + + + + + + + + + + + + + + + + + A footnote + + Element exclusion + + footnote must not occur among the children or descendants of footnote + + + + Element exclusion + + example must not occur among the children or descendants of footnote + + + + Element exclusion + + figure must not occur among the children or descendants of footnote + + + + Element exclusion + + table must not occur among the children or descendants of footnote + + + + Element exclusion + + equation must not occur among the children or descendants of footnote + + + + Element exclusion + + sidebar must not occur among the children or descendants of footnote + + + + Element exclusion + + task must not occur among the children or descendants of footnote + + + + Element exclusion + + epigraph must not occur among the children or descendants of footnote + + + + Element exclusion + + caution must not occur among the children or descendants of footnote + + + + Element exclusion + + danger must not occur among the children or descendants of footnote + + + + Element exclusion + + important must not occur among the children or descendants of footnote + + + + Element exclusion + + note must not occur among the children or descendants of footnote + + + + Element exclusion + + tip must not occur among the children or descendants of footnote + + + + Element exclusion + + warning must not occur among the children or descendants of footnote + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph with a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph that contains only text and inline markup, no block elements + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + Identifies the type of mark to be used on items in this list + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a bullet or other dingbat + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + continues + Specifies that numbering should begin where the preceding list left off + restarts + Specifies that numbering should begin again at 1 + + + + + Indicates how list numbering should begin relative to the immediately preceding list + + + + + + Specifies the initial line number + + + + + + ignore + Specifies that numbering should ignore list nesting + inherit + Specifies that numbering should inherit from outer-level lists + + + + + Indicates whether or not item numbering should be influenced by list nesting + + + + + + arabic + Specifies Arabic numeration (1, 2, 3, …) + upperalpha + Specifies upper-case alphabetic numeration (A, B, C, …) + loweralpha + Specifies lower-case alphabetic numeration (a, b, c, …) + upperroman + Specifies upper-case Roman numeration (I, II, III, …) + lowerroman + Specifies lower-case Roman numeration (i, ii, iii …) + + + + + Indicates the desired numeration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a sequentially incremented label + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + Specifies the keyword for the type of mark that should be used on this + item, instead of the mark that would be used by default + + + + + + + + + + + + + + + + + + + + + A wrapper for the elements of a list item + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A segmented list, a list of sets of elements + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of an element of a list item in a segmented list + + + + + + +
+
+ + + + + + + + + + + + + + + A list item in a segmented list + + Cardinality of segments and titles + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a list item in a segmented list + + + + + + +
+
+ + + + + + horiz + A tabular presentation in row-major order. + vert + A tabular presentation in column-major order. + inline + An inline presentation, usually a comma-delimited list. + + + + + Specifies the type of list presentation + + + + + + Specifies the number of columns for horizontal or vertical presentation + + + + + + + + + + + + + + + + + + + + + An undecorated list of single words or short phrases + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a simple list + + + + + + +
+
+ + + + + + Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is composed of a set of one or more terms and an associated description + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for a set of terms and the associated description in a variable list + + + + + + + +
+
+ + + + + + + + + + + + + + + The word or phrase being defined or described in a variable list + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + Identifies the type of example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal example, with a title + + Element exclusion + + example must not occur among the children or descendants of example + + + + Element exclusion + + figure must not occur among the children or descendants of example + + + + Element exclusion + + table must not occur among the children or descendants of example + + + + Element exclusion + + equation must not occur among the children or descendants of example + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed example without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + monospaced + The literal layout should be formatted with a monospaced font + normal + The literal layout should be formatted with the current font + + + + + Specifies the class of literal layout + + + + + + + + + + + + + + + + + + + A block of text in which line breaks and white space are to be reproduced faithfully + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + Text that a user sees or might see on a computer screen + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A representation of what the user sees or might see on a computer screen + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of figure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal figure, generally an illustration, with a title + + Element exclusion + + example must not occur among the children or descendants of figure + + + + Element exclusion + + figure must not occur among the children or descendants of figure + + + + Element exclusion + + table must not occur among the children or descendants of figure + + + + Element exclusion + + equation must not occur among the children or descendants of figure + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of figure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A untitled figure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A displayed media object (video, audio, image, etc.) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + An inline media object (video, audio, image, and so on) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for video data and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for audio data and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for image data and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a text description of an object and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external video data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external audio data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the image data + + + + + + + + + Specifies the vertical alignment of the image data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external image data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + Identifies the encoding of the text in the external file + + + + + + + + + + + + + + + + + + + + Pointer to external text data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + Specifies the name of the parameter + + + + + Specifies the value of the parameter + + + + + Specifies the type of the value of the parameter + + + + + + + + + + + + + + + + + + Application specific parameters for a media player + + + + +
+
+ + + + + + + + + + + + + + + + + + A caption + + Element exclusion + + example must not occur among the children or descendants of caption + + + + Element exclusion + + figure must not occur among the children or descendants of caption + + + + Element exclusion + + table must not occur among the children or descendants of caption + + + + Element exclusion + + equation must not occur among the children or descendants of caption + + + + Element exclusion + + sidebar must not occur among the children or descendants of caption + + + + Element exclusion + + task must not occur among the children or descendants of caption + + + + Element exclusion + + caution must not occur among the children or descendants of caption + + + + Element exclusion + + danger must not occur among the children or descendants of caption + + + + Element exclusion + + important must not occur among the children or descendants of caption + + + + Element exclusion + + note must not occur among the children or descendants of caption + + + + Element exclusion + + tip must not occur among the children or descendants of caption + + + + Element exclusion + + warning must not occur among the children or descendants of caption + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A real-world address, generally a postal address + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A street address in an address + + + + +
+
+ + + + + + + + + + + + + + + A post office box in an address + + + + +
+
+ + + + + + + + + + + + + + + A postal code in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a city in an address + + + + +
+
+ + + + + + + + + + + + + + + A state or province in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a country + + + + +
+
+ + + + + + + + + + + + + + + A telephone number + + + + +
+
+ + + + + + + + + + + + + + + A fax number + + + + +
+
+ + + + + + + + + + + + + + + Uncategorized information in address + + + + +
+
+ + + + + + + + + + + + + + + The institutional affiliation of an individual + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A brief description of an affiliation + + + + +
+
+ + + + + + + + + + + + + + + The title of an individual in an organization + + + + +
+
+ + + consortium + A consortium + corporation + A corporation + informal + An informal organization + nonprofit + A non-profit organization + + + + + Specifies the nature of the organization + + + + + + Specifies the nature of the organization + other + Indicates a non-standard organization class + + + Identifies the non-standard nature of the organization + + + + + + + + + + + + + + + + + + + + + + + + + + The name of an organization + + + + +
+
+ + + + + + + + + + + + + + + A division of an organization + + + + + + +
+
+ + + + + + + + + + + + + + + The page numbers of an article as published + + + + +
+
+ + + + + + + + + + + + + + + The personal name of an individual + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The name of an individual author + + + + +
+
+ + + + + + + + + + + + + + + Wrapper for author information when a document has multiple authors or collaborators + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Identifies a collaborator + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The initials or other short identifier for an author + + + + +
+
+ + + + + + + + + + + + + + + A person and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An organization and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for document meta-information about a conference + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The dates of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The title of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + An identifier, frequently numerical, associated with a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The contract number of a document + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a contract + + + + +
+
+ + + + + + + + + + + + + + + Copyright information about a document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The year of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the individual or organization that holds a copyright + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + Additional content for the cover of a publication + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + The date of publication or revision of a document + + + + +
+
+ + + + + + + + + + + + + + + The name or number of an edition of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the editor of a document + + + + +
+
+ + + + + + + + + + + + + + + + An identifier for a document + + + + +
+
+ + + + + + + + + + + + + + + + A citation of a bibliographic identifier + + + + +
+
+ + + + + + + + + + + + + + + + The source of a document + + + + +
+
+ + + hasformat + The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + haspart + The described resource includes the referenced resource either physically or logically + hasversion + The described resource has a version, edition, or adaptation, namely, the referenced resource + isformatof + The described resource is the same intellectual content of the referenced resource, but presented in another format + ispartof + The described resource is a physical or logical part of the referenced resource + isreferencedby + The described resource is referenced, cited, or otherwise pointed to by the referenced resource + isreplacedby + The described resource is supplanted, displaced, or superceded by the referenced resource + isrequiredby + The described resource is required by the referenced resource, either physically or logically + isversionof + The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + references + The described resource references, cites, or otherwise points to the referenced resource + replaces + The described resource supplants, displaces, or supersedes the referenced resource + requires + The described resource requires the referenced resource to support its function, delivery, or coherence of content + + + + + + Identifies the type of relationship + + + + + + + + Identifies the type of relationship + othertype + The described resource has a non-standard relationship with the referenced resource + + + + A keyword that identififes the type of the non-standard relationship + + + + + + + + + + + + + + + + + + + + + + + + + + The relationship of a document to another + + + + +
+
+ + + dcmipoint + The DCMI Point identifies a point in space using its geographic coordinates + iso3166 + ISO 3166 Codes for the representation of names of countries + dcmibox + The DCMI Box identifies a region of space using its geographic limits + tgn + The Getty Thesaurus of Geographic Names + + + + + + Specifies the type of spatial coverage + + + + + + + + Specifies the type of spatial coverage + otherspatial + Identifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + dcmiperiod + A specification of the limits of a time interval + w3c-dtf + W3C Encoding rules for dates and times—a profile based on ISO 8601 + + + + + + Specifies the type of temporal coverage + + + + + + + + Specifies the type of temporal coverage + othertemporal + Specifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The spatial or temporal coverage of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A statement of legal obligations or requirements + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + copyeditor + A copy editor + graphicdesigner + A graphic designer + productioneditor + A production editor + technicaleditor + A technical editor + translator + A translator + indexer + An indexer + proofreader + A proof-reader + coverdesigner + A cover designer + interiordesigner + An interior designer + illustrator + An illustrator + reviewer + A reviewer + typesetter + A typesetter + conversion + A converter (a persons responsible for conversion, not an application) + + + + + + Identifies the nature of the contributor + + + + + + + Identifies the nature of the non-standard contribution + + + + + + + Identifies the nature of the contributor + other + Identifies a non-standard contribution + + + + + + + + + + + + + + + + + + + + + + + + + + A person or entity, other than an author or editor, credited in a document + + + + +
+
+ + + + + + + + + + + + + + + The numbers of the pages in a book, for use in a bibliographic entry + + + + +
+
+ + + + + + + + + + + + + + + A summary of the contributions made to a document by a credited source + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a person + + + + +
+
+ + + + + + + + + + + + + + + A given name of a person + + + + +
+
+ + + + + + + + + + + + + + + The given name of a person + + + + +
+
+ + + + + + + + + + + + + + + An inherited or family name; in western cultures the last name + + + + +
+
+ + + + + + + + + + + + + + + The portion of a person's name indicating a relationship to ancestors + + + + +
+
+ + + + + + + + + + + + + + + A component of a person's name that is not a first name, surname, or lineage + + + + +
+
+ + + + + + + + + + + + + + + The printing history of a document + + + + + + +
+
+ + + + + + + + + + + + + + + The date of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The publisher of a document + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of the publisher of a document + + + + +
+
+ + + + + + + + + + + + + + + Information about a particular release of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A history of the revisions to a document + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry describing a single revision in the history of the revisions to a document + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A document revision number + + + + +
+
+ + + + + + + + + + + + + + + A description of a revision to a document + + + + +
+
+ + + + + + + + + + + + + + + A extended description of a revision to a document + + + + + + +
+
+ + + + + + + + + + + + + + + Numbers of the volumes in a series of books + + + + +
+
+ + + + + + + + + + + + + + + The volume number of a document in a set (as of books in a set or articles in a journal) + + + + +
+
+ + + + + + + + + + + + + + + The number of an issue of a journal + + + + +
+
+ + + + + + A name for the metadata element + + + + + The metadata content + + + + + + + + + + + + + + + + + A generic metadata element + + + + + + + + A generic metadata element + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A software or application package + + + + +
+
+ + + + + + + + + + + + + + + An email address + + + + +
+
+ + + + + + + + + + + + + + + A comment on a line in a verbatim listing + + + + +
+
+ + + command + A command + function + A function + option + An option + + + + + Identifies the class of parameter + + + + + + + + + + + + + + + + + + + + + A value or a symbolic reference to a value + + + + +
+ + + + + + +
+ + + command + A command + function + A function + option + An option + parameter + A parameter + + + + + Identifies the nature of the replaceable text + + + + + + + + + + + + + + + + + + + + + Content that may or must be replaced by the user + + + + + + +
+
+ + + + Identifies the type of URI specified + + + + + + + + + + + + + + + + + + + A Uniform Resource Identifier + + + + +
+
+ + + + + + + + + + + + + + + An abbreviation, especially one followed by a period + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An often pronounceable word made from the initial (or selected) letters of a name or phrase + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An inline bibliographic reference to another published work + + + + + + +
+
+ + + + + + + + + + + + + + + A citation to a reference page + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A reference volume number + + + + +
+
+ + + + + + Identifies the nature of the publication being cited + + + + + + Identifies the nature of some other kind of publication being cited + + + + + + + Identifies that this is some other kind of publication being cited + other + Indicates that the published work is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + The title of a cited work + + + + + + +
+
+ + + + + + + + + + + + + + + Emphasized text + + + + + + +
+
+ + + A limited span of emphasized text + + + + +
+
+ + + + + + + + + + + + + + + A word or phrase in a language other than the primary language of the document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A limited word or phrase in a language other than the primary language of the document + + + + +
+
+ + + + + + + + + + + + + + + A span of text + + + + + + +
+
+ + + A limited span of text + + + + +
+
+ + + + + + + + + + + + + + + An inline quotation + + + + + + +
+
+ + + + + + + + + + + + + + + A limited inline quotation + + + + +
+
+ + + + + + + + + + + + + + + A subscript (as in Hâ‚‚O, the molecular formula for water) + + + + +
+
+ + + + + + + + + + + + + + + A superscript (as in x², the mathematical notation for x multiplied by itself) + + + + +
+
+ + + copyright + A copyright + registered + A registered copyright + service + A service + trade + A trademark + + + + + Identifies the class of trade mark + + + + + + + + + + + + + + + + + + + + + A trademark + + + + +
+
+ + + + + + + + + + + + + + + A word meant specifically as a word and not representing anything else + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a footnote (a footnote mark) + + Footnote reference type constraint + + @linkend on footnoteref must point to a footnote. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A cross reference to another part of the document + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A hypertext link + + + + + + +
+
+ + + + + + + + + Holds additional information that may be used by the application when resolving the link + + + + + Specifies the URI of the document in which the link target appears + + + + + + Specifies the location of the link target in the document + + + + + Identifies application-specific customization of the link behavior + + + + + + + + + + + + + + + + + + + + + + + + + + + + A link that addresses its target indirectly + + + + + + +
+
+ + + + + + + + + + + + + + A spot in the document + + + + +
+
+ + + + + + + + + + + + + + A text-only annotation, often used for accessibility + + + + + + + + + +
+
+ + + Holds style of formalgroup - this can be used to specify desired layout and positioning of subfigures + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A group of formal objects, for example subfigures + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + Identifies the editorial or publication status of the element on which it occurs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of books + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + The dedication of a book or other component + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Acknowledgements of a book or other component + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Text at the back of a book describing facts about its production + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An appendix in a book or article + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A chapter, as of a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Introductory matter preceding the first chapter of a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An introduction to the contents of a part + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + legal + A section of legal obligations or requirements + + + + Identifies the nature of the section + + + + + + Identifies a non-standard section class + + + + + + + Indicates that a non-standard section class is applied + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a document with no subdivisions + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + faq + A collection of frequently asked questions. + journalarticle + An article in a journal or other periodical. + productsheet + A description of a product. + specification + A specification. + techreport + A technical report. + whitepaper + A white paper. + + + + + Identifies the nature of the article + + + + + + Identifies the nature of the non-standard article + + + + + + + Identifies the nature of the article + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An article + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Identifies one or more annotations that apply to this element + + +
+ + + + + + Identifies one or more elements to which this annotation applies + + + + + + + + + + + + + + + + + + + An annotation + + Element exclusion + + annotation must not occur among the children or descendants of annotation + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + Identifies the XLink extended link type + + XLink extended placement + + An XLink extended type element may not occur as the direct child of an XLink extended type element. + + + extended + An XLink extended link type + + + + + Identifies the XLink locator link type + + XLink locator placement + + An XLink locator type element must occur as the direct child of an XLink extended type element. + + + locator + An XLink locator link type + + + + + Identifies the XLink arc link type + + XLink arc placement + + An XLink arc type element must occur as the direct child of an XLink extended type element. + + + arc + An XLink arc link type + + + + + Identifies the XLink resource link type + + XLink resource placement + + An XLink resource type element must occur as the direct child of an XLink extended type element. + + + resource + An XLink resource link type + + + + + Identifies the XLink title link type + + XLink title placement + + An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element. + + + title + An XLink title link type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the XLink traversal-from + + + + + + Specifies the XLink label + + + + + + Specifies the XLink traversal-to + + + +
+ + + + + + + + + + + + Identifies the XLink link type + extended + An XLink extended link + + + + + + + + + + + + + An XLink extended link + + + + + + + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + locator + An XLink locator link + + + + + + + + + + + + + + + + + An XLink locator in an extendedlink + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + arc + An XLink arc link + + + + + + + + + + + + + + + + + + + + + + + + + An XLink arc in an extendedlink + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A top-level section of document + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect1 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect2 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect3 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect4 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of reference entries + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A reference page (originally a UNIX man-style reference page) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Meta-information for a reference entry + + + + + + + + + + + + + + + + +
+ + + source + The name of the software product or component to which this topic applies + version + The version of the software product or component to which this topic applies + manual + The section title of the reference page (e.g., User Commands) + sectdesc + The section title of the reference page (believed synonymous with "manual" but in wide use) + software + The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + + + + + + Identifies the kind of miscellaneous information + + + + + + + Identifies the nature of non-standard miscellaneous information + + + + + + Identifies the kind of miscellaneious information + other + Indicates that the information is some 'other' kind. + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + Meta-information for a reference entry other than the title and volume number + + + + +
+
+ + + + + + + + + + + + + + + The name, purpose, and classification of a reference page + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A description of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The name of (one of) the subject(s) of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A short (one sentence) synopsis of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The scope or other indication of applicability of a reference entry + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntactic synopsis of the subject of the reference page + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section in a refentry + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A major subsection of a reference entry + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect1 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect2 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for a list of glossary entries + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + +
+
+ + + + + + Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + + + + + + + + + + + + + + + + + An entry in a glossary or glosslist + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + Specifies a list of keywords for the definition + + + + + + + + + + + + + + + + + A definition in a glossentry + + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry + to another + + Glosssary 'see' type constraint + + @otherterm on glosssee must point to a glossentry. + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry to another + + Glossary 'seealso' type constraint + + @otherterm on glossseealso must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term, with limited content + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A glossary + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a glossary + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + An inline definition of a term + + Glossary term definition constraint + + A termdef must contain exactly one firstterm + + + + + + + + +
+ + + Identifies the relationship between the bibliographic elemnts + + +
+ + + + + + + + + + + + + + + + + + + + + A raw entry in a bibliography + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked entry in a bibliography + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A raw container for related bibliographic information + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked container for related bibliographic information + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Untyped bibliographic information + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A bibliography + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a bibliography + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a list of bibliography entries + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + The units (for example, pages) used to identify the beginning and ending of a reference. + + + + + + Identifies the beginning of a reference; the location within the work that is being referenced. + + + + + + Identifies the end of a reference. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cross-reference to a bibliographic entry + + + + +
+ + + normal + Normal + preferred + Preferred + + + + + Specifies the significance of the term + + + + + + Specifies the IDs of the elements to which this term applies + + + + + + Indicates the page on which this index term occurs in some version of the printed document + + + + + all + All indexes + global + The global index (as for a combined index of a set of books) + local + The local index (the index for this document only) + + + + + Specifies the scope of the index term + + + + + + Specifies the string by which the term is to be sorted; if unspecified, the term content is used + + + + + Specifies the target index for this term + + +
+ + + + + + + + + + + + + + + A set of index terms in the meta-information of a document + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + Identifies the class of index term + singular + A singular index term + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term + + + + +
+
+ + + + + + Identifies the class of index term + startofrange + The start of a range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term that covers a range + + + + +
+
+ + + + + + Identifies the class of index term + endofrange + The end of a range + + + + + Points to the start of the range + + + + + + + + + + + + + + + + + Identifies the end of a range associated with an indexed term + + Indexterm 'startref' type constraint + + @startref on indexterm must point to an indexterm. + @startref on indexterm must point to a startofrange indexterm. + + + + + + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary word or phrase under which an index term should be sorted + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A secondary word or phrase in an index term + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A tertiary word or phrase in an index term + + + + + + +
+
+ + + + + + Identifies the class of 'see' + + normal + Normal + under + See 'under' + + + + + + + + + + + + + + + + + + Part of an index term directing the reader instead to another entry in the index + + + + + + +
+
+ + + + + + Identifies the class of 'seealso' + + normal + Normal + under + See 'under' + + + + + + + + + + + + + + + + + + Part of an index term directing the reader also to another entry in the index + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a book or part of a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a set of books + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in an index + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry in an index + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + A primary term in an index entry, not in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A secondary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A tertiary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See +entry in an index, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See also + entry in an index, rather than in the text + + + + + + +
+ + + Indicates the page on which this element occurs in some version of the printed document + + +
+ + + + + + + + + + + + + + + + + + A table of contents + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + A division in a table of contents + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A component title in a table of contents + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + A task to be completed + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary of a task + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The prerequisites for a task + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + Information related to a task + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + calspair + Coordinates expressed as a pair of CALS graphic coordinates. + linecolumn + Coordinates expressed as a line and column. + linecolumnpair + Coordinates expressed as a pair of lines and columns. + linerange + Coordinates expressed as a line range. + + + + + + Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair + for graphics and linecolumn + for line-oriented elements. + + + + + + + + Indicates that non-standard units are used for this area +. In this case otherunits + must be specified. + other + Coordinates expressed in some non-standard units. + + + + Identifies the units used in the coords + attribute when the units + attribute is other +. This attribute is forbidden otherwise. + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A list of callout +s + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + Identifies the areas described by this callout. + + + + + + + + + + + + + + + + A called out + description of a marked area + + Callout cross reference constraint + + @arearefs on callout must point to a areaset, area, or co. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A program listing with associated areas used in callouts + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A collection of regions in a graphic or code example + + + + + + + + + +
+
+ + + + + + Point to the callout +s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + + + + + + Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + + + + + Provides the coordinates of the area. The coordinates must be interpreted using the units + specified. + + + + + + + + + + + + + + + + + + + + + + + + A region defined for a callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A region defined for a callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A set of related areas in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A screen with associated areas used in callouts + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for an image object with callouts + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + The location of a callout embedded in text + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a co + + + + +
+
+ + + + + + + + + + + + + + + + + + A set of EBNF productions + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A production in a set of EBNF productions + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The left-hand side of an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + The right-hand side of an EBNF production + + + + + + + + + + + +
+
+ + + + + + Specifies a URI that points to a production +where the nonterminal + is defined + + + + + + + + + + + + + + + + A non-terminal in an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + A constraint in an EBNF production + + Constraint cross reference constraint + + @linkend on constraint must point to a constraintdef. + + + + + + +
+
+ + + + + + + + + + + + + + + A cross-reference to an EBNF production + + Production recap cross reference constraint + + @linkend on productionrecap must point to a production. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The definition of a constraint in an EBNF production + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + Specifies the alignment character when align + is set to char +. + + + + + Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + when align + is set to char +. + + 0 + 100 + + + + + + Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + + all + Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + bottom + Frame only the bottom of the table. + none + Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + sides + Frame the left and right sides of the table. + top + Frame the top of the table. + topbot + Frame the top and bottom of the table. + + + + + + Specifies the presence or absence of the column separator + + 0 + No column separator rule. + 1 + Provide a column separator rule on the right + + + + + + Specifies the presence or absence of the row separator + + 0 + No row separator rule. + 1 + Provide a row separator rule below + + + + + + Specifies the orientation of the table + + land + 90 degrees counter-clockwise from the rest of the text flow. + port + The same orientation as the rest of the text flow. + + + + + + Specifies the table style + + + + + Indicates whether or not the entries in the first column should be considered row headers + + firstcol + Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + headers + Indicates that row headers are identified by use of the headers attribute on entries in the table. + norowheader + Indicates that entries in the first column have no special significance with respect to column headers. + + + + + + Specifies the horizontal alignment of text in an entry. + + center + Centered. + char + Aligned on a particular character. + justify + Left and right justified. + left + Left justified. + right + Right justified. + + + + + + Specifies the vertical alignment of text in an entry. + + bottom + Aligned on the bottom of the entry. + middle + Aligned in the middle. + top + Aligned at the top of the entry. + + + + + + Specifies a column specification by name. + + + + + Specifies a starting column by name. + + + + + Specifies a span by name. + + + + + + Specifies a starting column by name. + + + Specifies an ending column by name. + + + + + + + + + + + + + + Provides a name for a column specification. + + + + + Provides a name for a span specification. + + +
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for the main content of a table, or part of a table + + + + + + + + + + + + + + + + +
+
+ + + + + + The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + + + + + + Specifies the width of the column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifications for a column in a table + + + + +
+
+ + + + + + Specifies a starting column by name. + + + + + Specifies an ending column by name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Formatting information for a spanned column in a table + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table footer consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + + + + +
+
+ + + + + + Specifies the number of additional rows which this entry occupies. Defaults to zero. + + + + + + Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + + 0 + Do not rotate the cell. + 1 + Rotate the cell 90 degrees counter-clockwise. + + + + + + Specifies the scope of a header. + + row + Applies to the row + col + Applies to the column + rowgroup + Applies to the row group + colgroup + Applies to the column group + + + + + + Specifies the entry or entries which serve as headers for this element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cell in a table + + Element exclusion + + table must not occur among the children or descendants of entry + + + + Element exclusion + + informaltable must not occur among the children or descendants of entry + + + + + + + + + + + + + +
+
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the entry table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subtable appearing in place of an entry in a table + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + +
+
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates if the short or long title should be used in a List of Tables + + 0 + Indicates that the full title should be used. + 1 + Indicates that the short short title (titleabbrev) should be used. + + + + + + Indicates if the table should appear in a List of Tables + + 0 + Indicates that the table should not occur in the List of Tables. + 1 + Indicates that the table should appear in the List of Tables. + + + + + + + + + + + + + + A formal table in a document + + Element exclusion + + example must not occur among the children or descendants of table + + + + Element exclusion + + figure must not occur among the children or descendants of table + + + + Element exclusion + + equation must not occur among the children or descendants of table + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A table without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + + + + + This attribute specifies style information for the current element. + + + + + This attribute offers advisory information about the element for which it is set. + + + + + + + + This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + + + + + + + + Occurs when the pointing device button is clicked over an element. + + + + + Occurs when the pointing device button is double clicked over an element. + + + + + Occurs when the pointing device button is pressed over an element. + + + + + Occurs when the pointing device button is released over an element. + + + + + Occurs when the pointing device is moved onto an element. + + + + + Occurs when the pointing device is moved while it is over an element. + + + + + Occurs when the pointing device is moved away from an element. + + + + + Occurs when a key is pressed and released over an element. + + + + + Occurs when a key is pressed down over an element. + + + + + Occurs when a key is released over an element. + + + + + + + + + + + + + + + + + Specifies the alignment of data and the justification of text in a cell. + + left + Left-flush data/Left-justify text. This is the default value for table data. + center + Center data/Center-justify text. This is the default value for table headers. + right + Right-flush data/Right-justify text. + justify + Double-justify text. + char + Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + + + + + + This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + + + + + When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + + + An explicit offset. + + [0-9]+% + + A percentage offset. + + + + + + + + + Specifies the vertical position of data within a cell. + + top + Cell data is flush with the top of the cell. + middle + Cell data is centered vertically within the cell. This is the default value. + bottom + Cell data is flush with the bottom of the cell. + baseline + All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + + + + + + + + + Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + + + + + Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + + + An explicit width. + + [0-9]+% + + A percentage width. + + + + + + Specifies the width (in pixels only) of the frame around a table. + + + + + + Specifies which sides of the frame surrounding a table will be visible. + + void + No sides. This is the default value. + above + The top side only. + below + The bottom side only. + hsides + The top and bottom sides only. + lhs + The left-hand side only. + rhs + The right-hand side only. + vsides + The right and left sides only. + box + All four sides. + border + All four sides. + + + + + + Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + + none + No rules. This is the default value. + groups + Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + rows + Rules will appear between rows only. + cols + Rules will appear between columns only. + all + Rules will appear between all rows and columns. + + + + + + Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + + + An explicit spacing. + + [0-9]+% + + A percentage spacing. + + + + + + Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + + + An explicit padding. + + [0-9]+% + + A percentage padding. + + + + + + + + + + Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + + + + + This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + + + + + Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + + + + + Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + + row + The current cell provides header information for the rest of the row that contains it + col + The current cell provides header information for the rest of the column that contains it. + rowgroup + The header cell provides header information for the rest of the row group that contains it. + colgroup + The header cell provides header information for the rest of the column group that contains it. + + + + + + Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all rows from the current row to the last row of the table section (thead +, tbody +, or tfoot +) in which the cell is defined. + + + + + + Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all columns from the current column to the last column of the column group (colgroup +) in which the cell is defined. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal (captioned) HTML table in a document + + Element exclusion + + example must not occur among the children or descendants of table + + + + Element exclusion + + figure must not occur among the children or descendants of table + + + + Element exclusion + + equation must not occur among the children or descendants of table + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An HTML table without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + An HTML table caption + + Element exclusion + + example must not occur among the children or descendants of caption + + + + Element exclusion + + figure must not occur among the children or descendants of caption + + + + Element exclusion + + table must not occur among the children or descendants of caption + + + + Element exclusion + + equation must not occur among the children or descendants of caption + + + + Element exclusion + + sidebar must not occur among the children or descendants of caption + + + + Element exclusion + + task must not occur among the children or descendants of caption + + + + Element exclusion + + caution must not occur among the children or descendants of caption + + + + Element exclusion + + danger must not occur among the children or descendants of caption + + + + Element exclusion + + important must not occur among the children or descendants of caption + + + + Element exclusion + + note must not occur among the children or descendants of caption + + + + Element exclusion + + tip must not occur among the children or descendants of caption + + + + Element exclusion + + warning must not occur among the children or descendants of caption + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + +
+
+ + + + + + This attribute, whose value must be an integer > 0, specifies the number of columns spanned + by the col + element; the col + element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + element shares its attributes with the next N-1 columns. + + + + + + Specifies a default width for each column spanned by the current col + element. It has the same meaning as the width + attribute for the colgroup + element and overrides it. + + + + + + + + + Specifications for a column in an HTML table + + + + +
+
+ + + + + + This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + element contains one or more col + elements. + + + + + + This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + element. + + + + + + + + + A group of columns in an HTML table + + + + + + +
+
+ + + + + + + + + + A table header consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A table footer consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A wrapper for the rows of an HTML table or informal HTML table + + + + + + +
+
+ + + + + + + + + + A row in an HTML table + + + + + + + + + +
+
+ + + + + + + + + + + A table header entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + A table entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A detailed set of messages, usually error messages + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for an entry in a message set + + + + + + + + + + + + +
+
+ + + + + + The audience to which the message relevant + + + + + The origin of the message + + + + + The level of importance or severity of a message + + + + + + + + + + + + + + + + + + + + + + + A wrapper for a simpler entry in a message set + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary component of a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A subcomponent of a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A related component of a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + The actual text of a message component in a message set + + + + + + +
+
+ + + + + + + + + + + + + + + Information about a message in a message set + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The level of importance or severity of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The origin of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The audience to which a message in a message set is relevant + + + + +
+
+ + + + + + + + + + + + + + + + + + Explanatory material relating to a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + none + No labels + number + Numeric labels + qanda + "Q:" and "A:" labels + + + + + Specifies the default labelling + + + + + + + + + + + + + + + + + + + + + A question-and-answer set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A titled division in a qandaset + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A question/answer set within a qandaset + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A question in a qandaset + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An answer to a question posed in a qandaset + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A label on a question or answer + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + Identifies the type of equation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation + + Element exclusion + + example must not occur among the children or descendants of equation + + + + Element exclusion + + figure must not occur among the children or descendants of equation + + + + Element exclusion + + table must not occur among the children or descendants of equation + + + + Element exclusion + + equation must not occur among the children or descendants of equation + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + Identifies the type of equation + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical equation or expression occurring inline + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical phrase that can be represented with ordinary text and a small amount of markup + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + Specifies that the format of the data is MathML + mathml + Specifies MathML. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A MathML expression in a media object + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + Any element from the MathML namespace + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + Specifies that the format of the data is SVG + svg + Specifies SVG. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An SVG drawing in a media object + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + Any element from the SVG namespace + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A string of formatting markup in text that is to be represented literally + + + + +
+
+ + + + + + attribute + An attribute + attvalue + An attribute value + element + An element + emptytag + An empty element tag + endtag + An end tag + genentity + A general entity + localname + The local name part of a qualified name + namespace + A namespace + numcharref + A numeric character reference + paramentity + A parameter entity + pi + A processing instruction + prefix + The prefix part of a qualified name + comment + An SGML comment + starttag + A start tag + xmlpi + An XML processing instruction + + + + + Identifies the nature of the tag content + + + + + + Identifies the namespace of the tag content + + + + + + + + + + + + + + + + + + + + + A component of XML (or SGML) markup + + + + + + + + + +
+
+ + + Identifies the class of symbol + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A name that is replaced by a value before processing + + + + +
+
+ + + + + + + + + + + + + + + A unit of information + + + + +
+
+ + + + + + + + + + + + + + + Inline text that is some literal value + + + + +
+
+ + + Identifies the (computer) language of the code fragment + + + + + + + + + + + + + + + + + + + + An inline code fragment + + + + + + + + + +
+
+ + + Identifies the class of constant + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A programming or system constant + + + + +
+
+ + + + + + copyright + A name with a copyright + registered + A name with a registered copyright + service + A name of a service + trade + A name which is trademarked + + + + + Specifies the class of product name + + + + + + + + + + + + + + + + + + The formal name of a product + + + + +
+
+ + + + + + + + + + + + + + + A number assigned to a product + + + + +
+
+ + + altkey + An alternate or secondary key + constraint + A constraint + datatype + A data type + field + A field + foreignkey + A foreign key + group + A group + index + An index + key1 + The first or primary key + key2 + An alternate or secondary key + name + A name + primarykey + The primary key + procedure + A (stored) procedure + record + A record + rule + A rule + secondarykey + The secondary key + table + A table + user + A user + view + A view + + + + + Identifies the class of database artifact + + + + + + + + + + + + + + + + + + + + + The name of a database, or part of a database + + + + +
+
+ + + hardware + A hardware application + software + A software application + + + + + Identifies the class of application + + + + + + + + + + + + + + + + + + + + + The name of a software program + + + + +
+
+ + + + + + + + + + + + + + + A physical part of a computer system + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text on a button in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Graphic and/or text appearing as a icon in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The text of a label in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a menu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a terminal menu item in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a submenu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A selection or series of selections from a menu + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The conventional name of a mouse button + + + + +
+ + + + + + + + + + +
+ + + alt + The "Alt" key + altgr + The "Alt Graph" key + backspace + The "Backspace" key + command + The "Command" key + control + The "Control" key + delete + The "Delete" key + down + The down arrow + end + The "End" key + enter + The "Enter" key + escape + The "Escape" key + home + The "Home" key + insert + The "Insert" key + left + The left arrow + meta + The "Meta" key + option + The "Option" key + pagedown + The page down key + pageup + The page up key + right + The right arrow + return + The "Return" key + shift + The "Shift" key + space + The spacebar + tab + The "Tab" key + up + The up arrow + + + + + + Identifies the function key + + + + + + + + Identifies the function key + other + Indicates a non-standard function key + + + + Specifies a keyword that identifies the non-standard key + + + + + + + + + + + + + + + + + + + + + + + + The text printed on a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + The internal, frequently numeric, identifier for a key on a keyboard + + + + +
+ + + + + + + + + + +
+ + + click + A (single) mouse click. + double-click + A double mouse click. + press + A mouse or key press. + seq + Sequential clicks or presses. + simul + Simultaneous clicks or presses. + + + + + + Identifies the nature of the action taken. If keycombo + contains more than one element, simul + is the default, otherwise there is no default. + + + + + + + + Identifies the nature of the action taken + other + Indicates a non-standard action + + + + Identifies the non-standard action in some unspecified way. + + + + + + + + + + + + + + + + + + + + + + + + A combination of input actions + + + + + + +
+
+ + + + + + + + + + + + + + + The symbolic name of a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + A graphical user interface (GUI) keyboard shortcut + + + + +
+
+ + + + + + + + + + + + + + + + + + + A key combination for an action that is also accessible through a menu + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A character or string indicating the start of an input field in a computer display + + + + + + +
+
+ + + + + + + + + + + + + + + A software environment variable + + + + +
+
+ + + devicefile + A device + directory + A directory + extension + A filename extension + headerfile + A header file (as for a programming language) + libraryfile + A library file + partition + A partition (as of a hard disk) + symlink + A symbolic link + + + + + Identifies the class of filename + + + + + + Specifies the path of the filename + + + + + + + + + + + + + + + + + + + + + + + The name of a file + + + + +
+
+ + + + + + + + + + + + + + + The name of an executable program or other software command + + + + +
+
+ + + + + + + + + + + + + + + Data, generally text, displayed or presented by a computer + + + + + + +
+
+ + + + + + + + + + + + + + + Data entered by the user + + + + + + +
+
+ + + + + + Specifies the character that should separate the command and its top-level arguments + + + + + Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A syntax summary for a software command + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+ + + norepeat + Can not be repeated. + repeat + Can be repeated. + + + + + Indicates whether or not repetition is possible. + + + + + + opt + Formatted to indicate that it is optional. + plain + Formatted without indication. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + Indicates optionality. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An argument in a cmdsynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A group of elements in a cmdsynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + An explicit line break in a command synopsis + + + + +
+
+ + + + + + + + + + + + + + + A portion of a cmdsynopsis broken out from the main body of the synopsis + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A reference to a fragment of a command synopsis + + Synopsis fragment type constraint + + @linkend on synopfragmentref must point to a synopfragment. + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + A general-purpose element for representing the syntax of commands or functions + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing synopsis + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a function definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the funcdefs of a funcsynopsis + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a function + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A function (subroutine) name and its return type + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a function or subroutine, as in a programming language + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating that the function in question takes no arguments + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating a variable number of arguments + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A group of parameters + + + + + + + + + +
+
+ + + + + + opt + Formatted to indicate that it is optional. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + + + + + + + + + + + + + Information about a function parameter in a programming language + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Parameters for a function referenced through a function pointer in a synopsis + + + + +
+
+ + + + + + + + + class + This is the synopsis of a class + interface + This is the synopsis of an interface + + + + + Specifies the nature of the synopsis + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for a class definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the contents of a classsynopsis + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + A class in an object-oriented programming language + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An interface in an object-oriented programming language + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An exception in an object-oriented programming language + + + + + + + + + + + + + +
+ + + Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + preserve + Extra whitespace and line breaks must be preserved. + + + +
+ + + + + + + + + + + + + + + + + + Modifiers in a synopsis + + + + +
+
+ + + + + + + + + + + + + + + The name of an interface + + + + +
+
+ + + + + + + + + + + + + + + The name of an exception + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The name of a field in a class definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + The initializer for a fieldsynopsis + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a constructor + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a destructor + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a method + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a method + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Parameters to a method + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A group of method parameters + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a variable + + + + +
+
+ + + + + + + + + + + + + + + Target of a build + + + + +
+
+ + + + + + + + + + + + + + + The value returned by a function + + + + +
+
+ + + + + + union + Combined type is union of nested types + intersection + Combined type is intersection of nested types + + + + + Specifies the way how are nested types combined together + + + + + + + + + + + + + + + + + + The classification of a value + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a class, in the object-oriented programming sense + + + + +
+
+ + + + + + + + + + + + + + + The identifier for a template, in the generic programming sense + + + + +
+
+ + + + + + + + + + + + + + + The definition of a template, in the generic programming sense + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The specialization of a template identifier, in the generic programming sense + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a package definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a macro (a code-generating function) + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a macro definition (code-generating function) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a macro (code-generating function) + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A macro name and its return type + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a union of types + + + + +
+
+ + + + + + + + + + + + + + + The definition of a union of types, which may be more than a name + + + + + + +
+
+ + + + + + + + + + Indicates how the value of a union is specified. + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for a union-of-types definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of an enumeration + + + + +
+
+ + + + + + + + + + + + + + + The value an enumerated type can take + + + + +
+
+ + + + + + + + + + + + + + + The description of a value an enumerated type can take + + + + + + +
+
+ + + + + + + + + + + + + + + The identifier of a value an enumerated type can take + + + + +
+
+ + + + + + + + + + + + + + + A value an enumerated type can take and its description + + + + + + + + + + +
+
+ + + + + + + + + 0 + Value of enum is specified explicitly using enumvalue + 1 + Value of enum is inferred from its position + + + + + Indicates how the value of an enumeration is specified. + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for an enumerated-type definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a type alias + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a type-alias definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A literal listing of all or part of a program + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A note of caution + + Element exclusion + + caution must not occur among the children or descendants of caution + + + + Element exclusion + + danger must not occur among the children or descendants of caution + + + + Element exclusion + + important must not occur among the children or descendants of caution + + + + Element exclusion + + note must not occur among the children or descendants of caution + + + + Element exclusion + + tip must not occur among the children or descendants of caution + + + + Element exclusion + + warning must not occur among the children or descendants of caution + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text indicating hazardous situation + + Element exclusion + + caution must not occur among the children or descendants of danger + + + + Element exclusion + + danger must not occur among the children or descendants of danger + + + + Element exclusion + + important must not occur among the children or descendants of danger + + + + Element exclusion + + note must not occur among the children or descendants of danger + + + + Element exclusion + + tip must not occur among the children or descendants of danger + + + + Element exclusion + + warning must not occur among the children or descendants of danger + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + Element exclusion + + caution must not occur among the children or descendants of important + + + + Element exclusion + + danger must not occur among the children or descendants of important + + + + Element exclusion + + important must not occur among the children or descendants of important + + + + Element exclusion + + note must not occur among the children or descendants of important + + + + Element exclusion + + tip must not occur among the children or descendants of important + + + + Element exclusion + + warning must not occur among the children or descendants of important + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + A message set off from the text + + Element exclusion + + caution must not occur among the children or descendants of note + + + + Element exclusion + + danger must not occur among the children or descendants of note + + + + Element exclusion + + important must not occur among the children or descendants of note + + + + Element exclusion + + note must not occur among the children or descendants of note + + + + Element exclusion + + tip must not occur among the children or descendants of note + + + + Element exclusion + + warning must not occur among the children or descendants of note + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + A suggestion to the user, set off from the text + + Element exclusion + + caution must not occur among the children or descendants of tip + + + + Element exclusion + + danger must not occur among the children or descendants of tip + + + + Element exclusion + + important must not occur among the children or descendants of tip + + + + Element exclusion + + note must not occur among the children or descendants of tip + + + + Element exclusion + + tip must not occur among the children or descendants of tip + + + + Element exclusion + + warning must not occur among the children or descendants of tip + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + Element exclusion + + caution must not occur among the children or descendants of warning + + + + Element exclusion + + danger must not occur among the children or descendants of warning + + + + Element exclusion + + important must not occur among the children or descendants of warning + + + + Element exclusion + + note must not occur among the children or descendants of warning + + + + Element exclusion + + tip must not occur among the children or descendants of warning + + + + Element exclusion + + warning must not occur among the children or descendants of warning + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + An error code + + + + +
+
+ + + + + + + + + + + + + + + An error name + + + + +
+
+ + + + + + + + + + + + + + + An error message. + + + + +
+
+ + + + + + + + + + + + + + + The classification of an error message + + + + +
+ + + + + + +
+ + + daemon + A daemon or other system process (syslogd) + domainname + A domain name (example.com) + etheraddress + An ethernet address (00:05:4E:49:FD:8E) + event + An event of some sort (SIGHUP) + eventhandler + An event handler of some sort (hangup) + filesystem + A filesystem (ext3) + fqdomainname + A fully qualified domain name (my.example.com) + groupname + A group name (wheel) + interface + A network interface (eth0) + ipaddress + An IP address (127.0.0.1) + library + A library (libncurses) + macro + A macro + netmask + A netmask (255.255.255.192) + newsgroup + A newsgroup (comp.text.xml) + osname + An operating system name (Hurd) + process + A process (gnome-cups-icon) + protocol + A protocol (ftp) + resource + A resource + securitycontext + A security context (a role, permission, or security token, for example) + server + A server (mail.example.com) + service + A service (ppp) + systemname + A system name (hephaistos) + username + A user name (ndw) + + + + + + Identifies the nature of the system item + + + + + + + Identifies the nature of the non-standard system item + + + + + + + Identifies the kind of systemitemgraphic identifier + other + Indicates that the system item is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + A system-related item or term + + + + + + +
+
+ + + + + + + + + + + + + + + An option for a software command + + + + +
+
+ + + + + + + + + + + + + + + Optional information + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A unit of data associated with some part of a computer system + + + + +
+
+ + + + + + + + + Identifies the topic type + + + + + + + + + + + + + + + + + + + + + + + + + + A modular unit of documentation not part of any particular narrative flow + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + Any attribute in an other explicit namespace. + + + + + + + + + + + + + + + Version of ITS + + [0-9]+\.[0-9]+ + + + + The query language to be used for processing the rules + + xpath + css + + + + + + Absolute selector + + + + + Relative selector + + + + + + + + 0 + 1 + + + + The Translate data category information to be attached to the current node + + yes + The nodes need to be translated + no + The nodes must not be translated + + + + + + + The type of localization note + + alert + Localization note is an alert + description + Localization note is a description + + + + + + + + + + Indicates a term locally + + yes + The value 'yes' means that this is a term + no + The value 'no' means that this is not a term + + + + + + + The text direction for the context + + ltr + Left-to-right text + rtl + Right-to-left text + lro + Left-to-right override + rlo + Right-to-left override + + + + States whether current context is regarded as "within text" + + yes + The element and its content are part of the flow of its parent element + no + The element splits the text flow of its parent element and its content is an independent text flow + nested + The element is part of the flow of its parent element, its content is an independent flow + + + + A comma separated list of mappings between values in the content +and workflow specific values. The values may contain spaces; in +that case they MUST be delimited by quotation marks. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + include + exclude + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + terminology + mistranslation + omission + untranslated + addition + duplication + inconsistency + grammar + legal + register + locale-specific-content + locale-violation + style + characters + misspelling + typographical + formatting + inconsistent-entities + numbers + markup + pattern-problem + whitespace + internationalization + length + non-conformance + uncategorized + other + + + + + + + + 0 + 100 + + + + + + + + yes + no + + + + + 0 + 100 + + + + + + + + 0 + 100 + + + + + + + + + + + + + + + + + + + + + + + cr + lf + crlf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Version of ITS + + + + + + Version of ITS + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + xml:id + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Container for global rules + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Declaration of variable used in selectors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Inline element to contain ITS information + + + + + + + + + + + + + + + + + + + + + + + Rule about the Translate data category + + + + + + + + + + + + + + + + + Rule about the Localization Note data category + + + + + + + + + + + + + + + + + + + + + + + + + + Localization note + + + + + + + + + + + + + + + + + + + + + Rule about the Terminology data category + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Rule about the Directionality data category + + + + + + + + + + + + + + + + + Rule about the Language Information data category + + + + + + + + + + + + + + + + + + + + + + Rule about the Elements Within Text data category + + + + + + + + + + + + + + + + + Rule about the Domain data category + + + + + + + + + + + + + + + + + + + + + + + + + Rule about the Disambiguation data category + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Rule about the LocaleFilter data category + + + + + + + + + + + + + + + + + + + + Rule about the Provenance data category + + + + + + + + + + + + + + + + + + + + + + Rule about the External Resource data category + + + + + + + + + + + + + + + + + + + + + + Rule about the Target Pointer data category + + + + + + + + + + + + + + + + + + + + + + Rule about the Id Value data category + + + + + + + + + + + + + + + + + + + + + + Rule about the Preserve Space data category + + + + + + + + + + + + + + + + + + default + preserve + + + + + + Rule about the Localization Quality Issue data category + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Rule about the MT Confidence data category + + + + + + + + + + + + + + + + + Rule about the Allowed Characters data category + + + + + + + + + + + + + + + + + + + + + + + + + Rule about the Allowed Characters data category + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Standoff markup for Provenance data category + + + + + + + + + + + + + + + + + Provenance record used in Provenance standoff markup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Standoff markup for Localization Quality Issue data category + + + + + + + + + + + + + + + + + Issue recorded in Localization Quality standoff markup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/catalog/docbook5.2/rng/dbitsxi.rnc b/catalog/docbook5.2/rng/dbitsxi.rnc new file mode 100755 index 0000000..b6bf90b --- /dev/null +++ b/catalog/docbook5.2/rng/dbitsxi.rnc @@ -0,0 +1,12854 @@ +namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" +namespace ctrl = "http://nwalsh.com/xmlns/schema-control/" +default namespace db = "http://docbook.org/ns/docbook" +namespace html = "http://www.w3.org/1999/xhtml" +namespace its = "http://www.w3.org/2005/11/its" +namespace local = "" +namespace mml = "http://www.w3.org/1998/Math/MathML" +namespace rng = "http://relaxng.org/ns/structure/1.0" +namespace s = "http://purl.oclc.org/dsdl/schematron" +namespace src = "http://nwalsh.com/xmlns/litprog/fragment" +namespace svg = "http://www.w3.org/2000/svg" +namespace trans = "http://docbook.org/ns/transclusion" +namespace xi = "http://www.w3.org/2001/XInclude" +namespace xlink = "http://www.w3.org/1999/xlink" + +# This file is part of DocBook ITS XInclude V5.2CR5 +# +# Copyright 2007-2020 HaL Computer Systems, Inc., +# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software +# Corporation, Norman Walsh, Jirka Kosek, Sun Microsystems, Inc., +# and the Organization for the Advancement of Structured Information +# Standards (OASIS). +# +# Permission to use, copy, modify and distribute the DocBook schema +# and its accompanying documentation for any purpose and without fee +# is hereby granted in perpetuity, provided that the above copyright +# notice and this paragraph appear in all copies. The copyright +# holders make no representation about the suitability of the schema +# for any purpose. It is provided "as is" without expressed or implied +# warranty. +# +# If you modify the DocBook schema in any way, label your schema as a +# variant of DocBook. See the reference documentation +# (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook) +# for more information. +# +# Please direct all questions, bug reports, or suggestions for changes +# to the docbook-comment@lists.oasis-open.org mailing list. For more +# information, see http://www.oasis-open.org/docbook/. +# +# ====================================================================== + +s:ns [ + prefix = "a" + uri = "http://relaxng.org/ns/compatibility/annotations/1.0" +] +s:ns [ prefix = "ctrl" uri = "http://nwalsh.com/xmlns/schema-control/" ] +s:ns [ prefix = "db" uri = "http://docbook.org/ns/docbook" ] +s:ns [ prefix = "html" uri = "http://www.w3.org/1999/xhtml" ] +s:ns [ prefix = "its" uri = "http://www.w3.org/2005/11/its" ] +s:ns [ prefix = "mml" uri = "http://www.w3.org/1998/Math/MathML" ] +s:ns [ prefix = "rng" uri = "http://relaxng.org/ns/structure/1.0" ] +s:ns [ prefix = "s" uri = "http://purl.oclc.org/dsdl/schematron" ] +s:ns [ prefix = "src" uri = "http://nwalsh.com/xmlns/litprog/fragment" ] +s:ns [ prefix = "svg" uri = "http://www.w3.org/2000/svg" ] +s:ns [ prefix = "trans" uri = "http://docbook.org/ns/transclusion" ] +s:ns [ prefix = "xi" uri = "http://www.w3.org/2001/XInclude" ] +s:ns [ prefix = "xlink" uri = "http://www.w3.org/1999/xlink" ] +start = + (db.set + | db.book + | db.divisions + | db.components + | db.navigation.components + | db.section + | db.para) + | (db.abstract + | db.mediaobject.content + | db.audiodata + | db.imagedata + | db.textdata + | db.videodata + | db.caption + | db.publishing.blocks + | db.wrapper.blocks + | db.formal.blocks + | db.informal.blocks + | db.formalpara + | db.inlinemediaobject + | db.list.blocks + | db.legalnotice + | db.verbatim.blocks + | db.graphic.blocks + | db.personblurb + | db.revhistory + | db.simpara + | db.step + | db.stepalternatives + | db.info) + | (db.partintro | db.simplesect) + | db.annotation + | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5) + | (db.refentry | db.refsection | db.refsynopsisdiv) + | (db.refsect1 | db.refsect2 | db.refsect3) + | (db.glossary | db.glossdiv | db.glosslist) + | (db.bibliodiv | db.bibliolist) + | (db.setindex | db.index | db.indexdiv) + | (db.toc | db.tocdiv) + | (db.task | db.taskprerequisites | db.taskrelated | db.tasksummary) + | (db.calloutlist + | db.programlistingco + | db.screenco + | db.imageobjectco) + | (db.productionset | db.constraintdef) + | (db.msg + | db.msgexplan + | db.msgmain + | db.msgrel + | db.msgset + | db.msgsub) + | (db.qandadiv | db.qandaentry | db.qandaset) + | (db.equation | db.informalequation) + | db.cmdsynopsis + | (db.synopsis.blocks | db.funcsynopsisinfo | db.classsynopsisinfo) + | db.admonition.blocks + | db.topic +div { + db._any.attribute = + + ## Any attribute, including any attribute in any namespace + attribute * { text } +} +db.arch.attribute = + + ## Designates the computer or chip architecture to which the element applies + attribute arch { text } +db.audience.attribute = + + ## Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + attribute audience { text } +db.condition.attribute = + + ## provides a standard place for application-specific effectivity + attribute condition { text } +db.conformance.attribute = + + ## Indicates standards conformance characteristics of the element + attribute conformance { text } +db.os.attribute = + + ## Indicates the operating system to which the element is applicable + attribute os { text } +db.revision.attribute = + + ## Indicates the editorial revision to which the element belongs + attribute revision { text } +db.security.attribute = + + ## Indicates something about the security level associated with the element to which it applies + attribute security { text } +db.userlevel.attribute = + + ## Indicates the level of user experience for which the element applies + attribute userlevel { text } +db.vendor.attribute = + + ## Indicates the computer vendor to which the element applies + attribute vendor { text } +db.wordsize.attribute = + + ## Indicates the word size (width in bits) of the computer architecture to which the element applies + attribute wordsize { text } +db.outputformat.attribute = + + ## Indicates the output format (for example, print or epub) to which the element applies + attribute outputformat { text } +db.effectivity.attributes = + db.arch.attribute? + & db.audience.attribute? + & db.condition.attribute? + & db.conformance.attribute? + & db.os.attribute? + & db.revision.attribute? + & db.security.attribute? + & db.userlevel.attribute? + & db.vendor.attribute? + & db.wordsize.attribute? + & db.outputformat.attribute? +db.endterm.attribute = + + ## Points to the element whose content is to be used as the text of the link + attribute endterm { xsd:IDREF } +db.linkend.attribute = + + ## Points to an internal link target by identifying the value of its xml:id attribute + attribute linkend { xsd:IDREF } +db.linkends.attribute = + + ## Points to one or more internal link targets by identifying the value of their xml:id attributes + attribute linkends { xsd:IDREFS } +db.xlink.href.attribute = + + ## Identifies a link target with a URI + attribute xlink:href { xsd:anyURI } +db.xlink.simple.type.attribute = + + ## Identifies the XLink link type + attribute xlink:type { + + ## An XLink simple link type + "simple" + } +db.xlink.role.attribute = + + ## Identifies the XLink role of the link + attribute xlink:role { xsd:anyURI } +db.xlink.arcrole.attribute = + + ## Identifies the XLink arcrole of the link + attribute xlink:arcrole { xsd:anyURI } +db.xlink.title.attribute = + + ## Identifies the XLink title of the link + attribute xlink:title { text } +db.xlink.show.enumeration = + + ## An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + "new" + | + ## An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. + "replace" + | + ## An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + "embed" + | + ## The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior. + "other" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + "none" +db.xlink.show.attribute = + + ## Identifies the XLink show behavior of the link + attribute xlink:show { db.xlink.show.enumeration } +db.xlink.actuate.enumeration = + + ## An application should traverse to the ending resource immediately on loading the starting resource. + "onLoad" + | + ## An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + "onRequest" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior. + "other" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + "none" +db.xlink.actuate.attribute = + + ## Identifies the XLink actuate behavior of the link + attribute xlink:actuate { db.xlink.actuate.enumeration } +db.xlink.simple.link.attributes = + db.xlink.simple.type.attribute? + & db.xlink.href.attribute? + & db.xlink.role.attribute? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? +db.xlink.attributes = + db.xlink.simple.link.attributes + | (db.xlink.extended.link.attributes + | db.xlink.locator.link.attributes + | db.xlink.arc.link.attributes + | db.xlink.resource.link.attributes + | db.xlink.title.link.attributes) +db.xml.id.attribute = + + ## Identifies the unique ID value of the element + attribute xml:id { xsd:ID } +db.version.attribute = + + ## Specifies the DocBook version of the element and its descendants + attribute version { text } +db.xml.lang.attribute = + + ## Specifies the natural language of the element and its descendants + attribute xml:lang { text } +db.xml.base.attribute = + + ## Specifies the base URI of the element and its descendants + attribute xml:base { xsd:anyURI } +db.remap.attribute = + + ## Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + attribute remap { text } +db.xreflabel.attribute = + + ## Provides the text that is to be generated for a cross reference to the element + attribute xreflabel { text } +db.xrefstyle.attribute = + + ## Specifies a keyword or keywords identifying additional style information + attribute xrefstyle { text } +db.revisionflag.enumeration = + + ## The element has been changed. + "changed" + | + ## The element is new (has been added to the document). + "added" + | + ## The element has been deleted. + "deleted" + | + ## Explicitly turns off revision markup for this element. + "off" +db.revisionflag.attribute = + + ## Identifies the revision status of the element + attribute revisionflag { db.revisionflag.enumeration } +db.dir.enumeration = + + ## Left-to-right text + "ltr" + | + ## Right-to-left text + "rtl" + | + ## Left-to-right override + "lro" + | + ## Right-to-left override + "rlo" +db.dir.attribute = + + ## Identifies the direction of text in an element + attribute dir { db.dir.enumeration } +db.rdfalite.vocab = + + ## The RDFa Lite vocab + attribute vocab { xsd:anyURI } +db.rdfalite.typeof = + + ## The RDFa Lite typeof + attribute typeof { text } +db.rdfalite.property = + + ## The RDFa Lite property + attribute property { text } +db.rdfalite.resource = + + ## The RDFa Lite resource + attribute resource { text } +db.rdfalite.prefix = + + ## The RDFa Lite prefix + attribute prefix { text } +db.rdfalite.attributes = + db.rdfalite.vocab? + & db.rdfalite.typeof? + & db.rdfalite.property? + & db.rdfalite.resource? + & db.rdfalite.prefix? +db.trans.idfixup.enumeration = + + ## No ID fixup strategy + "none" + | + ## ID fixup by concatenating suffixes + "suffix" + | + ## ID fixup by creating unique values + "auto" +db.trans.idfixup.attribute = + + ## The transclusion ID fixup strategy + attribute trans:idfixup { db.trans.idfixup.enumeration } +db.trans.suffix.attribute = + + ## The transclusion suffix to use when the suffix ID fixup strategy is employed + [ + s:pattern [ + s:title [ "Suffix fixup must be specified" ] + s:rule [ + context = "db:*[@trans:suffix]" + s:assert [ + test = "@trans:idfixup = 'suffix'" + "If a suffix is specified, suffix ID fixup must also be specified." + ] + ] + ] + ] + attribute trans:suffix { text } +db.trans.linkscope.enumeration = + + ## No link scope adjustments are made + "user" + | + ## The link scopes are adjusted with the suffix property + "local" + | + ## The link scopes are adjusted based on proximity + "near" + | + ## The link scopes are adjusted based on document order + "global" +db.trans.linkscope.attribute = + + ## The transclusion link scope adjustment + attribute trans:linkscope { db.trans.linkscope.enumeration } +db.common.transclusion.attributes = + db.trans.idfixup.attribute? + & db.trans.suffix.attribute? + & db.trans.linkscope.attribute? +db.common.base.attributes = + db.version.attribute? + & db.xml.lang.attribute? + & db.xml.base.attribute? + & db.remap.attribute? + & db.xreflabel.attribute? + & db.revisionflag.attribute? + & db.dir.attribute? + & db.effectivity.attributes + & db.rdfalite.attributes + & db.common.transclusion.attributes + & db._any_other.attribute* + & (its-local.attributes & its-attribute.version?) +db.common.attributes = + db.xml.id.attribute? + & db.common.base.attributes + & db.annotations.attribute? +db.common.idreq.attributes = + db.xml.id.attribute + & db.common.base.attributes + & db.annotations.attribute? +db.common.linking.attributes = + (db.linkend.attribute | db.xlink.attributes)? +db.common.req.linking.attributes = + db.linkend.attribute | db.xlink.attributes +db.common.data.attributes = + + ## Specifies the format of the data + attribute format { text }?, + ( + ## Indentifies the location of the data by URI + attribute fileref { xsd:anyURI } + | + ## Identifies the location of the data by external identifier (entity name) + attribute entityref { xsd:ENTITY }) +db.verbatim.continuation.enumeration = + + ## Line numbering continues from the immediately preceding element with the same name. + "continues" + | + ## Line numbering restarts (begins at 1, usually). + "restarts" +db.verbatim.continuation.attribute = + + ## Determines whether line numbering continues from the previous element or restarts + attribute continuation { db.verbatim.continuation.enumeration } +db.verbatim.linenumbering.enumeration = + + ## Lines are numbered. + "numbered" + | + ## Lines are not numbered. + "unnumbered" +db.verbatim.linenumbering.attribute = + + ## Determines whether lines are numbered + attribute linenumbering { db.verbatim.linenumbering.enumeration } +db.verbatim.startinglinenumber.attribute = + + ## Specifies the initial line number + attribute startinglinenumber { xsd:integer } +db.verbatim.language.attribute = + + ## Identifies the language (i.e. programming language) of the verbatim content + attribute language { text } +db.verbatim.xml.space.attribute = + + ## Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not + attribute xml:space { + + ## Whitespace must be preserved. + "preserve" + } +db.verbatim.common.attributes = + db.verbatim.continuation.attribute? + & db.verbatim.linenumbering.attribute? + & db.verbatim.startinglinenumber.attribute? + & db.verbatim.xml.space.attribute? +db.verbatim.attributes = + db.verbatim.common.attributes & db.verbatim.language.attribute? +db.label.attribute = + + ## Specifies an identifying string for presentation purposes + attribute label { text } +db.width.characters.attribute = + + ## Specifies the width (in characters) of the element + attribute width { xsd:nonNegativeInteger } +db.spacing.enumeration = + + ## The spacing should be "compact". + "compact" + | + ## The spacing should be "normal". + "normal" +db.spacing.attribute = + + ## Specifies (a hint about) the spacing of the content + attribute spacing { db.spacing.enumeration } +db.pgwide.enumeration = + + ## The element should be rendered in the current text flow (with the flow column width). + "0" + | + ## The element should be rendered across the full text page. + "1" +db.pgwide.attribute = + + ## Indicates if the element is rendered across the column or the page + attribute pgwide { db.pgwide.enumeration } +db.language.attribute = + + ## Identifies the language (i.e. programming language) of the content + attribute language { text } +db.performance.enumeration = + + ## The content describes an optional step or steps. + "optional" + | + ## The content describes a required step or steps. + "required" +db.performance.attribute = + + ## Specifies if the content is required or optional + attribute performance { db.performance.enumeration } +db.floatstyle.attribute = + + ## Specifies style information to be used when rendering the float + attribute floatstyle { text } +db.width.attribute = + + ## Specifies the width of the element + attribute width { text } +db.depth.attribute = + + ## Specifies the depth of the element + attribute depth { text } +db.contentwidth.attribute = + + ## Specifies the width of the content rectangle + attribute contentwidth { text } +db.contentdepth.attribute = + + ## Specifies the depth of the content rectangle + attribute contentdepth { text } +db.scalefit.enumeration = + + ## False (do not scale-to-fit; anamorphic scaling may occur) + "0" + | + ## True (scale-to-fit; anamorphic scaling is forbidden) + "1" +db.scale.attribute = + + ## Specifies the scaling factor + attribute scale { xsd:positiveInteger } +db.classid.attribute = + + ## Specifies a classid for a media object player + attribute classid { text } +db.autoplay.attribute = + + ## Specifies the autoplay setting for a media object player + attribute autoplay { text } +db.halign.enumeration = + + ## Centered horizontally + "center" + | + ## Aligned horizontally on the specified character + "char" + | + ## Fully justified (left and right margins or edges) + "justify" + | + ## Left aligned + "left" + | + ## Right aligned + "right" +db.valign.enumeration = + + ## Aligned on the bottom of the region + "bottom" + | + ## Centered vertically + "middle" + | + ## Aligned on the top of the region + "top" +db.biblio.class.enumeration = + + ## A digital object identifier. + "doi" + | + ## An international standard book number. + "isbn" + | + ## An international standard technical report number (ISO 10444). + "isrn" + | + ## An international standard serial number. + "issn" + | + ## An international standard text code. + "istc" + | + ## A Library of Congress reference number. + "libraryofcongress" + | + ## A publication number (an internal number or possibly organizational standard). + "pubsnumber" + | + ## A Uniform Resource Identifier + "uri" +db.biblio.class-enum.attribute = + + ## Identifies the kind of bibliographic identifier + attribute class { db.biblio.class.enumeration }? +db.biblio.class-other.attribute = + + ## Identifies the nature of the non-standard bibliographic identifier + attribute otherclass { xsd:NMTOKEN } +db.biblio.class-other.attributes = + + ## Identifies the kind of bibliographic identifier + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.biblio.class-other.attribute +db.biblio.class.attribute = + db.biblio.class-enum.attribute | db.biblio.class-other.attributes +db.pubwork.enumeration = + + ## An article + "article" + | + ## A bulletin board system + "bbs" + | + ## A book + "book" + | + ## A CD-ROM + "cdrom" + | + ## A chapter (as of a book) + "chapter" + | + ## A DVD + "dvd" + | + ## An email message + "emailmessage" + | + ## A gopher page + "gopher" + | + ## A journal + "journal" + | + ## A manuscript + "manuscript" + | + ## A posting to a newsgroup + "newsposting" + | + ## A part (as of a book) + "part" + | + ## A reference entry + "refentry" + | + ## A section (as of a book or article) + "section" + | + ## A series + "series" + | + ## A set (as of books) + "set" + | + ## A web page + "webpage" + | + ## A wiki page + "wiki" + | + ## Some other kind of work + "other" +db.biblio.pubwork.enumeration = db.pubwork.enumeration +db.biblio.pubwork-enum.attribute = + + ## Identifies the nature of the published work + attribute pubwork { db.biblio.pubwork.enumeration }? +db.biblio.pubwork-other.attribute = + + ## Identifies the nature of some other kind of published work + attribute otherpubwork { xsd:NMTOKEN } +db.biblio.pubwork-other.attributes = + + ## Identifies that this is some other kind of published work + attribute pubwork { + + ## Indicates that the published work is some 'other' kind. + "other" + } + & db.biblio.pubwork-other.attribute +db.biblio.pubwork.attribute = + db.biblio.pubwork-enum.attribute | db.biblio.pubwork-other.attributes +db.ubiq.inlines = + (db.inlinemediaobject + | db.remark + | db.link.inlines + | db.alt + | db.trademark + | # below, effectively the publishing inlines (as of 5.0) + db.abbrev + | db.acronym + | db.date + | db._emphasis + | db.footnote + | db.footnoteref + | db._foreignphrase + | db._phrase + | db._quote + | db.subscript + | db.superscript + | db.wordasword) + | db.annotation + | (db._firstterm | db._glossterm) + | db.indexterm + | db.coref +db._text = + (text | db.ubiq.inlines | db._phrase | db.replaceable)* + | db.xi.include +db._title = db.title? & db.titleabbrev? & db.subtitle? +db._title.req = db.title & db.titleabbrev? & db.subtitle? +db._title.only = db.title? & db.titleabbrev? +db._title.onlyreq = db.title & db.titleabbrev? +db._info = (db._title, db.titleforbidden.info?) | db.info? +db._info.title.req = + (db._title.req, db.titleforbidden.info?) | db.titlereq.info +db._info.title.only = + (db._title.only, db.titleforbidden.info?) | db.titleonly.info +db._info.title.onlyreq = + (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info +db._info.title.forbidden = db.titleforbidden.info? +db.all.inlines = + (text + | db.ubiq.inlines + | db.general.inlines + | db.domain.inlines + | db.extension.inlines) + | db.xi.include +db.general.inlines = + db.publishing.inlines + | db.product.inlines + | db.bibliography.inlines + | db.graphic.inlines + | db.indexing.inlines + | db.link.inlines +db.domain.inlines = + db.technical.inlines + | db.math.inlines + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines + | db.os.inlines + | db.programming.inlines + | db.error.inlines +db.technical.inlines = + (db.replaceable | db.package | db.parameter) + | db.termdef + | db.nonterminal + | (db.systemitem | db.option | db.optional | db.property) +db.product.inlines = + db.trademark + | (db.productnumber + | db.productname + | db.database + | db.application + | db.hardware) +db.bibliography.inlines = + db.citation + | db.citerefentry + | db.citetitle + | db.citebiblioid + | db.author + | db.person + | db.personname + | db.org + | db.orgname + | db.editor + | db.jobtitle +db.publishing.inlines = + (db.abbrev + | db.acronym + | db.date + | db.emphasis + | db.footnote + | db.footnoteref + | db.foreignphrase + | db.phrase + | db.quote + | db.revnumber + | db.subscript + | db.superscript + | db.wordasword) + | db.glossary.inlines + | db.coref +db.graphic.inlines = db.inlinemediaobject +db.indexing.inlines = notAllowed | db.indexterm +db.link.inlines = + (db.xref | db.link | db.olink | db.anchor) | db.biblioref +db.extension.inlines = notAllowed +db.nopara.blocks = + (db.list.blocks + | db.wrapper.blocks + | db.formal.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.indexterm + | db.synopsis.blocks + | db.admonition.blocks +db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara +db.all.blocks = + (db.nopara.blocks | db.para.blocks | db.extension.blocks) + | db.annotation + | db.xi.include +db.wrapper.blocks = db.formalgroup +db.formal.blocks = (db.example | db.figure | db.table) | db.equation +db.informal.blocks = + (db.informalexample | db.informalfigure | db.informaltable) + | db.informalequation +db.publishing.blocks = + db.sidebar | db.blockquote | db.address | db.epigraph +db.graphic.blocks = db.mediaobject | db.screenshot +db.technical.blocks = + db.procedure + | db.task + | (db.productionset | db.constraintdef) + | db.msgset +db.list.blocks = + (db.itemizedlist + | db.orderedlist + | db.procedure + | db.simplelist + | db.variablelist + | db.segmentedlist) + | db.glosslist + | db.bibliolist + | db.calloutlist + | db.qandaset +db.verbatim.blocks = + (db.screen | db.literallayout) + | (db.programlistingco | db.screenco) + | (db.programlisting | db.synopsis) +db.extension.blocks = notAllowed +db.info.extension = db._any | (its-rules | its-standoff) +db.info.elements = + (db.abstract + | db.address + | db.artpagenums + | db.author + | db.authorgroup + | db.authorinitials + | db.bibliocoverage + | db.biblioid + | db.bibliosource + | db.collab + | db.confgroup + | db.contractsponsor + | db.contractnum + | db.copyright + | db.cover + | db.date + | db.edition + | db.editor + | db.issuenum + | db.keywordset + | db.legalnotice + | db.mediaobject + | db.org + | db.orgname + | db.othercredit + | db.pagenums + | db.printhistory + | db.pubdate + | db.publisher + | db.publishername + | db.releaseinfo + | db.revhistory + | db.seriesvolnums + | db.subjectset + | db.volumenum + | db.meta + | db.info.extension) + | db.annotation + | db.extendedlink + | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset) + | db.itermset + | (db.productname | db.productnumber) + | db.xi.include +db.bibliographic.elements = + db.info.elements + | db.publishing.inlines + | db.citerefentry + | db.citetitle + | db.citebiblioid + | db.person + | db.personblurb + | db.personname + | db.subtitle + | db.title + | db.titleabbrev +div { + db.title.role.attribute = attribute role { text } + db.title.attlist = + db.title.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.title = + + ## The text of the title of a section of a document or of a formal block-level element + element title { db.title.attlist, db.all.inlines* } +} +div { + db.titleabbrev.role.attribute = attribute role { text } + db.titleabbrev.attlist = + db.titleabbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.titleabbrev = + + ## The abbreviation of a title + element titleabbrev { db.titleabbrev.attlist, db.all.inlines* } +} +div { + db.subtitle.role.attribute = attribute role { text } + db.subtitle.attlist = + db.subtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subtitle = + + ## The subtitle of a document + element subtitle { db.subtitle.attlist, db.all.inlines* } +} +div { + db.info.role.attribute = attribute role { text } + db.info.attlist = db.info.role.attribute? & db.common.attributes + db.info = + + ## A wrapper for information about a component or other block + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { db.info.attlist, (db._title & db.info.elements*) } +} +div { + db.titlereq.info.role.attribute = attribute role { text } + db.titlereq.info.attlist = + db.titlereq.info.role.attribute? & db.common.attributes + db.titlereq.info = + + ## A wrapper for information about a component or other block with a required title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { + db.titlereq.info.attlist, (db._title.req & db.info.elements*) + } +} +div { + db.titleonly.info.role.attribute = attribute role { text } + db.titleonly.info.attlist = + db.titleonly.info.role.attribute? & db.common.attributes + db.titleonly.info = + + ## A wrapper for information about a component or other block with only a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { + db.titleonly.info.attlist, (db._title.only & db.info.elements*) + } +} +div { + db.titleonlyreq.info.role.attribute = attribute role { text } + db.titleonlyreq.info.attlist = + db.titleonlyreq.info.role.attribute? & db.common.attributes + db.titleonlyreq.info = + + ## A wrapper for information about a component or other block with only a required title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { + db.titleonlyreq.info.attlist, + (db._title.onlyreq & db.info.elements*) + } +} +div { + db.titleforbidden.info.role.attribute = attribute role { text } + db.titleforbidden.info.attlist = + db.titleforbidden.info.role.attribute? & db.common.attributes + db.titleforbidden.info = + + ## A wrapper for information about a component or other block without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { db.titleforbidden.info.attlist, db.info.elements* } +} +div { + db.subjectset.role.attribute = attribute role { text } + db.subjectset.scheme.attribute = + + ## Identifies the controlled vocabulary used by this set's terms + attribute scheme { xsd:NMTOKEN } + db.subjectset.attlist = + db.subjectset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.subjectset.scheme.attribute? + db.subjectset = + + ## A set of terms describing the subject matter of a document + element subjectset { db.subjectset.attlist, db.subject+ } +} +div { + db.subject.role.attribute = attribute role { text } + db.subject.weight.attribute = + + ## Specifies a ranking for this subject relative to other subjects in the same set + attribute weight { text } + db.subject.attlist = + db.subject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.subject.weight.attribute? + db.subject = + + ## One of a group of terms describing the subject matter of a document + element subject { db.subject.attlist, db.subjectterm+ } +} +div { + db.subjectterm.role.attribute = attribute role { text } + db.subjectterm.attlist = + db.subjectterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subjectterm = + + ## A term in a group of terms describing the subject matter of a document + element subjectterm { db.subjectterm.attlist, text } +} +div { + db.keywordset.role.attribute = attribute role { text } + db.keywordset.attlist = + db.keywordset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keywordset = + + ## A set of keywords describing the content of a document + element keywordset { db.keywordset.attlist, db.keyword+ } +} +div { + db.keyword.role.attribute = attribute role { text } + db.keyword.attlist = + db.keyword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keyword = + + ## One of a set of keywords describing the content of a document + element keyword { db.keyword.attlist, text } +} +db.table.choice = notAllowed | db.cals.table | db.html.table +db.informaltable.choice = + notAllowed | db.cals.informaltable | db.html.informaltable +db.table = db.table.choice +db.informaltable = db.informaltable.choice +div { + db.procedure.role.attribute = attribute role { text } + db.procedure.type.attribute = + + ## Identifies the type of procedure + attribute type { text }? + db.procedure.attlist = + db.procedure.role.attribute? + & db.procedure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + db.procedure.info = db._info.title.only + db.procedure = + + ## A list of operations to be performed in a well-defined sequence + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:procedure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element procedure { + db.procedure.attlist, + db.procedure.info, + db.all.blocks*, + db.step+, + db.result? + } +} +div { + db.step.role.attribute = attribute role { text } + db.step.attlist = + db.step.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.step.info = db._info.title.only + # This content model is blocks*, step|stepalternatives, blocks* but + # expressed this way it avoids UPA issues in XSD and DTD versions + db.step = + + ## A unit of action in a procedure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:step" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element step { + db.step.attlist, + db.step.info, + ((db.all.blocks+, + ((db.substeps | db.stepalternatives), db.all.blocks*)?, + db.result?) + | ((db.substeps | db.stepalternatives), + db.all.blocks*, + db.result?)) + } +} +div { + db.stepalternatives.role.attribute = attribute role { text } + db.stepalternatives.attlist = + db.stepalternatives.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.stepalternatives.info = db._info.title.forbidden + db.stepalternatives = + + ## Alternative steps in a procedure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:stepalternatives" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element stepalternatives { + db.stepalternatives.attlist, db.stepalternatives.info, db.step+ + } +} +div { + db.substeps.role.attribute = attribute role { text } + db.substeps.attlist = + db.substeps.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.substeps = + + ## A wrapper for steps that occur within steps in a procedure + element substeps { db.substeps.attlist, db.step+ } +} +div { + db.result.role.attribute = attribute role { text } + db.result.attlist = + db.result.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.result = + + ## A wrapper for identifying the results of a procedure or step + element result { db.result.attlist, db.all.blocks+ } +} +div { + db.sidebar.floatstyle.attribute = db.floatstyle.attribute + db.sidebar.role.attribute = attribute role { text } + db.sidebar.attlist = + db.sidebar.role.attribute? + & db.sidebar.floatstyle.attribute? + & db.common.attributes + & db.common.linking.attributes + db.sidebar.info = db._info + db.sidebar = + + ## A portion of a document that is isolated from the main narrative flow + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:sidebar" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of sidebar" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sidebar" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sidebar { + db.sidebar.attlist, db.sidebar.info, db.all.blocks+ + } +} +div { + db.abstract.role.attribute = attribute role { text } + db.abstract.attlist = + db.abstract.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abstract.info = db._info.title.only + db.abstract = + + ## A summary + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:abstract" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element abstract { + db.abstract.attlist, db.abstract.info, db.all.blocks+ + } +} +div { + db.personblurb.role.attribute = attribute role { text } + db.personblurb.attlist = + db.personblurb.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.personblurb.info = db._info.title.only + db.personblurb = + + ## A short description or note about a person + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:personblurb" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element personblurb { + db.personblurb.attlist, db.personblurb.info, db.para.blocks+ + } +} +div { + db.blockquote.role.attribute = attribute role { text } + db.blockquote.attlist = + db.blockquote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.blockquote.info = db._info.title.only + db.blockquote = + + ## A quotation set off from the main text + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:blockquote" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element blockquote { + db.blockquote.attlist, + db.blockquote.info, + db.attribution?, + db.all.blocks+ + } +} +div { + db.attribution.role.attribute = attribute role { text } + db.attribution.attlist = + db.attribution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.attribution = + + ## The source of a block quote or epigraph + element attribution { + db.attribution.attlist, + (db._text + | db.person + | db.personname + | db.citetitle + | db.citation)* + } +} +div { + db.bridgehead.renderas.enumeration = + + ## Render as a first-level section + "sect1" + | + ## Render as a second-level section + "sect2" + | + ## Render as a third-level section + "sect3" + | + ## Render as a fourth-level section + "sect4" + | + ## Render as a fifth-level section + "sect5" + db.bridgehead.renderas-enum.attribute = + + ## Indicates how the bridge head should be rendered + attribute renderas { db.bridgehead.renderas.enumeration }? + db.bridgehead.renderas-other.attribute = + + ## Identifies the nature of the non-standard rendering + attribute otherrenderas { xsd:NMTOKEN } + db.bridgehead.renderas-other.attributes = + + ## Indicates how the bridge head should be rendered + attribute renderas { + + ## Identifies a non-standard rendering + "other" + } + & db.bridgehead.renderas-other.attribute + db.bridgehead.renderas.attribute = + db.bridgehead.renderas-enum.attribute + | db.bridgehead.renderas-other.attributes + db.bridgehead.role.attribute = attribute role { text } + db.bridgehead.attlist = + db.bridgehead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bridgehead.renderas.attribute? + db.bridgehead = + + ## A free-floating heading + element bridgehead { db.bridgehead.attlist, db.all.inlines* } +} +div { + db.remark.role.attribute = attribute role { text } + db.remark.attlist = + db.remark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.remark = + + ## A remark (or comment) intended for presentation in a draft manuscript + element remark { db.remark.attlist, db.all.inlines* } +} +div { + db.epigraph.role.attribute = attribute role { text } + db.epigraph.attlist = + db.epigraph.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.epigraph.info = db._info.title.forbidden + db.epigraph = + + ## A short inscription at the beginning of a document or component + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:epigraph" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element epigraph { + db.epigraph.attlist, + db.epigraph.info, + db.attribution?, + (db.para.blocks | db.literallayout)+ + } +} +div { + db.footnote.role.attribute = attribute role { text } + db.footnote.label.attribute = + + ## Identifies the desired footnote mark + attribute label { xsd:NMTOKEN } + db.footnote.attlist = + db.footnote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.footnote.label.attribute? + db.footnote = + + ## A footnote + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:footnote)" + "footnote must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:epigraph)" + "epigraph must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of footnote" + ] + ] + ] + ] + element footnote { db.footnote.attlist, db.all.blocks+ } +} +div { + db.formalpara.role.attribute = attribute role { text } + db.formalpara.attlist = + db.formalpara.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.formalpara.info = db._info.title.onlyreq + db.formalpara = + + ## A paragraph with a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:formalpara" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element formalpara { + db.formalpara.attlist, + db.formalpara.info, + db.indexing.inlines*, + db.para + } +} +div { + db.para.role.attribute = attribute role { text } + db.para.attlist = + db.para.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.para.info = db._info.title.forbidden + db.para = + + ## A paragraph + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:para" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element para { + db.para.attlist, + db.para.info, + (db.all.inlines | db.nopara.blocks)* + } +} +div { + db.simpara.role.attribute = attribute role { text } + db.simpara.attlist = + db.simpara.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.simpara.info = db._info.title.forbidden + db.simpara = + + ## A paragraph that contains only text and inline markup, no block elements + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:simpara" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element simpara { + db.simpara.attlist, db.simpara.info, db.all.inlines* + } +} +div { + db.itemizedlist.role.attribute = attribute role { text } + db.itemizedlist.mark.attribute = + + ## Identifies the type of mark to be used on items in this list + attribute mark { xsd:NMTOKEN } + db.itemizedlist.attlist = + db.itemizedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & db.itemizedlist.mark.attribute? + db.itemizedlist.info = db._info.title.only + db.itemizedlist = + + ## A list in which each entry is marked with a bullet or other dingbat + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:itemizedlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element itemizedlist { + db.itemizedlist.attlist, + db.itemizedlist.info, + db.all.blocks*, + db.listitem+ + } +} +div { + db.orderedlist.role.attribute = attribute role { text } + db.orderedlist.continuation.enumeration = + + ## Specifies that numbering should begin where the preceding list left off + "continues" + | + ## Specifies that numbering should begin again at 1 + "restarts" + db.orderedlist.continuation.attribute = + + ## Indicates how list numbering should begin relative to the immediately preceding list + attribute continuation { db.orderedlist.continuation.enumeration } + db.orderedlist.startingnumber.attribute = + + ## Specifies the initial line number + attribute startingnumber { xsd:integer } + db.orderedlist.inheritnum.enumeration = + + ## Specifies that numbering should ignore list nesting + "ignore" + | + ## Specifies that numbering should inherit from outer-level lists + "inherit" + db.orderedlist.inheritnum.attribute = + + ## Indicates whether or not item numbering should be influenced by list nesting + attribute inheritnum { db.orderedlist.inheritnum.enumeration } + db.orderedlist.numeration.enumeration = + + ## Specifies Arabic numeration (1, 2, 3, …) + "arabic" + | + ## Specifies upper-case alphabetic numeration (A, B, C, …) + "upperalpha" + | + ## Specifies lower-case alphabetic numeration (a, b, c, …) + "loweralpha" + | + ## Specifies upper-case Roman numeration (I, II, III, …) + "upperroman" + | + ## Specifies lower-case Roman numeration (i, ii, iii …) + "lowerroman" + db.orderedlist.numeration.attribute = + + ## Indicates the desired numeration + attribute numeration { db.orderedlist.numeration.enumeration } + db.orderedlist.attlist = + db.orderedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & (db.orderedlist.continuation.attribute + | db.orderedlist.startingnumber.attribute)? + & db.orderedlist.inheritnum.attribute? + & db.orderedlist.numeration.attribute? + db.orderedlist.info = db._info.title.only + db.orderedlist = + + ## A list in which each entry is marked with a sequentially incremented label + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:orderedlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element orderedlist { + db.orderedlist.attlist, + db.orderedlist.info, + db.all.blocks*, + db.listitem+ + } +} +div { + db.listitem.role.attribute = attribute role { text } + db.listitem.override.attribute = + + ## Specifies the keyword for the type of mark that should be used on this + ## item, instead of the mark that would be used by default + attribute override { xsd:NMTOKEN } + db.listitem.attlist = + db.listitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.listitem.override.attribute? + db.listitem.info = db._info.title.forbidden + db.listitem = + + ## A wrapper for the elements of a list item + element listitem { + db.listitem.attlist, db.listitem.info, db.all.blocks+ + } +} +div { + db.segmentedlist.role.attribute = attribute role { text } + db.segmentedlist.attlist = + db.segmentedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.segmentedlist.info = db._info.title.only + db.segmentedlist = + + ## A segmented list, a list of sets of elements + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:segmentedlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element segmentedlist { + db.segmentedlist.attlist, + db.segmentedlist.info, + db.segtitle+, + db.seglistitem+ + } +} +div { + db.segtitle.role.attribute = attribute role { text } + db.segtitle.attlist = + db.segtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.segtitle = + + ## The title of an element of a list item in a segmented list + element segtitle { db.segtitle.attlist, db.all.inlines* } +} +div { + db.seglistitem.role.attribute = attribute role { text } + db.seglistitem.attlist = + db.seglistitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seglistitem = + + ## A list item in a segmented list + [ + s:pattern [ + s:title [ "Cardinality of segments and titles" ] + s:rule [ + context = "db:seglistitem" + s:assert [ + test = "count(db:seg) = count(../db:segtitle)" + "The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist" + ] + ] + ] + ] + element seglistitem { db.seglistitem.attlist, db.seg+ } +} +div { + db.seg.role.attribute = attribute role { text } + db.seg.attlist = + db.seg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seg = + + ## An element of a list item in a segmented list + element seg { db.seg.attlist, db.all.inlines* } +} +div { + db.simplelist.role.attribute = attribute role { text } + db.simplelist.type.enumeration = + + ## A tabular presentation in row-major order. + "horiz" + | + ## A tabular presentation in column-major order. + "vert" + | + ## An inline presentation, usually a comma-delimited list. + "inline" + db.simplelist.type.attribute = + + ## Specifies the type of list presentation + [ a:defaultValue = "vert" ] + attribute type { db.simplelist.type.enumeration } + db.simplelist.columns.attribute = + + ## Specifies the number of columns for horizontal or vertical presentation + attribute columns { xsd:integer } + db.simplelist.attlist = + db.simplelist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplelist.type.attribute? + & db.simplelist.columns.attribute? + db.simplelist = + + ## An undecorated list of single words or short phrases + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:simplelist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element simplelist { db.simplelist.attlist, db.member+ } +} +div { + db.member.role.attribute = attribute role { text } + db.member.attlist = + db.member.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.member = + + ## An element of a simple list + element member { db.member.attlist, db.all.inlines* } +} +div { + db.variablelist.role.attribute = attribute role { text } + db.variablelist.termlength.attribute = + + ## Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list + attribute termlength { text } + db.variablelist.attlist = + db.variablelist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & db.variablelist.termlength.attribute? + db.variablelist.info = db._info.title.only + db.variablelist = + + ## A list in which each entry is composed of a set of one or more terms and an associated description + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:variablelist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element variablelist { + db.variablelist.attlist, + db.variablelist.info, + db.all.blocks*, + db.varlistentry+ + } +} +div { + db.varlistentry.role.attribute = attribute role { text } + db.varlistentry.attlist = + db.varlistentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varlistentry = + + ## A wrapper for a set of terms and the associated description in a variable list + element varlistentry { + db.varlistentry.attlist, db.term+, db.listitem + } +} +div { + db.term.role.attribute = attribute role { text } + db.term.attlist = + db.term.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.term = + + ## The word or phrase being defined or described in a variable list + element term { db.term.attlist, db.all.inlines* } +} +div { + db.example.role.attribute = attribute role { text } + db.example.label.attribute = db.label.attribute + db.example.width.attribute = db.width.characters.attribute + db.example.pgwide.attribute = db.pgwide.attribute + db.example.floatstyle.attribute = db.floatstyle.attribute + db.example.type.attribute = + + ## Identifies the type of example + attribute type { text }? + db.example.attlist = + db.example.role.attribute? + & db.example.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.example.label.attribute? + & db.example.floatstyle.attribute? + & (db.example.width.attribute | db.example.pgwide.attribute)? + db.example.info = db._info.title.onlyreq + db.example = + + ## A formal example, with a title + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:example" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element example { + db.example.attlist, db.example.info, db.all.blocks+, db.caption? + } +} +div { + db.informalexample.role.attribute = attribute role { text } + db.informalexample.width.attribute = db.width.characters.attribute + db.informalexample.pgwide.attribute = db.pgwide.attribute + db.informalexample.floatstyle.attribute = db.floatstyle.attribute + db.informalexample.type.attribute = + + ## Identifies the type of example + attribute type { text }? + db.informalexample.attlist = + db.informalexample.role.attribute? + & db.informalexample.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.informalexample.floatstyle.attribute? + & (db.informalexample.width.attribute + | db.informalexample.pgwide.attribute)? + db.informalexample.info = db._info.title.forbidden + db.informalexample = + + ## A displayed example without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informalexample" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informalexample { + db.informalexample.attlist, + db.informalexample.info, + db.all.blocks+, + db.caption? + } +} +db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co +db.verbatim.contentmodel = + db._info.title.forbidden, (db.textobject | db.verbatim.inlines*) +div { + db.literallayout.role.attribute = attribute role { text } + db.literallayout.class.enumeration = + + ## The literal layout should be formatted with a monospaced font + "monospaced" + | + ## The literal layout should be formatted with the current font + "normal" + db.literallayout.class.attribute = + + ## Specifies the class of literal layout + attribute class { db.literallayout.class.enumeration } + db.literallayout.attlist = + db.literallayout.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.literallayout.class.attribute? + db.literallayout = + + ## A block of text in which line breaks and white space are to be reproduced faithfully + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:literallayout" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element literallayout { + db.literallayout.attlist, db.verbatim.contentmodel + } +} +div { + db.screen.role.attribute = attribute role { text } + db.screen.width.attribute = db.width.characters.attribute + db.screen.attlist = + db.screen.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.screen.width.attribute? + db.screen = + + ## Text that a user sees or might see on a computer screen + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:screen" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element screen { db.screen.attlist, db.verbatim.contentmodel } +} +div { + db.screenshot.role.attribute = attribute role { text } + db.screenshot.attlist = + db.screenshot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenshot.info = db._info + db.screenshot = + + ## A representation of what the user sees or might see on a computer screen + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:screenshot" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element screenshot { + db.screenshot.attlist, db.screenshot.info, db.mediaobject + } +} +div { + db.figure.role.attribute = attribute role { text } + db.figure.label.attribute = db.label.attribute + db.figure.pgwide.attribute = db.pgwide.attribute + db.figure.floatstyle.attribute = db.floatstyle.attribute + db.figure.type.attribute = + + ## Identifies the type of figure + attribute type { text }? + db.figure.attlist = + db.figure.role.attribute? + & db.figure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.figure.label.attribute? + & db.figure.pgwide.attribute? + & db.figure.floatstyle.attribute? + db.figure.info = db._info.title.onlyreq + db.figure = + + ## A formal figure, generally an illustration, with a title + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:figure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element figure { + db.figure.attlist, db.figure.info, db.all.blocks+, db.caption? + } +} +div { + db.informalfigure.role.attribute = attribute role { text } + db.informalfigure.label.attribute = db.label.attribute + db.informalfigure.pgwide.attribute = db.pgwide.attribute + db.informalfigure.floatstyle.attribute = db.floatstyle.attribute + db.informalfigure.type.attribute = + + ## Identifies the type of figure + attribute type { text }? + db.informalfigure.attlist = + db.informalfigure.role.attribute? + & db.informalfigure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.informalfigure.label.attribute? + & db.informalfigure.pgwide.attribute? + & db.informalfigure.floatstyle.attribute? + db.informalfigure.info = db._info.title.forbidden + db.informalfigure = + + ## A untitled figure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informalfigure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informalfigure { + db.informalfigure.attlist, + db.informalfigure.info, + db.all.blocks+, + db.caption? + } +} +db.mediaobject.content = + (db.videoobject | db.audioobject | db.imageobject | db.textobject) + | db.imageobjectco +div { + db.mediaobject.role.attribute = attribute role { text } + db.mediaobject.attlist = + db.mediaobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mediaobject.info = db._info.title.forbidden + db.mediaobject = + + ## A displayed media object (video, audio, image, etc.) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:mediaobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element mediaobject { + db.mediaobject.attlist, + db.mediaobject.info, + db.alt?, + db.mediaobject.content+, + db.caption? + } +} +div { + db.inlinemediaobject.role.attribute = attribute role { text } + db.inlinemediaobject.attlist = + db.inlinemediaobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlinemediaobject.info = db._info.title.forbidden + db.inlinemediaobject = + + ## An inline media object (video, audio, image, and so on) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:inlinemediaobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element inlinemediaobject { + db.inlinemediaobject.attlist, + db.inlinemediaobject.info, + db.alt?, + db.mediaobject.content+ + } +} +div { + db.videoobject.role.attribute = attribute role { text } + db.videoobject.attlist = + db.videoobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.videoobject.info = db._info.title.forbidden + db.videoobject = + + ## A wrapper for video data and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:videoobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element videoobject { + db.videoobject.attlist, db.videoobject.info, db.videodata+ + } +} +div { + db.audioobject.role.attribute = attribute role { text } + db.audioobject.attlist = + db.audioobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.audioobject.info = db._info.title.forbidden + db.audioobject = + + ## A wrapper for audio data and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:audioobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element audioobject { + db.audioobject.attlist, db.audioobject.info, db.audiodata+ + } +} +db.imageobject.content = + db.imagedata+ + | db.imagedata.mathml + | db.imagedata.svg+ + | db.xi.include +div { + db.imageobject.role.attribute = attribute role { text } + db.imageobject.attlist = + db.imageobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobject.info = db._info.title.forbidden + db.imageobject = + + ## A wrapper for image data and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imageobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imageobject { + db.imageobject.attlist, + db.imageobject.info, + db.imageobject.content + } +} +div { + db.textobject.role.attribute = attribute role { text } + db.textobject.attlist = + db.textobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.textobject.info = db._info.title.forbidden + db.textobject = + + ## A wrapper for a text description of an object and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:textobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element textobject { + db.textobject.attlist, + db.textobject.info, + (db.phrase | db.textdata | db.all.blocks+) + } +} +div { + db.videodata.role.attribute = attribute role { text } + db.videodata.align.enumeration = db.halign.enumeration + db.videodata.align.attribute = + + ## Specifies the (horizontal) alignment of the video data + attribute align { db.videodata.align.enumeration } + db.videodata.autoplay.attribute = db.autoplay.attribute + db.videodata.classid.attribute = db.classid.attribute + db.videodata.valign.enumeration = db.valign.enumeration + db.videodata.valign.attribute = + + ## Specifies the vertical alignment of the video data + attribute valign { db.videodata.valign.enumeration } + db.videodata.width.attribute = db.width.attribute + db.videodata.depth.attribute = db.depth.attribute + db.videodata.contentwidth.attribute = db.contentwidth.attribute + db.videodata.contentdepth.attribute = db.contentdepth.attribute + db.videodata.scalefit.enumeration = db.scalefit.enumeration + db.videodata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.videodata.scalefit.enumeration } + db.videodata.scale.attribute = db.scale.attribute + db.videodata.attlist = + db.videodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.videodata.align.attribute? + & db.videodata.valign.attribute? + & db.videodata.width.attribute? + & db.videodata.contentwidth.attribute? + & db.videodata.scalefit.attribute? + & db.videodata.scale.attribute? + & db.videodata.depth.attribute? + & db.videodata.contentdepth.attribute? + & db.videodata.autoplay.attribute? + & db.videodata.classid.attribute? + db.videodata.info = db._info.title.forbidden + db.videodata = + + ## Pointer to external video data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:videodata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element videodata { + db.videodata.attlist, db.videodata.info, db.multimediaparam* + } +} +div { + db.audiodata.role.attribute = attribute role { text } + db.audiodata.align.enumeration = db.halign.enumeration + db.audiodata.align.attribute = + + ## Specifies the (horizontal) alignment of the video data + attribute align { db.audiodata.align.enumeration } + db.audiodata.autoplay.attribute = db.autoplay.attribute + db.audiodata.classid.attribute = db.classid.attribute + db.audiodata.contentwidth.attribute = db.contentwidth.attribute + db.audiodata.contentdepth.attribute = db.contentdepth.attribute + db.audiodata.depth.attribute = db.depth.attribute + db.audiodata.scale.attribute = db.scale.attribute + db.audiodata.scalefit.enumeration = db.scalefit.enumeration + db.audiodata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.audiodata.scalefit.enumeration } + db.audiodata.valign.enumeration = db.valign.enumeration + db.audiodata.valign.attribute = + + ## Specifies the vertical alignment of the video data + attribute valign { db.audiodata.valign.enumeration } + db.audiodata.width.attribute = db.width.attribute + db.audiodata.attlist = + db.audiodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.audiodata.align.attribute? + & db.audiodata.autoplay.attribute? + & db.audiodata.classid.attribute? + & db.audiodata.contentdepth.attribute? + & db.audiodata.contentwidth.attribute? + & db.audiodata.depth.attribute? + & db.audiodata.scale.attribute? + & db.audiodata.scalefit.attribute? + & db.audiodata.valign.attribute? + & db.audiodata.width.attribute? + db.audiodata.info = db._info.title.forbidden + db.audiodata = + + ## Pointer to external audio data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:audiodata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element audiodata { + db.audiodata.attlist, db.audiodata.info, db.multimediaparam* + } +} +div { + db.imagedata.role.attribute = attribute role { text } + db.imagedata.align.enumeration = db.halign.enumeration + db.imagedata.align.attribute = + + ## Specifies the (horizontal) alignment of the image data + attribute align { db.imagedata.align.enumeration } + db.imagedata.valign.enumeration = db.valign.enumeration + db.imagedata.valign.attribute = + + ## Specifies the vertical alignment of the image data + attribute valign { db.imagedata.valign.enumeration } + db.imagedata.width.attribute = db.width.attribute + db.imagedata.depth.attribute = db.depth.attribute + db.imagedata.contentwidth.attribute = db.contentwidth.attribute + db.imagedata.contentdepth.attribute = db.contentdepth.attribute + db.imagedata.scalefit.enumeration = db.scalefit.enumeration + db.imagedata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.imagedata.scalefit.enumeration } + db.imagedata.scale.attribute = db.scale.attribute + db.imagedata.attlist = + db.imagedata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.info = db._info.title.forbidden + db.imagedata = + + ## Pointer to external image data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imagedata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imagedata { + db.imagedata.attlist, db.imagedata.info, db.multimediaparam* + } +} +div { + db.textdata.role.attribute = attribute role { text } + db.textdata.encoding.attribute = + + ## Identifies the encoding of the text in the external file + attribute encoding { text } + db.textdata.attlist = + db.textdata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.textdata.encoding.attribute? + db.textdata.info = db._info.title.forbidden + db.textdata = + + ## Pointer to external text data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:textdata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element textdata { db.textdata.attlist, db.textdata.info } +} +div { + db.multimediaparam.role.attribute = attribute role { text } + db.multimediaparam.name.attribute = + + ## Specifies the name of the parameter + attribute name { text } + db.multimediaparam.value.attribute = + + ## Specifies the value of the parameter + attribute value { text } + db.multimediaparam.valuetype.attribute = + + ## Specifies the type of the value of the parameter + attribute valuetype { text } + db.multimediaparam.attlist = + db.multimediaparam.role.attribute? + & db.common.attributes + & db.multimediaparam.name.attribute + & db.multimediaparam.value.attribute + & db.multimediaparam.valuetype.attribute? + db.multimediaparam = + + ## Application specific parameters for a media player + element multimediaparam { db.multimediaparam.attlist, empty } +} +div { + db.caption.role.attribute = attribute role { text } + db.caption.attlist = + db.caption.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caption.info = db._info.title.forbidden + db.caption = + + ## A caption + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:caption" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element caption { + db.caption.attlist, db.caption.info, db.all.blocks+ + } +} +div { + db.address.role.attribute = attribute role { text } + db.address.attlist = + db.address.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.address = + + ## A real-world address, generally a postal address + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:address" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element address { + db.address.attlist, + (db._text + | db.personname + | db.orgname + | db.pob + | db.street + | db.city + | db.state + | db.postcode + | db.country + | db.phone + | db.fax + | db.email + | db.uri + | db.otheraddr)* + } +} +div { + db.street.role.attribute = attribute role { text } + db.street.attlist = + db.street.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.street = + + ## A street address in an address + element street { db.street.attlist, db._text } +} +div { + db.pob.role.attribute = attribute role { text } + db.pob.attlist = + db.pob.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pob = + + ## A post office box in an address + element pob { db.pob.attlist, db._text } +} +div { + db.postcode.role.attribute = attribute role { text } + db.postcode.attlist = + db.postcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.postcode = + + ## A postal code in an address + element postcode { db.postcode.attlist, db._text } +} +div { + db.city.role.attribute = attribute role { text } + db.city.attlist = + db.city.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.city = + + ## The name of a city in an address + element city { db.city.attlist, db._text } +} +div { + db.state.role.attribute = attribute role { text } + db.state.attlist = + db.state.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.state = + + ## A state or province in an address + element state { db.state.attlist, db._text } +} +div { + db.country.role.attribute = attribute role { text } + db.country.attlist = + db.country.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.country = + + ## The name of a country + element country { db.country.attlist, db._text } +} +div { + db.phone.role.attribute = attribute role { text } + db.phone.attlist = + db.phone.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phone = + + ## A telephone number + element phone { db.phone.attlist, db._text } +} +div { + db.fax.role.attribute = attribute role { text } + db.fax.attlist = + db.fax.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.fax = + + ## A fax number + element fax { db.fax.attlist, db._text } +} +div { + db.otheraddr.role.attribute = attribute role { text } + db.otheraddr.attlist = + db.otheraddr.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.otheraddr = + + ## Uncategorized information in address + element otheraddr { db.otheraddr.attlist, db._text } +} +div { + db.affiliation.role.attribute = attribute role { text } + db.affiliation.attlist = + db.affiliation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.affiliation = + + ## The institutional affiliation of an individual + element affiliation { + db.affiliation.attlist, + db.shortaffil?, + db.jobtitle*, + (db.org? | (db.orgname?, db.orgdiv*, db.address*)) + } +} +div { + db.shortaffil.role.attribute = attribute role { text } + db.shortaffil.attlist = + db.shortaffil.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.shortaffil = + + ## A brief description of an affiliation + element shortaffil { db.shortaffil.attlist, db._text } +} +div { + db.jobtitle.role.attribute = attribute role { text } + db.jobtitle.attlist = + db.jobtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.jobtitle = + + ## The title of an individual in an organization + element jobtitle { db.jobtitle.attlist, db._text } +} +div { + db.orgname.class.enumeration = + + ## A consortium + "consortium" + | + ## A corporation + "corporation" + | + ## An informal organization + "informal" + | + ## A non-profit organization + "nonprofit" + db.orgname.class-enum.attribute = + + ## Specifies the nature of the organization + attribute class { db.orgname.class.enumeration } + db.orgname.class-other.attributes = + + ## Specifies the nature of the organization + attribute class { + + ## Indicates a non-standard organization class + "other" + }, + + ## Identifies the non-standard nature of the organization + attribute otherclass { text } + db.orgname.class.attribute = + db.orgname.class-enum.attribute | db.orgname.class-other.attributes + db.orgname.role.attribute = attribute role { text } + db.orgname.attlist = + db.orgname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.orgname.class.attribute? + db.orgname = + + ## The name of an organization + element orgname { db.orgname.attlist, db._text } +} +div { + db.orgdiv.role.attribute = attribute role { text } + db.orgdiv.attlist = + db.orgdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.orgdiv = + + ## A division of an organization + element orgdiv { db.orgdiv.attlist, db.all.inlines* } +} +div { + db.artpagenums.role.attribute = attribute role { text } + db.artpagenums.attlist = + db.artpagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.artpagenums = + + ## The page numbers of an article as published + element artpagenums { db.artpagenums.attlist, db._text } +} +div { + db.personname.role.attribute = attribute role { text } + db.personname.attlist = + db.personname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.personname = + + ## The personal name of an individual + element personname { + db.personname.attlist, + (db._text + | (db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername)+ + | (db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername)+) + } +} +db.person.author.contentmodel = + db.personname, + (db.personblurb + | db.affiliation + | db.email + | db.uri + | db.address + | db.contrib)* +db.org.author.contentmodel = + db.orgname, + (db.orgdiv + | db.affiliation + | db.email + | db.uri + | db.address + | db.contrib)* +db.credit.contentmodel = + db.person.author.contentmodel | db.org.author.contentmodel +div { + db.author.role.attribute = attribute role { text } + db.author.attlist = + db.author.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.author = + + ## The name of an individual author + element author { db.author.attlist, db.credit.contentmodel } +} +div { + db.authorgroup.role.attribute = attribute role { text } + db.authorgroup.attlist = + db.authorgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.authorgroup = + + ## Wrapper for author information when a document has multiple authors or collaborators + element authorgroup { + db.authorgroup.attlist, (db.author | db.editor | db.othercredit)+ + } +} +div { + db.collab.role.attribute = attribute role { text } + db.collab.attlist = + db.collab.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.collab = + + ## Identifies a collaborator + element collab { + db.collab.attlist, + (db.person | db.personname | db.org | db.orgname)+, + db.affiliation* + } +} +div { + db.authorinitials.role.attribute = attribute role { text } + db.authorinitials.attlist = + db.authorinitials.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.authorinitials = + + ## The initials or other short identifier for an author + element authorinitials { db.authorinitials.attlist, db._text } +} +div { + db.person.role.attribute = attribute role { text } + db.person.attlist = + db.person.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.person = + + ## A person and associated metadata + element person { + db.person.attlist, + db.personname, + (db.address + | db.affiliation + | db.email + | db.uri + | db.personblurb)* + } +} +div { + db.org.role.attribute = attribute role { text } + db.org.attlist = + db.org.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.org = + + ## An organization and associated metadata + element org { + db.org.attlist, + db.orgname, + (db.address | db.affiliation | db.email | db.uri | db.orgdiv)* + } +} +div { + db.confgroup.role.attribute = attribute role { text } + db.confgroup.attlist = + db.confgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confgroup = + + ## A wrapper for document meta-information about a conference + element confgroup { + db.confgroup.attlist, + (db.confdates + | db.conftitle + | db.confnum + | db.confsponsor + | db.address)* + } +} +div { + db.confdates.role.attribute = attribute role { text } + db.confdates.attlist = + db.confdates.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confdates = + + ## The dates of a conference for which a document was written + element confdates { db.confdates.attlist, db._text } +} +div { + db.conftitle.role.attribute = attribute role { text } + db.conftitle.attlist = + db.conftitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.conftitle = + + ## The title of a conference for which a document was written + element conftitle { db.conftitle.attlist, db._text } +} +div { + db.confnum.role.attribute = attribute role { text } + db.confnum.attlist = + db.confnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confnum = + + ## An identifier, frequently numerical, associated with a conference for which a document was written + element confnum { db.confnum.attlist, db._text } +} +div { + db.confsponsor.role.attribute = attribute role { text } + db.confsponsor.attlist = + db.confsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confsponsor = + + ## The sponsor of a conference for which a document was written + element confsponsor { db.confsponsor.attlist, db._text } +} +div { + db.contractnum.role.attribute = attribute role { text } + db.contractnum.attlist = + db.contractnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractnum = + + ## The contract number of a document + element contractnum { db.contractnum.attlist, db._text } +} +div { + db.contractsponsor.role.attribute = attribute role { text } + db.contractsponsor.attlist = + db.contractsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractsponsor = + + ## The sponsor of a contract + element contractsponsor { db.contractsponsor.attlist, db._text } +} +div { + db.copyright.role.attribute = attribute role { text } + db.copyright.attlist = + db.copyright.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.copyright = + + ## Copyright information about a document + element copyright { db.copyright.attlist, db.year+, db.holder* } +} +div { + db.year.role.attribute = attribute role { text } + db.year.attlist = + db.year.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.year = + + ## The year of publication of a document + element year { db.year.attlist, db._text } +} +div { + db.holder.role.attribute = attribute role { text } + db.holder.attlist = + db.holder.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.holder = + + ## The name of the individual or organization that holds a copyright + element holder { db.holder.attlist, db._text } +} +db.cover.contentmodel = + (db.para.blocks + | db.extension.blocks + | db.list.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.synopsis.blocks +div { + db.cover.role.attribute = attribute role { text } + db.cover.attlist = + db.cover.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.cover = + + ## Additional content for the cover of a publication + element cover { db.cover.attlist, db.cover.contentmodel+ } +} +db.date.contentmodel = + xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text +div { + db.date.role.attribute = attribute role { text } + db.date.attlist = + db.date.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.date = + + ## The date of publication or revision of a document + element date { db.date.attlist, db.date.contentmodel } +} +div { + db.edition.role.attribute = attribute role { text } + db.edition.attlist = + db.edition.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.edition = + + ## The name or number of an edition of a document + element edition { db.edition.attlist, db._text } +} +div { + db.editor.role.attribute = attribute role { text } + db.editor.attlist = + db.editor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.editor = + + ## The name of the editor of a document + element editor { db.editor.attlist, db.credit.contentmodel } +} +div { + db.biblioid.role.attribute = attribute role { text } + db.biblioid.attlist = + db.biblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.biblioid = + + ## An identifier for a document + element biblioid { db.biblioid.attlist, db._text } +} +div { + db.citebiblioid.role.attribute = attribute role { text } + db.citebiblioid.attlist = + db.citebiblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.citebiblioid = + + ## A citation of a bibliographic identifier + element citebiblioid { db.citebiblioid.attlist, db._text } +} +div { + db.bibliosource.role.attribute = attribute role { text } + db.bibliosource.attlist = + db.bibliosource.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.bibliosource = + + ## The source of a document + element bibliosource { db.bibliosource.attlist, db._text } +} +div { + db.bibliorelation.type.enumeration = + + ## The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + "hasformat" + | + ## The described resource includes the referenced resource either physically or logically + "haspart" + | + ## The described resource has a version, edition, or adaptation, namely, the referenced resource + "hasversion" + | + ## The described resource is the same intellectual content of the referenced resource, but presented in another format + "isformatof" + | + ## The described resource is a physical or logical part of the referenced resource + "ispartof" + | + ## The described resource is referenced, cited, or otherwise pointed to by the referenced resource + "isreferencedby" + | + ## The described resource is supplanted, displaced, or superceded by the referenced resource + "isreplacedby" + | + ## The described resource is required by the referenced resource, either physically or logically + "isrequiredby" + | + ## The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + "isversionof" + | + ## The described resource references, cites, or otherwise points to the referenced resource + "references" + | + ## The described resource supplants, displaces, or supersedes the referenced resource + "replaces" + | + ## The described resource requires the referenced resource to support its function, delivery, or coherence of content + "requires" + db.bibliorelation.type-enum.attribute = + + ## Identifies the type of relationship + attribute type { db.bibliorelation.type.enumeration }? + db.bibliorelation.type-other.attributes = + + ## Identifies the type of relationship + attribute type { + + ## The described resource has a non-standard relationship with the referenced resource + "othertype" + }?, + + ## A keyword that identififes the type of the non-standard relationship + attribute othertype { xsd:NMTOKEN } + db.bibliorelation.type.attribute = + db.bibliorelation.type-enum.attribute + | db.bibliorelation.type-other.attributes + db.bibliorelation.role.attribute = attribute role { text } + db.bibliorelation.attlist = + db.bibliorelation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + & db.bibliorelation.type.attribute + db.bibliorelation = + + ## The relationship of a document to another + element bibliorelation { db.bibliorelation.attlist, db._text } +} +div { + db.bibliocoverage.spacial.enumeration = + + ## The DCMI Point identifies a point in space using its geographic coordinates + "dcmipoint" + | + ## ISO 3166 Codes for the representation of names of countries + "iso3166" + | + ## The DCMI Box identifies a region of space using its geographic limits + "dcmibox" + | + ## The Getty Thesaurus of Geographic Names + "tgn" + db.bibliocoverage.spatial-enum.attribute = + + ## Specifies the type of spatial coverage + attribute spatial { db.bibliocoverage.spacial.enumeration }? + db.bibliocoverage.spatial-other.attributes = + + ## Specifies the type of spatial coverage + attribute spatial { + + ## Identifies a non-standard type of coverage + "otherspatial" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute otherspatial { xsd:NMTOKEN } + db.bibliocoverage.spatial.attribute = + db.bibliocoverage.spatial-enum.attribute + | db.bibliocoverage.spatial-other.attributes + db.bibliocoverage.temporal.enumeration = + + ## A specification of the limits of a time interval + "dcmiperiod" + | + ## W3C Encoding rules for dates and times—a profile based on ISO 8601 + "w3c-dtf" + db.bibliocoverage.temporal-enum.attribute = + + ## Specifies the type of temporal coverage + attribute temporal { db.bibliocoverage.temporal.enumeration }? + db.bibliocoverage.temporal-other.attributes = + + ## Specifies the type of temporal coverage + attribute temporal { + + ## Specifies a non-standard type of coverage + "othertemporal" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute othertemporal { xsd:NMTOKEN } + db.bibliocoverage.temporal.attribute = + db.bibliocoverage.temporal-enum.attribute + | db.bibliocoverage.temporal-other.attributes + db.bibliocoverage.coverage.attrib = + db.bibliocoverage.spatial.attribute + & db.bibliocoverage.temporal.attribute + db.bibliocoverage.role.attribute = attribute role { text } + db.bibliocoverage.attlist = + db.bibliocoverage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliocoverage.coverage.attrib + db.bibliocoverage = + + ## The spatial or temporal coverage of a document + element bibliocoverage { db.bibliocoverage.attlist, db._text } +} +div { + db.legalnotice.role.attribute = attribute role { text } + db.legalnotice.attlist = + db.legalnotice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.legalnotice.info = db._info.title.only + db.legalnotice = + + ## A statement of legal obligations or requirements + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:legalnotice" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element legalnotice { + db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+ + } +} +div { + db.othercredit.class.enumeration = + + ## A copy editor + "copyeditor" + | + ## A graphic designer + "graphicdesigner" + | + ## A production editor + "productioneditor" + | + ## A technical editor + "technicaleditor" + | + ## A translator + "translator" + | + ## An indexer + "indexer" + | + ## A proof-reader + "proofreader" + | + ## A cover designer + "coverdesigner" + | + ## An interior designer + "interiordesigner" + | + ## An illustrator + "illustrator" + | + ## A reviewer + "reviewer" + | + ## A typesetter + "typesetter" + | + ## A converter (a persons responsible for conversion, not an application) + "conversion" + db.othercredit.class-enum.attribute = + + ## Identifies the nature of the contributor + attribute class { db.othercredit.class.enumeration }? + db.othercredit.class-other.attribute = + + ## Identifies the nature of the non-standard contribution + attribute otherclass { xsd:NMTOKEN } + db.othercredit.class-other.attributes = + + ## Identifies the nature of the contributor + attribute class { + + ## Identifies a non-standard contribution + "other" + } + & db.othercredit.class-other.attribute + db.othercredit.class.attribute = + db.othercredit.class-enum.attribute + | db.othercredit.class-other.attributes + db.othercredit.role.attribute = attribute role { text } + db.othercredit.attlist = + db.othercredit.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.othercredit.class.attribute + db.othercredit = + + ## A person or entity, other than an author or editor, credited in a document + element othercredit { + db.othercredit.attlist, db.credit.contentmodel + } +} +div { + db.pagenums.role.attribute = attribute role { text } + db.pagenums.attlist = + db.pagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pagenums = + + ## The numbers of the pages in a book, for use in a bibliographic entry + element pagenums { db.pagenums.attlist, db._text } +} +div { + db.contrib.role.attribute = attribute role { text } + db.contrib.attlist = + db.contrib.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contrib = + + ## A summary of the contributions made to a document by a credited source + element contrib { db.contrib.attlist, db.all.inlines* } +} +div { + db.honorific.role.attribute = attribute role { text } + db.honorific.attlist = + db.honorific.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.honorific = + + ## The title of a person + element honorific { db.honorific.attlist, db._text } +} +div { + db.firstname.role.attribute = attribute role { text } + db.firstname.attlist = + db.firstname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.firstname = + + ## A given name of a person + element firstname { db.firstname.attlist, db._text } +} +div { + db.givenname.role.attribute = attribute role { text } + db.givenname.attlist = + db.givenname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.givenname = + + ## The given name of a person + element givenname { db.givenname.attlist, db._text } +} +div { + db.surname.role.attribute = attribute role { text } + db.surname.attlist = + db.surname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.surname = + + ## An inherited or family name; in western cultures the last name + element surname { db.surname.attlist, db._text } +} +div { + db.lineage.role.attribute = attribute role { text } + db.lineage.attlist = + db.lineage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineage = + + ## The portion of a person's name indicating a relationship to ancestors + element lineage { db.lineage.attlist, db._text } +} +div { + db.othername.role.attribute = attribute role { text } + db.othername.attlist = + db.othername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.othername = + + ## A component of a person's name that is not a first name, surname, or lineage + element othername { db.othername.attlist, db._text } +} +div { + db.printhistory.role.attribute = attribute role { text } + db.printhistory.attlist = + db.printhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.printhistory = + + ## The printing history of a document + element printhistory { db.printhistory.attlist, db.para.blocks+ } +} +div { + db.pubdate.role.attribute = attribute role { text } + db.pubdate.attlist = + db.pubdate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pubdate = + + ## The date of publication of a document + element pubdate { db.pubdate.attlist, db.date.contentmodel } +} +div { + db.publisher.role.attribute = attribute role { text } + db.publisher.attlist = + db.publisher.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publisher = + + ## The publisher of a document + element publisher { + db.publisher.attlist, db.publishername, db.address* + } +} +div { + db.publishername.role.attribute = attribute role { text } + db.publishername.attlist = + db.publishername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publishername = + + ## The name of the publisher of a document + element publishername { db.publishername.attlist, db._text } +} +div { + db.releaseinfo.role.attribute = attribute role { text } + db.releaseinfo.attlist = + db.releaseinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.releaseinfo = + + ## Information about a particular release of a document + element releaseinfo { db.releaseinfo.attlist, db._text } +} +div { + db.revhistory.role.attribute = attribute role { text } + db.revhistory.attlist = + db.revhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revhistory.info = db._info.title.only + db.revhistory = + + ## A history of the revisions to a document + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:revhistory" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element revhistory { + db.revhistory.attlist, db.revhistory.info, db.revision+ + } +} +div { + db.revision.role.attribute = attribute role { text } + db.revision.attlist = + db.revision.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revision = + + ## An entry describing a single revision in the history of the revisions to a document + element revision { + db.revision.attlist, + db.revnumber?, + db.date, + (db.authorinitials | db.author)*, + (db.revremark | db.revdescription)? + } +} +div { + db.revnumber.role.attribute = attribute role { text } + db.revnumber.attlist = + db.revnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revnumber = + + ## A document revision number + element revnumber { db.revnumber.attlist, db._text } +} +div { + db.revremark.role.attribute = attribute role { text } + db.revremark.attlist = + db.revremark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revremark = + + ## A description of a revision to a document + element revremark { db.revremark.attlist, db._text } +} +div { + db.revdescription.role.attribute = attribute role { text } + db.revdescription.attlist = + db.revdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revdescription = + + ## A extended description of a revision to a document + element revdescription { db.revdescription.attlist, db.all.blocks* } +} +div { + db.seriesvolnums.role.attribute = attribute role { text } + db.seriesvolnums.attlist = + db.seriesvolnums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seriesvolnums = + + ## Numbers of the volumes in a series of books + element seriesvolnums { db.seriesvolnums.attlist, db._text } +} +div { + db.volumenum.role.attribute = attribute role { text } + db.volumenum.attlist = + db.volumenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.volumenum = + + ## The volume number of a document in a set (as of books in a set or articles in a journal) + element volumenum { db.volumenum.attlist, db._text } +} +div { + db.issuenum.role.attribute = attribute role { text } + db.issuenum.attlist = + db.issuenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.issuenum = + + ## The number of an issue of a journal + element issuenum { db.issuenum.attlist, db._text } +} +div { + db.meta.role.attribute = attribute role { text } + db.meta.name.attribute = + + ## A name for the metadata element + attribute name { text } + db.meta.content.attribute = + + ## The metadata content + attribute content { text } + db.meta.attlist = + db.meta.name.attribute? + & db.meta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.meta.empty = + + ## A generic metadata element + element meta { db.meta.attlist, db.meta.content.attribute, empty } + db.meta.content = + + ## A generic metadata element + element meta { + db.meta.attlist, + (text | db._any | db.all.inlines | db.all.blocks)* + } + db.meta = db.meta.empty | db.meta.content +} +div { + db.package.role.attribute = attribute role { text } + db.package.attlist = + db.package.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.package = + + ## A software or application package + element package { db.package.attlist, db._text } +} +div { + db.email.role.attribute = attribute role { text } + db.email.attlist = + db.email.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.email = + + ## An email address + element email { db.email.attlist, db._text } +} +div { + db.lineannotation.role.attribute = attribute role { text } + db.lineannotation.attlist = + db.lineannotation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineannotation = + + ## A comment on a line in a verbatim listing + element lineannotation { db.lineannotation.attlist, db._text } +} +div { + db.parameter.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + db.parameter.class.attribute = + + ## Identifies the class of parameter + attribute class { db.parameter.class.enumeration } + db.parameter.role.attribute = attribute role { text } + db.parameter.attlist = + db.parameter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.parameter.class.attribute? + db.parameter = + + ## A value or a symbolic reference to a value + element parameter { db.parameter.attlist, db._text } +} +db.replaceable.inlines = db._text | db.co +div { + db.replaceable.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + | + ## A parameter + "parameter" + db.replaceable.class.attribute = + + ## Identifies the nature of the replaceable text + attribute class { db.replaceable.class.enumeration } + db.replaceable.role.attribute = attribute role { text } + db.replaceable.attlist = + db.replaceable.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.replaceable.class.attribute? + db.replaceable = + + ## Content that may or must be replaced by the user + element replaceable { + db.replaceable.attlist, db.replaceable.inlines* + } +} +div { + db.uri.type.attribute = + + ## Identifies the type of URI specified + attribute type { text }? + db.uri.role.attribute = attribute role { text } + db.uri.attlist = + db.uri.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.uri.type.attribute + db.uri = + + ## A Uniform Resource Identifier + element uri { db.uri.attlist, db._text } +} +div { + db.abbrev.role.attribute = attribute role { text } + db.abbrev.attlist = + db.abbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abbrev = + + ## An abbreviation, especially one followed by a period + element abbrev { + db.abbrev.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.acronym.role.attribute = attribute role { text } + db.acronym.attlist = + db.acronym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.acronym = + + ## An often pronounceable word made from the initial (or selected) letters of a name or phrase + element acronym { + db.acronym.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.citation.role.attribute = attribute role { text } + db.citation.attlist = + db.citation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citation = + + ## An inline bibliographic reference to another published work + element citation { db.citation.attlist, db.all.inlines* } +} +div { + db.citerefentry.role.attribute = attribute role { text } + db.citerefentry.attlist = + db.citerefentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citerefentry = + + ## A citation to a reference page + element citerefentry { + db.citerefentry.attlist, db.refentrytitle, db.manvolnum? + } +} +div { + db.refentrytitle.role.attribute = attribute role { text } + db.refentrytitle.attlist = + db.refentrytitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refentrytitle = + + ## The title of a reference page + element refentrytitle { db.refentrytitle.attlist, db.all.inlines* } +} +div { + db.manvolnum.role.attribute = attribute role { text } + db.manvolnum.attlist = + db.manvolnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.manvolnum = + + ## A reference volume number + element manvolnum { db.manvolnum.attlist, db._text } +} +div { + db.citetitle.pubwork.enumeration = db.pubwork.enumeration + db.citetitle.pubwork-enum.attribute = + + ## Identifies the nature of the publication being cited + attribute pubwork { db.citetitle.pubwork.enumeration } + db.citetitle.pubwork-other.attribute = + + ## Identifies the nature of some other kind of publication being cited + attribute otherpubwork { xsd:NMTOKEN } + db.citetitle.pubwork-other.attributes = + + ## Identifies that this is some other kind of publication being cited + attribute pubwork { + + ## Indicates that the published work is some 'other' kind. + "other" + } + & db.citetitle.pubwork-other.attribute + db.citetitle.pubwork.attribute = + db.citetitle.pubwork-enum.attribute + | db.citetitle.pubwork-other.attributes + db.citetitle.role.attribute = attribute role { text } + db.citetitle.attlist = + db.citetitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.citetitle.pubwork.attribute? + db.citetitle = + + ## The title of a cited work + element citetitle { db.citetitle.attlist, db.all.inlines* } +} +div { + db.emphasis.role.attribute = attribute role { text } + db.emphasis.attlist = + db.emphasis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.emphasis = + + ## Emphasized text + element emphasis { db.emphasis.attlist, db.all.inlines* } +} +div { + db._emphasis = + + ## A limited span of emphasized text + element emphasis { db.emphasis.attlist, db._text } +} +div { + db.foreignphrase.role.attribute = attribute role { text } + db.foreignphrase.attlist = + db.foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.foreignphrase = + + ## A word or phrase in a language other than the primary language of the document + element foreignphrase { + db.foreignphrase.attlist, (text | db.general.inlines)* + } +} +div { + db._foreignphrase.role.attribute = attribute role { text } + db._foreignphrase.attlist = + db._foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db._foreignphrase = + + ## A limited word or phrase in a language other than the primary language of the document + element foreignphrase { db._foreignphrase.attlist, db._text } +} +div { + db.phrase.role.attribute = attribute role { text } + db.phrase.attlist = + db.phrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phrase = + + ## A span of text + element phrase { db.phrase.attlist, db.all.inlines* } +} +div { + db._phrase = + + ## A limited span of text + element phrase { db.phrase.attlist, db._text } +} +div { + db.quote.role.attribute = attribute role { text } + db.quote.attlist = + db.quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.quote = + + ## An inline quotation + element quote { db.quote.attlist, db.all.inlines* } +} +div { + db._quote.role.attribute = attribute role { text } + db._quote.attlist = + db._quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db._quote = + + ## A limited inline quotation + element quote { db._quote.attlist, db._text } +} +div { + db.subscript.role.attribute = attribute role { text } + db.subscript.attlist = + db.subscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subscript = + + ## A subscript (as in H₂O, the molecular formula for water) + element subscript { db.subscript.attlist, db._text } +} +div { + db.superscript.role.attribute = attribute role { text } + db.superscript.attlist = + db.superscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.superscript = + + ## A superscript (as in x², the mathematical notation for x multiplied by itself) + element superscript { db.superscript.attlist, db._text } +} +div { + db.trademark.class.enumeration = + + ## A copyright + "copyright" + | + ## A registered copyright + "registered" + | + ## A service + "service" + | + ## A trademark + "trade" + db.trademark.class.attribute = + + ## Identifies the class of trade mark + attribute class { db.trademark.class.enumeration } + db.trademark.role.attribute = attribute role { text } + db.trademark.attlist = + db.trademark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.trademark.class.attribute? + db.trademark = + + ## A trademark + element trademark { db.trademark.attlist, db._text } +} +div { + db.wordasword.role.attribute = attribute role { text } + db.wordasword.attlist = + db.wordasword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.wordasword = + + ## A word meant specifically as a word and not representing anything else + element wordasword { db.wordasword.attlist, db._text } +} +div { + db.footnoteref.role.attribute = attribute role { text } + db.footnoteref.label.attribute = db.label.attribute + db.footnoteref.attlist = + db.footnoteref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.footnoteref.label.attribute? + db.footnoteref = + + ## A cross reference to a footnote (a footnote mark) + [ + s:pattern [ + s:title [ "Footnote reference type constraint" ] + s:rule [ + context = "db:footnoteref" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on footnoteref must point to a footnote." + ] + ] + ] + ] + element footnoteref { db.footnoteref.attlist, empty } +} +div { + db.xref.role.attribute = attribute role { text } + db.xref.xrefstyle.attribute = db.xrefstyle.attribute + db.xref.endterm.attribute = db.endterm.attribute + db.xref.attlist = + db.xref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.xref.xrefstyle.attribute? + & db.xref.endterm.attribute? + db.xref = + + ## A cross reference to another part of the document + element xref { db.xref.attlist, empty } +} +div { + db.link.role.attribute = attribute role { text } + db.link.xrefstyle.attribute = db.xrefstyle.attribute + db.link.endterm.attribute = db.endterm.attribute + db.link.attlist = + db.link.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.link.xrefstyle.attribute? + & db.link.endterm.attribute? + db.link = + + ## A hypertext link + element link { db.link.attlist, db.all.inlines* } +} +div { + db.olink.role.attribute = attribute role { text } + db.olink.xrefstyle.attribute = db.xrefstyle.attribute + db.olink.localinfo.attribute = + + ## Holds additional information that may be used by the application when resolving the link + attribute localinfo { text } + db.olink.targetdoc.attribute = + + ## Specifies the URI of the document in which the link target appears + attribute targetdoc { xsd:anyURI } + db.olink.targetptr.attribute = + + ## Specifies the location of the link target in the document + attribute targetptr { text } + db.olink.type.attribute = + + ## Identifies application-specific customization of the link behavior + attribute type { text } + db.olink.attlist = + db.common.attributes + & db.olink.targetdoc.attribute? + & db.olink.role.attribute? + & db.olink.xrefstyle.attribute? + & db.olink.localinfo.attribute? + & db.olink.targetptr.attribute? + & db.olink.type.attribute? + db.olink = + + ## A link that addresses its target indirectly + element olink { db.olink.attlist, db.all.inlines* } +} +div { + db.anchor.role.attribute = attribute role { text } + db.anchor.attlist = + db.anchor.role.attribute? & db.common.idreq.attributes + db.anchor = + + ## A spot in the document + element anchor { db.anchor.attlist, empty } +} +div { + db.alt.role.attribute = attribute role { text } + db.alt.attlist = db.alt.role.attribute? & db.common.attributes + db.alt = + + ## A text-only annotation, often used for accessibility + element alt { db.alt.attlist, (text | db.inlinemediaobject)* } +} +div { + db.formalgroup.fgstyle.attribute = + + ## Holds style of formalgroup - this can be used to specify desired layout and positioning of subfigures + attribute fgstyle { text } + db.formalgroup.role.attribute = attribute role { text } + db.formalgroup.pgwide.attribute = db.pgwide.attribute + db.formalgroup.floatstyle.attribute = db.floatstyle.attribute + db.formalgroup.attlist = + db.formalgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.formalgroup.floatstyle.attribute? + & db.formalgroup.pgwide.attribute? + & db.formalgroup.fgstyle.attribute? + db.formalgroup.info = db._info.title.onlyreq + db.formalgroup = + + ## A group of formal objects, for example subfigures + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:formalgroup" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element formalgroup { + db.formalgroup.attlist, + db.formalgroup.info, + (db.figure+ | db.table+ | db.example+ | db.equation+) + } +} +db.status.attribute = + + ## Identifies the editorial or publication status of the element on which it occurs + attribute status { text } +db.toplevel.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | (db.sect1+, db.simplesect*) + | db.refentry+ + | ((db.section | db.xi.include)+ | (db.simplesect | db.xi.include)+) + | (db.refentry | db.xi.include)+ + | (db.refsect1 | db.xi.include)+ + | (db.sect1 | db.xi.include)+ +db.toplevel.blocks.or.sections = + (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections +db.recursive.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | db.refentry+ + | ((db.section | db.xi.include)+ | (db.simplesect | db.xi.include)+) + | (db.refentry | db.xi.include)+ + | (db.refsect1 | db.xi.include)+ +db.recursive.blocks.or.sections = + (db.all.blocks+, db.recursive.sections?) | db.recursive.sections +db.divisions = db.part | db.reference | db.xi.include +db.components = + (db.dedication + | db.acknowledgements + | db.preface + | db.chapter + | db.appendix + | db.article + | db.colophon) + | db.xi.include +db.navigation.components = + notAllowed | db.glossary | db.bibliography | db.index | db.toc +db.component.contentmodel = + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* +db.setindex.components = notAllowed | db.setindex +db.toc.components = notAllowed | db.toc +db.set.components = (db.set | db.book | db.article) | db.xi.include +div { + db.set.status.attribute = db.status.attribute + db.set.role.attribute = attribute role { text } + db.set.attlist = + db.set.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.set.status.attribute? + db.set.info = db._info.title.req + db.set = + + ## A collection of books + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:set" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element set { + db.set.attlist, + db.set.info, + db.toc.components?, + db.set.components+, + db.setindex.components? + } +} +db.book.components = + (db.navigation.components | db.components | db.divisions)* | db.topic* +div { + db.book.status.attribute = db.status.attribute + db.book.role.attribute = attribute role { text } + db.book.attlist = + db.book.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.book.status.attribute? + db.book.info = db._info + db.book = + + ## A book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:book" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element book { db.book.attlist, db.book.info, db.book.components } +} +div { + db.dedication.status.attribute = db.status.attribute + db.dedication.role.attribute = attribute role { text } + db.dedication.attlist = + db.dedication.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.dedication.status.attribute? + db.dedication.info = db._info + db.dedication = + + ## The dedication of a book or other component + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:dedication" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element dedication { + db.dedication.attlist, db.dedication.info, db.all.blocks+ + } +} +div { + db.acknowledgements.status.attribute = db.status.attribute + db.acknowledgements.role.attribute = attribute role { text } + db.acknowledgements.attlist = + db.acknowledgements.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.acknowledgements.status.attribute? + db.acknowledgements.info = db._info + db.acknowledgements = + + ## Acknowledgements of a book or other component + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:acknowledgements" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element acknowledgements { + db.acknowledgements.attlist, + db.acknowledgements.info, + db.all.blocks+ + } +} +div { + db.colophon.status.attribute = db.status.attribute + db.colophon.role.attribute = attribute role { text } + db.colophon.attlist = + db.colophon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.colophon.status.attribute? + db.colophon.info = db._info + db.colophon = + + ## Text at the back of a book describing facts about its production + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:colophon" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element colophon { + db.colophon.attlist, + db.colophon.info, + ((db.all.blocks+, db.simplesect*) + | (db.all.blocks*, db.simplesect+)) + } +} +db.appendix.contentmodel = db.component.contentmodel | db.topic+ +div { + db.appendix.status.attribute = db.status.attribute + db.appendix.role.attribute = attribute role { text } + db.appendix.attlist = + db.appendix.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.appendix.status.attribute? + db.appendix.info = db._info.title.req + db.appendix = + + ## An appendix in a book or article + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:appendix" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element appendix { + db.appendix.attlist, db.appendix.info, db.appendix.contentmodel? + } +} +db.chapter.contentmodel = db.component.contentmodel | db.topic+ +div { + db.chapter.status.attribute = db.status.attribute + db.chapter.role.attribute = attribute role { text } + db.chapter.attlist = + db.chapter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.chapter.status.attribute? + db.chapter.info = db._info.title.req + db.chapter = + + ## A chapter, as of a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:chapter" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element chapter { + db.chapter.attlist, db.chapter.info, db.chapter.contentmodel? + } +} +db.part.components = + (db.navigation.components | db.components) + | (db.refentry | db.reference) + | db.xi.include +db.part.contentmodel = db.part.components+ | db.topic+ +div { + db.part.status.attribute = db.status.attribute + db.part.role.attribute = attribute role { text } + db.part.attlist = + db.part.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.part.status.attribute? + db.part.info = db._info.title.req + db.part = + + ## A division in a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:part" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element part { + db.part.attlist, + db.part.info, + db.partintro?, + db.part.contentmodel? + } +} +div { + db.preface.status.attribute = db.status.attribute + db.preface.role.attribute = attribute role { text } + db.preface.attlist = + db.preface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.preface.status.attribute? + db.preface.info = db._info.title.req + db.preface = + + ## Introductory matter preceding the first chapter of a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:preface" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element preface { + db.preface.attlist, db.preface.info, db.component.contentmodel? + } +} +div { + db.partintro.status.attribute = db.status.attribute + db.partintro.role.attribute = attribute role { text } + db.partintro.attlist = + db.partintro.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.partintro.status.attribute? + db.partintro.info = db._info + db.partintro = + + ## An introduction to the contents of a part + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:partintro" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element partintro { + db.partintro.attlist, + db.partintro.info, + db.toplevel.blocks.or.sections? + } +} +div { + db.section.status.attribute = db.status.attribute + db.section.class.enumeration = + + ## A section of legal obligations or requirements + "legal" + db.section.class-enum.attribute = + + ## Identifies the nature of the section + attribute class { db.section.class.enumeration } + db.section.class-other.attribute = + + ## Identifies a non-standard section class + attribute otherclass { xsd:NMTOKEN } + db.section.class-other.attributes = + + ## Indicates that a non-standard section class is applied + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.section.class-other.attribute + db.section.class.attribute = + db.section.class-enum.attribute | db.section.class-other.attributes + db.section.role.attribute = attribute role { text } + db.section.attlist = + db.section.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.section.status.attribute? + & db.section.class.attribute? + db.section.info = db._info.title.req + db.section = + + ## A recursive section + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:section" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element section { + db.section.attlist, + db.section.info, + db.navigation.components*, + db.recursive.blocks.or.sections?, + db.navigation.components* + } +} +div { + db.simplesect.status.attribute = db.status.attribute + db.simplesect.role.attribute = attribute role { text } + db.simplesect.attlist = + db.simplesect.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.simplesect.status.attribute? + db.simplesect.info = db._info.title.req + db.simplesect = + + ## A section of a document with no subdivisions + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:simplesect" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element simplesect { + db.simplesect.attlist, db.simplesect.info, db.all.blocks* + } +} +db.article.components = db.toplevel.sections +db.article.navcomponents = + db.navigation.components + | db.acknowledgements + | db.dedication + | db.appendix + | db.colophon +div { + db.article.status.attribute = db.status.attribute + db.article.class.enumeration = + + ## A collection of frequently asked questions. + "faq" + | + ## An article in a journal or other periodical. + "journalarticle" + | + ## A description of a product. + "productsheet" + | + ## A specification. + "specification" + | + ## A technical report. + "techreport" + | + ## A white paper. + "whitepaper" + db.article.class-enum.attribute = + + ## Identifies the nature of the article + attribute class { db.article.class.enumeration } + db.article.class-other.attribute = + + ## Identifies the nature of the non-standard article + attribute otherclass { xsd:NMTOKEN } + db.article.class-other.attributes = + + ## Identifies the nature of the article + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.article.class-other.attribute + db.article.class.attribute = + db.article.class-enum.attribute | db.article.class-other.attributes + db.article.role.attribute = attribute role { text } + db.article.attlist = + db.article.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.article.status.attribute? + & db.article.class.attribute? + db.article.info = db._info.title.req + db.article = + + ## An article + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:article" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element article { + db.article.attlist, + db.article.info, + db.article.navcomponents*, + ((db.all.blocks+, db.article.components?) + | db.article.components), + db.article.navcomponents* + } +} +db.annotations.attribute = + + ## Identifies one or more annotations that apply to this element + attribute annotations { text } +div { + db.annotation.role.attribute = attribute role { text } + db.annotation.annotates.attribute = + + ## Identifies one or more elements to which this annotation applies + attribute annotates { text } + db.annotation.attlist = + db.annotation.role.attribute? + & db.annotation.annotates.attribute? + & db.common.attributes + db.annotation.info = db._info.title.only + db.annotation = + + ## An annotation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:annotation" + s:assert [ + test = "not(.//db:annotation)" + "annotation must not occur among the children or descendants of annotation" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:annotation" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element annotation { + db.annotation.attlist, db.annotation.info, db.all.blocks+ + } +} +db.xlink.extended.type.attribute = + + ## Identifies the XLink extended link type + [ + s:pattern [ + s:title [ "XLink extended placement" ] + s:rule [ + context = "*[@xlink:type='extended']" + s:assert [ + test = "not(parent::*[@xlink:type='extended'])" + "An XLink extended type element may not occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink extended link type + "extended" + } +db.xlink.locator.type.attribute = + + ## Identifies the XLink locator link type + [ + s:pattern [ + s:title [ "XLink locator placement" ] + s:rule [ + context = "*[@xlink:type='locator']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink locator type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink locator link type + "locator" + } +db.xlink.arc.type.attribute = + + ## Identifies the XLink arc link type + [ + s:pattern [ + s:title [ "XLink arc placement" ] + s:rule [ + context = "*[@xlink:type='arc']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink arc type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink arc link type + "arc" + } +db.xlink.resource.type.attribute = + + ## Identifies the XLink resource link type + [ + s:pattern [ + s:title [ "XLink resource placement" ] + s:rule [ + context = "*[@xlink:type='resource']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink resource type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink resource link type + "resource" + } +db.xlink.title.type.attribute = + + ## Identifies the XLink title link type + [ + s:pattern [ + s:title [ "XLink title placement" ] + s:rule [ + context = "*[@xlink:type='title']" + s:assert [ + test = + "parent::*[@xlink:type='extended'] or parent::*[@xlink:type='locator'] or parent::*[@xlink:type='arc']" + "An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink title link type + "title" + } +db.xlink.extended.link.attributes = + db.xlink.extended.type.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? +db.xlink.locator.link.attributes = + db.xlink.locator.type.attribute + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? +db.xlink.arc.link.attributes = + db.xlink.arc.type.attribute + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? +db.xlink.resource.link.attributes = + db.xlink.resource.type.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? +db.xlink.title.link.attributes = db.xlink.title.type.attribute +db.xlink.from.attribute = + + ## Specifies the XLink traversal-from + attribute xlink:from { xsd:NMTOKEN } +db.xlink.label.attribute = + + ## Specifies the XLink label + attribute xlink:label { xsd:NMTOKEN } +db.xlink.to.attribute = + + ## Specifies the XLink traversal-to + attribute xlink:to { xsd:NMTOKEN } +div { + db.extendedlink.role.attribute = attribute role { text } + db.extendedlink.attlist = + db.extendedlink.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "extended" ] + attribute xlink:type { + + ## An XLink extended link + "extended" + }? + & db.xlink.role.attribute? + & db.xlink.title.attribute? + db.extendedlink = + + ## An XLink extended link + element extendedlink { + db.extendedlink.attlist, (db.locator | db.arc | db.link)+ + } +} +div { + db.locator.role.attribute = attribute role { text } + db.locator.attlist = + db.locator.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "locator" ] + attribute xlink:type { + + ## An XLink locator link + "locator" + }? + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? + db.locator = + + ## An XLink locator in an extendedlink + element locator { db.locator.attlist, empty } +} +div { + db.arc.role.attribute = attribute role { text } + db.arc.attlist = + db.arc.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "arc" ] + attribute xlink:type { + + ## An XLink arc link + "arc" + }? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? + db.arc = + + ## An XLink arc in an extendedlink + element arc { db.arc.attlist, empty } +} +db.sect1.sections = + ((db.sect2+, db.simplesect*) | db.simplesect+) + | db.refentry+ + | (db.sect2 | db.xi.include)+ +div { + db.sect1.status.attribute = db.status.attribute + db.sect1.class.attribute = db.section.class.attribute + db.sect1.role.attribute = attribute role { text } + db.sect1.attlist = + db.sect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect1.status.attribute? + & db.sect1.class.attribute? + db.sect1.info = db._info.title.req + db.sect1 = + + ## A top-level section of document + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect1" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect1 { + db.sect1.attlist, + db.sect1.info, + db.navigation.components*, + ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections)?, + db.navigation.components* + } +} +db.sect2.sections = + ((db.sect3+, db.simplesect*) | db.simplesect+) + | db.refentry+ + | (db.sect3 | db.xi.include)+ +div { + db.sect2.status.attribute = db.status.attribute + db.sect2.class.attribute = db.section.class.attribute + db.sect2.role.attribute = attribute role { text } + db.sect2.attlist = + db.sect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect2.status.attribute? + & db.sect2.class.attribute? + db.sect2.info = db._info.title.req + db.sect2 = + + ## A subsection within a sect1 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect2" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect2 { + db.sect2.attlist, + db.sect2.info, + db.navigation.components*, + ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections)?, + db.navigation.components* + } +} +db.sect3.sections = + ((db.sect4+, db.simplesect*) | db.simplesect+) + | db.refentry+ + | (db.sect4 | db.xi.include)+ +div { + db.sect3.status.attribute = db.status.attribute + db.sect3.class.attribute = db.section.class.attribute + db.sect3.role.attribute = attribute role { text } + db.sect3.attlist = + db.sect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect3.status.attribute? + & db.sect3.class.attribute? + db.sect3.info = db._info.title.req + db.sect3 = + + ## A subsection within a sect2 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect3" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect3 { + db.sect3.attlist, + db.sect3.info, + db.navigation.components*, + ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections)?, + db.navigation.components* + } +} +db.sect4.sections = + ((db.sect5+, db.simplesect*) | db.simplesect+) + | db.refentry+ + | (db.sect5 | db.xi.include)+ +div { + db.sect4.status.attribute = db.status.attribute + db.sect4.class.attribute = db.section.class.attribute + db.sect4.role.attribute = attribute role { text } + db.sect4.attlist = + db.sect4.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect4.status.attribute? + & db.sect4.class.attribute? + db.sect4.info = db._info.title.req + db.sect4 = + + ## A subsection within a sect3 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect4" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect4 { + db.sect4.attlist, + db.sect4.info, + db.navigation.components*, + ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections)?, + db.navigation.components* + } +} +db.sect5.sections = + db.simplesect+ | db.refentry+ | (db.simplesect | db.xi.include)+ +div { + db.sect5.status.attribute = db.status.attribute + db.sect5.class.attribute = db.section.class.attribute + db.sect5.role.attribute = attribute role { text } + db.sect5.attlist = + db.sect5.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect5.status.attribute? + & db.sect5.class.attribute? + db.sect5.info = db._info.title.req + db.sect5 = + + ## A subsection within a sect4 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect5" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect5 { + db.sect5.attlist, + db.sect5.info, + db.navigation.components*, + ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections)?, + db.navigation.components* + } +} +db.toplevel.refsection = + db.refsection+ + | db.refsect1+ + | (db.refentry | db.xi.include)+ + | (db.refsect1 | db.xi.include)+ +db.secondlevel.refsection = + db.refsection+ + | db.refsect2+ + | (db.refentry | db.xi.include)+ + | (db.refsect2 | db.xi.include)+ +db.reference.components = db.refentry | db.xi.include +div { + db.reference.status.attribute = db.status.attribute + db.reference.role.attribute = attribute role { text } + db.reference.attlist = + db.reference.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.reference.status.attribute? + & db.label.attribute? + db.reference.info = db._info.title.req + db.reference = + + ## A collection of reference entries + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:reference" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element reference { + db.reference.attlist, + db.reference.info, + db.partintro?, + db.reference.components* + } +} +div { + db.refentry.status.attribute = db.status.attribute + db.refentry.role.attribute = attribute role { text } + db.refentry.attlist = + db.refentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refentry.status.attribute? + & db.label.attribute? + db.refentry.info = db._info.title.forbidden + db.refentry = + + ## A reference page (originally a UNIX man-style reference page) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refentry" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refentry { + db.refentry.attlist, + db.indexterm*, + db.refentry.info, + db.refmeta?, + db.refnamediv+, + db.refsynopsisdiv?, + db.toplevel.refsection + } +} +div { + db.refmeta.role.attribute = attribute role { text } + db.refmeta.attlist = + db.refmeta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refmeta = + + ## Meta-information for a reference entry + element refmeta { + db.refmeta.attlist, + db.indexterm*, + db.refentrytitle, + db.manvolnum?, + db.refmiscinfo*, + db.indexterm* + } +} +db.refmiscinfo.class.enumeration = + + ## The name of the software product or component to which this topic applies + "source" + | + ## The version of the software product or component to which this topic applies + "version" + | + ## The section title of the reference page (e.g., User Commands) + "manual" + | + ## The section title of the reference page (believed synonymous with "manual" but in wide use) + "sectdesc" + | + ## The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + "software" +db.refmiscinfo.class-enum.attribute = + + ## Identifies the kind of miscellaneous information + attribute class { db.refmiscinfo.class.enumeration }? +db.refmiscinfo.class-other.attribute = + + ## Identifies the nature of non-standard miscellaneous information + attribute otherclass { text } +db.refmiscinfo.class-other.attributes = + + ## Identifies the kind of miscellaneious information + attribute class { + + ## Indicates that the information is some 'other' kind. + "other" + } + & db.refmiscinfo.class-other.attribute +db.refmiscinfo.class.attribute = + db.refmiscinfo.class-enum.attribute + | db.refmiscinfo.class-other.attributes +div { + db.refmiscinfo.role.attribute = attribute role { text } + db.refmiscinfo.attlist = + db.refmiscinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refmiscinfo.class.attribute? + db.refmiscinfo = + + ## Meta-information for a reference entry other than the title and volume number + element refmiscinfo { db.refmiscinfo.attlist, db._text } +} +div { + db.refnamediv.role.attribute = attribute role { text } + db.refnamediv.attlist = + db.refnamediv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refnamediv = + + ## The name, purpose, and classification of a reference page + element refnamediv { + db.refnamediv.attlist, + db.refdescriptor?, + db.refname+, + db.refpurpose, + db.refclass* + } +} +div { + db.refdescriptor.role.attribute = attribute role { text } + db.refdescriptor.attlist = + db.refdescriptor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refdescriptor = + + ## A description of the topic of a reference page + element refdescriptor { db.refdescriptor.attlist, db.all.inlines* } +} +div { + db.refname.role.attribute = attribute role { text } + db.refname.attlist = + db.refname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refname = + + ## The name of (one of) the subject(s) of a reference page + element refname { db.refname.attlist, db.all.inlines* } +} +div { + db.refpurpose.role.attribute = attribute role { text } + db.refpurpose.attlist = + db.refpurpose.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refpurpose = + + ## A short (one sentence) synopsis of the topic of a reference page + element refpurpose { db.refpurpose.attlist, db.all.inlines* } +} +div { + db.refclass.role.attribute = attribute role { text } + db.refclass.attlist = + db.refclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refclass = + + ## The scope or other indication of applicability of a reference entry + element refclass { db.refclass.attlist, (text | db.application)* } +} +div { + db.refsynopsisdiv.role.attribute = attribute role { text } + db.refsynopsisdiv.attlist = + db.refsynopsisdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refsynopsisdiv.info = db._info + db.refsynopsisdiv = + + ## A syntactic synopsis of the subject of the reference page + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsynopsisdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsynopsisdiv { + db.refsynopsisdiv.attlist, + db.refsynopsisdiv.info, + ((db.all.blocks+, db.secondlevel.refsection?) + | db.secondlevel.refsection) + } +} +div { + db.refsection.status.attribute = db.status.attribute + db.refsection.role.attribute = attribute role { text } + db.refsection.attlist = + db.refsection.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refsection.status.attribute? + & db.label.attribute? + db.refsection.info = db._info.title.req + db.refsection = + + ## A recursive section in a refentry + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsection" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsection { + db.refsection.attlist, + db.refsection.info, + ((db.all.blocks+, db.refsection*) | db.refsection+) + } +} +db.refsect1.sections = db.refsect2+ +div { + db.refsect1.status.attribute = db.status.attribute + db.refsect1.role.attribute = attribute role { text } + db.refsect1.attlist = + db.refsect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect1.status.attribute? + db.refsect1.info = db._info.title.req + db.refsect1 = + + ## A major subsection of a reference entry + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsect1" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsect1 { + db.refsect1.attlist, + db.refsect1.info, + ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections) + } +} +db.refsect2.sections = db.refsect3+ +div { + db.refsect2.status.attribute = db.status.attribute + db.refsect2.role.attribute = attribute role { text } + db.refsect2.attlist = + db.refsect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect2.status.attribute? + db.refsect2.info = db._info.title.req + db.refsect2 = + + ## A subsection of a refsect1 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsect2" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsect2 { + db.refsect2.attlist, + db.refsect2.info, + ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections) + } +} +div { + db.refsect3.status.attribute = db.status.attribute + db.refsect3.role.attribute = attribute role { text } + db.refsect3.attlist = + db.refsect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect3.status.attribute? + db.refsect3.info = db._info.title.req + db.refsect3 = + + ## A subsection of a refsect2 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsect3" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsect3 { + db.refsect3.attlist, db.refsect3.info, db.all.blocks+ + } +} +db.glossary.inlines = + db.firstterm | db.glossterm | db._firstterm | db._glossterm +db.baseform.attribute = + + ## Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + attribute baseform { text }? +div { + db.glosslist.role.attribute = attribute role { text } + db.glosslist.attlist = + db.glosslist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.glosslist.info = db._info.title.only + db.glosslist = + + ## A wrapper for a list of glossary entries + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:glosslist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element glosslist { + db.glosslist.attlist, + db.glosslist.info?, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.glossentry.role.attribute = attribute role { text } + db.glossentry.sortas.attribute = + + ## Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + attribute sortas { text } + db.glossentry.attlist = + db.glossentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossentry.sortas.attribute? + db.glossentry = + + ## An entry in a glossary or glosslist + element glossentry { + db.glossentry.attlist, + db.glossterm, + db.acronym?, + db.abbrev?, + db.indexterm*, + (db.glosssee | db.glossdef+) + } +} +div { + db.glossdef.role.attribute = attribute role { text } + db.glossdef.subject.attribute = + + ## Specifies a list of keywords for the definition + attribute subject { text } + db.glossdef.attlist = + db.glossdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossdef.subject.attribute? + db.glossdef = + + ## A definition in a glossentry + element glossdef { + db.glossdef.attlist, db.all.blocks+, db.glossseealso* + } +} +div { + db.glosssee.role.attribute = attribute role { text } + db.glosssee.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glosssee.attlist = + db.glosssee.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glosssee.otherterm.attribute? + db.glosssee = + + ## A cross-reference from one glossentry + ## to another + [ + s:pattern [ + s:title [ "Glosssary 'see' type constraint" ] + s:rule [ + context = "db:glosssee[@otherterm]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glosssee must point to a glossentry." + ] + ] + ] + ] + element glosssee { db.glosssee.attlist, db.all.inlines* } +} +div { + db.glossseealso.role.attribute = attribute role { text } + db.glossseealso.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glossseealso.attlist = + db.glossseealso.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossseealso.otherterm.attribute? + db.glossseealso = + + ## A cross-reference from one glossentry to another + [ + s:pattern [ + s:title [ "Glossary 'seealso' type constraint" ] + s:rule [ + context = "db:glossseealso[@otherterm]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glossseealso must point to a glossentry." + ] + ] + ] + ] + element glossseealso { db.glossseealso.attlist, db.all.inlines* } +} +div { + db.firstterm.role.attribute = attribute role { text } + db.firstterm.attlist = + db.firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.firstterm = + + ## The first occurrence of a term + [ + s:pattern [ + s:title [ "Glossary 'firstterm' type constraint" ] + s:rule [ + context = "db:firstterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + ] + ] + ] + element firstterm { db.firstterm.attlist, db.all.inlines* } +} +div { + db._firstterm.role.attribute = attribute role { text } + db._firstterm.attlist = + db._firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db._firstterm = + + ## The first occurrence of a term, with limited content + [ + s:pattern [ + s:title [ "Glossary 'firstterm' type constraint" ] + s:rule [ + context = "db:firstterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + ] + ] + ] + element firstterm { db._firstterm.attlist, db._text } +} +div { + db.glossterm.role.attribute = attribute role { text } + db.glossterm.attlist = + db.glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.glossterm = + + ## A glossary term + [ + s:pattern [ + s:title [ "Glossary 'glossterm' type constraint" ] + s:rule [ + context = "db:glossterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + ] + ] + ] + element glossterm { db.glossterm.attlist, db.all.inlines* } +} +div { + db._glossterm.role.attribute = attribute role { text } + db._glossterm.attlist = + db._glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db._glossterm = + + ## A glossary term + [ + s:pattern [ + s:title [ "Glossary 'glossterm' type constraint" ] + s:rule [ + context = "db:glossterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + ] + ] + ] + element glossterm { db._glossterm.attlist, db._text } +} +div { + db.glossary.status.attribute = db.status.attribute + db.glossary.role.attribute = attribute role { text } + db.glossary.attlist = + db.glossary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossary.status.attribute? + db.glossary.info = db._info + db.glossary = + + ## A glossary + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:glossary" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element glossary { + db.glossary.attlist, + db.glossary.info, + db.all.blocks*, + (db.glossdiv* | db.glossentry*), + db.bibliography? + } +} +div { + db.glossdiv.status.attribute = db.status.attribute + db.glossdiv.role.attribute = attribute role { text } + db.glossdiv.attlist = + db.glossdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossdiv.status.attribute? + db.glossdiv.info = db._info.title.req + db.glossdiv = + + ## A division in a glossary + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:glossdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element glossdiv { + db.glossdiv.attlist, + db.glossdiv.info, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.termdef.role.attribute = attribute role { text } + db.termdef.attlist = + db.termdef.role.attribute? + & db.glossentry.sortas.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.termdef = + + ## An inline definition of a term + [ + s:pattern [ + s:title [ "Glossary term definition constraint" ] + s:rule [ + context = "db:termdef" + s:assert [ + test = "count(db:firstterm) = 1" + "A termdef must contain exactly one firstterm" + ] + ] + ] + ] + element termdef { db.termdef.attlist, db.all.inlines* } +} +db.relation.attribute = + + ## Identifies the relationship between the bibliographic elemnts + attribute relation { text } +div { + db.biblioentry.role.attribute = attribute role { text } + db.biblioentry.pubwork.attribute = db.biblio.pubwork.attribute + db.biblioentry.attlist = + db.biblioentry.role.attribute? + & db.biblioentry.pubwork.attribute? + & db.common.attributes + & db.common.linking.attributes + db.biblioentry = + + ## A raw entry in a bibliography + element biblioentry { + db.biblioentry.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomixed.role.attribute = attribute role { text } + db.bibliomixed.pubwork.attribute = db.biblio.pubwork.attribute + db.bibliomixed.attlist = + db.bibliomixed.role.attribute? + & db.bibliomixed.pubwork.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomixed = + + ## A cooked entry in a bibliography + element bibliomixed { + db.bibliomixed.attlist, + ((db._text + | db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)* + | (db._text + | db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)*) + } +} +div { + db.biblioset.relation.attribute = db.relation.attribute + db.biblioset.role.attribute = attribute role { text } + db.biblioset.attlist = + db.biblioset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblioset.relation.attribute? + db.biblioset = + + ## A raw container for related bibliographic information + element biblioset { + db.biblioset.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomset.relation.attribute = db.relation.attribute + db.bibliomset.role.attribute = attribute role { text } + db.bibliomset.attlist = + db.bibliomset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliomset.relation.attribute? + db.bibliomset = + + ## A cooked container for related bibliographic information + element bibliomset { + db.bibliomset.attlist, + ((db._text + | db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)* + | (db._text + | db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)*) + } +} +div { + db.bibliomisc.role.attribute = attribute role { text } + db.bibliomisc.attlist = + db.bibliomisc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomisc = + + ## Untyped bibliographic information + element bibliomisc { db.bibliomisc.attlist, db._text } +} +div { + db.bibliography.status.attrib = db.status.attribute + db.bibliography.role.attribute = attribute role { text } + db.bibliography.attlist = + db.bibliography.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliography.status.attrib? + db.bibliography.info = db._info + db.bibliography = + + ## A bibliography + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:bibliography" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element bibliography { + db.bibliography.attlist, + db.bibliography.info, + db.all.blocks*, + (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+) + } +} +div { + db.bibliodiv.status.attrib = db.status.attribute + db.bibliodiv.role.attribute = attribute role { text } + db.bibliodiv.attlist = + db.bibliodiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliodiv.status.attrib? + db.bibliodiv.info = db._info.title.req + db.bibliodiv = + + ## A section of a bibliography + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:bibliodiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element bibliodiv { + db.bibliodiv.attlist, + db.bibliodiv.info, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.bibliolist.role.attribute = attribute role { text } + db.bibliolist.attlist = + db.bibliolist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliolist.info = db._info.title.only + db.bibliolist = + + ## A wrapper for a list of bibliography entries + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:bibliolist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element bibliolist { + db.bibliolist.attlist, + db.bibliolist.info?, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.biblioref.role.attribute = attribute role { text } + db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute + db.biblioref.endterm.attribute = db.endterm.attribute + db.biblioref.units.attribute = + + ## The units (for example, pages) used to identify the beginning and ending of a reference. + attribute units { xsd:token } + db.biblioref.begin.attribute = + + ## Identifies the beginning of a reference; the location within the work that is being referenced. + attribute begin { xsd:token } + db.biblioref.end.attribute = + + ## Identifies the end of a reference. + attribute end { xsd:token } + db.biblioref.attlist = + db.biblioref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.biblioref.xrefstyle.attribute? + & db.biblioref.endterm.attribute? + & db.biblioref.units.attribute? + & db.biblioref.begin.attribute? + & db.biblioref.end.attribute? + db.biblioref = + + ## A cross-reference to a bibliographic entry + element biblioref { db.biblioref.attlist, empty } +} +db.significance.enumeration = + + ## Normal + "normal" + | + ## Preferred + "preferred" +db.significance.attribute = + + ## Specifies the significance of the term + attribute significance { db.significance.enumeration } +db.zone.attribute = + + ## Specifies the IDs of the elements to which this term applies + attribute zone { xsd:IDREFS } +db.indexterm.pagenum.attribute = + + ## Indicates the page on which this index term occurs in some version of the printed document + attribute pagenum { text } +db.scope.enumeration = + + ## All indexes + "all" + | + ## The global index (as for a combined index of a set of books) + "global" + | + ## The local index (the index for this document only) + "local" +db.scope.attribute = + + ## Specifies the scope of the index term + attribute scope { db.scope.enumeration } +db.sortas.attribute = + + ## Specifies the string by which the term is to be sorted; if unspecified, the term content is used + attribute sortas { text } +db.index.type.attribute = + + ## Specifies the target index for this term + attribute type { text } +div { + db.itermset.role.attribute = attribute role { text } + db.itermset.attlist = + db.itermset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.itermset = + + ## A set of index terms in the meta-information of a document + element itermset { db.itermset.attlist, db.indexterm.singular+ } +} +db.indexterm.contentmodel = + (db.primary, + (db.secondary, + ((db.tertiary, (db.see | db.seealso+)?)? + | (db.see | db.seealso+)?)?)?)?, + (db.see | db.seealso+)? +div { + db.indexterm.singular.role.attribute = attribute role { text } + db.indexterm.singular.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## A singular index term + "singular" + } + db.indexterm.singular.attlist = + db.indexterm.singular.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.singular.class.attribute? + db.indexterm.singular = + + ## A wrapper for an indexed term + element indexterm { + db.indexterm.singular.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.startofrange.role.attribute = attribute role { text } + db.indexterm.startofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The start of a range + "startofrange" + } + db.indexterm.startofrange.attlist = + db.indexterm.startofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.startofrange.class.attribute + db.indexterm.startofrange = + + ## A wrapper for an indexed term that covers a range + element indexterm { + db.indexterm.startofrange.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.endofrange.role.attribute = attribute role { text } + db.indexterm.endofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The end of a range + "endofrange" + } + db.indexterm.endofrange.startref.attribute = + + ## Points to the start of the range + attribute startref { xsd:IDREF } + db.indexterm.endofrange.attlist = + db.indexterm.endofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.indexterm.endofrange.class.attribute + & db.indexterm.endofrange.startref.attribute + db.indexterm.endofrange = + + ## Identifies the end of a range associated with an indexed term + [ + s:pattern [ + s:title [ "Indexterm 'startref' type constraint" ] + s:rule [ + context = "db:indexterm[@startref]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@startref]) = 'indexterm' and namespace-uri(//*[@xml:id=current()/@startref]) = 'http://docbook.org/ns/docbook'" + "@startref on indexterm must point to an indexterm." + ] + s:assert [ + test = + "//*[@xml:id=current()/@startref]/@class='startofrange'" + "@startref on indexterm must point to a startofrange indexterm." + ] + ] + ] + ] + element indexterm { db.indexterm.endofrange.attlist, empty } +} +div { + db.indexterm = + db.indexterm.singular + | db.indexterm.startofrange + | db.indexterm.endofrange +} +div { + db.primary.role.attribute = attribute role { text } + db.primary.attlist = + db.primary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.primary = + + ## The primary word or phrase under which an index term should be sorted + element primary { db.primary.attlist, db.all.inlines* } +} +div { + db.secondary.role.attribute = attribute role { text } + db.secondary.attlist = + db.secondary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.secondary = + + ## A secondary word or phrase in an index term + element secondary { db.secondary.attlist, db.all.inlines* } +} +div { + db.tertiary.role.attribute = attribute role { text } + db.tertiary.attlist = + db.tertiary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.tertiary = + + ## A tertiary word or phrase in an index term + element tertiary { db.tertiary.attlist, db.all.inlines* } +} +div { + db.see.role.attribute = attribute role { text } + db.see.class.attribute = + + ## Identifies the class of 'see' + attribute class { + + ## Normal + "normal" + | + ## See 'under' + "under" + } + db.see.attlist = + db.see.role.attribute? + & db.see.class.attribute? + & db.common.attributes + & db.common.linking.attributes + db.see = + + ## Part of an index term directing the reader instead to another entry in the index + element see { db.see.attlist, db.all.inlines* } +} +div { + db.seealso.role.attribute = attribute role { text } + db.seealso.class.attribute = + + ## Identifies the class of 'seealso' + attribute class { + + ## Normal + "normal" + | + ## See 'under' + "under" + } + db.seealso.attlist = + db.seealso.role.attribute? + & db.seealso.class.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seealso = + + ## Part of an index term directing the reader also to another entry in the index + element seealso { db.seealso.attlist, db.all.inlines* } +} +div { + db.index.status.attribute = db.status.attribute + db.index.role.attribute = attribute role { text } + db.index.attlist = + db.index.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.index.status.attribute? + & db.index.type.attribute? + db.index.info = db._info + # Yes, db.indexdiv* and db.indexentry*; that way an is valid. + # Authors can use an empty index to indicate where a generated index should + # appear. + db.index = + + ## An index to a book or part of a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:index" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element index { + db.index.attlist, + db.index.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry* | db.segmentedlist) + } +} +div { + db.setindex.status.attribute = db.status.attribute + db.setindex.role.attribute = attribute role { text } + db.setindex.attlist = + db.setindex.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.setindex.status.attribute? + & db.index.type.attribute? + db.setindex.info = db._info + db.setindex = + + ## An index to a set of books + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:setindex" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element setindex { + db.setindex.attlist, + db.setindex.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry*) + } +} +div { + db.indexdiv.status.attribute = db.status.attribute + db.indexdiv.role.attribute = attribute role { text } + db.indexdiv.attlist = + db.indexdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.indexdiv.status.attribute? + db.indexdiv.info = db._info.title.req + db.indexdiv = + + ## A division in an index + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:indexdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element indexdiv { + db.indexdiv.attlist, + db.indexdiv.info, + db.all.blocks*, + (db.indexentry+ | db.segmentedlist) + } +} +div { + db.indexentry.role.attribute = attribute role { text } + db.indexentry.attlist = + db.indexentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.indexentry = + + ## An entry in an index + element indexentry { + db.indexentry.attlist, + db.primaryie, + (db.seeie | db.seealsoie)*, + (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)* + } +} +div { + db.primaryie.role.attribute = attribute role { text } + db.primaryie.attlist = + db.primaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.primaryie = + + ## A primary term in an index entry, not in the text + element primaryie { db.primaryie.attlist, db.all.inlines* } +} +div { + db.secondaryie.role.attribute = attribute role { text } + db.secondaryie.attlist = + db.secondaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.secondaryie = + + ## A secondary term in an index entry, rather than in the text + element secondaryie { db.secondaryie.attlist, db.all.inlines* } +} +div { + db.tertiaryie.role.attribute = attribute role { text } + db.tertiaryie.attlist = + db.tertiaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.tertiaryie = + + ## A tertiary term in an index entry, rather than in the text + element tertiaryie { db.tertiaryie.attlist, db.all.inlines* } +} +div { + db.seeie.role.attribute = attribute role { text } + db.seeie.attlist = + db.seeie.role.attribute? + & db.common.attributes + & db.linkend.attribute? + db.seeie = + + ## A See + ## entry in an index, rather than in the text + element seeie { db.seeie.attlist, db.all.inlines* } +} +div { + db.seealsoie.role.attribute = attribute role { text } + db.seealsoie.attlist = + db.seealsoie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.seealsoie = + + ## A See also + ## entry in an index, rather than in the text + element seealsoie { db.seealsoie.attlist, db.all.inlines* } +} +db.toc.pagenum.attribute = + + ## Indicates the page on which this element occurs in some version of the printed document + attribute pagenum { text } +div { + db.toc.role.attribute = attribute role { text } + db.toc.attlist = + db.toc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.toc.info = db._info.title.only + db.toc = + + ## A table of contents + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:toc" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element toc { + db.toc.attlist, + db.toc.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)* + } +} +div { + db.tocdiv.role.attribute = attribute role { text } + db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute + db.tocdiv.attlist = + db.tocdiv.role.attribute? + & db.common.attributes + & db.tocdiv.pagenum.attribute? + & db.linkend.attribute? + db.tocdiv.info = db._info + db.tocdiv = + + ## A division in a table of contents + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:tocdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element tocdiv { + db.tocdiv.attlist, + db.tocdiv.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)+ + } +} +div { + db.tocentry.role.attribute = attribute role { text } + db.tocentry.pagenum.attribute = db.toc.pagenum.attribute + db.tocentry.attlist = + db.tocentry.role.attribute? + & db.common.attributes + & db.tocentry.pagenum.attribute? + & db.linkend.attribute? + db.tocentry = + + ## A component title in a table of contents + element tocentry { db.tocentry.attlist, db.all.inlines* } +} +db.task.info = db._info.title.req +div { + db.task.role.attribute = attribute role { text } + db.task.attlist = + db.task.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.task = + + ## A task to be completed + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:task" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element task { + db.task.attlist, + db.task.info, + db.tasksummary?, + db.taskprerequisites?, + db.procedure+, + db.example*, + db.taskrelated? + } +} +div { + db.tasksummary.role.attribute = attribute role { text } + db.tasksummary.attlist = + db.tasksummary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tasksummary.info = db._info.title.only + db.tasksummary = + + ## A summary of a task + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:tasksummary" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element tasksummary { + db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+ + } +} +div { + db.taskprerequisites.role.attribute = attribute role { text } + db.taskprerequisites.attlist = + db.taskprerequisites.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskprerequisites.info = db._info.title.only + db.taskprerequisites = + + ## The prerequisites for a task + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:taskprerequisites" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element taskprerequisites { + db.taskprerequisites.attlist, + db.taskprerequisites.info, + db.all.blocks+ + } +} +div { + db.taskrelated.role.attribute = attribute role { text } + db.taskrelated.attlist = + db.taskrelated.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskrelated.info = db._info.title.only + db.taskrelated = + + ## Information related to a task + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:taskrelated" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element taskrelated { + db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+ + } +} +db.area.units.enumeration = + + ## Coordinates expressed as a pair of CALS graphic coordinates. + "calspair" + | + ## Coordinates expressed as a line and column. + "linecolumn" + | + ## Coordinates expressed as a pair of lines and columns. + "linecolumnpair" + | + ## Coordinates expressed as a line range. + "linerange" +db.area.units-enum.attribute = + + ## Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair + ## for graphics and linecolumn + ## for line-oriented elements. + attribute units { db.area.units.enumeration }? +db.area.units-other.attributes = + + ## Indicates that non-standard units are used for this area + ## . In this case otherunits + ## must be specified. + attribute units { + + ## Coordinates expressed in some non-standard units. + "other" + }?, + + ## Identifies the units used in the coords + ## attribute when the units + ## attribute is other + ## . This attribute is forbidden otherwise. + attribute otherunits { xsd:NMTOKEN } +db.area.units.attribute = + db.area.units-enum.attribute | db.area.units-other.attributes +div { + db.calloutlist.role.attribute = attribute role { text } + db.calloutlist.attlist = + db.calloutlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.calloutlist.info = db._info.title.only + db.calloutlist = + + ## A list of callout + ## s + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:calloutlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element calloutlist { + db.calloutlist.attlist, + db.calloutlist.info, + db.all.blocks*, + db.callout+ + } +} +div { + db.callout.role.attribute = attribute role { text } + db.callout.arearefs.attribute = + + ## Identifies the areas described by this callout. + attribute arearefs { xsd:IDREFS } + db.callout.attlist = + db.callout.role.attribute? + & db.common.attributes + & db.callout.arearefs.attribute + # This requires an XPath 2.0 compatible Schematron processor + db.callout = + + ## A called out + ## description of a marked area + [ + s:pattern [ + s:title [ "Callout cross reference constraint" ] + s:rule [ + context = "db:callout[@arearefs]" + s:assert [ + test = + "every $id in tokenize(current()/@arearefs) satisfies (every $ar in //*[@xml:id = $id] satisfies (local-name($ar) = ('areaset', 'area', 'co') and namespace-uri($ar) = 'http://docbook.org/ns/docbook'))" + "@arearefs on callout must point to a areaset, area, or co." + ] + ] + ] + ] + element callout { db.callout.attlist, db.all.blocks+ } +} +div { + db.programlistingco.role.attribute = attribute role { text } + db.programlistingco.attlist = + db.programlistingco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.programlistingco.info = db._info.title.forbidden + db.programlistingco = + + ## A program listing with associated areas used in callouts + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:programlistingco" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element programlistingco { + db.programlistingco.attlist, + db.programlistingco.info, + db.areaspec, + db.programlisting, + db.calloutlist* + } +} +div { + db.areaspec.role.attribute = attribute role { text } + db.areaspec.attlist = + db.areaspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.area.units.attribute + db.areaspec = + + ## A collection of regions in a graphic or code example + element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ } +} +div { + db.area.role.attribute = attribute role { text } + db.area.linkends.attribute = + + ## Point to the callout + ## s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + attribute linkends { xsd:IDREFS } + db.area.label.attribute = + + ## Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + attribute label { text } + db.area.coords.attribute = + + ## Provides the coordinates of the area. The coordinates must be interpreted using the units + ## specified. + attribute coords { text } + db.area.attlist = + db.area.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.xlink.simple.link.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area = + + ## A region defined for a callout in a graphic or code example + element area { db.area.attlist, db.alt? } +} +div { + # The only difference is that xml:id is optional + db.area.inareaset.attlist = + db.area.role.attribute? + & db.common.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.xlink.simple.link.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area.inareaset = + + ## A region defined for a callout in a graphic or code example + element area { db.area.inareaset.attlist, db.alt? } +} +div { + db.areaset.role.attribute = attribute role { text } + db.areaset.linkends.attribute = db.linkends.attribute + db.areaset.label.attribute = db.label.attribute + db.areaset.attlist = + db.areaset.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.areaset.linkends.attribute | db.xlink.simple.link.attributes)? + & db.areaset.label.attribute? + db.areaset = + + ## A set of related areas in a graphic or code example + element areaset { db.areaset.attlist, db.area.inareaset+ } +} +div { + db.screenco.role.attribute = attribute role { text } + db.screenco.attlist = + db.screenco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenco.info = db._info.title.forbidden + db.screenco = + + ## A screen with associated areas used in callouts + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:screenco" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element screenco { + db.screenco.attlist, + db.screenco.info, + db.areaspec, + db.screen, + db.calloutlist* + } +} +div { + db.imageobjectco.role.attribute = attribute role { text } + db.imageobjectco.attlist = + db.imageobjectco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobjectco.info = db._info.title.forbidden + db.imageobjectco = + + ## A wrapper for an image object with callouts + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imageobjectco" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imageobjectco { + db.imageobjectco.attlist, + db.imageobjectco.info, + db.areaspec, + db.imageobject+, + db.calloutlist* + } +} +div { + db.co.role.attribute = attribute role { text } + db.co.linkends.attribute = db.linkends.attribute + db.co.label.attribute = db.label.attribute + db.co.attlist = + db.co.role.attribute? + & db.common.idreq.attributes + & db.co.linkends.attribute? + & db.co.label.attribute? + db.co = + + ## The location of a callout embedded in text + element co { db.co.attlist, empty } +} +div { + db.coref.role.attribute = attribute role { text } + db.coref.label.attribute = db.label.attribute + db.coref.attlist = + db.coref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.coref.label.attribute? + db.coref = + + ## A cross reference to a co + element coref { db.coref.attlist, empty } +} +div { + db.productionset.role.attribute = attribute role { text } + db.productionset.attlist = + db.productionset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productionset.info = db._info.title.only + db.productionset = + + ## A set of EBNF productions + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:productionset" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element productionset { + db.productionset.attlist, + db.productionset.info, + (db.production | db.productionrecap)+ + } +} +div { + db.production.role.attribute = attribute role { text } + db.production.attlist = + db.production.role.attribute? + & db.common.idreq.attributes + & db.common.linking.attributes + db.production = + + ## A production in a set of EBNF productions + element production { + db.production.attlist, db.lhs, db.rhs+, db.constraint* + } +} +div { + db.lhs.role.attribute = attribute role { text } + db.lhs.attlist = + db.lhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lhs = + + ## The left-hand side of an EBNF production + element lhs { db.lhs.attlist, text } +} +div { + db.rhs.role.attribute = attribute role { text } + db.rhs.attlist = + db.rhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.rhs = + + ## The right-hand side of an EBNF production + element rhs { + db.rhs.attlist, + (text | db.nonterminal | db.lineannotation | db.sbr)* + } +} +div { + db.nonterminal.role.attribute = attribute role { text } + db.nonterminal.def.attribute = + + ## Specifies a URI that points to a production + ## where the nonterminal + ## is defined + attribute def { xsd:anyURI } + db.nonterminal.attlist = + db.nonterminal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.nonterminal.def.attribute + db.nonterminal = + + ## A non-terminal in an EBNF production + element nonterminal { db.nonterminal.attlist, text } +} +div { + db.constraint.role.attribute = attribute role { text } + db.constraint.attlist = + db.constraint.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.constraint = + + ## A constraint in an EBNF production + [ + s:pattern [ + s:title [ "Constraint cross reference constraint" ] + s:rule [ + context = "db:constraint[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'constraintdef' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on constraint must point to a constraintdef." + ] + ] + ] + ] + element constraint { db.constraint.attlist, empty } +} +div { + db.productionrecap.role.attribute = attribute role { text } + db.productionrecap.attlist = + db.productionrecap.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.productionrecap = + + ## A cross-reference to an EBNF production + [ + s:pattern [ + s:title [ "Production recap cross reference constraint" ] + s:rule [ + context = "db:productionrecap[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'production' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on productionrecap must point to a production." + ] + ] + ] + ] + element productionrecap { db.productionrecap.attlist, empty } +} +div { + db.constraintdef.role.attribute = attribute role { text } + db.constraintdef.attlist = + db.constraintdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.constraintdef.info = db._info.title.only + db.constraintdef = + + ## The definition of a constraint in an EBNF production + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:constraintdef" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element constraintdef { + db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+ + } +} +db.char.attribute = + + ## Specifies the alignment character when align + ## is set to char + ## . + attribute char { text } +db.charoff.attribute = + + ## Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + ## when align + ## is set to char + ## . + attribute charoff { + xsd:decimal { minExclusive = "0" maxExclusive = "100" } + } +db.frame.attribute = + + ## Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + attribute frame { + + ## Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + "all" + | + ## Frame only the bottom of the table. + "bottom" + | + ## Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + "none" + | + ## Frame the left and right sides of the table. + "sides" + | + ## Frame the top of the table. + "top" + | + ## Frame the top and bottom of the table. + "topbot" + } +db.colsep.attribute = + + ## Specifies the presence or absence of the column separator + attribute colsep { + + ## No column separator rule. + "0" + | + ## Provide a column separator rule on the right + "1" + } +db.rowsep.attribute = + + ## Specifies the presence or absence of the row separator + attribute rowsep { + + ## No row separator rule. + "0" + | + ## Provide a row separator rule below + "1" + } +db.orient.attribute = + + ## Specifies the orientation of the table + attribute orient { + + ## 90 degrees counter-clockwise from the rest of the text flow. + "land" + | + ## The same orientation as the rest of the text flow. + "port" + } +db.tabstyle.attribute = + + ## Specifies the table style + attribute tabstyle { text } +db.rowheader.attribute = + + ## Indicates whether or not the entries in the first column should be considered row headers + attribute rowheader { + + ## Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + "firstcol" + | + ## Indicates that row headers are identified by use of the headers attribute on entries in the table. + "headers" + | + ## Indicates that entries in the first column have no special significance with respect to column headers. + "norowheader" + } +db.align.attribute = + + ## Specifies the horizontal alignment of text in an entry. + attribute align { + + ## Centered. + "center" + | + ## Aligned on a particular character. + "char" + | + ## Left and right justified. + "justify" + | + ## Left justified. + "left" + | + ## Right justified. + "right" + } +db.valign.attribute = + + ## Specifies the vertical alignment of text in an entry. + attribute valign { + + ## Aligned on the bottom of the entry. + "bottom" + | + ## Aligned in the middle. + "middle" + | + ## Aligned at the top of the entry. + "top" + } +db.specify-col-by-colname.attributes = + + ## Specifies a column specification by name. + attribute colname { text } +db.specify-col-by-namest.attributes = + + ## Specifies a starting column by name. + attribute namest { text } +db.specify-span-by-spanspec.attributes = + + ## Specifies a span by name. + attribute spanname { text } +db.specify-span-directly.attributes = + + ## Specifies a starting column by name. + attribute namest { text } + & + ## Specifies an ending column by name. + attribute nameend { text } +db.column-spec.attributes = + db.specify-col-by-colname.attributes + | db.specify-col-by-namest.attributes + | db.specify-span-by-spanspec.attributes + | db.specify-span-directly.attributes +db.colname.attribute = + + ## Provides a name for a column specification. + attribute colname { text } +db.spanname.attribute = + + ## Provides a name for a span specification. + attribute spanname { text } +div { + db.tgroup.role.attribute = attribute role { text } + db.tgroup.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.tgroup.cols.attribute = + + ## The number of columns in the table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.tgroup.attlist = + db.tgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.tgroup.tgroupstyle.attribute? + & db.tgroup.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.tgroup = + + ## A wrapper for the main content of a table, or part of a table + element tgroup { + db.tgroup.attlist, + db.colspec*, + db.spanspec*, + db.cals.thead?, + db.cals.tfoot?, + db.cals.tbody + } +} +div { + db.colspec.role.attribute = attribute role { text } + db.colspec.colnum.attribute = + + ## The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + attribute colnum { xsd:positiveInteger } + db.colspec.colwidth.attribute = + + ## Specifies the width of the column. + attribute colwidth { text } + db.colspec.attlist = + db.colspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.colspec.colnum.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.colspec.colwidth.attribute? + & db.charoff.attribute? + & db.colname.attribute? + & db.rowsep.attribute? + & db.align.attribute? + & db.rowheader.attribute? + db.colspec = + + ## Specifications for a column in a table + element colspec { db.colspec.attlist, empty } +} +div { + db.spanspec.role.attribute = attribute role { text } + db.spanspec.namest.attribute = + + ## Specifies a starting column by name. + attribute namest { text } + db.spanspec.nameend.attribute = + + ## Specifies an ending column by name. + attribute nameend { text } + db.spanspec.attlist = + db.spanspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spanname.attribute + & db.spanspec.namest.attribute + & db.spanspec.nameend.attribute + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.spanspec = + + ## Formatting information for a spanned column in a table + element spanspec { db.spanspec.attlist, empty } +} +div { + db.cals.thead.role.attribute = attribute role { text } + db.cals.thead.attlist = + db.cals.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.thead = + + ## A table header consisting of one or more rows + element thead { db.cals.thead.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tfoot.role.attribute = attribute role { text } + db.cals.tfoot.attlist = + db.cals.tfoot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tfoot = + + ## A table footer consisting of one or more rows + element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tbody.role.attribute = attribute role { text } + db.cals.tbody.attlist = + db.cals.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.tbody.attlist, db.row+ } +} +div { + db.row.role.attribute = attribute role { text } + db.row.attlist = + db.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.row = + + ## A row in a table + element row { db.row.attlist, (db.entry | db.entrytbl)+ } +} +div { + db.entry.role.attribute = attribute role { text } + db.entry.morerows.attribute = + + ## Specifies the number of additional rows which this entry occupies. Defaults to zero. + attribute morerows { xsd:integer } + db.entry.rotate.attribute = + + ## Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + attribute rotate { + + ## Do not rotate the cell. + "0" + | + ## Rotate the cell 90 degrees counter-clockwise. + "1" + } + db.entry.scope.attribute = + + ## Specifies the scope of a header. + attribute scope { + + ## Applies to the row + "row" + | + ## Applies to the column + "col" + | + ## Applies to the row group + "rowgroup" + | + ## Applies to the column group + "colgroup" + } + db.entry.headers.attribute = + + ## Specifies the entry or entries which serve as headers for this element. + attribute headers { xsd:IDREFS } + db.entry.attlist = + db.entry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.entry.morerows.attribute? + & db.column-spec.attributes? + & db.rowsep.attribute? + & db.entry.rotate.attribute? + & db.align.attribute? + & db.entry.scope.attribute? + & db.entry.headers.attribute? + db.entry = + + ## A cell in a table + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:entry" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of entry" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:entry" + s:assert [ + test = "not(.//db:informaltable)" + "informaltable must not occur among the children or descendants of entry" + ] + ] + ] + ] + element entry { + db.entry.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.entrytbl.role.attribute = attribute role { text } + db.entrytbl.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.entrytbl.cols.attribute = + + ## The number of columns in the entry table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.entrytbl.attlist = + db.entrytbl.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.column-spec.attributes? + & db.entrytbl.tgroupstyle.attribute? + & db.entrytbl.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.entrytbl = + + ## A subtable appearing in place of an entry in a table + element entrytbl { + db.entrytbl.attlist, + db.colspec*, + db.spanspec*, + db.cals.entrytbl.thead?, + db.cals.entrytbl.tbody + } +} +div { + db.cals.entrytbl.thead.role.attribute = attribute role { text } + db.cals.entrytbl.thead.attlist = + db.cals.entrytbl.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.thead = + + ## A table header consisting of one or more rows + element thead { + db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+ + } +} +div { + db.cals.entrytbl.tbody.role.attribute = attribute role { text } + db.cals.entrytbl.tbody.attlist = + db.cals.entrytbl.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ } +} +div { + db.entrytbl.row.role.attribute = attribute role { text } + db.entrytbl.row.attlist = + db.entrytbl.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.entrytbl.row = + + ## A row in a table + element row { db.entrytbl.row.attlist, db.entry+ } +} +div { + db.cals.table.role.attribute = attribute role { text } + db.cals.table.label.attribute = db.label.attribute + db.cals.table.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.cals.table.attlist = + db.cals.table.role.attribute? + & db.cals.table.type.attribute? + & db.cals.table.label.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & + ## Indicates if the short or long title should be used in a List of Tables + attribute shortentry { + + ## Indicates that the full title should be used. + "0" + | + ## Indicates that the short short title (titleabbrev) should be used. + "1" + }? + & + ## Indicates if the table should appear in a List of Tables + attribute tocentry { + + ## Indicates that the table should not occur in the List of Tables. + "0" + | + ## Indicates that the table should appear in the List of Tables. + "1" + }? + & db.rowheader.attribute? + db.cals.table.info = db._info.title.onlyreq + db.cals.table = + + ## A formal table in a document + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:table" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element table { + db.cals.table.attlist, + db.cals.table.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +div { + db.cals.informaltable.role.attribute = attribute role { text } + db.cals.informaltable.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.cals.informaltable.attlist = + db.cals.informaltable.role.attribute? + & db.cals.informaltable.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & db.rowheader.attribute? + db.cals.informaltable.info = db._info.title.forbidden + db.cals.informaltable = + + ## A table without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informaltable" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informaltable { + db.cals.informaltable.attlist, + db.cals.informaltable.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +db.html.coreattrs = + + ## This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + attribute class { text }? + & + ## This attribute specifies style information for the current element. + attribute style { text }? + & + ## This attribute offers advisory information about the element for which it is set. + attribute title { text }? +db.html.i18n = + + ## This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + attribute lang { text }? +db.html.events = + + ## Occurs when the pointing device button is clicked over an element. + attribute onclick { text }? + & + ## Occurs when the pointing device button is double clicked over an element. + attribute ondblclick { text }? + & + ## Occurs when the pointing device button is pressed over an element. + attribute onmousedown { text }? + & + ## Occurs when the pointing device button is released over an element. + attribute onmouseup { text }? + & + ## Occurs when the pointing device is moved onto an element. + attribute onmouseover { text }? + & + ## Occurs when the pointing device is moved while it is over an element. + attribute onmousemove { text }? + & + ## Occurs when the pointing device is moved away from an element. + attribute onmouseout { text }? + & + ## Occurs when a key is pressed and released over an element. + attribute onkeypress { text }? + & + ## Occurs when a key is pressed down over an element. + attribute onkeydown { text }? + & + ## Occurs when a key is released over an element. + attribute onkeyup { text }? +db.html.attrs = + db.common.attributes + & db.html.coreattrs + & db.html.i18n + & db.html.events +db.html.cellhalign = + + ## Specifies the alignment of data and the justification of text in a cell. + attribute align { + + ## Left-flush data/Left-justify text. This is the default value for table data. + "left" + | + ## Center data/Center-justify text. This is the default value for table headers. + "center" + | + ## Right-flush data/Right-justify text. + "right" + | + ## Double-justify text. + "justify" + | + ## Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + "char" + }? + & + ## This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + attribute char { text }? + & + ## When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + attribute charoff { + xsd:integer >> a:documentation [ "An explicit offset." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage offset." ] + }? +db.html.cellvalign = + + ## Specifies the vertical position of data within a cell. + attribute valign { + + ## Cell data is flush with the top of the cell. + "top" + | + ## Cell data is centered vertically within the cell. This is the default value. + "middle" + | + ## Cell data is flush with the bottom of the cell. + "bottom" + | + ## All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + "baseline" + }? +db.html.table.attributes = + + ## Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + attribute summary { text }? + & + ## Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + attribute width { + xsd:integer >> a:documentation [ "An explicit width." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage width." ] + }? + & + ## Specifies the width (in pixels only) of the frame around a table. + attribute border { xsd:nonNegativeInteger }? + & + ## Specifies which sides of the frame surrounding a table will be visible. + attribute frame { + + ## No sides. This is the default value. + "void" + | + ## The top side only. + "above" + | + ## The bottom side only. + "below" + | + ## The top and bottom sides only. + "hsides" + | + ## The left-hand side only. + "lhs" + | + ## The right-hand side only. + "rhs" + | + ## The right and left sides only. + "vsides" + | + ## All four sides. + "box" + | + ## All four sides. + "border" + }? + & + ## Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + attribute rules { + + ## No rules. This is the default value. + "none" + | + ## Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + "groups" + | + ## Rules will appear between rows only. + "rows" + | + ## Rules will appear between columns only. + "cols" + | + ## Rules will appear between all rows and columns. + "all" + }? + & + ## Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + attribute cellspacing { + xsd:integer >> a:documentation [ "An explicit spacing." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage spacing." ] + }? + & + ## Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + attribute cellpadding { + xsd:integer >> a:documentation [ "An explicit padding." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage padding." ] + }? +db.html.tablecell.attributes = + + ## Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + attribute abbr { text }? + & + ## This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + attribute axis { text }? + & + ## Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + attribute headers { text }? + & + ## Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + attribute scope { + + ## The current cell provides header information for the rest of the row that contains it + "row" + | + ## The current cell provides header information for the rest of the column that contains it. + "col" + | + ## The header cell provides header information for the rest of the row group that contains it. + "rowgroup" + | + ## The header cell provides header information for the rest of the column group that contains it. + "colgroup" + }? + & + ## Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all rows from the current row to the last row of the table section (thead + ## , tbody + ## , or tfoot + ## ) in which the cell is defined. + attribute rowspan { xsd:nonNegativeInteger }? + & + ## Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all columns from the current column to the last column of the column group (colgroup + ## ) in which the cell is defined. + attribute colspan { xsd:nonNegativeInteger }? +db.html.table.info = db._info.title.forbidden +db.html.table.model = + db.html.table.info?, + db.html.caption, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +db.html.informaltable.info = db._info.title.forbidden +db.html.informaltable.model = + db.html.informaltable.info?, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +div { + db.html.table.role.attribute = attribute role { text } + db.html.table.label.attribute = db.label.attribute + db.html.table.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.html.table.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.table.role.attribute? + & db.html.table.type.attribute? + & db.html.table.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.table = + + ## A formal (captioned) HTML table in a document + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:table" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element table { db.html.table.attlist, db.html.table.model } +} +div { + db.html.informaltable.role.attribute = attribute role { text } + db.html.informaltable.label.attribute = db.label.attribute + db.html.informaltable.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.html.informaltable.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.informaltable.role.attribute? + & db.html.informaltable.type.attribute? + & db.html.informaltable.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.informaltable = + + ## An HTML table without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informaltable" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informaltable { + db.html.informaltable.attlist, db.html.informaltable.model + } +} +div { + db.html.caption.attlist = db.html.attrs + db.html.caption = + + ## An HTML table caption + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:caption" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element caption { db.html.caption.attlist, db.all.inlines* } +} +div { + db.html.col.attlist = + db.html.attrs + & + ## This attribute, whose value must be an integer > 0, specifies the number of columns spanned + ## by the col + ## element; the col + ## element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + ## element shares its attributes with the next N-1 columns. + attribute span { xsd:nonNegativeInteger }? + & + ## Specifies a default width for each column spanned by the current col + ## element. It has the same meaning as the width + ## attribute for the colgroup + ## element and overrides it. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.col = + + ## Specifications for a column in an HTML table + element col { db.html.col.attlist, empty } +} +div { + db.html.colgroup.attlist = + db.html.attrs + & + ## This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + ## defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + ## element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + ## element contains one or more col + ## elements. + attribute span { xsd:nonNegativeInteger }? + & + ## This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + ## (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + ## will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + ## element. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.colgroup = + + ## A group of columns in an HTML table + element colgroup { db.html.colgroup.attlist, db.html.col* } +} +div { + db.html.thead.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.thead = + + ## A table header consisting of one or more rows in an HTML table + element thead { db.html.thead.attlist, db.html.tr+ } +} +div { + db.html.tfoot.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tfoot = + + ## A table footer consisting of one or more rows in an HTML table + element tfoot { db.html.tfoot.attlist, db.html.tr+ } +} +div { + db.html.tbody.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tbody = + + ## A wrapper for the rows of an HTML table or informal HTML table + element tbody { db.html.tbody.attlist, db.html.tr+ } +} +div { + db.html.tr.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tr = + + ## A row in an HTML table + element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ } +} +div { + db.html.th.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.th = + + ## A table header entry in an HTML table + element th { + db.html.th.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.html.td.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.td = + + ## A table entry in an HTML table + element td { + db.html.td.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.msgset.role.attribute = attribute role { text } + db.msgset.attlist = + db.msgset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgset.info = db._info.title.only + db.msgset = + + ## A detailed set of messages, usually error messages + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgset" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgset { + db.msgset.attlist, + db.msgset.info, + (db.msgentry+ | db.simplemsgentry+) + } +} +div { + db.msgentry.role.attribute = attribute role { text } + db.msgentry.attlist = + db.msgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgentry = + + ## A wrapper for an entry in a message set + element msgentry { + db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan* + } +} +div { + db.simplemsgentry.role.attribute = attribute role { text } + db.simplemsgentry.msgaud.attribute = + + ## The audience to which the message relevant + attribute msgaud { text } + db.simplemsgentry.msgorig.attribute = + + ## The origin of the message + attribute msgorig { text } + db.simplemsgentry.msglevel.attribute = + + ## The level of importance or severity of a message + attribute msglevel { text } + db.simplemsgentry.attlist = + db.simplemsgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplemsgentry.msgaud.attribute? + & db.simplemsgentry.msgorig.attribute? + & db.simplemsgentry.msglevel.attribute? + db.simplemsgentry = + + ## A wrapper for a simpler entry in a message set + element simplemsgentry { + db.simplemsgentry.attlist, db.msgtext, db.msgexplan+ + } +} +div { + db.msg.role.attribute = attribute role { text } + db.msg.attlist = + db.msg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msg.info = db._info.title.only + db.msg = + + ## A message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msg" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msg { + db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)* + } +} +div { + db.msgmain.role.attribute = attribute role { text } + db.msgmain.attlist = + db.msgmain.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgmain.info = db._info.title.only + db.msgmain = + + ## The primary component of a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgmain" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext } +} +div { + db.msgsub.role.attribute = attribute role { text } + db.msgsub.attlist = + db.msgsub.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgsub.info = db._info.title.only + db.msgsub = + + ## A subcomponent of a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgsub" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext } +} +div { + db.msgrel.role.attribute = attribute role { text } + db.msgrel.attlist = + db.msgrel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgrel.info = db._info.title.only + db.msgrel = + + ## A related component of a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgrel" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext } +} +div { + db.msgtext.role.attribute = attribute role { text } + db.msgtext.attlist = + db.msgtext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgtext = + + ## The actual text of a message component in a message set + element msgtext { db.msgtext.attlist, db.all.blocks+ } +} +div { + db.msginfo.role.attribute = attribute role { text } + db.msginfo.attlist = + db.msginfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msginfo = + + ## Information about a message in a message set + element msginfo { + db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)* + } +} +div { + db.msglevel.role.attribute = attribute role { text } + db.msglevel.attlist = + db.msglevel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msglevel = + + ## The level of importance or severity of a message in a message set + element msglevel { db.msglevel.attlist, db._text } +} +div { + db.msgorig.role.attribute = attribute role { text } + db.msgorig.attlist = + db.msgorig.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgorig = + + ## The origin of a message in a message set + element msgorig { db.msgorig.attlist, db._text } +} +div { + db.msgaud.role.attribute = attribute role { text } + db.msgaud.attlist = + db.msgaud.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgaud = + + ## The audience to which a message in a message set is relevant + element msgaud { db.msgaud.attlist, db._text } +} +div { + db.msgexplan.role.attribute = attribute role { text } + db.msgexplan.attlist = + db.msgexplan.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgexplan.info = db._info.title.only + db.msgexplan = + + ## Explanatory material relating to a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgexplan" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgexplan { + db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+ + } +} +div { + db.qandaset.role.attribute = attribute role { text } + db.qandaset.defaultlabel.enumeration = + + ## No labels + "none" + | + ## Numeric labels + "number" + | + ## "Q:" and "A:" labels + "qanda" + db.qandaset.defaultlabel.attribute = + + ## Specifies the default labelling + attribute defaultlabel { db.qandaset.defaultlabel.enumeration } + db.qandaset.attlist = + db.qandaset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.qandaset.defaultlabel.attribute? + db.qandaset.info = db._info.title.only + db.qandaset = + + ## A question-and-answer set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:qandaset" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element qandaset { + db.qandaset.attlist, + db.qandaset.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandadiv.role.attribute = attribute role { text } + db.qandadiv.attlist = + db.qandadiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandadiv.info = db._info.title.only + db.qandadiv = + + ## A titled division in a qandaset + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:qandadiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element qandadiv { + db.qandadiv.attlist, + db.qandadiv.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandaentry.role.attribute = attribute role { text } + db.qandaentry.attlist = + db.qandaentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandaentry.info = db._info.title.only + db.qandaentry = + + ## A question/answer set within a qandaset + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:qandaentry" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element qandaentry { + db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer* + } +} +div { + db.question.role.attribute = attribute role { text } + db.question.attlist = + db.question.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.question = + + ## A question in a qandaset + element question { db.question.attlist, db.label?, db.all.blocks+ } +} +div { + db.answer.role.attribute = attribute role { text } + db.answer.attlist = + db.answer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.answer = + + ## An answer to a question posed in a qandaset + element answer { db.answer.attlist, db.label?, db.all.blocks+ } +} +div { + db.label.role.attribute = attribute role { text } + db.label.attlist = + db.label.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.label = + + ## A label on a question or answer + element label { db.label.attlist, db._text } +} +db.math.inlines = db.inlineequation +db.equation.content = + (db.mediaobject+ | db.mathphrase+) | db._any.mml+ | db.xi.include+ +db.inlineequation.content = + (db.inlinemediaobject+ | db.mathphrase+) + | db._any.mml+ + | db.xi.include+ +div { + db.equation.role.attribute = attribute role { text } + db.equation.label.attribute = db.label.attribute + db.equation.type.attribute = + + ## Identifies the type of equation + attribute type { text }? + db.equation.attlist = + db.equation.role.attribute? + & db.equation.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.equation.label.attribute? + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.equation.info = db._info.title.only + db.equation = + + ## A displayed mathematical equation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:equation" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element equation { + db.equation.attlist, + db.equation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.informalequation.role.attribute = attribute role { text } + db.informalequation.type.attribute = + + ## Identifies the type of equation + attribute type { text }? + db.informalequation.attlist = + db.informalequation.role.attribute? + & db.informalequation.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.informalequation.info = db._info.title.forbidden + db.informalequation = + + ## A displayed mathematical equation without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informalequation" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informalequation { + db.informalequation.attlist, + db.informalequation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.inlineequation.role.attribute = attribute role { text } + db.inlineequation.attlist = + db.inlineequation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlineequation = + + ## A mathematical equation or expression occurring inline + element inlineequation { + db.inlineequation.attlist, db.alt?, db.inlineequation.content + } +} +div { + db.mathphrase.role.attribute = attribute role { text } + db.mathphrase.attlist = + db.mathphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mathphrase = + + ## A mathematical phrase that can be represented with ordinary text and a small amount of markup + element mathphrase { + db.mathphrase.attlist, + (db._text | db.ubiq.inlines | db._emphasis)* + } +} +db.imagedata.mathml.content = db._any.mml | db.xi.include +div { + db.imagedata.mathml.role.attribute = attribute role { text } + db.imagedata.mathml.attlist = + db.imagedata.mathml.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is MathML + attribute format { + + ## Specifies MathML. + "mathml" + }? + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.mathml.info = db._info.title.forbidden + db.imagedata.mathml = + + ## A MathML expression in a media object + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imagedata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imagedata { + db.imagedata.mathml.attlist, + db.imagedata.mathml.info, + db.imagedata.mathml.content+ + } +} +div { + db._any.mml = + + ## Any element from the MathML namespace + element mml:* { (db._any.attribute | text | db._any)* } +} +db.imagedata.svg.content = db._any.svg | db.xi.include +div { + db.imagedata.svg.role.attribute = attribute role { text } + db.imagedata.svg.attlist = + db.imagedata.svg.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is SVG + attribute format { + + ## Specifies SVG. + "svg" + }? + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.svg.info = db._info.title.forbidden + db.imagedata.svg = + + ## An SVG drawing in a media object + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imagedata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imagedata { + db.imagedata.svg.attlist, + db.imagedata.svg.info, + db.imagedata.svg.content+ + } +} +div { + db._any.svg = + + ## Any element from the SVG namespace + element svg:* { (db._any.attribute | text | db._any)* } +} +db.markup.inlines = + db.tag + | db.markup + | db.token + | db.symbol + | db.literal + | db.code + | db.constant + | db.email + | db.uri +div { + db.markup.role.attribute = attribute role { text } + db.markup.attlist = + db.markup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.markup = + + ## A string of formatting markup in text that is to be represented literally + element markup { db.markup.attlist, db._text } +} +div { + db.tag.role.attribute = attribute role { text } + db.tag.class.enumeration = + + ## An attribute + "attribute" + | + ## An attribute value + "attvalue" + | + ## An element + "element" + | + ## An empty element tag + "emptytag" + | + ## An end tag + "endtag" + | + ## A general entity + "genentity" + | + ## The local name part of a qualified name + "localname" + | + ## A namespace + "namespace" + | + ## A numeric character reference + "numcharref" + | + ## A parameter entity + "paramentity" + | + ## A processing instruction + "pi" + | + ## The prefix part of a qualified name + "prefix" + | + ## An SGML comment + "comment" + | + ## A start tag + "starttag" + | + ## An XML processing instruction + "xmlpi" + db.tag.class.attribute = + + ## Identifies the nature of the tag content + attribute class { db.tag.class.enumeration } + db.tag.namespace.attribute = + + ## Identifies the namespace of the tag content + attribute namespace { xsd:anyURI } + db.tag.attlist = + db.tag.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tag.class.attribute? + & db.tag.namespace.attribute? + db.tag = + + ## A component of XML (or SGML) markup + element tag { db.tag.attlist, (db._text | db.tag)* } +} +div { + db.symbol.class.attribute = + + ## Identifies the class of symbol + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.symbol.role.attribute = attribute role { text } + db.symbol.attlist = + db.symbol.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.symbol.class.attribute? + db.symbol = + + ## A name that is replaced by a value before processing + element symbol { db.symbol.attlist, db._text } +} +div { + db.token.role.attribute = attribute role { text } + db.token.attlist = + db.token.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.token = + + ## A unit of information + element token { db.token.attlist, db._text } +} +div { + db.literal.role.attribute = attribute role { text } + db.literal.attlist = + db.literal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.literal = + + ## Inline text that is some literal value + element literal { db.literal.attlist, db._text } +} +div { + code.language.attribute = + + ## Identifies the (computer) language of the code fragment + attribute language { text } + db.code.role.attribute = attribute role { text } + db.code.attlist = + db.code.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & code.language.attribute? + db.code = + + ## An inline code fragment + element code { + db.code.attlist, (db.programming.inlines | db._text)* + } +} +div { + db.constant.class.attribute = + + ## Identifies the class of constant + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.constant.role.attribute = attribute role { text } + db.constant.attlist = + db.constant.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.constant.class.attribute? + db.constant = + + ## A programming or system constant + element constant { db.constant.attlist, db._text } +} +div { + db.productname.role.attribute = attribute role { text } + db.productname.class.enumeration = + + ## A name with a copyright + "copyright" + | + ## A name with a registered copyright + "registered" + | + ## A name of a service + "service" + | + ## A name which is trademarked + "trade" + db.productname.class.attribute = + + ## Specifies the class of product name + attribute class { db.productname.class.enumeration } + db.productname.attlist = + db.productname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.productname.class.attribute? + db.productname = + + ## The formal name of a product + element productname { db.productname.attlist, db._text } +} +div { + db.productnumber.role.attribute = attribute role { text } + db.productnumber.attlist = + db.productnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productnumber = + + ## A number assigned to a product + element productnumber { db.productnumber.attlist, db._text } +} +div { + db.database.class.enumeration = + + ## An alternate or secondary key + "altkey" + | + ## A constraint + "constraint" + | + ## A data type + "datatype" + | + ## A field + "field" + | + ## A foreign key + "foreignkey" + | + ## A group + "group" + | + ## An index + "index" + | + ## The first or primary key + "key1" + | + ## An alternate or secondary key + "key2" + | + ## A name + "name" + | + ## The primary key + "primarykey" + | + ## A (stored) procedure + "procedure" + | + ## A record + "record" + | + ## A rule + "rule" + | + ## The secondary key + "secondarykey" + | + ## A table + "table" + | + ## A user + "user" + | + ## A view + "view" + db.database.class.attribute = + + ## Identifies the class of database artifact + attribute class { db.database.class.enumeration } + db.database.role.attribute = attribute role { text } + db.database.attlist = + db.database.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.database.class.attribute? + db.database = + + ## The name of a database, or part of a database + element database { db.database.attlist, db._text } +} +div { + db.application.class.enumeration = + + ## A hardware application + "hardware" + | + ## A software application + "software" + db.application.class.attribute = + + ## Identifies the class of application + attribute class { db.application.class.enumeration } + db.application.role.attribute = attribute role { text } + db.application.attlist = + db.application.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.application.class.attribute? + db.application = + + ## The name of a software program + element application { db.application.attlist, db._text } +} +div { + db.hardware.role.attribute = attribute role { text } + db.hardware.attlist = + db.hardware.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.hardware = + + ## A physical part of a computer system + element hardware { db.hardware.attlist, db._text } +} +db.gui.inlines = + db.guiicon + | db.guibutton + | db.guimenuitem + | db.guimenu + | db.guisubmenu + | db.guilabel + | db.menuchoice + | db.mousebutton +div { + db.guibutton.role.attribute = attribute role { text } + db.guibutton.attlist = + db.guibutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guibutton = + + ## The text on a button in a GUI + element guibutton { + db.guibutton.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guiicon.role.attribute = attribute role { text } + db.guiicon.attlist = + db.guiicon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guiicon = + + ## Graphic and/or text appearing as a icon in a GUI + element guiicon { + db.guiicon.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guilabel.role.attribute = attribute role { text } + db.guilabel.attlist = + db.guilabel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guilabel = + + ## The text of a label in a GUI + element guilabel { + db.guilabel.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenu.role.attribute = attribute role { text } + db.guimenu.attlist = + db.guimenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenu = + + ## The name of a menu in a GUI + element guimenu { + db.guimenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenuitem.role.attribute = attribute role { text } + db.guimenuitem.attlist = + db.guimenuitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenuitem = + + ## The name of a terminal menu item in a GUI + element guimenuitem { + db.guimenuitem.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guisubmenu.role.attribute = attribute role { text } + db.guisubmenu.attlist = + db.guisubmenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guisubmenu = + + ## The name of a submenu in a GUI + element guisubmenu { + db.guisubmenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.menuchoice.role.attribute = attribute role { text } + db.menuchoice.attlist = + db.menuchoice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.menuchoice = + + ## A selection or series of selections from a menu + element menuchoice { + db.menuchoice.attlist, + db.shortcut?, + (db.guibutton + | db.guiicon + | db.guilabel + | db.guimenu + | db.guimenuitem + | db.guisubmenu)+ + } +} +div { + db.mousebutton.role.attribute = attribute role { text } + db.mousebutton.attlist = + db.mousebutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mousebutton = + + ## The conventional name of a mouse button + element mousebutton { db.mousebutton.attlist, db._text } +} +db.keyboard.inlines = + db.keycombo + | db.keycap + | db.keycode + | db.keysym + | db.shortcut + | db.accel +div { + db.keycap.function.enumeration = + + ## The "Alt" key + "alt" + | + ## The "Alt Graph" key + "altgr" + | + ## The "Backspace" key + "backspace" + | + ## The "Command" key + "command" + | + ## The "Control" key + "control" + | + ## The "Delete" key + "delete" + | + ## The down arrow + "down" + | + ## The "End" key + "end" + | + ## The "Enter" key + "enter" + | + ## The "Escape" key + "escape" + | + ## The "Home" key + "home" + | + ## The "Insert" key + "insert" + | + ## The left arrow + "left" + | + ## The "Meta" key + "meta" + | + ## The "Option" key + "option" + | + ## The page down key + "pagedown" + | + ## The page up key + "pageup" + | + ## The right arrow + "right" + | + ## The "Return" key + "return" + | + ## The "Shift" key + "shift" + | + ## The spacebar + "space" + | + ## The "Tab" key + "tab" + | + ## The up arrow + "up" + db.keycap.function-enum.attribute = + + ## Identifies the function key + attribute function { db.keycap.function.enumeration }? + db.keycap.function-other.attributes = + + ## Identifies the function key + attribute function { + + ## Indicates a non-standard function key + "other" + }?, + + ## Specifies a keyword that identifies the non-standard key + attribute otherfunction { text } + db.keycap.function.attrib = + db.keycap.function-enum.attribute + | db.keycap.function-other.attributes + db.keycap.role.attribute = attribute role { text } + db.keycap.attlist = + db.keycap.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycap.function.attrib + db.keycap = + + ## The text printed on a key on a keyboard + element keycap { db.keycap.attlist, db._text } +} +div { + db.keycode.role.attribute = attribute role { text } + db.keycode.attlist = + db.keycode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keycode = + + ## The internal, frequently numeric, identifier for a key on a keyboard + element keycode { db.keycode.attlist, db._text } +} +db.keycombination.contentmodel = + (db.keycap | db.keycombo | db.keysym) | db.mousebutton +div { + db.keycombo.action.enumeration = + + ## A (single) mouse click. + "click" + | + ## A double mouse click. + "double-click" + | + ## A mouse or key press. + "press" + | + ## Sequential clicks or presses. + "seq" + | + ## Simultaneous clicks or presses. + "simul" + db.keycombo.action-enum.attribute = + + ## Identifies the nature of the action taken. If keycombo + ## contains more than one element, simul + ## is the default, otherwise there is no default. + attribute action { db.keycombo.action.enumeration }? + db.keycombo.action-other.attributes = + + ## Identifies the nature of the action taken + attribute action { + + ## Indicates a non-standard action + "other" + }?, + + ## Identifies the non-standard action in some unspecified way. + attribute otheraction { text } + db.keycombo.action.attrib = + db.keycombo.action-enum.attribute + | db.keycombo.action-other.attributes + db.keycombo.role.attribute = attribute role { text } + db.keycombo.attlist = + db.keycombo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycombo.action.attrib + db.keycombo = + + ## A combination of input actions + element keycombo { + db.keycombo.attlist, db.keycombination.contentmodel+ + } +} +div { + db.keysym.role.attribute = attribute role { text } + db.keysym.attlist = + db.keysym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keysym = + + ## The symbolic name of a key on a keyboard + element keysym { db.keysym.attlist, db._text } +} +div { + db.accel.role.attribute = attribute role { text } + db.accel.attlist = + db.accel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.accel = + + ## A graphical user interface (GUI) keyboard shortcut + element accel { db.accel.attlist, db._text } +} +div { + db.shortcut.action.attrib = db.keycombo.action.attrib + db.shortcut.role.attribute = attribute role { text } + db.shortcut.attlist = + db.shortcut.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.shortcut.action.attrib + db.shortcut = + + ## A key combination for an action that is also accessible through a menu + element shortcut { + db.shortcut.attlist, db.keycombination.contentmodel+ + } +} +db.os.inlines = + db.prompt + | db.envar + | db.filename + | db.command + | db.computeroutput + | db.userinput +db.computeroutput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines +db.userinput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines +db.prompt.inlines = db._text | db.co +div { + db.prompt.role.attribute = attribute role { text } + db.prompt.attlist = + db.prompt.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.prompt = + + ## A character or string indicating the start of an input field in a computer display + element prompt { db.prompt.attlist, db.prompt.inlines* } +} +div { + db.envar.role.attribute = attribute role { text } + db.envar.attlist = + db.envar.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.envar = + + ## A software environment variable + element envar { db.envar.attlist, db._text } +} +div { + db.filename.class.enumeration = + + ## A device + "devicefile" + | + ## A directory + "directory" + | + ## A filename extension + "extension" + | + ## A header file (as for a programming language) + "headerfile" + | + ## A library file + "libraryfile" + | + ## A partition (as of a hard disk) + "partition" + | + ## A symbolic link + "symlink" + db.filename.class.attribute = + + ## Identifies the class of filename + attribute class { db.filename.class.enumeration } + db.filename.path.attribute = + + ## Specifies the path of the filename + attribute path { text } + db.filename.role.attribute = attribute role { text } + db.filename.attlist = + db.filename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.filename.path.attribute? + & db.filename.class.attribute? + db.filename = + + ## The name of a file + element filename { db.filename.attlist, db._text } +} +div { + db.command.role.attribute = attribute role { text } + db.command.attlist = + db.command.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.command = + + ## The name of an executable program or other software command + element command { db.command.attlist, db._text } +} +div { + db.computeroutput.role.attribute = attribute role { text } + db.computeroutput.attlist = + db.computeroutput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.computeroutput = + + ## Data, generally text, displayed or presented by a computer + element computeroutput { + db.computeroutput.attlist, db.computeroutput.inlines* + } +} +div { + db.userinput.role.attribute = attribute role { text } + db.userinput.attlist = + db.userinput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.userinput = + + ## Data entered by the user + element userinput { db.userinput.attlist, db.userinput.inlines* } +} +div { + db.cmdsynopsis.role.attribute = attribute role { text } + db.cmdsynopsis.sepchar.attribute = + + ## Specifies the character that should separate the command and its top-level arguments + attribute sepchar { text } + db.cmdsynopsis.cmdlength.attribute = + + ## Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + attribute cmdlength { text } + db.cmdsynopsis.label.attribute = db.label.attribute + db.cmdsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.cmdsynopsis.attlist = + db.cmdsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.cmdsynopsis.sepchar.attribute? + & db.cmdsynopsis.cmdlength.attribute? + & db.cmdsynopsis.label.attribute? + & db.cmdsynopsis.packageref.attribute? + db.cmdsynopsis.info = db._info.title.forbidden + db.cmdsynopsis = + + ## A syntax summary for a software command + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:cmdsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element cmdsynopsis { + db.cmdsynopsis.attlist, + db.cmdsynopsis.info, + (db.command | db.arg | db.group | db.sbr)+, + db.synopfragment* + } +} +db.rep.enumeration = + + ## Can not be repeated. + "norepeat" + | + ## Can be repeated. + "repeat" +db.rep.attribute = + + ## Indicates whether or not repetition is possible. + [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration } +db.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted without indication. + "plain" + | + ## Formatted to indicate that it is required. + "req" +db.choice.opt.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration } +db.choice.req.attribute = + + ## Indicates optionality. + [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration } +div { + db.arg.role.attribute = attribute role { text } + db.arg.rep.attribute = db.rep.attribute + db.arg.choice.attribute = db.choice.opt.attribute + db.arg.attlist = + db.arg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.arg.rep.attribute? + & db.arg.choice.attribute? + db.arg = + + ## An argument in a cmdsynopsis + element arg { + db.arg.attlist, + (db._text + | db.arg + | db.group + | db.option + | db.synopfragmentref + | db.sbr)* + } +} +div { + db.group.role.attribute = attribute role { text } + db.group.rep.attribute = db.rep.attribute + db.group.choice.attribute = db.choice.opt.attribute + db.group.attlist = + db.group.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.rep.attribute? + & db.group.choice.attribute? + db.group = + + ## A group of elements in a cmdsynopsis + element group { + db.group.attlist, + (db.arg + | db.group + | db.option + | db.synopfragmentref + | db.replaceable + | db.sbr)+ + } +} +div { + db.sbr.role.attribute = attribute role { text } + db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes + db.sbr = + + ## An explicit line break in a command synopsis + element sbr { db.sbr.attlist, empty } +} +div { + db.synopfragment.role.attribute = attribute role { text } + db.synopfragment.attlist = + db.synopfragment.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.synopfragment = + + ## A portion of a cmdsynopsis broken out from the main body of the synopsis + element synopfragment { + db.synopfragment.attlist, (db.arg | db.group)+ + } +} +div { + db.synopfragmentref.role.attribute = attribute role { text } + db.synopfragmentref.attlist = + db.synopfragmentref.role.attribute? + & db.common.attributes + & db.linkend.attribute + db.synopfragmentref = + + ## A reference to a fragment of a command synopsis + [ + s:pattern [ + s:title [ "Synopsis fragment type constraint" ] + s:rule [ + context = "db:synopfragmentref" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on synopfragmentref must point to a synopfragment." + ] + ] + ] + ] + element synopfragmentref { db.synopfragmentref.attlist, text } +} +db.programming.inlines = + db.function + | db.parameter + | db.varname + | db.returnvalue + | db.type + | db.classname + | db.exceptionname + | db.interfacename + | db.methodname + | db.modifier + | db.initializer + | db.buildtarget + | db.oo.inlines + | db.templatename + | db.macroname + | db.unionname + | db.enumname + | db.enumvalue + | db.enumidentifier + | db.typedefname +db.oo.inlines = db.ooclass | db.ooexception | db.oointerface +db.synopsis.blocks = + (db.funcsynopsis + | db.classsynopsis + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis + | db.enumsynopsis + | db.typedefsynopsis + | db.packagesynopsis + | db.macrosynopsis + | db.unionsynopsis) + | db.cmdsynopsis +div { + db.synopsis.role.attribute = attribute role { text } + db.synopsis.label.attribute = db.label.attribute + db.synopsis.attlist = + db.synopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.synopsis.label.attribute? + db.synopsis = + + ## A general-purpose element for representing the syntax of commands or functions + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:synopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element synopsis { db.synopsis.attlist, db.verbatim.contentmodel } +} +div { + db.synopsisinfo.role.attribute = attribute role { text } + db.synopsisinfo.attlist = + db.synopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.synopsisinfo = + + ## Information supplementing synopsis + element synopsisinfo { + db.synopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcsynopsis.info = db._info.title.forbidden + db.funcsynopsis.role.attribute = attribute role { text } + db.funcsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.funcsynopsis.attlist = + db.funcsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.funcsynopsis.packageref.attribute? + db.funcsynopsis = + + ## The syntax summary for a function definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:funcsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element funcsynopsis { + db.funcsynopsis.attlist, + db.funcsynopsis.info, + (db.funcsynopsisinfo | db.funcprototype)+ + } +} +div { + db.funcsynopsisinfo.role.attribute = attribute role { text } + db.funcsynopsisinfo.attlist = + db.funcsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.funcsynopsisinfo = + + ## Information supplementing the funcdefs of a funcsynopsis + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:funcsynopsisinfo" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element funcsynopsisinfo { + db.funcsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcprototype.role.attribute = attribute role { text } + db.funcprototype.attlist = + db.funcprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcprototype = + + ## The prototype of a function + element funcprototype { + db.funcprototype.attlist, + db.modifier*, + db.funcdef, + (db.void + | db.varargs + | ((db.paramdef | db.group.paramdef)+, db.varargs?)), + db.modifier* + } +} +div { + db.funcdef.role.attribute = attribute role { text } + db.funcdef.attlist = + db.funcdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcdef = + + ## A function (subroutine) name and its return type + element funcdef { + db.funcdef.attlist, + (db._text | db.type | db.templatename | db.void | db.function)* + } +} +div { + db.function.role.attribute = attribute role { text } + db.function.attlist = + db.function.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.function = + + ## The name of a function or subroutine, as in a programming language + element function { db.function.attlist, db._text } +} +div { + db.void.role.attribute = attribute role { text } + db.void.attlist = + db.void.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.void = + + ## An empty element in a function synopsis indicating that the function in question takes no arguments + element void { db.void.attlist, empty } +} +div { + db.varargs.role.attribute = attribute role { text } + db.varargs.attlist = + db.varargs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varargs = + + ## An empty element in a function synopsis indicating a variable number of arguments + element varargs { db.varargs.attlist, empty } +} +div { + db.group.paramdef.role.attribute = attribute role { text } + db.group.paramdef.choice.attribute = db.choice.opt.attribute + db.group.paramdef.attlist = + db.group.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.paramdef.choice.attribute? + db.group.paramdef = + + ## A group of parameters + element group { + db.group.paramdef.attlist, (db.paramdef | db.group.paramdef)+ + } +} +div { + db.paramdef.role.attribute = attribute role { text } + db.paramdef.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted to indicate that it is required. + "req" + db.paramdef.choice.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] + attribute choice { db.paramdef.choice.enumeration } + db.paramdef.attlist = + db.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.paramdef.choice.attribute? + db.paramdef = + + ## Information about a function parameter in a programming language + element paramdef { + db.paramdef.attlist, + (db._text + | db.initializer + | db.modifier + | db.type + | db.templatename + | db.parameter + | db.funcparams)* + } +} +div { + db.funcparams.role.attribute = attribute role { text } + db.funcparams.attlist = + db.funcparams.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcparams = + + ## Parameters for a function referenced through a function pointer in a synopsis + element funcparams { db.funcparams.attlist, db._text } +} +div { + db.classsynopsis.info = db._info.title.forbidden + db.classsynopsis.role.attribute = attribute role { text } + db.classsynopsis.class.enumeration = + + ## This is the synopsis of a class + "class" + | + ## This is the synopsis of an interface + "interface" + db.classsynopsis.class.attribute = + + ## Specifies the nature of the synopsis + attribute class { db.classsynopsis.class.enumeration } + db.classsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.classsynopsis.attlist = + db.classsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.classsynopsis.class.attribute? + & db.classsynopsis.packageref.attribute? + db.classsynopsis = + + ## The syntax summary for a class definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:classsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element classsynopsis { + db.classsynopsis.attlist, + db.classsynopsis.info, + db.classsynopsisinfo*, + db.templatename*, + db.oo.inlines, + (db.template + | db.ooexception + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis + | db.classsynopsisinfo)* + } +} +div { + db.classsynopsisinfo.role.attribute = attribute role { text } + db.classsynopsisinfo.attlist = + db.classsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.classsynopsisinfo = + + ## Information supplementing the contents of a classsynopsis + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:classsynopsisinfo" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element classsynopsisinfo { + db.classsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.ooclass.role.attribute = attribute role { text } + db.ooclass.attlist = + db.ooclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooclass = + + ## A class in an object-oriented programming language + element ooclass { + db.ooclass.attlist, + (db.package | db.modifier)*, + db.classname, + db.modifier* + } +} +div { + db.oointerface.role.attribute = attribute role { text } + db.oointerface.attlist = + db.oointerface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.oointerface = + + ## An interface in an object-oriented programming language + element oointerface { + db.oointerface.attlist, + (db.package | db.modifier)*, + db.interfacename, + db.modifier* + } +} +div { + db.ooexception.role.attribute = attribute role { text } + db.ooexception.attlist = + db.ooexception.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooexception = + + ## An exception in an object-oriented programming language + element ooexception { + db.ooexception.attlist, + (db.package | db.modifier)*, + db.exceptionname, + db.modifier* + } +} +db.modifier.xml.space.attribute = + + ## Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + attribute xml:space { + + ## Extra whitespace and line breaks must be preserved. + [ + # Ideally the definition of xml:space used on modifier would be + # different from the definition used on the verbatim elements. The + # verbatim elements forbid the use of xml:space="default" which + # wouldn't be a problem on modifier. But doing that causes the + # generated XSD schemas to be broken so I'm just reusing the existing + # definition for now. It won't be backwards incompatible to fix this + # problem in the future. + # | ## Extra whitespace and line breaks are not preserved. + # "default" + + ] + "preserve" + } +div { + db.modifier.role.attribute = attribute role { text } + db.modifier.attlist = + db.modifier.xml.space.attribute? + & db.modifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.modifier = + + ## Modifiers in a synopsis + element modifier { db.modifier.attlist, db._text } +} +div { + db.interfacename.role.attribute = attribute role { text } + db.interfacename.attlist = + db.interfacename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.interfacename = + + ## The name of an interface + element interfacename { db.interfacename.attlist, db._text } +} +div { + db.exceptionname.role.attribute = attribute role { text } + db.exceptionname.attlist = + db.exceptionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.exceptionname = + + ## The name of an exception + element exceptionname { db.exceptionname.attlist, db._text } +} +div { + db.fieldsynopsis.info = db._info.title.forbidden + db.fieldsynopsis.role.attribute = attribute role { text } + db.fieldsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.fieldsynopsis.attlist = + db.fieldsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.fieldsynopsis.packageref.attribute? + db.fieldsynopsis = + + ## The name of a field in a class definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:fieldsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element fieldsynopsis { + db.fieldsynopsis.attlist, + db.fieldsynopsis.info, + db.synopsisinfo*, + db.modifier*, + (db.type | db.templatename)*, + db.varname, + db.modifier*, + db.initializer?, + db.synopsisinfo* + } +} +div { + db.initializer.role.attribute = attribute role { text } + db.initializer.attlist = + db.initializer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.initializer.inlines = db._text | db.mathphrase | db.markup.inlines + db.initializer = + + ## The initializer for a fieldsynopsis + element initializer { + db.initializer.attlist, db.initializer.inlines* + } +} +div { + db.constructorsynopsis.info = db._info.title.forbidden + db.constructorsynopsis.role.attribute = attribute role { text } + db.constructorsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.constructorsynopsis.attlist = + db.constructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.constructorsynopsis.packageref.attribute? + db.constructorsynopsis = + + ## A syntax summary for a constructor + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:constructorsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element constructorsynopsis { + db.constructorsynopsis.attlist, + db.constructorsynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.methodname?, + ((db.methodparam | db.group.methodparam)+ | db.void?), + db.modifier*, + db.exceptionname*, + db.synopsisinfo* + } +} +div { + db.destructorsynopsis.info = db._info.title.forbidden + db.destructorsynopsis.role.attribute = attribute role { text } + db.destructorsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.destructorsynopsis.attlist = + db.destructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.destructorsynopsis.packageref.attribute? + db.destructorsynopsis = + + ## A syntax summary for a destructor + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:destructorsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element destructorsynopsis { + db.destructorsynopsis.attlist, + db.destructorsynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.methodname?, + ((db.methodparam | db.group.methodparam)+ | db.void?), + db.modifier*, + db.exceptionname*, + db.synopsisinfo* + } +} +div { + db.methodsynopsis.info = db._info.title.forbidden + db.methodsynopsis.role.attribute = attribute role { text } + db.methodsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.methodsynopsis.attlist = + db.methodsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.methodsynopsis.packageref.attribute? + db.methodsynopsis = + + ## A syntax summary for a method + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:methodsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element methodsynopsis { + db.methodsynopsis.attlist, + db.methodsynopsis.info, + db.synopsisinfo*, + (db.templatename | db.modifier)*, + (db.type | db.void)?, + db.methodname, + db.templatename*, + ((db.methodparam | db.group.methodparam)+ | db.void), + (db.exceptionname | db.modifier | db.templatename)*, + db.synopsisinfo* + } +} +div { + db.methodname.role.attribute = attribute role { text } + db.methodname.attlist = + db.methodname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.methodname = + + ## The name of a method + element methodname { db.methodname.attlist, db._text } +} +div { + db.methodparam.role.attribute = attribute role { text } + db.methodparam.rep.attribute = db.rep.attribute + db.methodparam.choice.attribute = db.choice.req.attribute + db.methodparam.attlist = + db.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.methodparam.rep.attribute? + & db.methodparam.choice.attribute? + db.methodparam = + + ## Parameters to a method + element methodparam { + db.methodparam.attlist, + (db.modifier | db.type | db.templatename)*, + ((db.parameter, db.initializer?) | db.funcparams), + db.modifier* + } +} +div { + db.group.methodparam.role.attribute = attribute role { text } + db.group.methodparam.choice.attribute = db.choice.opt.attribute + db.group.methodparam.attlist = + db.group.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.methodparam.choice.attribute? + db.group.methodparam = + + ## A group of method parameters + element group { + db.group.methodparam.attlist, + (db.methodparam | db.group.methodparam)+ + } +} +div { + db.varname.role.attribute = attribute role { text } + db.varname.attlist = + db.varname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varname = + + ## The name of a variable + element varname { db.varname.attlist, db._text } +} +div { + db.buildtarget.role.attribute = attribute role { text } + db.buildtarget.attlist = + db.buildtarget.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.buildtarget = + + ## Target of a build + element buildtarget { db.buildtarget.attlist, db._text } +} +div { + db.returnvalue.role.attribute = attribute role { text } + db.returnvalue.attlist = + db.returnvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.returnvalue = + + ## The value returned by a function + element returnvalue { db.returnvalue.attlist, db._text } +} +div { + db.type.role.attribute = attribute role { text } + db.type.class.enumeration = + + ## Combined type is union of nested types + "union" + | + ## Combined type is intersection of nested types + "intersection" + db.type.class.attribute = + + ## Specifies the way how are nested types combined together + attribute class { db.type.class.enumeration } + db.type.attlist = + db.type.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.type.class.attribute? + db.type = + + ## The classification of a value + element type { + db.type.attlist, (db._text | db.programming.inlines)* + } +} +div { + db.classname.role.attribute = attribute role { text } + db.classname.attlist = + db.classname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.classname = + + ## The name of a class, in the object-oriented programming sense + element classname { db.classname.attlist, db._text } +} +div { + db.templatename.role.attribute = attribute role { text } + db.templatename.attlist = + db.templatename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.templatename = + + ## The identifier for a template, in the generic programming sense + element templatename { db.templatename.attlist, db._text } +} +div { + db.template.role.attribute = attribute role { text } + db.template.attlist = + db.template.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.template = + + ## The definition of a template, in the generic programming sense + element template { + db.template.attlist, + (((db.modifier | db.type | db._text)*, + db.templatename, + (db.modifier | db.type | db._text)*) + | db.specializedtemplate) + } +} +div { + db.specializedtemplate.role.attribute = attribute role { text } + db.specializedtemplate.attlist = + db.specializedtemplate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.specializedtemplate = + + ## The specialization of a template identifier, in the generic programming sense + element specializedtemplate { + db.specializedtemplate.attlist, + (db.modifier | db.type | db._text)* + } +} +div { + db.packagesynopsis.info = db._info.title.forbidden + db.packagesynopsis.role.attribute = attribute role { text } + db.packagesynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.packagesynopsis.attlist = + db.packagesynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.packagesynopsis.packageref.attribute? + db.packagesynopsis = + + ## The syntax summary for a package definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:packagesynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element packagesynopsis { + db.packagesynopsis.attlist, + db.packagesynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.package, + db.modifier*, + (db.synopsis.blocks | db.synopsisinfo)* + } +} +div { + db.macroname.role.attribute = attribute role { text } + db.macroname.attlist = + db.macroname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macroname = + + ## The name of a macro (a code-generating function) + element macroname { db.macroname.attlist, db._text } +} +div { + db.macrosynopsis.info = db._info.title.forbidden + db.macrosynopsis.role.attribute = attribute role { text } + db.macrosynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.macrosynopsis.attlist = + db.macrosynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.macrosynopsis.packageref.attribute? + db.macrosynopsis = + + ## The syntax summary for a macro definition (code-generating function) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:macrosynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element macrosynopsis { + db.macrosynopsis.attlist, + db.macrosynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.macroname, + (db.package | db.modifier)*, + db.macroprototype+, + db.synopsisinfo* + } +} +div { + db.macroprototype.role.attribute = attribute role { text } + db.macroprototype.attlist = + db.macroprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macroprototype = + + ## The prototype of a macro (code-generating function) + element macroprototype { + db.macroprototype.attlist, + db.modifier*, + db.macrodef, + (db.void + | db.varargs + | ((db.paramdef | db.group.paramdef)+, db.varargs?)), + db.modifier* + } +} +div { + db.macrodef.role.attribute = attribute role { text } + db.macrodef.attlist = + db.macrodef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macrodef = + + ## A macro name and its return type + element macrodef { + db.macrodef.attlist, (db.type | db.templatename)*, db.macroname + } +} +div { + db.unionname.role.attribute = attribute role { text } + db.unionname.attlist = + db.unionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.unionname = + + ## The name of a union of types + element unionname { db.unionname.attlist, db._text } +} +div { + db.union.role.attribute = attribute role { text } + db.union.attlist = + db.union.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.union = + + ## The definition of a union of types, which may be more than a name + element union { db.union.attlist, db.type+ } +} +div { + db.unionsynopsis.info = db._info.title.forbidden + db.unionsynopsis.role.attribute = attribute role { text } + # N.B. the enumeration is explicitly identical to the enumeration + # on enumsynopsis by default. + db.unionsynopsis.ordered.attribute = + + ## Indicates how the value of a union is specified. + attribute ordered { db.enumsynopsis.ordered.enumeration } + db.unionsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.unionsynopsis.attlist = + db.unionsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.unionsynopsis.ordered.attribute? + & db.unionsynopsis.packageref.attribute? + db.unionsynopsis = + + ## The syntax summary for a union-of-types definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:unionsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element unionsynopsis { + db.unionsynopsis.attlist, + db.unionsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.unionname?, + db.union, + (db.package | db.modifier)*, + db.synopsisinfo* + } +} +div { + db.enumname.role.attribute = attribute role { text } + db.enumname.attlist = + db.enumname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumname = + + ## The name of an enumeration + element enumname { db.enumname.attlist, db._text } +} +div { + db.enumvalue.role.attribute = attribute role { text } + db.enumvalue.attlist = + db.enumvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumvalue = + + ## The value an enumerated type can take + element enumvalue { db.enumvalue.attlist, db._text } +} +div { + db.enumitemdescription.role.attribute = attribute role { text } + db.enumitemdescription.attlist = + db.enumitemdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumitemdescription = + + ## The description of a value an enumerated type can take + element enumitemdescription { + db.enumitemdescription.attlist, db.all.inlines* + } +} +div { + db.enumidentifier.role.attribute = attribute role { text } + db.enumidentifier.attlist = + db.enumidentifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumidentifier = + + ## The identifier of a value an enumerated type can take + element enumidentifier { db.enumidentifier.attlist, db._text } +} +div { + db.enumitem.role.attribute = attribute role { text } + db.enumitem.attlist = + db.enumitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumitem = + + ## A value an enumerated type can take and its description + element enumitem { + db.enumitem.attlist, + db.enumidentifier, + db.enumvalue*, + db.enumitemdescription? + } +} +div { + db.enumsynopsis.info = db._info.title.forbidden + db.enumsynopsis.role.attribute = attribute role { text } + db.enumsynopsis.ordered.enumeration = + + ## Value of enum is specified explicitly using enumvalue + "0" + | + ## Value of enum is inferred from its position + "1" + db.enumsynopsis.ordered.attribute = + + ## Indicates how the value of an enumeration is specified. + attribute ordered { db.enumsynopsis.ordered.enumeration } + db.enumsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.enumsynopsis.attlist = + db.enumsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.enumsynopsis.ordered.attribute? + & db.enumsynopsis.packageref.attribute? + db.enumsynopsis = + + ## The syntax summary for an enumerated-type definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:enumsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element enumsynopsis { + db.enumsynopsis.attlist, + db.enumsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + (db.enumname, db.modifier*)?, + db.enumitem+, + db.synopsisinfo* + } +} +div { + db.typedefname.role.attribute = attribute role { text } + db.typedefname.attlist = + db.typedefname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.typedefname = + + ## The name of a type alias + element typedefname { db.typedefname.attlist, db._text } +} +div { + db.typedefsynopsis.info = db._info.title.forbidden + db.typedefsynopsis.role.attribute = attribute role { text } + db.typedefsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.typedefsynopsis.attlist = + db.typedefsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.typedefsynopsis.packageref.attribute? + db.typedefsynopsis = + + ## The syntax summary for a type-alias definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:typedefsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element typedefsynopsis { + db.typedefsynopsis.attlist, + db.typedefsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.typedefname, + (db.package | db.modifier)*, + db.synopsisinfo* + } +} +div { + db.programlisting.role.attribute = attribute role { text } + db.programlisting.width.attribute = db.width.characters.attribute + db.programlisting.attlist = + db.programlisting.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.programlisting.width.attribute? + db.programlisting = + + ## A literal listing of all or part of a program + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:programlisting" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element programlisting { + db.programlisting.attlist, db.verbatim.contentmodel + } +} +db.admonition.blocks = + db.caution | db.danger | db.important | db.note | db.tip | db.warning +db.admonition.contentmodel = db._info.title.only, db.all.blocks+ +div { + db.caution.role.attribute = attribute role { text } + db.caution.attlist = + db.caution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caution = + + ## A note of caution + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:caution" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element caution { db.caution.attlist, db.admonition.contentmodel } +} +div { + db.danger.role.attribute = attribute role { text } + db.danger.attlist = + db.danger.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.danger = + + ## An admonition set off from the text indicating hazardous situation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:danger" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element danger { db.danger.attlist, db.admonition.contentmodel } +} +div { + db.important.role.attribute = attribute role { text } + db.important.attlist = + db.important.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.important = + + ## An admonition set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:important" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element important { + db.important.attlist, db.admonition.contentmodel + } +} +div { + db.note.role.attribute = attribute role { text } + db.note.attlist = + db.note.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.note = + + ## A message set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:note" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element note { db.note.attlist, db.admonition.contentmodel } +} +div { + db.tip.role.attribute = attribute role { text } + db.tip.attlist = + db.tip.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tip = + + ## A suggestion to the user, set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:tip" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element tip { db.tip.attlist, db.admonition.contentmodel } +} +div { + db.warning.role.attribute = attribute role { text } + db.warning.attlist = + db.warning.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.warning = + + ## An admonition set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:warning" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element warning { db.warning.attlist, db.admonition.contentmodel } +} +db.error.inlines = + db.errorcode | db.errortext | db.errorname | db.errortype +div { + db.errorcode.role.attribute = attribute role { text } + db.errorcode.attlist = + db.errorcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorcode = + + ## An error code + element errorcode { db.errorcode.attlist, db._text } +} +div { + db.errorname.role.attribute = attribute role { text } + db.errorname.attlist = + db.errorname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorname = + + ## An error name + element errorname { db.errorname.attlist, db._text } +} +div { + db.errortext.role.attribute = attribute role { text } + db.errortext.attlist = + db.errortext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortext = + + ## An error message. + element errortext { db.errortext.attlist, db._text } +} +div { + db.errortype.role.attribute = attribute role { text } + db.errortype.attlist = + db.errortype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortype = + + ## The classification of an error message + element errortype { db.errortype.attlist, db._text } +} +db.systemitem.inlines = db._text | db.co +div { + db.systemitem.class.enumeration = + + ## A daemon or other system process (syslogd) + "daemon" + | + ## A domain name (example.com) + "domainname" + | + ## An ethernet address (00:05:4E:49:FD:8E) + "etheraddress" + | + ## An event of some sort (SIGHUP) + "event" + | + ## An event handler of some sort (hangup) + "eventhandler" + | + ## A filesystem (ext3) + "filesystem" + | + ## A fully qualified domain name (my.example.com) + "fqdomainname" + | + ## A group name (wheel) + "groupname" + | + ## A network interface (eth0) + "interface" + | + ## An IP address (127.0.0.1) + "ipaddress" + | + ## A library (libncurses) + "library" + | + ## A macro + "macro" + | + ## A netmask (255.255.255.192) + "netmask" + | + ## A newsgroup (comp.text.xml) + "newsgroup" + | + ## An operating system name (Hurd) + "osname" + | + ## A process (gnome-cups-icon) + "process" + | + ## A protocol (ftp) + "protocol" + | + ## A resource + "resource" + | + ## A security context (a role, permission, or security token, for example) + "securitycontext" + | + ## A server (mail.example.com) + "server" + | + ## A service (ppp) + "service" + | + ## A system name (hephaistos) + "systemname" + | + ## A user name (ndw) + "username" + db.systemitem.class-enum.attribute = + + ## Identifies the nature of the system item + attribute class { db.systemitem.class.enumeration }? + db.systemitem.class-other.attribute = + + ## Identifies the nature of the non-standard system item + attribute otherclass { xsd:NMTOKEN } + db.systemitem.class-other.attributes = + + ## Identifies the kind of systemitemgraphic identifier + attribute class { + + ## Indicates that the system item is some 'other' kind. + "other" + } + & db.systemitem.class-other.attribute + db.systemitem.class.attribute = + db.systemitem.class-enum.attribute + | db.systemitem.class-other.attributes + db.systemitem.role.attribute = attribute role { text } + db.systemitem.attlist = + db.systemitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.systemitem.class.attribute? + db.systemitem = + + ## A system-related item or term + element systemitem { db.systemitem.attlist, db.systemitem.inlines* } +} +div { + db.option.role.attribute = attribute role { text } + db.option.attlist = + db.option.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.option = + + ## An option for a software command + element option { db.option.attlist, db._text } +} +div { + db.optional.role.attribute = attribute role { text } + db.optional.attlist = + db.optional.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.optional = + + ## Optional information + element optional { db.optional.attlist, (db._text | db.optional)* } +} +div { + db.property.role.attribute = attribute role { text } + db.property.attlist = + db.property.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.property = + + ## A unit of data associated with some part of a computer system + element property { db.property.attlist, db._text } +} +div { + db.topic.status.attribute = db.status.attribute + db.topic.role.attribute = attribute role { text } + db.topic.type.attribute = + + ## Identifies the topic type + attribute type { text } + db.topic.attlist = + db.topic.role.attribute? + & db.topic.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.topic.status.attribute? + db.topic.info = db._info.title.req + db.topic = + + ## A modular unit of documentation not part of any particular narrative flow + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:topic" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element topic { + db.topic.attlist, + db.topic.info, + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* + } +} +div { + db.any.other.attribute = attribute * - local:* { text } + db.xi.include.attlist = + attribute href { + xsd:anyURI { pattern = "[^#]+" } + }?, + [ a:defaultValue = "xml" ] attribute parse { "xml" | "text" }?, + attribute xpointer { text }?, + attribute fragid { text }?, + attribute set-xml-id { text }?, + attribute encoding { text }?, + attribute accept { text }?, + attribute accept-language { text }?, + db.any.other.attribute* + db.xi.include = + + ## An XInclude + element xi:include { db.xi.include.attlist, db.xi.fallback? } +} +div { + # The fallback element has no attributes + db.xi.fallback = + + ## An XInclude fallback + element xi:fallback { db.all.blocks+ | db.all.inlines+ | db._any* } +} +db._any = + element * - (db:* | its:*) { + (attribute * { text } + | text + | db._any)* + } +db._any_other.attribute = + + ## Any attribute in an other explicit namespace. + attribute * - (db:* | xml:* | xlink:* | trans:* | its:* | local:*) { + text + } +# Include base ITS schema + +## Version of ITS +its-version.type = xsd:string { pattern = "[0-9]+\.[0-9]+" } + +## The query language to be used for processing the rules +its-queryLanguage.type = "xpath" | "css" | text +its-absolute-selector.type = + + ## Absolute selector + string +its-relative-selector.type = + + ## Relative selector + string +its-xpath-expression.type = string +its-confidence.type = + xsd:double { minInclusive = "0" maxInclusive = "1" } + +## The Translate data category information to be attached to the current node +its-translate.type = + + ## The nodes need to be translated + "yes" + | + ## The nodes must not be translated + "no" +its-locNote.type = string + +## The type of localization note +its-locNoteType.type = + + ## Localization note is an alert + "alert" + | + ## Localization note is a description + "description" +its-locNoteRef.type = xsd:anyURI +its-termInfoRef.type = xsd:anyURI + +## Indicates a term locally +its-term.type = + + ## The value 'yes' means that this is a term + "yes" + | + ## The value 'no' means that this is not a term + "no" +its-termConfidence.type = its-confidence.type + +## The text direction for the context +its-dir.type = + + ## Left-to-right text + "ltr" + | + ## Right-to-left text + "rtl" + | + ## Left-to-right override + "lro" + | + ## Right-to-left override + "rlo" + +## States whether current context is regarded as "within text" +its-withinText.type = + + ## The element and its content are part of the flow of its parent element + "yes" + | + ## The element splits the text flow of its parent element and its content is an independent text flow + "no" + | + ## The element is part of the flow of its parent element, its content is an independent flow + "nested" + +## A comma separated list of mappings between values in the content +## and workflow specific values. The values may contain spaces; in +## that case they MUST be delimited by quotation marks. +its-domainMapping.type = string +its-taConfidence.type = its-confidence.type +its-taClassRefPointer.type = its-relative-selector.type +its-taClassRef.type = xsd:anyURI +its-taIdentRef.type = xsd:anyURI +its-taIdent.type = string +its-taSource.type = string +its-taIdentPointer.type = its-relative-selector.type +its-taIdentRefPointer.type = its-relative-selector.type +its-taSourcePointer.type = its-relative-selector.type +its-localeFilterList.type = string +its-localeFilterType.type = "include" | "exclude" +its-provenanceRecordsRef.type = xsd:anyURI +its-person.type = string +its-personRef.type = xsd:anyURI +its-org.type = string +its-orgRef.type = xsd:anyURI +its-tool.type = string +its-toolRef.type = xsd:anyURI +its-revPerson.type = string +its-revPersonRef.type = xsd:anyURI +its-revOrg.type = string +its-revOrgRef.type = xsd:anyURI +its-revTool.type = string +its-revToolRef.type = xsd:anyURI +its-provRef.type = list { xsd:anyURI+ } +its-locQualityIssuesRef.type = xsd:anyURI +its-locQualityIssueType.type = + "terminology" + | "mistranslation" + | "omission" + | "untranslated" + | "addition" + | "duplication" + | "inconsistency" + | "grammar" + | "legal" + | "register" + | "locale-specific-content" + | "locale-violation" + | "style" + | "characters" + | "misspelling" + | "typographical" + | "formatting" + | "inconsistent-entities" + | "numbers" + | "markup" + | "pattern-problem" + | "whitespace" + | "internationalization" + | "length" + | "non-conformance" + | "uncategorized" + | "other" +its-locQualityIssueComment.type = string +its-locQualityIssueSeverity.type = + xsd:double { minInclusive = "0" maxInclusive = "100" } +its-locQualityIssueProfileRef.type = xsd:anyURI +its-locQualityIssueEnabled.type = "yes" | "no" +its-locQualityRatingScore.type = + xsd:double { minInclusive = "0" maxInclusive = "100" } +its-locQualityRatingVote.type = xsd:integer +its-locQualityRatingScoreThreshold.type = + xsd:double { minInclusive = "0" maxInclusive = "100" } +its-locQualityRatingVoteThreshold.type = xsd:integer +its-locQualityRatingProfileRef.type = xsd:anyURI +its-mtConfidence.type = its-confidence.type +its-allowedCharacters.type = string +its-storageSize.type = xsd:nonNegativeInteger +its-storageEncoding.type = string +its-lineBreakType.type = "cr" | "lf" | "crlf" +its-annotatorsRef.type = string +its-attribute.translate = attribute its:translate { its-translate.type } +its-attribute.translate.nons = + attribute translate { its-translate.type } +its-attribute.dir.nons = attribute dir { its-dir.type } +its-attribute.locNote = attribute its:locNote { its-locNote.type } +its-attribute.locNote.nons = attribute locNote { its-locNote.type } +its-attribute.locNoteType = + attribute its:locNoteType { its-locNoteType.type } +its-attribute.locNoteType.nons = + attribute locNoteType { its-locNoteType.type } +its-attribute.locNoteRef = + attribute its:locNoteRef { its-locNoteRef.type } +its-attribute.locNoteRef.nons = + attribute locNoteRef { its-locNoteRef.type } +its-attribute.termInfoRef = + attribute its:termInfoRef { its-termInfoRef.type } +its-attribute.termInfoRef.nons = + attribute termInfoRef { its-termInfoRef.type } +its-attribute.term = attribute its:term { its-term.type } +its-attribute.term.nons = attribute term { its-term.type } +its-attribute.termConfidence = + attribute its:termConfidence { its-termConfidence.type } +its-attribute.termConfidence.nons = + attribute termConfidence { its-termConfidence.type } +its-attribute.withinText = + attribute its:withinText { its-withinText.type } +its-attribute.withinText.nons = + attribute withinText { its-withinText.type } +its-attribute.domainMapping.nons = + attribute domainMapping { its-domainMapping.type } +its-attribute.taConfidence = + attribute its:taConfidence { its-taConfidence.type } +its-attribute.taConfidence.nons = + attribute taConfidence { its-taConfidence.type } +its-attribute.taClassRef = + attribute its:taClassRef { its-taClassRef.type } +its-attribute.taClassRef.nons = + attribute taClassRef { its-taClassRef.type } +its-attribute.taIdent = attribute its:taIdent { its-taIdent.type } +its-attribute.taIdent.nons = attribute taIdent { its-taIdent.type } +its-attribute.taIdentRef = + attribute its:taIdentRef { its-taIdentRef.type } +its-attribute.taIdentRef.nons = + attribute taIdentRef { its-taIdentRef.type } +its-attribute.taSource = attribute its:taSource { its-taSource.type } +its-attribute.taSource.nons = attribute taSource { its-taSource.type } +its-attribute.localeFilterList = + attribute its:localeFilterList { its-localeFilterList.type } +its-attribute.localeFilterList.nons = + attribute localeFilterList { its-localeFilterList.type } +its-attribute.localeFilterType = + attribute its:localeFilterType { its-localeFilterType.type } +its-attribute.localeFilterType.nons = + attribute localeFilterType { its-localeFilterType.type } +its-attribute.person = attribute its:person { its-person.type } +its-attribute.person.nons = attribute person { its-person.type } +its-attribute.personRef = attribute its:personRef { its-personRef.type } +its-attribute.personRef.nons = + attribute personRef { its-personRef.type } +its-attribute.org = attribute its:org { its-org.type } +its-attribute.org.nons = attribute org { its-org.type } +its-attribute.orgRef = attribute its:orgRef { its-orgRef.type } +its-attribute.orgRef.nons = attribute orgRef { its-orgRef.type } +its-attribute.tool = attribute its:tool { its-tool.type } +its-attribute.tool.nons = attribute tool { its-tool.type } +its-attribute.toolRef = attribute its:toolRef { its-toolRef.type } +its-attribute.toolRef.nons = attribute toolRef { its-toolRef.type } +its-attribute.revPerson = attribute its:revPerson { its-revPerson.type } +its-attribute.revPerson.nons = + attribute revPerson { its-revPerson.type } +its-attribute.revPersonRef = + attribute its:revPersonRef { its-revPersonRef.type } +its-attribute.revPersonRef.nons = + attribute revPersonRef { its-revPersonRef.type } +its-attribute.revOrg = attribute its:revOrg { its-revOrg.type } +its-attribute.revOrg.nons = attribute revOrg { its-revOrg.type } +its-attribute.revOrgRef = attribute its:revOrgRef { its-revOrgRef.type } +its-attribute.revOrgRef.nons = + attribute revOrgRef { its-revOrgRef.type } +its-attribute.revTool = attribute its:revTool { its-revTool.type } +its-attribute.revTool.nons = attribute revTool { its-revTool.type } +its-attribute.revToolRef = + attribute its:revToolRef { its-revToolRef.type } +its-attribute.revToolRef.nons = + attribute revToolRef { its-revToolRef.type } +its-attribute.provRef = attribute its:provRef { its-provRef.type } +its-attribute.provRef.nons = attribute provRef { its-provRef.type } +its-attribute.provenanceRecordsRef = + attribute its:provenanceRecordsRef { its-provenanceRecordsRef.type } +its-attribute.provenanceRecordsRef.nons = + attribute provenanceRecordsRef { its-provenanceRecordsRef.type } +its-attribute.locQualityIssuesRef = + attribute its:locQualityIssuesRef { its-locQualityIssuesRef.type } +its-attribute.locQualityIssuesRef.nons = + attribute locQualityIssuesRef { its-locQualityIssuesRef.type } +its-attribute.locQualityIssueType = + attribute its:locQualityIssueType { its-locQualityIssueType.type } +its-attribute.locQualityIssueType.nons = + attribute locQualityIssueType { its-locQualityIssueType.type } +its-attribute.locQualityIssueComment = + attribute its:locQualityIssueComment { + its-locQualityIssueComment.type + } +its-attribute.locQualityIssueComment.nons = + attribute locQualityIssueComment { its-locQualityIssueComment.type } +its-attribute.locQualityIssueSeverity = + attribute its:locQualityIssueSeverity { + its-locQualityIssueSeverity.type + } +its-attribute.locQualityIssueSeverity.nons = + attribute locQualityIssueSeverity { its-locQualityIssueSeverity.type } +its-attribute.locQualityIssueProfileRef = + attribute its:locQualityIssueProfileRef { + its-locQualityIssueProfileRef.type + } +its-attribute.locQualityIssueProfileRef.nons = + attribute locQualityIssueProfileRef { + its-locQualityIssueProfileRef.type + } +its-attribute.locQualityIssueEnabled = + attribute its:locQualityIssueEnabled { + its-locQualityIssueEnabled.type + } +its-attribute.locQualityIssueEnabled.nons = + attribute locQualityIssueEnabled { its-locQualityIssueEnabled.type } +its-attribute.locQualityRatingScore = + attribute its:locQualityRatingScore { its-locQualityRatingScore.type } +its-attribute.locQualityRatingScore.nons = + attribute locQualityRatingScore { its-locQualityRatingScore.type } +its-attribute.locQualityRatingVote = + attribute its:locQualityRatingVote { its-locQualityRatingVote.type } +its-attribute.locQualityRatingVote.nons = + attribute locQualityRatingVote { its-locQualityRatingVote.type } +its-attribute.locQualityRatingScoreThreshold = + attribute its:locQualityRatingScoreThreshold { + its-locQualityRatingScoreThreshold.type + } +its-attribute.locQualityRatingScoreThreshold.nons = + attribute locQualityRatingScoreThreshold { + its-locQualityRatingScoreThreshold.type + } +its-attribute.locQualityRatingVoteThreshold = + attribute its:locQualityRatingVoteThreshold { + its-locQualityRatingVoteThreshold.type + } +its-attribute.locQualityRatingVoteThreshold.nons = + attribute locQualityRatingVoteThreshold { + its-locQualityRatingVoteThreshold.type + } +its-attribute.locQualityRatingProfileRef = + attribute its:locQualityRatingProfileRef { + its-locQualityRatingProfileRef.type + } +its-attribute.locQualityRatingProfileRef.nons = + attribute locQualityRatingProfileRef { + its-locQualityRatingProfileRef.type + } +its-attribute.mtConfidence = + attribute its:mtConfidence { its-mtConfidence.type } +its-attribute.mtConfidence.nons = + attribute mtConfidence { its-mtConfidence.type } +its-attribute.allowedCharacters = + attribute its:allowedCharacters { its-allowedCharacters.type } +its-attribute.allowedCharacters.nons = + attribute allowedCharacters { its-allowedCharacters.type } +its-attribute.storageSize = + attribute its:storageSize { its-storageSize.type } +its-attribute.storageSize.nons = + attribute storageSize { its-storageSize.type } +its-attribute.storageEncoding = + attribute its:storageEncoding { its-storageEncoding.type } +its-attribute.storageEncoding.nons = + attribute storageEncoding { its-storageEncoding.type } +its-attribute.lineBreakType = + attribute its:lineBreakType { its-lineBreakType.type } +its-attribute.lineBreakType.nons = + attribute lineBreakType { its-lineBreakType.type } +its-attribute.annotatorsRef = + attribute its:annotatorsRef { its-annotatorsRef.type } +its-attribute.annotatorsRef.nons = + attribute annotatorsRef { its-annotatorsRef.type } +its-attribute.version = + + ## Version of ITS + attribute its:version { its-version.type } +its-attribute.version.nons = + + ## Version of ITS + attribute version { its-version.type } +its-attribute.queryLanguage.nons = + attribute queryLanguage { its-queryLanguage.type } +its-attribute.xlink.href = attribute xlink:href { xsd:anyURI } +its-attribute.xlink.type = attribute xlink:type { "simple" } +its-attribute.selector = + attribute selector { its-absolute-selector.type } +its-foreign-attribute = attribute * - local:* { text } +its-foreign-no-xml-id-attribute = + attribute * - (local:* | xml:id) { text } +its-foreign-no-xlink-attribute = + attribute * - (local:* | xlink:*) { text } +its-any-attribute = attribute * { text } +its-any-element = + element * { (its-any-attribute* | text | its-any-element)* } +its-rules = + + ## Container for global rules + element its:rules { its-rules.content, its-rules.attributes } +its-rules.content = + its-param*, + (its-translateRule + | its-locNoteRule + | its-termRule + | its-dirRule + | its-langRule + | its-withinTextRule + | its-domainRule + | its-textAnalysisRule + | its-localeFilterRule + | its-provRule + | its-locQualityIssueRule + | its-mtConfidenceRule + | its-externalResourceRefRule + | its-targetPointerRule + | its-idValueRule + | its-preserveSpaceRule + | its-allowedCharactersRule + | its-storageSizeRule + | its-foreign-element)* +its-rules.attributes = + its-attribute.version.nons, + (its-attribute.xlink.href, its-attribute.xlink.type?)?, + its-attribute.queryLanguage.nons?, + its-foreign-no-xlink-attribute* +its-param = + + ## Declaration of variable used in selectors + element its:param { its-param.content, its-param.attributes } +its-param.content = text +its-param.attributes = + attribute name { xsd:string }, + its-foreign-attribute* +its-local.attributes = + its-attribute.translate? + & its-attribute.dir? + & ((its-attribute.locNote | its-attribute.locNoteRef), + its-attribute.locNoteType?)? + & (its-attribute.term, + its-attribute.termInfoRef?, + its-attribute.termConfidence?)? + & its-attribute.withinText? + & (its-attribute.taConfidence? + & (its-attribute.taClassRef? + & ((its-attribute.taSource, its-attribute.taIdent) + | its-attribute.taIdentRef)?))? + & (its-attribute.localeFilterList, its-attribute.localeFilterType?)? + & (((its-attribute.person | its-attribute.personRef)? + & (its-attribute.org | its-attribute.orgRef)? + & (its-attribute.tool | its-attribute.toolRef)? + & (its-attribute.revPerson | its-attribute.revPersonRef)? + & (its-attribute.revOrg | its-attribute.revOrgRef)? + & (its-attribute.revTool | its-attribute.revToolRef)? + & its-attribute.provRef?) + | its-attribute.provenanceRecordsRef)? + & (its-attribute.locQualityIssuesRef + | ((its-attribute.locQualityIssueType? + & its-attribute.locQualityIssueComment?) + & its-attribute.locQualityIssueSeverity? + & its-attribute.locQualityIssueProfileRef? + & its-attribute.locQualityIssueEnabled?))? + & (((its-attribute.locQualityRatingScore, + its-attribute.locQualityRatingScoreThreshold?) + | (its-attribute.locQualityRatingVote, + its-attribute.locQualityRatingVoteThreshold?)), + its-attribute.locQualityRatingProfileRef?)? + & its-attribute.mtConfidence? + & its-attribute.allowedCharacters? + & (its-attribute.storageSize, + its-attribute.storageEncoding?, + its-attribute.lineBreakType?)? + & its-attribute.annotatorsRef? +its-local.nons.attributes = + its-attribute.translate.nons? + & its-attribute.dir.nons? + & ((its-attribute.locNote.nons | its-attribute.locNoteRef.nons), + its-attribute.locNoteType.nons?)? + & (its-attribute.term.nons, + its-attribute.termInfoRef.nons?, + its-attribute.termConfidence.nons?)? + & its-attribute.withinText.nons? + & (its-attribute.taConfidence.nons? + & (its-attribute.taClassRef.nons? + & ((its-attribute.taSource.nons, its-attribute.taIdent.nons) + | its-attribute.taIdentRef.nons)?))? + & (its-attribute.localeFilterList.nons, + its-attribute.localeFilterType.nons?)? + & (((its-attribute.person.nons | its-attribute.personRef.nons)? + & (its-attribute.org.nons | its-attribute.orgRef.nons)? + & (its-attribute.tool.nons | its-attribute.toolRef.nons)? + & (its-attribute.revPerson.nons + | its-attribute.revPersonRef.nons)? + & (its-attribute.revOrg.nons | its-attribute.revOrgRef.nons)? + & (its-attribute.revTool.nons | its-attribute.revToolRef.nons)? + & its-attribute.provRef.nons?) + | its-attribute.provenanceRecordsRef.nons)? + & (its-attribute.locQualityIssuesRef.nons + | ((its-attribute.locQualityIssueType.nons? + & its-attribute.locQualityIssueComment.nons?) + & its-attribute.locQualityIssueSeverity.nons? + & its-attribute.locQualityIssueProfileRef.nons? + & its-attribute.locQualityIssueEnabled.nons?))? + & (((its-attribute.locQualityRatingScore.nons, + its-attribute.locQualityRatingScoreThreshold.nons?) + | (its-attribute.locQualityRatingVote.nons, + its-attribute.locQualityRatingVoteThreshold.nons?)), + its-attribute.locQualityRatingProfileRef.nons?)? + & its-attribute.mtConfidence.nons? + & its-attribute.allowedCharacters.nons? + & (its-attribute.storageSize.nons, + its-attribute.storageEncoding.nons?, + its-attribute.lineBreakType.nons?)? + & its-attribute.annotatorsRef.nons? +its-span = + + ## Inline element to contain ITS information + element its:span { its-span.content, its-span.attributes } +its-span.content = (text | its-span)* +its-span.attributes = its-local.nons.attributes & its-foreign-attribute* +its-translateRule = + + ## Rule about the Translate data category + element its:translateRule { + its-translateRule.content, its-translateRule.attributes + } +its-translateRule.content = empty +its-translateRule.attributes = + its-attribute.selector, + its-attribute.translate.nons, + its-foreign-attribute* +its-locNoteRule = + + ## Rule about the Localization Note data category + element its:locNoteRule { + its-attribute.selector, + its-attribute.locNoteType.nons, + (its-locNote + | its-attribute.locNotePointer.nons + | its-attribute.locNoteRef.nons + | its-attribute.locNoteRefPointer.nons), + its-foreign-attribute* + } +its-attribute.locNotePointer.nons = + attribute locNotePointer { its-relative-selector.type } +its-attribute.locNoteRefPointer.nons = + attribute locNoteRefPointer { its-relative-selector.type } +its-locNote = + + ## Localization note + element its:locNote { its-locNote.content, its-locNote.attributes } +its-locNote.content = (text | its-span)* +its-locNote.attributes = + its-local.nons.attributes, its-foreign-attribute* +its-termRule = + + ## Rule about the Terminology data category + element its:termRule { its-termRule.content, its-termRule.attributes } +its-termRule.content = empty +its-termRule.attributes = + its-attribute.selector, + its-attribute.term.nons, + (its-attribute.termInfoPointer.nons + | its-attribute.termInfoRef.nons + | its-attribute.termInfoRefPointer.nons)?, + its-foreign-attribute* +its-attribute.termInfoPointer.nons = + attribute termInfoPointer { its-relative-selector.type } +its-attribute.termInfoRefPointer.nons = + attribute termInfoRefPointer { its-relative-selector.type } +its-dirRule = + + ## Rule about the Directionality data category + element its:dirRule { its-dirRule.content, its-dirRule.attributes } +its-dirRule.content = empty +its-dirRule.attributes = + its-attribute.selector, its-attribute.dir.nons, its-foreign-attribute* +its-langRule = + + ## Rule about the Language Information data category + element its:langRule { its-langRule.content, its-langRule.attributes } +its-langRule.content = empty +its-langRule.attributes = + its-attribute.selector, + its-attribute.langPointer.nons, + its-foreign-attribute* +its-attribute.langPointer.nons = + attribute langPointer { its-relative-selector.type } +its-withinTextRule = + + ## Rule about the Elements Within Text data category + element its:withinTextRule { + its-withinTextRule.content, its-withinTextRule.attributes + } +its-withinTextRule.content = empty +its-withinTextRule.attributes = + its-attribute.selector, + its-attribute.withinText.nons, + its-foreign-attribute* +its-domainRule = + + ## Rule about the Domain data category + element its:domainRule { + its-domainRule.content, its-domainRule.attributes + } +its-domainRule.content = empty +its-domainRule.attributes = + its-attribute.selector, + its-attribute.domainPointer.nons, + its-attribute.domainMapping.nons?, + its-foreign-attribute* +its-attribute.domainPointer.nons = + attribute domainPointer { its-relative-selector.type } +its-textAnalysisRule = + + ## Rule about the Disambiguation data category + element its:textAnalysisRule { + its-textAnalysisRule.content, its-textAnalysisRule.attributes + } +its-textAnalysisRule.content = empty +its-textAnalysisRule.attributes = + its-attribute.selector, + its-attribute.taClassRefPointer.nons?, + ((its-attribute.taSourcePointer.nons, + its-attribute.taIdentPointer.nons) + | its-attribute.taIdentRefPointer.nons)?, + its-foreign-attribute* +its-attribute.taClassRefPointer.nons = + attribute taClassRefPointer { its-taClassRefPointer.type } +its-attribute.taIdentPointer.nons = + attribute taIdentPointer { its-taIdentPointer.type } +its-attribute.taSourcePointer.nons = + attribute taSourcePointer { its-taSourcePointer.type } +its-attribute.taIdentRefPointer.nons = + attribute taIdentRefPointer { its-taIdentRefPointer.type } +its-localeFilterRule = + + ## Rule about the LocaleFilter data category + element its:localeFilterRule { + its-localeFilterRule.content, its-localeFilterRule.attributes + } +its-localeFilterRule.content = empty +its-localeFilterRule.attributes = + its-attribute.selector, + its-attribute.localeFilterList.nons, + its-attribute.localeFilterType.nons?, + its-foreign-attribute* +its-provRule = + + ## Rule about the Provenance data category + element its:provRule { its-provRule.content, its-provRule.attributes } +its-provRule.content = empty +its-provRule.attributes = + its-attribute.selector, + its-attribute.provenanceRecordsRefPointer.nons, + its-foreign-attribute* +its-attribute.provenanceRecordsRefPointer.nons = + attribute provenanceRecordsRefPointer { its-relative-selector.type } +its-externalResourceRefRule = + + ## Rule about the External Resource data category + element its:externalResourceRefRule { + its-externalResourceRefRule.content, + its-externalResourceRefRule.attributes + } +its-externalResourceRefRule.content = empty +its-externalResourceRefRule.attributes = + its-attribute.selector, + its-attribute.externalResourceRefPointer.nons, + its-foreign-attribute* +its-attribute.externalResourceRefPointer.nons = + attribute externalResourceRefPointer { its-relative-selector.type } +its-targetPointerRule = + + ## Rule about the Target Pointer data category + element its:targetPointerRule { + its-targetPointerRule.content, its-targetPointerRule.attributes + } +its-targetPointerRule.content = empty +its-targetPointerRule.attributes = + its-attribute.selector, + its-attribute.targetPointer.nons, + its-foreign-attribute* +its-attribute.targetPointer.nons = + attribute targetPointer { its-relative-selector.type } +its-idValueRule = + + ## Rule about the Id Value data category + element its:idValueRule { + its-idValueRule.content, its-idValueRule.attributes + } +its-idValueRule.content = empty +its-idValueRule.attributes = + its-attribute.selector, + its-attribute.idValue.nons, + its-foreign-attribute* +its-attribute.idValue.nons = + attribute idValue { its-xpath-expression.type } +its-preserveSpaceRule = + + ## Rule about the Preserve Space data category + element its:preserveSpaceRule { + its-preserveSpaceRule.content, its-preserveSpaceRule.attributes + } +its-preserveSpaceRule.content = empty +its-preserveSpaceRule.attributes = + its-attribute.selector, + its-attribute.space.nons, + its-foreign-attribute* +its-attribute.space.nons = attribute space { "default" | "preserve" } +its-locQualityIssueRule = + + ## Rule about the Localization Quality Issue data category + element its:locQualityIssueRule { + its-locQualityIssueRule.content, its-locQualityIssueRule.attributes + } +its-locQualityIssueRule.content = empty +its-locQualityIssueRule.attributes = + its-attribute.selector, + ((its-attribute.locQualityIssuesRef.nons + | its-attribute.locQualityIssuesRefPointer.nons) + | ((its-attribute.locQualityIssueType.nons + | its-attribute.locQualityIssueComment.nons)+, + its-attribute.locQualityIssueSeverity.nons?, + its-attribute.locQualityIssueProfileRef.nons?, + its-attribute.locQualityIssueEnabled.nons?)), + its-foreign-attribute* +its-attribute.locQualityIssuesRefPointer.nons = + attribute locQualityIssuesRefPointer { its-relative-selector.type } +its-mtConfidenceRule = + + ## Rule about the MT Confidence data category + element its:mtConfidenceRule { + its-mtConfidenceRule.content, its-mtConfidenceRule.attributes + } +its-mtConfidenceRule.content = empty +its-mtConfidenceRule.attributes = + its-attribute.selector, + its-attribute.mtConfidence.nons, + its-foreign-attribute* +its-allowedCharactersRule = + + ## Rule about the Allowed Characters data category + element its:allowedCharactersRule { + its-allowedCharactersRule.content, + its-allowedCharactersRule.attributes + } +its-allowedCharactersRule.content = empty +its-allowedCharactersRule.attributes = + its-attribute.selector, + (its-attribute.allowedCharacters.nons + | its-attribute.allowedCharactersPointer.nons), + its-foreign-attribute* +its-attribute.allowedCharactersPointer.nons = + attribute allowedCharactersPointer { its-relative-selector.type } +its-storageSizeRule = + + ## Rule about the Allowed Characters data category + element its:storageSizeRule { + its-storageSizeRule.content, its-storageSizeRule.attributes + } +its-storageSizeRule.content = empty +its-storageSizeRule.attributes = + its-attribute.selector, + (its-attribute.storageSize.nons + | its-attribute.storageSizePointer.nons), + (its-attribute.storageEncoding.nons + | its-attribute.storageEncodingPointer.nons)?, + its-attribute.lineBreakType.nons?, + its-foreign-attribute* +its-attribute.storageSizePointer.nons = + attribute storageSizePointer { its-relative-selector.type } +its-attribute.storageEncodingPointer.nons = + attribute storageEncodingPointer { its-relative-selector.type } +its-standoff = its-provenanceRecords | its-locQualityIssues +its-provenanceRecords = + + ## Standoff markup for Provenance data category + element its:provenanceRecords { + its-provenanceRecord+, + attribute xml:id { xsd:ID }, + its-attribute.version.nons?, + its-foreign-no-xml-id-attribute* + } +its-provenanceRecord = + + ## Provenance record used in Provenance standoff markup + element its:provenanceRecord { its-provenanceRecord.attributes } +its-provenanceRecord.attributes = + (its-attribute.person.nons | its-attribute.personRef.nons)? + & (its-attribute.org.nons | its-attribute.orgRef.nons)? + & (its-attribute.tool.nons | its-attribute.toolRef.nons)? + & (its-attribute.revPerson.nons | its-attribute.revPersonRef.nons)? + & (its-attribute.revOrg.nons | its-attribute.revOrgRef.nons)? + & (its-attribute.revTool.nons | its-attribute.revToolRef.nons)? + & its-attribute.provRef.nons? + & its-foreign-attribute* +its-locQualityIssues = + + ## Standoff markup for Localization Quality Issue data category + element its:locQualityIssues { + its-locQualityIssue+, + attribute xml:id { xsd:ID }, + its-attribute.version.nons?, + its-foreign-no-xml-id-attribute* + } +its-locQualityIssue = + + ## Issue recorded in Localization Quality standoff markup + element its:locQualityIssue { its-locQualityIssue.attributes } +its-locQualityIssue.attributes = + its-attribute.locQualityIssueType.nons? + & its-attribute.locQualityIssueComment.nons? + & its-attribute.locQualityIssueSeverity.nons? + & its-attribute.locQualityIssueProfileRef.nons? + & its-attribute.locQualityIssueEnabled.nons? + & its-foreign-attribute* +its-attribute.dir = empty +its-foreign-element = + element * - its:* { + (its-foreign-no-xml-id-attribute* | text | its-foreign-element)* + } +# Add local ITS attributes to all DocBook elements + +# Allow its:rules inside info element diff --git a/catalog/docbook5.2/rng/dbitsxi.rng b/catalog/docbook5.2/rng/dbitsxi.rng new file mode 100755 index 0000000..709a211 --- /dev/null +++ b/catalog/docbook5.2/rng/dbitsxi.rng @@ -0,0 +1,20575 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Any attribute, including any attribute in any namespace + + + +
+ + + Designates the computer or chip architecture to which the element applies + + + + + Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + + + + + provides a standard place for application-specific effectivity + + + + + Indicates standards conformance characteristics of the element + + + + + Indicates the operating system to which the element is applicable + + + + + Indicates the editorial revision to which the element belongs + + + + + Indicates something about the security level associated with the element to which it applies + + + + + Indicates the level of user experience for which the element applies + + + + + Indicates the computer vendor to which the element applies + + + + + Indicates the word size (width in bits) of the computer architecture to which the element applies + + + + + Indicates the output format (for example, print or epub) to which the element applies + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Points to the element whose content is to be used as the text of the link + + + + + + Points to an internal link target by identifying the value of its xml:id attribute + + + + + + Points to one or more internal link targets by identifying the value of their xml:id attributes + + + + + + Identifies a link target with a URI + + + + + + Identifies the XLink link type + simple + An XLink simple link type + + + + + Identifies the XLink role of the link + + + + + + Identifies the XLink arcrole of the link + + + + + + Identifies the XLink title of the link + + + + + new + An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + replace + An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. + embed + An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + other + The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior. + none + The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + + + + + Identifies the XLink show behavior of the link + + + + + + onLoad + An application should traverse to the ending resource immediately on loading the starting resource. + onRequest + An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + other + The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior. + none + The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + + + + + Identifies the XLink actuate behavior of the link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Identifies the unique ID value of the element + + + + + + Specifies the DocBook version of the element and its descendants + + + + + Specifies the natural language of the element and its descendants + + + + + Specifies the base URI of the element and its descendants + + + + + + Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + + + + + Provides the text that is to be generated for a cross reference to the element + + + + + Specifies a keyword or keywords identifying additional style information + + + + + changed + The element has been changed. + added + The element is new (has been added to the document). + deleted + The element has been deleted. + off + Explicitly turns off revision markup for this element. + + + + + Identifies the revision status of the element + + + + + + ltr + Left-to-right text + rtl + Right-to-left text + lro + Left-to-right override + rlo + Right-to-left override + + + + + Identifies the direction of text in an element + + + + + + The RDFa Lite vocab + + + + + + The RDFa Lite typeof + + + + + The RDFa Lite property + + + + + The RDFa Lite resource + + + + + The RDFa Lite prefix + + + + + + + + + + + + + + + + + + + + + + + + none + No ID fixup strategy + suffix + ID fixup by concatenating suffixes + auto + ID fixup by creating unique values + + + + + The transclusion ID fixup strategy + + + + + + The transclusion suffix to use when the suffix ID fixup strategy is employed + + Suffix fixup must be specified + + If a suffix is specified, suffix ID fixup must also be specified. + + + + + + + user + No link scope adjustments are made + local + The link scopes are adjusted with the suffix property + near + The link scopes are adjusted based on proximity + global + The link scopes are adjusted based on document order + + + + + The transclusion link scope adjustment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the format of the data + + + + + Indentifies the location of the data by URI + + + + Identifies the location of the data by external identifier (entity name) + + + + + + + continues + Line numbering continues from the immediately preceding element with the same name. + restarts + Line numbering restarts (begins at 1, usually). + + + + + Determines whether line numbering continues from the previous element or restarts + + + + + + numbered + Lines are numbered. + unnumbered + Lines are not numbered. + + + + + Determines whether lines are numbered + + + + + + Specifies the initial line number + + + + + + Identifies the language (i.e. programming language) of the verbatim content + + + + + Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not + preserve + Whitespace must be preserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies an identifying string for presentation purposes + + + + + Specifies the width (in characters) of the element + + + + + + compact + The spacing should be "compact". + normal + The spacing should be "normal". + + + + + Specifies (a hint about) the spacing of the content + + + + + + 0 + The element should be rendered in the current text flow (with the flow column width). + 1 + The element should be rendered across the full text page. + + + + + Indicates if the element is rendered across the column or the page + + + + + + Identifies the language (i.e. programming language) of the content + + + + + optional + The content describes an optional step or steps. + required + The content describes a required step or steps. + + + + + Specifies if the content is required or optional + + + + + + Specifies style information to be used when rendering the float + + + + + Specifies the width of the element + + + + + Specifies the depth of the element + + + + + Specifies the width of the content rectangle + + + + + Specifies the depth of the content rectangle + + + + + 0 + False (do not scale-to-fit; anamorphic scaling may occur) + 1 + True (scale-to-fit; anamorphic scaling is forbidden) + + + + + Specifies the scaling factor + + + + + + Specifies a classid for a media object player + + + + + Specifies the autoplay setting for a media object player + + + + + center + Centered horizontally + char + Aligned horizontally on the specified character + justify + Fully justified (left and right margins or edges) + left + Left aligned + right + Right aligned + + + + + bottom + Aligned on the bottom of the region + middle + Centered vertically + top + Aligned on the top of the region + + + + + doi + A digital object identifier. + isbn + An international standard book number. + isrn + An international standard technical report number (ISO 10444). + issn + An international standard serial number. + istc + An international standard text code. + libraryofcongress + A Library of Congress reference number. + pubsnumber + A publication number (an internal number or possibly organizational standard). + uri + A Uniform Resource Identifier + + + + + + Identifies the kind of bibliographic identifier + + + + + + + Identifies the nature of the non-standard bibliographic identifier + + + + + + + Identifies the kind of bibliographic identifier + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + article + An article + bbs + A bulletin board system + book + A book + cdrom + A CD-ROM + chapter + A chapter (as of a book) + dvd + A DVD + emailmessage + An email message + gopher + A gopher page + journal + A journal + manuscript + A manuscript + newsposting + A posting to a newsgroup + part + A part (as of a book) + refentry + A reference entry + section + A section (as of a book or article) + series + A series + set + A set (as of books) + webpage + A web page + wiki + A wiki page + other + Some other kind of work + + + + + + + + + Identifies the nature of the published work + + + + + + + Identifies the nature of some other kind of published work + + + + + + + Identifies that this is some other kind of published work + other + Indicates that the published work is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text of the title of a section of a document or of a formal block-level element + + + + + + +
+
+ + + + + + + + + + + + + + + The abbreviation of a title + + + + + + +
+
+ + + + + + + + + + + + + + + The subtitle of a document + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with a required title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a required title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + +
+
+ + + + + + Identifies the controlled vocabulary used by this set's terms + + + + + + + + + + + + + + + + + + A set of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + Specifies a ranking for this subject relative to other subjects in the same set + + + + + + + + + + + + + + + + + One of a group of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + + + + + + + + + + A term in a group of terms describing the subject matter of a document + + + + +
+
+ + + + + + + + + + + + + + + A set of keywords describing the content of a document + + + + + + +
+
+ + + + + + + + + + + + + + + One of a set of keywords describing the content of a document + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + Identifies the type of procedure + + + + + + + + + + + + + + + + + + + + + A list of operations to be performed in a well-defined sequence + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A unit of action in a procedure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + Alternative steps in a procedure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for steps that occur within steps in a procedure + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for identifying the results of a procedure or step + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + A portion of a document that is isolated from the main narrative flow + + Element exclusion + + sidebar must not occur among the children or descendants of sidebar + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short description or note about a person + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A quotation set off from the main text + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The source of a block quote or epigraph + + + + + + + + + + + + +
+
+ + + sect1 + Render as a first-level section + sect2 + Render as a second-level section + sect3 + Render as a third-level section + sect4 + Render as a fourth-level section + sect5 + Render as a fifth-level section + + + + + + Indicates how the bridge head should be rendered + + + + + + + Identifies the nature of the non-standard rendering + + + + + + + Indicates how the bridge head should be rendered + other + Identifies a non-standard rendering + + + + + + + + + + + + + + + + + + + + + + + + + + + + A free-floating heading + + + + + + +
+
+ + + + + + + + + + + + + + + A remark (or comment) intended for presentation in a draft manuscript + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short inscription at the beginning of a document or component + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + Identifies the desired footnote mark + + + + + + + + + + + + + + + + + + A footnote + + Element exclusion + + footnote must not occur among the children or descendants of footnote + + + + Element exclusion + + example must not occur among the children or descendants of footnote + + + + Element exclusion + + figure must not occur among the children or descendants of footnote + + + + Element exclusion + + table must not occur among the children or descendants of footnote + + + + Element exclusion + + equation must not occur among the children or descendants of footnote + + + + Element exclusion + + sidebar must not occur among the children or descendants of footnote + + + + Element exclusion + + task must not occur among the children or descendants of footnote + + + + Element exclusion + + epigraph must not occur among the children or descendants of footnote + + + + Element exclusion + + caution must not occur among the children or descendants of footnote + + + + Element exclusion + + danger must not occur among the children or descendants of footnote + + + + Element exclusion + + important must not occur among the children or descendants of footnote + + + + Element exclusion + + note must not occur among the children or descendants of footnote + + + + Element exclusion + + tip must not occur among the children or descendants of footnote + + + + Element exclusion + + warning must not occur among the children or descendants of footnote + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph with a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph that contains only text and inline markup, no block elements + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + Identifies the type of mark to be used on items in this list + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a bullet or other dingbat + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + continues + Specifies that numbering should begin where the preceding list left off + restarts + Specifies that numbering should begin again at 1 + + + + + Indicates how list numbering should begin relative to the immediately preceding list + + + + + + Specifies the initial line number + + + + + + ignore + Specifies that numbering should ignore list nesting + inherit + Specifies that numbering should inherit from outer-level lists + + + + + Indicates whether or not item numbering should be influenced by list nesting + + + + + + arabic + Specifies Arabic numeration (1, 2, 3, …) + upperalpha + Specifies upper-case alphabetic numeration (A, B, C, …) + loweralpha + Specifies lower-case alphabetic numeration (a, b, c, …) + upperroman + Specifies upper-case Roman numeration (I, II, III, …) + lowerroman + Specifies lower-case Roman numeration (i, ii, iii …) + + + + + Indicates the desired numeration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a sequentially incremented label + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + Specifies the keyword for the type of mark that should be used on this + item, instead of the mark that would be used by default + + + + + + + + + + + + + + + + + + + + + A wrapper for the elements of a list item + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A segmented list, a list of sets of elements + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of an element of a list item in a segmented list + + + + + + +
+
+ + + + + + + + + + + + + + + A list item in a segmented list + + Cardinality of segments and titles + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a list item in a segmented list + + + + + + +
+
+ + + + + + horiz + A tabular presentation in row-major order. + vert + A tabular presentation in column-major order. + inline + An inline presentation, usually a comma-delimited list. + + + + + Specifies the type of list presentation + + + + + + Specifies the number of columns for horizontal or vertical presentation + + + + + + + + + + + + + + + + + + + + + An undecorated list of single words or short phrases + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a simple list + + + + + + +
+
+ + + + + + Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is composed of a set of one or more terms and an associated description + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for a set of terms and the associated description in a variable list + + + + + + + +
+
+ + + + + + + + + + + + + + + The word or phrase being defined or described in a variable list + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + Identifies the type of example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal example, with a title + + Element exclusion + + example must not occur among the children or descendants of example + + + + Element exclusion + + figure must not occur among the children or descendants of example + + + + Element exclusion + + table must not occur among the children or descendants of example + + + + Element exclusion + + equation must not occur among the children or descendants of example + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed example without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + monospaced + The literal layout should be formatted with a monospaced font + normal + The literal layout should be formatted with the current font + + + + + Specifies the class of literal layout + + + + + + + + + + + + + + + + + + + A block of text in which line breaks and white space are to be reproduced faithfully + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + Text that a user sees or might see on a computer screen + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A representation of what the user sees or might see on a computer screen + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of figure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal figure, generally an illustration, with a title + + Element exclusion + + example must not occur among the children or descendants of figure + + + + Element exclusion + + figure must not occur among the children or descendants of figure + + + + Element exclusion + + table must not occur among the children or descendants of figure + + + + Element exclusion + + equation must not occur among the children or descendants of figure + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of figure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A untitled figure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A displayed media object (video, audio, image, etc.) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + An inline media object (video, audio, image, and so on) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for video data and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for audio data and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for image data and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a text description of an object and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external video data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external audio data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the image data + + + + + + + + + Specifies the vertical alignment of the image data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external image data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + Identifies the encoding of the text in the external file + + + + + + + + + + + + + + + + + + + + Pointer to external text data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + Specifies the name of the parameter + + + + + Specifies the value of the parameter + + + + + Specifies the type of the value of the parameter + + + + + + + + + + + + + + + + + + Application specific parameters for a media player + + + + +
+
+ + + + + + + + + + + + + + + + + + A caption + + Element exclusion + + example must not occur among the children or descendants of caption + + + + Element exclusion + + figure must not occur among the children or descendants of caption + + + + Element exclusion + + table must not occur among the children or descendants of caption + + + + Element exclusion + + equation must not occur among the children or descendants of caption + + + + Element exclusion + + sidebar must not occur among the children or descendants of caption + + + + Element exclusion + + task must not occur among the children or descendants of caption + + + + Element exclusion + + caution must not occur among the children or descendants of caption + + + + Element exclusion + + danger must not occur among the children or descendants of caption + + + + Element exclusion + + important must not occur among the children or descendants of caption + + + + Element exclusion + + note must not occur among the children or descendants of caption + + + + Element exclusion + + tip must not occur among the children or descendants of caption + + + + Element exclusion + + warning must not occur among the children or descendants of caption + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A real-world address, generally a postal address + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A street address in an address + + + + +
+
+ + + + + + + + + + + + + + + A post office box in an address + + + + +
+
+ + + + + + + + + + + + + + + A postal code in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a city in an address + + + + +
+
+ + + + + + + + + + + + + + + A state or province in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a country + + + + +
+
+ + + + + + + + + + + + + + + A telephone number + + + + +
+
+ + + + + + + + + + + + + + + A fax number + + + + +
+
+ + + + + + + + + + + + + + + Uncategorized information in address + + + + +
+
+ + + + + + + + + + + + + + + The institutional affiliation of an individual + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A brief description of an affiliation + + + + +
+
+ + + + + + + + + + + + + + + The title of an individual in an organization + + + + +
+
+ + + consortium + A consortium + corporation + A corporation + informal + An informal organization + nonprofit + A non-profit organization + + + + + Specifies the nature of the organization + + + + + + Specifies the nature of the organization + other + Indicates a non-standard organization class + + + Identifies the non-standard nature of the organization + + + + + + + + + + + + + + + + + + + + + + + + + + The name of an organization + + + + +
+
+ + + + + + + + + + + + + + + A division of an organization + + + + + + +
+
+ + + + + + + + + + + + + + + The page numbers of an article as published + + + + +
+
+ + + + + + + + + + + + + + + The personal name of an individual + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The name of an individual author + + + + +
+
+ + + + + + + + + + + + + + + Wrapper for author information when a document has multiple authors or collaborators + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Identifies a collaborator + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The initials or other short identifier for an author + + + + +
+
+ + + + + + + + + + + + + + + A person and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An organization and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for document meta-information about a conference + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The dates of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The title of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + An identifier, frequently numerical, associated with a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The contract number of a document + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a contract + + + + +
+
+ + + + + + + + + + + + + + + Copyright information about a document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The year of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the individual or organization that holds a copyright + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + Additional content for the cover of a publication + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + The date of publication or revision of a document + + + + +
+
+ + + + + + + + + + + + + + + The name or number of an edition of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the editor of a document + + + + +
+
+ + + + + + + + + + + + + + + + An identifier for a document + + + + +
+
+ + + + + + + + + + + + + + + + A citation of a bibliographic identifier + + + + +
+
+ + + + + + + + + + + + + + + + The source of a document + + + + +
+
+ + + hasformat + The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + haspart + The described resource includes the referenced resource either physically or logically + hasversion + The described resource has a version, edition, or adaptation, namely, the referenced resource + isformatof + The described resource is the same intellectual content of the referenced resource, but presented in another format + ispartof + The described resource is a physical or logical part of the referenced resource + isreferencedby + The described resource is referenced, cited, or otherwise pointed to by the referenced resource + isreplacedby + The described resource is supplanted, displaced, or superceded by the referenced resource + isrequiredby + The described resource is required by the referenced resource, either physically or logically + isversionof + The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + references + The described resource references, cites, or otherwise points to the referenced resource + replaces + The described resource supplants, displaces, or supersedes the referenced resource + requires + The described resource requires the referenced resource to support its function, delivery, or coherence of content + + + + + + Identifies the type of relationship + + + + + + + + Identifies the type of relationship + othertype + The described resource has a non-standard relationship with the referenced resource + + + + A keyword that identififes the type of the non-standard relationship + + + + + + + + + + + + + + + + + + + + + + + + + + The relationship of a document to another + + + + +
+
+ + + dcmipoint + The DCMI Point identifies a point in space using its geographic coordinates + iso3166 + ISO 3166 Codes for the representation of names of countries + dcmibox + The DCMI Box identifies a region of space using its geographic limits + tgn + The Getty Thesaurus of Geographic Names + + + + + + Specifies the type of spatial coverage + + + + + + + + Specifies the type of spatial coverage + otherspatial + Identifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + dcmiperiod + A specification of the limits of a time interval + w3c-dtf + W3C Encoding rules for dates and times—a profile based on ISO 8601 + + + + + + Specifies the type of temporal coverage + + + + + + + + Specifies the type of temporal coverage + othertemporal + Specifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The spatial or temporal coverage of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A statement of legal obligations or requirements + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + copyeditor + A copy editor + graphicdesigner + A graphic designer + productioneditor + A production editor + technicaleditor + A technical editor + translator + A translator + indexer + An indexer + proofreader + A proof-reader + coverdesigner + A cover designer + interiordesigner + An interior designer + illustrator + An illustrator + reviewer + A reviewer + typesetter + A typesetter + conversion + A converter (a persons responsible for conversion, not an application) + + + + + + Identifies the nature of the contributor + + + + + + + Identifies the nature of the non-standard contribution + + + + + + + Identifies the nature of the contributor + other + Identifies a non-standard contribution + + + + + + + + + + + + + + + + + + + + + + + + + + A person or entity, other than an author or editor, credited in a document + + + + +
+
+ + + + + + + + + + + + + + + The numbers of the pages in a book, for use in a bibliographic entry + + + + +
+
+ + + + + + + + + + + + + + + A summary of the contributions made to a document by a credited source + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a person + + + + +
+
+ + + + + + + + + + + + + + + A given name of a person + + + + +
+
+ + + + + + + + + + + + + + + The given name of a person + + + + +
+
+ + + + + + + + + + + + + + + An inherited or family name; in western cultures the last name + + + + +
+
+ + + + + + + + + + + + + + + The portion of a person's name indicating a relationship to ancestors + + + + +
+
+ + + + + + + + + + + + + + + A component of a person's name that is not a first name, surname, or lineage + + + + +
+
+ + + + + + + + + + + + + + + The printing history of a document + + + + + + +
+
+ + + + + + + + + + + + + + + The date of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The publisher of a document + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of the publisher of a document + + + + +
+
+ + + + + + + + + + + + + + + Information about a particular release of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A history of the revisions to a document + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry describing a single revision in the history of the revisions to a document + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A document revision number + + + + +
+
+ + + + + + + + + + + + + + + A description of a revision to a document + + + + +
+
+ + + + + + + + + + + + + + + A extended description of a revision to a document + + + + + + +
+
+ + + + + + + + + + + + + + + Numbers of the volumes in a series of books + + + + +
+
+ + + + + + + + + + + + + + + The volume number of a document in a set (as of books in a set or articles in a journal) + + + + +
+
+ + + + + + + + + + + + + + + The number of an issue of a journal + + + + +
+
+ + + + + + A name for the metadata element + + + + + The metadata content + + + + + + + + + + + + + + + + + A generic metadata element + + + + + + + + A generic metadata element + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A software or application package + + + + +
+
+ + + + + + + + + + + + + + + An email address + + + + +
+
+ + + + + + + + + + + + + + + A comment on a line in a verbatim listing + + + + +
+
+ + + command + A command + function + A function + option + An option + + + + + Identifies the class of parameter + + + + + + + + + + + + + + + + + + + + + A value or a symbolic reference to a value + + + + +
+ + + + + + +
+ + + command + A command + function + A function + option + An option + parameter + A parameter + + + + + Identifies the nature of the replaceable text + + + + + + + + + + + + + + + + + + + + + Content that may or must be replaced by the user + + + + + + +
+
+ + + + Identifies the type of URI specified + + + + + + + + + + + + + + + + + + + A Uniform Resource Identifier + + + + +
+
+ + + + + + + + + + + + + + + An abbreviation, especially one followed by a period + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An often pronounceable word made from the initial (or selected) letters of a name or phrase + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An inline bibliographic reference to another published work + + + + + + +
+
+ + + + + + + + + + + + + + + A citation to a reference page + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A reference volume number + + + + +
+
+ + + + + + Identifies the nature of the publication being cited + + + + + + Identifies the nature of some other kind of publication being cited + + + + + + + Identifies that this is some other kind of publication being cited + other + Indicates that the published work is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + The title of a cited work + + + + + + +
+
+ + + + + + + + + + + + + + + Emphasized text + + + + + + +
+
+ + + A limited span of emphasized text + + + + +
+
+ + + + + + + + + + + + + + + A word or phrase in a language other than the primary language of the document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A limited word or phrase in a language other than the primary language of the document + + + + +
+
+ + + + + + + + + + + + + + + A span of text + + + + + + +
+
+ + + A limited span of text + + + + +
+
+ + + + + + + + + + + + + + + An inline quotation + + + + + + +
+
+ + + + + + + + + + + + + + + A limited inline quotation + + + + +
+
+ + + + + + + + + + + + + + + A subscript (as in Hâ‚‚O, the molecular formula for water) + + + + +
+
+ + + + + + + + + + + + + + + A superscript (as in x², the mathematical notation for x multiplied by itself) + + + + +
+
+ + + copyright + A copyright + registered + A registered copyright + service + A service + trade + A trademark + + + + + Identifies the class of trade mark + + + + + + + + + + + + + + + + + + + + + A trademark + + + + +
+
+ + + + + + + + + + + + + + + A word meant specifically as a word and not representing anything else + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a footnote (a footnote mark) + + Footnote reference type constraint + + @linkend on footnoteref must point to a footnote. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A cross reference to another part of the document + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A hypertext link + + + + + + +
+
+ + + + + + + + + Holds additional information that may be used by the application when resolving the link + + + + + Specifies the URI of the document in which the link target appears + + + + + + Specifies the location of the link target in the document + + + + + Identifies application-specific customization of the link behavior + + + + + + + + + + + + + + + + + + + + + + + + + + + + A link that addresses its target indirectly + + + + + + +
+
+ + + + + + + + + + + + + + A spot in the document + + + + +
+
+ + + + + + + + + + + + + + A text-only annotation, often used for accessibility + + + + + + + + + +
+
+ + + Holds style of formalgroup - this can be used to specify desired layout and positioning of subfigures + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A group of formal objects, for example subfigures + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + Identifies the editorial or publication status of the element on which it occurs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of books + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + The dedication of a book or other component + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Acknowledgements of a book or other component + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Text at the back of a book describing facts about its production + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An appendix in a book or article + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A chapter, as of a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Introductory matter preceding the first chapter of a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An introduction to the contents of a part + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + legal + A section of legal obligations or requirements + + + + Identifies the nature of the section + + + + + + Identifies a non-standard section class + + + + + + + Indicates that a non-standard section class is applied + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a document with no subdivisions + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + faq + A collection of frequently asked questions. + journalarticle + An article in a journal or other periodical. + productsheet + A description of a product. + specification + A specification. + techreport + A technical report. + whitepaper + A white paper. + + + + + Identifies the nature of the article + + + + + + Identifies the nature of the non-standard article + + + + + + + Identifies the nature of the article + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An article + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Identifies one or more annotations that apply to this element + + +
+ + + + + + Identifies one or more elements to which this annotation applies + + + + + + + + + + + + + + + + + + + An annotation + + Element exclusion + + annotation must not occur among the children or descendants of annotation + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + Identifies the XLink extended link type + + XLink extended placement + + An XLink extended type element may not occur as the direct child of an XLink extended type element. + + + extended + An XLink extended link type + + + + + Identifies the XLink locator link type + + XLink locator placement + + An XLink locator type element must occur as the direct child of an XLink extended type element. + + + locator + An XLink locator link type + + + + + Identifies the XLink arc link type + + XLink arc placement + + An XLink arc type element must occur as the direct child of an XLink extended type element. + + + arc + An XLink arc link type + + + + + Identifies the XLink resource link type + + XLink resource placement + + An XLink resource type element must occur as the direct child of an XLink extended type element. + + + resource + An XLink resource link type + + + + + Identifies the XLink title link type + + XLink title placement + + An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element. + + + title + An XLink title link type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the XLink traversal-from + + + + + + Specifies the XLink label + + + + + + Specifies the XLink traversal-to + + + +
+ + + + + + + + + + + + Identifies the XLink link type + extended + An XLink extended link + + + + + + + + + + + + + An XLink extended link + + + + + + + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + locator + An XLink locator link + + + + + + + + + + + + + + + + + An XLink locator in an extendedlink + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + arc + An XLink arc link + + + + + + + + + + + + + + + + + + + + + + + + + An XLink arc in an extendedlink + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A top-level section of document + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect1 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect2 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect3 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect4 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of reference entries + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A reference page (originally a UNIX man-style reference page) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Meta-information for a reference entry + + + + + + + + + + + + + + + + +
+ + + source + The name of the software product or component to which this topic applies + version + The version of the software product or component to which this topic applies + manual + The section title of the reference page (e.g., User Commands) + sectdesc + The section title of the reference page (believed synonymous with "manual" but in wide use) + software + The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + + + + + + Identifies the kind of miscellaneous information + + + + + + + Identifies the nature of non-standard miscellaneous information + + + + + + Identifies the kind of miscellaneious information + other + Indicates that the information is some 'other' kind. + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + Meta-information for a reference entry other than the title and volume number + + + + +
+
+ + + + + + + + + + + + + + + The name, purpose, and classification of a reference page + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A description of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The name of (one of) the subject(s) of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A short (one sentence) synopsis of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The scope or other indication of applicability of a reference entry + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntactic synopsis of the subject of the reference page + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section in a refentry + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A major subsection of a reference entry + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect1 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect2 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for a list of glossary entries + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + +
+
+ + + + + + Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + + + + + + + + + + + + + + + + + An entry in a glossary or glosslist + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + Specifies a list of keywords for the definition + + + + + + + + + + + + + + + + + A definition in a glossentry + + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry + to another + + Glosssary 'see' type constraint + + @otherterm on glosssee must point to a glossentry. + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry to another + + Glossary 'seealso' type constraint + + @otherterm on glossseealso must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term, with limited content + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A glossary + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a glossary + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + An inline definition of a term + + Glossary term definition constraint + + A termdef must contain exactly one firstterm + + + + + + + + +
+ + + Identifies the relationship between the bibliographic elemnts + + +
+ + + + + + + + + + + + + + + + + + + + + A raw entry in a bibliography + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked entry in a bibliography + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A raw container for related bibliographic information + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked container for related bibliographic information + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Untyped bibliographic information + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A bibliography + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a bibliography + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a list of bibliography entries + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + The units (for example, pages) used to identify the beginning and ending of a reference. + + + + + + Identifies the beginning of a reference; the location within the work that is being referenced. + + + + + + Identifies the end of a reference. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cross-reference to a bibliographic entry + + + + +
+ + + normal + Normal + preferred + Preferred + + + + + Specifies the significance of the term + + + + + + Specifies the IDs of the elements to which this term applies + + + + + + Indicates the page on which this index term occurs in some version of the printed document + + + + + all + All indexes + global + The global index (as for a combined index of a set of books) + local + The local index (the index for this document only) + + + + + Specifies the scope of the index term + + + + + + Specifies the string by which the term is to be sorted; if unspecified, the term content is used + + + + + Specifies the target index for this term + + +
+ + + + + + + + + + + + + + + A set of index terms in the meta-information of a document + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + Identifies the class of index term + singular + A singular index term + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term + + + + +
+
+ + + + + + Identifies the class of index term + startofrange + The start of a range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term that covers a range + + + + +
+
+ + + + + + Identifies the class of index term + endofrange + The end of a range + + + + + Points to the start of the range + + + + + + + + + + + + + + + + + Identifies the end of a range associated with an indexed term + + Indexterm 'startref' type constraint + + @startref on indexterm must point to an indexterm. + @startref on indexterm must point to a startofrange indexterm. + + + + + + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary word or phrase under which an index term should be sorted + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A secondary word or phrase in an index term + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A tertiary word or phrase in an index term + + + + + + +
+
+ + + + + + Identifies the class of 'see' + + normal + Normal + under + See 'under' + + + + + + + + + + + + + + + + + + Part of an index term directing the reader instead to another entry in the index + + + + + + +
+
+ + + + + + Identifies the class of 'seealso' + + normal + Normal + under + See 'under' + + + + + + + + + + + + + + + + + + Part of an index term directing the reader also to another entry in the index + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a book or part of a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a set of books + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in an index + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry in an index + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + A primary term in an index entry, not in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A secondary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A tertiary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See +entry in an index, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See also + entry in an index, rather than in the text + + + + + + +
+ + + Indicates the page on which this element occurs in some version of the printed document + + +
+ + + + + + + + + + + + + + + + + + A table of contents + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + A division in a table of contents + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A component title in a table of contents + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + A task to be completed + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary of a task + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The prerequisites for a task + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + Information related to a task + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + calspair + Coordinates expressed as a pair of CALS graphic coordinates. + linecolumn + Coordinates expressed as a line and column. + linecolumnpair + Coordinates expressed as a pair of lines and columns. + linerange + Coordinates expressed as a line range. + + + + + + Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair + for graphics and linecolumn + for line-oriented elements. + + + + + + + + Indicates that non-standard units are used for this area +. In this case otherunits + must be specified. + other + Coordinates expressed in some non-standard units. + + + + Identifies the units used in the coords + attribute when the units + attribute is other +. This attribute is forbidden otherwise. + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A list of callout +s + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + Identifies the areas described by this callout. + + + + + + + + + + + + + + + + A called out + description of a marked area + + Callout cross reference constraint + + @arearefs on callout must point to a areaset, area, or co. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A program listing with associated areas used in callouts + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A collection of regions in a graphic or code example + + + + + + + + + +
+
+ + + + + + Point to the callout +s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + + + + + + Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + + + + + Provides the coordinates of the area. The coordinates must be interpreted using the units + specified. + + + + + + + + + + + + + + + + + + + + + + + + A region defined for a callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A region defined for a callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A set of related areas in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A screen with associated areas used in callouts + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for an image object with callouts + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + The location of a callout embedded in text + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a co + + + + +
+
+ + + + + + + + + + + + + + + + + + A set of EBNF productions + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A production in a set of EBNF productions + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The left-hand side of an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + The right-hand side of an EBNF production + + + + + + + + + + + +
+
+ + + + + + Specifies a URI that points to a production +where the nonterminal + is defined + + + + + + + + + + + + + + + + A non-terminal in an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + A constraint in an EBNF production + + Constraint cross reference constraint + + @linkend on constraint must point to a constraintdef. + + + + + + +
+
+ + + + + + + + + + + + + + + A cross-reference to an EBNF production + + Production recap cross reference constraint + + @linkend on productionrecap must point to a production. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The definition of a constraint in an EBNF production + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + Specifies the alignment character when align + is set to char +. + + + + + Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + when align + is set to char +. + + 0 + 100 + + + + + + Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + + all + Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + bottom + Frame only the bottom of the table. + none + Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + sides + Frame the left and right sides of the table. + top + Frame the top of the table. + topbot + Frame the top and bottom of the table. + + + + + + Specifies the presence or absence of the column separator + + 0 + No column separator rule. + 1 + Provide a column separator rule on the right + + + + + + Specifies the presence or absence of the row separator + + 0 + No row separator rule. + 1 + Provide a row separator rule below + + + + + + Specifies the orientation of the table + + land + 90 degrees counter-clockwise from the rest of the text flow. + port + The same orientation as the rest of the text flow. + + + + + + Specifies the table style + + + + + Indicates whether or not the entries in the first column should be considered row headers + + firstcol + Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + headers + Indicates that row headers are identified by use of the headers attribute on entries in the table. + norowheader + Indicates that entries in the first column have no special significance with respect to column headers. + + + + + + Specifies the horizontal alignment of text in an entry. + + center + Centered. + char + Aligned on a particular character. + justify + Left and right justified. + left + Left justified. + right + Right justified. + + + + + + Specifies the vertical alignment of text in an entry. + + bottom + Aligned on the bottom of the entry. + middle + Aligned in the middle. + top + Aligned at the top of the entry. + + + + + + Specifies a column specification by name. + + + + + Specifies a starting column by name. + + + + + Specifies a span by name. + + + + + + Specifies a starting column by name. + + + Specifies an ending column by name. + + + + + + + + + + + + + + Provides a name for a column specification. + + + + + Provides a name for a span specification. + + +
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for the main content of a table, or part of a table + + + + + + + + + + + + + + + + +
+
+ + + + + + The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + + + + + + Specifies the width of the column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifications for a column in a table + + + + +
+
+ + + + + + Specifies a starting column by name. + + + + + Specifies an ending column by name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Formatting information for a spanned column in a table + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table footer consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + + + + +
+
+ + + + + + Specifies the number of additional rows which this entry occupies. Defaults to zero. + + + + + + Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + + 0 + Do not rotate the cell. + 1 + Rotate the cell 90 degrees counter-clockwise. + + + + + + Specifies the scope of a header. + + row + Applies to the row + col + Applies to the column + rowgroup + Applies to the row group + colgroup + Applies to the column group + + + + + + Specifies the entry or entries which serve as headers for this element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cell in a table + + Element exclusion + + table must not occur among the children or descendants of entry + + + + Element exclusion + + informaltable must not occur among the children or descendants of entry + + + + + + + + + + + + + +
+
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the entry table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subtable appearing in place of an entry in a table + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + +
+
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates if the short or long title should be used in a List of Tables + + 0 + Indicates that the full title should be used. + 1 + Indicates that the short short title (titleabbrev) should be used. + + + + + + Indicates if the table should appear in a List of Tables + + 0 + Indicates that the table should not occur in the List of Tables. + 1 + Indicates that the table should appear in the List of Tables. + + + + + + + + + + + + + + A formal table in a document + + Element exclusion + + example must not occur among the children or descendants of table + + + + Element exclusion + + figure must not occur among the children or descendants of table + + + + Element exclusion + + equation must not occur among the children or descendants of table + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A table without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + + + + + This attribute specifies style information for the current element. + + + + + This attribute offers advisory information about the element for which it is set. + + + + + + + + This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + + + + + + + + Occurs when the pointing device button is clicked over an element. + + + + + Occurs when the pointing device button is double clicked over an element. + + + + + Occurs when the pointing device button is pressed over an element. + + + + + Occurs when the pointing device button is released over an element. + + + + + Occurs when the pointing device is moved onto an element. + + + + + Occurs when the pointing device is moved while it is over an element. + + + + + Occurs when the pointing device is moved away from an element. + + + + + Occurs when a key is pressed and released over an element. + + + + + Occurs when a key is pressed down over an element. + + + + + Occurs when a key is released over an element. + + + + + + + + + + + + + + + + + Specifies the alignment of data and the justification of text in a cell. + + left + Left-flush data/Left-justify text. This is the default value for table data. + center + Center data/Center-justify text. This is the default value for table headers. + right + Right-flush data/Right-justify text. + justify + Double-justify text. + char + Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + + + + + + This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + + + + + When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + + + An explicit offset. + + [0-9]+% + + A percentage offset. + + + + + + + + + Specifies the vertical position of data within a cell. + + top + Cell data is flush with the top of the cell. + middle + Cell data is centered vertically within the cell. This is the default value. + bottom + Cell data is flush with the bottom of the cell. + baseline + All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + + + + + + + + + Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + + + + + Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + + + An explicit width. + + [0-9]+% + + A percentage width. + + + + + + Specifies the width (in pixels only) of the frame around a table. + + + + + + Specifies which sides of the frame surrounding a table will be visible. + + void + No sides. This is the default value. + above + The top side only. + below + The bottom side only. + hsides + The top and bottom sides only. + lhs + The left-hand side only. + rhs + The right-hand side only. + vsides + The right and left sides only. + box + All four sides. + border + All four sides. + + + + + + Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + + none + No rules. This is the default value. + groups + Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + rows + Rules will appear between rows only. + cols + Rules will appear between columns only. + all + Rules will appear between all rows and columns. + + + + + + Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + + + An explicit spacing. + + [0-9]+% + + A percentage spacing. + + + + + + Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + + + An explicit padding. + + [0-9]+% + + A percentage padding. + + + + + + + + + + Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + + + + + This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + + + + + Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + + + + + Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + + row + The current cell provides header information for the rest of the row that contains it + col + The current cell provides header information for the rest of the column that contains it. + rowgroup + The header cell provides header information for the rest of the row group that contains it. + colgroup + The header cell provides header information for the rest of the column group that contains it. + + + + + + Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all rows from the current row to the last row of the table section (thead +, tbody +, or tfoot +) in which the cell is defined. + + + + + + Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all columns from the current column to the last column of the column group (colgroup +) in which the cell is defined. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal (captioned) HTML table in a document + + Element exclusion + + example must not occur among the children or descendants of table + + + + Element exclusion + + figure must not occur among the children or descendants of table + + + + Element exclusion + + equation must not occur among the children or descendants of table + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An HTML table without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + An HTML table caption + + Element exclusion + + example must not occur among the children or descendants of caption + + + + Element exclusion + + figure must not occur among the children or descendants of caption + + + + Element exclusion + + table must not occur among the children or descendants of caption + + + + Element exclusion + + equation must not occur among the children or descendants of caption + + + + Element exclusion + + sidebar must not occur among the children or descendants of caption + + + + Element exclusion + + task must not occur among the children or descendants of caption + + + + Element exclusion + + caution must not occur among the children or descendants of caption + + + + Element exclusion + + danger must not occur among the children or descendants of caption + + + + Element exclusion + + important must not occur among the children or descendants of caption + + + + Element exclusion + + note must not occur among the children or descendants of caption + + + + Element exclusion + + tip must not occur among the children or descendants of caption + + + + Element exclusion + + warning must not occur among the children or descendants of caption + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + +
+
+ + + + + + This attribute, whose value must be an integer > 0, specifies the number of columns spanned + by the col + element; the col + element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + element shares its attributes with the next N-1 columns. + + + + + + Specifies a default width for each column spanned by the current col + element. It has the same meaning as the width + attribute for the colgroup + element and overrides it. + + + + + + + + + Specifications for a column in an HTML table + + + + +
+
+ + + + + + This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + element contains one or more col + elements. + + + + + + This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + element. + + + + + + + + + A group of columns in an HTML table + + + + + + +
+
+ + + + + + + + + + A table header consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A table footer consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A wrapper for the rows of an HTML table or informal HTML table + + + + + + +
+
+ + + + + + + + + + A row in an HTML table + + + + + + + + + +
+
+ + + + + + + + + + + A table header entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + A table entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A detailed set of messages, usually error messages + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for an entry in a message set + + + + + + + + + + + + +
+
+ + + + + + The audience to which the message relevant + + + + + The origin of the message + + + + + The level of importance or severity of a message + + + + + + + + + + + + + + + + + + + + + + + A wrapper for a simpler entry in a message set + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary component of a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A subcomponent of a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A related component of a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + The actual text of a message component in a message set + + + + + + +
+
+ + + + + + + + + + + + + + + Information about a message in a message set + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The level of importance or severity of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The origin of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The audience to which a message in a message set is relevant + + + + +
+
+ + + + + + + + + + + + + + + + + + Explanatory material relating to a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + none + No labels + number + Numeric labels + qanda + "Q:" and "A:" labels + + + + + Specifies the default labelling + + + + + + + + + + + + + + + + + + + + + A question-and-answer set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A titled division in a qandaset + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A question/answer set within a qandaset + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A question in a qandaset + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An answer to a question posed in a qandaset + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A label on a question or answer + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + Identifies the type of equation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation + + Element exclusion + + example must not occur among the children or descendants of equation + + + + Element exclusion + + figure must not occur among the children or descendants of equation + + + + Element exclusion + + table must not occur among the children or descendants of equation + + + + Element exclusion + + equation must not occur among the children or descendants of equation + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + Identifies the type of equation + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical equation or expression occurring inline + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical phrase that can be represented with ordinary text and a small amount of markup + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + Specifies that the format of the data is MathML + mathml + Specifies MathML. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A MathML expression in a media object + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + Any element from the MathML namespace + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + Specifies that the format of the data is SVG + svg + Specifies SVG. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An SVG drawing in a media object + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + Any element from the SVG namespace + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A string of formatting markup in text that is to be represented literally + + + + +
+
+ + + + + + attribute + An attribute + attvalue + An attribute value + element + An element + emptytag + An empty element tag + endtag + An end tag + genentity + A general entity + localname + The local name part of a qualified name + namespace + A namespace + numcharref + A numeric character reference + paramentity + A parameter entity + pi + A processing instruction + prefix + The prefix part of a qualified name + comment + An SGML comment + starttag + A start tag + xmlpi + An XML processing instruction + + + + + Identifies the nature of the tag content + + + + + + Identifies the namespace of the tag content + + + + + + + + + + + + + + + + + + + + + A component of XML (or SGML) markup + + + + + + + + + +
+
+ + + Identifies the class of symbol + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A name that is replaced by a value before processing + + + + +
+
+ + + + + + + + + + + + + + + A unit of information + + + + +
+
+ + + + + + + + + + + + + + + Inline text that is some literal value + + + + +
+
+ + + Identifies the (computer) language of the code fragment + + + + + + + + + + + + + + + + + + + + An inline code fragment + + + + + + + + + +
+
+ + + Identifies the class of constant + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A programming or system constant + + + + +
+
+ + + + + + copyright + A name with a copyright + registered + A name with a registered copyright + service + A name of a service + trade + A name which is trademarked + + + + + Specifies the class of product name + + + + + + + + + + + + + + + + + + The formal name of a product + + + + +
+
+ + + + + + + + + + + + + + + A number assigned to a product + + + + +
+
+ + + altkey + An alternate or secondary key + constraint + A constraint + datatype + A data type + field + A field + foreignkey + A foreign key + group + A group + index + An index + key1 + The first or primary key + key2 + An alternate or secondary key + name + A name + primarykey + The primary key + procedure + A (stored) procedure + record + A record + rule + A rule + secondarykey + The secondary key + table + A table + user + A user + view + A view + + + + + Identifies the class of database artifact + + + + + + + + + + + + + + + + + + + + + The name of a database, or part of a database + + + + +
+
+ + + hardware + A hardware application + software + A software application + + + + + Identifies the class of application + + + + + + + + + + + + + + + + + + + + + The name of a software program + + + + +
+
+ + + + + + + + + + + + + + + A physical part of a computer system + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text on a button in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Graphic and/or text appearing as a icon in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The text of a label in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a menu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a terminal menu item in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a submenu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A selection or series of selections from a menu + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The conventional name of a mouse button + + + + +
+ + + + + + + + + + +
+ + + alt + The "Alt" key + altgr + The "Alt Graph" key + backspace + The "Backspace" key + command + The "Command" key + control + The "Control" key + delete + The "Delete" key + down + The down arrow + end + The "End" key + enter + The "Enter" key + escape + The "Escape" key + home + The "Home" key + insert + The "Insert" key + left + The left arrow + meta + The "Meta" key + option + The "Option" key + pagedown + The page down key + pageup + The page up key + right + The right arrow + return + The "Return" key + shift + The "Shift" key + space + The spacebar + tab + The "Tab" key + up + The up arrow + + + + + + Identifies the function key + + + + + + + + Identifies the function key + other + Indicates a non-standard function key + + + + Specifies a keyword that identifies the non-standard key + + + + + + + + + + + + + + + + + + + + + + + + The text printed on a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + The internal, frequently numeric, identifier for a key on a keyboard + + + + +
+ + + + + + + + + + +
+ + + click + A (single) mouse click. + double-click + A double mouse click. + press + A mouse or key press. + seq + Sequential clicks or presses. + simul + Simultaneous clicks or presses. + + + + + + Identifies the nature of the action taken. If keycombo + contains more than one element, simul + is the default, otherwise there is no default. + + + + + + + + Identifies the nature of the action taken + other + Indicates a non-standard action + + + + Identifies the non-standard action in some unspecified way. + + + + + + + + + + + + + + + + + + + + + + + + A combination of input actions + + + + + + +
+
+ + + + + + + + + + + + + + + The symbolic name of a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + A graphical user interface (GUI) keyboard shortcut + + + + +
+
+ + + + + + + + + + + + + + + + + + + A key combination for an action that is also accessible through a menu + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A character or string indicating the start of an input field in a computer display + + + + + + +
+
+ + + + + + + + + + + + + + + A software environment variable + + + + +
+
+ + + devicefile + A device + directory + A directory + extension + A filename extension + headerfile + A header file (as for a programming language) + libraryfile + A library file + partition + A partition (as of a hard disk) + symlink + A symbolic link + + + + + Identifies the class of filename + + + + + + Specifies the path of the filename + + + + + + + + + + + + + + + + + + + + + + + The name of a file + + + + +
+
+ + + + + + + + + + + + + + + The name of an executable program or other software command + + + + +
+
+ + + + + + + + + + + + + + + Data, generally text, displayed or presented by a computer + + + + + + +
+
+ + + + + + + + + + + + + + + Data entered by the user + + + + + + +
+
+ + + + + + Specifies the character that should separate the command and its top-level arguments + + + + + Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A syntax summary for a software command + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+ + + norepeat + Can not be repeated. + repeat + Can be repeated. + + + + + Indicates whether or not repetition is possible. + + + + + + opt + Formatted to indicate that it is optional. + plain + Formatted without indication. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + Indicates optionality. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An argument in a cmdsynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A group of elements in a cmdsynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + An explicit line break in a command synopsis + + + + +
+
+ + + + + + + + + + + + + + + A portion of a cmdsynopsis broken out from the main body of the synopsis + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A reference to a fragment of a command synopsis + + Synopsis fragment type constraint + + @linkend on synopfragmentref must point to a synopfragment. + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + A general-purpose element for representing the syntax of commands or functions + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing synopsis + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a function definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the funcdefs of a funcsynopsis + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a function + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A function (subroutine) name and its return type + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a function or subroutine, as in a programming language + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating that the function in question takes no arguments + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating a variable number of arguments + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A group of parameters + + + + + + + + + +
+
+ + + + + + opt + Formatted to indicate that it is optional. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + + + + + + + + + + + + + Information about a function parameter in a programming language + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Parameters for a function referenced through a function pointer in a synopsis + + + + +
+
+ + + + + + + + + class + This is the synopsis of a class + interface + This is the synopsis of an interface + + + + + Specifies the nature of the synopsis + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for a class definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the contents of a classsynopsis + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + A class in an object-oriented programming language + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An interface in an object-oriented programming language + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An exception in an object-oriented programming language + + + + + + + + + + + + + +
+ + + Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + preserve + Extra whitespace and line breaks must be preserved. + + + +
+ + + + + + + + + + + + + + + + + + Modifiers in a synopsis + + + + +
+
+ + + + + + + + + + + + + + + The name of an interface + + + + +
+
+ + + + + + + + + + + + + + + The name of an exception + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The name of a field in a class definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + The initializer for a fieldsynopsis + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a constructor + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a destructor + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a method + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a method + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Parameters to a method + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A group of method parameters + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a variable + + + + +
+
+ + + + + + + + + + + + + + + Target of a build + + + + +
+
+ + + + + + + + + + + + + + + The value returned by a function + + + + +
+
+ + + + + + union + Combined type is union of nested types + intersection + Combined type is intersection of nested types + + + + + Specifies the way how are nested types combined together + + + + + + + + + + + + + + + + + + The classification of a value + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a class, in the object-oriented programming sense + + + + +
+
+ + + + + + + + + + + + + + + The identifier for a template, in the generic programming sense + + + + +
+
+ + + + + + + + + + + + + + + The definition of a template, in the generic programming sense + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The specialization of a template identifier, in the generic programming sense + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a package definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a macro (a code-generating function) + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a macro definition (code-generating function) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a macro (code-generating function) + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A macro name and its return type + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a union of types + + + + +
+
+ + + + + + + + + + + + + + + The definition of a union of types, which may be more than a name + + + + + + +
+
+ + + + + + + + + + Indicates how the value of a union is specified. + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for a union-of-types definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of an enumeration + + + + +
+
+ + + + + + + + + + + + + + + The value an enumerated type can take + + + + +
+
+ + + + + + + + + + + + + + + The description of a value an enumerated type can take + + + + + + +
+
+ + + + + + + + + + + + + + + The identifier of a value an enumerated type can take + + + + +
+
+ + + + + + + + + + + + + + + A value an enumerated type can take and its description + + + + + + + + + + +
+
+ + + + + + + + + 0 + Value of enum is specified explicitly using enumvalue + 1 + Value of enum is inferred from its position + + + + + Indicates how the value of an enumeration is specified. + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for an enumerated-type definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a type alias + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a type-alias definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A literal listing of all or part of a program + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A note of caution + + Element exclusion + + caution must not occur among the children or descendants of caution + + + + Element exclusion + + danger must not occur among the children or descendants of caution + + + + Element exclusion + + important must not occur among the children or descendants of caution + + + + Element exclusion + + note must not occur among the children or descendants of caution + + + + Element exclusion + + tip must not occur among the children or descendants of caution + + + + Element exclusion + + warning must not occur among the children or descendants of caution + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text indicating hazardous situation + + Element exclusion + + caution must not occur among the children or descendants of danger + + + + Element exclusion + + danger must not occur among the children or descendants of danger + + + + Element exclusion + + important must not occur among the children or descendants of danger + + + + Element exclusion + + note must not occur among the children or descendants of danger + + + + Element exclusion + + tip must not occur among the children or descendants of danger + + + + Element exclusion + + warning must not occur among the children or descendants of danger + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + Element exclusion + + caution must not occur among the children or descendants of important + + + + Element exclusion + + danger must not occur among the children or descendants of important + + + + Element exclusion + + important must not occur among the children or descendants of important + + + + Element exclusion + + note must not occur among the children or descendants of important + + + + Element exclusion + + tip must not occur among the children or descendants of important + + + + Element exclusion + + warning must not occur among the children or descendants of important + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + A message set off from the text + + Element exclusion + + caution must not occur among the children or descendants of note + + + + Element exclusion + + danger must not occur among the children or descendants of note + + + + Element exclusion + + important must not occur among the children or descendants of note + + + + Element exclusion + + note must not occur among the children or descendants of note + + + + Element exclusion + + tip must not occur among the children or descendants of note + + + + Element exclusion + + warning must not occur among the children or descendants of note + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + A suggestion to the user, set off from the text + + Element exclusion + + caution must not occur among the children or descendants of tip + + + + Element exclusion + + danger must not occur among the children or descendants of tip + + + + Element exclusion + + important must not occur among the children or descendants of tip + + + + Element exclusion + + note must not occur among the children or descendants of tip + + + + Element exclusion + + tip must not occur among the children or descendants of tip + + + + Element exclusion + + warning must not occur among the children or descendants of tip + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + Element exclusion + + caution must not occur among the children or descendants of warning + + + + Element exclusion + + danger must not occur among the children or descendants of warning + + + + Element exclusion + + important must not occur among the children or descendants of warning + + + + Element exclusion + + note must not occur among the children or descendants of warning + + + + Element exclusion + + tip must not occur among the children or descendants of warning + + + + Element exclusion + + warning must not occur among the children or descendants of warning + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + An error code + + + + +
+
+ + + + + + + + + + + + + + + An error name + + + + +
+
+ + + + + + + + + + + + + + + An error message. + + + + +
+
+ + + + + + + + + + + + + + + The classification of an error message + + + + +
+ + + + + + +
+ + + daemon + A daemon or other system process (syslogd) + domainname + A domain name (example.com) + etheraddress + An ethernet address (00:05:4E:49:FD:8E) + event + An event of some sort (SIGHUP) + eventhandler + An event handler of some sort (hangup) + filesystem + A filesystem (ext3) + fqdomainname + A fully qualified domain name (my.example.com) + groupname + A group name (wheel) + interface + A network interface (eth0) + ipaddress + An IP address (127.0.0.1) + library + A library (libncurses) + macro + A macro + netmask + A netmask (255.255.255.192) + newsgroup + A newsgroup (comp.text.xml) + osname + An operating system name (Hurd) + process + A process (gnome-cups-icon) + protocol + A protocol (ftp) + resource + A resource + securitycontext + A security context (a role, permission, or security token, for example) + server + A server (mail.example.com) + service + A service (ppp) + systemname + A system name (hephaistos) + username + A user name (ndw) + + + + + + Identifies the nature of the system item + + + + + + + Identifies the nature of the non-standard system item + + + + + + + Identifies the kind of systemitemgraphic identifier + other + Indicates that the system item is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + A system-related item or term + + + + + + +
+
+ + + + + + + + + + + + + + + An option for a software command + + + + +
+
+ + + + + + + + + + + + + + + Optional information + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A unit of data associated with some part of a computer system + + + + +
+
+ + + + + + + + + Identifies the topic type + + + + + + + + + + + + + + + + + + + + + + + + + + A modular unit of documentation not part of any particular narrative flow + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + [^#]+ + + + + + + + xml + text + + + + + + + + + + + + + + + + + + + + + + + + + + + + An XInclude + + + + + + +
+
+ + + + An XInclude fallback + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + Any attribute in an other explicit namespace. + + + + + + + + + + + + + + + Version of ITS + + [0-9]+\.[0-9]+ + + + + The query language to be used for processing the rules + + xpath + css + + + + + + Absolute selector + + + + + Relative selector + + + + + + + + 0 + 1 + + + + The Translate data category information to be attached to the current node + + yes + The nodes need to be translated + no + The nodes must not be translated + + + + + + + The type of localization note + + alert + Localization note is an alert + description + Localization note is a description + + + + + + + + + + Indicates a term locally + + yes + The value 'yes' means that this is a term + no + The value 'no' means that this is not a term + + + + + + + The text direction for the context + + ltr + Left-to-right text + rtl + Right-to-left text + lro + Left-to-right override + rlo + Right-to-left override + + + + States whether current context is regarded as "within text" + + yes + The element and its content are part of the flow of its parent element + no + The element splits the text flow of its parent element and its content is an independent text flow + nested + The element is part of the flow of its parent element, its content is an independent flow + + + + A comma separated list of mappings between values in the content +and workflow specific values. The values may contain spaces; in +that case they MUST be delimited by quotation marks. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + include + exclude + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + terminology + mistranslation + omission + untranslated + addition + duplication + inconsistency + grammar + legal + register + locale-specific-content + locale-violation + style + characters + misspelling + typographical + formatting + inconsistent-entities + numbers + markup + pattern-problem + whitespace + internationalization + length + non-conformance + uncategorized + other + + + + + + + + 0 + 100 + + + + + + + + yes + no + + + + + 0 + 100 + + + + + + + + 0 + 100 + + + + + + + + + + + + + + + + + + + + + + + cr + lf + crlf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Version of ITS + + + + + + Version of ITS + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + xml:id + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Container for global rules + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Declaration of variable used in selectors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Inline element to contain ITS information + + + + + + + + + + + + + + + + + + + + + + + Rule about the Translate data category + + + + + + + + + + + + + + + + + Rule about the Localization Note data category + + + + + + + + + + + + + + + + + + + + + + + + + + Localization note + + + + + + + + + + + + + + + + + + + + + Rule about the Terminology data category + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Rule about the Directionality data category + + + + + + + + + + + + + + + + + Rule about the Language Information data category + + + + + + + + + + + + + + + + + + + + + + Rule about the Elements Within Text data category + + + + + + + + + + + + + + + + + Rule about the Domain data category + + + + + + + + + + + + + + + + + + + + + + + + + Rule about the Disambiguation data category + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Rule about the LocaleFilter data category + + + + + + + + + + + + + + + + + + + + Rule about the Provenance data category + + + + + + + + + + + + + + + + + + + + + + Rule about the External Resource data category + + + + + + + + + + + + + + + + + + + + + + Rule about the Target Pointer data category + + + + + + + + + + + + + + + + + + + + + + Rule about the Id Value data category + + + + + + + + + + + + + + + + + + + + + + Rule about the Preserve Space data category + + + + + + + + + + + + + + + + + + default + preserve + + + + + + Rule about the Localization Quality Issue data category + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Rule about the MT Confidence data category + + + + + + + + + + + + + + + + + Rule about the Allowed Characters data category + + + + + + + + + + + + + + + + + + + + + + + + + Rule about the Allowed Characters data category + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Standoff markup for Provenance data category + + + + + + + + + + + + + + + + + Provenance record used in Provenance standoff markup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Standoff markup for Localization Quality Issue data category + + + + + + + + + + + + + + + + + Issue recorded in Localization Quality standoff markup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/catalog/docbook5.2/rng/docbook.rnc b/catalog/docbook5.2/rng/docbook.rnc new file mode 100755 index 0000000..f81c88d --- /dev/null +++ b/catalog/docbook5.2/rng/docbook.rnc @@ -0,0 +1,11999 @@ +namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" +namespace ctrl = "http://nwalsh.com/xmlns/schema-control/" +default namespace db = "http://docbook.org/ns/docbook" +namespace html = "http://www.w3.org/1999/xhtml" +namespace local = "" +namespace mml = "http://www.w3.org/1998/Math/MathML" +namespace rng = "http://relaxng.org/ns/structure/1.0" +namespace s = "http://purl.oclc.org/dsdl/schematron" +namespace svg = "http://www.w3.org/2000/svg" +namespace trans = "http://docbook.org/ns/transclusion" +namespace xlink = "http://www.w3.org/1999/xlink" + +# This file is part of DocBook V5.2CR5 +# +# Copyright 1992-2015 HaL Computer Systems, Inc., +# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software +# Corporation, Norman Walsh, Sun Microsystems, Inc., and the +# Organization for the Advancement of Structured Information +# Standards (OASIS). +# +# Permission to use, copy, modify and distribute the DocBook schema +# and its accompanying documentation for any purpose and without fee +# is hereby granted in perpetuity, provided that the above copyright +# notice and this paragraph appear in all copies. The copyright +# holders make no representation about the suitability of the schema +# for any purpose. It is provided "as is" without expressed or implied +# warranty. +# +# If you modify the DocBook schema in any way, label your schema as a +# variant of DocBook. See the reference documentation +# (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook) +# for more information. +# +# Please direct all questions, bug reports, or suggestions for changes +# to the docbook-comment@lists.oasis-open.org mailing list. For more +# information, see http://www.oasis-open.org/docbook/. +# +# ====================================================================== + +s:ns [ + prefix = "a" + uri = "http://relaxng.org/ns/compatibility/annotations/1.0" +] +s:ns [ prefix = "ctrl" uri = "http://nwalsh.com/xmlns/schema-control/" ] +s:ns [ prefix = "db" uri = "http://docbook.org/ns/docbook" ] +s:ns [ prefix = "html" uri = "http://www.w3.org/1999/xhtml" ] +s:ns [ prefix = "mml" uri = "http://www.w3.org/1998/Math/MathML" ] +s:ns [ prefix = "rng" uri = "http://relaxng.org/ns/structure/1.0" ] +s:ns [ prefix = "s" uri = "http://purl.oclc.org/dsdl/schematron" ] +s:ns [ prefix = "svg" uri = "http://www.w3.org/2000/svg" ] +s:ns [ prefix = "trans" uri = "http://docbook.org/ns/transclusion" ] +s:ns [ prefix = "xlink" uri = "http://www.w3.org/1999/xlink" ] +start = + (db.set + | db.book + | db.divisions + | db.components + | db.navigation.components + | db.section + | db.para) + | (db.abstract + | db.mediaobject.content + | db.audiodata + | db.imagedata + | db.textdata + | db.videodata + | db.caption + | db.publishing.blocks + | db.wrapper.blocks + | db.formal.blocks + | db.informal.blocks + | db.formalpara + | db.inlinemediaobject + | db.list.blocks + | db.legalnotice + | db.verbatim.blocks + | db.graphic.blocks + | db.personblurb + | db.revhistory + | db.simpara + | db.step + | db.stepalternatives + | db.info) + | (db.partintro | db.simplesect) + | db.annotation + | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5) + | (db.refentry | db.refsection | db.refsynopsisdiv) + | (db.refsect1 | db.refsect2 | db.refsect3) + | (db.glossary | db.glossdiv | db.glosslist) + | (db.bibliodiv | db.bibliolist) + | (db.setindex | db.index | db.indexdiv) + | (db.toc | db.tocdiv) + | (db.task | db.taskprerequisites | db.taskrelated | db.tasksummary) + | (db.calloutlist + | db.programlistingco + | db.screenco + | db.imageobjectco) + | (db.productionset | db.constraintdef) + | (db.msg + | db.msgexplan + | db.msgmain + | db.msgrel + | db.msgset + | db.msgsub) + | (db.qandadiv | db.qandaentry | db.qandaset) + | (db.equation | db.informalequation) + | db.cmdsynopsis + | (db.synopsis.blocks | db.funcsynopsisinfo | db.classsynopsisinfo) + | db.admonition.blocks + | db.topic +div { + db._any.attribute = + + ## Any attribute, including any attribute in any namespace + attribute * { text } + db._any_other.attribute = + + ## Any attribute in any other explicit namespace + attribute * - (db:* | xml:* | xlink:* | trans:* | local:*) { text } + db._any = + + ## Any element from almost any namespace + element * - db:* { (db._any.attribute | text | db._any)* } +} +db.arch.attribute = + + ## Designates the computer or chip architecture to which the element applies + attribute arch { text } +db.audience.attribute = + + ## Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + attribute audience { text } +db.condition.attribute = + + ## provides a standard place for application-specific effectivity + attribute condition { text } +db.conformance.attribute = + + ## Indicates standards conformance characteristics of the element + attribute conformance { text } +db.os.attribute = + + ## Indicates the operating system to which the element is applicable + attribute os { text } +db.revision.attribute = + + ## Indicates the editorial revision to which the element belongs + attribute revision { text } +db.security.attribute = + + ## Indicates something about the security level associated with the element to which it applies + attribute security { text } +db.userlevel.attribute = + + ## Indicates the level of user experience for which the element applies + attribute userlevel { text } +db.vendor.attribute = + + ## Indicates the computer vendor to which the element applies + attribute vendor { text } +db.wordsize.attribute = + + ## Indicates the word size (width in bits) of the computer architecture to which the element applies + attribute wordsize { text } +db.outputformat.attribute = + + ## Indicates the output format (for example, print or epub) to which the element applies + attribute outputformat { text } +db.effectivity.attributes = + db.arch.attribute? + & db.audience.attribute? + & db.condition.attribute? + & db.conformance.attribute? + & db.os.attribute? + & db.revision.attribute? + & db.security.attribute? + & db.userlevel.attribute? + & db.vendor.attribute? + & db.wordsize.attribute? + & db.outputformat.attribute? +db.endterm.attribute = + + ## Points to the element whose content is to be used as the text of the link + attribute endterm { xsd:IDREF } +db.linkend.attribute = + + ## Points to an internal link target by identifying the value of its xml:id attribute + attribute linkend { xsd:IDREF } +db.linkends.attribute = + + ## Points to one or more internal link targets by identifying the value of their xml:id attributes + attribute linkends { xsd:IDREFS } +db.xlink.href.attribute = + + ## Identifies a link target with a URI + attribute xlink:href { xsd:anyURI } +db.xlink.simple.type.attribute = + + ## Identifies the XLink link type + attribute xlink:type { + + ## An XLink simple link type + "simple" + } +db.xlink.role.attribute = + + ## Identifies the XLink role of the link + attribute xlink:role { xsd:anyURI } +db.xlink.arcrole.attribute = + + ## Identifies the XLink arcrole of the link + attribute xlink:arcrole { xsd:anyURI } +db.xlink.title.attribute = + + ## Identifies the XLink title of the link + attribute xlink:title { text } +db.xlink.show.enumeration = + + ## An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + "new" + | + ## An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. + "replace" + | + ## An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + "embed" + | + ## The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior. + "other" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + "none" +db.xlink.show.attribute = + + ## Identifies the XLink show behavior of the link + attribute xlink:show { db.xlink.show.enumeration } +db.xlink.actuate.enumeration = + + ## An application should traverse to the ending resource immediately on loading the starting resource. + "onLoad" + | + ## An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + "onRequest" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior. + "other" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + "none" +db.xlink.actuate.attribute = + + ## Identifies the XLink actuate behavior of the link + attribute xlink:actuate { db.xlink.actuate.enumeration } +db.xlink.simple.link.attributes = + db.xlink.simple.type.attribute? + & db.xlink.href.attribute? + & db.xlink.role.attribute? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? +db.xlink.attributes = + db.xlink.simple.link.attributes + | (db.xlink.extended.link.attributes + | db.xlink.locator.link.attributes + | db.xlink.arc.link.attributes + | db.xlink.resource.link.attributes + | db.xlink.title.link.attributes) +db.xml.id.attribute = + + ## Identifies the unique ID value of the element + attribute xml:id { xsd:ID } +db.version.attribute = + + ## Specifies the DocBook version of the element and its descendants + attribute version { text } +db.xml.lang.attribute = + + ## Specifies the natural language of the element and its descendants + attribute xml:lang { text } +db.xml.base.attribute = + + ## Specifies the base URI of the element and its descendants + attribute xml:base { xsd:anyURI } +db.remap.attribute = + + ## Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + attribute remap { text } +db.xreflabel.attribute = + + ## Provides the text that is to be generated for a cross reference to the element + attribute xreflabel { text } +db.xrefstyle.attribute = + + ## Specifies a keyword or keywords identifying additional style information + attribute xrefstyle { text } +db.revisionflag.enumeration = + + ## The element has been changed. + "changed" + | + ## The element is new (has been added to the document). + "added" + | + ## The element has been deleted. + "deleted" + | + ## Explicitly turns off revision markup for this element. + "off" +db.revisionflag.attribute = + + ## Identifies the revision status of the element + attribute revisionflag { db.revisionflag.enumeration } +db.dir.enumeration = + + ## Left-to-right text + "ltr" + | + ## Right-to-left text + "rtl" + | + ## Left-to-right override + "lro" + | + ## Right-to-left override + "rlo" +db.dir.attribute = + + ## Identifies the direction of text in an element + attribute dir { db.dir.enumeration } +db.rdfalite.vocab = + + ## The RDFa Lite vocab + attribute vocab { xsd:anyURI } +db.rdfalite.typeof = + + ## The RDFa Lite typeof + attribute typeof { text } +db.rdfalite.property = + + ## The RDFa Lite property + attribute property { text } +db.rdfalite.resource = + + ## The RDFa Lite resource + attribute resource { text } +db.rdfalite.prefix = + + ## The RDFa Lite prefix + attribute prefix { text } +db.rdfalite.attributes = + db.rdfalite.vocab? + & db.rdfalite.typeof? + & db.rdfalite.property? + & db.rdfalite.resource? + & db.rdfalite.prefix? +db.trans.idfixup.enumeration = + + ## No ID fixup strategy + "none" + | + ## ID fixup by concatenating suffixes + "suffix" + | + ## ID fixup by creating unique values + "auto" +db.trans.idfixup.attribute = + + ## The transclusion ID fixup strategy + attribute trans:idfixup { db.trans.idfixup.enumeration } +db.trans.suffix.attribute = + + ## The transclusion suffix to use when the suffix ID fixup strategy is employed + [ + s:pattern [ + s:title [ "Suffix fixup must be specified" ] + s:rule [ + context = "db:*[@trans:suffix]" + s:assert [ + test = "@trans:idfixup = 'suffix'" + "If a suffix is specified, suffix ID fixup must also be specified." + ] + ] + ] + ] + attribute trans:suffix { text } +db.trans.linkscope.enumeration = + + ## No link scope adjustments are made + "user" + | + ## The link scopes are adjusted with the suffix property + "local" + | + ## The link scopes are adjusted based on proximity + "near" + | + ## The link scopes are adjusted based on document order + "global" +db.trans.linkscope.attribute = + + ## The transclusion link scope adjustment + attribute trans:linkscope { db.trans.linkscope.enumeration } +db.common.transclusion.attributes = + db.trans.idfixup.attribute? + & db.trans.suffix.attribute? + & db.trans.linkscope.attribute? +db.common.base.attributes = + db.version.attribute? + & db.xml.lang.attribute? + & db.xml.base.attribute? + & db.remap.attribute? + & db.xreflabel.attribute? + & db.revisionflag.attribute? + & db.dir.attribute? + & db.effectivity.attributes + & db.rdfalite.attributes + & db.common.transclusion.attributes + & db._any_other.attribute* +db.common.attributes = + db.xml.id.attribute? + & db.common.base.attributes + & db.annotations.attribute? +db.common.idreq.attributes = + db.xml.id.attribute + & db.common.base.attributes + & db.annotations.attribute? +db.common.linking.attributes = + (db.linkend.attribute | db.xlink.attributes)? +db.common.req.linking.attributes = + db.linkend.attribute | db.xlink.attributes +db.common.data.attributes = + + ## Specifies the format of the data + attribute format { text }?, + ( + ## Indentifies the location of the data by URI + attribute fileref { xsd:anyURI } + | + ## Identifies the location of the data by external identifier (entity name) + attribute entityref { xsd:ENTITY }) +db.verbatim.continuation.enumeration = + + ## Line numbering continues from the immediately preceding element with the same name. + "continues" + | + ## Line numbering restarts (begins at 1, usually). + "restarts" +db.verbatim.continuation.attribute = + + ## Determines whether line numbering continues from the previous element or restarts + attribute continuation { db.verbatim.continuation.enumeration } +db.verbatim.linenumbering.enumeration = + + ## Lines are numbered. + "numbered" + | + ## Lines are not numbered. + "unnumbered" +db.verbatim.linenumbering.attribute = + + ## Determines whether lines are numbered + attribute linenumbering { db.verbatim.linenumbering.enumeration } +db.verbatim.startinglinenumber.attribute = + + ## Specifies the initial line number + attribute startinglinenumber { xsd:integer } +db.verbatim.language.attribute = + + ## Identifies the language (i.e. programming language) of the verbatim content + attribute language { text } +db.verbatim.xml.space.attribute = + + ## Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not + attribute xml:space { + + ## Whitespace must be preserved. + "preserve" + } +db.verbatim.common.attributes = + db.verbatim.continuation.attribute? + & db.verbatim.linenumbering.attribute? + & db.verbatim.startinglinenumber.attribute? + & db.verbatim.xml.space.attribute? +db.verbatim.attributes = + db.verbatim.common.attributes & db.verbatim.language.attribute? +db.label.attribute = + + ## Specifies an identifying string for presentation purposes + attribute label { text } +db.width.characters.attribute = + + ## Specifies the width (in characters) of the element + attribute width { xsd:nonNegativeInteger } +db.spacing.enumeration = + + ## The spacing should be "compact". + "compact" + | + ## The spacing should be "normal". + "normal" +db.spacing.attribute = + + ## Specifies (a hint about) the spacing of the content + attribute spacing { db.spacing.enumeration } +db.pgwide.enumeration = + + ## The element should be rendered in the current text flow (with the flow column width). + "0" + | + ## The element should be rendered across the full text page. + "1" +db.pgwide.attribute = + + ## Indicates if the element is rendered across the column or the page + attribute pgwide { db.pgwide.enumeration } +db.language.attribute = + + ## Identifies the language (i.e. programming language) of the content + attribute language { text } +db.performance.enumeration = + + ## The content describes an optional step or steps. + "optional" + | + ## The content describes a required step or steps. + "required" +db.performance.attribute = + + ## Specifies if the content is required or optional + attribute performance { db.performance.enumeration } +db.floatstyle.attribute = + + ## Specifies style information to be used when rendering the float + attribute floatstyle { text } +db.width.attribute = + + ## Specifies the width of the element + attribute width { text } +db.depth.attribute = + + ## Specifies the depth of the element + attribute depth { text } +db.contentwidth.attribute = + + ## Specifies the width of the content rectangle + attribute contentwidth { text } +db.contentdepth.attribute = + + ## Specifies the depth of the content rectangle + attribute contentdepth { text } +db.scalefit.enumeration = + + ## False (do not scale-to-fit; anamorphic scaling may occur) + "0" + | + ## True (scale-to-fit; anamorphic scaling is forbidden) + "1" +db.scale.attribute = + + ## Specifies the scaling factor + attribute scale { xsd:positiveInteger } +db.classid.attribute = + + ## Specifies a classid for a media object player + attribute classid { text } +db.autoplay.attribute = + + ## Specifies the autoplay setting for a media object player + attribute autoplay { text } +db.halign.enumeration = + + ## Centered horizontally + "center" + | + ## Aligned horizontally on the specified character + "char" + | + ## Fully justified (left and right margins or edges) + "justify" + | + ## Left aligned + "left" + | + ## Right aligned + "right" +db.valign.enumeration = + + ## Aligned on the bottom of the region + "bottom" + | + ## Centered vertically + "middle" + | + ## Aligned on the top of the region + "top" +db.biblio.class.enumeration = + + ## A digital object identifier. + "doi" + | + ## An international standard book number. + "isbn" + | + ## An international standard technical report number (ISO 10444). + "isrn" + | + ## An international standard serial number. + "issn" + | + ## An international standard text code. + "istc" + | + ## A Library of Congress reference number. + "libraryofcongress" + | + ## A publication number (an internal number or possibly organizational standard). + "pubsnumber" + | + ## A Uniform Resource Identifier + "uri" +db.biblio.class-enum.attribute = + + ## Identifies the kind of bibliographic identifier + attribute class { db.biblio.class.enumeration }? +db.biblio.class-other.attribute = + + ## Identifies the nature of the non-standard bibliographic identifier + attribute otherclass { xsd:NMTOKEN } +db.biblio.class-other.attributes = + + ## Identifies the kind of bibliographic identifier + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.biblio.class-other.attribute +db.biblio.class.attribute = + db.biblio.class-enum.attribute | db.biblio.class-other.attributes +db.pubwork.enumeration = + + ## An article + "article" + | + ## A bulletin board system + "bbs" + | + ## A book + "book" + | + ## A CD-ROM + "cdrom" + | + ## A chapter (as of a book) + "chapter" + | + ## A DVD + "dvd" + | + ## An email message + "emailmessage" + | + ## A gopher page + "gopher" + | + ## A journal + "journal" + | + ## A manuscript + "manuscript" + | + ## A posting to a newsgroup + "newsposting" + | + ## A part (as of a book) + "part" + | + ## A reference entry + "refentry" + | + ## A section (as of a book or article) + "section" + | + ## A series + "series" + | + ## A set (as of books) + "set" + | + ## A web page + "webpage" + | + ## A wiki page + "wiki" + | + ## Some other kind of work + "other" +db.biblio.pubwork.enumeration = db.pubwork.enumeration +db.biblio.pubwork-enum.attribute = + + ## Identifies the nature of the published work + attribute pubwork { db.biblio.pubwork.enumeration }? +db.biblio.pubwork-other.attribute = + + ## Identifies the nature of some other kind of published work + attribute otherpubwork { xsd:NMTOKEN } +db.biblio.pubwork-other.attributes = + + ## Identifies that this is some other kind of published work + attribute pubwork { + + ## Indicates that the published work is some 'other' kind. + "other" + } + & db.biblio.pubwork-other.attribute +db.biblio.pubwork.attribute = + db.biblio.pubwork-enum.attribute | db.biblio.pubwork-other.attributes +db.ubiq.inlines = + (db.inlinemediaobject + | db.remark + | db.link.inlines + | db.alt + | db.trademark + | # below, effectively the publishing inlines (as of 5.0) + db.abbrev + | db.acronym + | db.date + | db._emphasis + | db.footnote + | db.footnoteref + | db._foreignphrase + | db._phrase + | db._quote + | db.subscript + | db.superscript + | db.wordasword) + | db.annotation + | (db._firstterm | db._glossterm) + | db.indexterm + | db.coref +db._text = (text | db.ubiq.inlines | db._phrase | db.replaceable)* +db._title = db.title? & db.titleabbrev? & db.subtitle? +db._title.req = db.title & db.titleabbrev? & db.subtitle? +db._title.only = db.title? & db.titleabbrev? +db._title.onlyreq = db.title & db.titleabbrev? +db._info = (db._title, db.titleforbidden.info?) | db.info? +db._info.title.req = + (db._title.req, db.titleforbidden.info?) | db.titlereq.info +db._info.title.only = + (db._title.only, db.titleforbidden.info?) | db.titleonly.info +db._info.title.onlyreq = + (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info +db._info.title.forbidden = db.titleforbidden.info? +db.all.inlines = + text + | db.ubiq.inlines + | db.general.inlines + | db.domain.inlines + | db.extension.inlines +db.general.inlines = + db.publishing.inlines + | db.product.inlines + | db.bibliography.inlines + | db.graphic.inlines + | db.indexing.inlines + | db.link.inlines +db.domain.inlines = + db.technical.inlines + | db.math.inlines + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines + | db.os.inlines + | db.programming.inlines + | db.error.inlines +db.technical.inlines = + (db.replaceable | db.package | db.parameter) + | db.termdef + | db.nonterminal + | (db.systemitem | db.option | db.optional | db.property) +db.product.inlines = + db.trademark + | (db.productnumber + | db.productname + | db.database + | db.application + | db.hardware) +db.bibliography.inlines = + db.citation + | db.citerefentry + | db.citetitle + | db.citebiblioid + | db.author + | db.person + | db.personname + | db.org + | db.orgname + | db.editor + | db.jobtitle +db.publishing.inlines = + (db.abbrev + | db.acronym + | db.date + | db.emphasis + | db.footnote + | db.footnoteref + | db.foreignphrase + | db.phrase + | db.quote + | db.revnumber + | db.subscript + | db.superscript + | db.wordasword) + | db.glossary.inlines + | db.coref +db.graphic.inlines = db.inlinemediaobject +db.indexing.inlines = notAllowed | db.indexterm +db.link.inlines = + (db.xref | db.link | db.olink | db.anchor) | db.biblioref +db.extension.inlines = notAllowed +db.nopara.blocks = + (db.list.blocks + | db.wrapper.blocks + | db.formal.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.indexterm + | db.synopsis.blocks + | db.admonition.blocks +db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara +db.all.blocks = + (db.nopara.blocks | db.para.blocks | db.extension.blocks) + | db.annotation +db.wrapper.blocks = db.formalgroup +db.formal.blocks = (db.example | db.figure | db.table) | db.equation +db.informal.blocks = + (db.informalexample | db.informalfigure | db.informaltable) + | db.informalequation +db.publishing.blocks = + db.sidebar | db.blockquote | db.address | db.epigraph +db.graphic.blocks = db.mediaobject | db.screenshot +db.technical.blocks = + db.procedure + | db.task + | (db.productionset | db.constraintdef) + | db.msgset +db.list.blocks = + (db.itemizedlist + | db.orderedlist + | db.procedure + | db.simplelist + | db.variablelist + | db.segmentedlist) + | db.glosslist + | db.bibliolist + | db.calloutlist + | db.qandaset +db.verbatim.blocks = + (db.screen | db.literallayout) + | (db.programlistingco | db.screenco) + | (db.programlisting | db.synopsis) +db.extension.blocks = notAllowed +db.info.extension = db._any +db.info.elements = + (db.abstract + | db.address + | db.artpagenums + | db.author + | db.authorgroup + | db.authorinitials + | db.bibliocoverage + | db.biblioid + | db.bibliosource + | db.collab + | db.confgroup + | db.contractsponsor + | db.contractnum + | db.copyright + | db.cover + | db.date + | db.edition + | db.editor + | db.issuenum + | db.keywordset + | db.legalnotice + | db.mediaobject + | db.org + | db.orgname + | db.othercredit + | db.pagenums + | db.printhistory + | db.pubdate + | db.publisher + | db.publishername + | db.releaseinfo + | db.revhistory + | db.seriesvolnums + | db.subjectset + | db.volumenum + | db.meta + | db.info.extension) + | db.annotation + | db.extendedlink + | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset) + | db.itermset + | (db.productname | db.productnumber) +db.bibliographic.elements = + db.info.elements + | db.publishing.inlines + | db.citerefentry + | db.citetitle + | db.citebiblioid + | db.person + | db.personblurb + | db.personname + | db.subtitle + | db.title + | db.titleabbrev +div { + db.title.role.attribute = attribute role { text } + db.title.attlist = + db.title.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.title = + + ## The text of the title of a section of a document or of a formal block-level element + element title { db.title.attlist, db.all.inlines* } +} +div { + db.titleabbrev.role.attribute = attribute role { text } + db.titleabbrev.attlist = + db.titleabbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.titleabbrev = + + ## The abbreviation of a title + element titleabbrev { db.titleabbrev.attlist, db.all.inlines* } +} +div { + db.subtitle.role.attribute = attribute role { text } + db.subtitle.attlist = + db.subtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subtitle = + + ## The subtitle of a document + element subtitle { db.subtitle.attlist, db.all.inlines* } +} +div { + db.info.role.attribute = attribute role { text } + db.info.attlist = db.info.role.attribute? & db.common.attributes + db.info = + + ## A wrapper for information about a component or other block + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { db.info.attlist, (db._title & db.info.elements*) } +} +div { + db.titlereq.info.role.attribute = attribute role { text } + db.titlereq.info.attlist = + db.titlereq.info.role.attribute? & db.common.attributes + db.titlereq.info = + + ## A wrapper for information about a component or other block with a required title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { + db.titlereq.info.attlist, (db._title.req & db.info.elements*) + } +} +div { + db.titleonly.info.role.attribute = attribute role { text } + db.titleonly.info.attlist = + db.titleonly.info.role.attribute? & db.common.attributes + db.titleonly.info = + + ## A wrapper for information about a component or other block with only a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { + db.titleonly.info.attlist, (db._title.only & db.info.elements*) + } +} +div { + db.titleonlyreq.info.role.attribute = attribute role { text } + db.titleonlyreq.info.attlist = + db.titleonlyreq.info.role.attribute? & db.common.attributes + db.titleonlyreq.info = + + ## A wrapper for information about a component or other block with only a required title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { + db.titleonlyreq.info.attlist, + (db._title.onlyreq & db.info.elements*) + } +} +div { + db.titleforbidden.info.role.attribute = attribute role { text } + db.titleforbidden.info.attlist = + db.titleforbidden.info.role.attribute? & db.common.attributes + db.titleforbidden.info = + + ## A wrapper for information about a component or other block without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { db.titleforbidden.info.attlist, db.info.elements* } +} +div { + db.subjectset.role.attribute = attribute role { text } + db.subjectset.scheme.attribute = + + ## Identifies the controlled vocabulary used by this set's terms + attribute scheme { xsd:NMTOKEN } + db.subjectset.attlist = + db.subjectset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.subjectset.scheme.attribute? + db.subjectset = + + ## A set of terms describing the subject matter of a document + element subjectset { db.subjectset.attlist, db.subject+ } +} +div { + db.subject.role.attribute = attribute role { text } + db.subject.weight.attribute = + + ## Specifies a ranking for this subject relative to other subjects in the same set + attribute weight { text } + db.subject.attlist = + db.subject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.subject.weight.attribute? + db.subject = + + ## One of a group of terms describing the subject matter of a document + element subject { db.subject.attlist, db.subjectterm+ } +} +div { + db.subjectterm.role.attribute = attribute role { text } + db.subjectterm.attlist = + db.subjectterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subjectterm = + + ## A term in a group of terms describing the subject matter of a document + element subjectterm { db.subjectterm.attlist, text } +} +div { + db.keywordset.role.attribute = attribute role { text } + db.keywordset.attlist = + db.keywordset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keywordset = + + ## A set of keywords describing the content of a document + element keywordset { db.keywordset.attlist, db.keyword+ } +} +div { + db.keyword.role.attribute = attribute role { text } + db.keyword.attlist = + db.keyword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keyword = + + ## One of a set of keywords describing the content of a document + element keyword { db.keyword.attlist, text } +} +db.table.choice = notAllowed | db.cals.table | db.html.table +db.informaltable.choice = + notAllowed | db.cals.informaltable | db.html.informaltable +db.table = db.table.choice +db.informaltable = db.informaltable.choice +div { + db.procedure.role.attribute = attribute role { text } + db.procedure.type.attribute = + + ## Identifies the type of procedure + attribute type { text }? + db.procedure.attlist = + db.procedure.role.attribute? + & db.procedure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + db.procedure.info = db._info.title.only + db.procedure = + + ## A list of operations to be performed in a well-defined sequence + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:procedure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element procedure { + db.procedure.attlist, + db.procedure.info, + db.all.blocks*, + db.step+, + db.result? + } +} +div { + db.step.role.attribute = attribute role { text } + db.step.attlist = + db.step.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.step.info = db._info.title.only + # This content model is blocks*, step|stepalternatives, blocks* but + # expressed this way it avoids UPA issues in XSD and DTD versions + db.step = + + ## A unit of action in a procedure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:step" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element step { + db.step.attlist, + db.step.info, + ((db.all.blocks+, + ((db.substeps | db.stepalternatives), db.all.blocks*)?, + db.result?) + | ((db.substeps | db.stepalternatives), + db.all.blocks*, + db.result?)) + } +} +div { + db.stepalternatives.role.attribute = attribute role { text } + db.stepalternatives.attlist = + db.stepalternatives.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.stepalternatives.info = db._info.title.forbidden + db.stepalternatives = + + ## Alternative steps in a procedure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:stepalternatives" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element stepalternatives { + db.stepalternatives.attlist, db.stepalternatives.info, db.step+ + } +} +div { + db.substeps.role.attribute = attribute role { text } + db.substeps.attlist = + db.substeps.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.substeps = + + ## A wrapper for steps that occur within steps in a procedure + element substeps { db.substeps.attlist, db.step+ } +} +div { + db.result.role.attribute = attribute role { text } + db.result.attlist = + db.result.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.result = + + ## A wrapper for identifying the results of a procedure or step + element result { db.result.attlist, db.all.blocks+ } +} +div { + db.sidebar.floatstyle.attribute = db.floatstyle.attribute + db.sidebar.role.attribute = attribute role { text } + db.sidebar.attlist = + db.sidebar.role.attribute? + & db.sidebar.floatstyle.attribute? + & db.common.attributes + & db.common.linking.attributes + db.sidebar.info = db._info + db.sidebar = + + ## A portion of a document that is isolated from the main narrative flow + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:sidebar" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of sidebar" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sidebar" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sidebar { + db.sidebar.attlist, db.sidebar.info, db.all.blocks+ + } +} +div { + db.abstract.role.attribute = attribute role { text } + db.abstract.attlist = + db.abstract.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abstract.info = db._info.title.only + db.abstract = + + ## A summary + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:abstract" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element abstract { + db.abstract.attlist, db.abstract.info, db.all.blocks+ + } +} +div { + db.personblurb.role.attribute = attribute role { text } + db.personblurb.attlist = + db.personblurb.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.personblurb.info = db._info.title.only + db.personblurb = + + ## A short description or note about a person + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:personblurb" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element personblurb { + db.personblurb.attlist, db.personblurb.info, db.para.blocks+ + } +} +div { + db.blockquote.role.attribute = attribute role { text } + db.blockquote.attlist = + db.blockquote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.blockquote.info = db._info.title.only + db.blockquote = + + ## A quotation set off from the main text + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:blockquote" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element blockquote { + db.blockquote.attlist, + db.blockquote.info, + db.attribution?, + db.all.blocks+ + } +} +div { + db.attribution.role.attribute = attribute role { text } + db.attribution.attlist = + db.attribution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.attribution = + + ## The source of a block quote or epigraph + element attribution { + db.attribution.attlist, + (db._text + | db.person + | db.personname + | db.citetitle + | db.citation)* + } +} +div { + db.bridgehead.renderas.enumeration = + + ## Render as a first-level section + "sect1" + | + ## Render as a second-level section + "sect2" + | + ## Render as a third-level section + "sect3" + | + ## Render as a fourth-level section + "sect4" + | + ## Render as a fifth-level section + "sect5" + db.bridgehead.renderas-enum.attribute = + + ## Indicates how the bridge head should be rendered + attribute renderas { db.bridgehead.renderas.enumeration }? + db.bridgehead.renderas-other.attribute = + + ## Identifies the nature of the non-standard rendering + attribute otherrenderas { xsd:NMTOKEN } + db.bridgehead.renderas-other.attributes = + + ## Indicates how the bridge head should be rendered + attribute renderas { + + ## Identifies a non-standard rendering + "other" + } + & db.bridgehead.renderas-other.attribute + db.bridgehead.renderas.attribute = + db.bridgehead.renderas-enum.attribute + | db.bridgehead.renderas-other.attributes + db.bridgehead.role.attribute = attribute role { text } + db.bridgehead.attlist = + db.bridgehead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bridgehead.renderas.attribute? + db.bridgehead = + + ## A free-floating heading + element bridgehead { db.bridgehead.attlist, db.all.inlines* } +} +div { + db.remark.role.attribute = attribute role { text } + db.remark.attlist = + db.remark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.remark = + + ## A remark (or comment) intended for presentation in a draft manuscript + element remark { db.remark.attlist, db.all.inlines* } +} +div { + db.epigraph.role.attribute = attribute role { text } + db.epigraph.attlist = + db.epigraph.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.epigraph.info = db._info.title.forbidden + db.epigraph = + + ## A short inscription at the beginning of a document or component + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:epigraph" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element epigraph { + db.epigraph.attlist, + db.epigraph.info, + db.attribution?, + (db.para.blocks | db.literallayout)+ + } +} +div { + db.footnote.role.attribute = attribute role { text } + db.footnote.label.attribute = + + ## Identifies the desired footnote mark + attribute label { xsd:NMTOKEN } + db.footnote.attlist = + db.footnote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.footnote.label.attribute? + db.footnote = + + ## A footnote + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:footnote)" + "footnote must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:epigraph)" + "epigraph must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of footnote" + ] + ] + ] + ] + element footnote { db.footnote.attlist, db.all.blocks+ } +} +div { + db.formalpara.role.attribute = attribute role { text } + db.formalpara.attlist = + db.formalpara.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.formalpara.info = db._info.title.onlyreq + db.formalpara = + + ## A paragraph with a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:formalpara" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element formalpara { + db.formalpara.attlist, + db.formalpara.info, + db.indexing.inlines*, + db.para + } +} +div { + db.para.role.attribute = attribute role { text } + db.para.attlist = + db.para.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.para.info = db._info.title.forbidden + db.para = + + ## A paragraph + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:para" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element para { + db.para.attlist, + db.para.info, + (db.all.inlines | db.nopara.blocks)* + } +} +div { + db.simpara.role.attribute = attribute role { text } + db.simpara.attlist = + db.simpara.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.simpara.info = db._info.title.forbidden + db.simpara = + + ## A paragraph that contains only text and inline markup, no block elements + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:simpara" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element simpara { + db.simpara.attlist, db.simpara.info, db.all.inlines* + } +} +div { + db.itemizedlist.role.attribute = attribute role { text } + db.itemizedlist.mark.attribute = + + ## Identifies the type of mark to be used on items in this list + attribute mark { xsd:NMTOKEN } + db.itemizedlist.attlist = + db.itemizedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & db.itemizedlist.mark.attribute? + db.itemizedlist.info = db._info.title.only + db.itemizedlist = + + ## A list in which each entry is marked with a bullet or other dingbat + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:itemizedlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element itemizedlist { + db.itemizedlist.attlist, + db.itemizedlist.info, + db.all.blocks*, + db.listitem+ + } +} +div { + db.orderedlist.role.attribute = attribute role { text } + db.orderedlist.continuation.enumeration = + + ## Specifies that numbering should begin where the preceding list left off + "continues" + | + ## Specifies that numbering should begin again at 1 + "restarts" + db.orderedlist.continuation.attribute = + + ## Indicates how list numbering should begin relative to the immediately preceding list + attribute continuation { db.orderedlist.continuation.enumeration } + db.orderedlist.startingnumber.attribute = + + ## Specifies the initial line number + attribute startingnumber { xsd:integer } + db.orderedlist.inheritnum.enumeration = + + ## Specifies that numbering should ignore list nesting + "ignore" + | + ## Specifies that numbering should inherit from outer-level lists + "inherit" + db.orderedlist.inheritnum.attribute = + + ## Indicates whether or not item numbering should be influenced by list nesting + attribute inheritnum { db.orderedlist.inheritnum.enumeration } + db.orderedlist.numeration.enumeration = + + ## Specifies Arabic numeration (1, 2, 3, …) + "arabic" + | + ## Specifies upper-case alphabetic numeration (A, B, C, …) + "upperalpha" + | + ## Specifies lower-case alphabetic numeration (a, b, c, …) + "loweralpha" + | + ## Specifies upper-case Roman numeration (I, II, III, …) + "upperroman" + | + ## Specifies lower-case Roman numeration (i, ii, iii …) + "lowerroman" + db.orderedlist.numeration.attribute = + + ## Indicates the desired numeration + attribute numeration { db.orderedlist.numeration.enumeration } + db.orderedlist.attlist = + db.orderedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & (db.orderedlist.continuation.attribute + | db.orderedlist.startingnumber.attribute)? + & db.orderedlist.inheritnum.attribute? + & db.orderedlist.numeration.attribute? + db.orderedlist.info = db._info.title.only + db.orderedlist = + + ## A list in which each entry is marked with a sequentially incremented label + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:orderedlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element orderedlist { + db.orderedlist.attlist, + db.orderedlist.info, + db.all.blocks*, + db.listitem+ + } +} +div { + db.listitem.role.attribute = attribute role { text } + db.listitem.override.attribute = + + ## Specifies the keyword for the type of mark that should be used on this + ## item, instead of the mark that would be used by default + attribute override { xsd:NMTOKEN } + db.listitem.attlist = + db.listitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.listitem.override.attribute? + db.listitem.info = db._info.title.forbidden + db.listitem = + + ## A wrapper for the elements of a list item + element listitem { + db.listitem.attlist, db.listitem.info, db.all.blocks+ + } +} +div { + db.segmentedlist.role.attribute = attribute role { text } + db.segmentedlist.attlist = + db.segmentedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.segmentedlist.info = db._info.title.only + db.segmentedlist = + + ## A segmented list, a list of sets of elements + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:segmentedlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element segmentedlist { + db.segmentedlist.attlist, + db.segmentedlist.info, + db.segtitle+, + db.seglistitem+ + } +} +div { + db.segtitle.role.attribute = attribute role { text } + db.segtitle.attlist = + db.segtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.segtitle = + + ## The title of an element of a list item in a segmented list + element segtitle { db.segtitle.attlist, db.all.inlines* } +} +div { + db.seglistitem.role.attribute = attribute role { text } + db.seglistitem.attlist = + db.seglistitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seglistitem = + + ## A list item in a segmented list + [ + s:pattern [ + s:title [ "Cardinality of segments and titles" ] + s:rule [ + context = "db:seglistitem" + s:assert [ + test = "count(db:seg) = count(../db:segtitle)" + "The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist" + ] + ] + ] + ] + element seglistitem { db.seglistitem.attlist, db.seg+ } +} +div { + db.seg.role.attribute = attribute role { text } + db.seg.attlist = + db.seg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seg = + + ## An element of a list item in a segmented list + element seg { db.seg.attlist, db.all.inlines* } +} +div { + db.simplelist.role.attribute = attribute role { text } + db.simplelist.type.enumeration = + + ## A tabular presentation in row-major order. + "horiz" + | + ## A tabular presentation in column-major order. + "vert" + | + ## An inline presentation, usually a comma-delimited list. + "inline" + db.simplelist.type.attribute = + + ## Specifies the type of list presentation + [ a:defaultValue = "vert" ] + attribute type { db.simplelist.type.enumeration } + db.simplelist.columns.attribute = + + ## Specifies the number of columns for horizontal or vertical presentation + attribute columns { xsd:integer } + db.simplelist.attlist = + db.simplelist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplelist.type.attribute? + & db.simplelist.columns.attribute? + db.simplelist = + + ## An undecorated list of single words or short phrases + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:simplelist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element simplelist { db.simplelist.attlist, db.member+ } +} +div { + db.member.role.attribute = attribute role { text } + db.member.attlist = + db.member.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.member = + + ## An element of a simple list + element member { db.member.attlist, db.all.inlines* } +} +div { + db.variablelist.role.attribute = attribute role { text } + db.variablelist.termlength.attribute = + + ## Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list + attribute termlength { text } + db.variablelist.attlist = + db.variablelist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & db.variablelist.termlength.attribute? + db.variablelist.info = db._info.title.only + db.variablelist = + + ## A list in which each entry is composed of a set of one or more terms and an associated description + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:variablelist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element variablelist { + db.variablelist.attlist, + db.variablelist.info, + db.all.blocks*, + db.varlistentry+ + } +} +div { + db.varlistentry.role.attribute = attribute role { text } + db.varlistentry.attlist = + db.varlistentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varlistentry = + + ## A wrapper for a set of terms and the associated description in a variable list + element varlistentry { + db.varlistentry.attlist, db.term+, db.listitem + } +} +div { + db.term.role.attribute = attribute role { text } + db.term.attlist = + db.term.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.term = + + ## The word or phrase being defined or described in a variable list + element term { db.term.attlist, db.all.inlines* } +} +div { + db.example.role.attribute = attribute role { text } + db.example.label.attribute = db.label.attribute + db.example.width.attribute = db.width.characters.attribute + db.example.pgwide.attribute = db.pgwide.attribute + db.example.floatstyle.attribute = db.floatstyle.attribute + db.example.type.attribute = + + ## Identifies the type of example + attribute type { text }? + db.example.attlist = + db.example.role.attribute? + & db.example.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.example.label.attribute? + & db.example.floatstyle.attribute? + & (db.example.width.attribute | db.example.pgwide.attribute)? + db.example.info = db._info.title.onlyreq + db.example = + + ## A formal example, with a title + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:example" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element example { + db.example.attlist, db.example.info, db.all.blocks+, db.caption? + } +} +div { + db.informalexample.role.attribute = attribute role { text } + db.informalexample.width.attribute = db.width.characters.attribute + db.informalexample.pgwide.attribute = db.pgwide.attribute + db.informalexample.floatstyle.attribute = db.floatstyle.attribute + db.informalexample.type.attribute = + + ## Identifies the type of example + attribute type { text }? + db.informalexample.attlist = + db.informalexample.role.attribute? + & db.informalexample.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.informalexample.floatstyle.attribute? + & (db.informalexample.width.attribute + | db.informalexample.pgwide.attribute)? + db.informalexample.info = db._info.title.forbidden + db.informalexample = + + ## A displayed example without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informalexample" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informalexample { + db.informalexample.attlist, + db.informalexample.info, + db.all.blocks+, + db.caption? + } +} +db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co +db.verbatim.contentmodel = + db._info.title.forbidden, (db.textobject | db.verbatim.inlines*) +div { + db.literallayout.role.attribute = attribute role { text } + db.literallayout.class.enumeration = + + ## The literal layout should be formatted with a monospaced font + "monospaced" + | + ## The literal layout should be formatted with the current font + "normal" + db.literallayout.class.attribute = + + ## Specifies the class of literal layout + attribute class { db.literallayout.class.enumeration } + db.literallayout.attlist = + db.literallayout.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.literallayout.class.attribute? + db.literallayout = + + ## A block of text in which line breaks and white space are to be reproduced faithfully + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:literallayout" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element literallayout { + db.literallayout.attlist, db.verbatim.contentmodel + } +} +div { + db.screen.role.attribute = attribute role { text } + db.screen.width.attribute = db.width.characters.attribute + db.screen.attlist = + db.screen.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.screen.width.attribute? + db.screen = + + ## Text that a user sees or might see on a computer screen + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:screen" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element screen { db.screen.attlist, db.verbatim.contentmodel } +} +div { + db.screenshot.role.attribute = attribute role { text } + db.screenshot.attlist = + db.screenshot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenshot.info = db._info + db.screenshot = + + ## A representation of what the user sees or might see on a computer screen + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:screenshot" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element screenshot { + db.screenshot.attlist, db.screenshot.info, db.mediaobject + } +} +div { + db.figure.role.attribute = attribute role { text } + db.figure.label.attribute = db.label.attribute + db.figure.pgwide.attribute = db.pgwide.attribute + db.figure.floatstyle.attribute = db.floatstyle.attribute + db.figure.type.attribute = + + ## Identifies the type of figure + attribute type { text }? + db.figure.attlist = + db.figure.role.attribute? + & db.figure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.figure.label.attribute? + & db.figure.pgwide.attribute? + & db.figure.floatstyle.attribute? + db.figure.info = db._info.title.onlyreq + db.figure = + + ## A formal figure, generally an illustration, with a title + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:figure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element figure { + db.figure.attlist, db.figure.info, db.all.blocks+, db.caption? + } +} +div { + db.informalfigure.role.attribute = attribute role { text } + db.informalfigure.label.attribute = db.label.attribute + db.informalfigure.pgwide.attribute = db.pgwide.attribute + db.informalfigure.floatstyle.attribute = db.floatstyle.attribute + db.informalfigure.type.attribute = + + ## Identifies the type of figure + attribute type { text }? + db.informalfigure.attlist = + db.informalfigure.role.attribute? + & db.informalfigure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.informalfigure.label.attribute? + & db.informalfigure.pgwide.attribute? + & db.informalfigure.floatstyle.attribute? + db.informalfigure.info = db._info.title.forbidden + db.informalfigure = + + ## A untitled figure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informalfigure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informalfigure { + db.informalfigure.attlist, + db.informalfigure.info, + db.all.blocks+, + db.caption? + } +} +db.mediaobject.content = + (db.videoobject | db.audioobject | db.imageobject | db.textobject) + | db.imageobjectco +div { + db.mediaobject.role.attribute = attribute role { text } + db.mediaobject.attlist = + db.mediaobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mediaobject.info = db._info.title.forbidden + db.mediaobject = + + ## A displayed media object (video, audio, image, etc.) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:mediaobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element mediaobject { + db.mediaobject.attlist, + db.mediaobject.info, + db.alt?, + db.mediaobject.content+, + db.caption? + } +} +div { + db.inlinemediaobject.role.attribute = attribute role { text } + db.inlinemediaobject.attlist = + db.inlinemediaobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlinemediaobject.info = db._info.title.forbidden + db.inlinemediaobject = + + ## An inline media object (video, audio, image, and so on) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:inlinemediaobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element inlinemediaobject { + db.inlinemediaobject.attlist, + db.inlinemediaobject.info, + db.alt?, + db.mediaobject.content+ + } +} +div { + db.videoobject.role.attribute = attribute role { text } + db.videoobject.attlist = + db.videoobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.videoobject.info = db._info.title.forbidden + db.videoobject = + + ## A wrapper for video data and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:videoobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element videoobject { + db.videoobject.attlist, db.videoobject.info, db.videodata+ + } +} +div { + db.audioobject.role.attribute = attribute role { text } + db.audioobject.attlist = + db.audioobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.audioobject.info = db._info.title.forbidden + db.audioobject = + + ## A wrapper for audio data and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:audioobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element audioobject { + db.audioobject.attlist, db.audioobject.info, db.audiodata+ + } +} +db.imageobject.content = + db.imagedata+ | db.imagedata.mathml | db.imagedata.svg+ +div { + db.imageobject.role.attribute = attribute role { text } + db.imageobject.attlist = + db.imageobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobject.info = db._info.title.forbidden + db.imageobject = + + ## A wrapper for image data and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imageobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imageobject { + db.imageobject.attlist, + db.imageobject.info, + db.imageobject.content + } +} +div { + db.textobject.role.attribute = attribute role { text } + db.textobject.attlist = + db.textobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.textobject.info = db._info.title.forbidden + db.textobject = + + ## A wrapper for a text description of an object and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:textobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element textobject { + db.textobject.attlist, + db.textobject.info, + (db.phrase | db.textdata | db.all.blocks+) + } +} +div { + db.videodata.role.attribute = attribute role { text } + db.videodata.align.enumeration = db.halign.enumeration + db.videodata.align.attribute = + + ## Specifies the (horizontal) alignment of the video data + attribute align { db.videodata.align.enumeration } + db.videodata.autoplay.attribute = db.autoplay.attribute + db.videodata.classid.attribute = db.classid.attribute + db.videodata.valign.enumeration = db.valign.enumeration + db.videodata.valign.attribute = + + ## Specifies the vertical alignment of the video data + attribute valign { db.videodata.valign.enumeration } + db.videodata.width.attribute = db.width.attribute + db.videodata.depth.attribute = db.depth.attribute + db.videodata.contentwidth.attribute = db.contentwidth.attribute + db.videodata.contentdepth.attribute = db.contentdepth.attribute + db.videodata.scalefit.enumeration = db.scalefit.enumeration + db.videodata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.videodata.scalefit.enumeration } + db.videodata.scale.attribute = db.scale.attribute + db.videodata.attlist = + db.videodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.videodata.align.attribute? + & db.videodata.valign.attribute? + & db.videodata.width.attribute? + & db.videodata.contentwidth.attribute? + & db.videodata.scalefit.attribute? + & db.videodata.scale.attribute? + & db.videodata.depth.attribute? + & db.videodata.contentdepth.attribute? + & db.videodata.autoplay.attribute? + & db.videodata.classid.attribute? + db.videodata.info = db._info.title.forbidden + db.videodata = + + ## Pointer to external video data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:videodata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element videodata { + db.videodata.attlist, db.videodata.info, db.multimediaparam* + } +} +div { + db.audiodata.role.attribute = attribute role { text } + db.audiodata.align.enumeration = db.halign.enumeration + db.audiodata.align.attribute = + + ## Specifies the (horizontal) alignment of the video data + attribute align { db.audiodata.align.enumeration } + db.audiodata.autoplay.attribute = db.autoplay.attribute + db.audiodata.classid.attribute = db.classid.attribute + db.audiodata.contentwidth.attribute = db.contentwidth.attribute + db.audiodata.contentdepth.attribute = db.contentdepth.attribute + db.audiodata.depth.attribute = db.depth.attribute + db.audiodata.scale.attribute = db.scale.attribute + db.audiodata.scalefit.enumeration = db.scalefit.enumeration + db.audiodata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.audiodata.scalefit.enumeration } + db.audiodata.valign.enumeration = db.valign.enumeration + db.audiodata.valign.attribute = + + ## Specifies the vertical alignment of the video data + attribute valign { db.audiodata.valign.enumeration } + db.audiodata.width.attribute = db.width.attribute + db.audiodata.attlist = + db.audiodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.audiodata.align.attribute? + & db.audiodata.autoplay.attribute? + & db.audiodata.classid.attribute? + & db.audiodata.contentdepth.attribute? + & db.audiodata.contentwidth.attribute? + & db.audiodata.depth.attribute? + & db.audiodata.scale.attribute? + & db.audiodata.scalefit.attribute? + & db.audiodata.valign.attribute? + & db.audiodata.width.attribute? + db.audiodata.info = db._info.title.forbidden + db.audiodata = + + ## Pointer to external audio data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:audiodata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element audiodata { + db.audiodata.attlist, db.audiodata.info, db.multimediaparam* + } +} +div { + db.imagedata.role.attribute = attribute role { text } + db.imagedata.align.enumeration = db.halign.enumeration + db.imagedata.align.attribute = + + ## Specifies the (horizontal) alignment of the image data + attribute align { db.imagedata.align.enumeration } + db.imagedata.valign.enumeration = db.valign.enumeration + db.imagedata.valign.attribute = + + ## Specifies the vertical alignment of the image data + attribute valign { db.imagedata.valign.enumeration } + db.imagedata.width.attribute = db.width.attribute + db.imagedata.depth.attribute = db.depth.attribute + db.imagedata.contentwidth.attribute = db.contentwidth.attribute + db.imagedata.contentdepth.attribute = db.contentdepth.attribute + db.imagedata.scalefit.enumeration = db.scalefit.enumeration + db.imagedata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.imagedata.scalefit.enumeration } + db.imagedata.scale.attribute = db.scale.attribute + db.imagedata.attlist = + db.imagedata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.info = db._info.title.forbidden + db.imagedata = + + ## Pointer to external image data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imagedata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imagedata { + db.imagedata.attlist, db.imagedata.info, db.multimediaparam* + } +} +div { + db.textdata.role.attribute = attribute role { text } + db.textdata.encoding.attribute = + + ## Identifies the encoding of the text in the external file + attribute encoding { text } + db.textdata.attlist = + db.textdata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.textdata.encoding.attribute? + db.textdata.info = db._info.title.forbidden + db.textdata = + + ## Pointer to external text data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:textdata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element textdata { db.textdata.attlist, db.textdata.info } +} +div { + db.multimediaparam.role.attribute = attribute role { text } + db.multimediaparam.name.attribute = + + ## Specifies the name of the parameter + attribute name { text } + db.multimediaparam.value.attribute = + + ## Specifies the value of the parameter + attribute value { text } + db.multimediaparam.valuetype.attribute = + + ## Specifies the type of the value of the parameter + attribute valuetype { text } + db.multimediaparam.attlist = + db.multimediaparam.role.attribute? + & db.common.attributes + & db.multimediaparam.name.attribute + & db.multimediaparam.value.attribute + & db.multimediaparam.valuetype.attribute? + db.multimediaparam = + + ## Application specific parameters for a media player + element multimediaparam { db.multimediaparam.attlist, empty } +} +div { + db.caption.role.attribute = attribute role { text } + db.caption.attlist = + db.caption.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caption.info = db._info.title.forbidden + db.caption = + + ## A caption + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:caption" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element caption { + db.caption.attlist, db.caption.info, db.all.blocks+ + } +} +div { + db.address.role.attribute = attribute role { text } + db.address.attlist = + db.address.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.address = + + ## A real-world address, generally a postal address + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:address" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element address { + db.address.attlist, + (db._text + | db.personname + | db.orgname + | db.pob + | db.street + | db.city + | db.state + | db.postcode + | db.country + | db.phone + | db.fax + | db.email + | db.uri + | db.otheraddr)* + } +} +div { + db.street.role.attribute = attribute role { text } + db.street.attlist = + db.street.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.street = + + ## A street address in an address + element street { db.street.attlist, db._text } +} +div { + db.pob.role.attribute = attribute role { text } + db.pob.attlist = + db.pob.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pob = + + ## A post office box in an address + element pob { db.pob.attlist, db._text } +} +div { + db.postcode.role.attribute = attribute role { text } + db.postcode.attlist = + db.postcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.postcode = + + ## A postal code in an address + element postcode { db.postcode.attlist, db._text } +} +div { + db.city.role.attribute = attribute role { text } + db.city.attlist = + db.city.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.city = + + ## The name of a city in an address + element city { db.city.attlist, db._text } +} +div { + db.state.role.attribute = attribute role { text } + db.state.attlist = + db.state.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.state = + + ## A state or province in an address + element state { db.state.attlist, db._text } +} +div { + db.country.role.attribute = attribute role { text } + db.country.attlist = + db.country.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.country = + + ## The name of a country + element country { db.country.attlist, db._text } +} +div { + db.phone.role.attribute = attribute role { text } + db.phone.attlist = + db.phone.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phone = + + ## A telephone number + element phone { db.phone.attlist, db._text } +} +div { + db.fax.role.attribute = attribute role { text } + db.fax.attlist = + db.fax.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.fax = + + ## A fax number + element fax { db.fax.attlist, db._text } +} +div { + db.otheraddr.role.attribute = attribute role { text } + db.otheraddr.attlist = + db.otheraddr.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.otheraddr = + + ## Uncategorized information in address + element otheraddr { db.otheraddr.attlist, db._text } +} +div { + db.affiliation.role.attribute = attribute role { text } + db.affiliation.attlist = + db.affiliation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.affiliation = + + ## The institutional affiliation of an individual + element affiliation { + db.affiliation.attlist, + db.shortaffil?, + db.jobtitle*, + (db.org? | (db.orgname?, db.orgdiv*, db.address*)) + } +} +div { + db.shortaffil.role.attribute = attribute role { text } + db.shortaffil.attlist = + db.shortaffil.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.shortaffil = + + ## A brief description of an affiliation + element shortaffil { db.shortaffil.attlist, db._text } +} +div { + db.jobtitle.role.attribute = attribute role { text } + db.jobtitle.attlist = + db.jobtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.jobtitle = + + ## The title of an individual in an organization + element jobtitle { db.jobtitle.attlist, db._text } +} +div { + db.orgname.class.enumeration = + + ## A consortium + "consortium" + | + ## A corporation + "corporation" + | + ## An informal organization + "informal" + | + ## A non-profit organization + "nonprofit" + db.orgname.class-enum.attribute = + + ## Specifies the nature of the organization + attribute class { db.orgname.class.enumeration } + db.orgname.class-other.attributes = + + ## Specifies the nature of the organization + attribute class { + + ## Indicates a non-standard organization class + "other" + }, + + ## Identifies the non-standard nature of the organization + attribute otherclass { text } + db.orgname.class.attribute = + db.orgname.class-enum.attribute | db.orgname.class-other.attributes + db.orgname.role.attribute = attribute role { text } + db.orgname.attlist = + db.orgname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.orgname.class.attribute? + db.orgname = + + ## The name of an organization + element orgname { db.orgname.attlist, db._text } +} +div { + db.orgdiv.role.attribute = attribute role { text } + db.orgdiv.attlist = + db.orgdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.orgdiv = + + ## A division of an organization + element orgdiv { db.orgdiv.attlist, db.all.inlines* } +} +div { + db.artpagenums.role.attribute = attribute role { text } + db.artpagenums.attlist = + db.artpagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.artpagenums = + + ## The page numbers of an article as published + element artpagenums { db.artpagenums.attlist, db._text } +} +div { + db.personname.role.attribute = attribute role { text } + db.personname.attlist = + db.personname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.personname = + + ## The personal name of an individual + element personname { + db.personname.attlist, + (db._text + | (db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername)+ + | (db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername)+) + } +} +db.person.author.contentmodel = + db.personname, + (db.personblurb + | db.affiliation + | db.email + | db.uri + | db.address + | db.contrib)* +db.org.author.contentmodel = + db.orgname, + (db.orgdiv + | db.affiliation + | db.email + | db.uri + | db.address + | db.contrib)* +db.credit.contentmodel = + db.person.author.contentmodel | db.org.author.contentmodel +div { + db.author.role.attribute = attribute role { text } + db.author.attlist = + db.author.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.author = + + ## The name of an individual author + element author { db.author.attlist, db.credit.contentmodel } +} +div { + db.authorgroup.role.attribute = attribute role { text } + db.authorgroup.attlist = + db.authorgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.authorgroup = + + ## Wrapper for author information when a document has multiple authors or collaborators + element authorgroup { + db.authorgroup.attlist, (db.author | db.editor | db.othercredit)+ + } +} +div { + db.collab.role.attribute = attribute role { text } + db.collab.attlist = + db.collab.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.collab = + + ## Identifies a collaborator + element collab { + db.collab.attlist, + (db.person | db.personname | db.org | db.orgname)+, + db.affiliation* + } +} +div { + db.authorinitials.role.attribute = attribute role { text } + db.authorinitials.attlist = + db.authorinitials.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.authorinitials = + + ## The initials or other short identifier for an author + element authorinitials { db.authorinitials.attlist, db._text } +} +div { + db.person.role.attribute = attribute role { text } + db.person.attlist = + db.person.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.person = + + ## A person and associated metadata + element person { + db.person.attlist, + db.personname, + (db.address + | db.affiliation + | db.email + | db.uri + | db.personblurb)* + } +} +div { + db.org.role.attribute = attribute role { text } + db.org.attlist = + db.org.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.org = + + ## An organization and associated metadata + element org { + db.org.attlist, + db.orgname, + (db.address | db.affiliation | db.email | db.uri | db.orgdiv)* + } +} +div { + db.confgroup.role.attribute = attribute role { text } + db.confgroup.attlist = + db.confgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confgroup = + + ## A wrapper for document meta-information about a conference + element confgroup { + db.confgroup.attlist, + (db.confdates + | db.conftitle + | db.confnum + | db.confsponsor + | db.address)* + } +} +div { + db.confdates.role.attribute = attribute role { text } + db.confdates.attlist = + db.confdates.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confdates = + + ## The dates of a conference for which a document was written + element confdates { db.confdates.attlist, db._text } +} +div { + db.conftitle.role.attribute = attribute role { text } + db.conftitle.attlist = + db.conftitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.conftitle = + + ## The title of a conference for which a document was written + element conftitle { db.conftitle.attlist, db._text } +} +div { + db.confnum.role.attribute = attribute role { text } + db.confnum.attlist = + db.confnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confnum = + + ## An identifier, frequently numerical, associated with a conference for which a document was written + element confnum { db.confnum.attlist, db._text } +} +div { + db.confsponsor.role.attribute = attribute role { text } + db.confsponsor.attlist = + db.confsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confsponsor = + + ## The sponsor of a conference for which a document was written + element confsponsor { db.confsponsor.attlist, db._text } +} +div { + db.contractnum.role.attribute = attribute role { text } + db.contractnum.attlist = + db.contractnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractnum = + + ## The contract number of a document + element contractnum { db.contractnum.attlist, db._text } +} +div { + db.contractsponsor.role.attribute = attribute role { text } + db.contractsponsor.attlist = + db.contractsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractsponsor = + + ## The sponsor of a contract + element contractsponsor { db.contractsponsor.attlist, db._text } +} +div { + db.copyright.role.attribute = attribute role { text } + db.copyright.attlist = + db.copyright.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.copyright = + + ## Copyright information about a document + element copyright { db.copyright.attlist, db.year+, db.holder* } +} +div { + db.year.role.attribute = attribute role { text } + db.year.attlist = + db.year.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.year = + + ## The year of publication of a document + element year { db.year.attlist, db._text } +} +div { + db.holder.role.attribute = attribute role { text } + db.holder.attlist = + db.holder.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.holder = + + ## The name of the individual or organization that holds a copyright + element holder { db.holder.attlist, db._text } +} +db.cover.contentmodel = + (db.para.blocks + | db.extension.blocks + | db.list.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.synopsis.blocks +div { + db.cover.role.attribute = attribute role { text } + db.cover.attlist = + db.cover.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.cover = + + ## Additional content for the cover of a publication + element cover { db.cover.attlist, db.cover.contentmodel+ } +} +db.date.contentmodel = + xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text +div { + db.date.role.attribute = attribute role { text } + db.date.attlist = + db.date.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.date = + + ## The date of publication or revision of a document + element date { db.date.attlist, db.date.contentmodel } +} +div { + db.edition.role.attribute = attribute role { text } + db.edition.attlist = + db.edition.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.edition = + + ## The name or number of an edition of a document + element edition { db.edition.attlist, db._text } +} +div { + db.editor.role.attribute = attribute role { text } + db.editor.attlist = + db.editor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.editor = + + ## The name of the editor of a document + element editor { db.editor.attlist, db.credit.contentmodel } +} +div { + db.biblioid.role.attribute = attribute role { text } + db.biblioid.attlist = + db.biblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.biblioid = + + ## An identifier for a document + element biblioid { db.biblioid.attlist, db._text } +} +div { + db.citebiblioid.role.attribute = attribute role { text } + db.citebiblioid.attlist = + db.citebiblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.citebiblioid = + + ## A citation of a bibliographic identifier + element citebiblioid { db.citebiblioid.attlist, db._text } +} +div { + db.bibliosource.role.attribute = attribute role { text } + db.bibliosource.attlist = + db.bibliosource.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.bibliosource = + + ## The source of a document + element bibliosource { db.bibliosource.attlist, db._text } +} +div { + db.bibliorelation.type.enumeration = + + ## The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + "hasformat" + | + ## The described resource includes the referenced resource either physically or logically + "haspart" + | + ## The described resource has a version, edition, or adaptation, namely, the referenced resource + "hasversion" + | + ## The described resource is the same intellectual content of the referenced resource, but presented in another format + "isformatof" + | + ## The described resource is a physical or logical part of the referenced resource + "ispartof" + | + ## The described resource is referenced, cited, or otherwise pointed to by the referenced resource + "isreferencedby" + | + ## The described resource is supplanted, displaced, or superceded by the referenced resource + "isreplacedby" + | + ## The described resource is required by the referenced resource, either physically or logically + "isrequiredby" + | + ## The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + "isversionof" + | + ## The described resource references, cites, or otherwise points to the referenced resource + "references" + | + ## The described resource supplants, displaces, or supersedes the referenced resource + "replaces" + | + ## The described resource requires the referenced resource to support its function, delivery, or coherence of content + "requires" + db.bibliorelation.type-enum.attribute = + + ## Identifies the type of relationship + attribute type { db.bibliorelation.type.enumeration }? + db.bibliorelation.type-other.attributes = + + ## Identifies the type of relationship + attribute type { + + ## The described resource has a non-standard relationship with the referenced resource + "othertype" + }?, + + ## A keyword that identififes the type of the non-standard relationship + attribute othertype { xsd:NMTOKEN } + db.bibliorelation.type.attribute = + db.bibliorelation.type-enum.attribute + | db.bibliorelation.type-other.attributes + db.bibliorelation.role.attribute = attribute role { text } + db.bibliorelation.attlist = + db.bibliorelation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + & db.bibliorelation.type.attribute + db.bibliorelation = + + ## The relationship of a document to another + element bibliorelation { db.bibliorelation.attlist, db._text } +} +div { + db.bibliocoverage.spacial.enumeration = + + ## The DCMI Point identifies a point in space using its geographic coordinates + "dcmipoint" + | + ## ISO 3166 Codes for the representation of names of countries + "iso3166" + | + ## The DCMI Box identifies a region of space using its geographic limits + "dcmibox" + | + ## The Getty Thesaurus of Geographic Names + "tgn" + db.bibliocoverage.spatial-enum.attribute = + + ## Specifies the type of spatial coverage + attribute spatial { db.bibliocoverage.spacial.enumeration }? + db.bibliocoverage.spatial-other.attributes = + + ## Specifies the type of spatial coverage + attribute spatial { + + ## Identifies a non-standard type of coverage + "otherspatial" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute otherspatial { xsd:NMTOKEN } + db.bibliocoverage.spatial.attribute = + db.bibliocoverage.spatial-enum.attribute + | db.bibliocoverage.spatial-other.attributes + db.bibliocoverage.temporal.enumeration = + + ## A specification of the limits of a time interval + "dcmiperiod" + | + ## W3C Encoding rules for dates and times—a profile based on ISO 8601 + "w3c-dtf" + db.bibliocoverage.temporal-enum.attribute = + + ## Specifies the type of temporal coverage + attribute temporal { db.bibliocoverage.temporal.enumeration }? + db.bibliocoverage.temporal-other.attributes = + + ## Specifies the type of temporal coverage + attribute temporal { + + ## Specifies a non-standard type of coverage + "othertemporal" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute othertemporal { xsd:NMTOKEN } + db.bibliocoverage.temporal.attribute = + db.bibliocoverage.temporal-enum.attribute + | db.bibliocoverage.temporal-other.attributes + db.bibliocoverage.coverage.attrib = + db.bibliocoverage.spatial.attribute + & db.bibliocoverage.temporal.attribute + db.bibliocoverage.role.attribute = attribute role { text } + db.bibliocoverage.attlist = + db.bibliocoverage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliocoverage.coverage.attrib + db.bibliocoverage = + + ## The spatial or temporal coverage of a document + element bibliocoverage { db.bibliocoverage.attlist, db._text } +} +div { + db.legalnotice.role.attribute = attribute role { text } + db.legalnotice.attlist = + db.legalnotice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.legalnotice.info = db._info.title.only + db.legalnotice = + + ## A statement of legal obligations or requirements + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:legalnotice" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element legalnotice { + db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+ + } +} +div { + db.othercredit.class.enumeration = + + ## A copy editor + "copyeditor" + | + ## A graphic designer + "graphicdesigner" + | + ## A production editor + "productioneditor" + | + ## A technical editor + "technicaleditor" + | + ## A translator + "translator" + | + ## An indexer + "indexer" + | + ## A proof-reader + "proofreader" + | + ## A cover designer + "coverdesigner" + | + ## An interior designer + "interiordesigner" + | + ## An illustrator + "illustrator" + | + ## A reviewer + "reviewer" + | + ## A typesetter + "typesetter" + | + ## A converter (a persons responsible for conversion, not an application) + "conversion" + db.othercredit.class-enum.attribute = + + ## Identifies the nature of the contributor + attribute class { db.othercredit.class.enumeration }? + db.othercredit.class-other.attribute = + + ## Identifies the nature of the non-standard contribution + attribute otherclass { xsd:NMTOKEN } + db.othercredit.class-other.attributes = + + ## Identifies the nature of the contributor + attribute class { + + ## Identifies a non-standard contribution + "other" + } + & db.othercredit.class-other.attribute + db.othercredit.class.attribute = + db.othercredit.class-enum.attribute + | db.othercredit.class-other.attributes + db.othercredit.role.attribute = attribute role { text } + db.othercredit.attlist = + db.othercredit.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.othercredit.class.attribute + db.othercredit = + + ## A person or entity, other than an author or editor, credited in a document + element othercredit { + db.othercredit.attlist, db.credit.contentmodel + } +} +div { + db.pagenums.role.attribute = attribute role { text } + db.pagenums.attlist = + db.pagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pagenums = + + ## The numbers of the pages in a book, for use in a bibliographic entry + element pagenums { db.pagenums.attlist, db._text } +} +div { + db.contrib.role.attribute = attribute role { text } + db.contrib.attlist = + db.contrib.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contrib = + + ## A summary of the contributions made to a document by a credited source + element contrib { db.contrib.attlist, db.all.inlines* } +} +div { + db.honorific.role.attribute = attribute role { text } + db.honorific.attlist = + db.honorific.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.honorific = + + ## The title of a person + element honorific { db.honorific.attlist, db._text } +} +div { + db.firstname.role.attribute = attribute role { text } + db.firstname.attlist = + db.firstname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.firstname = + + ## A given name of a person + element firstname { db.firstname.attlist, db._text } +} +div { + db.givenname.role.attribute = attribute role { text } + db.givenname.attlist = + db.givenname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.givenname = + + ## The given name of a person + element givenname { db.givenname.attlist, db._text } +} +div { + db.surname.role.attribute = attribute role { text } + db.surname.attlist = + db.surname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.surname = + + ## An inherited or family name; in western cultures the last name + element surname { db.surname.attlist, db._text } +} +div { + db.lineage.role.attribute = attribute role { text } + db.lineage.attlist = + db.lineage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineage = + + ## The portion of a person's name indicating a relationship to ancestors + element lineage { db.lineage.attlist, db._text } +} +div { + db.othername.role.attribute = attribute role { text } + db.othername.attlist = + db.othername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.othername = + + ## A component of a person's name that is not a first name, surname, or lineage + element othername { db.othername.attlist, db._text } +} +div { + db.printhistory.role.attribute = attribute role { text } + db.printhistory.attlist = + db.printhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.printhistory = + + ## The printing history of a document + element printhistory { db.printhistory.attlist, db.para.blocks+ } +} +div { + db.pubdate.role.attribute = attribute role { text } + db.pubdate.attlist = + db.pubdate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pubdate = + + ## The date of publication of a document + element pubdate { db.pubdate.attlist, db.date.contentmodel } +} +div { + db.publisher.role.attribute = attribute role { text } + db.publisher.attlist = + db.publisher.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publisher = + + ## The publisher of a document + element publisher { + db.publisher.attlist, db.publishername, db.address* + } +} +div { + db.publishername.role.attribute = attribute role { text } + db.publishername.attlist = + db.publishername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publishername = + + ## The name of the publisher of a document + element publishername { db.publishername.attlist, db._text } +} +div { + db.releaseinfo.role.attribute = attribute role { text } + db.releaseinfo.attlist = + db.releaseinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.releaseinfo = + + ## Information about a particular release of a document + element releaseinfo { db.releaseinfo.attlist, db._text } +} +div { + db.revhistory.role.attribute = attribute role { text } + db.revhistory.attlist = + db.revhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revhistory.info = db._info.title.only + db.revhistory = + + ## A history of the revisions to a document + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:revhistory" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element revhistory { + db.revhistory.attlist, db.revhistory.info, db.revision+ + } +} +div { + db.revision.role.attribute = attribute role { text } + db.revision.attlist = + db.revision.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revision = + + ## An entry describing a single revision in the history of the revisions to a document + element revision { + db.revision.attlist, + db.revnumber?, + db.date, + (db.authorinitials | db.author)*, + (db.revremark | db.revdescription)? + } +} +div { + db.revnumber.role.attribute = attribute role { text } + db.revnumber.attlist = + db.revnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revnumber = + + ## A document revision number + element revnumber { db.revnumber.attlist, db._text } +} +div { + db.revremark.role.attribute = attribute role { text } + db.revremark.attlist = + db.revremark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revremark = + + ## A description of a revision to a document + element revremark { db.revremark.attlist, db._text } +} +div { + db.revdescription.role.attribute = attribute role { text } + db.revdescription.attlist = + db.revdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revdescription = + + ## A extended description of a revision to a document + element revdescription { db.revdescription.attlist, db.all.blocks* } +} +div { + db.seriesvolnums.role.attribute = attribute role { text } + db.seriesvolnums.attlist = + db.seriesvolnums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seriesvolnums = + + ## Numbers of the volumes in a series of books + element seriesvolnums { db.seriesvolnums.attlist, db._text } +} +div { + db.volumenum.role.attribute = attribute role { text } + db.volumenum.attlist = + db.volumenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.volumenum = + + ## The volume number of a document in a set (as of books in a set or articles in a journal) + element volumenum { db.volumenum.attlist, db._text } +} +div { + db.issuenum.role.attribute = attribute role { text } + db.issuenum.attlist = + db.issuenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.issuenum = + + ## The number of an issue of a journal + element issuenum { db.issuenum.attlist, db._text } +} +div { + db.meta.role.attribute = attribute role { text } + db.meta.name.attribute = + + ## A name for the metadata element + attribute name { text } + db.meta.content.attribute = + + ## The metadata content + attribute content { text } + db.meta.attlist = + db.meta.name.attribute? + & db.meta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.meta.empty = + + ## A generic metadata element + element meta { db.meta.attlist, db.meta.content.attribute, empty } + db.meta.content = + + ## A generic metadata element + element meta { + db.meta.attlist, + (text | db._any | db.all.inlines | db.all.blocks)* + } + db.meta = db.meta.empty | db.meta.content +} +div { + db.package.role.attribute = attribute role { text } + db.package.attlist = + db.package.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.package = + + ## A software or application package + element package { db.package.attlist, db._text } +} +div { + db.email.role.attribute = attribute role { text } + db.email.attlist = + db.email.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.email = + + ## An email address + element email { db.email.attlist, db._text } +} +div { + db.lineannotation.role.attribute = attribute role { text } + db.lineannotation.attlist = + db.lineannotation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineannotation = + + ## A comment on a line in a verbatim listing + element lineannotation { db.lineannotation.attlist, db._text } +} +div { + db.parameter.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + db.parameter.class.attribute = + + ## Identifies the class of parameter + attribute class { db.parameter.class.enumeration } + db.parameter.role.attribute = attribute role { text } + db.parameter.attlist = + db.parameter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.parameter.class.attribute? + db.parameter = + + ## A value or a symbolic reference to a value + element parameter { db.parameter.attlist, db._text } +} +db.replaceable.inlines = db._text | db.co +div { + db.replaceable.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + | + ## A parameter + "parameter" + db.replaceable.class.attribute = + + ## Identifies the nature of the replaceable text + attribute class { db.replaceable.class.enumeration } + db.replaceable.role.attribute = attribute role { text } + db.replaceable.attlist = + db.replaceable.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.replaceable.class.attribute? + db.replaceable = + + ## Content that may or must be replaced by the user + element replaceable { + db.replaceable.attlist, db.replaceable.inlines* + } +} +div { + db.uri.type.attribute = + + ## Identifies the type of URI specified + attribute type { text }? + db.uri.role.attribute = attribute role { text } + db.uri.attlist = + db.uri.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.uri.type.attribute + db.uri = + + ## A Uniform Resource Identifier + element uri { db.uri.attlist, db._text } +} +div { + db.abbrev.role.attribute = attribute role { text } + db.abbrev.attlist = + db.abbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abbrev = + + ## An abbreviation, especially one followed by a period + element abbrev { + db.abbrev.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.acronym.role.attribute = attribute role { text } + db.acronym.attlist = + db.acronym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.acronym = + + ## An often pronounceable word made from the initial (or selected) letters of a name or phrase + element acronym { + db.acronym.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.citation.role.attribute = attribute role { text } + db.citation.attlist = + db.citation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citation = + + ## An inline bibliographic reference to another published work + element citation { db.citation.attlist, db.all.inlines* } +} +div { + db.citerefentry.role.attribute = attribute role { text } + db.citerefentry.attlist = + db.citerefentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citerefentry = + + ## A citation to a reference page + element citerefentry { + db.citerefentry.attlist, db.refentrytitle, db.manvolnum? + } +} +div { + db.refentrytitle.role.attribute = attribute role { text } + db.refentrytitle.attlist = + db.refentrytitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refentrytitle = + + ## The title of a reference page + element refentrytitle { db.refentrytitle.attlist, db.all.inlines* } +} +div { + db.manvolnum.role.attribute = attribute role { text } + db.manvolnum.attlist = + db.manvolnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.manvolnum = + + ## A reference volume number + element manvolnum { db.manvolnum.attlist, db._text } +} +div { + db.citetitle.pubwork.enumeration = db.pubwork.enumeration + db.citetitle.pubwork-enum.attribute = + + ## Identifies the nature of the publication being cited + attribute pubwork { db.citetitle.pubwork.enumeration } + db.citetitle.pubwork-other.attribute = + + ## Identifies the nature of some other kind of publication being cited + attribute otherpubwork { xsd:NMTOKEN } + db.citetitle.pubwork-other.attributes = + + ## Identifies that this is some other kind of publication being cited + attribute pubwork { + + ## Indicates that the published work is some 'other' kind. + "other" + } + & db.citetitle.pubwork-other.attribute + db.citetitle.pubwork.attribute = + db.citetitle.pubwork-enum.attribute + | db.citetitle.pubwork-other.attributes + db.citetitle.role.attribute = attribute role { text } + db.citetitle.attlist = + db.citetitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.citetitle.pubwork.attribute? + db.citetitle = + + ## The title of a cited work + element citetitle { db.citetitle.attlist, db.all.inlines* } +} +div { + db.emphasis.role.attribute = attribute role { text } + db.emphasis.attlist = + db.emphasis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.emphasis = + + ## Emphasized text + element emphasis { db.emphasis.attlist, db.all.inlines* } +} +div { + db._emphasis = + + ## A limited span of emphasized text + element emphasis { db.emphasis.attlist, db._text } +} +div { + db.foreignphrase.role.attribute = attribute role { text } + db.foreignphrase.attlist = + db.foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.foreignphrase = + + ## A word or phrase in a language other than the primary language of the document + element foreignphrase { + db.foreignphrase.attlist, (text | db.general.inlines)* + } +} +div { + db._foreignphrase.role.attribute = attribute role { text } + db._foreignphrase.attlist = + db._foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db._foreignphrase = + + ## A limited word or phrase in a language other than the primary language of the document + element foreignphrase { db._foreignphrase.attlist, db._text } +} +div { + db.phrase.role.attribute = attribute role { text } + db.phrase.attlist = + db.phrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phrase = + + ## A span of text + element phrase { db.phrase.attlist, db.all.inlines* } +} +div { + db._phrase = + + ## A limited span of text + element phrase { db.phrase.attlist, db._text } +} +div { + db.quote.role.attribute = attribute role { text } + db.quote.attlist = + db.quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.quote = + + ## An inline quotation + element quote { db.quote.attlist, db.all.inlines* } +} +div { + db._quote.role.attribute = attribute role { text } + db._quote.attlist = + db._quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db._quote = + + ## A limited inline quotation + element quote { db._quote.attlist, db._text } +} +div { + db.subscript.role.attribute = attribute role { text } + db.subscript.attlist = + db.subscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subscript = + + ## A subscript (as in H₂O, the molecular formula for water) + element subscript { db.subscript.attlist, db._text } +} +div { + db.superscript.role.attribute = attribute role { text } + db.superscript.attlist = + db.superscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.superscript = + + ## A superscript (as in x², the mathematical notation for x multiplied by itself) + element superscript { db.superscript.attlist, db._text } +} +div { + db.trademark.class.enumeration = + + ## A copyright + "copyright" + | + ## A registered copyright + "registered" + | + ## A service + "service" + | + ## A trademark + "trade" + db.trademark.class.attribute = + + ## Identifies the class of trade mark + attribute class { db.trademark.class.enumeration } + db.trademark.role.attribute = attribute role { text } + db.trademark.attlist = + db.trademark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.trademark.class.attribute? + db.trademark = + + ## A trademark + element trademark { db.trademark.attlist, db._text } +} +div { + db.wordasword.role.attribute = attribute role { text } + db.wordasword.attlist = + db.wordasword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.wordasword = + + ## A word meant specifically as a word and not representing anything else + element wordasword { db.wordasword.attlist, db._text } +} +div { + db.footnoteref.role.attribute = attribute role { text } + db.footnoteref.label.attribute = db.label.attribute + db.footnoteref.attlist = + db.footnoteref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.footnoteref.label.attribute? + db.footnoteref = + + ## A cross reference to a footnote (a footnote mark) + [ + s:pattern [ + s:title [ "Footnote reference type constraint" ] + s:rule [ + context = "db:footnoteref" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on footnoteref must point to a footnote." + ] + ] + ] + ] + element footnoteref { db.footnoteref.attlist, empty } +} +div { + db.xref.role.attribute = attribute role { text } + db.xref.xrefstyle.attribute = db.xrefstyle.attribute + db.xref.endterm.attribute = db.endterm.attribute + db.xref.attlist = + db.xref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.xref.xrefstyle.attribute? + & db.xref.endterm.attribute? + db.xref = + + ## A cross reference to another part of the document + element xref { db.xref.attlist, empty } +} +div { + db.link.role.attribute = attribute role { text } + db.link.xrefstyle.attribute = db.xrefstyle.attribute + db.link.endterm.attribute = db.endterm.attribute + db.link.attlist = + db.link.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.link.xrefstyle.attribute? + & db.link.endterm.attribute? + db.link = + + ## A hypertext link + element link { db.link.attlist, db.all.inlines* } +} +div { + db.olink.role.attribute = attribute role { text } + db.olink.xrefstyle.attribute = db.xrefstyle.attribute + db.olink.localinfo.attribute = + + ## Holds additional information that may be used by the application when resolving the link + attribute localinfo { text } + db.olink.targetdoc.attribute = + + ## Specifies the URI of the document in which the link target appears + attribute targetdoc { xsd:anyURI } + db.olink.targetptr.attribute = + + ## Specifies the location of the link target in the document + attribute targetptr { text } + db.olink.type.attribute = + + ## Identifies application-specific customization of the link behavior + attribute type { text } + db.olink.attlist = + db.common.attributes + & db.olink.targetdoc.attribute? + & db.olink.role.attribute? + & db.olink.xrefstyle.attribute? + & db.olink.localinfo.attribute? + & db.olink.targetptr.attribute? + & db.olink.type.attribute? + db.olink = + + ## A link that addresses its target indirectly + element olink { db.olink.attlist, db.all.inlines* } +} +div { + db.anchor.role.attribute = attribute role { text } + db.anchor.attlist = + db.anchor.role.attribute? & db.common.idreq.attributes + db.anchor = + + ## A spot in the document + element anchor { db.anchor.attlist, empty } +} +div { + db.alt.role.attribute = attribute role { text } + db.alt.attlist = db.alt.role.attribute? & db.common.attributes + db.alt = + + ## A text-only annotation, often used for accessibility + element alt { db.alt.attlist, (text | db.inlinemediaobject)* } +} +div { + db.formalgroup.fgstyle.attribute = + + ## Holds style of formalgroup - this can be used to specify desired layout and positioning of subfigures + attribute fgstyle { text } + db.formalgroup.role.attribute = attribute role { text } + db.formalgroup.pgwide.attribute = db.pgwide.attribute + db.formalgroup.floatstyle.attribute = db.floatstyle.attribute + db.formalgroup.attlist = + db.formalgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.formalgroup.floatstyle.attribute? + & db.formalgroup.pgwide.attribute? + & db.formalgroup.fgstyle.attribute? + db.formalgroup.info = db._info.title.onlyreq + db.formalgroup = + + ## A group of formal objects, for example subfigures + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:formalgroup" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element formalgroup { + db.formalgroup.attlist, + db.formalgroup.info, + (db.figure+ | db.table+ | db.example+ | db.equation+) + } +} +db.status.attribute = + + ## Identifies the editorial or publication status of the element on which it occurs + attribute status { text } +db.toplevel.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | (db.sect1+, db.simplesect*) + | db.refentry+ +db.toplevel.blocks.or.sections = + (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections +db.recursive.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | db.refentry+ +db.recursive.blocks.or.sections = + (db.all.blocks+, db.recursive.sections?) | db.recursive.sections +db.divisions = db.part | db.reference +db.components = + db.dedication + | db.acknowledgements + | db.preface + | db.chapter + | db.appendix + | db.article + | db.colophon +db.navigation.components = + notAllowed | db.glossary | db.bibliography | db.index | db.toc +db.component.contentmodel = + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* +db.setindex.components = notAllowed | db.setindex +db.toc.components = notAllowed | db.toc +db.set.components = db.set | db.book | db.article +div { + db.set.status.attribute = db.status.attribute + db.set.role.attribute = attribute role { text } + db.set.attlist = + db.set.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.set.status.attribute? + db.set.info = db._info.title.req + db.set = + + ## A collection of books + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:set" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element set { + db.set.attlist, + db.set.info, + db.toc.components?, + db.set.components+, + db.setindex.components? + } +} +db.book.components = + (db.navigation.components | db.components | db.divisions)* | db.topic* +div { + db.book.status.attribute = db.status.attribute + db.book.role.attribute = attribute role { text } + db.book.attlist = + db.book.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.book.status.attribute? + db.book.info = db._info + db.book = + + ## A book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:book" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element book { db.book.attlist, db.book.info, db.book.components } +} +div { + db.dedication.status.attribute = db.status.attribute + db.dedication.role.attribute = attribute role { text } + db.dedication.attlist = + db.dedication.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.dedication.status.attribute? + db.dedication.info = db._info + db.dedication = + + ## The dedication of a book or other component + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:dedication" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element dedication { + db.dedication.attlist, db.dedication.info, db.all.blocks+ + } +} +div { + db.acknowledgements.status.attribute = db.status.attribute + db.acknowledgements.role.attribute = attribute role { text } + db.acknowledgements.attlist = + db.acknowledgements.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.acknowledgements.status.attribute? + db.acknowledgements.info = db._info + db.acknowledgements = + + ## Acknowledgements of a book or other component + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:acknowledgements" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element acknowledgements { + db.acknowledgements.attlist, + db.acknowledgements.info, + db.all.blocks+ + } +} +div { + db.colophon.status.attribute = db.status.attribute + db.colophon.role.attribute = attribute role { text } + db.colophon.attlist = + db.colophon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.colophon.status.attribute? + db.colophon.info = db._info + db.colophon = + + ## Text at the back of a book describing facts about its production + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:colophon" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element colophon { + db.colophon.attlist, + db.colophon.info, + ((db.all.blocks+, db.simplesect*) + | (db.all.blocks*, db.simplesect+)) + } +} +db.appendix.contentmodel = db.component.contentmodel | db.topic+ +div { + db.appendix.status.attribute = db.status.attribute + db.appendix.role.attribute = attribute role { text } + db.appendix.attlist = + db.appendix.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.appendix.status.attribute? + db.appendix.info = db._info.title.req + db.appendix = + + ## An appendix in a book or article + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:appendix" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element appendix { + db.appendix.attlist, db.appendix.info, db.appendix.contentmodel? + } +} +db.chapter.contentmodel = db.component.contentmodel | db.topic+ +div { + db.chapter.status.attribute = db.status.attribute + db.chapter.role.attribute = attribute role { text } + db.chapter.attlist = + db.chapter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.chapter.status.attribute? + db.chapter.info = db._info.title.req + db.chapter = + + ## A chapter, as of a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:chapter" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element chapter { + db.chapter.attlist, db.chapter.info, db.chapter.contentmodel? + } +} +db.part.components = + (db.navigation.components | db.components) + | (db.refentry | db.reference) +db.part.contentmodel = db.part.components+ | db.topic+ +div { + db.part.status.attribute = db.status.attribute + db.part.role.attribute = attribute role { text } + db.part.attlist = + db.part.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.part.status.attribute? + db.part.info = db._info.title.req + db.part = + + ## A division in a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:part" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element part { + db.part.attlist, + db.part.info, + db.partintro?, + db.part.contentmodel? + } +} +div { + db.preface.status.attribute = db.status.attribute + db.preface.role.attribute = attribute role { text } + db.preface.attlist = + db.preface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.preface.status.attribute? + db.preface.info = db._info.title.req + db.preface = + + ## Introductory matter preceding the first chapter of a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:preface" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element preface { + db.preface.attlist, db.preface.info, db.component.contentmodel? + } +} +div { + db.partintro.status.attribute = db.status.attribute + db.partintro.role.attribute = attribute role { text } + db.partintro.attlist = + db.partintro.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.partintro.status.attribute? + db.partintro.info = db._info + db.partintro = + + ## An introduction to the contents of a part + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:partintro" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element partintro { + db.partintro.attlist, + db.partintro.info, + db.toplevel.blocks.or.sections? + } +} +div { + db.section.status.attribute = db.status.attribute + db.section.class.enumeration = + + ## A section of legal obligations or requirements + "legal" + db.section.class-enum.attribute = + + ## Identifies the nature of the section + attribute class { db.section.class.enumeration } + db.section.class-other.attribute = + + ## Identifies a non-standard section class + attribute otherclass { xsd:NMTOKEN } + db.section.class-other.attributes = + + ## Indicates that a non-standard section class is applied + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.section.class-other.attribute + db.section.class.attribute = + db.section.class-enum.attribute | db.section.class-other.attributes + db.section.role.attribute = attribute role { text } + db.section.attlist = + db.section.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.section.status.attribute? + & db.section.class.attribute? + db.section.info = db._info.title.req + db.section = + + ## A recursive section + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:section" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element section { + db.section.attlist, + db.section.info, + db.navigation.components*, + db.recursive.blocks.or.sections?, + db.navigation.components* + } +} +div { + db.simplesect.status.attribute = db.status.attribute + db.simplesect.role.attribute = attribute role { text } + db.simplesect.attlist = + db.simplesect.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.simplesect.status.attribute? + db.simplesect.info = db._info.title.req + db.simplesect = + + ## A section of a document with no subdivisions + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:simplesect" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element simplesect { + db.simplesect.attlist, db.simplesect.info, db.all.blocks* + } +} +db.article.components = db.toplevel.sections +db.article.navcomponents = + db.navigation.components + | db.acknowledgements + | db.dedication + | db.appendix + | db.colophon +div { + db.article.status.attribute = db.status.attribute + db.article.class.enumeration = + + ## A collection of frequently asked questions. + "faq" + | + ## An article in a journal or other periodical. + "journalarticle" + | + ## A description of a product. + "productsheet" + | + ## A specification. + "specification" + | + ## A technical report. + "techreport" + | + ## A white paper. + "whitepaper" + db.article.class-enum.attribute = + + ## Identifies the nature of the article + attribute class { db.article.class.enumeration } + db.article.class-other.attribute = + + ## Identifies the nature of the non-standard article + attribute otherclass { xsd:NMTOKEN } + db.article.class-other.attributes = + + ## Identifies the nature of the article + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.article.class-other.attribute + db.article.class.attribute = + db.article.class-enum.attribute | db.article.class-other.attributes + db.article.role.attribute = attribute role { text } + db.article.attlist = + db.article.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.article.status.attribute? + & db.article.class.attribute? + db.article.info = db._info.title.req + db.article = + + ## An article + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:article" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element article { + db.article.attlist, + db.article.info, + db.article.navcomponents*, + ((db.all.blocks+, db.article.components?) + | db.article.components), + db.article.navcomponents* + } +} +db.annotations.attribute = + + ## Identifies one or more annotations that apply to this element + attribute annotations { text } +div { + db.annotation.role.attribute = attribute role { text } + db.annotation.annotates.attribute = + + ## Identifies one or more elements to which this annotation applies + attribute annotates { text } + db.annotation.attlist = + db.annotation.role.attribute? + & db.annotation.annotates.attribute? + & db.common.attributes + db.annotation.info = db._info.title.only + db.annotation = + + ## An annotation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:annotation" + s:assert [ + test = "not(.//db:annotation)" + "annotation must not occur among the children or descendants of annotation" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:annotation" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element annotation { + db.annotation.attlist, db.annotation.info, db.all.blocks+ + } +} +db.xlink.extended.type.attribute = + + ## Identifies the XLink extended link type + [ + s:pattern [ + s:title [ "XLink extended placement" ] + s:rule [ + context = "*[@xlink:type='extended']" + s:assert [ + test = "not(parent::*[@xlink:type='extended'])" + "An XLink extended type element may not occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink extended link type + "extended" + } +db.xlink.locator.type.attribute = + + ## Identifies the XLink locator link type + [ + s:pattern [ + s:title [ "XLink locator placement" ] + s:rule [ + context = "*[@xlink:type='locator']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink locator type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink locator link type + "locator" + } +db.xlink.arc.type.attribute = + + ## Identifies the XLink arc link type + [ + s:pattern [ + s:title [ "XLink arc placement" ] + s:rule [ + context = "*[@xlink:type='arc']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink arc type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink arc link type + "arc" + } +db.xlink.resource.type.attribute = + + ## Identifies the XLink resource link type + [ + s:pattern [ + s:title [ "XLink resource placement" ] + s:rule [ + context = "*[@xlink:type='resource']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink resource type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink resource link type + "resource" + } +db.xlink.title.type.attribute = + + ## Identifies the XLink title link type + [ + s:pattern [ + s:title [ "XLink title placement" ] + s:rule [ + context = "*[@xlink:type='title']" + s:assert [ + test = + "parent::*[@xlink:type='extended'] or parent::*[@xlink:type='locator'] or parent::*[@xlink:type='arc']" + "An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink title link type + "title" + } +db.xlink.extended.link.attributes = + db.xlink.extended.type.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? +db.xlink.locator.link.attributes = + db.xlink.locator.type.attribute + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? +db.xlink.arc.link.attributes = + db.xlink.arc.type.attribute + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? +db.xlink.resource.link.attributes = + db.xlink.resource.type.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? +db.xlink.title.link.attributes = db.xlink.title.type.attribute +db.xlink.from.attribute = + + ## Specifies the XLink traversal-from + attribute xlink:from { xsd:NMTOKEN } +db.xlink.label.attribute = + + ## Specifies the XLink label + attribute xlink:label { xsd:NMTOKEN } +db.xlink.to.attribute = + + ## Specifies the XLink traversal-to + attribute xlink:to { xsd:NMTOKEN } +div { + db.extendedlink.role.attribute = attribute role { text } + db.extendedlink.attlist = + db.extendedlink.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "extended" ] + attribute xlink:type { + + ## An XLink extended link + "extended" + }? + & db.xlink.role.attribute? + & db.xlink.title.attribute? + db.extendedlink = + + ## An XLink extended link + element extendedlink { + db.extendedlink.attlist, (db.locator | db.arc | db.link)+ + } +} +div { + db.locator.role.attribute = attribute role { text } + db.locator.attlist = + db.locator.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "locator" ] + attribute xlink:type { + + ## An XLink locator link + "locator" + }? + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? + db.locator = + + ## An XLink locator in an extendedlink + element locator { db.locator.attlist, empty } +} +div { + db.arc.role.attribute = attribute role { text } + db.arc.attlist = + db.arc.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "arc" ] + attribute xlink:type { + + ## An XLink arc link + "arc" + }? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? + db.arc = + + ## An XLink arc in an extendedlink + element arc { db.arc.attlist, empty } +} +db.sect1.sections = + ((db.sect2+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect1.status.attribute = db.status.attribute + db.sect1.class.attribute = db.section.class.attribute + db.sect1.role.attribute = attribute role { text } + db.sect1.attlist = + db.sect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect1.status.attribute? + & db.sect1.class.attribute? + db.sect1.info = db._info.title.req + db.sect1 = + + ## A top-level section of document + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect1" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect1 { + db.sect1.attlist, + db.sect1.info, + db.navigation.components*, + ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections)?, + db.navigation.components* + } +} +db.sect2.sections = + ((db.sect3+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect2.status.attribute = db.status.attribute + db.sect2.class.attribute = db.section.class.attribute + db.sect2.role.attribute = attribute role { text } + db.sect2.attlist = + db.sect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect2.status.attribute? + & db.sect2.class.attribute? + db.sect2.info = db._info.title.req + db.sect2 = + + ## A subsection within a sect1 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect2" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect2 { + db.sect2.attlist, + db.sect2.info, + db.navigation.components*, + ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections)?, + db.navigation.components* + } +} +db.sect3.sections = + ((db.sect4+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect3.status.attribute = db.status.attribute + db.sect3.class.attribute = db.section.class.attribute + db.sect3.role.attribute = attribute role { text } + db.sect3.attlist = + db.sect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect3.status.attribute? + & db.sect3.class.attribute? + db.sect3.info = db._info.title.req + db.sect3 = + + ## A subsection within a sect2 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect3" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect3 { + db.sect3.attlist, + db.sect3.info, + db.navigation.components*, + ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections)?, + db.navigation.components* + } +} +db.sect4.sections = + ((db.sect5+, db.simplesect*) | db.simplesect+) + | db.refentry+ +div { + db.sect4.status.attribute = db.status.attribute + db.sect4.class.attribute = db.section.class.attribute + db.sect4.role.attribute = attribute role { text } + db.sect4.attlist = + db.sect4.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect4.status.attribute? + & db.sect4.class.attribute? + db.sect4.info = db._info.title.req + db.sect4 = + + ## A subsection within a sect3 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect4" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect4 { + db.sect4.attlist, + db.sect4.info, + db.navigation.components*, + ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections)?, + db.navigation.components* + } +} +db.sect5.sections = db.simplesect+ | db.refentry+ +div { + db.sect5.status.attribute = db.status.attribute + db.sect5.class.attribute = db.section.class.attribute + db.sect5.role.attribute = attribute role { text } + db.sect5.attlist = + db.sect5.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect5.status.attribute? + & db.sect5.class.attribute? + db.sect5.info = db._info.title.req + db.sect5 = + + ## A subsection within a sect4 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect5" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect5 { + db.sect5.attlist, + db.sect5.info, + db.navigation.components*, + ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections)?, + db.navigation.components* + } +} +db.toplevel.refsection = db.refsection+ | db.refsect1+ +db.secondlevel.refsection = db.refsection+ | db.refsect2+ +db.reference.components = db.refentry +div { + db.reference.status.attribute = db.status.attribute + db.reference.role.attribute = attribute role { text } + db.reference.attlist = + db.reference.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.reference.status.attribute? + & db.label.attribute? + db.reference.info = db._info.title.req + db.reference = + + ## A collection of reference entries + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:reference" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element reference { + db.reference.attlist, + db.reference.info, + db.partintro?, + db.reference.components* + } +} +div { + db.refentry.status.attribute = db.status.attribute + db.refentry.role.attribute = attribute role { text } + db.refentry.attlist = + db.refentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refentry.status.attribute? + & db.label.attribute? + db.refentry.info = db._info.title.forbidden + db.refentry = + + ## A reference page (originally a UNIX man-style reference page) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refentry" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refentry { + db.refentry.attlist, + db.indexterm*, + db.refentry.info, + db.refmeta?, + db.refnamediv+, + db.refsynopsisdiv?, + db.toplevel.refsection + } +} +div { + db.refmeta.role.attribute = attribute role { text } + db.refmeta.attlist = + db.refmeta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refmeta = + + ## Meta-information for a reference entry + element refmeta { + db.refmeta.attlist, + db.indexterm*, + db.refentrytitle, + db.manvolnum?, + db.refmiscinfo*, + db.indexterm* + } +} +db.refmiscinfo.class.enumeration = + + ## The name of the software product or component to which this topic applies + "source" + | + ## The version of the software product or component to which this topic applies + "version" + | + ## The section title of the reference page (e.g., User Commands) + "manual" + | + ## The section title of the reference page (believed synonymous with "manual" but in wide use) + "sectdesc" + | + ## The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + "software" +db.refmiscinfo.class-enum.attribute = + + ## Identifies the kind of miscellaneous information + attribute class { db.refmiscinfo.class.enumeration }? +db.refmiscinfo.class-other.attribute = + + ## Identifies the nature of non-standard miscellaneous information + attribute otherclass { text } +db.refmiscinfo.class-other.attributes = + + ## Identifies the kind of miscellaneious information + attribute class { + + ## Indicates that the information is some 'other' kind. + "other" + } + & db.refmiscinfo.class-other.attribute +db.refmiscinfo.class.attribute = + db.refmiscinfo.class-enum.attribute + | db.refmiscinfo.class-other.attributes +div { + db.refmiscinfo.role.attribute = attribute role { text } + db.refmiscinfo.attlist = + db.refmiscinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refmiscinfo.class.attribute? + db.refmiscinfo = + + ## Meta-information for a reference entry other than the title and volume number + element refmiscinfo { db.refmiscinfo.attlist, db._text } +} +div { + db.refnamediv.role.attribute = attribute role { text } + db.refnamediv.attlist = + db.refnamediv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refnamediv = + + ## The name, purpose, and classification of a reference page + element refnamediv { + db.refnamediv.attlist, + db.refdescriptor?, + db.refname+, + db.refpurpose, + db.refclass* + } +} +div { + db.refdescriptor.role.attribute = attribute role { text } + db.refdescriptor.attlist = + db.refdescriptor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refdescriptor = + + ## A description of the topic of a reference page + element refdescriptor { db.refdescriptor.attlist, db.all.inlines* } +} +div { + db.refname.role.attribute = attribute role { text } + db.refname.attlist = + db.refname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refname = + + ## The name of (one of) the subject(s) of a reference page + element refname { db.refname.attlist, db.all.inlines* } +} +div { + db.refpurpose.role.attribute = attribute role { text } + db.refpurpose.attlist = + db.refpurpose.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refpurpose = + + ## A short (one sentence) synopsis of the topic of a reference page + element refpurpose { db.refpurpose.attlist, db.all.inlines* } +} +div { + db.refclass.role.attribute = attribute role { text } + db.refclass.attlist = + db.refclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refclass = + + ## The scope or other indication of applicability of a reference entry + element refclass { db.refclass.attlist, (text | db.application)* } +} +div { + db.refsynopsisdiv.role.attribute = attribute role { text } + db.refsynopsisdiv.attlist = + db.refsynopsisdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refsynopsisdiv.info = db._info + db.refsynopsisdiv = + + ## A syntactic synopsis of the subject of the reference page + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsynopsisdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsynopsisdiv { + db.refsynopsisdiv.attlist, + db.refsynopsisdiv.info, + ((db.all.blocks+, db.secondlevel.refsection?) + | db.secondlevel.refsection) + } +} +div { + db.refsection.status.attribute = db.status.attribute + db.refsection.role.attribute = attribute role { text } + db.refsection.attlist = + db.refsection.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refsection.status.attribute? + & db.label.attribute? + db.refsection.info = db._info.title.req + db.refsection = + + ## A recursive section in a refentry + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsection" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsection { + db.refsection.attlist, + db.refsection.info, + ((db.all.blocks+, db.refsection*) | db.refsection+) + } +} +db.refsect1.sections = db.refsect2+ +div { + db.refsect1.status.attribute = db.status.attribute + db.refsect1.role.attribute = attribute role { text } + db.refsect1.attlist = + db.refsect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect1.status.attribute? + db.refsect1.info = db._info.title.req + db.refsect1 = + + ## A major subsection of a reference entry + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsect1" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsect1 { + db.refsect1.attlist, + db.refsect1.info, + ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections) + } +} +db.refsect2.sections = db.refsect3+ +div { + db.refsect2.status.attribute = db.status.attribute + db.refsect2.role.attribute = attribute role { text } + db.refsect2.attlist = + db.refsect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect2.status.attribute? + db.refsect2.info = db._info.title.req + db.refsect2 = + + ## A subsection of a refsect1 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsect2" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsect2 { + db.refsect2.attlist, + db.refsect2.info, + ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections) + } +} +div { + db.refsect3.status.attribute = db.status.attribute + db.refsect3.role.attribute = attribute role { text } + db.refsect3.attlist = + db.refsect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect3.status.attribute? + db.refsect3.info = db._info.title.req + db.refsect3 = + + ## A subsection of a refsect2 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsect3" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsect3 { + db.refsect3.attlist, db.refsect3.info, db.all.blocks+ + } +} +db.glossary.inlines = + db.firstterm | db.glossterm | db._firstterm | db._glossterm +db.baseform.attribute = + + ## Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + attribute baseform { text }? +div { + db.glosslist.role.attribute = attribute role { text } + db.glosslist.attlist = + db.glosslist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.glosslist.info = db._info.title.only + db.glosslist = + + ## A wrapper for a list of glossary entries + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:glosslist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element glosslist { + db.glosslist.attlist, + db.glosslist.info?, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.glossentry.role.attribute = attribute role { text } + db.glossentry.sortas.attribute = + + ## Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + attribute sortas { text } + db.glossentry.attlist = + db.glossentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossentry.sortas.attribute? + db.glossentry = + + ## An entry in a glossary or glosslist + element glossentry { + db.glossentry.attlist, + db.glossterm, + db.acronym?, + db.abbrev?, + db.indexterm*, + (db.glosssee | db.glossdef+) + } +} +div { + db.glossdef.role.attribute = attribute role { text } + db.glossdef.subject.attribute = + + ## Specifies a list of keywords for the definition + attribute subject { text } + db.glossdef.attlist = + db.glossdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossdef.subject.attribute? + db.glossdef = + + ## A definition in a glossentry + element glossdef { + db.glossdef.attlist, db.all.blocks+, db.glossseealso* + } +} +div { + db.glosssee.role.attribute = attribute role { text } + db.glosssee.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glosssee.attlist = + db.glosssee.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glosssee.otherterm.attribute? + db.glosssee = + + ## A cross-reference from one glossentry + ## to another + [ + s:pattern [ + s:title [ "Glosssary 'see' type constraint" ] + s:rule [ + context = "db:glosssee[@otherterm]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glosssee must point to a glossentry." + ] + ] + ] + ] + element glosssee { db.glosssee.attlist, db.all.inlines* } +} +div { + db.glossseealso.role.attribute = attribute role { text } + db.glossseealso.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glossseealso.attlist = + db.glossseealso.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossseealso.otherterm.attribute? + db.glossseealso = + + ## A cross-reference from one glossentry to another + [ + s:pattern [ + s:title [ "Glossary 'seealso' type constraint" ] + s:rule [ + context = "db:glossseealso[@otherterm]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glossseealso must point to a glossentry." + ] + ] + ] + ] + element glossseealso { db.glossseealso.attlist, db.all.inlines* } +} +div { + db.firstterm.role.attribute = attribute role { text } + db.firstterm.attlist = + db.firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.firstterm = + + ## The first occurrence of a term + [ + s:pattern [ + s:title [ "Glossary 'firstterm' type constraint" ] + s:rule [ + context = "db:firstterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + ] + ] + ] + element firstterm { db.firstterm.attlist, db.all.inlines* } +} +div { + db._firstterm.role.attribute = attribute role { text } + db._firstterm.attlist = + db._firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db._firstterm = + + ## The first occurrence of a term, with limited content + [ + s:pattern [ + s:title [ "Glossary 'firstterm' type constraint" ] + s:rule [ + context = "db:firstterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + ] + ] + ] + element firstterm { db._firstterm.attlist, db._text } +} +div { + db.glossterm.role.attribute = attribute role { text } + db.glossterm.attlist = + db.glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.glossterm = + + ## A glossary term + [ + s:pattern [ + s:title [ "Glossary 'glossterm' type constraint" ] + s:rule [ + context = "db:glossterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + ] + ] + ] + element glossterm { db.glossterm.attlist, db.all.inlines* } +} +div { + db._glossterm.role.attribute = attribute role { text } + db._glossterm.attlist = + db._glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db._glossterm = + + ## A glossary term + [ + s:pattern [ + s:title [ "Glossary 'glossterm' type constraint" ] + s:rule [ + context = "db:glossterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + ] + ] + ] + element glossterm { db._glossterm.attlist, db._text } +} +div { + db.glossary.status.attribute = db.status.attribute + db.glossary.role.attribute = attribute role { text } + db.glossary.attlist = + db.glossary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossary.status.attribute? + db.glossary.info = db._info + db.glossary = + + ## A glossary + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:glossary" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element glossary { + db.glossary.attlist, + db.glossary.info, + db.all.blocks*, + (db.glossdiv* | db.glossentry*), + db.bibliography? + } +} +div { + db.glossdiv.status.attribute = db.status.attribute + db.glossdiv.role.attribute = attribute role { text } + db.glossdiv.attlist = + db.glossdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossdiv.status.attribute? + db.glossdiv.info = db._info.title.req + db.glossdiv = + + ## A division in a glossary + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:glossdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element glossdiv { + db.glossdiv.attlist, + db.glossdiv.info, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.termdef.role.attribute = attribute role { text } + db.termdef.attlist = + db.termdef.role.attribute? + & db.glossentry.sortas.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.termdef = + + ## An inline definition of a term + [ + s:pattern [ + s:title [ "Glossary term definition constraint" ] + s:rule [ + context = "db:termdef" + s:assert [ + test = "count(db:firstterm) = 1" + "A termdef must contain exactly one firstterm" + ] + ] + ] + ] + element termdef { db.termdef.attlist, db.all.inlines* } +} +db.relation.attribute = + + ## Identifies the relationship between the bibliographic elemnts + attribute relation { text } +div { + db.biblioentry.role.attribute = attribute role { text } + db.biblioentry.pubwork.attribute = db.biblio.pubwork.attribute + db.biblioentry.attlist = + db.biblioentry.role.attribute? + & db.biblioentry.pubwork.attribute? + & db.common.attributes + & db.common.linking.attributes + db.biblioentry = + + ## A raw entry in a bibliography + element biblioentry { + db.biblioentry.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomixed.role.attribute = attribute role { text } + db.bibliomixed.pubwork.attribute = db.biblio.pubwork.attribute + db.bibliomixed.attlist = + db.bibliomixed.role.attribute? + & db.bibliomixed.pubwork.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomixed = + + ## A cooked entry in a bibliography + element bibliomixed { + db.bibliomixed.attlist, + ((db._text + | db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)* + | (db._text + | db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)*) + } +} +div { + db.biblioset.relation.attribute = db.relation.attribute + db.biblioset.role.attribute = attribute role { text } + db.biblioset.attlist = + db.biblioset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblioset.relation.attribute? + db.biblioset = + + ## A raw container for related bibliographic information + element biblioset { + db.biblioset.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomset.relation.attribute = db.relation.attribute + db.bibliomset.role.attribute = attribute role { text } + db.bibliomset.attlist = + db.bibliomset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliomset.relation.attribute? + db.bibliomset = + + ## A cooked container for related bibliographic information + element bibliomset { + db.bibliomset.attlist, + ((db._text + | db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)* + | (db._text + | db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)*) + } +} +div { + db.bibliomisc.role.attribute = attribute role { text } + db.bibliomisc.attlist = + db.bibliomisc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomisc = + + ## Untyped bibliographic information + element bibliomisc { db.bibliomisc.attlist, db._text } +} +div { + db.bibliography.status.attrib = db.status.attribute + db.bibliography.role.attribute = attribute role { text } + db.bibliography.attlist = + db.bibliography.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliography.status.attrib? + db.bibliography.info = db._info + db.bibliography = + + ## A bibliography + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:bibliography" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element bibliography { + db.bibliography.attlist, + db.bibliography.info, + db.all.blocks*, + (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+) + } +} +div { + db.bibliodiv.status.attrib = db.status.attribute + db.bibliodiv.role.attribute = attribute role { text } + db.bibliodiv.attlist = + db.bibliodiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliodiv.status.attrib? + db.bibliodiv.info = db._info.title.req + db.bibliodiv = + + ## A section of a bibliography + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:bibliodiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element bibliodiv { + db.bibliodiv.attlist, + db.bibliodiv.info, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.bibliolist.role.attribute = attribute role { text } + db.bibliolist.attlist = + db.bibliolist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliolist.info = db._info.title.only + db.bibliolist = + + ## A wrapper for a list of bibliography entries + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:bibliolist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element bibliolist { + db.bibliolist.attlist, + db.bibliolist.info?, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.biblioref.role.attribute = attribute role { text } + db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute + db.biblioref.endterm.attribute = db.endterm.attribute + db.biblioref.units.attribute = + + ## The units (for example, pages) used to identify the beginning and ending of a reference. + attribute units { xsd:token } + db.biblioref.begin.attribute = + + ## Identifies the beginning of a reference; the location within the work that is being referenced. + attribute begin { xsd:token } + db.biblioref.end.attribute = + + ## Identifies the end of a reference. + attribute end { xsd:token } + db.biblioref.attlist = + db.biblioref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.biblioref.xrefstyle.attribute? + & db.biblioref.endterm.attribute? + & db.biblioref.units.attribute? + & db.biblioref.begin.attribute? + & db.biblioref.end.attribute? + db.biblioref = + + ## A cross-reference to a bibliographic entry + element biblioref { db.biblioref.attlist, empty } +} +db.significance.enumeration = + + ## Normal + "normal" + | + ## Preferred + "preferred" +db.significance.attribute = + + ## Specifies the significance of the term + attribute significance { db.significance.enumeration } +db.zone.attribute = + + ## Specifies the IDs of the elements to which this term applies + attribute zone { xsd:IDREFS } +db.indexterm.pagenum.attribute = + + ## Indicates the page on which this index term occurs in some version of the printed document + attribute pagenum { text } +db.scope.enumeration = + + ## All indexes + "all" + | + ## The global index (as for a combined index of a set of books) + "global" + | + ## The local index (the index for this document only) + "local" +db.scope.attribute = + + ## Specifies the scope of the index term + attribute scope { db.scope.enumeration } +db.sortas.attribute = + + ## Specifies the string by which the term is to be sorted; if unspecified, the term content is used + attribute sortas { text } +db.index.type.attribute = + + ## Specifies the target index for this term + attribute type { text } +div { + db.itermset.role.attribute = attribute role { text } + db.itermset.attlist = + db.itermset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.itermset = + + ## A set of index terms in the meta-information of a document + element itermset { db.itermset.attlist, db.indexterm.singular+ } +} +db.indexterm.contentmodel = + (db.primary, + (db.secondary, + ((db.tertiary, (db.see | db.seealso+)?)? + | (db.see | db.seealso+)?)?)?)?, + (db.see | db.seealso+)? +div { + db.indexterm.singular.role.attribute = attribute role { text } + db.indexterm.singular.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## A singular index term + "singular" + } + db.indexterm.singular.attlist = + db.indexterm.singular.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.singular.class.attribute? + db.indexterm.singular = + + ## A wrapper for an indexed term + element indexterm { + db.indexterm.singular.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.startofrange.role.attribute = attribute role { text } + db.indexterm.startofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The start of a range + "startofrange" + } + db.indexterm.startofrange.attlist = + db.indexterm.startofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.startofrange.class.attribute + db.indexterm.startofrange = + + ## A wrapper for an indexed term that covers a range + element indexterm { + db.indexterm.startofrange.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.endofrange.role.attribute = attribute role { text } + db.indexterm.endofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The end of a range + "endofrange" + } + db.indexterm.endofrange.startref.attribute = + + ## Points to the start of the range + attribute startref { xsd:IDREF } + db.indexterm.endofrange.attlist = + db.indexterm.endofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.indexterm.endofrange.class.attribute + & db.indexterm.endofrange.startref.attribute + db.indexterm.endofrange = + + ## Identifies the end of a range associated with an indexed term + [ + s:pattern [ + s:title [ "Indexterm 'startref' type constraint" ] + s:rule [ + context = "db:indexterm[@startref]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@startref]) = 'indexterm' and namespace-uri(//*[@xml:id=current()/@startref]) = 'http://docbook.org/ns/docbook'" + "@startref on indexterm must point to an indexterm." + ] + s:assert [ + test = + "//*[@xml:id=current()/@startref]/@class='startofrange'" + "@startref on indexterm must point to a startofrange indexterm." + ] + ] + ] + ] + element indexterm { db.indexterm.endofrange.attlist, empty } +} +div { + db.indexterm = + db.indexterm.singular + | db.indexterm.startofrange + | db.indexterm.endofrange +} +div { + db.primary.role.attribute = attribute role { text } + db.primary.attlist = + db.primary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.primary = + + ## The primary word or phrase under which an index term should be sorted + element primary { db.primary.attlist, db.all.inlines* } +} +div { + db.secondary.role.attribute = attribute role { text } + db.secondary.attlist = + db.secondary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.secondary = + + ## A secondary word or phrase in an index term + element secondary { db.secondary.attlist, db.all.inlines* } +} +div { + db.tertiary.role.attribute = attribute role { text } + db.tertiary.attlist = + db.tertiary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.tertiary = + + ## A tertiary word or phrase in an index term + element tertiary { db.tertiary.attlist, db.all.inlines* } +} +div { + db.see.role.attribute = attribute role { text } + db.see.class.attribute = + + ## Identifies the class of 'see' + attribute class { + + ## Normal + "normal" + | + ## See 'under' + "under" + } + db.see.attlist = + db.see.role.attribute? + & db.see.class.attribute? + & db.common.attributes + & db.common.linking.attributes + db.see = + + ## Part of an index term directing the reader instead to another entry in the index + element see { db.see.attlist, db.all.inlines* } +} +div { + db.seealso.role.attribute = attribute role { text } + db.seealso.class.attribute = + + ## Identifies the class of 'seealso' + attribute class { + + ## Normal + "normal" + | + ## See 'under' + "under" + } + db.seealso.attlist = + db.seealso.role.attribute? + & db.seealso.class.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seealso = + + ## Part of an index term directing the reader also to another entry in the index + element seealso { db.seealso.attlist, db.all.inlines* } +} +div { + db.index.status.attribute = db.status.attribute + db.index.role.attribute = attribute role { text } + db.index.attlist = + db.index.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.index.status.attribute? + & db.index.type.attribute? + db.index.info = db._info + # Yes, db.indexdiv* and db.indexentry*; that way an is valid. + # Authors can use an empty index to indicate where a generated index should + # appear. + db.index = + + ## An index to a book or part of a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:index" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element index { + db.index.attlist, + db.index.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry* | db.segmentedlist) + } +} +div { + db.setindex.status.attribute = db.status.attribute + db.setindex.role.attribute = attribute role { text } + db.setindex.attlist = + db.setindex.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.setindex.status.attribute? + & db.index.type.attribute? + db.setindex.info = db._info + db.setindex = + + ## An index to a set of books + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:setindex" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element setindex { + db.setindex.attlist, + db.setindex.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry*) + } +} +div { + db.indexdiv.status.attribute = db.status.attribute + db.indexdiv.role.attribute = attribute role { text } + db.indexdiv.attlist = + db.indexdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.indexdiv.status.attribute? + db.indexdiv.info = db._info.title.req + db.indexdiv = + + ## A division in an index + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:indexdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element indexdiv { + db.indexdiv.attlist, + db.indexdiv.info, + db.all.blocks*, + (db.indexentry+ | db.segmentedlist) + } +} +div { + db.indexentry.role.attribute = attribute role { text } + db.indexentry.attlist = + db.indexentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.indexentry = + + ## An entry in an index + element indexentry { + db.indexentry.attlist, + db.primaryie, + (db.seeie | db.seealsoie)*, + (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)* + } +} +div { + db.primaryie.role.attribute = attribute role { text } + db.primaryie.attlist = + db.primaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.primaryie = + + ## A primary term in an index entry, not in the text + element primaryie { db.primaryie.attlist, db.all.inlines* } +} +div { + db.secondaryie.role.attribute = attribute role { text } + db.secondaryie.attlist = + db.secondaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.secondaryie = + + ## A secondary term in an index entry, rather than in the text + element secondaryie { db.secondaryie.attlist, db.all.inlines* } +} +div { + db.tertiaryie.role.attribute = attribute role { text } + db.tertiaryie.attlist = + db.tertiaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.tertiaryie = + + ## A tertiary term in an index entry, rather than in the text + element tertiaryie { db.tertiaryie.attlist, db.all.inlines* } +} +div { + db.seeie.role.attribute = attribute role { text } + db.seeie.attlist = + db.seeie.role.attribute? + & db.common.attributes + & db.linkend.attribute? + db.seeie = + + ## A See + ## entry in an index, rather than in the text + element seeie { db.seeie.attlist, db.all.inlines* } +} +div { + db.seealsoie.role.attribute = attribute role { text } + db.seealsoie.attlist = + db.seealsoie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.seealsoie = + + ## A See also + ## entry in an index, rather than in the text + element seealsoie { db.seealsoie.attlist, db.all.inlines* } +} +db.toc.pagenum.attribute = + + ## Indicates the page on which this element occurs in some version of the printed document + attribute pagenum { text } +div { + db.toc.role.attribute = attribute role { text } + db.toc.attlist = + db.toc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.toc.info = db._info.title.only + db.toc = + + ## A table of contents + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:toc" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element toc { + db.toc.attlist, + db.toc.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)* + } +} +div { + db.tocdiv.role.attribute = attribute role { text } + db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute + db.tocdiv.attlist = + db.tocdiv.role.attribute? + & db.common.attributes + & db.tocdiv.pagenum.attribute? + & db.linkend.attribute? + db.tocdiv.info = db._info + db.tocdiv = + + ## A division in a table of contents + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:tocdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element tocdiv { + db.tocdiv.attlist, + db.tocdiv.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)+ + } +} +div { + db.tocentry.role.attribute = attribute role { text } + db.tocentry.pagenum.attribute = db.toc.pagenum.attribute + db.tocentry.attlist = + db.tocentry.role.attribute? + & db.common.attributes + & db.tocentry.pagenum.attribute? + & db.linkend.attribute? + db.tocentry = + + ## A component title in a table of contents + element tocentry { db.tocentry.attlist, db.all.inlines* } +} +db.task.info = db._info.title.req +div { + db.task.role.attribute = attribute role { text } + db.task.attlist = + db.task.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.task = + + ## A task to be completed + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:task" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element task { + db.task.attlist, + db.task.info, + db.tasksummary?, + db.taskprerequisites?, + db.procedure+, + db.example*, + db.taskrelated? + } +} +div { + db.tasksummary.role.attribute = attribute role { text } + db.tasksummary.attlist = + db.tasksummary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tasksummary.info = db._info.title.only + db.tasksummary = + + ## A summary of a task + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:tasksummary" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element tasksummary { + db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+ + } +} +div { + db.taskprerequisites.role.attribute = attribute role { text } + db.taskprerequisites.attlist = + db.taskprerequisites.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskprerequisites.info = db._info.title.only + db.taskprerequisites = + + ## The prerequisites for a task + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:taskprerequisites" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element taskprerequisites { + db.taskprerequisites.attlist, + db.taskprerequisites.info, + db.all.blocks+ + } +} +div { + db.taskrelated.role.attribute = attribute role { text } + db.taskrelated.attlist = + db.taskrelated.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskrelated.info = db._info.title.only + db.taskrelated = + + ## Information related to a task + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:taskrelated" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element taskrelated { + db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+ + } +} +db.area.units.enumeration = + + ## Coordinates expressed as a pair of CALS graphic coordinates. + "calspair" + | + ## Coordinates expressed as a line and column. + "linecolumn" + | + ## Coordinates expressed as a pair of lines and columns. + "linecolumnpair" + | + ## Coordinates expressed as a line range. + "linerange" +db.area.units-enum.attribute = + + ## Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair + ## for graphics and linecolumn + ## for line-oriented elements. + attribute units { db.area.units.enumeration }? +db.area.units-other.attributes = + + ## Indicates that non-standard units are used for this area + ## . In this case otherunits + ## must be specified. + attribute units { + + ## Coordinates expressed in some non-standard units. + "other" + }?, + + ## Identifies the units used in the coords + ## attribute when the units + ## attribute is other + ## . This attribute is forbidden otherwise. + attribute otherunits { xsd:NMTOKEN } +db.area.units.attribute = + db.area.units-enum.attribute | db.area.units-other.attributes +div { + db.calloutlist.role.attribute = attribute role { text } + db.calloutlist.attlist = + db.calloutlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.calloutlist.info = db._info.title.only + db.calloutlist = + + ## A list of callout + ## s + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:calloutlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element calloutlist { + db.calloutlist.attlist, + db.calloutlist.info, + db.all.blocks*, + db.callout+ + } +} +div { + db.callout.role.attribute = attribute role { text } + db.callout.arearefs.attribute = + + ## Identifies the areas described by this callout. + attribute arearefs { xsd:IDREFS } + db.callout.attlist = + db.callout.role.attribute? + & db.common.attributes + & db.callout.arearefs.attribute + # This requires an XPath 2.0 compatible Schematron processor + db.callout = + + ## A called out + ## description of a marked area + [ + s:pattern [ + s:title [ "Callout cross reference constraint" ] + s:rule [ + context = "db:callout[@arearefs]" + s:assert [ + test = + "every $id in tokenize(current()/@arearefs) satisfies (every $ar in //*[@xml:id = $id] satisfies (local-name($ar) = ('areaset', 'area', 'co') and namespace-uri($ar) = 'http://docbook.org/ns/docbook'))" + "@arearefs on callout must point to a areaset, area, or co." + ] + ] + ] + ] + element callout { db.callout.attlist, db.all.blocks+ } +} +div { + db.programlistingco.role.attribute = attribute role { text } + db.programlistingco.attlist = + db.programlistingco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.programlistingco.info = db._info.title.forbidden + db.programlistingco = + + ## A program listing with associated areas used in callouts + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:programlistingco" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element programlistingco { + db.programlistingco.attlist, + db.programlistingco.info, + db.areaspec, + db.programlisting, + db.calloutlist* + } +} +div { + db.areaspec.role.attribute = attribute role { text } + db.areaspec.attlist = + db.areaspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.area.units.attribute + db.areaspec = + + ## A collection of regions in a graphic or code example + element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ } +} +div { + db.area.role.attribute = attribute role { text } + db.area.linkends.attribute = + + ## Point to the callout + ## s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + attribute linkends { xsd:IDREFS } + db.area.label.attribute = + + ## Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + attribute label { text } + db.area.coords.attribute = + + ## Provides the coordinates of the area. The coordinates must be interpreted using the units + ## specified. + attribute coords { text } + db.area.attlist = + db.area.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.xlink.simple.link.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area = + + ## A region defined for a callout in a graphic or code example + element area { db.area.attlist, db.alt? } +} +div { + # The only difference is that xml:id is optional + db.area.inareaset.attlist = + db.area.role.attribute? + & db.common.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.xlink.simple.link.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area.inareaset = + + ## A region defined for a callout in a graphic or code example + element area { db.area.inareaset.attlist, db.alt? } +} +div { + db.areaset.role.attribute = attribute role { text } + db.areaset.linkends.attribute = db.linkends.attribute + db.areaset.label.attribute = db.label.attribute + db.areaset.attlist = + db.areaset.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.areaset.linkends.attribute | db.xlink.simple.link.attributes)? + & db.areaset.label.attribute? + db.areaset = + + ## A set of related areas in a graphic or code example + element areaset { db.areaset.attlist, db.area.inareaset+ } +} +div { + db.screenco.role.attribute = attribute role { text } + db.screenco.attlist = + db.screenco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenco.info = db._info.title.forbidden + db.screenco = + + ## A screen with associated areas used in callouts + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:screenco" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element screenco { + db.screenco.attlist, + db.screenco.info, + db.areaspec, + db.screen, + db.calloutlist* + } +} +div { + db.imageobjectco.role.attribute = attribute role { text } + db.imageobjectco.attlist = + db.imageobjectco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobjectco.info = db._info.title.forbidden + db.imageobjectco = + + ## A wrapper for an image object with callouts + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imageobjectco" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imageobjectco { + db.imageobjectco.attlist, + db.imageobjectco.info, + db.areaspec, + db.imageobject+, + db.calloutlist* + } +} +div { + db.co.role.attribute = attribute role { text } + db.co.linkends.attribute = db.linkends.attribute + db.co.label.attribute = db.label.attribute + db.co.attlist = + db.co.role.attribute? + & db.common.idreq.attributes + & db.co.linkends.attribute? + & db.co.label.attribute? + db.co = + + ## The location of a callout embedded in text + element co { db.co.attlist, empty } +} +div { + db.coref.role.attribute = attribute role { text } + db.coref.label.attribute = db.label.attribute + db.coref.attlist = + db.coref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.coref.label.attribute? + db.coref = + + ## A cross reference to a co + element coref { db.coref.attlist, empty } +} +div { + db.productionset.role.attribute = attribute role { text } + db.productionset.attlist = + db.productionset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productionset.info = db._info.title.only + db.productionset = + + ## A set of EBNF productions + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:productionset" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element productionset { + db.productionset.attlist, + db.productionset.info, + (db.production | db.productionrecap)+ + } +} +div { + db.production.role.attribute = attribute role { text } + db.production.attlist = + db.production.role.attribute? + & db.common.idreq.attributes + & db.common.linking.attributes + db.production = + + ## A production in a set of EBNF productions + element production { + db.production.attlist, db.lhs, db.rhs+, db.constraint* + } +} +div { + db.lhs.role.attribute = attribute role { text } + db.lhs.attlist = + db.lhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lhs = + + ## The left-hand side of an EBNF production + element lhs { db.lhs.attlist, text } +} +div { + db.rhs.role.attribute = attribute role { text } + db.rhs.attlist = + db.rhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.rhs = + + ## The right-hand side of an EBNF production + element rhs { + db.rhs.attlist, + (text | db.nonterminal | db.lineannotation | db.sbr)* + } +} +div { + db.nonterminal.role.attribute = attribute role { text } + db.nonterminal.def.attribute = + + ## Specifies a URI that points to a production + ## where the nonterminal + ## is defined + attribute def { xsd:anyURI } + db.nonterminal.attlist = + db.nonterminal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.nonterminal.def.attribute + db.nonterminal = + + ## A non-terminal in an EBNF production + element nonterminal { db.nonterminal.attlist, text } +} +div { + db.constraint.role.attribute = attribute role { text } + db.constraint.attlist = + db.constraint.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.constraint = + + ## A constraint in an EBNF production + [ + s:pattern [ + s:title [ "Constraint cross reference constraint" ] + s:rule [ + context = "db:constraint[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'constraintdef' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on constraint must point to a constraintdef." + ] + ] + ] + ] + element constraint { db.constraint.attlist, empty } +} +div { + db.productionrecap.role.attribute = attribute role { text } + db.productionrecap.attlist = + db.productionrecap.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.productionrecap = + + ## A cross-reference to an EBNF production + [ + s:pattern [ + s:title [ "Production recap cross reference constraint" ] + s:rule [ + context = "db:productionrecap[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'production' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on productionrecap must point to a production." + ] + ] + ] + ] + element productionrecap { db.productionrecap.attlist, empty } +} +div { + db.constraintdef.role.attribute = attribute role { text } + db.constraintdef.attlist = + db.constraintdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.constraintdef.info = db._info.title.only + db.constraintdef = + + ## The definition of a constraint in an EBNF production + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:constraintdef" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element constraintdef { + db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+ + } +} +db.char.attribute = + + ## Specifies the alignment character when align + ## is set to char + ## . + attribute char { text } +db.charoff.attribute = + + ## Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + ## when align + ## is set to char + ## . + attribute charoff { + xsd:decimal { minExclusive = "0" maxExclusive = "100" } + } +db.frame.attribute = + + ## Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + attribute frame { + + ## Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + "all" + | + ## Frame only the bottom of the table. + "bottom" + | + ## Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + "none" + | + ## Frame the left and right sides of the table. + "sides" + | + ## Frame the top of the table. + "top" + | + ## Frame the top and bottom of the table. + "topbot" + } +db.colsep.attribute = + + ## Specifies the presence or absence of the column separator + attribute colsep { + + ## No column separator rule. + "0" + | + ## Provide a column separator rule on the right + "1" + } +db.rowsep.attribute = + + ## Specifies the presence or absence of the row separator + attribute rowsep { + + ## No row separator rule. + "0" + | + ## Provide a row separator rule below + "1" + } +db.orient.attribute = + + ## Specifies the orientation of the table + attribute orient { + + ## 90 degrees counter-clockwise from the rest of the text flow. + "land" + | + ## The same orientation as the rest of the text flow. + "port" + } +db.tabstyle.attribute = + + ## Specifies the table style + attribute tabstyle { text } +db.rowheader.attribute = + + ## Indicates whether or not the entries in the first column should be considered row headers + attribute rowheader { + + ## Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + "firstcol" + | + ## Indicates that row headers are identified by use of the headers attribute on entries in the table. + "headers" + | + ## Indicates that entries in the first column have no special significance with respect to column headers. + "norowheader" + } +db.align.attribute = + + ## Specifies the horizontal alignment of text in an entry. + attribute align { + + ## Centered. + "center" + | + ## Aligned on a particular character. + "char" + | + ## Left and right justified. + "justify" + | + ## Left justified. + "left" + | + ## Right justified. + "right" + } +db.valign.attribute = + + ## Specifies the vertical alignment of text in an entry. + attribute valign { + + ## Aligned on the bottom of the entry. + "bottom" + | + ## Aligned in the middle. + "middle" + | + ## Aligned at the top of the entry. + "top" + } +db.specify-col-by-colname.attributes = + + ## Specifies a column specification by name. + attribute colname { text } +db.specify-col-by-namest.attributes = + + ## Specifies a starting column by name. + attribute namest { text } +db.specify-span-by-spanspec.attributes = + + ## Specifies a span by name. + attribute spanname { text } +db.specify-span-directly.attributes = + + ## Specifies a starting column by name. + attribute namest { text } + & + ## Specifies an ending column by name. + attribute nameend { text } +db.column-spec.attributes = + db.specify-col-by-colname.attributes + | db.specify-col-by-namest.attributes + | db.specify-span-by-spanspec.attributes + | db.specify-span-directly.attributes +db.colname.attribute = + + ## Provides a name for a column specification. + attribute colname { text } +db.spanname.attribute = + + ## Provides a name for a span specification. + attribute spanname { text } +div { + db.tgroup.role.attribute = attribute role { text } + db.tgroup.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.tgroup.cols.attribute = + + ## The number of columns in the table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.tgroup.attlist = + db.tgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.tgroup.tgroupstyle.attribute? + & db.tgroup.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.tgroup = + + ## A wrapper for the main content of a table, or part of a table + element tgroup { + db.tgroup.attlist, + db.colspec*, + db.spanspec*, + db.cals.thead?, + db.cals.tfoot?, + db.cals.tbody + } +} +div { + db.colspec.role.attribute = attribute role { text } + db.colspec.colnum.attribute = + + ## The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + attribute colnum { xsd:positiveInteger } + db.colspec.colwidth.attribute = + + ## Specifies the width of the column. + attribute colwidth { text } + db.colspec.attlist = + db.colspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.colspec.colnum.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.colspec.colwidth.attribute? + & db.charoff.attribute? + & db.colname.attribute? + & db.rowsep.attribute? + & db.align.attribute? + & db.rowheader.attribute? + db.colspec = + + ## Specifications for a column in a table + element colspec { db.colspec.attlist, empty } +} +div { + db.spanspec.role.attribute = attribute role { text } + db.spanspec.namest.attribute = + + ## Specifies a starting column by name. + attribute namest { text } + db.spanspec.nameend.attribute = + + ## Specifies an ending column by name. + attribute nameend { text } + db.spanspec.attlist = + db.spanspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spanname.attribute + & db.spanspec.namest.attribute + & db.spanspec.nameend.attribute + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.spanspec = + + ## Formatting information for a spanned column in a table + element spanspec { db.spanspec.attlist, empty } +} +div { + db.cals.thead.role.attribute = attribute role { text } + db.cals.thead.attlist = + db.cals.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.thead = + + ## A table header consisting of one or more rows + element thead { db.cals.thead.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tfoot.role.attribute = attribute role { text } + db.cals.tfoot.attlist = + db.cals.tfoot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tfoot = + + ## A table footer consisting of one or more rows + element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tbody.role.attribute = attribute role { text } + db.cals.tbody.attlist = + db.cals.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.tbody.attlist, db.row+ } +} +div { + db.row.role.attribute = attribute role { text } + db.row.attlist = + db.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.row = + + ## A row in a table + element row { db.row.attlist, (db.entry | db.entrytbl)+ } +} +div { + db.entry.role.attribute = attribute role { text } + db.entry.morerows.attribute = + + ## Specifies the number of additional rows which this entry occupies. Defaults to zero. + attribute morerows { xsd:integer } + db.entry.rotate.attribute = + + ## Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + attribute rotate { + + ## Do not rotate the cell. + "0" + | + ## Rotate the cell 90 degrees counter-clockwise. + "1" + } + db.entry.scope.attribute = + + ## Specifies the scope of a header. + attribute scope { + + ## Applies to the row + "row" + | + ## Applies to the column + "col" + | + ## Applies to the row group + "rowgroup" + | + ## Applies to the column group + "colgroup" + } + db.entry.headers.attribute = + + ## Specifies the entry or entries which serve as headers for this element. + attribute headers { xsd:IDREFS } + db.entry.attlist = + db.entry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.entry.morerows.attribute? + & db.column-spec.attributes? + & db.rowsep.attribute? + & db.entry.rotate.attribute? + & db.align.attribute? + & db.entry.scope.attribute? + & db.entry.headers.attribute? + db.entry = + + ## A cell in a table + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:entry" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of entry" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:entry" + s:assert [ + test = "not(.//db:informaltable)" + "informaltable must not occur among the children or descendants of entry" + ] + ] + ] + ] + element entry { + db.entry.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.entrytbl.role.attribute = attribute role { text } + db.entrytbl.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.entrytbl.cols.attribute = + + ## The number of columns in the entry table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.entrytbl.attlist = + db.entrytbl.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.column-spec.attributes? + & db.entrytbl.tgroupstyle.attribute? + & db.entrytbl.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.entrytbl = + + ## A subtable appearing in place of an entry in a table + element entrytbl { + db.entrytbl.attlist, + db.colspec*, + db.spanspec*, + db.cals.entrytbl.thead?, + db.cals.entrytbl.tbody + } +} +div { + db.cals.entrytbl.thead.role.attribute = attribute role { text } + db.cals.entrytbl.thead.attlist = + db.cals.entrytbl.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.thead = + + ## A table header consisting of one or more rows + element thead { + db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+ + } +} +div { + db.cals.entrytbl.tbody.role.attribute = attribute role { text } + db.cals.entrytbl.tbody.attlist = + db.cals.entrytbl.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ } +} +div { + db.entrytbl.row.role.attribute = attribute role { text } + db.entrytbl.row.attlist = + db.entrytbl.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.entrytbl.row = + + ## A row in a table + element row { db.entrytbl.row.attlist, db.entry+ } +} +div { + db.cals.table.role.attribute = attribute role { text } + db.cals.table.label.attribute = db.label.attribute + db.cals.table.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.cals.table.attlist = + db.cals.table.role.attribute? + & db.cals.table.type.attribute? + & db.cals.table.label.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & + ## Indicates if the short or long title should be used in a List of Tables + attribute shortentry { + + ## Indicates that the full title should be used. + "0" + | + ## Indicates that the short short title (titleabbrev) should be used. + "1" + }? + & + ## Indicates if the table should appear in a List of Tables + attribute tocentry { + + ## Indicates that the table should not occur in the List of Tables. + "0" + | + ## Indicates that the table should appear in the List of Tables. + "1" + }? + & db.rowheader.attribute? + db.cals.table.info = db._info.title.onlyreq + db.cals.table = + + ## A formal table in a document + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:table" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element table { + db.cals.table.attlist, + db.cals.table.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +div { + db.cals.informaltable.role.attribute = attribute role { text } + db.cals.informaltable.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.cals.informaltable.attlist = + db.cals.informaltable.role.attribute? + & db.cals.informaltable.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & db.rowheader.attribute? + db.cals.informaltable.info = db._info.title.forbidden + db.cals.informaltable = + + ## A table without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informaltable" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informaltable { + db.cals.informaltable.attlist, + db.cals.informaltable.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +db.html.coreattrs = + + ## This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + attribute class { text }? + & + ## This attribute specifies style information for the current element. + attribute style { text }? + & + ## This attribute offers advisory information about the element for which it is set. + attribute title { text }? +db.html.i18n = + + ## This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + attribute lang { text }? +db.html.events = + + ## Occurs when the pointing device button is clicked over an element. + attribute onclick { text }? + & + ## Occurs when the pointing device button is double clicked over an element. + attribute ondblclick { text }? + & + ## Occurs when the pointing device button is pressed over an element. + attribute onmousedown { text }? + & + ## Occurs when the pointing device button is released over an element. + attribute onmouseup { text }? + & + ## Occurs when the pointing device is moved onto an element. + attribute onmouseover { text }? + & + ## Occurs when the pointing device is moved while it is over an element. + attribute onmousemove { text }? + & + ## Occurs when the pointing device is moved away from an element. + attribute onmouseout { text }? + & + ## Occurs when a key is pressed and released over an element. + attribute onkeypress { text }? + & + ## Occurs when a key is pressed down over an element. + attribute onkeydown { text }? + & + ## Occurs when a key is released over an element. + attribute onkeyup { text }? +db.html.attrs = + db.common.attributes + & db.html.coreattrs + & db.html.i18n + & db.html.events +db.html.cellhalign = + + ## Specifies the alignment of data and the justification of text in a cell. + attribute align { + + ## Left-flush data/Left-justify text. This is the default value for table data. + "left" + | + ## Center data/Center-justify text. This is the default value for table headers. + "center" + | + ## Right-flush data/Right-justify text. + "right" + | + ## Double-justify text. + "justify" + | + ## Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + "char" + }? + & + ## This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + attribute char { text }? + & + ## When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + attribute charoff { + xsd:integer >> a:documentation [ "An explicit offset." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage offset." ] + }? +db.html.cellvalign = + + ## Specifies the vertical position of data within a cell. + attribute valign { + + ## Cell data is flush with the top of the cell. + "top" + | + ## Cell data is centered vertically within the cell. This is the default value. + "middle" + | + ## Cell data is flush with the bottom of the cell. + "bottom" + | + ## All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + "baseline" + }? +db.html.table.attributes = + + ## Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + attribute summary { text }? + & + ## Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + attribute width { + xsd:integer >> a:documentation [ "An explicit width." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage width." ] + }? + & + ## Specifies the width (in pixels only) of the frame around a table. + attribute border { xsd:nonNegativeInteger }? + & + ## Specifies which sides of the frame surrounding a table will be visible. + attribute frame { + + ## No sides. This is the default value. + "void" + | + ## The top side only. + "above" + | + ## The bottom side only. + "below" + | + ## The top and bottom sides only. + "hsides" + | + ## The left-hand side only. + "lhs" + | + ## The right-hand side only. + "rhs" + | + ## The right and left sides only. + "vsides" + | + ## All four sides. + "box" + | + ## All four sides. + "border" + }? + & + ## Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + attribute rules { + + ## No rules. This is the default value. + "none" + | + ## Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + "groups" + | + ## Rules will appear between rows only. + "rows" + | + ## Rules will appear between columns only. + "cols" + | + ## Rules will appear between all rows and columns. + "all" + }? + & + ## Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + attribute cellspacing { + xsd:integer >> a:documentation [ "An explicit spacing." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage spacing." ] + }? + & + ## Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + attribute cellpadding { + xsd:integer >> a:documentation [ "An explicit padding." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage padding." ] + }? +db.html.tablecell.attributes = + + ## Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + attribute abbr { text }? + & + ## This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + attribute axis { text }? + & + ## Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + attribute headers { text }? + & + ## Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + attribute scope { + + ## The current cell provides header information for the rest of the row that contains it + "row" + | + ## The current cell provides header information for the rest of the column that contains it. + "col" + | + ## The header cell provides header information for the rest of the row group that contains it. + "rowgroup" + | + ## The header cell provides header information for the rest of the column group that contains it. + "colgroup" + }? + & + ## Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all rows from the current row to the last row of the table section (thead + ## , tbody + ## , or tfoot + ## ) in which the cell is defined. + attribute rowspan { xsd:nonNegativeInteger }? + & + ## Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all columns from the current column to the last column of the column group (colgroup + ## ) in which the cell is defined. + attribute colspan { xsd:nonNegativeInteger }? +db.html.table.info = db._info.title.forbidden +db.html.table.model = + db.html.table.info?, + db.html.caption, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +db.html.informaltable.info = db._info.title.forbidden +db.html.informaltable.model = + db.html.informaltable.info?, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +div { + db.html.table.role.attribute = attribute role { text } + db.html.table.label.attribute = db.label.attribute + db.html.table.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.html.table.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.table.role.attribute? + & db.html.table.type.attribute? + & db.html.table.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.table = + + ## A formal (captioned) HTML table in a document + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:table" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element table { db.html.table.attlist, db.html.table.model } +} +div { + db.html.informaltable.role.attribute = attribute role { text } + db.html.informaltable.label.attribute = db.label.attribute + db.html.informaltable.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.html.informaltable.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.informaltable.role.attribute? + & db.html.informaltable.type.attribute? + & db.html.informaltable.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.informaltable = + + ## An HTML table without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informaltable" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informaltable { + db.html.informaltable.attlist, db.html.informaltable.model + } +} +div { + db.html.caption.attlist = db.html.attrs + db.html.caption = + + ## An HTML table caption + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:caption" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element caption { db.html.caption.attlist, db.all.inlines* } +} +div { + db.html.col.attlist = + db.html.attrs + & + ## This attribute, whose value must be an integer > 0, specifies the number of columns spanned + ## by the col + ## element; the col + ## element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + ## element shares its attributes with the next N-1 columns. + attribute span { xsd:nonNegativeInteger }? + & + ## Specifies a default width for each column spanned by the current col + ## element. It has the same meaning as the width + ## attribute for the colgroup + ## element and overrides it. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.col = + + ## Specifications for a column in an HTML table + element col { db.html.col.attlist, empty } +} +div { + db.html.colgroup.attlist = + db.html.attrs + & + ## This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + ## defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + ## element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + ## element contains one or more col + ## elements. + attribute span { xsd:nonNegativeInteger }? + & + ## This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + ## (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + ## will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + ## element. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.colgroup = + + ## A group of columns in an HTML table + element colgroup { db.html.colgroup.attlist, db.html.col* } +} +div { + db.html.thead.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.thead = + + ## A table header consisting of one or more rows in an HTML table + element thead { db.html.thead.attlist, db.html.tr+ } +} +div { + db.html.tfoot.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tfoot = + + ## A table footer consisting of one or more rows in an HTML table + element tfoot { db.html.tfoot.attlist, db.html.tr+ } +} +div { + db.html.tbody.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tbody = + + ## A wrapper for the rows of an HTML table or informal HTML table + element tbody { db.html.tbody.attlist, db.html.tr+ } +} +div { + db.html.tr.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tr = + + ## A row in an HTML table + element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ } +} +div { + db.html.th.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.th = + + ## A table header entry in an HTML table + element th { + db.html.th.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.html.td.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.td = + + ## A table entry in an HTML table + element td { + db.html.td.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.msgset.role.attribute = attribute role { text } + db.msgset.attlist = + db.msgset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgset.info = db._info.title.only + db.msgset = + + ## A detailed set of messages, usually error messages + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgset" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgset { + db.msgset.attlist, + db.msgset.info, + (db.msgentry+ | db.simplemsgentry+) + } +} +div { + db.msgentry.role.attribute = attribute role { text } + db.msgentry.attlist = + db.msgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgentry = + + ## A wrapper for an entry in a message set + element msgentry { + db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan* + } +} +div { + db.simplemsgentry.role.attribute = attribute role { text } + db.simplemsgentry.msgaud.attribute = + + ## The audience to which the message relevant + attribute msgaud { text } + db.simplemsgentry.msgorig.attribute = + + ## The origin of the message + attribute msgorig { text } + db.simplemsgentry.msglevel.attribute = + + ## The level of importance or severity of a message + attribute msglevel { text } + db.simplemsgentry.attlist = + db.simplemsgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplemsgentry.msgaud.attribute? + & db.simplemsgentry.msgorig.attribute? + & db.simplemsgentry.msglevel.attribute? + db.simplemsgentry = + + ## A wrapper for a simpler entry in a message set + element simplemsgentry { + db.simplemsgentry.attlist, db.msgtext, db.msgexplan+ + } +} +div { + db.msg.role.attribute = attribute role { text } + db.msg.attlist = + db.msg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msg.info = db._info.title.only + db.msg = + + ## A message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msg" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msg { + db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)* + } +} +div { + db.msgmain.role.attribute = attribute role { text } + db.msgmain.attlist = + db.msgmain.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgmain.info = db._info.title.only + db.msgmain = + + ## The primary component of a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgmain" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext } +} +div { + db.msgsub.role.attribute = attribute role { text } + db.msgsub.attlist = + db.msgsub.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgsub.info = db._info.title.only + db.msgsub = + + ## A subcomponent of a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgsub" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext } +} +div { + db.msgrel.role.attribute = attribute role { text } + db.msgrel.attlist = + db.msgrel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgrel.info = db._info.title.only + db.msgrel = + + ## A related component of a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgrel" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext } +} +div { + db.msgtext.role.attribute = attribute role { text } + db.msgtext.attlist = + db.msgtext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgtext = + + ## The actual text of a message component in a message set + element msgtext { db.msgtext.attlist, db.all.blocks+ } +} +div { + db.msginfo.role.attribute = attribute role { text } + db.msginfo.attlist = + db.msginfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msginfo = + + ## Information about a message in a message set + element msginfo { + db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)* + } +} +div { + db.msglevel.role.attribute = attribute role { text } + db.msglevel.attlist = + db.msglevel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msglevel = + + ## The level of importance or severity of a message in a message set + element msglevel { db.msglevel.attlist, db._text } +} +div { + db.msgorig.role.attribute = attribute role { text } + db.msgorig.attlist = + db.msgorig.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgorig = + + ## The origin of a message in a message set + element msgorig { db.msgorig.attlist, db._text } +} +div { + db.msgaud.role.attribute = attribute role { text } + db.msgaud.attlist = + db.msgaud.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgaud = + + ## The audience to which a message in a message set is relevant + element msgaud { db.msgaud.attlist, db._text } +} +div { + db.msgexplan.role.attribute = attribute role { text } + db.msgexplan.attlist = + db.msgexplan.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgexplan.info = db._info.title.only + db.msgexplan = + + ## Explanatory material relating to a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgexplan" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgexplan { + db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+ + } +} +div { + db.qandaset.role.attribute = attribute role { text } + db.qandaset.defaultlabel.enumeration = + + ## No labels + "none" + | + ## Numeric labels + "number" + | + ## "Q:" and "A:" labels + "qanda" + db.qandaset.defaultlabel.attribute = + + ## Specifies the default labelling + attribute defaultlabel { db.qandaset.defaultlabel.enumeration } + db.qandaset.attlist = + db.qandaset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.qandaset.defaultlabel.attribute? + db.qandaset.info = db._info.title.only + db.qandaset = + + ## A question-and-answer set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:qandaset" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element qandaset { + db.qandaset.attlist, + db.qandaset.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandadiv.role.attribute = attribute role { text } + db.qandadiv.attlist = + db.qandadiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandadiv.info = db._info.title.only + db.qandadiv = + + ## A titled division in a qandaset + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:qandadiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element qandadiv { + db.qandadiv.attlist, + db.qandadiv.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandaentry.role.attribute = attribute role { text } + db.qandaentry.attlist = + db.qandaentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandaentry.info = db._info.title.only + db.qandaentry = + + ## A question/answer set within a qandaset + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:qandaentry" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element qandaentry { + db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer* + } +} +div { + db.question.role.attribute = attribute role { text } + db.question.attlist = + db.question.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.question = + + ## A question in a qandaset + element question { db.question.attlist, db.label?, db.all.blocks+ } +} +div { + db.answer.role.attribute = attribute role { text } + db.answer.attlist = + db.answer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.answer = + + ## An answer to a question posed in a qandaset + element answer { db.answer.attlist, db.label?, db.all.blocks+ } +} +div { + db.label.role.attribute = attribute role { text } + db.label.attlist = + db.label.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.label = + + ## A label on a question or answer + element label { db.label.attlist, db._text } +} +db.math.inlines = db.inlineequation +db.equation.content = (db.mediaobject+ | db.mathphrase+) | db._any.mml+ +db.inlineequation.content = + (db.inlinemediaobject+ | db.mathphrase+) | db._any.mml+ +div { + db.equation.role.attribute = attribute role { text } + db.equation.label.attribute = db.label.attribute + db.equation.type.attribute = + + ## Identifies the type of equation + attribute type { text }? + db.equation.attlist = + db.equation.role.attribute? + & db.equation.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.equation.label.attribute? + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.equation.info = db._info.title.only + db.equation = + + ## A displayed mathematical equation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:equation" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element equation { + db.equation.attlist, + db.equation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.informalequation.role.attribute = attribute role { text } + db.informalequation.type.attribute = + + ## Identifies the type of equation + attribute type { text }? + db.informalequation.attlist = + db.informalequation.role.attribute? + & db.informalequation.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.informalequation.info = db._info.title.forbidden + db.informalequation = + + ## A displayed mathematical equation without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informalequation" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informalequation { + db.informalequation.attlist, + db.informalequation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.inlineequation.role.attribute = attribute role { text } + db.inlineequation.attlist = + db.inlineequation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlineequation = + + ## A mathematical equation or expression occurring inline + element inlineequation { + db.inlineequation.attlist, db.alt?, db.inlineequation.content + } +} +div { + db.mathphrase.role.attribute = attribute role { text } + db.mathphrase.attlist = + db.mathphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mathphrase = + + ## A mathematical phrase that can be represented with ordinary text and a small amount of markup + element mathphrase { + db.mathphrase.attlist, + (db._text | db.ubiq.inlines | db._emphasis)* + } +} +db.imagedata.mathml.content = db._any.mml +div { + db.imagedata.mathml.role.attribute = attribute role { text } + db.imagedata.mathml.attlist = + db.imagedata.mathml.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is MathML + attribute format { + + ## Specifies MathML. + "mathml" + }? + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.mathml.info = db._info.title.forbidden + db.imagedata.mathml = + + ## A MathML expression in a media object + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imagedata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imagedata { + db.imagedata.mathml.attlist, + db.imagedata.mathml.info, + db.imagedata.mathml.content+ + } +} +div { + db._any.mml = + + ## Any element from the MathML namespace + element mml:* { (db._any.attribute | text | db._any)* } +} +db.imagedata.svg.content = db._any.svg +div { + db.imagedata.svg.role.attribute = attribute role { text } + db.imagedata.svg.attlist = + db.imagedata.svg.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is SVG + attribute format { + + ## Specifies SVG. + "svg" + }? + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.svg.info = db._info.title.forbidden + db.imagedata.svg = + + ## An SVG drawing in a media object + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imagedata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imagedata { + db.imagedata.svg.attlist, + db.imagedata.svg.info, + db.imagedata.svg.content+ + } +} +div { + db._any.svg = + + ## Any element from the SVG namespace + element svg:* { (db._any.attribute | text | db._any)* } +} +db.markup.inlines = + db.tag + | db.markup + | db.token + | db.symbol + | db.literal + | db.code + | db.constant + | db.email + | db.uri +div { + db.markup.role.attribute = attribute role { text } + db.markup.attlist = + db.markup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.markup = + + ## A string of formatting markup in text that is to be represented literally + element markup { db.markup.attlist, db._text } +} +div { + db.tag.role.attribute = attribute role { text } + db.tag.class.enumeration = + + ## An attribute + "attribute" + | + ## An attribute value + "attvalue" + | + ## An element + "element" + | + ## An empty element tag + "emptytag" + | + ## An end tag + "endtag" + | + ## A general entity + "genentity" + | + ## The local name part of a qualified name + "localname" + | + ## A namespace + "namespace" + | + ## A numeric character reference + "numcharref" + | + ## A parameter entity + "paramentity" + | + ## A processing instruction + "pi" + | + ## The prefix part of a qualified name + "prefix" + | + ## An SGML comment + "comment" + | + ## A start tag + "starttag" + | + ## An XML processing instruction + "xmlpi" + db.tag.class.attribute = + + ## Identifies the nature of the tag content + attribute class { db.tag.class.enumeration } + db.tag.namespace.attribute = + + ## Identifies the namespace of the tag content + attribute namespace { xsd:anyURI } + db.tag.attlist = + db.tag.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tag.class.attribute? + & db.tag.namespace.attribute? + db.tag = + + ## A component of XML (or SGML) markup + element tag { db.tag.attlist, (db._text | db.tag)* } +} +div { + db.symbol.class.attribute = + + ## Identifies the class of symbol + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.symbol.role.attribute = attribute role { text } + db.symbol.attlist = + db.symbol.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.symbol.class.attribute? + db.symbol = + + ## A name that is replaced by a value before processing + element symbol { db.symbol.attlist, db._text } +} +div { + db.token.role.attribute = attribute role { text } + db.token.attlist = + db.token.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.token = + + ## A unit of information + element token { db.token.attlist, db._text } +} +div { + db.literal.role.attribute = attribute role { text } + db.literal.attlist = + db.literal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.literal = + + ## Inline text that is some literal value + element literal { db.literal.attlist, db._text } +} +div { + code.language.attribute = + + ## Identifies the (computer) language of the code fragment + attribute language { text } + db.code.role.attribute = attribute role { text } + db.code.attlist = + db.code.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & code.language.attribute? + db.code = + + ## An inline code fragment + element code { + db.code.attlist, (db.programming.inlines | db._text)* + } +} +div { + db.constant.class.attribute = + + ## Identifies the class of constant + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.constant.role.attribute = attribute role { text } + db.constant.attlist = + db.constant.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.constant.class.attribute? + db.constant = + + ## A programming or system constant + element constant { db.constant.attlist, db._text } +} +div { + db.productname.role.attribute = attribute role { text } + db.productname.class.enumeration = + + ## A name with a copyright + "copyright" + | + ## A name with a registered copyright + "registered" + | + ## A name of a service + "service" + | + ## A name which is trademarked + "trade" + db.productname.class.attribute = + + ## Specifies the class of product name + attribute class { db.productname.class.enumeration } + db.productname.attlist = + db.productname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.productname.class.attribute? + db.productname = + + ## The formal name of a product + element productname { db.productname.attlist, db._text } +} +div { + db.productnumber.role.attribute = attribute role { text } + db.productnumber.attlist = + db.productnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productnumber = + + ## A number assigned to a product + element productnumber { db.productnumber.attlist, db._text } +} +div { + db.database.class.enumeration = + + ## An alternate or secondary key + "altkey" + | + ## A constraint + "constraint" + | + ## A data type + "datatype" + | + ## A field + "field" + | + ## A foreign key + "foreignkey" + | + ## A group + "group" + | + ## An index + "index" + | + ## The first or primary key + "key1" + | + ## An alternate or secondary key + "key2" + | + ## A name + "name" + | + ## The primary key + "primarykey" + | + ## A (stored) procedure + "procedure" + | + ## A record + "record" + | + ## A rule + "rule" + | + ## The secondary key + "secondarykey" + | + ## A table + "table" + | + ## A user + "user" + | + ## A view + "view" + db.database.class.attribute = + + ## Identifies the class of database artifact + attribute class { db.database.class.enumeration } + db.database.role.attribute = attribute role { text } + db.database.attlist = + db.database.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.database.class.attribute? + db.database = + + ## The name of a database, or part of a database + element database { db.database.attlist, db._text } +} +div { + db.application.class.enumeration = + + ## A hardware application + "hardware" + | + ## A software application + "software" + db.application.class.attribute = + + ## Identifies the class of application + attribute class { db.application.class.enumeration } + db.application.role.attribute = attribute role { text } + db.application.attlist = + db.application.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.application.class.attribute? + db.application = + + ## The name of a software program + element application { db.application.attlist, db._text } +} +div { + db.hardware.role.attribute = attribute role { text } + db.hardware.attlist = + db.hardware.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.hardware = + + ## A physical part of a computer system + element hardware { db.hardware.attlist, db._text } +} +db.gui.inlines = + db.guiicon + | db.guibutton + | db.guimenuitem + | db.guimenu + | db.guisubmenu + | db.guilabel + | db.menuchoice + | db.mousebutton +div { + db.guibutton.role.attribute = attribute role { text } + db.guibutton.attlist = + db.guibutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guibutton = + + ## The text on a button in a GUI + element guibutton { + db.guibutton.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guiicon.role.attribute = attribute role { text } + db.guiicon.attlist = + db.guiicon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guiicon = + + ## Graphic and/or text appearing as a icon in a GUI + element guiicon { + db.guiicon.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guilabel.role.attribute = attribute role { text } + db.guilabel.attlist = + db.guilabel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guilabel = + + ## The text of a label in a GUI + element guilabel { + db.guilabel.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenu.role.attribute = attribute role { text } + db.guimenu.attlist = + db.guimenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenu = + + ## The name of a menu in a GUI + element guimenu { + db.guimenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenuitem.role.attribute = attribute role { text } + db.guimenuitem.attlist = + db.guimenuitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenuitem = + + ## The name of a terminal menu item in a GUI + element guimenuitem { + db.guimenuitem.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guisubmenu.role.attribute = attribute role { text } + db.guisubmenu.attlist = + db.guisubmenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guisubmenu = + + ## The name of a submenu in a GUI + element guisubmenu { + db.guisubmenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.menuchoice.role.attribute = attribute role { text } + db.menuchoice.attlist = + db.menuchoice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.menuchoice = + + ## A selection or series of selections from a menu + element menuchoice { + db.menuchoice.attlist, + db.shortcut?, + (db.guibutton + | db.guiicon + | db.guilabel + | db.guimenu + | db.guimenuitem + | db.guisubmenu)+ + } +} +div { + db.mousebutton.role.attribute = attribute role { text } + db.mousebutton.attlist = + db.mousebutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mousebutton = + + ## The conventional name of a mouse button + element mousebutton { db.mousebutton.attlist, db._text } +} +db.keyboard.inlines = + db.keycombo + | db.keycap + | db.keycode + | db.keysym + | db.shortcut + | db.accel +div { + db.keycap.function.enumeration = + + ## The "Alt" key + "alt" + | + ## The "Alt Graph" key + "altgr" + | + ## The "Backspace" key + "backspace" + | + ## The "Command" key + "command" + | + ## The "Control" key + "control" + | + ## The "Delete" key + "delete" + | + ## The down arrow + "down" + | + ## The "End" key + "end" + | + ## The "Enter" key + "enter" + | + ## The "Escape" key + "escape" + | + ## The "Home" key + "home" + | + ## The "Insert" key + "insert" + | + ## The left arrow + "left" + | + ## The "Meta" key + "meta" + | + ## The "Option" key + "option" + | + ## The page down key + "pagedown" + | + ## The page up key + "pageup" + | + ## The right arrow + "right" + | + ## The "Return" key + "return" + | + ## The "Shift" key + "shift" + | + ## The spacebar + "space" + | + ## The "Tab" key + "tab" + | + ## The up arrow + "up" + db.keycap.function-enum.attribute = + + ## Identifies the function key + attribute function { db.keycap.function.enumeration }? + db.keycap.function-other.attributes = + + ## Identifies the function key + attribute function { + + ## Indicates a non-standard function key + "other" + }?, + + ## Specifies a keyword that identifies the non-standard key + attribute otherfunction { text } + db.keycap.function.attrib = + db.keycap.function-enum.attribute + | db.keycap.function-other.attributes + db.keycap.role.attribute = attribute role { text } + db.keycap.attlist = + db.keycap.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycap.function.attrib + db.keycap = + + ## The text printed on a key on a keyboard + element keycap { db.keycap.attlist, db._text } +} +div { + db.keycode.role.attribute = attribute role { text } + db.keycode.attlist = + db.keycode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keycode = + + ## The internal, frequently numeric, identifier for a key on a keyboard + element keycode { db.keycode.attlist, db._text } +} +db.keycombination.contentmodel = + (db.keycap | db.keycombo | db.keysym) | db.mousebutton +div { + db.keycombo.action.enumeration = + + ## A (single) mouse click. + "click" + | + ## A double mouse click. + "double-click" + | + ## A mouse or key press. + "press" + | + ## Sequential clicks or presses. + "seq" + | + ## Simultaneous clicks or presses. + "simul" + db.keycombo.action-enum.attribute = + + ## Identifies the nature of the action taken. If keycombo + ## contains more than one element, simul + ## is the default, otherwise there is no default. + attribute action { db.keycombo.action.enumeration }? + db.keycombo.action-other.attributes = + + ## Identifies the nature of the action taken + attribute action { + + ## Indicates a non-standard action + "other" + }?, + + ## Identifies the non-standard action in some unspecified way. + attribute otheraction { text } + db.keycombo.action.attrib = + db.keycombo.action-enum.attribute + | db.keycombo.action-other.attributes + db.keycombo.role.attribute = attribute role { text } + db.keycombo.attlist = + db.keycombo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycombo.action.attrib + db.keycombo = + + ## A combination of input actions + element keycombo { + db.keycombo.attlist, db.keycombination.contentmodel+ + } +} +div { + db.keysym.role.attribute = attribute role { text } + db.keysym.attlist = + db.keysym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keysym = + + ## The symbolic name of a key on a keyboard + element keysym { db.keysym.attlist, db._text } +} +div { + db.accel.role.attribute = attribute role { text } + db.accel.attlist = + db.accel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.accel = + + ## A graphical user interface (GUI) keyboard shortcut + element accel { db.accel.attlist, db._text } +} +div { + db.shortcut.action.attrib = db.keycombo.action.attrib + db.shortcut.role.attribute = attribute role { text } + db.shortcut.attlist = + db.shortcut.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.shortcut.action.attrib + db.shortcut = + + ## A key combination for an action that is also accessible through a menu + element shortcut { + db.shortcut.attlist, db.keycombination.contentmodel+ + } +} +db.os.inlines = + db.prompt + | db.envar + | db.filename + | db.command + | db.computeroutput + | db.userinput +db.computeroutput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines +db.userinput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines +db.prompt.inlines = db._text | db.co +div { + db.prompt.role.attribute = attribute role { text } + db.prompt.attlist = + db.prompt.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.prompt = + + ## A character or string indicating the start of an input field in a computer display + element prompt { db.prompt.attlist, db.prompt.inlines* } +} +div { + db.envar.role.attribute = attribute role { text } + db.envar.attlist = + db.envar.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.envar = + + ## A software environment variable + element envar { db.envar.attlist, db._text } +} +div { + db.filename.class.enumeration = + + ## A device + "devicefile" + | + ## A directory + "directory" + | + ## A filename extension + "extension" + | + ## A header file (as for a programming language) + "headerfile" + | + ## A library file + "libraryfile" + | + ## A partition (as of a hard disk) + "partition" + | + ## A symbolic link + "symlink" + db.filename.class.attribute = + + ## Identifies the class of filename + attribute class { db.filename.class.enumeration } + db.filename.path.attribute = + + ## Specifies the path of the filename + attribute path { text } + db.filename.role.attribute = attribute role { text } + db.filename.attlist = + db.filename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.filename.path.attribute? + & db.filename.class.attribute? + db.filename = + + ## The name of a file + element filename { db.filename.attlist, db._text } +} +div { + db.command.role.attribute = attribute role { text } + db.command.attlist = + db.command.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.command = + + ## The name of an executable program or other software command + element command { db.command.attlist, db._text } +} +div { + db.computeroutput.role.attribute = attribute role { text } + db.computeroutput.attlist = + db.computeroutput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.computeroutput = + + ## Data, generally text, displayed or presented by a computer + element computeroutput { + db.computeroutput.attlist, db.computeroutput.inlines* + } +} +div { + db.userinput.role.attribute = attribute role { text } + db.userinput.attlist = + db.userinput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.userinput = + + ## Data entered by the user + element userinput { db.userinput.attlist, db.userinput.inlines* } +} +div { + db.cmdsynopsis.role.attribute = attribute role { text } + db.cmdsynopsis.sepchar.attribute = + + ## Specifies the character that should separate the command and its top-level arguments + attribute sepchar { text } + db.cmdsynopsis.cmdlength.attribute = + + ## Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + attribute cmdlength { text } + db.cmdsynopsis.label.attribute = db.label.attribute + db.cmdsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.cmdsynopsis.attlist = + db.cmdsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.cmdsynopsis.sepchar.attribute? + & db.cmdsynopsis.cmdlength.attribute? + & db.cmdsynopsis.label.attribute? + & db.cmdsynopsis.packageref.attribute? + db.cmdsynopsis.info = db._info.title.forbidden + db.cmdsynopsis = + + ## A syntax summary for a software command + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:cmdsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element cmdsynopsis { + db.cmdsynopsis.attlist, + db.cmdsynopsis.info, + (db.command | db.arg | db.group | db.sbr)+, + db.synopfragment* + } +} +db.rep.enumeration = + + ## Can not be repeated. + "norepeat" + | + ## Can be repeated. + "repeat" +db.rep.attribute = + + ## Indicates whether or not repetition is possible. + [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration } +db.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted without indication. + "plain" + | + ## Formatted to indicate that it is required. + "req" +db.choice.opt.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration } +db.choice.req.attribute = + + ## Indicates optionality. + [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration } +div { + db.arg.role.attribute = attribute role { text } + db.arg.rep.attribute = db.rep.attribute + db.arg.choice.attribute = db.choice.opt.attribute + db.arg.attlist = + db.arg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.arg.rep.attribute? + & db.arg.choice.attribute? + db.arg = + + ## An argument in a cmdsynopsis + element arg { + db.arg.attlist, + (db._text + | db.arg + | db.group + | db.option + | db.synopfragmentref + | db.sbr)* + } +} +div { + db.group.role.attribute = attribute role { text } + db.group.rep.attribute = db.rep.attribute + db.group.choice.attribute = db.choice.opt.attribute + db.group.attlist = + db.group.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.rep.attribute? + & db.group.choice.attribute? + db.group = + + ## A group of elements in a cmdsynopsis + element group { + db.group.attlist, + (db.arg + | db.group + | db.option + | db.synopfragmentref + | db.replaceable + | db.sbr)+ + } +} +div { + db.sbr.role.attribute = attribute role { text } + db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes + db.sbr = + + ## An explicit line break in a command synopsis + element sbr { db.sbr.attlist, empty } +} +div { + db.synopfragment.role.attribute = attribute role { text } + db.synopfragment.attlist = + db.synopfragment.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.synopfragment = + + ## A portion of a cmdsynopsis broken out from the main body of the synopsis + element synopfragment { + db.synopfragment.attlist, (db.arg | db.group)+ + } +} +div { + db.synopfragmentref.role.attribute = attribute role { text } + db.synopfragmentref.attlist = + db.synopfragmentref.role.attribute? + & db.common.attributes + & db.linkend.attribute + db.synopfragmentref = + + ## A reference to a fragment of a command synopsis + [ + s:pattern [ + s:title [ "Synopsis fragment type constraint" ] + s:rule [ + context = "db:synopfragmentref" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on synopfragmentref must point to a synopfragment." + ] + ] + ] + ] + element synopfragmentref { db.synopfragmentref.attlist, text } +} +db.programming.inlines = + db.function + | db.parameter + | db.varname + | db.returnvalue + | db.type + | db.classname + | db.exceptionname + | db.interfacename + | db.methodname + | db.modifier + | db.initializer + | db.buildtarget + | db.oo.inlines + | db.templatename + | db.macroname + | db.unionname + | db.enumname + | db.enumvalue + | db.enumidentifier + | db.typedefname +db.oo.inlines = db.ooclass | db.ooexception | db.oointerface +db.synopsis.blocks = + (db.funcsynopsis + | db.classsynopsis + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis + | db.enumsynopsis + | db.typedefsynopsis + | db.packagesynopsis + | db.macrosynopsis + | db.unionsynopsis) + | db.cmdsynopsis +div { + db.synopsis.role.attribute = attribute role { text } + db.synopsis.label.attribute = db.label.attribute + db.synopsis.attlist = + db.synopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.synopsis.label.attribute? + db.synopsis = + + ## A general-purpose element for representing the syntax of commands or functions + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:synopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element synopsis { db.synopsis.attlist, db.verbatim.contentmodel } +} +div { + db.synopsisinfo.role.attribute = attribute role { text } + db.synopsisinfo.attlist = + db.synopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.synopsisinfo = + + ## Information supplementing synopsis + element synopsisinfo { + db.synopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcsynopsis.info = db._info.title.forbidden + db.funcsynopsis.role.attribute = attribute role { text } + db.funcsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.funcsynopsis.attlist = + db.funcsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.funcsynopsis.packageref.attribute? + db.funcsynopsis = + + ## The syntax summary for a function definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:funcsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element funcsynopsis { + db.funcsynopsis.attlist, + db.funcsynopsis.info, + (db.funcsynopsisinfo | db.funcprototype)+ + } +} +div { + db.funcsynopsisinfo.role.attribute = attribute role { text } + db.funcsynopsisinfo.attlist = + db.funcsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.funcsynopsisinfo = + + ## Information supplementing the funcdefs of a funcsynopsis + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:funcsynopsisinfo" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element funcsynopsisinfo { + db.funcsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcprototype.role.attribute = attribute role { text } + db.funcprototype.attlist = + db.funcprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcprototype = + + ## The prototype of a function + element funcprototype { + db.funcprototype.attlist, + db.modifier*, + db.funcdef, + (db.void + | db.varargs + | ((db.paramdef | db.group.paramdef)+, db.varargs?)), + db.modifier* + } +} +div { + db.funcdef.role.attribute = attribute role { text } + db.funcdef.attlist = + db.funcdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcdef = + + ## A function (subroutine) name and its return type + element funcdef { + db.funcdef.attlist, + (db._text | db.type | db.templatename | db.void | db.function)* + } +} +div { + db.function.role.attribute = attribute role { text } + db.function.attlist = + db.function.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.function = + + ## The name of a function or subroutine, as in a programming language + element function { db.function.attlist, db._text } +} +div { + db.void.role.attribute = attribute role { text } + db.void.attlist = + db.void.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.void = + + ## An empty element in a function synopsis indicating that the function in question takes no arguments + element void { db.void.attlist, empty } +} +div { + db.varargs.role.attribute = attribute role { text } + db.varargs.attlist = + db.varargs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varargs = + + ## An empty element in a function synopsis indicating a variable number of arguments + element varargs { db.varargs.attlist, empty } +} +div { + db.group.paramdef.role.attribute = attribute role { text } + db.group.paramdef.choice.attribute = db.choice.opt.attribute + db.group.paramdef.attlist = + db.group.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.paramdef.choice.attribute? + db.group.paramdef = + + ## A group of parameters + element group { + db.group.paramdef.attlist, (db.paramdef | db.group.paramdef)+ + } +} +div { + db.paramdef.role.attribute = attribute role { text } + db.paramdef.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted to indicate that it is required. + "req" + db.paramdef.choice.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] + attribute choice { db.paramdef.choice.enumeration } + db.paramdef.attlist = + db.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.paramdef.choice.attribute? + db.paramdef = + + ## Information about a function parameter in a programming language + element paramdef { + db.paramdef.attlist, + (db._text + | db.initializer + | db.modifier + | db.type + | db.templatename + | db.parameter + | db.funcparams)* + } +} +div { + db.funcparams.role.attribute = attribute role { text } + db.funcparams.attlist = + db.funcparams.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcparams = + + ## Parameters for a function referenced through a function pointer in a synopsis + element funcparams { db.funcparams.attlist, db._text } +} +div { + db.classsynopsis.info = db._info.title.forbidden + db.classsynopsis.role.attribute = attribute role { text } + db.classsynopsis.class.enumeration = + + ## This is the synopsis of a class + "class" + | + ## This is the synopsis of an interface + "interface" + db.classsynopsis.class.attribute = + + ## Specifies the nature of the synopsis + attribute class { db.classsynopsis.class.enumeration } + db.classsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.classsynopsis.attlist = + db.classsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.classsynopsis.class.attribute? + & db.classsynopsis.packageref.attribute? + db.classsynopsis = + + ## The syntax summary for a class definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:classsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element classsynopsis { + db.classsynopsis.attlist, + db.classsynopsis.info, + db.classsynopsisinfo*, + db.templatename*, + db.oo.inlines, + (db.template + | db.ooexception + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis + | db.classsynopsisinfo)* + } +} +div { + db.classsynopsisinfo.role.attribute = attribute role { text } + db.classsynopsisinfo.attlist = + db.classsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.classsynopsisinfo = + + ## Information supplementing the contents of a classsynopsis + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:classsynopsisinfo" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element classsynopsisinfo { + db.classsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.ooclass.role.attribute = attribute role { text } + db.ooclass.attlist = + db.ooclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooclass = + + ## A class in an object-oriented programming language + element ooclass { + db.ooclass.attlist, + (db.package | db.modifier)*, + db.classname, + db.modifier* + } +} +div { + db.oointerface.role.attribute = attribute role { text } + db.oointerface.attlist = + db.oointerface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.oointerface = + + ## An interface in an object-oriented programming language + element oointerface { + db.oointerface.attlist, + (db.package | db.modifier)*, + db.interfacename, + db.modifier* + } +} +div { + db.ooexception.role.attribute = attribute role { text } + db.ooexception.attlist = + db.ooexception.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooexception = + + ## An exception in an object-oriented programming language + element ooexception { + db.ooexception.attlist, + (db.package | db.modifier)*, + db.exceptionname, + db.modifier* + } +} +db.modifier.xml.space.attribute = + + ## Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + attribute xml:space { + + ## Extra whitespace and line breaks must be preserved. + [ + # Ideally the definition of xml:space used on modifier would be + # different from the definition used on the verbatim elements. The + # verbatim elements forbid the use of xml:space="default" which + # wouldn't be a problem on modifier. But doing that causes the + # generated XSD schemas to be broken so I'm just reusing the existing + # definition for now. It won't be backwards incompatible to fix this + # problem in the future. + # | ## Extra whitespace and line breaks are not preserved. + # "default" + + ] + "preserve" + } +div { + db.modifier.role.attribute = attribute role { text } + db.modifier.attlist = + db.modifier.xml.space.attribute? + & db.modifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.modifier = + + ## Modifiers in a synopsis + element modifier { db.modifier.attlist, db._text } +} +div { + db.interfacename.role.attribute = attribute role { text } + db.interfacename.attlist = + db.interfacename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.interfacename = + + ## The name of an interface + element interfacename { db.interfacename.attlist, db._text } +} +div { + db.exceptionname.role.attribute = attribute role { text } + db.exceptionname.attlist = + db.exceptionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.exceptionname = + + ## The name of an exception + element exceptionname { db.exceptionname.attlist, db._text } +} +div { + db.fieldsynopsis.info = db._info.title.forbidden + db.fieldsynopsis.role.attribute = attribute role { text } + db.fieldsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.fieldsynopsis.attlist = + db.fieldsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.fieldsynopsis.packageref.attribute? + db.fieldsynopsis = + + ## The name of a field in a class definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:fieldsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element fieldsynopsis { + db.fieldsynopsis.attlist, + db.fieldsynopsis.info, + db.synopsisinfo*, + db.modifier*, + (db.type | db.templatename)*, + db.varname, + db.modifier*, + db.initializer?, + db.synopsisinfo* + } +} +div { + db.initializer.role.attribute = attribute role { text } + db.initializer.attlist = + db.initializer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.initializer.inlines = db._text | db.mathphrase | db.markup.inlines + db.initializer = + + ## The initializer for a fieldsynopsis + element initializer { + db.initializer.attlist, db.initializer.inlines* + } +} +div { + db.constructorsynopsis.info = db._info.title.forbidden + db.constructorsynopsis.role.attribute = attribute role { text } + db.constructorsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.constructorsynopsis.attlist = + db.constructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.constructorsynopsis.packageref.attribute? + db.constructorsynopsis = + + ## A syntax summary for a constructor + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:constructorsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element constructorsynopsis { + db.constructorsynopsis.attlist, + db.constructorsynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.methodname?, + ((db.methodparam | db.group.methodparam)+ | db.void?), + db.modifier*, + db.exceptionname*, + db.synopsisinfo* + } +} +div { + db.destructorsynopsis.info = db._info.title.forbidden + db.destructorsynopsis.role.attribute = attribute role { text } + db.destructorsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.destructorsynopsis.attlist = + db.destructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.destructorsynopsis.packageref.attribute? + db.destructorsynopsis = + + ## A syntax summary for a destructor + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:destructorsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element destructorsynopsis { + db.destructorsynopsis.attlist, + db.destructorsynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.methodname?, + ((db.methodparam | db.group.methodparam)+ | db.void?), + db.modifier*, + db.exceptionname*, + db.synopsisinfo* + } +} +div { + db.methodsynopsis.info = db._info.title.forbidden + db.methodsynopsis.role.attribute = attribute role { text } + db.methodsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.methodsynopsis.attlist = + db.methodsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.methodsynopsis.packageref.attribute? + db.methodsynopsis = + + ## A syntax summary for a method + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:methodsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element methodsynopsis { + db.methodsynopsis.attlist, + db.methodsynopsis.info, + db.synopsisinfo*, + (db.templatename | db.modifier)*, + (db.type | db.void)?, + db.methodname, + db.templatename*, + ((db.methodparam | db.group.methodparam)+ | db.void), + (db.exceptionname | db.modifier | db.templatename)*, + db.synopsisinfo* + } +} +div { + db.methodname.role.attribute = attribute role { text } + db.methodname.attlist = + db.methodname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.methodname = + + ## The name of a method + element methodname { db.methodname.attlist, db._text } +} +div { + db.methodparam.role.attribute = attribute role { text } + db.methodparam.rep.attribute = db.rep.attribute + db.methodparam.choice.attribute = db.choice.req.attribute + db.methodparam.attlist = + db.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.methodparam.rep.attribute? + & db.methodparam.choice.attribute? + db.methodparam = + + ## Parameters to a method + element methodparam { + db.methodparam.attlist, + (db.modifier | db.type | db.templatename)*, + ((db.parameter, db.initializer?) | db.funcparams), + db.modifier* + } +} +div { + db.group.methodparam.role.attribute = attribute role { text } + db.group.methodparam.choice.attribute = db.choice.opt.attribute + db.group.methodparam.attlist = + db.group.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.methodparam.choice.attribute? + db.group.methodparam = + + ## A group of method parameters + element group { + db.group.methodparam.attlist, + (db.methodparam | db.group.methodparam)+ + } +} +div { + db.varname.role.attribute = attribute role { text } + db.varname.attlist = + db.varname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varname = + + ## The name of a variable + element varname { db.varname.attlist, db._text } +} +div { + db.buildtarget.role.attribute = attribute role { text } + db.buildtarget.attlist = + db.buildtarget.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.buildtarget = + + ## Target of a build + element buildtarget { db.buildtarget.attlist, db._text } +} +div { + db.returnvalue.role.attribute = attribute role { text } + db.returnvalue.attlist = + db.returnvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.returnvalue = + + ## The value returned by a function + element returnvalue { db.returnvalue.attlist, db._text } +} +div { + db.type.role.attribute = attribute role { text } + db.type.class.enumeration = + + ## Combined type is union of nested types + "union" + | + ## Combined type is intersection of nested types + "intersection" + db.type.class.attribute = + + ## Specifies the way how are nested types combined together + attribute class { db.type.class.enumeration } + db.type.attlist = + db.type.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.type.class.attribute? + db.type = + + ## The classification of a value + element type { + db.type.attlist, (db._text | db.programming.inlines)* + } +} +div { + db.classname.role.attribute = attribute role { text } + db.classname.attlist = + db.classname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.classname = + + ## The name of a class, in the object-oriented programming sense + element classname { db.classname.attlist, db._text } +} +div { + db.templatename.role.attribute = attribute role { text } + db.templatename.attlist = + db.templatename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.templatename = + + ## The identifier for a template, in the generic programming sense + element templatename { db.templatename.attlist, db._text } +} +div { + db.template.role.attribute = attribute role { text } + db.template.attlist = + db.template.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.template = + + ## The definition of a template, in the generic programming sense + element template { + db.template.attlist, + (((db.modifier | db.type | db._text)*, + db.templatename, + (db.modifier | db.type | db._text)*) + | db.specializedtemplate) + } +} +div { + db.specializedtemplate.role.attribute = attribute role { text } + db.specializedtemplate.attlist = + db.specializedtemplate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.specializedtemplate = + + ## The specialization of a template identifier, in the generic programming sense + element specializedtemplate { + db.specializedtemplate.attlist, + (db.modifier | db.type | db._text)* + } +} +div { + db.packagesynopsis.info = db._info.title.forbidden + db.packagesynopsis.role.attribute = attribute role { text } + db.packagesynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.packagesynopsis.attlist = + db.packagesynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.packagesynopsis.packageref.attribute? + db.packagesynopsis = + + ## The syntax summary for a package definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:packagesynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element packagesynopsis { + db.packagesynopsis.attlist, + db.packagesynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.package, + db.modifier*, + (db.synopsis.blocks | db.synopsisinfo)* + } +} +div { + db.macroname.role.attribute = attribute role { text } + db.macroname.attlist = + db.macroname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macroname = + + ## The name of a macro (a code-generating function) + element macroname { db.macroname.attlist, db._text } +} +div { + db.macrosynopsis.info = db._info.title.forbidden + db.macrosynopsis.role.attribute = attribute role { text } + db.macrosynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.macrosynopsis.attlist = + db.macrosynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.macrosynopsis.packageref.attribute? + db.macrosynopsis = + + ## The syntax summary for a macro definition (code-generating function) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:macrosynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element macrosynopsis { + db.macrosynopsis.attlist, + db.macrosynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.macroname, + (db.package | db.modifier)*, + db.macroprototype+, + db.synopsisinfo* + } +} +div { + db.macroprototype.role.attribute = attribute role { text } + db.macroprototype.attlist = + db.macroprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macroprototype = + + ## The prototype of a macro (code-generating function) + element macroprototype { + db.macroprototype.attlist, + db.modifier*, + db.macrodef, + (db.void + | db.varargs + | ((db.paramdef | db.group.paramdef)+, db.varargs?)), + db.modifier* + } +} +div { + db.macrodef.role.attribute = attribute role { text } + db.macrodef.attlist = + db.macrodef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macrodef = + + ## A macro name and its return type + element macrodef { + db.macrodef.attlist, (db.type | db.templatename)*, db.macroname + } +} +div { + db.unionname.role.attribute = attribute role { text } + db.unionname.attlist = + db.unionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.unionname = + + ## The name of a union of types + element unionname { db.unionname.attlist, db._text } +} +div { + db.union.role.attribute = attribute role { text } + db.union.attlist = + db.union.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.union = + + ## The definition of a union of types, which may be more than a name + element union { db.union.attlist, db.type+ } +} +div { + db.unionsynopsis.info = db._info.title.forbidden + db.unionsynopsis.role.attribute = attribute role { text } + # N.B. the enumeration is explicitly identical to the enumeration + # on enumsynopsis by default. + db.unionsynopsis.ordered.attribute = + + ## Indicates how the value of a union is specified. + attribute ordered { db.enumsynopsis.ordered.enumeration } + db.unionsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.unionsynopsis.attlist = + db.unionsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.unionsynopsis.ordered.attribute? + & db.unionsynopsis.packageref.attribute? + db.unionsynopsis = + + ## The syntax summary for a union-of-types definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:unionsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element unionsynopsis { + db.unionsynopsis.attlist, + db.unionsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.unionname?, + db.union, + (db.package | db.modifier)*, + db.synopsisinfo* + } +} +div { + db.enumname.role.attribute = attribute role { text } + db.enumname.attlist = + db.enumname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumname = + + ## The name of an enumeration + element enumname { db.enumname.attlist, db._text } +} +div { + db.enumvalue.role.attribute = attribute role { text } + db.enumvalue.attlist = + db.enumvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumvalue = + + ## The value an enumerated type can take + element enumvalue { db.enumvalue.attlist, db._text } +} +div { + db.enumitemdescription.role.attribute = attribute role { text } + db.enumitemdescription.attlist = + db.enumitemdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumitemdescription = + + ## The description of a value an enumerated type can take + element enumitemdescription { + db.enumitemdescription.attlist, db.all.inlines* + } +} +div { + db.enumidentifier.role.attribute = attribute role { text } + db.enumidentifier.attlist = + db.enumidentifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumidentifier = + + ## The identifier of a value an enumerated type can take + element enumidentifier { db.enumidentifier.attlist, db._text } +} +div { + db.enumitem.role.attribute = attribute role { text } + db.enumitem.attlist = + db.enumitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumitem = + + ## A value an enumerated type can take and its description + element enumitem { + db.enumitem.attlist, + db.enumidentifier, + db.enumvalue*, + db.enumitemdescription? + } +} +div { + db.enumsynopsis.info = db._info.title.forbidden + db.enumsynopsis.role.attribute = attribute role { text } + db.enumsynopsis.ordered.enumeration = + + ## Value of enum is specified explicitly using enumvalue + "0" + | + ## Value of enum is inferred from its position + "1" + db.enumsynopsis.ordered.attribute = + + ## Indicates how the value of an enumeration is specified. + attribute ordered { db.enumsynopsis.ordered.enumeration } + db.enumsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.enumsynopsis.attlist = + db.enumsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.enumsynopsis.ordered.attribute? + & db.enumsynopsis.packageref.attribute? + db.enumsynopsis = + + ## The syntax summary for an enumerated-type definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:enumsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element enumsynopsis { + db.enumsynopsis.attlist, + db.enumsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + (db.enumname, db.modifier*)?, + db.enumitem+, + db.synopsisinfo* + } +} +div { + db.typedefname.role.attribute = attribute role { text } + db.typedefname.attlist = + db.typedefname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.typedefname = + + ## The name of a type alias + element typedefname { db.typedefname.attlist, db._text } +} +div { + db.typedefsynopsis.info = db._info.title.forbidden + db.typedefsynopsis.role.attribute = attribute role { text } + db.typedefsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.typedefsynopsis.attlist = + db.typedefsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.typedefsynopsis.packageref.attribute? + db.typedefsynopsis = + + ## The syntax summary for a type-alias definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:typedefsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element typedefsynopsis { + db.typedefsynopsis.attlist, + db.typedefsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.typedefname, + (db.package | db.modifier)*, + db.synopsisinfo* + } +} +div { + db.programlisting.role.attribute = attribute role { text } + db.programlisting.width.attribute = db.width.characters.attribute + db.programlisting.attlist = + db.programlisting.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.programlisting.width.attribute? + db.programlisting = + + ## A literal listing of all or part of a program + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:programlisting" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element programlisting { + db.programlisting.attlist, db.verbatim.contentmodel + } +} +db.admonition.blocks = + db.caution | db.danger | db.important | db.note | db.tip | db.warning +db.admonition.contentmodel = db._info.title.only, db.all.blocks+ +div { + db.caution.role.attribute = attribute role { text } + db.caution.attlist = + db.caution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caution = + + ## A note of caution + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:caution" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element caution { db.caution.attlist, db.admonition.contentmodel } +} +div { + db.danger.role.attribute = attribute role { text } + db.danger.attlist = + db.danger.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.danger = + + ## An admonition set off from the text indicating hazardous situation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:danger" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element danger { db.danger.attlist, db.admonition.contentmodel } +} +div { + db.important.role.attribute = attribute role { text } + db.important.attlist = + db.important.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.important = + + ## An admonition set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:important" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element important { + db.important.attlist, db.admonition.contentmodel + } +} +div { + db.note.role.attribute = attribute role { text } + db.note.attlist = + db.note.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.note = + + ## A message set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:note" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element note { db.note.attlist, db.admonition.contentmodel } +} +div { + db.tip.role.attribute = attribute role { text } + db.tip.attlist = + db.tip.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tip = + + ## A suggestion to the user, set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:tip" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element tip { db.tip.attlist, db.admonition.contentmodel } +} +div { + db.warning.role.attribute = attribute role { text } + db.warning.attlist = + db.warning.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.warning = + + ## An admonition set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:warning" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element warning { db.warning.attlist, db.admonition.contentmodel } +} +db.error.inlines = + db.errorcode | db.errortext | db.errorname | db.errortype +div { + db.errorcode.role.attribute = attribute role { text } + db.errorcode.attlist = + db.errorcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorcode = + + ## An error code + element errorcode { db.errorcode.attlist, db._text } +} +div { + db.errorname.role.attribute = attribute role { text } + db.errorname.attlist = + db.errorname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorname = + + ## An error name + element errorname { db.errorname.attlist, db._text } +} +div { + db.errortext.role.attribute = attribute role { text } + db.errortext.attlist = + db.errortext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortext = + + ## An error message. + element errortext { db.errortext.attlist, db._text } +} +div { + db.errortype.role.attribute = attribute role { text } + db.errortype.attlist = + db.errortype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortype = + + ## The classification of an error message + element errortype { db.errortype.attlist, db._text } +} +db.systemitem.inlines = db._text | db.co +div { + db.systemitem.class.enumeration = + + ## A daemon or other system process (syslogd) + "daemon" + | + ## A domain name (example.com) + "domainname" + | + ## An ethernet address (00:05:4E:49:FD:8E) + "etheraddress" + | + ## An event of some sort (SIGHUP) + "event" + | + ## An event handler of some sort (hangup) + "eventhandler" + | + ## A filesystem (ext3) + "filesystem" + | + ## A fully qualified domain name (my.example.com) + "fqdomainname" + | + ## A group name (wheel) + "groupname" + | + ## A network interface (eth0) + "interface" + | + ## An IP address (127.0.0.1) + "ipaddress" + | + ## A library (libncurses) + "library" + | + ## A macro + "macro" + | + ## A netmask (255.255.255.192) + "netmask" + | + ## A newsgroup (comp.text.xml) + "newsgroup" + | + ## An operating system name (Hurd) + "osname" + | + ## A process (gnome-cups-icon) + "process" + | + ## A protocol (ftp) + "protocol" + | + ## A resource + "resource" + | + ## A security context (a role, permission, or security token, for example) + "securitycontext" + | + ## A server (mail.example.com) + "server" + | + ## A service (ppp) + "service" + | + ## A system name (hephaistos) + "systemname" + | + ## A user name (ndw) + "username" + db.systemitem.class-enum.attribute = + + ## Identifies the nature of the system item + attribute class { db.systemitem.class.enumeration }? + db.systemitem.class-other.attribute = + + ## Identifies the nature of the non-standard system item + attribute otherclass { xsd:NMTOKEN } + db.systemitem.class-other.attributes = + + ## Identifies the kind of systemitemgraphic identifier + attribute class { + + ## Indicates that the system item is some 'other' kind. + "other" + } + & db.systemitem.class-other.attribute + db.systemitem.class.attribute = + db.systemitem.class-enum.attribute + | db.systemitem.class-other.attributes + db.systemitem.role.attribute = attribute role { text } + db.systemitem.attlist = + db.systemitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.systemitem.class.attribute? + db.systemitem = + + ## A system-related item or term + element systemitem { db.systemitem.attlist, db.systemitem.inlines* } +} +div { + db.option.role.attribute = attribute role { text } + db.option.attlist = + db.option.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.option = + + ## An option for a software command + element option { db.option.attlist, db._text } +} +div { + db.optional.role.attribute = attribute role { text } + db.optional.attlist = + db.optional.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.optional = + + ## Optional information + element optional { db.optional.attlist, (db._text | db.optional)* } +} +div { + db.property.role.attribute = attribute role { text } + db.property.attlist = + db.property.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.property = + + ## A unit of data associated with some part of a computer system + element property { db.property.attlist, db._text } +} +div { + db.topic.status.attribute = db.status.attribute + db.topic.role.attribute = attribute role { text } + db.topic.type.attribute = + + ## Identifies the topic type + attribute type { text } + db.topic.attlist = + db.topic.role.attribute? + & db.topic.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.topic.status.attribute? + db.topic.info = db._info.title.req + db.topic = + + ## A modular unit of documentation not part of any particular narrative flow + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:topic" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element topic { + db.topic.attlist, + db.topic.info, + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* + } +} diff --git a/catalog/docbook5.2/rng/docbook.rng b/catalog/docbook5.2/rng/docbook.rng new file mode 100755 index 0000000..61606a5 --- /dev/null +++ b/catalog/docbook5.2/rng/docbook.rng @@ -0,0 +1,18457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Any attribute, including any attribute in any namespace + + + + + + Any attribute in any other explicit namespace + + + + + + + + + + + + + + Any element from almost any namespace + + + + + + + + + + + + + + +
+ + + Designates the computer or chip architecture to which the element applies + + + + + Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + + + + + provides a standard place for application-specific effectivity + + + + + Indicates standards conformance characteristics of the element + + + + + Indicates the operating system to which the element is applicable + + + + + Indicates the editorial revision to which the element belongs + + + + + Indicates something about the security level associated with the element to which it applies + + + + + Indicates the level of user experience for which the element applies + + + + + Indicates the computer vendor to which the element applies + + + + + Indicates the word size (width in bits) of the computer architecture to which the element applies + + + + + Indicates the output format (for example, print or epub) to which the element applies + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Points to the element whose content is to be used as the text of the link + + + + + + Points to an internal link target by identifying the value of its xml:id attribute + + + + + + Points to one or more internal link targets by identifying the value of their xml:id attributes + + + + + + Identifies a link target with a URI + + + + + + Identifies the XLink link type + simple + An XLink simple link type + + + + + Identifies the XLink role of the link + + + + + + Identifies the XLink arcrole of the link + + + + + + Identifies the XLink title of the link + + + + + new + An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + replace + An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. + embed + An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + other + The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior. + none + The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + + + + + Identifies the XLink show behavior of the link + + + + + + onLoad + An application should traverse to the ending resource immediately on loading the starting resource. + onRequest + An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + other + The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior. + none + The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + + + + + Identifies the XLink actuate behavior of the link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Identifies the unique ID value of the element + + + + + + Specifies the DocBook version of the element and its descendants + + + + + Specifies the natural language of the element and its descendants + + + + + Specifies the base URI of the element and its descendants + + + + + + Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + + + + + Provides the text that is to be generated for a cross reference to the element + + + + + Specifies a keyword or keywords identifying additional style information + + + + + changed + The element has been changed. + added + The element is new (has been added to the document). + deleted + The element has been deleted. + off + Explicitly turns off revision markup for this element. + + + + + Identifies the revision status of the element + + + + + + ltr + Left-to-right text + rtl + Right-to-left text + lro + Left-to-right override + rlo + Right-to-left override + + + + + Identifies the direction of text in an element + + + + + + The RDFa Lite vocab + + + + + + The RDFa Lite typeof + + + + + The RDFa Lite property + + + + + The RDFa Lite resource + + + + + The RDFa Lite prefix + + + + + + + + + + + + + + + + + + + + + + + + none + No ID fixup strategy + suffix + ID fixup by concatenating suffixes + auto + ID fixup by creating unique values + + + + + The transclusion ID fixup strategy + + + + + + The transclusion suffix to use when the suffix ID fixup strategy is employed + + Suffix fixup must be specified + + If a suffix is specified, suffix ID fixup must also be specified. + + + + + + + user + No link scope adjustments are made + local + The link scopes are adjusted with the suffix property + near + The link scopes are adjusted based on proximity + global + The link scopes are adjusted based on document order + + + + + The transclusion link scope adjustment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the format of the data + + + + + Indentifies the location of the data by URI + + + + Identifies the location of the data by external identifier (entity name) + + + + + + + continues + Line numbering continues from the immediately preceding element with the same name. + restarts + Line numbering restarts (begins at 1, usually). + + + + + Determines whether line numbering continues from the previous element or restarts + + + + + + numbered + Lines are numbered. + unnumbered + Lines are not numbered. + + + + + Determines whether lines are numbered + + + + + + Specifies the initial line number + + + + + + Identifies the language (i.e. programming language) of the verbatim content + + + + + Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not + preserve + Whitespace must be preserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies an identifying string for presentation purposes + + + + + Specifies the width (in characters) of the element + + + + + + compact + The spacing should be "compact". + normal + The spacing should be "normal". + + + + + Specifies (a hint about) the spacing of the content + + + + + + 0 + The element should be rendered in the current text flow (with the flow column width). + 1 + The element should be rendered across the full text page. + + + + + Indicates if the element is rendered across the column or the page + + + + + + Identifies the language (i.e. programming language) of the content + + + + + optional + The content describes an optional step or steps. + required + The content describes a required step or steps. + + + + + Specifies if the content is required or optional + + + + + + Specifies style information to be used when rendering the float + + + + + Specifies the width of the element + + + + + Specifies the depth of the element + + + + + Specifies the width of the content rectangle + + + + + Specifies the depth of the content rectangle + + + + + 0 + False (do not scale-to-fit; anamorphic scaling may occur) + 1 + True (scale-to-fit; anamorphic scaling is forbidden) + + + + + Specifies the scaling factor + + + + + + Specifies a classid for a media object player + + + + + Specifies the autoplay setting for a media object player + + + + + center + Centered horizontally + char + Aligned horizontally on the specified character + justify + Fully justified (left and right margins or edges) + left + Left aligned + right + Right aligned + + + + + bottom + Aligned on the bottom of the region + middle + Centered vertically + top + Aligned on the top of the region + + + + + doi + A digital object identifier. + isbn + An international standard book number. + isrn + An international standard technical report number (ISO 10444). + issn + An international standard serial number. + istc + An international standard text code. + libraryofcongress + A Library of Congress reference number. + pubsnumber + A publication number (an internal number or possibly organizational standard). + uri + A Uniform Resource Identifier + + + + + + Identifies the kind of bibliographic identifier + + + + + + + Identifies the nature of the non-standard bibliographic identifier + + + + + + + Identifies the kind of bibliographic identifier + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + article + An article + bbs + A bulletin board system + book + A book + cdrom + A CD-ROM + chapter + A chapter (as of a book) + dvd + A DVD + emailmessage + An email message + gopher + A gopher page + journal + A journal + manuscript + A manuscript + newsposting + A posting to a newsgroup + part + A part (as of a book) + refentry + A reference entry + section + A section (as of a book or article) + series + A series + set + A set (as of books) + webpage + A web page + wiki + A wiki page + other + Some other kind of work + + + + + + + + + Identifies the nature of the published work + + + + + + + Identifies the nature of some other kind of published work + + + + + + + Identifies that this is some other kind of published work + other + Indicates that the published work is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text of the title of a section of a document or of a formal block-level element + + + + + + +
+
+ + + + + + + + + + + + + + + The abbreviation of a title + + + + + + +
+
+ + + + + + + + + + + + + + + The subtitle of a document + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with a required title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a required title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + +
+
+ + + + + + Identifies the controlled vocabulary used by this set's terms + + + + + + + + + + + + + + + + + + A set of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + Specifies a ranking for this subject relative to other subjects in the same set + + + + + + + + + + + + + + + + + One of a group of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + + + + + + + + + + A term in a group of terms describing the subject matter of a document + + + + +
+
+ + + + + + + + + + + + + + + A set of keywords describing the content of a document + + + + + + +
+
+ + + + + + + + + + + + + + + One of a set of keywords describing the content of a document + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + Identifies the type of procedure + + + + + + + + + + + + + + + + + + + + + A list of operations to be performed in a well-defined sequence + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A unit of action in a procedure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + Alternative steps in a procedure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for steps that occur within steps in a procedure + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for identifying the results of a procedure or step + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + A portion of a document that is isolated from the main narrative flow + + Element exclusion + + sidebar must not occur among the children or descendants of sidebar + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short description or note about a person + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A quotation set off from the main text + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The source of a block quote or epigraph + + + + + + + + + + + + +
+
+ + + sect1 + Render as a first-level section + sect2 + Render as a second-level section + sect3 + Render as a third-level section + sect4 + Render as a fourth-level section + sect5 + Render as a fifth-level section + + + + + + Indicates how the bridge head should be rendered + + + + + + + Identifies the nature of the non-standard rendering + + + + + + + Indicates how the bridge head should be rendered + other + Identifies a non-standard rendering + + + + + + + + + + + + + + + + + + + + + + + + + + + + A free-floating heading + + + + + + +
+
+ + + + + + + + + + + + + + + A remark (or comment) intended for presentation in a draft manuscript + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short inscription at the beginning of a document or component + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + Identifies the desired footnote mark + + + + + + + + + + + + + + + + + + A footnote + + Element exclusion + + footnote must not occur among the children or descendants of footnote + + + + Element exclusion + + example must not occur among the children or descendants of footnote + + + + Element exclusion + + figure must not occur among the children or descendants of footnote + + + + Element exclusion + + table must not occur among the children or descendants of footnote + + + + Element exclusion + + equation must not occur among the children or descendants of footnote + + + + Element exclusion + + sidebar must not occur among the children or descendants of footnote + + + + Element exclusion + + task must not occur among the children or descendants of footnote + + + + Element exclusion + + epigraph must not occur among the children or descendants of footnote + + + + Element exclusion + + caution must not occur among the children or descendants of footnote + + + + Element exclusion + + danger must not occur among the children or descendants of footnote + + + + Element exclusion + + important must not occur among the children or descendants of footnote + + + + Element exclusion + + note must not occur among the children or descendants of footnote + + + + Element exclusion + + tip must not occur among the children or descendants of footnote + + + + Element exclusion + + warning must not occur among the children or descendants of footnote + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph with a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph that contains only text and inline markup, no block elements + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + Identifies the type of mark to be used on items in this list + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a bullet or other dingbat + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + continues + Specifies that numbering should begin where the preceding list left off + restarts + Specifies that numbering should begin again at 1 + + + + + Indicates how list numbering should begin relative to the immediately preceding list + + + + + + Specifies the initial line number + + + + + + ignore + Specifies that numbering should ignore list nesting + inherit + Specifies that numbering should inherit from outer-level lists + + + + + Indicates whether or not item numbering should be influenced by list nesting + + + + + + arabic + Specifies Arabic numeration (1, 2, 3, …) + upperalpha + Specifies upper-case alphabetic numeration (A, B, C, …) + loweralpha + Specifies lower-case alphabetic numeration (a, b, c, …) + upperroman + Specifies upper-case Roman numeration (I, II, III, …) + lowerroman + Specifies lower-case Roman numeration (i, ii, iii …) + + + + + Indicates the desired numeration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a sequentially incremented label + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + Specifies the keyword for the type of mark that should be used on this + item, instead of the mark that would be used by default + + + + + + + + + + + + + + + + + + + + + A wrapper for the elements of a list item + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A segmented list, a list of sets of elements + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of an element of a list item in a segmented list + + + + + + +
+
+ + + + + + + + + + + + + + + A list item in a segmented list + + Cardinality of segments and titles + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a list item in a segmented list + + + + + + +
+
+ + + + + + horiz + A tabular presentation in row-major order. + vert + A tabular presentation in column-major order. + inline + An inline presentation, usually a comma-delimited list. + + + + + Specifies the type of list presentation + + + + + + Specifies the number of columns for horizontal or vertical presentation + + + + + + + + + + + + + + + + + + + + + An undecorated list of single words or short phrases + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a simple list + + + + + + +
+
+ + + + + + Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is composed of a set of one or more terms and an associated description + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for a set of terms and the associated description in a variable list + + + + + + + +
+
+ + + + + + + + + + + + + + + The word or phrase being defined or described in a variable list + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + Identifies the type of example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal example, with a title + + Element exclusion + + example must not occur among the children or descendants of example + + + + Element exclusion + + figure must not occur among the children or descendants of example + + + + Element exclusion + + table must not occur among the children or descendants of example + + + + Element exclusion + + equation must not occur among the children or descendants of example + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed example without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + monospaced + The literal layout should be formatted with a monospaced font + normal + The literal layout should be formatted with the current font + + + + + Specifies the class of literal layout + + + + + + + + + + + + + + + + + + + A block of text in which line breaks and white space are to be reproduced faithfully + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + Text that a user sees or might see on a computer screen + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A representation of what the user sees or might see on a computer screen + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of figure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal figure, generally an illustration, with a title + + Element exclusion + + example must not occur among the children or descendants of figure + + + + Element exclusion + + figure must not occur among the children or descendants of figure + + + + Element exclusion + + table must not occur among the children or descendants of figure + + + + Element exclusion + + equation must not occur among the children or descendants of figure + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of figure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A untitled figure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A displayed media object (video, audio, image, etc.) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + An inline media object (video, audio, image, and so on) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for video data and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for audio data and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for image data and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a text description of an object and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external video data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external audio data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the image data + + + + + + + + + Specifies the vertical alignment of the image data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external image data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + Identifies the encoding of the text in the external file + + + + + + + + + + + + + + + + + + + + Pointer to external text data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + Specifies the name of the parameter + + + + + Specifies the value of the parameter + + + + + Specifies the type of the value of the parameter + + + + + + + + + + + + + + + + + + Application specific parameters for a media player + + + + +
+
+ + + + + + + + + + + + + + + + + + A caption + + Element exclusion + + example must not occur among the children or descendants of caption + + + + Element exclusion + + figure must not occur among the children or descendants of caption + + + + Element exclusion + + table must not occur among the children or descendants of caption + + + + Element exclusion + + equation must not occur among the children or descendants of caption + + + + Element exclusion + + sidebar must not occur among the children or descendants of caption + + + + Element exclusion + + task must not occur among the children or descendants of caption + + + + Element exclusion + + caution must not occur among the children or descendants of caption + + + + Element exclusion + + danger must not occur among the children or descendants of caption + + + + Element exclusion + + important must not occur among the children or descendants of caption + + + + Element exclusion + + note must not occur among the children or descendants of caption + + + + Element exclusion + + tip must not occur among the children or descendants of caption + + + + Element exclusion + + warning must not occur among the children or descendants of caption + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A real-world address, generally a postal address + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A street address in an address + + + + +
+
+ + + + + + + + + + + + + + + A post office box in an address + + + + +
+
+ + + + + + + + + + + + + + + A postal code in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a city in an address + + + + +
+
+ + + + + + + + + + + + + + + A state or province in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a country + + + + +
+
+ + + + + + + + + + + + + + + A telephone number + + + + +
+
+ + + + + + + + + + + + + + + A fax number + + + + +
+
+ + + + + + + + + + + + + + + Uncategorized information in address + + + + +
+
+ + + + + + + + + + + + + + + The institutional affiliation of an individual + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A brief description of an affiliation + + + + +
+
+ + + + + + + + + + + + + + + The title of an individual in an organization + + + + +
+
+ + + consortium + A consortium + corporation + A corporation + informal + An informal organization + nonprofit + A non-profit organization + + + + + Specifies the nature of the organization + + + + + + Specifies the nature of the organization + other + Indicates a non-standard organization class + + + Identifies the non-standard nature of the organization + + + + + + + + + + + + + + + + + + + + + + + + + + The name of an organization + + + + +
+
+ + + + + + + + + + + + + + + A division of an organization + + + + + + +
+
+ + + + + + + + + + + + + + + The page numbers of an article as published + + + + +
+
+ + + + + + + + + + + + + + + The personal name of an individual + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The name of an individual author + + + + +
+
+ + + + + + + + + + + + + + + Wrapper for author information when a document has multiple authors or collaborators + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Identifies a collaborator + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The initials or other short identifier for an author + + + + +
+
+ + + + + + + + + + + + + + + A person and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An organization and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for document meta-information about a conference + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The dates of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The title of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + An identifier, frequently numerical, associated with a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The contract number of a document + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a contract + + + + +
+
+ + + + + + + + + + + + + + + Copyright information about a document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The year of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the individual or organization that holds a copyright + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + Additional content for the cover of a publication + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + The date of publication or revision of a document + + + + +
+
+ + + + + + + + + + + + + + + The name or number of an edition of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the editor of a document + + + + +
+
+ + + + + + + + + + + + + + + + An identifier for a document + + + + +
+
+ + + + + + + + + + + + + + + + A citation of a bibliographic identifier + + + + +
+
+ + + + + + + + + + + + + + + + The source of a document + + + + +
+
+ + + hasformat + The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + haspart + The described resource includes the referenced resource either physically or logically + hasversion + The described resource has a version, edition, or adaptation, namely, the referenced resource + isformatof + The described resource is the same intellectual content of the referenced resource, but presented in another format + ispartof + The described resource is a physical or logical part of the referenced resource + isreferencedby + The described resource is referenced, cited, or otherwise pointed to by the referenced resource + isreplacedby + The described resource is supplanted, displaced, or superceded by the referenced resource + isrequiredby + The described resource is required by the referenced resource, either physically or logically + isversionof + The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + references + The described resource references, cites, or otherwise points to the referenced resource + replaces + The described resource supplants, displaces, or supersedes the referenced resource + requires + The described resource requires the referenced resource to support its function, delivery, or coherence of content + + + + + + Identifies the type of relationship + + + + + + + + Identifies the type of relationship + othertype + The described resource has a non-standard relationship with the referenced resource + + + + A keyword that identififes the type of the non-standard relationship + + + + + + + + + + + + + + + + + + + + + + + + + + The relationship of a document to another + + + + +
+
+ + + dcmipoint + The DCMI Point identifies a point in space using its geographic coordinates + iso3166 + ISO 3166 Codes for the representation of names of countries + dcmibox + The DCMI Box identifies a region of space using its geographic limits + tgn + The Getty Thesaurus of Geographic Names + + + + + + Specifies the type of spatial coverage + + + + + + + + Specifies the type of spatial coverage + otherspatial + Identifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + dcmiperiod + A specification of the limits of a time interval + w3c-dtf + W3C Encoding rules for dates and times—a profile based on ISO 8601 + + + + + + Specifies the type of temporal coverage + + + + + + + + Specifies the type of temporal coverage + othertemporal + Specifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The spatial or temporal coverage of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A statement of legal obligations or requirements + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + copyeditor + A copy editor + graphicdesigner + A graphic designer + productioneditor + A production editor + technicaleditor + A technical editor + translator + A translator + indexer + An indexer + proofreader + A proof-reader + coverdesigner + A cover designer + interiordesigner + An interior designer + illustrator + An illustrator + reviewer + A reviewer + typesetter + A typesetter + conversion + A converter (a persons responsible for conversion, not an application) + + + + + + Identifies the nature of the contributor + + + + + + + Identifies the nature of the non-standard contribution + + + + + + + Identifies the nature of the contributor + other + Identifies a non-standard contribution + + + + + + + + + + + + + + + + + + + + + + + + + + A person or entity, other than an author or editor, credited in a document + + + + +
+
+ + + + + + + + + + + + + + + The numbers of the pages in a book, for use in a bibliographic entry + + + + +
+
+ + + + + + + + + + + + + + + A summary of the contributions made to a document by a credited source + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a person + + + + +
+
+ + + + + + + + + + + + + + + A given name of a person + + + + +
+
+ + + + + + + + + + + + + + + The given name of a person + + + + +
+
+ + + + + + + + + + + + + + + An inherited or family name; in western cultures the last name + + + + +
+
+ + + + + + + + + + + + + + + The portion of a person's name indicating a relationship to ancestors + + + + +
+
+ + + + + + + + + + + + + + + A component of a person's name that is not a first name, surname, or lineage + + + + +
+
+ + + + + + + + + + + + + + + The printing history of a document + + + + + + +
+
+ + + + + + + + + + + + + + + The date of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The publisher of a document + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of the publisher of a document + + + + +
+
+ + + + + + + + + + + + + + + Information about a particular release of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A history of the revisions to a document + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry describing a single revision in the history of the revisions to a document + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A document revision number + + + + +
+
+ + + + + + + + + + + + + + + A description of a revision to a document + + + + +
+
+ + + + + + + + + + + + + + + A extended description of a revision to a document + + + + + + +
+
+ + + + + + + + + + + + + + + Numbers of the volumes in a series of books + + + + +
+
+ + + + + + + + + + + + + + + The volume number of a document in a set (as of books in a set or articles in a journal) + + + + +
+
+ + + + + + + + + + + + + + + The number of an issue of a journal + + + + +
+
+ + + + + + A name for the metadata element + + + + + The metadata content + + + + + + + + + + + + + + + + + A generic metadata element + + + + + + + + A generic metadata element + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A software or application package + + + + +
+
+ + + + + + + + + + + + + + + An email address + + + + +
+
+ + + + + + + + + + + + + + + A comment on a line in a verbatim listing + + + + +
+
+ + + command + A command + function + A function + option + An option + + + + + Identifies the class of parameter + + + + + + + + + + + + + + + + + + + + + A value or a symbolic reference to a value + + + + +
+ + + + + + +
+ + + command + A command + function + A function + option + An option + parameter + A parameter + + + + + Identifies the nature of the replaceable text + + + + + + + + + + + + + + + + + + + + + Content that may or must be replaced by the user + + + + + + +
+
+ + + + Identifies the type of URI specified + + + + + + + + + + + + + + + + + + + A Uniform Resource Identifier + + + + +
+
+ + + + + + + + + + + + + + + An abbreviation, especially one followed by a period + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An often pronounceable word made from the initial (or selected) letters of a name or phrase + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An inline bibliographic reference to another published work + + + + + + +
+
+ + + + + + + + + + + + + + + A citation to a reference page + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A reference volume number + + + + +
+
+ + + + + + Identifies the nature of the publication being cited + + + + + + Identifies the nature of some other kind of publication being cited + + + + + + + Identifies that this is some other kind of publication being cited + other + Indicates that the published work is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + The title of a cited work + + + + + + +
+
+ + + + + + + + + + + + + + + Emphasized text + + + + + + +
+
+ + + A limited span of emphasized text + + + + +
+
+ + + + + + + + + + + + + + + A word or phrase in a language other than the primary language of the document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A limited word or phrase in a language other than the primary language of the document + + + + +
+
+ + + + + + + + + + + + + + + A span of text + + + + + + +
+
+ + + A limited span of text + + + + +
+
+ + + + + + + + + + + + + + + An inline quotation + + + + + + +
+
+ + + + + + + + + + + + + + + A limited inline quotation + + + + +
+
+ + + + + + + + + + + + + + + A subscript (as in Hâ‚‚O, the molecular formula for water) + + + + +
+
+ + + + + + + + + + + + + + + A superscript (as in x², the mathematical notation for x multiplied by itself) + + + + +
+
+ + + copyright + A copyright + registered + A registered copyright + service + A service + trade + A trademark + + + + + Identifies the class of trade mark + + + + + + + + + + + + + + + + + + + + + A trademark + + + + +
+
+ + + + + + + + + + + + + + + A word meant specifically as a word and not representing anything else + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a footnote (a footnote mark) + + Footnote reference type constraint + + @linkend on footnoteref must point to a footnote. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A cross reference to another part of the document + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A hypertext link + + + + + + +
+
+ + + + + + + + + Holds additional information that may be used by the application when resolving the link + + + + + Specifies the URI of the document in which the link target appears + + + + + + Specifies the location of the link target in the document + + + + + Identifies application-specific customization of the link behavior + + + + + + + + + + + + + + + + + + + + + + + + + + + + A link that addresses its target indirectly + + + + + + +
+
+ + + + + + + + + + + + + + A spot in the document + + + + +
+
+ + + + + + + + + + + + + + A text-only annotation, often used for accessibility + + + + + + + + + +
+
+ + + Holds style of formalgroup - this can be used to specify desired layout and positioning of subfigures + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A group of formal objects, for example subfigures + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + Identifies the editorial or publication status of the element on which it occurs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of books + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + The dedication of a book or other component + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Acknowledgements of a book or other component + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Text at the back of a book describing facts about its production + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An appendix in a book or article + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A chapter, as of a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Introductory matter preceding the first chapter of a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An introduction to the contents of a part + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + legal + A section of legal obligations or requirements + + + + Identifies the nature of the section + + + + + + Identifies a non-standard section class + + + + + + + Indicates that a non-standard section class is applied + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a document with no subdivisions + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + faq + A collection of frequently asked questions. + journalarticle + An article in a journal or other periodical. + productsheet + A description of a product. + specification + A specification. + techreport + A technical report. + whitepaper + A white paper. + + + + + Identifies the nature of the article + + + + + + Identifies the nature of the non-standard article + + + + + + + Identifies the nature of the article + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An article + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Identifies one or more annotations that apply to this element + + +
+ + + + + + Identifies one or more elements to which this annotation applies + + + + + + + + + + + + + + + + + + + An annotation + + Element exclusion + + annotation must not occur among the children or descendants of annotation + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + Identifies the XLink extended link type + + XLink extended placement + + An XLink extended type element may not occur as the direct child of an XLink extended type element. + + + extended + An XLink extended link type + + + + + Identifies the XLink locator link type + + XLink locator placement + + An XLink locator type element must occur as the direct child of an XLink extended type element. + + + locator + An XLink locator link type + + + + + Identifies the XLink arc link type + + XLink arc placement + + An XLink arc type element must occur as the direct child of an XLink extended type element. + + + arc + An XLink arc link type + + + + + Identifies the XLink resource link type + + XLink resource placement + + An XLink resource type element must occur as the direct child of an XLink extended type element. + + + resource + An XLink resource link type + + + + + Identifies the XLink title link type + + XLink title placement + + An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element. + + + title + An XLink title link type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the XLink traversal-from + + + + + + Specifies the XLink label + + + + + + Specifies the XLink traversal-to + + + +
+ + + + + + + + + + + + Identifies the XLink link type + extended + An XLink extended link + + + + + + + + + + + + + An XLink extended link + + + + + + + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + locator + An XLink locator link + + + + + + + + + + + + + + + + + An XLink locator in an extendedlink + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + arc + An XLink arc link + + + + + + + + + + + + + + + + + + + + + + + + + An XLink arc in an extendedlink + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A top-level section of document + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect1 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect2 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect3 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect4 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of reference entries + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A reference page (originally a UNIX man-style reference page) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Meta-information for a reference entry + + + + + + + + + + + + + + + + +
+ + + source + The name of the software product or component to which this topic applies + version + The version of the software product or component to which this topic applies + manual + The section title of the reference page (e.g., User Commands) + sectdesc + The section title of the reference page (believed synonymous with "manual" but in wide use) + software + The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + + + + + + Identifies the kind of miscellaneous information + + + + + + + Identifies the nature of non-standard miscellaneous information + + + + + + Identifies the kind of miscellaneious information + other + Indicates that the information is some 'other' kind. + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + Meta-information for a reference entry other than the title and volume number + + + + +
+
+ + + + + + + + + + + + + + + The name, purpose, and classification of a reference page + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A description of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The name of (one of) the subject(s) of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A short (one sentence) synopsis of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The scope or other indication of applicability of a reference entry + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntactic synopsis of the subject of the reference page + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section in a refentry + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A major subsection of a reference entry + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect1 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect2 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for a list of glossary entries + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + +
+
+ + + + + + Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + + + + + + + + + + + + + + + + + An entry in a glossary or glosslist + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + Specifies a list of keywords for the definition + + + + + + + + + + + + + + + + + A definition in a glossentry + + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry + to another + + Glosssary 'see' type constraint + + @otherterm on glosssee must point to a glossentry. + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry to another + + Glossary 'seealso' type constraint + + @otherterm on glossseealso must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term, with limited content + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A glossary + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a glossary + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + An inline definition of a term + + Glossary term definition constraint + + A termdef must contain exactly one firstterm + + + + + + + + +
+ + + Identifies the relationship between the bibliographic elemnts + + +
+ + + + + + + + + + + + + + + + + + + + + A raw entry in a bibliography + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked entry in a bibliography + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A raw container for related bibliographic information + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked container for related bibliographic information + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Untyped bibliographic information + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A bibliography + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a bibliography + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a list of bibliography entries + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + The units (for example, pages) used to identify the beginning and ending of a reference. + + + + + + Identifies the beginning of a reference; the location within the work that is being referenced. + + + + + + Identifies the end of a reference. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cross-reference to a bibliographic entry + + + + +
+ + + normal + Normal + preferred + Preferred + + + + + Specifies the significance of the term + + + + + + Specifies the IDs of the elements to which this term applies + + + + + + Indicates the page on which this index term occurs in some version of the printed document + + + + + all + All indexes + global + The global index (as for a combined index of a set of books) + local + The local index (the index for this document only) + + + + + Specifies the scope of the index term + + + + + + Specifies the string by which the term is to be sorted; if unspecified, the term content is used + + + + + Specifies the target index for this term + + +
+ + + + + + + + + + + + + + + A set of index terms in the meta-information of a document + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + Identifies the class of index term + singular + A singular index term + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term + + + + +
+
+ + + + + + Identifies the class of index term + startofrange + The start of a range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term that covers a range + + + + +
+
+ + + + + + Identifies the class of index term + endofrange + The end of a range + + + + + Points to the start of the range + + + + + + + + + + + + + + + + + Identifies the end of a range associated with an indexed term + + Indexterm 'startref' type constraint + + @startref on indexterm must point to an indexterm. + @startref on indexterm must point to a startofrange indexterm. + + + + + + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary word or phrase under which an index term should be sorted + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A secondary word or phrase in an index term + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A tertiary word or phrase in an index term + + + + + + +
+
+ + + + + + Identifies the class of 'see' + + normal + Normal + under + See 'under' + + + + + + + + + + + + + + + + + + Part of an index term directing the reader instead to another entry in the index + + + + + + +
+
+ + + + + + Identifies the class of 'seealso' + + normal + Normal + under + See 'under' + + + + + + + + + + + + + + + + + + Part of an index term directing the reader also to another entry in the index + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a book or part of a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a set of books + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in an index + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry in an index + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + A primary term in an index entry, not in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A secondary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A tertiary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See +entry in an index, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See also + entry in an index, rather than in the text + + + + + + +
+ + + Indicates the page on which this element occurs in some version of the printed document + + +
+ + + + + + + + + + + + + + + + + + A table of contents + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + A division in a table of contents + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A component title in a table of contents + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + A task to be completed + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary of a task + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The prerequisites for a task + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + Information related to a task + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + calspair + Coordinates expressed as a pair of CALS graphic coordinates. + linecolumn + Coordinates expressed as a line and column. + linecolumnpair + Coordinates expressed as a pair of lines and columns. + linerange + Coordinates expressed as a line range. + + + + + + Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair + for graphics and linecolumn + for line-oriented elements. + + + + + + + + Indicates that non-standard units are used for this area +. In this case otherunits + must be specified. + other + Coordinates expressed in some non-standard units. + + + + Identifies the units used in the coords + attribute when the units + attribute is other +. This attribute is forbidden otherwise. + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A list of callout +s + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + Identifies the areas described by this callout. + + + + + + + + + + + + + + + + A called out + description of a marked area + + Callout cross reference constraint + + @arearefs on callout must point to a areaset, area, or co. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A program listing with associated areas used in callouts + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A collection of regions in a graphic or code example + + + + + + + + + +
+
+ + + + + + Point to the callout +s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + + + + + + Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + + + + + Provides the coordinates of the area. The coordinates must be interpreted using the units + specified. + + + + + + + + + + + + + + + + + + + + + + + + A region defined for a callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A region defined for a callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A set of related areas in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A screen with associated areas used in callouts + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for an image object with callouts + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + The location of a callout embedded in text + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a co + + + + +
+
+ + + + + + + + + + + + + + + + + + A set of EBNF productions + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A production in a set of EBNF productions + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The left-hand side of an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + The right-hand side of an EBNF production + + + + + + + + + + + +
+
+ + + + + + Specifies a URI that points to a production +where the nonterminal + is defined + + + + + + + + + + + + + + + + A non-terminal in an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + A constraint in an EBNF production + + Constraint cross reference constraint + + @linkend on constraint must point to a constraintdef. + + + + + + +
+
+ + + + + + + + + + + + + + + A cross-reference to an EBNF production + + Production recap cross reference constraint + + @linkend on productionrecap must point to a production. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The definition of a constraint in an EBNF production + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + Specifies the alignment character when align + is set to char +. + + + + + Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + when align + is set to char +. + + 0 + 100 + + + + + + Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + + all + Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + bottom + Frame only the bottom of the table. + none + Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + sides + Frame the left and right sides of the table. + top + Frame the top of the table. + topbot + Frame the top and bottom of the table. + + + + + + Specifies the presence or absence of the column separator + + 0 + No column separator rule. + 1 + Provide a column separator rule on the right + + + + + + Specifies the presence or absence of the row separator + + 0 + No row separator rule. + 1 + Provide a row separator rule below + + + + + + Specifies the orientation of the table + + land + 90 degrees counter-clockwise from the rest of the text flow. + port + The same orientation as the rest of the text flow. + + + + + + Specifies the table style + + + + + Indicates whether or not the entries in the first column should be considered row headers + + firstcol + Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + headers + Indicates that row headers are identified by use of the headers attribute on entries in the table. + norowheader + Indicates that entries in the first column have no special significance with respect to column headers. + + + + + + Specifies the horizontal alignment of text in an entry. + + center + Centered. + char + Aligned on a particular character. + justify + Left and right justified. + left + Left justified. + right + Right justified. + + + + + + Specifies the vertical alignment of text in an entry. + + bottom + Aligned on the bottom of the entry. + middle + Aligned in the middle. + top + Aligned at the top of the entry. + + + + + + Specifies a column specification by name. + + + + + Specifies a starting column by name. + + + + + Specifies a span by name. + + + + + + Specifies a starting column by name. + + + Specifies an ending column by name. + + + + + + + + + + + + + + Provides a name for a column specification. + + + + + Provides a name for a span specification. + + +
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for the main content of a table, or part of a table + + + + + + + + + + + + + + + + +
+
+ + + + + + The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + + + + + + Specifies the width of the column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifications for a column in a table + + + + +
+
+ + + + + + Specifies a starting column by name. + + + + + Specifies an ending column by name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Formatting information for a spanned column in a table + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table footer consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + + + + +
+
+ + + + + + Specifies the number of additional rows which this entry occupies. Defaults to zero. + + + + + + Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + + 0 + Do not rotate the cell. + 1 + Rotate the cell 90 degrees counter-clockwise. + + + + + + Specifies the scope of a header. + + row + Applies to the row + col + Applies to the column + rowgroup + Applies to the row group + colgroup + Applies to the column group + + + + + + Specifies the entry or entries which serve as headers for this element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cell in a table + + Element exclusion + + table must not occur among the children or descendants of entry + + + + Element exclusion + + informaltable must not occur among the children or descendants of entry + + + + + + + + + + + + + +
+
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the entry table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subtable appearing in place of an entry in a table + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + +
+
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates if the short or long title should be used in a List of Tables + + 0 + Indicates that the full title should be used. + 1 + Indicates that the short short title (titleabbrev) should be used. + + + + + + Indicates if the table should appear in a List of Tables + + 0 + Indicates that the table should not occur in the List of Tables. + 1 + Indicates that the table should appear in the List of Tables. + + + + + + + + + + + + + + A formal table in a document + + Element exclusion + + example must not occur among the children or descendants of table + + + + Element exclusion + + figure must not occur among the children or descendants of table + + + + Element exclusion + + equation must not occur among the children or descendants of table + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A table without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + + + + + This attribute specifies style information for the current element. + + + + + This attribute offers advisory information about the element for which it is set. + + + + + + + + This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + + + + + + + + Occurs when the pointing device button is clicked over an element. + + + + + Occurs when the pointing device button is double clicked over an element. + + + + + Occurs when the pointing device button is pressed over an element. + + + + + Occurs when the pointing device button is released over an element. + + + + + Occurs when the pointing device is moved onto an element. + + + + + Occurs when the pointing device is moved while it is over an element. + + + + + Occurs when the pointing device is moved away from an element. + + + + + Occurs when a key is pressed and released over an element. + + + + + Occurs when a key is pressed down over an element. + + + + + Occurs when a key is released over an element. + + + + + + + + + + + + + + + + + Specifies the alignment of data and the justification of text in a cell. + + left + Left-flush data/Left-justify text. This is the default value for table data. + center + Center data/Center-justify text. This is the default value for table headers. + right + Right-flush data/Right-justify text. + justify + Double-justify text. + char + Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + + + + + + This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + + + + + When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + + + An explicit offset. + + [0-9]+% + + A percentage offset. + + + + + + + + + Specifies the vertical position of data within a cell. + + top + Cell data is flush with the top of the cell. + middle + Cell data is centered vertically within the cell. This is the default value. + bottom + Cell data is flush with the bottom of the cell. + baseline + All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + + + + + + + + + Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + + + + + Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + + + An explicit width. + + [0-9]+% + + A percentage width. + + + + + + Specifies the width (in pixels only) of the frame around a table. + + + + + + Specifies which sides of the frame surrounding a table will be visible. + + void + No sides. This is the default value. + above + The top side only. + below + The bottom side only. + hsides + The top and bottom sides only. + lhs + The left-hand side only. + rhs + The right-hand side only. + vsides + The right and left sides only. + box + All four sides. + border + All four sides. + + + + + + Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + + none + No rules. This is the default value. + groups + Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + rows + Rules will appear between rows only. + cols + Rules will appear between columns only. + all + Rules will appear between all rows and columns. + + + + + + Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + + + An explicit spacing. + + [0-9]+% + + A percentage spacing. + + + + + + Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + + + An explicit padding. + + [0-9]+% + + A percentage padding. + + + + + + + + + + Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + + + + + This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + + + + + Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + + + + + Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + + row + The current cell provides header information for the rest of the row that contains it + col + The current cell provides header information for the rest of the column that contains it. + rowgroup + The header cell provides header information for the rest of the row group that contains it. + colgroup + The header cell provides header information for the rest of the column group that contains it. + + + + + + Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all rows from the current row to the last row of the table section (thead +, tbody +, or tfoot +) in which the cell is defined. + + + + + + Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all columns from the current column to the last column of the column group (colgroup +) in which the cell is defined. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal (captioned) HTML table in a document + + Element exclusion + + example must not occur among the children or descendants of table + + + + Element exclusion + + figure must not occur among the children or descendants of table + + + + Element exclusion + + equation must not occur among the children or descendants of table + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An HTML table without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + An HTML table caption + + Element exclusion + + example must not occur among the children or descendants of caption + + + + Element exclusion + + figure must not occur among the children or descendants of caption + + + + Element exclusion + + table must not occur among the children or descendants of caption + + + + Element exclusion + + equation must not occur among the children or descendants of caption + + + + Element exclusion + + sidebar must not occur among the children or descendants of caption + + + + Element exclusion + + task must not occur among the children or descendants of caption + + + + Element exclusion + + caution must not occur among the children or descendants of caption + + + + Element exclusion + + danger must not occur among the children or descendants of caption + + + + Element exclusion + + important must not occur among the children or descendants of caption + + + + Element exclusion + + note must not occur among the children or descendants of caption + + + + Element exclusion + + tip must not occur among the children or descendants of caption + + + + Element exclusion + + warning must not occur among the children or descendants of caption + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + +
+
+ + + + + + This attribute, whose value must be an integer > 0, specifies the number of columns spanned + by the col + element; the col + element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + element shares its attributes with the next N-1 columns. + + + + + + Specifies a default width for each column spanned by the current col + element. It has the same meaning as the width + attribute for the colgroup + element and overrides it. + + + + + + + + + Specifications for a column in an HTML table + + + + +
+
+ + + + + + This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + element contains one or more col + elements. + + + + + + This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + element. + + + + + + + + + A group of columns in an HTML table + + + + + + +
+
+ + + + + + + + + + A table header consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A table footer consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A wrapper for the rows of an HTML table or informal HTML table + + + + + + +
+
+ + + + + + + + + + A row in an HTML table + + + + + + + + + +
+
+ + + + + + + + + + + A table header entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + A table entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A detailed set of messages, usually error messages + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for an entry in a message set + + + + + + + + + + + + +
+
+ + + + + + The audience to which the message relevant + + + + + The origin of the message + + + + + The level of importance or severity of a message + + + + + + + + + + + + + + + + + + + + + + + A wrapper for a simpler entry in a message set + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary component of a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A subcomponent of a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A related component of a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + The actual text of a message component in a message set + + + + + + +
+
+ + + + + + + + + + + + + + + Information about a message in a message set + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The level of importance or severity of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The origin of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The audience to which a message in a message set is relevant + + + + +
+
+ + + + + + + + + + + + + + + + + + Explanatory material relating to a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + none + No labels + number + Numeric labels + qanda + "Q:" and "A:" labels + + + + + Specifies the default labelling + + + + + + + + + + + + + + + + + + + + + A question-and-answer set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A titled division in a qandaset + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A question/answer set within a qandaset + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A question in a qandaset + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An answer to a question posed in a qandaset + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A label on a question or answer + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + Identifies the type of equation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation + + Element exclusion + + example must not occur among the children or descendants of equation + + + + Element exclusion + + figure must not occur among the children or descendants of equation + + + + Element exclusion + + table must not occur among the children or descendants of equation + + + + Element exclusion + + equation must not occur among the children or descendants of equation + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + Identifies the type of equation + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical equation or expression occurring inline + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical phrase that can be represented with ordinary text and a small amount of markup + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + Specifies that the format of the data is MathML + mathml + Specifies MathML. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A MathML expression in a media object + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + Any element from the MathML namespace + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + Specifies that the format of the data is SVG + svg + Specifies SVG. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An SVG drawing in a media object + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + Any element from the SVG namespace + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A string of formatting markup in text that is to be represented literally + + + + +
+
+ + + + + + attribute + An attribute + attvalue + An attribute value + element + An element + emptytag + An empty element tag + endtag + An end tag + genentity + A general entity + localname + The local name part of a qualified name + namespace + A namespace + numcharref + A numeric character reference + paramentity + A parameter entity + pi + A processing instruction + prefix + The prefix part of a qualified name + comment + An SGML comment + starttag + A start tag + xmlpi + An XML processing instruction + + + + + Identifies the nature of the tag content + + + + + + Identifies the namespace of the tag content + + + + + + + + + + + + + + + + + + + + + A component of XML (or SGML) markup + + + + + + + + + +
+
+ + + Identifies the class of symbol + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A name that is replaced by a value before processing + + + + +
+
+ + + + + + + + + + + + + + + A unit of information + + + + +
+
+ + + + + + + + + + + + + + + Inline text that is some literal value + + + + +
+
+ + + Identifies the (computer) language of the code fragment + + + + + + + + + + + + + + + + + + + + An inline code fragment + + + + + + + + + +
+
+ + + Identifies the class of constant + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A programming or system constant + + + + +
+
+ + + + + + copyright + A name with a copyright + registered + A name with a registered copyright + service + A name of a service + trade + A name which is trademarked + + + + + Specifies the class of product name + + + + + + + + + + + + + + + + + + The formal name of a product + + + + +
+
+ + + + + + + + + + + + + + + A number assigned to a product + + + + +
+
+ + + altkey + An alternate or secondary key + constraint + A constraint + datatype + A data type + field + A field + foreignkey + A foreign key + group + A group + index + An index + key1 + The first or primary key + key2 + An alternate or secondary key + name + A name + primarykey + The primary key + procedure + A (stored) procedure + record + A record + rule + A rule + secondarykey + The secondary key + table + A table + user + A user + view + A view + + + + + Identifies the class of database artifact + + + + + + + + + + + + + + + + + + + + + The name of a database, or part of a database + + + + +
+
+ + + hardware + A hardware application + software + A software application + + + + + Identifies the class of application + + + + + + + + + + + + + + + + + + + + + The name of a software program + + + + +
+
+ + + + + + + + + + + + + + + A physical part of a computer system + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text on a button in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Graphic and/or text appearing as a icon in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The text of a label in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a menu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a terminal menu item in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a submenu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A selection or series of selections from a menu + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The conventional name of a mouse button + + + + +
+ + + + + + + + + + +
+ + + alt + The "Alt" key + altgr + The "Alt Graph" key + backspace + The "Backspace" key + command + The "Command" key + control + The "Control" key + delete + The "Delete" key + down + The down arrow + end + The "End" key + enter + The "Enter" key + escape + The "Escape" key + home + The "Home" key + insert + The "Insert" key + left + The left arrow + meta + The "Meta" key + option + The "Option" key + pagedown + The page down key + pageup + The page up key + right + The right arrow + return + The "Return" key + shift + The "Shift" key + space + The spacebar + tab + The "Tab" key + up + The up arrow + + + + + + Identifies the function key + + + + + + + + Identifies the function key + other + Indicates a non-standard function key + + + + Specifies a keyword that identifies the non-standard key + + + + + + + + + + + + + + + + + + + + + + + + The text printed on a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + The internal, frequently numeric, identifier for a key on a keyboard + + + + +
+ + + + + + + + + + +
+ + + click + A (single) mouse click. + double-click + A double mouse click. + press + A mouse or key press. + seq + Sequential clicks or presses. + simul + Simultaneous clicks or presses. + + + + + + Identifies the nature of the action taken. If keycombo + contains more than one element, simul + is the default, otherwise there is no default. + + + + + + + + Identifies the nature of the action taken + other + Indicates a non-standard action + + + + Identifies the non-standard action in some unspecified way. + + + + + + + + + + + + + + + + + + + + + + + + A combination of input actions + + + + + + +
+
+ + + + + + + + + + + + + + + The symbolic name of a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + A graphical user interface (GUI) keyboard shortcut + + + + +
+
+ + + + + + + + + + + + + + + + + + + A key combination for an action that is also accessible through a menu + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A character or string indicating the start of an input field in a computer display + + + + + + +
+
+ + + + + + + + + + + + + + + A software environment variable + + + + +
+
+ + + devicefile + A device + directory + A directory + extension + A filename extension + headerfile + A header file (as for a programming language) + libraryfile + A library file + partition + A partition (as of a hard disk) + symlink + A symbolic link + + + + + Identifies the class of filename + + + + + + Specifies the path of the filename + + + + + + + + + + + + + + + + + + + + + + + The name of a file + + + + +
+
+ + + + + + + + + + + + + + + The name of an executable program or other software command + + + + +
+
+ + + + + + + + + + + + + + + Data, generally text, displayed or presented by a computer + + + + + + +
+
+ + + + + + + + + + + + + + + Data entered by the user + + + + + + +
+
+ + + + + + Specifies the character that should separate the command and its top-level arguments + + + + + Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A syntax summary for a software command + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+ + + norepeat + Can not be repeated. + repeat + Can be repeated. + + + + + Indicates whether or not repetition is possible. + + + + + + opt + Formatted to indicate that it is optional. + plain + Formatted without indication. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + Indicates optionality. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An argument in a cmdsynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A group of elements in a cmdsynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + An explicit line break in a command synopsis + + + + +
+
+ + + + + + + + + + + + + + + A portion of a cmdsynopsis broken out from the main body of the synopsis + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A reference to a fragment of a command synopsis + + Synopsis fragment type constraint + + @linkend on synopfragmentref must point to a synopfragment. + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + A general-purpose element for representing the syntax of commands or functions + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing synopsis + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a function definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the funcdefs of a funcsynopsis + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a function + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A function (subroutine) name and its return type + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a function or subroutine, as in a programming language + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating that the function in question takes no arguments + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating a variable number of arguments + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A group of parameters + + + + + + + + + +
+
+ + + + + + opt + Formatted to indicate that it is optional. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + + + + + + + + + + + + + Information about a function parameter in a programming language + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Parameters for a function referenced through a function pointer in a synopsis + + + + +
+
+ + + + + + + + + class + This is the synopsis of a class + interface + This is the synopsis of an interface + + + + + Specifies the nature of the synopsis + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for a class definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the contents of a classsynopsis + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + A class in an object-oriented programming language + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An interface in an object-oriented programming language + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An exception in an object-oriented programming language + + + + + + + + + + + + + +
+ + + Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + preserve + Extra whitespace and line breaks must be preserved. + + + +
+ + + + + + + + + + + + + + + + + + Modifiers in a synopsis + + + + +
+
+ + + + + + + + + + + + + + + The name of an interface + + + + +
+
+ + + + + + + + + + + + + + + The name of an exception + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The name of a field in a class definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + The initializer for a fieldsynopsis + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a constructor + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a destructor + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a method + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a method + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Parameters to a method + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A group of method parameters + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a variable + + + + +
+
+ + + + + + + + + + + + + + + Target of a build + + + + +
+
+ + + + + + + + + + + + + + + The value returned by a function + + + + +
+
+ + + + + + union + Combined type is union of nested types + intersection + Combined type is intersection of nested types + + + + + Specifies the way how are nested types combined together + + + + + + + + + + + + + + + + + + The classification of a value + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a class, in the object-oriented programming sense + + + + +
+
+ + + + + + + + + + + + + + + The identifier for a template, in the generic programming sense + + + + +
+
+ + + + + + + + + + + + + + + The definition of a template, in the generic programming sense + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The specialization of a template identifier, in the generic programming sense + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a package definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a macro (a code-generating function) + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a macro definition (code-generating function) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a macro (code-generating function) + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A macro name and its return type + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a union of types + + + + +
+
+ + + + + + + + + + + + + + + The definition of a union of types, which may be more than a name + + + + + + +
+
+ + + + + + + + + + Indicates how the value of a union is specified. + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for a union-of-types definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of an enumeration + + + + +
+
+ + + + + + + + + + + + + + + The value an enumerated type can take + + + + +
+
+ + + + + + + + + + + + + + + The description of a value an enumerated type can take + + + + + + +
+
+ + + + + + + + + + + + + + + The identifier of a value an enumerated type can take + + + + +
+
+ + + + + + + + + + + + + + + A value an enumerated type can take and its description + + + + + + + + + + +
+
+ + + + + + + + + 0 + Value of enum is specified explicitly using enumvalue + 1 + Value of enum is inferred from its position + + + + + Indicates how the value of an enumeration is specified. + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for an enumerated-type definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a type alias + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a type-alias definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A literal listing of all or part of a program + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A note of caution + + Element exclusion + + caution must not occur among the children or descendants of caution + + + + Element exclusion + + danger must not occur among the children or descendants of caution + + + + Element exclusion + + important must not occur among the children or descendants of caution + + + + Element exclusion + + note must not occur among the children or descendants of caution + + + + Element exclusion + + tip must not occur among the children or descendants of caution + + + + Element exclusion + + warning must not occur among the children or descendants of caution + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text indicating hazardous situation + + Element exclusion + + caution must not occur among the children or descendants of danger + + + + Element exclusion + + danger must not occur among the children or descendants of danger + + + + Element exclusion + + important must not occur among the children or descendants of danger + + + + Element exclusion + + note must not occur among the children or descendants of danger + + + + Element exclusion + + tip must not occur among the children or descendants of danger + + + + Element exclusion + + warning must not occur among the children or descendants of danger + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + Element exclusion + + caution must not occur among the children or descendants of important + + + + Element exclusion + + danger must not occur among the children or descendants of important + + + + Element exclusion + + important must not occur among the children or descendants of important + + + + Element exclusion + + note must not occur among the children or descendants of important + + + + Element exclusion + + tip must not occur among the children or descendants of important + + + + Element exclusion + + warning must not occur among the children or descendants of important + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + A message set off from the text + + Element exclusion + + caution must not occur among the children or descendants of note + + + + Element exclusion + + danger must not occur among the children or descendants of note + + + + Element exclusion + + important must not occur among the children or descendants of note + + + + Element exclusion + + note must not occur among the children or descendants of note + + + + Element exclusion + + tip must not occur among the children or descendants of note + + + + Element exclusion + + warning must not occur among the children or descendants of note + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + A suggestion to the user, set off from the text + + Element exclusion + + caution must not occur among the children or descendants of tip + + + + Element exclusion + + danger must not occur among the children or descendants of tip + + + + Element exclusion + + important must not occur among the children or descendants of tip + + + + Element exclusion + + note must not occur among the children or descendants of tip + + + + Element exclusion + + tip must not occur among the children or descendants of tip + + + + Element exclusion + + warning must not occur among the children or descendants of tip + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + Element exclusion + + caution must not occur among the children or descendants of warning + + + + Element exclusion + + danger must not occur among the children or descendants of warning + + + + Element exclusion + + important must not occur among the children or descendants of warning + + + + Element exclusion + + note must not occur among the children or descendants of warning + + + + Element exclusion + + tip must not occur among the children or descendants of warning + + + + Element exclusion + + warning must not occur among the children or descendants of warning + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + An error code + + + + +
+
+ + + + + + + + + + + + + + + An error name + + + + +
+
+ + + + + + + + + + + + + + + An error message. + + + + +
+
+ + + + + + + + + + + + + + + The classification of an error message + + + + +
+ + + + + + +
+ + + daemon + A daemon or other system process (syslogd) + domainname + A domain name (example.com) + etheraddress + An ethernet address (00:05:4E:49:FD:8E) + event + An event of some sort (SIGHUP) + eventhandler + An event handler of some sort (hangup) + filesystem + A filesystem (ext3) + fqdomainname + A fully qualified domain name (my.example.com) + groupname + A group name (wheel) + interface + A network interface (eth0) + ipaddress + An IP address (127.0.0.1) + library + A library (libncurses) + macro + A macro + netmask + A netmask (255.255.255.192) + newsgroup + A newsgroup (comp.text.xml) + osname + An operating system name (Hurd) + process + A process (gnome-cups-icon) + protocol + A protocol (ftp) + resource + A resource + securitycontext + A security context (a role, permission, or security token, for example) + server + A server (mail.example.com) + service + A service (ppp) + systemname + A system name (hephaistos) + username + A user name (ndw) + + + + + + Identifies the nature of the system item + + + + + + + Identifies the nature of the non-standard system item + + + + + + + Identifies the kind of systemitemgraphic identifier + other + Indicates that the system item is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + A system-related item or term + + + + + + +
+
+ + + + + + + + + + + + + + + An option for a software command + + + + +
+
+ + + + + + + + + + + + + + + Optional information + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A unit of data associated with some part of a computer system + + + + +
+
+ + + + + + + + + Identifies the topic type + + + + + + + + + + + + + + + + + + + + + + + + + + A modular unit of documentation not part of any particular narrative flow + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
diff --git a/catalog/docbook5.2/rng/docbookxi.rnc b/catalog/docbook5.2/rng/docbookxi.rnc new file mode 100755 index 0000000..6be7bba --- /dev/null +++ b/catalog/docbook5.2/rng/docbookxi.rnc @@ -0,0 +1,12060 @@ +namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" +namespace ctrl = "http://nwalsh.com/xmlns/schema-control/" +default namespace db = "http://docbook.org/ns/docbook" +namespace html = "http://www.w3.org/1999/xhtml" +namespace local = "" +namespace mml = "http://www.w3.org/1998/Math/MathML" +namespace rng = "http://relaxng.org/ns/structure/1.0" +namespace s = "http://purl.oclc.org/dsdl/schematron" +namespace svg = "http://www.w3.org/2000/svg" +namespace trans = "http://docbook.org/ns/transclusion" +namespace xi = "http://www.w3.org/2001/XInclude" +namespace xlink = "http://www.w3.org/1999/xlink" + +# This file is part of DocBook XInclude V5.2CR5 +# +# Copyright 1992-2015 HaL Computer Systems, Inc., +# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software +# Corporation, Norman Walsh, Sun Microsystems, Inc., and the +# Organization for the Advancement of Structured Information +# Standards (OASIS). +# +# Permission to use, copy, modify and distribute the DocBook schema +# and its accompanying documentation for any purpose and without fee +# is hereby granted in perpetuity, provided that the above copyright +# notice and this paragraph appear in all copies. The copyright +# holders make no representation about the suitability of the schema +# for any purpose. It is provided "as is" without expressed or implied +# warranty. +# +# If you modify the DocBook schema in any way, label your schema as a +# variant of DocBook. See the reference documentation +# (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook) +# for more information. +# +# Please direct all questions, bug reports, or suggestions for changes +# to the docbook-comment@lists.oasis-open.org mailing list. For more +# information, see http://www.oasis-open.org/docbook/. +# +# ====================================================================== + +s:ns [ + prefix = "a" + uri = "http://relaxng.org/ns/compatibility/annotations/1.0" +] +s:ns [ prefix = "ctrl" uri = "http://nwalsh.com/xmlns/schema-control/" ] +s:ns [ prefix = "db" uri = "http://docbook.org/ns/docbook" ] +s:ns [ prefix = "html" uri = "http://www.w3.org/1999/xhtml" ] +s:ns [ prefix = "mml" uri = "http://www.w3.org/1998/Math/MathML" ] +s:ns [ prefix = "rng" uri = "http://relaxng.org/ns/structure/1.0" ] +s:ns [ prefix = "s" uri = "http://purl.oclc.org/dsdl/schematron" ] +s:ns [ prefix = "svg" uri = "http://www.w3.org/2000/svg" ] +s:ns [ prefix = "trans" uri = "http://docbook.org/ns/transclusion" ] +s:ns [ prefix = "xi" uri = "http://www.w3.org/2001/XInclude" ] +s:ns [ prefix = "xlink" uri = "http://www.w3.org/1999/xlink" ] +start = + (db.set + | db.book + | db.divisions + | db.components + | db.navigation.components + | db.section + | db.para) + | (db.abstract + | db.mediaobject.content + | db.audiodata + | db.imagedata + | db.textdata + | db.videodata + | db.caption + | db.publishing.blocks + | db.wrapper.blocks + | db.formal.blocks + | db.informal.blocks + | db.formalpara + | db.inlinemediaobject + | db.list.blocks + | db.legalnotice + | db.verbatim.blocks + | db.graphic.blocks + | db.personblurb + | db.revhistory + | db.simpara + | db.step + | db.stepalternatives + | db.info) + | (db.partintro | db.simplesect) + | db.annotation + | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5) + | (db.refentry | db.refsection | db.refsynopsisdiv) + | (db.refsect1 | db.refsect2 | db.refsect3) + | (db.glossary | db.glossdiv | db.glosslist) + | (db.bibliodiv | db.bibliolist) + | (db.setindex | db.index | db.indexdiv) + | (db.toc | db.tocdiv) + | (db.task | db.taskprerequisites | db.taskrelated | db.tasksummary) + | (db.calloutlist + | db.programlistingco + | db.screenco + | db.imageobjectco) + | (db.productionset | db.constraintdef) + | (db.msg + | db.msgexplan + | db.msgmain + | db.msgrel + | db.msgset + | db.msgsub) + | (db.qandadiv | db.qandaentry | db.qandaset) + | (db.equation | db.informalequation) + | db.cmdsynopsis + | (db.synopsis.blocks | db.funcsynopsisinfo | db.classsynopsisinfo) + | db.admonition.blocks + | db.topic +div { + db._any.attribute = + + ## Any attribute, including any attribute in any namespace + attribute * { text } + db._any_other.attribute = + + ## Any attribute in any other explicit namespace + attribute * - (db:* | xml:* | xlink:* | trans:* | local:*) { text } + db._any = + + ## Any element from almost any namespace + element * - db:* { (db._any.attribute | text | db._any)* } +} +db.arch.attribute = + + ## Designates the computer or chip architecture to which the element applies + attribute arch { text } +db.audience.attribute = + + ## Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + attribute audience { text } +db.condition.attribute = + + ## provides a standard place for application-specific effectivity + attribute condition { text } +db.conformance.attribute = + + ## Indicates standards conformance characteristics of the element + attribute conformance { text } +db.os.attribute = + + ## Indicates the operating system to which the element is applicable + attribute os { text } +db.revision.attribute = + + ## Indicates the editorial revision to which the element belongs + attribute revision { text } +db.security.attribute = + + ## Indicates something about the security level associated with the element to which it applies + attribute security { text } +db.userlevel.attribute = + + ## Indicates the level of user experience for which the element applies + attribute userlevel { text } +db.vendor.attribute = + + ## Indicates the computer vendor to which the element applies + attribute vendor { text } +db.wordsize.attribute = + + ## Indicates the word size (width in bits) of the computer architecture to which the element applies + attribute wordsize { text } +db.outputformat.attribute = + + ## Indicates the output format (for example, print or epub) to which the element applies + attribute outputformat { text } +db.effectivity.attributes = + db.arch.attribute? + & db.audience.attribute? + & db.condition.attribute? + & db.conformance.attribute? + & db.os.attribute? + & db.revision.attribute? + & db.security.attribute? + & db.userlevel.attribute? + & db.vendor.attribute? + & db.wordsize.attribute? + & db.outputformat.attribute? +db.endterm.attribute = + + ## Points to the element whose content is to be used as the text of the link + attribute endterm { xsd:IDREF } +db.linkend.attribute = + + ## Points to an internal link target by identifying the value of its xml:id attribute + attribute linkend { xsd:IDREF } +db.linkends.attribute = + + ## Points to one or more internal link targets by identifying the value of their xml:id attributes + attribute linkends { xsd:IDREFS } +db.xlink.href.attribute = + + ## Identifies a link target with a URI + attribute xlink:href { xsd:anyURI } +db.xlink.simple.type.attribute = + + ## Identifies the XLink link type + attribute xlink:type { + + ## An XLink simple link type + "simple" + } +db.xlink.role.attribute = + + ## Identifies the XLink role of the link + attribute xlink:role { xsd:anyURI } +db.xlink.arcrole.attribute = + + ## Identifies the XLink arcrole of the link + attribute xlink:arcrole { xsd:anyURI } +db.xlink.title.attribute = + + ## Identifies the XLink title of the link + attribute xlink:title { text } +db.xlink.show.enumeration = + + ## An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + "new" + | + ## An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. + "replace" + | + ## An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + "embed" + | + ## The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior. + "other" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + "none" +db.xlink.show.attribute = + + ## Identifies the XLink show behavior of the link + attribute xlink:show { db.xlink.show.enumeration } +db.xlink.actuate.enumeration = + + ## An application should traverse to the ending resource immediately on loading the starting resource. + "onLoad" + | + ## An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + "onRequest" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior. + "other" + | + ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + "none" +db.xlink.actuate.attribute = + + ## Identifies the XLink actuate behavior of the link + attribute xlink:actuate { db.xlink.actuate.enumeration } +db.xlink.simple.link.attributes = + db.xlink.simple.type.attribute? + & db.xlink.href.attribute? + & db.xlink.role.attribute? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? +db.xlink.attributes = + db.xlink.simple.link.attributes + | (db.xlink.extended.link.attributes + | db.xlink.locator.link.attributes + | db.xlink.arc.link.attributes + | db.xlink.resource.link.attributes + | db.xlink.title.link.attributes) +db.xml.id.attribute = + + ## Identifies the unique ID value of the element + attribute xml:id { xsd:ID } +db.version.attribute = + + ## Specifies the DocBook version of the element and its descendants + attribute version { text } +db.xml.lang.attribute = + + ## Specifies the natural language of the element and its descendants + attribute xml:lang { text } +db.xml.base.attribute = + + ## Specifies the base URI of the element and its descendants + attribute xml:base { xsd:anyURI } +db.remap.attribute = + + ## Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + attribute remap { text } +db.xreflabel.attribute = + + ## Provides the text that is to be generated for a cross reference to the element + attribute xreflabel { text } +db.xrefstyle.attribute = + + ## Specifies a keyword or keywords identifying additional style information + attribute xrefstyle { text } +db.revisionflag.enumeration = + + ## The element has been changed. + "changed" + | + ## The element is new (has been added to the document). + "added" + | + ## The element has been deleted. + "deleted" + | + ## Explicitly turns off revision markup for this element. + "off" +db.revisionflag.attribute = + + ## Identifies the revision status of the element + attribute revisionflag { db.revisionflag.enumeration } +db.dir.enumeration = + + ## Left-to-right text + "ltr" + | + ## Right-to-left text + "rtl" + | + ## Left-to-right override + "lro" + | + ## Right-to-left override + "rlo" +db.dir.attribute = + + ## Identifies the direction of text in an element + attribute dir { db.dir.enumeration } +db.rdfalite.vocab = + + ## The RDFa Lite vocab + attribute vocab { xsd:anyURI } +db.rdfalite.typeof = + + ## The RDFa Lite typeof + attribute typeof { text } +db.rdfalite.property = + + ## The RDFa Lite property + attribute property { text } +db.rdfalite.resource = + + ## The RDFa Lite resource + attribute resource { text } +db.rdfalite.prefix = + + ## The RDFa Lite prefix + attribute prefix { text } +db.rdfalite.attributes = + db.rdfalite.vocab? + & db.rdfalite.typeof? + & db.rdfalite.property? + & db.rdfalite.resource? + & db.rdfalite.prefix? +db.trans.idfixup.enumeration = + + ## No ID fixup strategy + "none" + | + ## ID fixup by concatenating suffixes + "suffix" + | + ## ID fixup by creating unique values + "auto" +db.trans.idfixup.attribute = + + ## The transclusion ID fixup strategy + attribute trans:idfixup { db.trans.idfixup.enumeration } +db.trans.suffix.attribute = + + ## The transclusion suffix to use when the suffix ID fixup strategy is employed + [ + s:pattern [ + s:title [ "Suffix fixup must be specified" ] + s:rule [ + context = "db:*[@trans:suffix]" + s:assert [ + test = "@trans:idfixup = 'suffix'" + "If a suffix is specified, suffix ID fixup must also be specified." + ] + ] + ] + ] + attribute trans:suffix { text } +db.trans.linkscope.enumeration = + + ## No link scope adjustments are made + "user" + | + ## The link scopes are adjusted with the suffix property + "local" + | + ## The link scopes are adjusted based on proximity + "near" + | + ## The link scopes are adjusted based on document order + "global" +db.trans.linkscope.attribute = + + ## The transclusion link scope adjustment + attribute trans:linkscope { db.trans.linkscope.enumeration } +db.common.transclusion.attributes = + db.trans.idfixup.attribute? + & db.trans.suffix.attribute? + & db.trans.linkscope.attribute? +db.common.base.attributes = + db.version.attribute? + & db.xml.lang.attribute? + & db.xml.base.attribute? + & db.remap.attribute? + & db.xreflabel.attribute? + & db.revisionflag.attribute? + & db.dir.attribute? + & db.effectivity.attributes + & db.rdfalite.attributes + & db.common.transclusion.attributes + & db._any_other.attribute* +db.common.attributes = + db.xml.id.attribute? + & db.common.base.attributes + & db.annotations.attribute? +db.common.idreq.attributes = + db.xml.id.attribute + & db.common.base.attributes + & db.annotations.attribute? +db.common.linking.attributes = + (db.linkend.attribute | db.xlink.attributes)? +db.common.req.linking.attributes = + db.linkend.attribute | db.xlink.attributes +db.common.data.attributes = + + ## Specifies the format of the data + attribute format { text }?, + ( + ## Indentifies the location of the data by URI + attribute fileref { xsd:anyURI } + | + ## Identifies the location of the data by external identifier (entity name) + attribute entityref { xsd:ENTITY }) +db.verbatim.continuation.enumeration = + + ## Line numbering continues from the immediately preceding element with the same name. + "continues" + | + ## Line numbering restarts (begins at 1, usually). + "restarts" +db.verbatim.continuation.attribute = + + ## Determines whether line numbering continues from the previous element or restarts + attribute continuation { db.verbatim.continuation.enumeration } +db.verbatim.linenumbering.enumeration = + + ## Lines are numbered. + "numbered" + | + ## Lines are not numbered. + "unnumbered" +db.verbatim.linenumbering.attribute = + + ## Determines whether lines are numbered + attribute linenumbering { db.verbatim.linenumbering.enumeration } +db.verbatim.startinglinenumber.attribute = + + ## Specifies the initial line number + attribute startinglinenumber { xsd:integer } +db.verbatim.language.attribute = + + ## Identifies the language (i.e. programming language) of the verbatim content + attribute language { text } +db.verbatim.xml.space.attribute = + + ## Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not + attribute xml:space { + + ## Whitespace must be preserved. + "preserve" + } +db.verbatim.common.attributes = + db.verbatim.continuation.attribute? + & db.verbatim.linenumbering.attribute? + & db.verbatim.startinglinenumber.attribute? + & db.verbatim.xml.space.attribute? +db.verbatim.attributes = + db.verbatim.common.attributes & db.verbatim.language.attribute? +db.label.attribute = + + ## Specifies an identifying string for presentation purposes + attribute label { text } +db.width.characters.attribute = + + ## Specifies the width (in characters) of the element + attribute width { xsd:nonNegativeInteger } +db.spacing.enumeration = + + ## The spacing should be "compact". + "compact" + | + ## The spacing should be "normal". + "normal" +db.spacing.attribute = + + ## Specifies (a hint about) the spacing of the content + attribute spacing { db.spacing.enumeration } +db.pgwide.enumeration = + + ## The element should be rendered in the current text flow (with the flow column width). + "0" + | + ## The element should be rendered across the full text page. + "1" +db.pgwide.attribute = + + ## Indicates if the element is rendered across the column or the page + attribute pgwide { db.pgwide.enumeration } +db.language.attribute = + + ## Identifies the language (i.e. programming language) of the content + attribute language { text } +db.performance.enumeration = + + ## The content describes an optional step or steps. + "optional" + | + ## The content describes a required step or steps. + "required" +db.performance.attribute = + + ## Specifies if the content is required or optional + attribute performance { db.performance.enumeration } +db.floatstyle.attribute = + + ## Specifies style information to be used when rendering the float + attribute floatstyle { text } +db.width.attribute = + + ## Specifies the width of the element + attribute width { text } +db.depth.attribute = + + ## Specifies the depth of the element + attribute depth { text } +db.contentwidth.attribute = + + ## Specifies the width of the content rectangle + attribute contentwidth { text } +db.contentdepth.attribute = + + ## Specifies the depth of the content rectangle + attribute contentdepth { text } +db.scalefit.enumeration = + + ## False (do not scale-to-fit; anamorphic scaling may occur) + "0" + | + ## True (scale-to-fit; anamorphic scaling is forbidden) + "1" +db.scale.attribute = + + ## Specifies the scaling factor + attribute scale { xsd:positiveInteger } +db.classid.attribute = + + ## Specifies a classid for a media object player + attribute classid { text } +db.autoplay.attribute = + + ## Specifies the autoplay setting for a media object player + attribute autoplay { text } +db.halign.enumeration = + + ## Centered horizontally + "center" + | + ## Aligned horizontally on the specified character + "char" + | + ## Fully justified (left and right margins or edges) + "justify" + | + ## Left aligned + "left" + | + ## Right aligned + "right" +db.valign.enumeration = + + ## Aligned on the bottom of the region + "bottom" + | + ## Centered vertically + "middle" + | + ## Aligned on the top of the region + "top" +db.biblio.class.enumeration = + + ## A digital object identifier. + "doi" + | + ## An international standard book number. + "isbn" + | + ## An international standard technical report number (ISO 10444). + "isrn" + | + ## An international standard serial number. + "issn" + | + ## An international standard text code. + "istc" + | + ## A Library of Congress reference number. + "libraryofcongress" + | + ## A publication number (an internal number or possibly organizational standard). + "pubsnumber" + | + ## A Uniform Resource Identifier + "uri" +db.biblio.class-enum.attribute = + + ## Identifies the kind of bibliographic identifier + attribute class { db.biblio.class.enumeration }? +db.biblio.class-other.attribute = + + ## Identifies the nature of the non-standard bibliographic identifier + attribute otherclass { xsd:NMTOKEN } +db.biblio.class-other.attributes = + + ## Identifies the kind of bibliographic identifier + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.biblio.class-other.attribute +db.biblio.class.attribute = + db.biblio.class-enum.attribute | db.biblio.class-other.attributes +db.pubwork.enumeration = + + ## An article + "article" + | + ## A bulletin board system + "bbs" + | + ## A book + "book" + | + ## A CD-ROM + "cdrom" + | + ## A chapter (as of a book) + "chapter" + | + ## A DVD + "dvd" + | + ## An email message + "emailmessage" + | + ## A gopher page + "gopher" + | + ## A journal + "journal" + | + ## A manuscript + "manuscript" + | + ## A posting to a newsgroup + "newsposting" + | + ## A part (as of a book) + "part" + | + ## A reference entry + "refentry" + | + ## A section (as of a book or article) + "section" + | + ## A series + "series" + | + ## A set (as of books) + "set" + | + ## A web page + "webpage" + | + ## A wiki page + "wiki" + | + ## Some other kind of work + "other" +db.biblio.pubwork.enumeration = db.pubwork.enumeration +db.biblio.pubwork-enum.attribute = + + ## Identifies the nature of the published work + attribute pubwork { db.biblio.pubwork.enumeration }? +db.biblio.pubwork-other.attribute = + + ## Identifies the nature of some other kind of published work + attribute otherpubwork { xsd:NMTOKEN } +db.biblio.pubwork-other.attributes = + + ## Identifies that this is some other kind of published work + attribute pubwork { + + ## Indicates that the published work is some 'other' kind. + "other" + } + & db.biblio.pubwork-other.attribute +db.biblio.pubwork.attribute = + db.biblio.pubwork-enum.attribute | db.biblio.pubwork-other.attributes +db.ubiq.inlines = + (db.inlinemediaobject + | db.remark + | db.link.inlines + | db.alt + | db.trademark + | # below, effectively the publishing inlines (as of 5.0) + db.abbrev + | db.acronym + | db.date + | db._emphasis + | db.footnote + | db.footnoteref + | db._foreignphrase + | db._phrase + | db._quote + | db.subscript + | db.superscript + | db.wordasword) + | db.annotation + | (db._firstterm | db._glossterm) + | db.indexterm + | db.coref +db._text = + (text | db.ubiq.inlines | db._phrase | db.replaceable)* + | db.xi.include +db._title = db.title? & db.titleabbrev? & db.subtitle? +db._title.req = db.title & db.titleabbrev? & db.subtitle? +db._title.only = db.title? & db.titleabbrev? +db._title.onlyreq = db.title & db.titleabbrev? +db._info = (db._title, db.titleforbidden.info?) | db.info? +db._info.title.req = + (db._title.req, db.titleforbidden.info?) | db.titlereq.info +db._info.title.only = + (db._title.only, db.titleforbidden.info?) | db.titleonly.info +db._info.title.onlyreq = + (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info +db._info.title.forbidden = db.titleforbidden.info? +db.all.inlines = + (text + | db.ubiq.inlines + | db.general.inlines + | db.domain.inlines + | db.extension.inlines) + | db.xi.include +db.general.inlines = + db.publishing.inlines + | db.product.inlines + | db.bibliography.inlines + | db.graphic.inlines + | db.indexing.inlines + | db.link.inlines +db.domain.inlines = + db.technical.inlines + | db.math.inlines + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines + | db.os.inlines + | db.programming.inlines + | db.error.inlines +db.technical.inlines = + (db.replaceable | db.package | db.parameter) + | db.termdef + | db.nonterminal + | (db.systemitem | db.option | db.optional | db.property) +db.product.inlines = + db.trademark + | (db.productnumber + | db.productname + | db.database + | db.application + | db.hardware) +db.bibliography.inlines = + db.citation + | db.citerefentry + | db.citetitle + | db.citebiblioid + | db.author + | db.person + | db.personname + | db.org + | db.orgname + | db.editor + | db.jobtitle +db.publishing.inlines = + (db.abbrev + | db.acronym + | db.date + | db.emphasis + | db.footnote + | db.footnoteref + | db.foreignphrase + | db.phrase + | db.quote + | db.revnumber + | db.subscript + | db.superscript + | db.wordasword) + | db.glossary.inlines + | db.coref +db.graphic.inlines = db.inlinemediaobject +db.indexing.inlines = notAllowed | db.indexterm +db.link.inlines = + (db.xref | db.link | db.olink | db.anchor) | db.biblioref +db.extension.inlines = notAllowed +db.nopara.blocks = + (db.list.blocks + | db.wrapper.blocks + | db.formal.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.indexterm + | db.synopsis.blocks + | db.admonition.blocks +db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara +db.all.blocks = + (db.nopara.blocks | db.para.blocks | db.extension.blocks) + | db.annotation + | db.xi.include +db.wrapper.blocks = db.formalgroup +db.formal.blocks = (db.example | db.figure | db.table) | db.equation +db.informal.blocks = + (db.informalexample | db.informalfigure | db.informaltable) + | db.informalequation +db.publishing.blocks = + db.sidebar | db.blockquote | db.address | db.epigraph +db.graphic.blocks = db.mediaobject | db.screenshot +db.technical.blocks = + db.procedure + | db.task + | (db.productionset | db.constraintdef) + | db.msgset +db.list.blocks = + (db.itemizedlist + | db.orderedlist + | db.procedure + | db.simplelist + | db.variablelist + | db.segmentedlist) + | db.glosslist + | db.bibliolist + | db.calloutlist + | db.qandaset +db.verbatim.blocks = + (db.screen | db.literallayout) + | (db.programlistingco | db.screenco) + | (db.programlisting | db.synopsis) +db.extension.blocks = notAllowed +db.info.extension = db._any +db.info.elements = + (db.abstract + | db.address + | db.artpagenums + | db.author + | db.authorgroup + | db.authorinitials + | db.bibliocoverage + | db.biblioid + | db.bibliosource + | db.collab + | db.confgroup + | db.contractsponsor + | db.contractnum + | db.copyright + | db.cover + | db.date + | db.edition + | db.editor + | db.issuenum + | db.keywordset + | db.legalnotice + | db.mediaobject + | db.org + | db.orgname + | db.othercredit + | db.pagenums + | db.printhistory + | db.pubdate + | db.publisher + | db.publishername + | db.releaseinfo + | db.revhistory + | db.seriesvolnums + | db.subjectset + | db.volumenum + | db.meta + | db.info.extension) + | db.annotation + | db.extendedlink + | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset) + | db.itermset + | (db.productname | db.productnumber) + | db.xi.include +db.bibliographic.elements = + db.info.elements + | db.publishing.inlines + | db.citerefentry + | db.citetitle + | db.citebiblioid + | db.person + | db.personblurb + | db.personname + | db.subtitle + | db.title + | db.titleabbrev +div { + db.title.role.attribute = attribute role { text } + db.title.attlist = + db.title.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.title = + + ## The text of the title of a section of a document or of a formal block-level element + element title { db.title.attlist, db.all.inlines* } +} +div { + db.titleabbrev.role.attribute = attribute role { text } + db.titleabbrev.attlist = + db.titleabbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.titleabbrev = + + ## The abbreviation of a title + element titleabbrev { db.titleabbrev.attlist, db.all.inlines* } +} +div { + db.subtitle.role.attribute = attribute role { text } + db.subtitle.attlist = + db.subtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subtitle = + + ## The subtitle of a document + element subtitle { db.subtitle.attlist, db.all.inlines* } +} +div { + db.info.role.attribute = attribute role { text } + db.info.attlist = db.info.role.attribute? & db.common.attributes + db.info = + + ## A wrapper for information about a component or other block + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { db.info.attlist, (db._title & db.info.elements*) } +} +div { + db.titlereq.info.role.attribute = attribute role { text } + db.titlereq.info.attlist = + db.titlereq.info.role.attribute? & db.common.attributes + db.titlereq.info = + + ## A wrapper for information about a component or other block with a required title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { + db.titlereq.info.attlist, (db._title.req & db.info.elements*) + } +} +div { + db.titleonly.info.role.attribute = attribute role { text } + db.titleonly.info.attlist = + db.titleonly.info.role.attribute? & db.common.attributes + db.titleonly.info = + + ## A wrapper for information about a component or other block with only a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { + db.titleonly.info.attlist, (db._title.only & db.info.elements*) + } +} +div { + db.titleonlyreq.info.role.attribute = attribute role { text } + db.titleonlyreq.info.attlist = + db.titleonlyreq.info.role.attribute? & db.common.attributes + db.titleonlyreq.info = + + ## A wrapper for information about a component or other block with only a required title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { + db.titleonlyreq.info.attlist, + (db._title.onlyreq & db.info.elements*) + } +} +div { + db.titleforbidden.info.role.attribute = attribute role { text } + db.titleforbidden.info.attlist = + db.titleforbidden.info.role.attribute? & db.common.attributes + db.titleforbidden.info = + + ## A wrapper for information about a component or other block without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:info" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element info { db.titleforbidden.info.attlist, db.info.elements* } +} +div { + db.subjectset.role.attribute = attribute role { text } + db.subjectset.scheme.attribute = + + ## Identifies the controlled vocabulary used by this set's terms + attribute scheme { xsd:NMTOKEN } + db.subjectset.attlist = + db.subjectset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.subjectset.scheme.attribute? + db.subjectset = + + ## A set of terms describing the subject matter of a document + element subjectset { db.subjectset.attlist, db.subject+ } +} +div { + db.subject.role.attribute = attribute role { text } + db.subject.weight.attribute = + + ## Specifies a ranking for this subject relative to other subjects in the same set + attribute weight { text } + db.subject.attlist = + db.subject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.subject.weight.attribute? + db.subject = + + ## One of a group of terms describing the subject matter of a document + element subject { db.subject.attlist, db.subjectterm+ } +} +div { + db.subjectterm.role.attribute = attribute role { text } + db.subjectterm.attlist = + db.subjectterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subjectterm = + + ## A term in a group of terms describing the subject matter of a document + element subjectterm { db.subjectterm.attlist, text } +} +div { + db.keywordset.role.attribute = attribute role { text } + db.keywordset.attlist = + db.keywordset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keywordset = + + ## A set of keywords describing the content of a document + element keywordset { db.keywordset.attlist, db.keyword+ } +} +div { + db.keyword.role.attribute = attribute role { text } + db.keyword.attlist = + db.keyword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keyword = + + ## One of a set of keywords describing the content of a document + element keyword { db.keyword.attlist, text } +} +db.table.choice = notAllowed | db.cals.table | db.html.table +db.informaltable.choice = + notAllowed | db.cals.informaltable | db.html.informaltable +db.table = db.table.choice +db.informaltable = db.informaltable.choice +div { + db.procedure.role.attribute = attribute role { text } + db.procedure.type.attribute = + + ## Identifies the type of procedure + attribute type { text }? + db.procedure.attlist = + db.procedure.role.attribute? + & db.procedure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + db.procedure.info = db._info.title.only + db.procedure = + + ## A list of operations to be performed in a well-defined sequence + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:procedure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element procedure { + db.procedure.attlist, + db.procedure.info, + db.all.blocks*, + db.step+, + db.result? + } +} +div { + db.step.role.attribute = attribute role { text } + db.step.attlist = + db.step.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.step.info = db._info.title.only + # This content model is blocks*, step|stepalternatives, blocks* but + # expressed this way it avoids UPA issues in XSD and DTD versions + db.step = + + ## A unit of action in a procedure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:step" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element step { + db.step.attlist, + db.step.info, + ((db.all.blocks+, + ((db.substeps | db.stepalternatives), db.all.blocks*)?, + db.result?) + | ((db.substeps | db.stepalternatives), + db.all.blocks*, + db.result?)) + } +} +div { + db.stepalternatives.role.attribute = attribute role { text } + db.stepalternatives.attlist = + db.stepalternatives.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.stepalternatives.info = db._info.title.forbidden + db.stepalternatives = + + ## Alternative steps in a procedure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:stepalternatives" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element stepalternatives { + db.stepalternatives.attlist, db.stepalternatives.info, db.step+ + } +} +div { + db.substeps.role.attribute = attribute role { text } + db.substeps.attlist = + db.substeps.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.performance.attribute? + db.substeps = + + ## A wrapper for steps that occur within steps in a procedure + element substeps { db.substeps.attlist, db.step+ } +} +div { + db.result.role.attribute = attribute role { text } + db.result.attlist = + db.result.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.result = + + ## A wrapper for identifying the results of a procedure or step + element result { db.result.attlist, db.all.blocks+ } +} +div { + db.sidebar.floatstyle.attribute = db.floatstyle.attribute + db.sidebar.role.attribute = attribute role { text } + db.sidebar.attlist = + db.sidebar.role.attribute? + & db.sidebar.floatstyle.attribute? + & db.common.attributes + & db.common.linking.attributes + db.sidebar.info = db._info + db.sidebar = + + ## A portion of a document that is isolated from the main narrative flow + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:sidebar" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of sidebar" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sidebar" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sidebar { + db.sidebar.attlist, db.sidebar.info, db.all.blocks+ + } +} +div { + db.abstract.role.attribute = attribute role { text } + db.abstract.attlist = + db.abstract.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abstract.info = db._info.title.only + db.abstract = + + ## A summary + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:abstract" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element abstract { + db.abstract.attlist, db.abstract.info, db.all.blocks+ + } +} +div { + db.personblurb.role.attribute = attribute role { text } + db.personblurb.attlist = + db.personblurb.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.personblurb.info = db._info.title.only + db.personblurb = + + ## A short description or note about a person + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:personblurb" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element personblurb { + db.personblurb.attlist, db.personblurb.info, db.para.blocks+ + } +} +div { + db.blockquote.role.attribute = attribute role { text } + db.blockquote.attlist = + db.blockquote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.blockquote.info = db._info.title.only + db.blockquote = + + ## A quotation set off from the main text + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:blockquote" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element blockquote { + db.blockquote.attlist, + db.blockquote.info, + db.attribution?, + db.all.blocks+ + } +} +div { + db.attribution.role.attribute = attribute role { text } + db.attribution.attlist = + db.attribution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.attribution = + + ## The source of a block quote or epigraph + element attribution { + db.attribution.attlist, + (db._text + | db.person + | db.personname + | db.citetitle + | db.citation)* + } +} +div { + db.bridgehead.renderas.enumeration = + + ## Render as a first-level section + "sect1" + | + ## Render as a second-level section + "sect2" + | + ## Render as a third-level section + "sect3" + | + ## Render as a fourth-level section + "sect4" + | + ## Render as a fifth-level section + "sect5" + db.bridgehead.renderas-enum.attribute = + + ## Indicates how the bridge head should be rendered + attribute renderas { db.bridgehead.renderas.enumeration }? + db.bridgehead.renderas-other.attribute = + + ## Identifies the nature of the non-standard rendering + attribute otherrenderas { xsd:NMTOKEN } + db.bridgehead.renderas-other.attributes = + + ## Indicates how the bridge head should be rendered + attribute renderas { + + ## Identifies a non-standard rendering + "other" + } + & db.bridgehead.renderas-other.attribute + db.bridgehead.renderas.attribute = + db.bridgehead.renderas-enum.attribute + | db.bridgehead.renderas-other.attributes + db.bridgehead.role.attribute = attribute role { text } + db.bridgehead.attlist = + db.bridgehead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bridgehead.renderas.attribute? + db.bridgehead = + + ## A free-floating heading + element bridgehead { db.bridgehead.attlist, db.all.inlines* } +} +div { + db.remark.role.attribute = attribute role { text } + db.remark.attlist = + db.remark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.remark = + + ## A remark (or comment) intended for presentation in a draft manuscript + element remark { db.remark.attlist, db.all.inlines* } +} +div { + db.epigraph.role.attribute = attribute role { text } + db.epigraph.attlist = + db.epigraph.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.epigraph.info = db._info.title.forbidden + db.epigraph = + + ## A short inscription at the beginning of a document or component + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:epigraph" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element epigraph { + db.epigraph.attlist, + db.epigraph.info, + db.attribution?, + (db.para.blocks | db.literallayout)+ + } +} +div { + db.footnote.role.attribute = attribute role { text } + db.footnote.label.attribute = + + ## Identifies the desired footnote mark + attribute label { xsd:NMTOKEN } + db.footnote.attlist = + db.footnote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.footnote.label.attribute? + db.footnote = + + ## A footnote + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:footnote)" + "footnote must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:epigraph)" + "epigraph must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of footnote" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:footnote" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of footnote" + ] + ] + ] + ] + element footnote { db.footnote.attlist, db.all.blocks+ } +} +div { + db.formalpara.role.attribute = attribute role { text } + db.formalpara.attlist = + db.formalpara.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.formalpara.info = db._info.title.onlyreq + db.formalpara = + + ## A paragraph with a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:formalpara" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element formalpara { + db.formalpara.attlist, + db.formalpara.info, + db.indexing.inlines*, + db.para + } +} +div { + db.para.role.attribute = attribute role { text } + db.para.attlist = + db.para.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.para.info = db._info.title.forbidden + db.para = + + ## A paragraph + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:para" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element para { + db.para.attlist, + db.para.info, + (db.all.inlines | db.nopara.blocks)* + } +} +div { + db.simpara.role.attribute = attribute role { text } + db.simpara.attlist = + db.simpara.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.simpara.info = db._info.title.forbidden + db.simpara = + + ## A paragraph that contains only text and inline markup, no block elements + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:simpara" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element simpara { + db.simpara.attlist, db.simpara.info, db.all.inlines* + } +} +div { + db.itemizedlist.role.attribute = attribute role { text } + db.itemizedlist.mark.attribute = + + ## Identifies the type of mark to be used on items in this list + attribute mark { xsd:NMTOKEN } + db.itemizedlist.attlist = + db.itemizedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & db.itemizedlist.mark.attribute? + db.itemizedlist.info = db._info.title.only + db.itemizedlist = + + ## A list in which each entry is marked with a bullet or other dingbat + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:itemizedlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element itemizedlist { + db.itemizedlist.attlist, + db.itemizedlist.info, + db.all.blocks*, + db.listitem+ + } +} +div { + db.orderedlist.role.attribute = attribute role { text } + db.orderedlist.continuation.enumeration = + + ## Specifies that numbering should begin where the preceding list left off + "continues" + | + ## Specifies that numbering should begin again at 1 + "restarts" + db.orderedlist.continuation.attribute = + + ## Indicates how list numbering should begin relative to the immediately preceding list + attribute continuation { db.orderedlist.continuation.enumeration } + db.orderedlist.startingnumber.attribute = + + ## Specifies the initial line number + attribute startingnumber { xsd:integer } + db.orderedlist.inheritnum.enumeration = + + ## Specifies that numbering should ignore list nesting + "ignore" + | + ## Specifies that numbering should inherit from outer-level lists + "inherit" + db.orderedlist.inheritnum.attribute = + + ## Indicates whether or not item numbering should be influenced by list nesting + attribute inheritnum { db.orderedlist.inheritnum.enumeration } + db.orderedlist.numeration.enumeration = + + ## Specifies Arabic numeration (1, 2, 3, …) + "arabic" + | + ## Specifies upper-case alphabetic numeration (A, B, C, …) + "upperalpha" + | + ## Specifies lower-case alphabetic numeration (a, b, c, …) + "loweralpha" + | + ## Specifies upper-case Roman numeration (I, II, III, …) + "upperroman" + | + ## Specifies lower-case Roman numeration (i, ii, iii …) + "lowerroman" + db.orderedlist.numeration.attribute = + + ## Indicates the desired numeration + attribute numeration { db.orderedlist.numeration.enumeration } + db.orderedlist.attlist = + db.orderedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & (db.orderedlist.continuation.attribute + | db.orderedlist.startingnumber.attribute)? + & db.orderedlist.inheritnum.attribute? + & db.orderedlist.numeration.attribute? + db.orderedlist.info = db._info.title.only + db.orderedlist = + + ## A list in which each entry is marked with a sequentially incremented label + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:orderedlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element orderedlist { + db.orderedlist.attlist, + db.orderedlist.info, + db.all.blocks*, + db.listitem+ + } +} +div { + db.listitem.role.attribute = attribute role { text } + db.listitem.override.attribute = + + ## Specifies the keyword for the type of mark that should be used on this + ## item, instead of the mark that would be used by default + attribute override { xsd:NMTOKEN } + db.listitem.attlist = + db.listitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.listitem.override.attribute? + db.listitem.info = db._info.title.forbidden + db.listitem = + + ## A wrapper for the elements of a list item + element listitem { + db.listitem.attlist, db.listitem.info, db.all.blocks+ + } +} +div { + db.segmentedlist.role.attribute = attribute role { text } + db.segmentedlist.attlist = + db.segmentedlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.segmentedlist.info = db._info.title.only + db.segmentedlist = + + ## A segmented list, a list of sets of elements + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:segmentedlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element segmentedlist { + db.segmentedlist.attlist, + db.segmentedlist.info, + db.segtitle+, + db.seglistitem+ + } +} +div { + db.segtitle.role.attribute = attribute role { text } + db.segtitle.attlist = + db.segtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.segtitle = + + ## The title of an element of a list item in a segmented list + element segtitle { db.segtitle.attlist, db.all.inlines* } +} +div { + db.seglistitem.role.attribute = attribute role { text } + db.seglistitem.attlist = + db.seglistitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seglistitem = + + ## A list item in a segmented list + [ + s:pattern [ + s:title [ "Cardinality of segments and titles" ] + s:rule [ + context = "db:seglistitem" + s:assert [ + test = "count(db:seg) = count(../db:segtitle)" + "The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist" + ] + ] + ] + ] + element seglistitem { db.seglistitem.attlist, db.seg+ } +} +div { + db.seg.role.attribute = attribute role { text } + db.seg.attlist = + db.seg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seg = + + ## An element of a list item in a segmented list + element seg { db.seg.attlist, db.all.inlines* } +} +div { + db.simplelist.role.attribute = attribute role { text } + db.simplelist.type.enumeration = + + ## A tabular presentation in row-major order. + "horiz" + | + ## A tabular presentation in column-major order. + "vert" + | + ## An inline presentation, usually a comma-delimited list. + "inline" + db.simplelist.type.attribute = + + ## Specifies the type of list presentation + [ a:defaultValue = "vert" ] + attribute type { db.simplelist.type.enumeration } + db.simplelist.columns.attribute = + + ## Specifies the number of columns for horizontal or vertical presentation + attribute columns { xsd:integer } + db.simplelist.attlist = + db.simplelist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplelist.type.attribute? + & db.simplelist.columns.attribute? + db.simplelist = + + ## An undecorated list of single words or short phrases + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:simplelist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element simplelist { db.simplelist.attlist, db.member+ } +} +div { + db.member.role.attribute = attribute role { text } + db.member.attlist = + db.member.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.member = + + ## An element of a simple list + element member { db.member.attlist, db.all.inlines* } +} +div { + db.variablelist.role.attribute = attribute role { text } + db.variablelist.termlength.attribute = + + ## Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list + attribute termlength { text } + db.variablelist.attlist = + db.variablelist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spacing.attribute? + & db.variablelist.termlength.attribute? + db.variablelist.info = db._info.title.only + db.variablelist = + + ## A list in which each entry is composed of a set of one or more terms and an associated description + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:variablelist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element variablelist { + db.variablelist.attlist, + db.variablelist.info, + db.all.blocks*, + db.varlistentry+ + } +} +div { + db.varlistentry.role.attribute = attribute role { text } + db.varlistentry.attlist = + db.varlistentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varlistentry = + + ## A wrapper for a set of terms and the associated description in a variable list + element varlistentry { + db.varlistentry.attlist, db.term+, db.listitem + } +} +div { + db.term.role.attribute = attribute role { text } + db.term.attlist = + db.term.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.term = + + ## The word or phrase being defined or described in a variable list + element term { db.term.attlist, db.all.inlines* } +} +div { + db.example.role.attribute = attribute role { text } + db.example.label.attribute = db.label.attribute + db.example.width.attribute = db.width.characters.attribute + db.example.pgwide.attribute = db.pgwide.attribute + db.example.floatstyle.attribute = db.floatstyle.attribute + db.example.type.attribute = + + ## Identifies the type of example + attribute type { text }? + db.example.attlist = + db.example.role.attribute? + & db.example.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.example.label.attribute? + & db.example.floatstyle.attribute? + & (db.example.width.attribute | db.example.pgwide.attribute)? + db.example.info = db._info.title.onlyreq + db.example = + + ## A formal example, with a title + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:example" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of example" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:example" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element example { + db.example.attlist, db.example.info, db.all.blocks+, db.caption? + } +} +div { + db.informalexample.role.attribute = attribute role { text } + db.informalexample.width.attribute = db.width.characters.attribute + db.informalexample.pgwide.attribute = db.pgwide.attribute + db.informalexample.floatstyle.attribute = db.floatstyle.attribute + db.informalexample.type.attribute = + + ## Identifies the type of example + attribute type { text }? + db.informalexample.attlist = + db.informalexample.role.attribute? + & db.informalexample.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.informalexample.floatstyle.attribute? + & (db.informalexample.width.attribute + | db.informalexample.pgwide.attribute)? + db.informalexample.info = db._info.title.forbidden + db.informalexample = + + ## A displayed example without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informalexample" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informalexample { + db.informalexample.attlist, + db.informalexample.info, + db.all.blocks+, + db.caption? + } +} +db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co +db.verbatim.contentmodel = + db._info.title.forbidden, (db.textobject | db.verbatim.inlines*) +div { + db.literallayout.role.attribute = attribute role { text } + db.literallayout.class.enumeration = + + ## The literal layout should be formatted with a monospaced font + "monospaced" + | + ## The literal layout should be formatted with the current font + "normal" + db.literallayout.class.attribute = + + ## Specifies the class of literal layout + attribute class { db.literallayout.class.enumeration } + db.literallayout.attlist = + db.literallayout.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.literallayout.class.attribute? + db.literallayout = + + ## A block of text in which line breaks and white space are to be reproduced faithfully + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:literallayout" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element literallayout { + db.literallayout.attlist, db.verbatim.contentmodel + } +} +div { + db.screen.role.attribute = attribute role { text } + db.screen.width.attribute = db.width.characters.attribute + db.screen.attlist = + db.screen.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.screen.width.attribute? + db.screen = + + ## Text that a user sees or might see on a computer screen + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:screen" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element screen { db.screen.attlist, db.verbatim.contentmodel } +} +div { + db.screenshot.role.attribute = attribute role { text } + db.screenshot.attlist = + db.screenshot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenshot.info = db._info + db.screenshot = + + ## A representation of what the user sees or might see on a computer screen + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:screenshot" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element screenshot { + db.screenshot.attlist, db.screenshot.info, db.mediaobject + } +} +div { + db.figure.role.attribute = attribute role { text } + db.figure.label.attribute = db.label.attribute + db.figure.pgwide.attribute = db.pgwide.attribute + db.figure.floatstyle.attribute = db.floatstyle.attribute + db.figure.type.attribute = + + ## Identifies the type of figure + attribute type { text }? + db.figure.attlist = + db.figure.role.attribute? + & db.figure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.figure.label.attribute? + & db.figure.pgwide.attribute? + & db.figure.floatstyle.attribute? + db.figure.info = db._info.title.onlyreq + db.figure = + + ## A formal figure, generally an illustration, with a title + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:figure" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of figure" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:figure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element figure { + db.figure.attlist, db.figure.info, db.all.blocks+, db.caption? + } +} +div { + db.informalfigure.role.attribute = attribute role { text } + db.informalfigure.label.attribute = db.label.attribute + db.informalfigure.pgwide.attribute = db.pgwide.attribute + db.informalfigure.floatstyle.attribute = db.floatstyle.attribute + db.informalfigure.type.attribute = + + ## Identifies the type of figure + attribute type { text }? + db.informalfigure.attlist = + db.informalfigure.role.attribute? + & db.informalfigure.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.informalfigure.label.attribute? + & db.informalfigure.pgwide.attribute? + & db.informalfigure.floatstyle.attribute? + db.informalfigure.info = db._info.title.forbidden + db.informalfigure = + + ## A untitled figure + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informalfigure" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informalfigure { + db.informalfigure.attlist, + db.informalfigure.info, + db.all.blocks+, + db.caption? + } +} +db.mediaobject.content = + (db.videoobject | db.audioobject | db.imageobject | db.textobject) + | db.imageobjectco +div { + db.mediaobject.role.attribute = attribute role { text } + db.mediaobject.attlist = + db.mediaobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mediaobject.info = db._info.title.forbidden + db.mediaobject = + + ## A displayed media object (video, audio, image, etc.) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:mediaobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element mediaobject { + db.mediaobject.attlist, + db.mediaobject.info, + db.alt?, + db.mediaobject.content+, + db.caption? + } +} +div { + db.inlinemediaobject.role.attribute = attribute role { text } + db.inlinemediaobject.attlist = + db.inlinemediaobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlinemediaobject.info = db._info.title.forbidden + db.inlinemediaobject = + + ## An inline media object (video, audio, image, and so on) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:inlinemediaobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element inlinemediaobject { + db.inlinemediaobject.attlist, + db.inlinemediaobject.info, + db.alt?, + db.mediaobject.content+ + } +} +div { + db.videoobject.role.attribute = attribute role { text } + db.videoobject.attlist = + db.videoobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.videoobject.info = db._info.title.forbidden + db.videoobject = + + ## A wrapper for video data and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:videoobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element videoobject { + db.videoobject.attlist, db.videoobject.info, db.videodata+ + } +} +div { + db.audioobject.role.attribute = attribute role { text } + db.audioobject.attlist = + db.audioobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.audioobject.info = db._info.title.forbidden + db.audioobject = + + ## A wrapper for audio data and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:audioobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element audioobject { + db.audioobject.attlist, db.audioobject.info, db.audiodata+ + } +} +db.imageobject.content = + db.imagedata+ + | db.imagedata.mathml + | db.imagedata.svg+ + | db.xi.include +div { + db.imageobject.role.attribute = attribute role { text } + db.imageobject.attlist = + db.imageobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobject.info = db._info.title.forbidden + db.imageobject = + + ## A wrapper for image data and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imageobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imageobject { + db.imageobject.attlist, + db.imageobject.info, + db.imageobject.content + } +} +div { + db.textobject.role.attribute = attribute role { text } + db.textobject.attlist = + db.textobject.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.textobject.info = db._info.title.forbidden + db.textobject = + + ## A wrapper for a text description of an object and its associated meta-information + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:textobject" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element textobject { + db.textobject.attlist, + db.textobject.info, + (db.phrase | db.textdata | db.all.blocks+) + } +} +div { + db.videodata.role.attribute = attribute role { text } + db.videodata.align.enumeration = db.halign.enumeration + db.videodata.align.attribute = + + ## Specifies the (horizontal) alignment of the video data + attribute align { db.videodata.align.enumeration } + db.videodata.autoplay.attribute = db.autoplay.attribute + db.videodata.classid.attribute = db.classid.attribute + db.videodata.valign.enumeration = db.valign.enumeration + db.videodata.valign.attribute = + + ## Specifies the vertical alignment of the video data + attribute valign { db.videodata.valign.enumeration } + db.videodata.width.attribute = db.width.attribute + db.videodata.depth.attribute = db.depth.attribute + db.videodata.contentwidth.attribute = db.contentwidth.attribute + db.videodata.contentdepth.attribute = db.contentdepth.attribute + db.videodata.scalefit.enumeration = db.scalefit.enumeration + db.videodata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.videodata.scalefit.enumeration } + db.videodata.scale.attribute = db.scale.attribute + db.videodata.attlist = + db.videodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.videodata.align.attribute? + & db.videodata.valign.attribute? + & db.videodata.width.attribute? + & db.videodata.contentwidth.attribute? + & db.videodata.scalefit.attribute? + & db.videodata.scale.attribute? + & db.videodata.depth.attribute? + & db.videodata.contentdepth.attribute? + & db.videodata.autoplay.attribute? + & db.videodata.classid.attribute? + db.videodata.info = db._info.title.forbidden + db.videodata = + + ## Pointer to external video data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:videodata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element videodata { + db.videodata.attlist, db.videodata.info, db.multimediaparam* + } +} +div { + db.audiodata.role.attribute = attribute role { text } + db.audiodata.align.enumeration = db.halign.enumeration + db.audiodata.align.attribute = + + ## Specifies the (horizontal) alignment of the video data + attribute align { db.audiodata.align.enumeration } + db.audiodata.autoplay.attribute = db.autoplay.attribute + db.audiodata.classid.attribute = db.classid.attribute + db.audiodata.contentwidth.attribute = db.contentwidth.attribute + db.audiodata.contentdepth.attribute = db.contentdepth.attribute + db.audiodata.depth.attribute = db.depth.attribute + db.audiodata.scale.attribute = db.scale.attribute + db.audiodata.scalefit.enumeration = db.scalefit.enumeration + db.audiodata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.audiodata.scalefit.enumeration } + db.audiodata.valign.enumeration = db.valign.enumeration + db.audiodata.valign.attribute = + + ## Specifies the vertical alignment of the video data + attribute valign { db.audiodata.valign.enumeration } + db.audiodata.width.attribute = db.width.attribute + db.audiodata.attlist = + db.audiodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.audiodata.align.attribute? + & db.audiodata.autoplay.attribute? + & db.audiodata.classid.attribute? + & db.audiodata.contentdepth.attribute? + & db.audiodata.contentwidth.attribute? + & db.audiodata.depth.attribute? + & db.audiodata.scale.attribute? + & db.audiodata.scalefit.attribute? + & db.audiodata.valign.attribute? + & db.audiodata.width.attribute? + db.audiodata.info = db._info.title.forbidden + db.audiodata = + + ## Pointer to external audio data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:audiodata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element audiodata { + db.audiodata.attlist, db.audiodata.info, db.multimediaparam* + } +} +div { + db.imagedata.role.attribute = attribute role { text } + db.imagedata.align.enumeration = db.halign.enumeration + db.imagedata.align.attribute = + + ## Specifies the (horizontal) alignment of the image data + attribute align { db.imagedata.align.enumeration } + db.imagedata.valign.enumeration = db.valign.enumeration + db.imagedata.valign.attribute = + + ## Specifies the vertical alignment of the image data + attribute valign { db.imagedata.valign.enumeration } + db.imagedata.width.attribute = db.width.attribute + db.imagedata.depth.attribute = db.depth.attribute + db.imagedata.contentwidth.attribute = db.contentwidth.attribute + db.imagedata.contentdepth.attribute = db.contentdepth.attribute + db.imagedata.scalefit.enumeration = db.scalefit.enumeration + db.imagedata.scalefit.attribute = + + ## Determines if anamorphic scaling is forbidden + attribute scalefit { db.imagedata.scalefit.enumeration } + db.imagedata.scale.attribute = db.scale.attribute + db.imagedata.attlist = + db.imagedata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.info = db._info.title.forbidden + db.imagedata = + + ## Pointer to external image data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imagedata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imagedata { + db.imagedata.attlist, db.imagedata.info, db.multimediaparam* + } +} +div { + db.textdata.role.attribute = attribute role { text } + db.textdata.encoding.attribute = + + ## Identifies the encoding of the text in the external file + attribute encoding { text } + db.textdata.attlist = + db.textdata.role.attribute? + & db.common.attributes + & db.common.data.attributes + & db.textdata.encoding.attribute? + db.textdata.info = db._info.title.forbidden + db.textdata = + + ## Pointer to external text data + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:textdata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element textdata { db.textdata.attlist, db.textdata.info } +} +div { + db.multimediaparam.role.attribute = attribute role { text } + db.multimediaparam.name.attribute = + + ## Specifies the name of the parameter + attribute name { text } + db.multimediaparam.value.attribute = + + ## Specifies the value of the parameter + attribute value { text } + db.multimediaparam.valuetype.attribute = + + ## Specifies the type of the value of the parameter + attribute valuetype { text } + db.multimediaparam.attlist = + db.multimediaparam.role.attribute? + & db.common.attributes + & db.multimediaparam.name.attribute + & db.multimediaparam.value.attribute + & db.multimediaparam.valuetype.attribute? + db.multimediaparam = + + ## Application specific parameters for a media player + element multimediaparam { db.multimediaparam.attlist, empty } +} +div { + db.caption.role.attribute = attribute role { text } + db.caption.attlist = + db.caption.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caption.info = db._info.title.forbidden + db.caption = + + ## A caption + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:caption" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element caption { + db.caption.attlist, db.caption.info, db.all.blocks+ + } +} +div { + db.address.role.attribute = attribute role { text } + db.address.attlist = + db.address.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.address = + + ## A real-world address, generally a postal address + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:address" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element address { + db.address.attlist, + (db._text + | db.personname + | db.orgname + | db.pob + | db.street + | db.city + | db.state + | db.postcode + | db.country + | db.phone + | db.fax + | db.email + | db.uri + | db.otheraddr)* + } +} +div { + db.street.role.attribute = attribute role { text } + db.street.attlist = + db.street.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.street = + + ## A street address in an address + element street { db.street.attlist, db._text } +} +div { + db.pob.role.attribute = attribute role { text } + db.pob.attlist = + db.pob.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pob = + + ## A post office box in an address + element pob { db.pob.attlist, db._text } +} +div { + db.postcode.role.attribute = attribute role { text } + db.postcode.attlist = + db.postcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.postcode = + + ## A postal code in an address + element postcode { db.postcode.attlist, db._text } +} +div { + db.city.role.attribute = attribute role { text } + db.city.attlist = + db.city.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.city = + + ## The name of a city in an address + element city { db.city.attlist, db._text } +} +div { + db.state.role.attribute = attribute role { text } + db.state.attlist = + db.state.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.state = + + ## A state or province in an address + element state { db.state.attlist, db._text } +} +div { + db.country.role.attribute = attribute role { text } + db.country.attlist = + db.country.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.country = + + ## The name of a country + element country { db.country.attlist, db._text } +} +div { + db.phone.role.attribute = attribute role { text } + db.phone.attlist = + db.phone.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phone = + + ## A telephone number + element phone { db.phone.attlist, db._text } +} +div { + db.fax.role.attribute = attribute role { text } + db.fax.attlist = + db.fax.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.fax = + + ## A fax number + element fax { db.fax.attlist, db._text } +} +div { + db.otheraddr.role.attribute = attribute role { text } + db.otheraddr.attlist = + db.otheraddr.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.otheraddr = + + ## Uncategorized information in address + element otheraddr { db.otheraddr.attlist, db._text } +} +div { + db.affiliation.role.attribute = attribute role { text } + db.affiliation.attlist = + db.affiliation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.affiliation = + + ## The institutional affiliation of an individual + element affiliation { + db.affiliation.attlist, + db.shortaffil?, + db.jobtitle*, + (db.org? | (db.orgname?, db.orgdiv*, db.address*)) + } +} +div { + db.shortaffil.role.attribute = attribute role { text } + db.shortaffil.attlist = + db.shortaffil.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.shortaffil = + + ## A brief description of an affiliation + element shortaffil { db.shortaffil.attlist, db._text } +} +div { + db.jobtitle.role.attribute = attribute role { text } + db.jobtitle.attlist = + db.jobtitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.jobtitle = + + ## The title of an individual in an organization + element jobtitle { db.jobtitle.attlist, db._text } +} +div { + db.orgname.class.enumeration = + + ## A consortium + "consortium" + | + ## A corporation + "corporation" + | + ## An informal organization + "informal" + | + ## A non-profit organization + "nonprofit" + db.orgname.class-enum.attribute = + + ## Specifies the nature of the organization + attribute class { db.orgname.class.enumeration } + db.orgname.class-other.attributes = + + ## Specifies the nature of the organization + attribute class { + + ## Indicates a non-standard organization class + "other" + }, + + ## Identifies the non-standard nature of the organization + attribute otherclass { text } + db.orgname.class.attribute = + db.orgname.class-enum.attribute | db.orgname.class-other.attributes + db.orgname.role.attribute = attribute role { text } + db.orgname.attlist = + db.orgname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.orgname.class.attribute? + db.orgname = + + ## The name of an organization + element orgname { db.orgname.attlist, db._text } +} +div { + db.orgdiv.role.attribute = attribute role { text } + db.orgdiv.attlist = + db.orgdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.orgdiv = + + ## A division of an organization + element orgdiv { db.orgdiv.attlist, db.all.inlines* } +} +div { + db.artpagenums.role.attribute = attribute role { text } + db.artpagenums.attlist = + db.artpagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.artpagenums = + + ## The page numbers of an article as published + element artpagenums { db.artpagenums.attlist, db._text } +} +div { + db.personname.role.attribute = attribute role { text } + db.personname.attlist = + db.personname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.personname = + + ## The personal name of an individual + element personname { + db.personname.attlist, + (db._text + | (db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername)+ + | (db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername)+) + } +} +db.person.author.contentmodel = + db.personname, + (db.personblurb + | db.affiliation + | db.email + | db.uri + | db.address + | db.contrib)* +db.org.author.contentmodel = + db.orgname, + (db.orgdiv + | db.affiliation + | db.email + | db.uri + | db.address + | db.contrib)* +db.credit.contentmodel = + db.person.author.contentmodel | db.org.author.contentmodel +div { + db.author.role.attribute = attribute role { text } + db.author.attlist = + db.author.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.author = + + ## The name of an individual author + element author { db.author.attlist, db.credit.contentmodel } +} +div { + db.authorgroup.role.attribute = attribute role { text } + db.authorgroup.attlist = + db.authorgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.authorgroup = + + ## Wrapper for author information when a document has multiple authors or collaborators + element authorgroup { + db.authorgroup.attlist, (db.author | db.editor | db.othercredit)+ + } +} +div { + db.collab.role.attribute = attribute role { text } + db.collab.attlist = + db.collab.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.collab = + + ## Identifies a collaborator + element collab { + db.collab.attlist, + (db.person | db.personname | db.org | db.orgname)+, + db.affiliation* + } +} +div { + db.authorinitials.role.attribute = attribute role { text } + db.authorinitials.attlist = + db.authorinitials.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.authorinitials = + + ## The initials or other short identifier for an author + element authorinitials { db.authorinitials.attlist, db._text } +} +div { + db.person.role.attribute = attribute role { text } + db.person.attlist = + db.person.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.person = + + ## A person and associated metadata + element person { + db.person.attlist, + db.personname, + (db.address + | db.affiliation + | db.email + | db.uri + | db.personblurb)* + } +} +div { + db.org.role.attribute = attribute role { text } + db.org.attlist = + db.org.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.org = + + ## An organization and associated metadata + element org { + db.org.attlist, + db.orgname, + (db.address | db.affiliation | db.email | db.uri | db.orgdiv)* + } +} +div { + db.confgroup.role.attribute = attribute role { text } + db.confgroup.attlist = + db.confgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confgroup = + + ## A wrapper for document meta-information about a conference + element confgroup { + db.confgroup.attlist, + (db.confdates + | db.conftitle + | db.confnum + | db.confsponsor + | db.address)* + } +} +div { + db.confdates.role.attribute = attribute role { text } + db.confdates.attlist = + db.confdates.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confdates = + + ## The dates of a conference for which a document was written + element confdates { db.confdates.attlist, db._text } +} +div { + db.conftitle.role.attribute = attribute role { text } + db.conftitle.attlist = + db.conftitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.conftitle = + + ## The title of a conference for which a document was written + element conftitle { db.conftitle.attlist, db._text } +} +div { + db.confnum.role.attribute = attribute role { text } + db.confnum.attlist = + db.confnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confnum = + + ## An identifier, frequently numerical, associated with a conference for which a document was written + element confnum { db.confnum.attlist, db._text } +} +div { + db.confsponsor.role.attribute = attribute role { text } + db.confsponsor.attlist = + db.confsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.confsponsor = + + ## The sponsor of a conference for which a document was written + element confsponsor { db.confsponsor.attlist, db._text } +} +div { + db.contractnum.role.attribute = attribute role { text } + db.contractnum.attlist = + db.contractnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractnum = + + ## The contract number of a document + element contractnum { db.contractnum.attlist, db._text } +} +div { + db.contractsponsor.role.attribute = attribute role { text } + db.contractsponsor.attlist = + db.contractsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractsponsor = + + ## The sponsor of a contract + element contractsponsor { db.contractsponsor.attlist, db._text } +} +div { + db.copyright.role.attribute = attribute role { text } + db.copyright.attlist = + db.copyright.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.copyright = + + ## Copyright information about a document + element copyright { db.copyright.attlist, db.year+, db.holder* } +} +div { + db.year.role.attribute = attribute role { text } + db.year.attlist = + db.year.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.year = + + ## The year of publication of a document + element year { db.year.attlist, db._text } +} +div { + db.holder.role.attribute = attribute role { text } + db.holder.attlist = + db.holder.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.holder = + + ## The name of the individual or organization that holds a copyright + element holder { db.holder.attlist, db._text } +} +db.cover.contentmodel = + (db.para.blocks + | db.extension.blocks + | db.list.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.synopsis.blocks +div { + db.cover.role.attribute = attribute role { text } + db.cover.attlist = + db.cover.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.cover = + + ## Additional content for the cover of a publication + element cover { db.cover.attlist, db.cover.contentmodel+ } +} +db.date.contentmodel = + xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text +div { + db.date.role.attribute = attribute role { text } + db.date.attlist = + db.date.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.date = + + ## The date of publication or revision of a document + element date { db.date.attlist, db.date.contentmodel } +} +div { + db.edition.role.attribute = attribute role { text } + db.edition.attlist = + db.edition.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.edition = + + ## The name or number of an edition of a document + element edition { db.edition.attlist, db._text } +} +div { + db.editor.role.attribute = attribute role { text } + db.editor.attlist = + db.editor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.editor = + + ## The name of the editor of a document + element editor { db.editor.attlist, db.credit.contentmodel } +} +div { + db.biblioid.role.attribute = attribute role { text } + db.biblioid.attlist = + db.biblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.biblioid = + + ## An identifier for a document + element biblioid { db.biblioid.attlist, db._text } +} +div { + db.citebiblioid.role.attribute = attribute role { text } + db.citebiblioid.attlist = + db.citebiblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.citebiblioid = + + ## A citation of a bibliographic identifier + element citebiblioid { db.citebiblioid.attlist, db._text } +} +div { + db.bibliosource.role.attribute = attribute role { text } + db.bibliosource.attlist = + db.bibliosource.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.bibliosource = + + ## The source of a document + element bibliosource { db.bibliosource.attlist, db._text } +} +div { + db.bibliorelation.type.enumeration = + + ## The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + "hasformat" + | + ## The described resource includes the referenced resource either physically or logically + "haspart" + | + ## The described resource has a version, edition, or adaptation, namely, the referenced resource + "hasversion" + | + ## The described resource is the same intellectual content of the referenced resource, but presented in another format + "isformatof" + | + ## The described resource is a physical or logical part of the referenced resource + "ispartof" + | + ## The described resource is referenced, cited, or otherwise pointed to by the referenced resource + "isreferencedby" + | + ## The described resource is supplanted, displaced, or superceded by the referenced resource + "isreplacedby" + | + ## The described resource is required by the referenced resource, either physically or logically + "isrequiredby" + | + ## The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + "isversionof" + | + ## The described resource references, cites, or otherwise points to the referenced resource + "references" + | + ## The described resource supplants, displaces, or supersedes the referenced resource + "replaces" + | + ## The described resource requires the referenced resource to support its function, delivery, or coherence of content + "requires" + db.bibliorelation.type-enum.attribute = + + ## Identifies the type of relationship + attribute type { db.bibliorelation.type.enumeration }? + db.bibliorelation.type-other.attributes = + + ## Identifies the type of relationship + attribute type { + + ## The described resource has a non-standard relationship with the referenced resource + "othertype" + }?, + + ## A keyword that identififes the type of the non-standard relationship + attribute othertype { xsd:NMTOKEN } + db.bibliorelation.type.attribute = + db.bibliorelation.type-enum.attribute + | db.bibliorelation.type-other.attributes + db.bibliorelation.role.attribute = attribute role { text } + db.bibliorelation.attlist = + db.bibliorelation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + & db.bibliorelation.type.attribute + db.bibliorelation = + + ## The relationship of a document to another + element bibliorelation { db.bibliorelation.attlist, db._text } +} +div { + db.bibliocoverage.spacial.enumeration = + + ## The DCMI Point identifies a point in space using its geographic coordinates + "dcmipoint" + | + ## ISO 3166 Codes for the representation of names of countries + "iso3166" + | + ## The DCMI Box identifies a region of space using its geographic limits + "dcmibox" + | + ## The Getty Thesaurus of Geographic Names + "tgn" + db.bibliocoverage.spatial-enum.attribute = + + ## Specifies the type of spatial coverage + attribute spatial { db.bibliocoverage.spacial.enumeration }? + db.bibliocoverage.spatial-other.attributes = + + ## Specifies the type of spatial coverage + attribute spatial { + + ## Identifies a non-standard type of coverage + "otherspatial" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute otherspatial { xsd:NMTOKEN } + db.bibliocoverage.spatial.attribute = + db.bibliocoverage.spatial-enum.attribute + | db.bibliocoverage.spatial-other.attributes + db.bibliocoverage.temporal.enumeration = + + ## A specification of the limits of a time interval + "dcmiperiod" + | + ## W3C Encoding rules for dates and times—a profile based on ISO 8601 + "w3c-dtf" + db.bibliocoverage.temporal-enum.attribute = + + ## Specifies the type of temporal coverage + attribute temporal { db.bibliocoverage.temporal.enumeration }? + db.bibliocoverage.temporal-other.attributes = + + ## Specifies the type of temporal coverage + attribute temporal { + + ## Specifies a non-standard type of coverage + "othertemporal" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute othertemporal { xsd:NMTOKEN } + db.bibliocoverage.temporal.attribute = + db.bibliocoverage.temporal-enum.attribute + | db.bibliocoverage.temporal-other.attributes + db.bibliocoverage.coverage.attrib = + db.bibliocoverage.spatial.attribute + & db.bibliocoverage.temporal.attribute + db.bibliocoverage.role.attribute = attribute role { text } + db.bibliocoverage.attlist = + db.bibliocoverage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliocoverage.coverage.attrib + db.bibliocoverage = + + ## The spatial or temporal coverage of a document + element bibliocoverage { db.bibliocoverage.attlist, db._text } +} +div { + db.legalnotice.role.attribute = attribute role { text } + db.legalnotice.attlist = + db.legalnotice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.legalnotice.info = db._info.title.only + db.legalnotice = + + ## A statement of legal obligations or requirements + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:legalnotice" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element legalnotice { + db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+ + } +} +div { + db.othercredit.class.enumeration = + + ## A copy editor + "copyeditor" + | + ## A graphic designer + "graphicdesigner" + | + ## A production editor + "productioneditor" + | + ## A technical editor + "technicaleditor" + | + ## A translator + "translator" + | + ## An indexer + "indexer" + | + ## A proof-reader + "proofreader" + | + ## A cover designer + "coverdesigner" + | + ## An interior designer + "interiordesigner" + | + ## An illustrator + "illustrator" + | + ## A reviewer + "reviewer" + | + ## A typesetter + "typesetter" + | + ## A converter (a persons responsible for conversion, not an application) + "conversion" + db.othercredit.class-enum.attribute = + + ## Identifies the nature of the contributor + attribute class { db.othercredit.class.enumeration }? + db.othercredit.class-other.attribute = + + ## Identifies the nature of the non-standard contribution + attribute otherclass { xsd:NMTOKEN } + db.othercredit.class-other.attributes = + + ## Identifies the nature of the contributor + attribute class { + + ## Identifies a non-standard contribution + "other" + } + & db.othercredit.class-other.attribute + db.othercredit.class.attribute = + db.othercredit.class-enum.attribute + | db.othercredit.class-other.attributes + db.othercredit.role.attribute = attribute role { text } + db.othercredit.attlist = + db.othercredit.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.othercredit.class.attribute + db.othercredit = + + ## A person or entity, other than an author or editor, credited in a document + element othercredit { + db.othercredit.attlist, db.credit.contentmodel + } +} +div { + db.pagenums.role.attribute = attribute role { text } + db.pagenums.attlist = + db.pagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pagenums = + + ## The numbers of the pages in a book, for use in a bibliographic entry + element pagenums { db.pagenums.attlist, db._text } +} +div { + db.contrib.role.attribute = attribute role { text } + db.contrib.attlist = + db.contrib.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contrib = + + ## A summary of the contributions made to a document by a credited source + element contrib { db.contrib.attlist, db.all.inlines* } +} +div { + db.honorific.role.attribute = attribute role { text } + db.honorific.attlist = + db.honorific.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.honorific = + + ## The title of a person + element honorific { db.honorific.attlist, db._text } +} +div { + db.firstname.role.attribute = attribute role { text } + db.firstname.attlist = + db.firstname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.firstname = + + ## A given name of a person + element firstname { db.firstname.attlist, db._text } +} +div { + db.givenname.role.attribute = attribute role { text } + db.givenname.attlist = + db.givenname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.givenname = + + ## The given name of a person + element givenname { db.givenname.attlist, db._text } +} +div { + db.surname.role.attribute = attribute role { text } + db.surname.attlist = + db.surname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.surname = + + ## An inherited or family name; in western cultures the last name + element surname { db.surname.attlist, db._text } +} +div { + db.lineage.role.attribute = attribute role { text } + db.lineage.attlist = + db.lineage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineage = + + ## The portion of a person's name indicating a relationship to ancestors + element lineage { db.lineage.attlist, db._text } +} +div { + db.othername.role.attribute = attribute role { text } + db.othername.attlist = + db.othername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.othername = + + ## A component of a person's name that is not a first name, surname, or lineage + element othername { db.othername.attlist, db._text } +} +div { + db.printhistory.role.attribute = attribute role { text } + db.printhistory.attlist = + db.printhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.printhistory = + + ## The printing history of a document + element printhistory { db.printhistory.attlist, db.para.blocks+ } +} +div { + db.pubdate.role.attribute = attribute role { text } + db.pubdate.attlist = + db.pubdate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pubdate = + + ## The date of publication of a document + element pubdate { db.pubdate.attlist, db.date.contentmodel } +} +div { + db.publisher.role.attribute = attribute role { text } + db.publisher.attlist = + db.publisher.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publisher = + + ## The publisher of a document + element publisher { + db.publisher.attlist, db.publishername, db.address* + } +} +div { + db.publishername.role.attribute = attribute role { text } + db.publishername.attlist = + db.publishername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publishername = + + ## The name of the publisher of a document + element publishername { db.publishername.attlist, db._text } +} +div { + db.releaseinfo.role.attribute = attribute role { text } + db.releaseinfo.attlist = + db.releaseinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.releaseinfo = + + ## Information about a particular release of a document + element releaseinfo { db.releaseinfo.attlist, db._text } +} +div { + db.revhistory.role.attribute = attribute role { text } + db.revhistory.attlist = + db.revhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revhistory.info = db._info.title.only + db.revhistory = + + ## A history of the revisions to a document + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:revhistory" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element revhistory { + db.revhistory.attlist, db.revhistory.info, db.revision+ + } +} +div { + db.revision.role.attribute = attribute role { text } + db.revision.attlist = + db.revision.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revision = + + ## An entry describing a single revision in the history of the revisions to a document + element revision { + db.revision.attlist, + db.revnumber?, + db.date, + (db.authorinitials | db.author)*, + (db.revremark | db.revdescription)? + } +} +div { + db.revnumber.role.attribute = attribute role { text } + db.revnumber.attlist = + db.revnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revnumber = + + ## A document revision number + element revnumber { db.revnumber.attlist, db._text } +} +div { + db.revremark.role.attribute = attribute role { text } + db.revremark.attlist = + db.revremark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revremark = + + ## A description of a revision to a document + element revremark { db.revremark.attlist, db._text } +} +div { + db.revdescription.role.attribute = attribute role { text } + db.revdescription.attlist = + db.revdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revdescription = + + ## A extended description of a revision to a document + element revdescription { db.revdescription.attlist, db.all.blocks* } +} +div { + db.seriesvolnums.role.attribute = attribute role { text } + db.seriesvolnums.attlist = + db.seriesvolnums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seriesvolnums = + + ## Numbers of the volumes in a series of books + element seriesvolnums { db.seriesvolnums.attlist, db._text } +} +div { + db.volumenum.role.attribute = attribute role { text } + db.volumenum.attlist = + db.volumenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.volumenum = + + ## The volume number of a document in a set (as of books in a set or articles in a journal) + element volumenum { db.volumenum.attlist, db._text } +} +div { + db.issuenum.role.attribute = attribute role { text } + db.issuenum.attlist = + db.issuenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.issuenum = + + ## The number of an issue of a journal + element issuenum { db.issuenum.attlist, db._text } +} +div { + db.meta.role.attribute = attribute role { text } + db.meta.name.attribute = + + ## A name for the metadata element + attribute name { text } + db.meta.content.attribute = + + ## The metadata content + attribute content { text } + db.meta.attlist = + db.meta.name.attribute? + & db.meta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.meta.empty = + + ## A generic metadata element + element meta { db.meta.attlist, db.meta.content.attribute, empty } + db.meta.content = + + ## A generic metadata element + element meta { + db.meta.attlist, + (text | db._any | db.all.inlines | db.all.blocks)* + } + db.meta = db.meta.empty | db.meta.content +} +div { + db.package.role.attribute = attribute role { text } + db.package.attlist = + db.package.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.package = + + ## A software or application package + element package { db.package.attlist, db._text } +} +div { + db.email.role.attribute = attribute role { text } + db.email.attlist = + db.email.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.email = + + ## An email address + element email { db.email.attlist, db._text } +} +div { + db.lineannotation.role.attribute = attribute role { text } + db.lineannotation.attlist = + db.lineannotation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineannotation = + + ## A comment on a line in a verbatim listing + element lineannotation { db.lineannotation.attlist, db._text } +} +div { + db.parameter.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + db.parameter.class.attribute = + + ## Identifies the class of parameter + attribute class { db.parameter.class.enumeration } + db.parameter.role.attribute = attribute role { text } + db.parameter.attlist = + db.parameter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.parameter.class.attribute? + db.parameter = + + ## A value or a symbolic reference to a value + element parameter { db.parameter.attlist, db._text } +} +db.replaceable.inlines = db._text | db.co +div { + db.replaceable.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + | + ## A parameter + "parameter" + db.replaceable.class.attribute = + + ## Identifies the nature of the replaceable text + attribute class { db.replaceable.class.enumeration } + db.replaceable.role.attribute = attribute role { text } + db.replaceable.attlist = + db.replaceable.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.replaceable.class.attribute? + db.replaceable = + + ## Content that may or must be replaced by the user + element replaceable { + db.replaceable.attlist, db.replaceable.inlines* + } +} +div { + db.uri.type.attribute = + + ## Identifies the type of URI specified + attribute type { text }? + db.uri.role.attribute = attribute role { text } + db.uri.attlist = + db.uri.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.uri.type.attribute + db.uri = + + ## A Uniform Resource Identifier + element uri { db.uri.attlist, db._text } +} +div { + db.abbrev.role.attribute = attribute role { text } + db.abbrev.attlist = + db.abbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abbrev = + + ## An abbreviation, especially one followed by a period + element abbrev { + db.abbrev.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.acronym.role.attribute = attribute role { text } + db.acronym.attlist = + db.acronym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.acronym = + + ## An often pronounceable word made from the initial (or selected) letters of a name or phrase + element acronym { + db.acronym.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.citation.role.attribute = attribute role { text } + db.citation.attlist = + db.citation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citation = + + ## An inline bibliographic reference to another published work + element citation { db.citation.attlist, db.all.inlines* } +} +div { + db.citerefentry.role.attribute = attribute role { text } + db.citerefentry.attlist = + db.citerefentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citerefentry = + + ## A citation to a reference page + element citerefentry { + db.citerefentry.attlist, db.refentrytitle, db.manvolnum? + } +} +div { + db.refentrytitle.role.attribute = attribute role { text } + db.refentrytitle.attlist = + db.refentrytitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refentrytitle = + + ## The title of a reference page + element refentrytitle { db.refentrytitle.attlist, db.all.inlines* } +} +div { + db.manvolnum.role.attribute = attribute role { text } + db.manvolnum.attlist = + db.manvolnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.manvolnum = + + ## A reference volume number + element manvolnum { db.manvolnum.attlist, db._text } +} +div { + db.citetitle.pubwork.enumeration = db.pubwork.enumeration + db.citetitle.pubwork-enum.attribute = + + ## Identifies the nature of the publication being cited + attribute pubwork { db.citetitle.pubwork.enumeration } + db.citetitle.pubwork-other.attribute = + + ## Identifies the nature of some other kind of publication being cited + attribute otherpubwork { xsd:NMTOKEN } + db.citetitle.pubwork-other.attributes = + + ## Identifies that this is some other kind of publication being cited + attribute pubwork { + + ## Indicates that the published work is some 'other' kind. + "other" + } + & db.citetitle.pubwork-other.attribute + db.citetitle.pubwork.attribute = + db.citetitle.pubwork-enum.attribute + | db.citetitle.pubwork-other.attributes + db.citetitle.role.attribute = attribute role { text } + db.citetitle.attlist = + db.citetitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.citetitle.pubwork.attribute? + db.citetitle = + + ## The title of a cited work + element citetitle { db.citetitle.attlist, db.all.inlines* } +} +div { + db.emphasis.role.attribute = attribute role { text } + db.emphasis.attlist = + db.emphasis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.emphasis = + + ## Emphasized text + element emphasis { db.emphasis.attlist, db.all.inlines* } +} +div { + db._emphasis = + + ## A limited span of emphasized text + element emphasis { db.emphasis.attlist, db._text } +} +div { + db.foreignphrase.role.attribute = attribute role { text } + db.foreignphrase.attlist = + db.foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.foreignphrase = + + ## A word or phrase in a language other than the primary language of the document + element foreignphrase { + db.foreignphrase.attlist, (text | db.general.inlines)* + } +} +div { + db._foreignphrase.role.attribute = attribute role { text } + db._foreignphrase.attlist = + db._foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db._foreignphrase = + + ## A limited word or phrase in a language other than the primary language of the document + element foreignphrase { db._foreignphrase.attlist, db._text } +} +div { + db.phrase.role.attribute = attribute role { text } + db.phrase.attlist = + db.phrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phrase = + + ## A span of text + element phrase { db.phrase.attlist, db.all.inlines* } +} +div { + db._phrase = + + ## A limited span of text + element phrase { db.phrase.attlist, db._text } +} +div { + db.quote.role.attribute = attribute role { text } + db.quote.attlist = + db.quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.quote = + + ## An inline quotation + element quote { db.quote.attlist, db.all.inlines* } +} +div { + db._quote.role.attribute = attribute role { text } + db._quote.attlist = + db._quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db._quote = + + ## A limited inline quotation + element quote { db._quote.attlist, db._text } +} +div { + db.subscript.role.attribute = attribute role { text } + db.subscript.attlist = + db.subscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subscript = + + ## A subscript (as in H₂O, the molecular formula for water) + element subscript { db.subscript.attlist, db._text } +} +div { + db.superscript.role.attribute = attribute role { text } + db.superscript.attlist = + db.superscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.superscript = + + ## A superscript (as in x², the mathematical notation for x multiplied by itself) + element superscript { db.superscript.attlist, db._text } +} +div { + db.trademark.class.enumeration = + + ## A copyright + "copyright" + | + ## A registered copyright + "registered" + | + ## A service + "service" + | + ## A trademark + "trade" + db.trademark.class.attribute = + + ## Identifies the class of trade mark + attribute class { db.trademark.class.enumeration } + db.trademark.role.attribute = attribute role { text } + db.trademark.attlist = + db.trademark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.trademark.class.attribute? + db.trademark = + + ## A trademark + element trademark { db.trademark.attlist, db._text } +} +div { + db.wordasword.role.attribute = attribute role { text } + db.wordasword.attlist = + db.wordasword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.wordasword = + + ## A word meant specifically as a word and not representing anything else + element wordasword { db.wordasword.attlist, db._text } +} +div { + db.footnoteref.role.attribute = attribute role { text } + db.footnoteref.label.attribute = db.label.attribute + db.footnoteref.attlist = + db.footnoteref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.footnoteref.label.attribute? + db.footnoteref = + + ## A cross reference to a footnote (a footnote mark) + [ + s:pattern [ + s:title [ "Footnote reference type constraint" ] + s:rule [ + context = "db:footnoteref" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on footnoteref must point to a footnote." + ] + ] + ] + ] + element footnoteref { db.footnoteref.attlist, empty } +} +div { + db.xref.role.attribute = attribute role { text } + db.xref.xrefstyle.attribute = db.xrefstyle.attribute + db.xref.endterm.attribute = db.endterm.attribute + db.xref.attlist = + db.xref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.xref.xrefstyle.attribute? + & db.xref.endterm.attribute? + db.xref = + + ## A cross reference to another part of the document + element xref { db.xref.attlist, empty } +} +div { + db.link.role.attribute = attribute role { text } + db.link.xrefstyle.attribute = db.xrefstyle.attribute + db.link.endterm.attribute = db.endterm.attribute + db.link.attlist = + db.link.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.link.xrefstyle.attribute? + & db.link.endterm.attribute? + db.link = + + ## A hypertext link + element link { db.link.attlist, db.all.inlines* } +} +div { + db.olink.role.attribute = attribute role { text } + db.olink.xrefstyle.attribute = db.xrefstyle.attribute + db.olink.localinfo.attribute = + + ## Holds additional information that may be used by the application when resolving the link + attribute localinfo { text } + db.olink.targetdoc.attribute = + + ## Specifies the URI of the document in which the link target appears + attribute targetdoc { xsd:anyURI } + db.olink.targetptr.attribute = + + ## Specifies the location of the link target in the document + attribute targetptr { text } + db.olink.type.attribute = + + ## Identifies application-specific customization of the link behavior + attribute type { text } + db.olink.attlist = + db.common.attributes + & db.olink.targetdoc.attribute? + & db.olink.role.attribute? + & db.olink.xrefstyle.attribute? + & db.olink.localinfo.attribute? + & db.olink.targetptr.attribute? + & db.olink.type.attribute? + db.olink = + + ## A link that addresses its target indirectly + element olink { db.olink.attlist, db.all.inlines* } +} +div { + db.anchor.role.attribute = attribute role { text } + db.anchor.attlist = + db.anchor.role.attribute? & db.common.idreq.attributes + db.anchor = + + ## A spot in the document + element anchor { db.anchor.attlist, empty } +} +div { + db.alt.role.attribute = attribute role { text } + db.alt.attlist = db.alt.role.attribute? & db.common.attributes + db.alt = + + ## A text-only annotation, often used for accessibility + element alt { db.alt.attlist, (text | db.inlinemediaobject)* } +} +div { + db.formalgroup.fgstyle.attribute = + + ## Holds style of formalgroup - this can be used to specify desired layout and positioning of subfigures + attribute fgstyle { text } + db.formalgroup.role.attribute = attribute role { text } + db.formalgroup.pgwide.attribute = db.pgwide.attribute + db.formalgroup.floatstyle.attribute = db.floatstyle.attribute + db.formalgroup.attlist = + db.formalgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.formalgroup.floatstyle.attribute? + & db.formalgroup.pgwide.attribute? + & db.formalgroup.fgstyle.attribute? + db.formalgroup.info = db._info.title.onlyreq + db.formalgroup = + + ## A group of formal objects, for example subfigures + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:formalgroup" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element formalgroup { + db.formalgroup.attlist, + db.formalgroup.info, + (db.figure+ | db.table+ | db.example+ | db.equation+) + } +} +db.status.attribute = + + ## Identifies the editorial or publication status of the element on which it occurs + attribute status { text } +db.toplevel.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | (db.sect1+, db.simplesect*) + | db.refentry+ + | ((db.section | db.xi.include)+ | (db.simplesect | db.xi.include)+) + | (db.refentry | db.xi.include)+ + | (db.refsect1 | db.xi.include)+ + | (db.sect1 | db.xi.include)+ +db.toplevel.blocks.or.sections = + (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections +db.recursive.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | db.refentry+ + | ((db.section | db.xi.include)+ | (db.simplesect | db.xi.include)+) + | (db.refentry | db.xi.include)+ + | (db.refsect1 | db.xi.include)+ +db.recursive.blocks.or.sections = + (db.all.blocks+, db.recursive.sections?) | db.recursive.sections +db.divisions = db.part | db.reference | db.xi.include +db.components = + (db.dedication + | db.acknowledgements + | db.preface + | db.chapter + | db.appendix + | db.article + | db.colophon) + | db.xi.include +db.navigation.components = + notAllowed | db.glossary | db.bibliography | db.index | db.toc +db.component.contentmodel = + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* +db.setindex.components = notAllowed | db.setindex +db.toc.components = notAllowed | db.toc +db.set.components = (db.set | db.book | db.article) | db.xi.include +div { + db.set.status.attribute = db.status.attribute + db.set.role.attribute = attribute role { text } + db.set.attlist = + db.set.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.set.status.attribute? + db.set.info = db._info.title.req + db.set = + + ## A collection of books + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:set" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element set { + db.set.attlist, + db.set.info, + db.toc.components?, + db.set.components+, + db.setindex.components? + } +} +db.book.components = + (db.navigation.components | db.components | db.divisions)* | db.topic* +div { + db.book.status.attribute = db.status.attribute + db.book.role.attribute = attribute role { text } + db.book.attlist = + db.book.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.book.status.attribute? + db.book.info = db._info + db.book = + + ## A book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:book" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element book { db.book.attlist, db.book.info, db.book.components } +} +div { + db.dedication.status.attribute = db.status.attribute + db.dedication.role.attribute = attribute role { text } + db.dedication.attlist = + db.dedication.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.dedication.status.attribute? + db.dedication.info = db._info + db.dedication = + + ## The dedication of a book or other component + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:dedication" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element dedication { + db.dedication.attlist, db.dedication.info, db.all.blocks+ + } +} +div { + db.acknowledgements.status.attribute = db.status.attribute + db.acknowledgements.role.attribute = attribute role { text } + db.acknowledgements.attlist = + db.acknowledgements.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.acknowledgements.status.attribute? + db.acknowledgements.info = db._info + db.acknowledgements = + + ## Acknowledgements of a book or other component + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:acknowledgements" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element acknowledgements { + db.acknowledgements.attlist, + db.acknowledgements.info, + db.all.blocks+ + } +} +div { + db.colophon.status.attribute = db.status.attribute + db.colophon.role.attribute = attribute role { text } + db.colophon.attlist = + db.colophon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.colophon.status.attribute? + db.colophon.info = db._info + db.colophon = + + ## Text at the back of a book describing facts about its production + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:colophon" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element colophon { + db.colophon.attlist, + db.colophon.info, + ((db.all.blocks+, db.simplesect*) + | (db.all.blocks*, db.simplesect+)) + } +} +db.appendix.contentmodel = db.component.contentmodel | db.topic+ +div { + db.appendix.status.attribute = db.status.attribute + db.appendix.role.attribute = attribute role { text } + db.appendix.attlist = + db.appendix.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.appendix.status.attribute? + db.appendix.info = db._info.title.req + db.appendix = + + ## An appendix in a book or article + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:appendix" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element appendix { + db.appendix.attlist, db.appendix.info, db.appendix.contentmodel? + } +} +db.chapter.contentmodel = db.component.contentmodel | db.topic+ +div { + db.chapter.status.attribute = db.status.attribute + db.chapter.role.attribute = attribute role { text } + db.chapter.attlist = + db.chapter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.chapter.status.attribute? + db.chapter.info = db._info.title.req + db.chapter = + + ## A chapter, as of a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:chapter" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element chapter { + db.chapter.attlist, db.chapter.info, db.chapter.contentmodel? + } +} +db.part.components = + (db.navigation.components | db.components) + | (db.refentry | db.reference) + | db.xi.include +db.part.contentmodel = db.part.components+ | db.topic+ +div { + db.part.status.attribute = db.status.attribute + db.part.role.attribute = attribute role { text } + db.part.attlist = + db.part.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.part.status.attribute? + db.part.info = db._info.title.req + db.part = + + ## A division in a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:part" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element part { + db.part.attlist, + db.part.info, + db.partintro?, + db.part.contentmodel? + } +} +div { + db.preface.status.attribute = db.status.attribute + db.preface.role.attribute = attribute role { text } + db.preface.attlist = + db.preface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.preface.status.attribute? + db.preface.info = db._info.title.req + db.preface = + + ## Introductory matter preceding the first chapter of a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:preface" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element preface { + db.preface.attlist, db.preface.info, db.component.contentmodel? + } +} +div { + db.partintro.status.attribute = db.status.attribute + db.partintro.role.attribute = attribute role { text } + db.partintro.attlist = + db.partintro.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.partintro.status.attribute? + db.partintro.info = db._info + db.partintro = + + ## An introduction to the contents of a part + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:partintro" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element partintro { + db.partintro.attlist, + db.partintro.info, + db.toplevel.blocks.or.sections? + } +} +div { + db.section.status.attribute = db.status.attribute + db.section.class.enumeration = + + ## A section of legal obligations or requirements + "legal" + db.section.class-enum.attribute = + + ## Identifies the nature of the section + attribute class { db.section.class.enumeration } + db.section.class-other.attribute = + + ## Identifies a non-standard section class + attribute otherclass { xsd:NMTOKEN } + db.section.class-other.attributes = + + ## Indicates that a non-standard section class is applied + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.section.class-other.attribute + db.section.class.attribute = + db.section.class-enum.attribute | db.section.class-other.attributes + db.section.role.attribute = attribute role { text } + db.section.attlist = + db.section.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.section.status.attribute? + & db.section.class.attribute? + db.section.info = db._info.title.req + db.section = + + ## A recursive section + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:section" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element section { + db.section.attlist, + db.section.info, + db.navigation.components*, + db.recursive.blocks.or.sections?, + db.navigation.components* + } +} +div { + db.simplesect.status.attribute = db.status.attribute + db.simplesect.role.attribute = attribute role { text } + db.simplesect.attlist = + db.simplesect.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.simplesect.status.attribute? + db.simplesect.info = db._info.title.req + db.simplesect = + + ## A section of a document with no subdivisions + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:simplesect" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element simplesect { + db.simplesect.attlist, db.simplesect.info, db.all.blocks* + } +} +db.article.components = db.toplevel.sections +db.article.navcomponents = + db.navigation.components + | db.acknowledgements + | db.dedication + | db.appendix + | db.colophon +div { + db.article.status.attribute = db.status.attribute + db.article.class.enumeration = + + ## A collection of frequently asked questions. + "faq" + | + ## An article in a journal or other periodical. + "journalarticle" + | + ## A description of a product. + "productsheet" + | + ## A specification. + "specification" + | + ## A technical report. + "techreport" + | + ## A white paper. + "whitepaper" + db.article.class-enum.attribute = + + ## Identifies the nature of the article + attribute class { db.article.class.enumeration } + db.article.class-other.attribute = + + ## Identifies the nature of the non-standard article + attribute otherclass { xsd:NMTOKEN } + db.article.class-other.attributes = + + ## Identifies the nature of the article + attribute class { + + ## Indicates that the identifier is some 'other' kind. + "other" + } + & db.article.class-other.attribute + db.article.class.attribute = + db.article.class-enum.attribute | db.article.class-other.attributes + db.article.role.attribute = attribute role { text } + db.article.attlist = + db.article.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.article.status.attribute? + & db.article.class.attribute? + db.article.info = db._info.title.req + db.article = + + ## An article + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:article" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element article { + db.article.attlist, + db.article.info, + db.article.navcomponents*, + ((db.all.blocks+, db.article.components?) + | db.article.components), + db.article.navcomponents* + } +} +db.annotations.attribute = + + ## Identifies one or more annotations that apply to this element + attribute annotations { text } +div { + db.annotation.role.attribute = attribute role { text } + db.annotation.annotates.attribute = + + ## Identifies one or more elements to which this annotation applies + attribute annotates { text } + db.annotation.attlist = + db.annotation.role.attribute? + & db.annotation.annotates.attribute? + & db.common.attributes + db.annotation.info = db._info.title.only + db.annotation = + + ## An annotation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:annotation" + s:assert [ + test = "not(.//db:annotation)" + "annotation must not occur among the children or descendants of annotation" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:annotation" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element annotation { + db.annotation.attlist, db.annotation.info, db.all.blocks+ + } +} +db.xlink.extended.type.attribute = + + ## Identifies the XLink extended link type + [ + s:pattern [ + s:title [ "XLink extended placement" ] + s:rule [ + context = "*[@xlink:type='extended']" + s:assert [ + test = "not(parent::*[@xlink:type='extended'])" + "An XLink extended type element may not occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink extended link type + "extended" + } +db.xlink.locator.type.attribute = + + ## Identifies the XLink locator link type + [ + s:pattern [ + s:title [ "XLink locator placement" ] + s:rule [ + context = "*[@xlink:type='locator']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink locator type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink locator link type + "locator" + } +db.xlink.arc.type.attribute = + + ## Identifies the XLink arc link type + [ + s:pattern [ + s:title [ "XLink arc placement" ] + s:rule [ + context = "*[@xlink:type='arc']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink arc type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink arc link type + "arc" + } +db.xlink.resource.type.attribute = + + ## Identifies the XLink resource link type + [ + s:pattern [ + s:title [ "XLink resource placement" ] + s:rule [ + context = "*[@xlink:type='resource']" + s:assert [ + test = "parent::*[@xlink:type='extended']" + "An XLink resource type element must occur as the direct child of an XLink extended type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink resource link type + "resource" + } +db.xlink.title.type.attribute = + + ## Identifies the XLink title link type + [ + s:pattern [ + s:title [ "XLink title placement" ] + s:rule [ + context = "*[@xlink:type='title']" + s:assert [ + test = + "parent::*[@xlink:type='extended'] or parent::*[@xlink:type='locator'] or parent::*[@xlink:type='arc']" + "An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element." + ] + ] + ] + ] + attribute xlink:type { + + ## An XLink title link type + "title" + } +db.xlink.extended.link.attributes = + db.xlink.extended.type.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? +db.xlink.locator.link.attributes = + db.xlink.locator.type.attribute + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? +db.xlink.arc.link.attributes = + db.xlink.arc.type.attribute + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? +db.xlink.resource.link.attributes = + db.xlink.resource.type.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? +db.xlink.title.link.attributes = db.xlink.title.type.attribute +db.xlink.from.attribute = + + ## Specifies the XLink traversal-from + attribute xlink:from { xsd:NMTOKEN } +db.xlink.label.attribute = + + ## Specifies the XLink label + attribute xlink:label { xsd:NMTOKEN } +db.xlink.to.attribute = + + ## Specifies the XLink traversal-to + attribute xlink:to { xsd:NMTOKEN } +div { + db.extendedlink.role.attribute = attribute role { text } + db.extendedlink.attlist = + db.extendedlink.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "extended" ] + attribute xlink:type { + + ## An XLink extended link + "extended" + }? + & db.xlink.role.attribute? + & db.xlink.title.attribute? + db.extendedlink = + + ## An XLink extended link + element extendedlink { + db.extendedlink.attlist, (db.locator | db.arc | db.link)+ + } +} +div { + db.locator.role.attribute = attribute role { text } + db.locator.attlist = + db.locator.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "locator" ] + attribute xlink:type { + + ## An XLink locator link + "locator" + }? + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? + db.locator = + + ## An XLink locator in an extendedlink + element locator { db.locator.attlist, empty } +} +div { + db.arc.role.attribute = attribute role { text } + db.arc.attlist = + db.arc.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "arc" ] + attribute xlink:type { + + ## An XLink arc link + "arc" + }? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? + db.arc = + + ## An XLink arc in an extendedlink + element arc { db.arc.attlist, empty } +} +db.sect1.sections = + ((db.sect2+, db.simplesect*) | db.simplesect+) + | db.refentry+ + | (db.sect2 | db.xi.include)+ +div { + db.sect1.status.attribute = db.status.attribute + db.sect1.class.attribute = db.section.class.attribute + db.sect1.role.attribute = attribute role { text } + db.sect1.attlist = + db.sect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect1.status.attribute? + & db.sect1.class.attribute? + db.sect1.info = db._info.title.req + db.sect1 = + + ## A top-level section of document + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect1" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect1 { + db.sect1.attlist, + db.sect1.info, + db.navigation.components*, + ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections)?, + db.navigation.components* + } +} +db.sect2.sections = + ((db.sect3+, db.simplesect*) | db.simplesect+) + | db.refentry+ + | (db.sect3 | db.xi.include)+ +div { + db.sect2.status.attribute = db.status.attribute + db.sect2.class.attribute = db.section.class.attribute + db.sect2.role.attribute = attribute role { text } + db.sect2.attlist = + db.sect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect2.status.attribute? + & db.sect2.class.attribute? + db.sect2.info = db._info.title.req + db.sect2 = + + ## A subsection within a sect1 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect2" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect2 { + db.sect2.attlist, + db.sect2.info, + db.navigation.components*, + ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections)?, + db.navigation.components* + } +} +db.sect3.sections = + ((db.sect4+, db.simplesect*) | db.simplesect+) + | db.refentry+ + | (db.sect4 | db.xi.include)+ +div { + db.sect3.status.attribute = db.status.attribute + db.sect3.class.attribute = db.section.class.attribute + db.sect3.role.attribute = attribute role { text } + db.sect3.attlist = + db.sect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect3.status.attribute? + & db.sect3.class.attribute? + db.sect3.info = db._info.title.req + db.sect3 = + + ## A subsection within a sect2 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect3" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect3 { + db.sect3.attlist, + db.sect3.info, + db.navigation.components*, + ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections)?, + db.navigation.components* + } +} +db.sect4.sections = + ((db.sect5+, db.simplesect*) | db.simplesect+) + | db.refentry+ + | (db.sect5 | db.xi.include)+ +div { + db.sect4.status.attribute = db.status.attribute + db.sect4.class.attribute = db.section.class.attribute + db.sect4.role.attribute = attribute role { text } + db.sect4.attlist = + db.sect4.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect4.status.attribute? + & db.sect4.class.attribute? + db.sect4.info = db._info.title.req + db.sect4 = + + ## A subsection within a sect3 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect4" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect4 { + db.sect4.attlist, + db.sect4.info, + db.navigation.components*, + ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections)?, + db.navigation.components* + } +} +db.sect5.sections = + db.simplesect+ | db.refentry+ | (db.simplesect | db.xi.include)+ +div { + db.sect5.status.attribute = db.status.attribute + db.sect5.class.attribute = db.section.class.attribute + db.sect5.role.attribute = attribute role { text } + db.sect5.attlist = + db.sect5.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect5.status.attribute? + & db.sect5.class.attribute? + db.sect5.info = db._info.title.req + db.sect5 = + + ## A subsection within a sect4 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:sect5" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element sect5 { + db.sect5.attlist, + db.sect5.info, + db.navigation.components*, + ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections)?, + db.navigation.components* + } +} +db.toplevel.refsection = + db.refsection+ + | db.refsect1+ + | (db.refentry | db.xi.include)+ + | (db.refsect1 | db.xi.include)+ +db.secondlevel.refsection = + db.refsection+ + | db.refsect2+ + | (db.refentry | db.xi.include)+ + | (db.refsect2 | db.xi.include)+ +db.reference.components = db.refentry | db.xi.include +div { + db.reference.status.attribute = db.status.attribute + db.reference.role.attribute = attribute role { text } + db.reference.attlist = + db.reference.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.reference.status.attribute? + & db.label.attribute? + db.reference.info = db._info.title.req + db.reference = + + ## A collection of reference entries + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:reference" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element reference { + db.reference.attlist, + db.reference.info, + db.partintro?, + db.reference.components* + } +} +div { + db.refentry.status.attribute = db.status.attribute + db.refentry.role.attribute = attribute role { text } + db.refentry.attlist = + db.refentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refentry.status.attribute? + & db.label.attribute? + db.refentry.info = db._info.title.forbidden + db.refentry = + + ## A reference page (originally a UNIX man-style reference page) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refentry" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refentry { + db.refentry.attlist, + db.indexterm*, + db.refentry.info, + db.refmeta?, + db.refnamediv+, + db.refsynopsisdiv?, + db.toplevel.refsection + } +} +div { + db.refmeta.role.attribute = attribute role { text } + db.refmeta.attlist = + db.refmeta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refmeta = + + ## Meta-information for a reference entry + element refmeta { + db.refmeta.attlist, + db.indexterm*, + db.refentrytitle, + db.manvolnum?, + db.refmiscinfo*, + db.indexterm* + } +} +db.refmiscinfo.class.enumeration = + + ## The name of the software product or component to which this topic applies + "source" + | + ## The version of the software product or component to which this topic applies + "version" + | + ## The section title of the reference page (e.g., User Commands) + "manual" + | + ## The section title of the reference page (believed synonymous with "manual" but in wide use) + "sectdesc" + | + ## The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + "software" +db.refmiscinfo.class-enum.attribute = + + ## Identifies the kind of miscellaneous information + attribute class { db.refmiscinfo.class.enumeration }? +db.refmiscinfo.class-other.attribute = + + ## Identifies the nature of non-standard miscellaneous information + attribute otherclass { text } +db.refmiscinfo.class-other.attributes = + + ## Identifies the kind of miscellaneious information + attribute class { + + ## Indicates that the information is some 'other' kind. + "other" + } + & db.refmiscinfo.class-other.attribute +db.refmiscinfo.class.attribute = + db.refmiscinfo.class-enum.attribute + | db.refmiscinfo.class-other.attributes +div { + db.refmiscinfo.role.attribute = attribute role { text } + db.refmiscinfo.attlist = + db.refmiscinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refmiscinfo.class.attribute? + db.refmiscinfo = + + ## Meta-information for a reference entry other than the title and volume number + element refmiscinfo { db.refmiscinfo.attlist, db._text } +} +div { + db.refnamediv.role.attribute = attribute role { text } + db.refnamediv.attlist = + db.refnamediv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refnamediv = + + ## The name, purpose, and classification of a reference page + element refnamediv { + db.refnamediv.attlist, + db.refdescriptor?, + db.refname+, + db.refpurpose, + db.refclass* + } +} +div { + db.refdescriptor.role.attribute = attribute role { text } + db.refdescriptor.attlist = + db.refdescriptor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refdescriptor = + + ## A description of the topic of a reference page + element refdescriptor { db.refdescriptor.attlist, db.all.inlines* } +} +div { + db.refname.role.attribute = attribute role { text } + db.refname.attlist = + db.refname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refname = + + ## The name of (one of) the subject(s) of a reference page + element refname { db.refname.attlist, db.all.inlines* } +} +div { + db.refpurpose.role.attribute = attribute role { text } + db.refpurpose.attlist = + db.refpurpose.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refpurpose = + + ## A short (one sentence) synopsis of the topic of a reference page + element refpurpose { db.refpurpose.attlist, db.all.inlines* } +} +div { + db.refclass.role.attribute = attribute role { text } + db.refclass.attlist = + db.refclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refclass = + + ## The scope or other indication of applicability of a reference entry + element refclass { db.refclass.attlist, (text | db.application)* } +} +div { + db.refsynopsisdiv.role.attribute = attribute role { text } + db.refsynopsisdiv.attlist = + db.refsynopsisdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refsynopsisdiv.info = db._info + db.refsynopsisdiv = + + ## A syntactic synopsis of the subject of the reference page + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsynopsisdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsynopsisdiv { + db.refsynopsisdiv.attlist, + db.refsynopsisdiv.info, + ((db.all.blocks+, db.secondlevel.refsection?) + | db.secondlevel.refsection) + } +} +div { + db.refsection.status.attribute = db.status.attribute + db.refsection.role.attribute = attribute role { text } + db.refsection.attlist = + db.refsection.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refsection.status.attribute? + & db.label.attribute? + db.refsection.info = db._info.title.req + db.refsection = + + ## A recursive section in a refentry + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsection" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsection { + db.refsection.attlist, + db.refsection.info, + ((db.all.blocks+, db.refsection*) | db.refsection+) + } +} +db.refsect1.sections = db.refsect2+ +div { + db.refsect1.status.attribute = db.status.attribute + db.refsect1.role.attribute = attribute role { text } + db.refsect1.attlist = + db.refsect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect1.status.attribute? + db.refsect1.info = db._info.title.req + db.refsect1 = + + ## A major subsection of a reference entry + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsect1" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsect1 { + db.refsect1.attlist, + db.refsect1.info, + ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections) + } +} +db.refsect2.sections = db.refsect3+ +div { + db.refsect2.status.attribute = db.status.attribute + db.refsect2.role.attribute = attribute role { text } + db.refsect2.attlist = + db.refsect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect2.status.attribute? + db.refsect2.info = db._info.title.req + db.refsect2 = + + ## A subsection of a refsect1 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsect2" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsect2 { + db.refsect2.attlist, + db.refsect2.info, + ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections) + } +} +div { + db.refsect3.status.attribute = db.status.attribute + db.refsect3.role.attribute = attribute role { text } + db.refsect3.attlist = + db.refsect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect3.status.attribute? + db.refsect3.info = db._info.title.req + db.refsect3 = + + ## A subsection of a refsect2 + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:refsect3" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element refsect3 { + db.refsect3.attlist, db.refsect3.info, db.all.blocks+ + } +} +db.glossary.inlines = + db.firstterm | db.glossterm | db._firstterm | db._glossterm +db.baseform.attribute = + + ## Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + attribute baseform { text }? +div { + db.glosslist.role.attribute = attribute role { text } + db.glosslist.attlist = + db.glosslist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.glosslist.info = db._info.title.only + db.glosslist = + + ## A wrapper for a list of glossary entries + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:glosslist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element glosslist { + db.glosslist.attlist, + db.glosslist.info?, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.glossentry.role.attribute = attribute role { text } + db.glossentry.sortas.attribute = + + ## Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + attribute sortas { text } + db.glossentry.attlist = + db.glossentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossentry.sortas.attribute? + db.glossentry = + + ## An entry in a glossary or glosslist + element glossentry { + db.glossentry.attlist, + db.glossterm, + db.acronym?, + db.abbrev?, + db.indexterm*, + (db.glosssee | db.glossdef+) + } +} +div { + db.glossdef.role.attribute = attribute role { text } + db.glossdef.subject.attribute = + + ## Specifies a list of keywords for the definition + attribute subject { text } + db.glossdef.attlist = + db.glossdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossdef.subject.attribute? + db.glossdef = + + ## A definition in a glossentry + element glossdef { + db.glossdef.attlist, db.all.blocks+, db.glossseealso* + } +} +div { + db.glosssee.role.attribute = attribute role { text } + db.glosssee.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glosssee.attlist = + db.glosssee.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glosssee.otherterm.attribute? + db.glosssee = + + ## A cross-reference from one glossentry + ## to another + [ + s:pattern [ + s:title [ "Glosssary 'see' type constraint" ] + s:rule [ + context = "db:glosssee[@otherterm]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glosssee must point to a glossentry." + ] + ] + ] + ] + element glosssee { db.glosssee.attlist, db.all.inlines* } +} +div { + db.glossseealso.role.attribute = attribute role { text } + db.glossseealso.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glossseealso.attlist = + db.glossseealso.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossseealso.otherterm.attribute? + db.glossseealso = + + ## A cross-reference from one glossentry to another + [ + s:pattern [ + s:title [ "Glossary 'seealso' type constraint" ] + s:rule [ + context = "db:glossseealso[@otherterm]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glossseealso must point to a glossentry." + ] + ] + ] + ] + element glossseealso { db.glossseealso.attlist, db.all.inlines* } +} +div { + db.firstterm.role.attribute = attribute role { text } + db.firstterm.attlist = + db.firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.firstterm = + + ## The first occurrence of a term + [ + s:pattern [ + s:title [ "Glossary 'firstterm' type constraint" ] + s:rule [ + context = "db:firstterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + ] + ] + ] + element firstterm { db.firstterm.attlist, db.all.inlines* } +} +div { + db._firstterm.role.attribute = attribute role { text } + db._firstterm.attlist = + db._firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db._firstterm = + + ## The first occurrence of a term, with limited content + [ + s:pattern [ + s:title [ "Glossary 'firstterm' type constraint" ] + s:rule [ + context = "db:firstterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + ] + ] + ] + element firstterm { db._firstterm.attlist, db._text } +} +div { + db.glossterm.role.attribute = attribute role { text } + db.glossterm.attlist = + db.glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.glossterm = + + ## A glossary term + [ + s:pattern [ + s:title [ "Glossary 'glossterm' type constraint" ] + s:rule [ + context = "db:glossterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + ] + ] + ] + element glossterm { db.glossterm.attlist, db.all.inlines* } +} +div { + db._glossterm.role.attribute = attribute role { text } + db._glossterm.attlist = + db._glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db._glossterm = + + ## A glossary term + [ + s:pattern [ + s:title [ "Glossary 'glossterm' type constraint" ] + s:rule [ + context = "db:glossterm[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + ] + ] + ] + element glossterm { db._glossterm.attlist, db._text } +} +div { + db.glossary.status.attribute = db.status.attribute + db.glossary.role.attribute = attribute role { text } + db.glossary.attlist = + db.glossary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossary.status.attribute? + db.glossary.info = db._info + db.glossary = + + ## A glossary + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:glossary" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element glossary { + db.glossary.attlist, + db.glossary.info, + db.all.blocks*, + (db.glossdiv* | db.glossentry*), + db.bibliography? + } +} +div { + db.glossdiv.status.attribute = db.status.attribute + db.glossdiv.role.attribute = attribute role { text } + db.glossdiv.attlist = + db.glossdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossdiv.status.attribute? + db.glossdiv.info = db._info.title.req + db.glossdiv = + + ## A division in a glossary + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:glossdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element glossdiv { + db.glossdiv.attlist, + db.glossdiv.info, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.termdef.role.attribute = attribute role { text } + db.termdef.attlist = + db.termdef.role.attribute? + & db.glossentry.sortas.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.termdef = + + ## An inline definition of a term + [ + s:pattern [ + s:title [ "Glossary term definition constraint" ] + s:rule [ + context = "db:termdef" + s:assert [ + test = "count(db:firstterm) = 1" + "A termdef must contain exactly one firstterm" + ] + ] + ] + ] + element termdef { db.termdef.attlist, db.all.inlines* } +} +db.relation.attribute = + + ## Identifies the relationship between the bibliographic elemnts + attribute relation { text } +div { + db.biblioentry.role.attribute = attribute role { text } + db.biblioentry.pubwork.attribute = db.biblio.pubwork.attribute + db.biblioentry.attlist = + db.biblioentry.role.attribute? + & db.biblioentry.pubwork.attribute? + & db.common.attributes + & db.common.linking.attributes + db.biblioentry = + + ## A raw entry in a bibliography + element biblioentry { + db.biblioentry.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomixed.role.attribute = attribute role { text } + db.bibliomixed.pubwork.attribute = db.biblio.pubwork.attribute + db.bibliomixed.attlist = + db.bibliomixed.role.attribute? + & db.bibliomixed.pubwork.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomixed = + + ## A cooked entry in a bibliography + element bibliomixed { + db.bibliomixed.attlist, + ((db._text + | db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)* + | (db._text + | db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)*) + } +} +div { + db.biblioset.relation.attribute = db.relation.attribute + db.biblioset.role.attribute = attribute role { text } + db.biblioset.attlist = + db.biblioset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblioset.relation.attribute? + db.biblioset = + + ## A raw container for related bibliographic information + element biblioset { + db.biblioset.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomset.relation.attribute = db.relation.attribute + db.bibliomset.role.attribute = attribute role { text } + db.bibliomset.attlist = + db.bibliomset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliomset.relation.attribute? + db.bibliomset = + + ## A cooked container for related bibliographic information + element bibliomset { + db.bibliomset.attlist, + ((db._text + | db.honorific + | db.firstname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)* + | (db._text + | db.honorific + | db.givenname + | db.surname + | db.lineage + | db.othername + | db.bibliographic.elements)*) + } +} +div { + db.bibliomisc.role.attribute = attribute role { text } + db.bibliomisc.attlist = + db.bibliomisc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomisc = + + ## Untyped bibliographic information + element bibliomisc { db.bibliomisc.attlist, db._text } +} +div { + db.bibliography.status.attrib = db.status.attribute + db.bibliography.role.attribute = attribute role { text } + db.bibliography.attlist = + db.bibliography.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliography.status.attrib? + db.bibliography.info = db._info + db.bibliography = + + ## A bibliography + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:bibliography" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element bibliography { + db.bibliography.attlist, + db.bibliography.info, + db.all.blocks*, + (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+) + } +} +div { + db.bibliodiv.status.attrib = db.status.attribute + db.bibliodiv.role.attribute = attribute role { text } + db.bibliodiv.attlist = + db.bibliodiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliodiv.status.attrib? + db.bibliodiv.info = db._info.title.req + db.bibliodiv = + + ## A section of a bibliography + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:bibliodiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element bibliodiv { + db.bibliodiv.attlist, + db.bibliodiv.info, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.bibliolist.role.attribute = attribute role { text } + db.bibliolist.attlist = + db.bibliolist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliolist.info = db._info.title.only + db.bibliolist = + + ## A wrapper for a list of bibliography entries + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:bibliolist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element bibliolist { + db.bibliolist.attlist, + db.bibliolist.info?, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.biblioref.role.attribute = attribute role { text } + db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute + db.biblioref.endterm.attribute = db.endterm.attribute + db.biblioref.units.attribute = + + ## The units (for example, pages) used to identify the beginning and ending of a reference. + attribute units { xsd:token } + db.biblioref.begin.attribute = + + ## Identifies the beginning of a reference; the location within the work that is being referenced. + attribute begin { xsd:token } + db.biblioref.end.attribute = + + ## Identifies the end of a reference. + attribute end { xsd:token } + db.biblioref.attlist = + db.biblioref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.biblioref.xrefstyle.attribute? + & db.biblioref.endterm.attribute? + & db.biblioref.units.attribute? + & db.biblioref.begin.attribute? + & db.biblioref.end.attribute? + db.biblioref = + + ## A cross-reference to a bibliographic entry + element biblioref { db.biblioref.attlist, empty } +} +db.significance.enumeration = + + ## Normal + "normal" + | + ## Preferred + "preferred" +db.significance.attribute = + + ## Specifies the significance of the term + attribute significance { db.significance.enumeration } +db.zone.attribute = + + ## Specifies the IDs of the elements to which this term applies + attribute zone { xsd:IDREFS } +db.indexterm.pagenum.attribute = + + ## Indicates the page on which this index term occurs in some version of the printed document + attribute pagenum { text } +db.scope.enumeration = + + ## All indexes + "all" + | + ## The global index (as for a combined index of a set of books) + "global" + | + ## The local index (the index for this document only) + "local" +db.scope.attribute = + + ## Specifies the scope of the index term + attribute scope { db.scope.enumeration } +db.sortas.attribute = + + ## Specifies the string by which the term is to be sorted; if unspecified, the term content is used + attribute sortas { text } +db.index.type.attribute = + + ## Specifies the target index for this term + attribute type { text } +div { + db.itermset.role.attribute = attribute role { text } + db.itermset.attlist = + db.itermset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.itermset = + + ## A set of index terms in the meta-information of a document + element itermset { db.itermset.attlist, db.indexterm.singular+ } +} +db.indexterm.contentmodel = + (db.primary, + (db.secondary, + ((db.tertiary, (db.see | db.seealso+)?)? + | (db.see | db.seealso+)?)?)?)?, + (db.see | db.seealso+)? +div { + db.indexterm.singular.role.attribute = attribute role { text } + db.indexterm.singular.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## A singular index term + "singular" + } + db.indexterm.singular.attlist = + db.indexterm.singular.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.singular.class.attribute? + db.indexterm.singular = + + ## A wrapper for an indexed term + element indexterm { + db.indexterm.singular.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.startofrange.role.attribute = attribute role { text } + db.indexterm.startofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The start of a range + "startofrange" + } + db.indexterm.startofrange.attlist = + db.indexterm.startofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.startofrange.class.attribute + db.indexterm.startofrange = + + ## A wrapper for an indexed term that covers a range + element indexterm { + db.indexterm.startofrange.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.endofrange.role.attribute = attribute role { text } + db.indexterm.endofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The end of a range + "endofrange" + } + db.indexterm.endofrange.startref.attribute = + + ## Points to the start of the range + attribute startref { xsd:IDREF } + db.indexterm.endofrange.attlist = + db.indexterm.endofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.indexterm.endofrange.class.attribute + & db.indexterm.endofrange.startref.attribute + db.indexterm.endofrange = + + ## Identifies the end of a range associated with an indexed term + [ + s:pattern [ + s:title [ "Indexterm 'startref' type constraint" ] + s:rule [ + context = "db:indexterm[@startref]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@startref]) = 'indexterm' and namespace-uri(//*[@xml:id=current()/@startref]) = 'http://docbook.org/ns/docbook'" + "@startref on indexterm must point to an indexterm." + ] + s:assert [ + test = + "//*[@xml:id=current()/@startref]/@class='startofrange'" + "@startref on indexterm must point to a startofrange indexterm." + ] + ] + ] + ] + element indexterm { db.indexterm.endofrange.attlist, empty } +} +div { + db.indexterm = + db.indexterm.singular + | db.indexterm.startofrange + | db.indexterm.endofrange +} +div { + db.primary.role.attribute = attribute role { text } + db.primary.attlist = + db.primary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.primary = + + ## The primary word or phrase under which an index term should be sorted + element primary { db.primary.attlist, db.all.inlines* } +} +div { + db.secondary.role.attribute = attribute role { text } + db.secondary.attlist = + db.secondary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.secondary = + + ## A secondary word or phrase in an index term + element secondary { db.secondary.attlist, db.all.inlines* } +} +div { + db.tertiary.role.attribute = attribute role { text } + db.tertiary.attlist = + db.tertiary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.tertiary = + + ## A tertiary word or phrase in an index term + element tertiary { db.tertiary.attlist, db.all.inlines* } +} +div { + db.see.role.attribute = attribute role { text } + db.see.class.attribute = + + ## Identifies the class of 'see' + attribute class { + + ## Normal + "normal" + | + ## See 'under' + "under" + } + db.see.attlist = + db.see.role.attribute? + & db.see.class.attribute? + & db.common.attributes + & db.common.linking.attributes + db.see = + + ## Part of an index term directing the reader instead to another entry in the index + element see { db.see.attlist, db.all.inlines* } +} +div { + db.seealso.role.attribute = attribute role { text } + db.seealso.class.attribute = + + ## Identifies the class of 'seealso' + attribute class { + + ## Normal + "normal" + | + ## See 'under' + "under" + } + db.seealso.attlist = + db.seealso.role.attribute? + & db.seealso.class.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seealso = + + ## Part of an index term directing the reader also to another entry in the index + element seealso { db.seealso.attlist, db.all.inlines* } +} +div { + db.index.status.attribute = db.status.attribute + db.index.role.attribute = attribute role { text } + db.index.attlist = + db.index.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.index.status.attribute? + & db.index.type.attribute? + db.index.info = db._info + # Yes, db.indexdiv* and db.indexentry*; that way an is valid. + # Authors can use an empty index to indicate where a generated index should + # appear. + db.index = + + ## An index to a book or part of a book + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:index" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element index { + db.index.attlist, + db.index.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry* | db.segmentedlist) + } +} +div { + db.setindex.status.attribute = db.status.attribute + db.setindex.role.attribute = attribute role { text } + db.setindex.attlist = + db.setindex.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.setindex.status.attribute? + & db.index.type.attribute? + db.setindex.info = db._info + db.setindex = + + ## An index to a set of books + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:setindex" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element setindex { + db.setindex.attlist, + db.setindex.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry*) + } +} +div { + db.indexdiv.status.attribute = db.status.attribute + db.indexdiv.role.attribute = attribute role { text } + db.indexdiv.attlist = + db.indexdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.indexdiv.status.attribute? + db.indexdiv.info = db._info.title.req + db.indexdiv = + + ## A division in an index + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:indexdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element indexdiv { + db.indexdiv.attlist, + db.indexdiv.info, + db.all.blocks*, + (db.indexentry+ | db.segmentedlist) + } +} +div { + db.indexentry.role.attribute = attribute role { text } + db.indexentry.attlist = + db.indexentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.indexentry = + + ## An entry in an index + element indexentry { + db.indexentry.attlist, + db.primaryie, + (db.seeie | db.seealsoie)*, + (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)* + } +} +div { + db.primaryie.role.attribute = attribute role { text } + db.primaryie.attlist = + db.primaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.primaryie = + + ## A primary term in an index entry, not in the text + element primaryie { db.primaryie.attlist, db.all.inlines* } +} +div { + db.secondaryie.role.attribute = attribute role { text } + db.secondaryie.attlist = + db.secondaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.secondaryie = + + ## A secondary term in an index entry, rather than in the text + element secondaryie { db.secondaryie.attlist, db.all.inlines* } +} +div { + db.tertiaryie.role.attribute = attribute role { text } + db.tertiaryie.attlist = + db.tertiaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.tertiaryie = + + ## A tertiary term in an index entry, rather than in the text + element tertiaryie { db.tertiaryie.attlist, db.all.inlines* } +} +div { + db.seeie.role.attribute = attribute role { text } + db.seeie.attlist = + db.seeie.role.attribute? + & db.common.attributes + & db.linkend.attribute? + db.seeie = + + ## A See + ## entry in an index, rather than in the text + element seeie { db.seeie.attlist, db.all.inlines* } +} +div { + db.seealsoie.role.attribute = attribute role { text } + db.seealsoie.attlist = + db.seealsoie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.seealsoie = + + ## A See also + ## entry in an index, rather than in the text + element seealsoie { db.seealsoie.attlist, db.all.inlines* } +} +db.toc.pagenum.attribute = + + ## Indicates the page on which this element occurs in some version of the printed document + attribute pagenum { text } +div { + db.toc.role.attribute = attribute role { text } + db.toc.attlist = + db.toc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.toc.info = db._info.title.only + db.toc = + + ## A table of contents + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:toc" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element toc { + db.toc.attlist, + db.toc.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)* + } +} +div { + db.tocdiv.role.attribute = attribute role { text } + db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute + db.tocdiv.attlist = + db.tocdiv.role.attribute? + & db.common.attributes + & db.tocdiv.pagenum.attribute? + & db.linkend.attribute? + db.tocdiv.info = db._info + db.tocdiv = + + ## A division in a table of contents + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:tocdiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element tocdiv { + db.tocdiv.attlist, + db.tocdiv.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)+ + } +} +div { + db.tocentry.role.attribute = attribute role { text } + db.tocentry.pagenum.attribute = db.toc.pagenum.attribute + db.tocentry.attlist = + db.tocentry.role.attribute? + & db.common.attributes + & db.tocentry.pagenum.attribute? + & db.linkend.attribute? + db.tocentry = + + ## A component title in a table of contents + element tocentry { db.tocentry.attlist, db.all.inlines* } +} +db.task.info = db._info.title.req +div { + db.task.role.attribute = attribute role { text } + db.task.attlist = + db.task.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.task = + + ## A task to be completed + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:task" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element task { + db.task.attlist, + db.task.info, + db.tasksummary?, + db.taskprerequisites?, + db.procedure+, + db.example*, + db.taskrelated? + } +} +div { + db.tasksummary.role.attribute = attribute role { text } + db.tasksummary.attlist = + db.tasksummary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tasksummary.info = db._info.title.only + db.tasksummary = + + ## A summary of a task + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:tasksummary" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element tasksummary { + db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+ + } +} +div { + db.taskprerequisites.role.attribute = attribute role { text } + db.taskprerequisites.attlist = + db.taskprerequisites.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskprerequisites.info = db._info.title.only + db.taskprerequisites = + + ## The prerequisites for a task + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:taskprerequisites" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element taskprerequisites { + db.taskprerequisites.attlist, + db.taskprerequisites.info, + db.all.blocks+ + } +} +div { + db.taskrelated.role.attribute = attribute role { text } + db.taskrelated.attlist = + db.taskrelated.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskrelated.info = db._info.title.only + db.taskrelated = + + ## Information related to a task + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:taskrelated" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element taskrelated { + db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+ + } +} +db.area.units.enumeration = + + ## Coordinates expressed as a pair of CALS graphic coordinates. + "calspair" + | + ## Coordinates expressed as a line and column. + "linecolumn" + | + ## Coordinates expressed as a pair of lines and columns. + "linecolumnpair" + | + ## Coordinates expressed as a line range. + "linerange" +db.area.units-enum.attribute = + + ## Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair + ## for graphics and linecolumn + ## for line-oriented elements. + attribute units { db.area.units.enumeration }? +db.area.units-other.attributes = + + ## Indicates that non-standard units are used for this area + ## . In this case otherunits + ## must be specified. + attribute units { + + ## Coordinates expressed in some non-standard units. + "other" + }?, + + ## Identifies the units used in the coords + ## attribute when the units + ## attribute is other + ## . This attribute is forbidden otherwise. + attribute otherunits { xsd:NMTOKEN } +db.area.units.attribute = + db.area.units-enum.attribute | db.area.units-other.attributes +div { + db.calloutlist.role.attribute = attribute role { text } + db.calloutlist.attlist = + db.calloutlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.calloutlist.info = db._info.title.only + db.calloutlist = + + ## A list of callout + ## s + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:calloutlist" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element calloutlist { + db.calloutlist.attlist, + db.calloutlist.info, + db.all.blocks*, + db.callout+ + } +} +div { + db.callout.role.attribute = attribute role { text } + db.callout.arearefs.attribute = + + ## Identifies the areas described by this callout. + attribute arearefs { xsd:IDREFS } + db.callout.attlist = + db.callout.role.attribute? + & db.common.attributes + & db.callout.arearefs.attribute + # This requires an XPath 2.0 compatible Schematron processor + db.callout = + + ## A called out + ## description of a marked area + [ + s:pattern [ + s:title [ "Callout cross reference constraint" ] + s:rule [ + context = "db:callout[@arearefs]" + s:assert [ + test = + "every $id in tokenize(current()/@arearefs) satisfies (every $ar in //*[@xml:id = $id] satisfies (local-name($ar) = ('areaset', 'area', 'co') and namespace-uri($ar) = 'http://docbook.org/ns/docbook'))" + "@arearefs on callout must point to a areaset, area, or co." + ] + ] + ] + ] + element callout { db.callout.attlist, db.all.blocks+ } +} +div { + db.programlistingco.role.attribute = attribute role { text } + db.programlistingco.attlist = + db.programlistingco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.programlistingco.info = db._info.title.forbidden + db.programlistingco = + + ## A program listing with associated areas used in callouts + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:programlistingco" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element programlistingco { + db.programlistingco.attlist, + db.programlistingco.info, + db.areaspec, + db.programlisting, + db.calloutlist* + } +} +div { + db.areaspec.role.attribute = attribute role { text } + db.areaspec.attlist = + db.areaspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.area.units.attribute + db.areaspec = + + ## A collection of regions in a graphic or code example + element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ } +} +div { + db.area.role.attribute = attribute role { text } + db.area.linkends.attribute = + + ## Point to the callout + ## s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + attribute linkends { xsd:IDREFS } + db.area.label.attribute = + + ## Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + attribute label { text } + db.area.coords.attribute = + + ## Provides the coordinates of the area. The coordinates must be interpreted using the units + ## specified. + attribute coords { text } + db.area.attlist = + db.area.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.xlink.simple.link.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area = + + ## A region defined for a callout in a graphic or code example + element area { db.area.attlist, db.alt? } +} +div { + # The only difference is that xml:id is optional + db.area.inareaset.attlist = + db.area.role.attribute? + & db.common.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.xlink.simple.link.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area.inareaset = + + ## A region defined for a callout in a graphic or code example + element area { db.area.inareaset.attlist, db.alt? } +} +div { + db.areaset.role.attribute = attribute role { text } + db.areaset.linkends.attribute = db.linkends.attribute + db.areaset.label.attribute = db.label.attribute + db.areaset.attlist = + db.areaset.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.areaset.linkends.attribute | db.xlink.simple.link.attributes)? + & db.areaset.label.attribute? + db.areaset = + + ## A set of related areas in a graphic or code example + element areaset { db.areaset.attlist, db.area.inareaset+ } +} +div { + db.screenco.role.attribute = attribute role { text } + db.screenco.attlist = + db.screenco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenco.info = db._info.title.forbidden + db.screenco = + + ## A screen with associated areas used in callouts + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:screenco" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element screenco { + db.screenco.attlist, + db.screenco.info, + db.areaspec, + db.screen, + db.calloutlist* + } +} +div { + db.imageobjectco.role.attribute = attribute role { text } + db.imageobjectco.attlist = + db.imageobjectco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobjectco.info = db._info.title.forbidden + db.imageobjectco = + + ## A wrapper for an image object with callouts + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imageobjectco" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imageobjectco { + db.imageobjectco.attlist, + db.imageobjectco.info, + db.areaspec, + db.imageobject+, + db.calloutlist* + } +} +div { + db.co.role.attribute = attribute role { text } + db.co.linkends.attribute = db.linkends.attribute + db.co.label.attribute = db.label.attribute + db.co.attlist = + db.co.role.attribute? + & db.common.idreq.attributes + & db.co.linkends.attribute? + & db.co.label.attribute? + db.co = + + ## The location of a callout embedded in text + element co { db.co.attlist, empty } +} +div { + db.coref.role.attribute = attribute role { text } + db.coref.label.attribute = db.label.attribute + db.coref.attlist = + db.coref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.coref.label.attribute? + db.coref = + + ## A cross reference to a co + element coref { db.coref.attlist, empty } +} +div { + db.productionset.role.attribute = attribute role { text } + db.productionset.attlist = + db.productionset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productionset.info = db._info.title.only + db.productionset = + + ## A set of EBNF productions + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:productionset" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element productionset { + db.productionset.attlist, + db.productionset.info, + (db.production | db.productionrecap)+ + } +} +div { + db.production.role.attribute = attribute role { text } + db.production.attlist = + db.production.role.attribute? + & db.common.idreq.attributes + & db.common.linking.attributes + db.production = + + ## A production in a set of EBNF productions + element production { + db.production.attlist, db.lhs, db.rhs+, db.constraint* + } +} +div { + db.lhs.role.attribute = attribute role { text } + db.lhs.attlist = + db.lhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lhs = + + ## The left-hand side of an EBNF production + element lhs { db.lhs.attlist, text } +} +div { + db.rhs.role.attribute = attribute role { text } + db.rhs.attlist = + db.rhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.rhs = + + ## The right-hand side of an EBNF production + element rhs { + db.rhs.attlist, + (text | db.nonterminal | db.lineannotation | db.sbr)* + } +} +div { + db.nonterminal.role.attribute = attribute role { text } + db.nonterminal.def.attribute = + + ## Specifies a URI that points to a production + ## where the nonterminal + ## is defined + attribute def { xsd:anyURI } + db.nonterminal.attlist = + db.nonterminal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.nonterminal.def.attribute + db.nonterminal = + + ## A non-terminal in an EBNF production + element nonterminal { db.nonterminal.attlist, text } +} +div { + db.constraint.role.attribute = attribute role { text } + db.constraint.attlist = + db.constraint.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.constraint = + + ## A constraint in an EBNF production + [ + s:pattern [ + s:title [ "Constraint cross reference constraint" ] + s:rule [ + context = "db:constraint[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'constraintdef' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on constraint must point to a constraintdef." + ] + ] + ] + ] + element constraint { db.constraint.attlist, empty } +} +div { + db.productionrecap.role.attribute = attribute role { text } + db.productionrecap.attlist = + db.productionrecap.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.productionrecap = + + ## A cross-reference to an EBNF production + [ + s:pattern [ + s:title [ "Production recap cross reference constraint" ] + s:rule [ + context = "db:productionrecap[@linkend]" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'production' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on productionrecap must point to a production." + ] + ] + ] + ] + element productionrecap { db.productionrecap.attlist, empty } +} +div { + db.constraintdef.role.attribute = attribute role { text } + db.constraintdef.attlist = + db.constraintdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.constraintdef.info = db._info.title.only + db.constraintdef = + + ## The definition of a constraint in an EBNF production + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:constraintdef" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element constraintdef { + db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+ + } +} +db.char.attribute = + + ## Specifies the alignment character when align + ## is set to char + ## . + attribute char { text } +db.charoff.attribute = + + ## Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + ## when align + ## is set to char + ## . + attribute charoff { + xsd:decimal { minExclusive = "0" maxExclusive = "100" } + } +db.frame.attribute = + + ## Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + attribute frame { + + ## Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + "all" + | + ## Frame only the bottom of the table. + "bottom" + | + ## Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + "none" + | + ## Frame the left and right sides of the table. + "sides" + | + ## Frame the top of the table. + "top" + | + ## Frame the top and bottom of the table. + "topbot" + } +db.colsep.attribute = + + ## Specifies the presence or absence of the column separator + attribute colsep { + + ## No column separator rule. + "0" + | + ## Provide a column separator rule on the right + "1" + } +db.rowsep.attribute = + + ## Specifies the presence or absence of the row separator + attribute rowsep { + + ## No row separator rule. + "0" + | + ## Provide a row separator rule below + "1" + } +db.orient.attribute = + + ## Specifies the orientation of the table + attribute orient { + + ## 90 degrees counter-clockwise from the rest of the text flow. + "land" + | + ## The same orientation as the rest of the text flow. + "port" + } +db.tabstyle.attribute = + + ## Specifies the table style + attribute tabstyle { text } +db.rowheader.attribute = + + ## Indicates whether or not the entries in the first column should be considered row headers + attribute rowheader { + + ## Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + "firstcol" + | + ## Indicates that row headers are identified by use of the headers attribute on entries in the table. + "headers" + | + ## Indicates that entries in the first column have no special significance with respect to column headers. + "norowheader" + } +db.align.attribute = + + ## Specifies the horizontal alignment of text in an entry. + attribute align { + + ## Centered. + "center" + | + ## Aligned on a particular character. + "char" + | + ## Left and right justified. + "justify" + | + ## Left justified. + "left" + | + ## Right justified. + "right" + } +db.valign.attribute = + + ## Specifies the vertical alignment of text in an entry. + attribute valign { + + ## Aligned on the bottom of the entry. + "bottom" + | + ## Aligned in the middle. + "middle" + | + ## Aligned at the top of the entry. + "top" + } +db.specify-col-by-colname.attributes = + + ## Specifies a column specification by name. + attribute colname { text } +db.specify-col-by-namest.attributes = + + ## Specifies a starting column by name. + attribute namest { text } +db.specify-span-by-spanspec.attributes = + + ## Specifies a span by name. + attribute spanname { text } +db.specify-span-directly.attributes = + + ## Specifies a starting column by name. + attribute namest { text } + & + ## Specifies an ending column by name. + attribute nameend { text } +db.column-spec.attributes = + db.specify-col-by-colname.attributes + | db.specify-col-by-namest.attributes + | db.specify-span-by-spanspec.attributes + | db.specify-span-directly.attributes +db.colname.attribute = + + ## Provides a name for a column specification. + attribute colname { text } +db.spanname.attribute = + + ## Provides a name for a span specification. + attribute spanname { text } +div { + db.tgroup.role.attribute = attribute role { text } + db.tgroup.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.tgroup.cols.attribute = + + ## The number of columns in the table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.tgroup.attlist = + db.tgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.tgroup.tgroupstyle.attribute? + & db.tgroup.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.tgroup = + + ## A wrapper for the main content of a table, or part of a table + element tgroup { + db.tgroup.attlist, + db.colspec*, + db.spanspec*, + db.cals.thead?, + db.cals.tfoot?, + db.cals.tbody + } +} +div { + db.colspec.role.attribute = attribute role { text } + db.colspec.colnum.attribute = + + ## The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + attribute colnum { xsd:positiveInteger } + db.colspec.colwidth.attribute = + + ## Specifies the width of the column. + attribute colwidth { text } + db.colspec.attlist = + db.colspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.colspec.colnum.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.colspec.colwidth.attribute? + & db.charoff.attribute? + & db.colname.attribute? + & db.rowsep.attribute? + & db.align.attribute? + & db.rowheader.attribute? + db.colspec = + + ## Specifications for a column in a table + element colspec { db.colspec.attlist, empty } +} +div { + db.spanspec.role.attribute = attribute role { text } + db.spanspec.namest.attribute = + + ## Specifies a starting column by name. + attribute namest { text } + db.spanspec.nameend.attribute = + + ## Specifies an ending column by name. + attribute nameend { text } + db.spanspec.attlist = + db.spanspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spanname.attribute + & db.spanspec.namest.attribute + & db.spanspec.nameend.attribute + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.spanspec = + + ## Formatting information for a spanned column in a table + element spanspec { db.spanspec.attlist, empty } +} +div { + db.cals.thead.role.attribute = attribute role { text } + db.cals.thead.attlist = + db.cals.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.thead = + + ## A table header consisting of one or more rows + element thead { db.cals.thead.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tfoot.role.attribute = attribute role { text } + db.cals.tfoot.attlist = + db.cals.tfoot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tfoot = + + ## A table footer consisting of one or more rows + element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tbody.role.attribute = attribute role { text } + db.cals.tbody.attlist = + db.cals.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.tbody.attlist, db.row+ } +} +div { + db.row.role.attribute = attribute role { text } + db.row.attlist = + db.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.row = + + ## A row in a table + element row { db.row.attlist, (db.entry | db.entrytbl)+ } +} +div { + db.entry.role.attribute = attribute role { text } + db.entry.morerows.attribute = + + ## Specifies the number of additional rows which this entry occupies. Defaults to zero. + attribute morerows { xsd:integer } + db.entry.rotate.attribute = + + ## Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + attribute rotate { + + ## Do not rotate the cell. + "0" + | + ## Rotate the cell 90 degrees counter-clockwise. + "1" + } + db.entry.scope.attribute = + + ## Specifies the scope of a header. + attribute scope { + + ## Applies to the row + "row" + | + ## Applies to the column + "col" + | + ## Applies to the row group + "rowgroup" + | + ## Applies to the column group + "colgroup" + } + db.entry.headers.attribute = + + ## Specifies the entry or entries which serve as headers for this element. + attribute headers { xsd:IDREFS } + db.entry.attlist = + db.entry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.entry.morerows.attribute? + & db.column-spec.attributes? + & db.rowsep.attribute? + & db.entry.rotate.attribute? + & db.align.attribute? + & db.entry.scope.attribute? + & db.entry.headers.attribute? + db.entry = + + ## A cell in a table + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:entry" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of entry" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:entry" + s:assert [ + test = "not(.//db:informaltable)" + "informaltable must not occur among the children or descendants of entry" + ] + ] + ] + ] + element entry { + db.entry.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.entrytbl.role.attribute = attribute role { text } + db.entrytbl.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.entrytbl.cols.attribute = + + ## The number of columns in the entry table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.entrytbl.attlist = + db.entrytbl.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.column-spec.attributes? + & db.entrytbl.tgroupstyle.attribute? + & db.entrytbl.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.entrytbl = + + ## A subtable appearing in place of an entry in a table + element entrytbl { + db.entrytbl.attlist, + db.colspec*, + db.spanspec*, + db.cals.entrytbl.thead?, + db.cals.entrytbl.tbody + } +} +div { + db.cals.entrytbl.thead.role.attribute = attribute role { text } + db.cals.entrytbl.thead.attlist = + db.cals.entrytbl.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.thead = + + ## A table header consisting of one or more rows + element thead { + db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+ + } +} +div { + db.cals.entrytbl.tbody.role.attribute = attribute role { text } + db.cals.entrytbl.tbody.attlist = + db.cals.entrytbl.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ } +} +div { + db.entrytbl.row.role.attribute = attribute role { text } + db.entrytbl.row.attlist = + db.entrytbl.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.entrytbl.row = + + ## A row in a table + element row { db.entrytbl.row.attlist, db.entry+ } +} +div { + db.cals.table.role.attribute = attribute role { text } + db.cals.table.label.attribute = db.label.attribute + db.cals.table.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.cals.table.attlist = + db.cals.table.role.attribute? + & db.cals.table.type.attribute? + & db.cals.table.label.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & + ## Indicates if the short or long title should be used in a List of Tables + attribute shortentry { + + ## Indicates that the full title should be used. + "0" + | + ## Indicates that the short short title (titleabbrev) should be used. + "1" + }? + & + ## Indicates if the table should appear in a List of Tables + attribute tocentry { + + ## Indicates that the table should not occur in the List of Tables. + "0" + | + ## Indicates that the table should appear in the List of Tables. + "1" + }? + & db.rowheader.attribute? + db.cals.table.info = db._info.title.onlyreq + db.cals.table = + + ## A formal table in a document + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:table" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element table { + db.cals.table.attlist, + db.cals.table.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +div { + db.cals.informaltable.role.attribute = attribute role { text } + db.cals.informaltable.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.cals.informaltable.attlist = + db.cals.informaltable.role.attribute? + & db.cals.informaltable.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & db.rowheader.attribute? + db.cals.informaltable.info = db._info.title.forbidden + db.cals.informaltable = + + ## A table without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informaltable" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informaltable { + db.cals.informaltable.attlist, + db.cals.informaltable.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +db.html.coreattrs = + + ## This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + attribute class { text }? + & + ## This attribute specifies style information for the current element. + attribute style { text }? + & + ## This attribute offers advisory information about the element for which it is set. + attribute title { text }? +db.html.i18n = + + ## This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + attribute lang { text }? +db.html.events = + + ## Occurs when the pointing device button is clicked over an element. + attribute onclick { text }? + & + ## Occurs when the pointing device button is double clicked over an element. + attribute ondblclick { text }? + & + ## Occurs when the pointing device button is pressed over an element. + attribute onmousedown { text }? + & + ## Occurs when the pointing device button is released over an element. + attribute onmouseup { text }? + & + ## Occurs when the pointing device is moved onto an element. + attribute onmouseover { text }? + & + ## Occurs when the pointing device is moved while it is over an element. + attribute onmousemove { text }? + & + ## Occurs when the pointing device is moved away from an element. + attribute onmouseout { text }? + & + ## Occurs when a key is pressed and released over an element. + attribute onkeypress { text }? + & + ## Occurs when a key is pressed down over an element. + attribute onkeydown { text }? + & + ## Occurs when a key is released over an element. + attribute onkeyup { text }? +db.html.attrs = + db.common.attributes + & db.html.coreattrs + & db.html.i18n + & db.html.events +db.html.cellhalign = + + ## Specifies the alignment of data and the justification of text in a cell. + attribute align { + + ## Left-flush data/Left-justify text. This is the default value for table data. + "left" + | + ## Center data/Center-justify text. This is the default value for table headers. + "center" + | + ## Right-flush data/Right-justify text. + "right" + | + ## Double-justify text. + "justify" + | + ## Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + "char" + }? + & + ## This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + attribute char { text }? + & + ## When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + attribute charoff { + xsd:integer >> a:documentation [ "An explicit offset." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage offset." ] + }? +db.html.cellvalign = + + ## Specifies the vertical position of data within a cell. + attribute valign { + + ## Cell data is flush with the top of the cell. + "top" + | + ## Cell data is centered vertically within the cell. This is the default value. + "middle" + | + ## Cell data is flush with the bottom of the cell. + "bottom" + | + ## All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + "baseline" + }? +db.html.table.attributes = + + ## Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + attribute summary { text }? + & + ## Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + attribute width { + xsd:integer >> a:documentation [ "An explicit width." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage width." ] + }? + & + ## Specifies the width (in pixels only) of the frame around a table. + attribute border { xsd:nonNegativeInteger }? + & + ## Specifies which sides of the frame surrounding a table will be visible. + attribute frame { + + ## No sides. This is the default value. + "void" + | + ## The top side only. + "above" + | + ## The bottom side only. + "below" + | + ## The top and bottom sides only. + "hsides" + | + ## The left-hand side only. + "lhs" + | + ## The right-hand side only. + "rhs" + | + ## The right and left sides only. + "vsides" + | + ## All four sides. + "box" + | + ## All four sides. + "border" + }? + & + ## Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + attribute rules { + + ## No rules. This is the default value. + "none" + | + ## Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + "groups" + | + ## Rules will appear between rows only. + "rows" + | + ## Rules will appear between columns only. + "cols" + | + ## Rules will appear between all rows and columns. + "all" + }? + & + ## Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + attribute cellspacing { + xsd:integer >> a:documentation [ "An explicit spacing." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage spacing." ] + }? + & + ## Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + attribute cellpadding { + xsd:integer >> a:documentation [ "An explicit padding." ] + | xsd:string { pattern = "[0-9]+%" } + >> a:documentation [ "A percentage padding." ] + }? +db.html.tablecell.attributes = + + ## Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + attribute abbr { text }? + & + ## This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + attribute axis { text }? + & + ## Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + attribute headers { text }? + & + ## Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + attribute scope { + + ## The current cell provides header information for the rest of the row that contains it + "row" + | + ## The current cell provides header information for the rest of the column that contains it. + "col" + | + ## The header cell provides header information for the rest of the row group that contains it. + "rowgroup" + | + ## The header cell provides header information for the rest of the column group that contains it. + "colgroup" + }? + & + ## Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all rows from the current row to the last row of the table section (thead + ## , tbody + ## , or tfoot + ## ) in which the cell is defined. + attribute rowspan { xsd:nonNegativeInteger }? + & + ## Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all columns from the current column to the last column of the column group (colgroup + ## ) in which the cell is defined. + attribute colspan { xsd:nonNegativeInteger }? +db.html.table.info = db._info.title.forbidden +db.html.table.model = + db.html.table.info?, + db.html.caption, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +db.html.informaltable.info = db._info.title.forbidden +db.html.informaltable.model = + db.html.informaltable.info?, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +div { + db.html.table.role.attribute = attribute role { text } + db.html.table.label.attribute = db.label.attribute + db.html.table.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.html.table.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.table.role.attribute? + & db.html.table.type.attribute? + & db.html.table.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.table = + + ## A formal (captioned) HTML table in a document + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:table" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of table" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:table" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element table { db.html.table.attlist, db.html.table.model } +} +div { + db.html.informaltable.role.attribute = attribute role { text } + db.html.informaltable.label.attribute = db.label.attribute + db.html.informaltable.type.attribute = + + ## Identifies the type of table + attribute type { text }? + db.html.informaltable.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.informaltable.role.attribute? + & db.html.informaltable.type.attribute? + & db.html.informaltable.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.informaltable = + + ## An HTML table without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informaltable" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informaltable { + db.html.informaltable.attlist, db.html.informaltable.model + } +} +div { + db.html.caption.attlist = db.html.attrs + db.html.caption = + + ## An HTML table caption + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:sidebar)" + "sidebar must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:task)" + "task must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caption" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caption" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:caption" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element caption { db.html.caption.attlist, db.all.inlines* } +} +div { + db.html.col.attlist = + db.html.attrs + & + ## This attribute, whose value must be an integer > 0, specifies the number of columns spanned + ## by the col + ## element; the col + ## element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + ## element shares its attributes with the next N-1 columns. + attribute span { xsd:nonNegativeInteger }? + & + ## Specifies a default width for each column spanned by the current col + ## element. It has the same meaning as the width + ## attribute for the colgroup + ## element and overrides it. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.col = + + ## Specifications for a column in an HTML table + element col { db.html.col.attlist, empty } +} +div { + db.html.colgroup.attlist = + db.html.attrs + & + ## This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + ## defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + ## element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + ## element contains one or more col + ## elements. + attribute span { xsd:nonNegativeInteger }? + & + ## This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + ## (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + ## will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + ## element. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.colgroup = + + ## A group of columns in an HTML table + element colgroup { db.html.colgroup.attlist, db.html.col* } +} +div { + db.html.thead.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.thead = + + ## A table header consisting of one or more rows in an HTML table + element thead { db.html.thead.attlist, db.html.tr+ } +} +div { + db.html.tfoot.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tfoot = + + ## A table footer consisting of one or more rows in an HTML table + element tfoot { db.html.tfoot.attlist, db.html.tr+ } +} +div { + db.html.tbody.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tbody = + + ## A wrapper for the rows of an HTML table or informal HTML table + element tbody { db.html.tbody.attlist, db.html.tr+ } +} +div { + db.html.tr.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tr = + + ## A row in an HTML table + element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ } +} +div { + db.html.th.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.th = + + ## A table header entry in an HTML table + element th { + db.html.th.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.html.td.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.td = + + ## A table entry in an HTML table + element td { + db.html.td.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.msgset.role.attribute = attribute role { text } + db.msgset.attlist = + db.msgset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgset.info = db._info.title.only + db.msgset = + + ## A detailed set of messages, usually error messages + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgset" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgset { + db.msgset.attlist, + db.msgset.info, + (db.msgentry+ | db.simplemsgentry+) + } +} +div { + db.msgentry.role.attribute = attribute role { text } + db.msgentry.attlist = + db.msgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgentry = + + ## A wrapper for an entry in a message set + element msgentry { + db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan* + } +} +div { + db.simplemsgentry.role.attribute = attribute role { text } + db.simplemsgentry.msgaud.attribute = + + ## The audience to which the message relevant + attribute msgaud { text } + db.simplemsgentry.msgorig.attribute = + + ## The origin of the message + attribute msgorig { text } + db.simplemsgentry.msglevel.attribute = + + ## The level of importance or severity of a message + attribute msglevel { text } + db.simplemsgentry.attlist = + db.simplemsgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplemsgentry.msgaud.attribute? + & db.simplemsgentry.msgorig.attribute? + & db.simplemsgentry.msglevel.attribute? + db.simplemsgentry = + + ## A wrapper for a simpler entry in a message set + element simplemsgentry { + db.simplemsgentry.attlist, db.msgtext, db.msgexplan+ + } +} +div { + db.msg.role.attribute = attribute role { text } + db.msg.attlist = + db.msg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msg.info = db._info.title.only + db.msg = + + ## A message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msg" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msg { + db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)* + } +} +div { + db.msgmain.role.attribute = attribute role { text } + db.msgmain.attlist = + db.msgmain.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgmain.info = db._info.title.only + db.msgmain = + + ## The primary component of a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgmain" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext } +} +div { + db.msgsub.role.attribute = attribute role { text } + db.msgsub.attlist = + db.msgsub.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgsub.info = db._info.title.only + db.msgsub = + + ## A subcomponent of a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgsub" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext } +} +div { + db.msgrel.role.attribute = attribute role { text } + db.msgrel.attlist = + db.msgrel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgrel.info = db._info.title.only + db.msgrel = + + ## A related component of a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgrel" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext } +} +div { + db.msgtext.role.attribute = attribute role { text } + db.msgtext.attlist = + db.msgtext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgtext = + + ## The actual text of a message component in a message set + element msgtext { db.msgtext.attlist, db.all.blocks+ } +} +div { + db.msginfo.role.attribute = attribute role { text } + db.msginfo.attlist = + db.msginfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msginfo = + + ## Information about a message in a message set + element msginfo { + db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)* + } +} +div { + db.msglevel.role.attribute = attribute role { text } + db.msglevel.attlist = + db.msglevel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msglevel = + + ## The level of importance or severity of a message in a message set + element msglevel { db.msglevel.attlist, db._text } +} +div { + db.msgorig.role.attribute = attribute role { text } + db.msgorig.attlist = + db.msgorig.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgorig = + + ## The origin of a message in a message set + element msgorig { db.msgorig.attlist, db._text } +} +div { + db.msgaud.role.attribute = attribute role { text } + db.msgaud.attlist = + db.msgaud.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgaud = + + ## The audience to which a message in a message set is relevant + element msgaud { db.msgaud.attlist, db._text } +} +div { + db.msgexplan.role.attribute = attribute role { text } + db.msgexplan.attlist = + db.msgexplan.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgexplan.info = db._info.title.only + db.msgexplan = + + ## Explanatory material relating to a message in a message set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:msgexplan" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element msgexplan { + db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+ + } +} +div { + db.qandaset.role.attribute = attribute role { text } + db.qandaset.defaultlabel.enumeration = + + ## No labels + "none" + | + ## Numeric labels + "number" + | + ## "Q:" and "A:" labels + "qanda" + db.qandaset.defaultlabel.attribute = + + ## Specifies the default labelling + attribute defaultlabel { db.qandaset.defaultlabel.enumeration } + db.qandaset.attlist = + db.qandaset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.qandaset.defaultlabel.attribute? + db.qandaset.info = db._info.title.only + db.qandaset = + + ## A question-and-answer set + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:qandaset" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element qandaset { + db.qandaset.attlist, + db.qandaset.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandadiv.role.attribute = attribute role { text } + db.qandadiv.attlist = + db.qandadiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandadiv.info = db._info.title.only + db.qandadiv = + + ## A titled division in a qandaset + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:qandadiv" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element qandadiv { + db.qandadiv.attlist, + db.qandadiv.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandaentry.role.attribute = attribute role { text } + db.qandaentry.attlist = + db.qandaentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandaentry.info = db._info.title.only + db.qandaentry = + + ## A question/answer set within a qandaset + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:qandaentry" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element qandaentry { + db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer* + } +} +div { + db.question.role.attribute = attribute role { text } + db.question.attlist = + db.question.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.question = + + ## A question in a qandaset + element question { db.question.attlist, db.label?, db.all.blocks+ } +} +div { + db.answer.role.attribute = attribute role { text } + db.answer.attlist = + db.answer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.answer = + + ## An answer to a question posed in a qandaset + element answer { db.answer.attlist, db.label?, db.all.blocks+ } +} +div { + db.label.role.attribute = attribute role { text } + db.label.attlist = + db.label.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.label = + + ## A label on a question or answer + element label { db.label.attlist, db._text } +} +db.math.inlines = db.inlineequation +db.equation.content = + (db.mediaobject+ | db.mathphrase+) | db._any.mml+ | db.xi.include+ +db.inlineequation.content = + (db.inlinemediaobject+ | db.mathphrase+) + | db._any.mml+ + | db.xi.include+ +div { + db.equation.role.attribute = attribute role { text } + db.equation.label.attribute = db.label.attribute + db.equation.type.attribute = + + ## Identifies the type of equation + attribute type { text }? + db.equation.attlist = + db.equation.role.attribute? + & db.equation.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.equation.label.attribute? + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.equation.info = db._info.title.only + db.equation = + + ## A displayed mathematical equation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:example)" + "example must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:figure)" + "figure must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:table)" + "table must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:equation" + s:assert [ + test = "not(.//db:equation)" + "equation must not occur among the children or descendants of equation" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:equation" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element equation { + db.equation.attlist, + db.equation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.informalequation.role.attribute = attribute role { text } + db.informalequation.type.attribute = + + ## Identifies the type of equation + attribute type { text }? + db.informalequation.attlist = + db.informalequation.role.attribute? + & db.informalequation.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.informalequation.info = db._info.title.forbidden + db.informalequation = + + ## A displayed mathematical equation without a title + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:informalequation" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element informalequation { + db.informalequation.attlist, + db.informalequation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.inlineequation.role.attribute = attribute role { text } + db.inlineequation.attlist = + db.inlineequation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlineequation = + + ## A mathematical equation or expression occurring inline + element inlineequation { + db.inlineequation.attlist, db.alt?, db.inlineequation.content + } +} +div { + db.mathphrase.role.attribute = attribute role { text } + db.mathphrase.attlist = + db.mathphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mathphrase = + + ## A mathematical phrase that can be represented with ordinary text and a small amount of markup + element mathphrase { + db.mathphrase.attlist, + (db._text | db.ubiq.inlines | db._emphasis)* + } +} +db.imagedata.mathml.content = db._any.mml | db.xi.include +div { + db.imagedata.mathml.role.attribute = attribute role { text } + db.imagedata.mathml.attlist = + db.imagedata.mathml.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is MathML + attribute format { + + ## Specifies MathML. + "mathml" + }? + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.mathml.info = db._info.title.forbidden + db.imagedata.mathml = + + ## A MathML expression in a media object + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imagedata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imagedata { + db.imagedata.mathml.attlist, + db.imagedata.mathml.info, + db.imagedata.mathml.content+ + } +} +div { + db._any.mml = + + ## Any element from the MathML namespace + element mml:* { (db._any.attribute | text | db._any)* } +} +db.imagedata.svg.content = db._any.svg | db.xi.include +div { + db.imagedata.svg.role.attribute = attribute role { text } + db.imagedata.svg.attlist = + db.imagedata.svg.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is SVG + attribute format { + + ## Specifies SVG. + "svg" + }? + & db.imagedata.align.attribute? + & db.imagedata.valign.attribute? + & db.imagedata.width.attribute? + & db.imagedata.contentwidth.attribute? + & db.imagedata.scalefit.attribute? + & db.imagedata.scale.attribute? + & db.imagedata.depth.attribute? + & db.imagedata.contentdepth.attribute? + db.imagedata.svg.info = db._info.title.forbidden + db.imagedata.svg = + + ## An SVG drawing in a media object + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:imagedata" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element imagedata { + db.imagedata.svg.attlist, + db.imagedata.svg.info, + db.imagedata.svg.content+ + } +} +div { + db._any.svg = + + ## Any element from the SVG namespace + element svg:* { (db._any.attribute | text | db._any)* } +} +db.markup.inlines = + db.tag + | db.markup + | db.token + | db.symbol + | db.literal + | db.code + | db.constant + | db.email + | db.uri +div { + db.markup.role.attribute = attribute role { text } + db.markup.attlist = + db.markup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.markup = + + ## A string of formatting markup in text that is to be represented literally + element markup { db.markup.attlist, db._text } +} +div { + db.tag.role.attribute = attribute role { text } + db.tag.class.enumeration = + + ## An attribute + "attribute" + | + ## An attribute value + "attvalue" + | + ## An element + "element" + | + ## An empty element tag + "emptytag" + | + ## An end tag + "endtag" + | + ## A general entity + "genentity" + | + ## The local name part of a qualified name + "localname" + | + ## A namespace + "namespace" + | + ## A numeric character reference + "numcharref" + | + ## A parameter entity + "paramentity" + | + ## A processing instruction + "pi" + | + ## The prefix part of a qualified name + "prefix" + | + ## An SGML comment + "comment" + | + ## A start tag + "starttag" + | + ## An XML processing instruction + "xmlpi" + db.tag.class.attribute = + + ## Identifies the nature of the tag content + attribute class { db.tag.class.enumeration } + db.tag.namespace.attribute = + + ## Identifies the namespace of the tag content + attribute namespace { xsd:anyURI } + db.tag.attlist = + db.tag.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tag.class.attribute? + & db.tag.namespace.attribute? + db.tag = + + ## A component of XML (or SGML) markup + element tag { db.tag.attlist, (db._text | db.tag)* } +} +div { + db.symbol.class.attribute = + + ## Identifies the class of symbol + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.symbol.role.attribute = attribute role { text } + db.symbol.attlist = + db.symbol.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.symbol.class.attribute? + db.symbol = + + ## A name that is replaced by a value before processing + element symbol { db.symbol.attlist, db._text } +} +div { + db.token.role.attribute = attribute role { text } + db.token.attlist = + db.token.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.token = + + ## A unit of information + element token { db.token.attlist, db._text } +} +div { + db.literal.role.attribute = attribute role { text } + db.literal.attlist = + db.literal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.literal = + + ## Inline text that is some literal value + element literal { db.literal.attlist, db._text } +} +div { + code.language.attribute = + + ## Identifies the (computer) language of the code fragment + attribute language { text } + db.code.role.attribute = attribute role { text } + db.code.attlist = + db.code.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & code.language.attribute? + db.code = + + ## An inline code fragment + element code { + db.code.attlist, (db.programming.inlines | db._text)* + } +} +div { + db.constant.class.attribute = + + ## Identifies the class of constant + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.constant.role.attribute = attribute role { text } + db.constant.attlist = + db.constant.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.constant.class.attribute? + db.constant = + + ## A programming or system constant + element constant { db.constant.attlist, db._text } +} +div { + db.productname.role.attribute = attribute role { text } + db.productname.class.enumeration = + + ## A name with a copyright + "copyright" + | + ## A name with a registered copyright + "registered" + | + ## A name of a service + "service" + | + ## A name which is trademarked + "trade" + db.productname.class.attribute = + + ## Specifies the class of product name + attribute class { db.productname.class.enumeration } + db.productname.attlist = + db.productname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.productname.class.attribute? + db.productname = + + ## The formal name of a product + element productname { db.productname.attlist, db._text } +} +div { + db.productnumber.role.attribute = attribute role { text } + db.productnumber.attlist = + db.productnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productnumber = + + ## A number assigned to a product + element productnumber { db.productnumber.attlist, db._text } +} +div { + db.database.class.enumeration = + + ## An alternate or secondary key + "altkey" + | + ## A constraint + "constraint" + | + ## A data type + "datatype" + | + ## A field + "field" + | + ## A foreign key + "foreignkey" + | + ## A group + "group" + | + ## An index + "index" + | + ## The first or primary key + "key1" + | + ## An alternate or secondary key + "key2" + | + ## A name + "name" + | + ## The primary key + "primarykey" + | + ## A (stored) procedure + "procedure" + | + ## A record + "record" + | + ## A rule + "rule" + | + ## The secondary key + "secondarykey" + | + ## A table + "table" + | + ## A user + "user" + | + ## A view + "view" + db.database.class.attribute = + + ## Identifies the class of database artifact + attribute class { db.database.class.enumeration } + db.database.role.attribute = attribute role { text } + db.database.attlist = + db.database.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.database.class.attribute? + db.database = + + ## The name of a database, or part of a database + element database { db.database.attlist, db._text } +} +div { + db.application.class.enumeration = + + ## A hardware application + "hardware" + | + ## A software application + "software" + db.application.class.attribute = + + ## Identifies the class of application + attribute class { db.application.class.enumeration } + db.application.role.attribute = attribute role { text } + db.application.attlist = + db.application.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.application.class.attribute? + db.application = + + ## The name of a software program + element application { db.application.attlist, db._text } +} +div { + db.hardware.role.attribute = attribute role { text } + db.hardware.attlist = + db.hardware.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.hardware = + + ## A physical part of a computer system + element hardware { db.hardware.attlist, db._text } +} +db.gui.inlines = + db.guiicon + | db.guibutton + | db.guimenuitem + | db.guimenu + | db.guisubmenu + | db.guilabel + | db.menuchoice + | db.mousebutton +div { + db.guibutton.role.attribute = attribute role { text } + db.guibutton.attlist = + db.guibutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guibutton = + + ## The text on a button in a GUI + element guibutton { + db.guibutton.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guiicon.role.attribute = attribute role { text } + db.guiicon.attlist = + db.guiicon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guiicon = + + ## Graphic and/or text appearing as a icon in a GUI + element guiicon { + db.guiicon.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guilabel.role.attribute = attribute role { text } + db.guilabel.attlist = + db.guilabel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guilabel = + + ## The text of a label in a GUI + element guilabel { + db.guilabel.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenu.role.attribute = attribute role { text } + db.guimenu.attlist = + db.guimenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenu = + + ## The name of a menu in a GUI + element guimenu { + db.guimenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenuitem.role.attribute = attribute role { text } + db.guimenuitem.attlist = + db.guimenuitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenuitem = + + ## The name of a terminal menu item in a GUI + element guimenuitem { + db.guimenuitem.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guisubmenu.role.attribute = attribute role { text } + db.guisubmenu.attlist = + db.guisubmenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guisubmenu = + + ## The name of a submenu in a GUI + element guisubmenu { + db.guisubmenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.menuchoice.role.attribute = attribute role { text } + db.menuchoice.attlist = + db.menuchoice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.menuchoice = + + ## A selection or series of selections from a menu + element menuchoice { + db.menuchoice.attlist, + db.shortcut?, + (db.guibutton + | db.guiicon + | db.guilabel + | db.guimenu + | db.guimenuitem + | db.guisubmenu)+ + } +} +div { + db.mousebutton.role.attribute = attribute role { text } + db.mousebutton.attlist = + db.mousebutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mousebutton = + + ## The conventional name of a mouse button + element mousebutton { db.mousebutton.attlist, db._text } +} +db.keyboard.inlines = + db.keycombo + | db.keycap + | db.keycode + | db.keysym + | db.shortcut + | db.accel +div { + db.keycap.function.enumeration = + + ## The "Alt" key + "alt" + | + ## The "Alt Graph" key + "altgr" + | + ## The "Backspace" key + "backspace" + | + ## The "Command" key + "command" + | + ## The "Control" key + "control" + | + ## The "Delete" key + "delete" + | + ## The down arrow + "down" + | + ## The "End" key + "end" + | + ## The "Enter" key + "enter" + | + ## The "Escape" key + "escape" + | + ## The "Home" key + "home" + | + ## The "Insert" key + "insert" + | + ## The left arrow + "left" + | + ## The "Meta" key + "meta" + | + ## The "Option" key + "option" + | + ## The page down key + "pagedown" + | + ## The page up key + "pageup" + | + ## The right arrow + "right" + | + ## The "Return" key + "return" + | + ## The "Shift" key + "shift" + | + ## The spacebar + "space" + | + ## The "Tab" key + "tab" + | + ## The up arrow + "up" + db.keycap.function-enum.attribute = + + ## Identifies the function key + attribute function { db.keycap.function.enumeration }? + db.keycap.function-other.attributes = + + ## Identifies the function key + attribute function { + + ## Indicates a non-standard function key + "other" + }?, + + ## Specifies a keyword that identifies the non-standard key + attribute otherfunction { text } + db.keycap.function.attrib = + db.keycap.function-enum.attribute + | db.keycap.function-other.attributes + db.keycap.role.attribute = attribute role { text } + db.keycap.attlist = + db.keycap.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycap.function.attrib + db.keycap = + + ## The text printed on a key on a keyboard + element keycap { db.keycap.attlist, db._text } +} +div { + db.keycode.role.attribute = attribute role { text } + db.keycode.attlist = + db.keycode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keycode = + + ## The internal, frequently numeric, identifier for a key on a keyboard + element keycode { db.keycode.attlist, db._text } +} +db.keycombination.contentmodel = + (db.keycap | db.keycombo | db.keysym) | db.mousebutton +div { + db.keycombo.action.enumeration = + + ## A (single) mouse click. + "click" + | + ## A double mouse click. + "double-click" + | + ## A mouse or key press. + "press" + | + ## Sequential clicks or presses. + "seq" + | + ## Simultaneous clicks or presses. + "simul" + db.keycombo.action-enum.attribute = + + ## Identifies the nature of the action taken. If keycombo + ## contains more than one element, simul + ## is the default, otherwise there is no default. + attribute action { db.keycombo.action.enumeration }? + db.keycombo.action-other.attributes = + + ## Identifies the nature of the action taken + attribute action { + + ## Indicates a non-standard action + "other" + }?, + + ## Identifies the non-standard action in some unspecified way. + attribute otheraction { text } + db.keycombo.action.attrib = + db.keycombo.action-enum.attribute + | db.keycombo.action-other.attributes + db.keycombo.role.attribute = attribute role { text } + db.keycombo.attlist = + db.keycombo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycombo.action.attrib + db.keycombo = + + ## A combination of input actions + element keycombo { + db.keycombo.attlist, db.keycombination.contentmodel+ + } +} +div { + db.keysym.role.attribute = attribute role { text } + db.keysym.attlist = + db.keysym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keysym = + + ## The symbolic name of a key on a keyboard + element keysym { db.keysym.attlist, db._text } +} +div { + db.accel.role.attribute = attribute role { text } + db.accel.attlist = + db.accel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.accel = + + ## A graphical user interface (GUI) keyboard shortcut + element accel { db.accel.attlist, db._text } +} +div { + db.shortcut.action.attrib = db.keycombo.action.attrib + db.shortcut.role.attribute = attribute role { text } + db.shortcut.attlist = + db.shortcut.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.shortcut.action.attrib + db.shortcut = + + ## A key combination for an action that is also accessible through a menu + element shortcut { + db.shortcut.attlist, db.keycombination.contentmodel+ + } +} +db.os.inlines = + db.prompt + | db.envar + | db.filename + | db.command + | db.computeroutput + | db.userinput +db.computeroutput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines +db.userinput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines +db.prompt.inlines = db._text | db.co +div { + db.prompt.role.attribute = attribute role { text } + db.prompt.attlist = + db.prompt.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.prompt = + + ## A character or string indicating the start of an input field in a computer display + element prompt { db.prompt.attlist, db.prompt.inlines* } +} +div { + db.envar.role.attribute = attribute role { text } + db.envar.attlist = + db.envar.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.envar = + + ## A software environment variable + element envar { db.envar.attlist, db._text } +} +div { + db.filename.class.enumeration = + + ## A device + "devicefile" + | + ## A directory + "directory" + | + ## A filename extension + "extension" + | + ## A header file (as for a programming language) + "headerfile" + | + ## A library file + "libraryfile" + | + ## A partition (as of a hard disk) + "partition" + | + ## A symbolic link + "symlink" + db.filename.class.attribute = + + ## Identifies the class of filename + attribute class { db.filename.class.enumeration } + db.filename.path.attribute = + + ## Specifies the path of the filename + attribute path { text } + db.filename.role.attribute = attribute role { text } + db.filename.attlist = + db.filename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.filename.path.attribute? + & db.filename.class.attribute? + db.filename = + + ## The name of a file + element filename { db.filename.attlist, db._text } +} +div { + db.command.role.attribute = attribute role { text } + db.command.attlist = + db.command.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.command = + + ## The name of an executable program or other software command + element command { db.command.attlist, db._text } +} +div { + db.computeroutput.role.attribute = attribute role { text } + db.computeroutput.attlist = + db.computeroutput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.computeroutput = + + ## Data, generally text, displayed or presented by a computer + element computeroutput { + db.computeroutput.attlist, db.computeroutput.inlines* + } +} +div { + db.userinput.role.attribute = attribute role { text } + db.userinput.attlist = + db.userinput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.userinput = + + ## Data entered by the user + element userinput { db.userinput.attlist, db.userinput.inlines* } +} +div { + db.cmdsynopsis.role.attribute = attribute role { text } + db.cmdsynopsis.sepchar.attribute = + + ## Specifies the character that should separate the command and its top-level arguments + attribute sepchar { text } + db.cmdsynopsis.cmdlength.attribute = + + ## Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + attribute cmdlength { text } + db.cmdsynopsis.label.attribute = db.label.attribute + db.cmdsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.cmdsynopsis.attlist = + db.cmdsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.cmdsynopsis.sepchar.attribute? + & db.cmdsynopsis.cmdlength.attribute? + & db.cmdsynopsis.label.attribute? + & db.cmdsynopsis.packageref.attribute? + db.cmdsynopsis.info = db._info.title.forbidden + db.cmdsynopsis = + + ## A syntax summary for a software command + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:cmdsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element cmdsynopsis { + db.cmdsynopsis.attlist, + db.cmdsynopsis.info, + (db.command | db.arg | db.group | db.sbr)+, + db.synopfragment* + } +} +db.rep.enumeration = + + ## Can not be repeated. + "norepeat" + | + ## Can be repeated. + "repeat" +db.rep.attribute = + + ## Indicates whether or not repetition is possible. + [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration } +db.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted without indication. + "plain" + | + ## Formatted to indicate that it is required. + "req" +db.choice.opt.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration } +db.choice.req.attribute = + + ## Indicates optionality. + [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration } +div { + db.arg.role.attribute = attribute role { text } + db.arg.rep.attribute = db.rep.attribute + db.arg.choice.attribute = db.choice.opt.attribute + db.arg.attlist = + db.arg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.arg.rep.attribute? + & db.arg.choice.attribute? + db.arg = + + ## An argument in a cmdsynopsis + element arg { + db.arg.attlist, + (db._text + | db.arg + | db.group + | db.option + | db.synopfragmentref + | db.sbr)* + } +} +div { + db.group.role.attribute = attribute role { text } + db.group.rep.attribute = db.rep.attribute + db.group.choice.attribute = db.choice.opt.attribute + db.group.attlist = + db.group.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.rep.attribute? + & db.group.choice.attribute? + db.group = + + ## A group of elements in a cmdsynopsis + element group { + db.group.attlist, + (db.arg + | db.group + | db.option + | db.synopfragmentref + | db.replaceable + | db.sbr)+ + } +} +div { + db.sbr.role.attribute = attribute role { text } + db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes + db.sbr = + + ## An explicit line break in a command synopsis + element sbr { db.sbr.attlist, empty } +} +div { + db.synopfragment.role.attribute = attribute role { text } + db.synopfragment.attlist = + db.synopfragment.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.synopfragment = + + ## A portion of a cmdsynopsis broken out from the main body of the synopsis + element synopfragment { + db.synopfragment.attlist, (db.arg | db.group)+ + } +} +div { + db.synopfragmentref.role.attribute = attribute role { text } + db.synopfragmentref.attlist = + db.synopfragmentref.role.attribute? + & db.common.attributes + & db.linkend.attribute + db.synopfragmentref = + + ## A reference to a fragment of a command synopsis + [ + s:pattern [ + s:title [ "Synopsis fragment type constraint" ] + s:rule [ + context = "db:synopfragmentref" + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on synopfragmentref must point to a synopfragment." + ] + ] + ] + ] + element synopfragmentref { db.synopfragmentref.attlist, text } +} +db.programming.inlines = + db.function + | db.parameter + | db.varname + | db.returnvalue + | db.type + | db.classname + | db.exceptionname + | db.interfacename + | db.methodname + | db.modifier + | db.initializer + | db.buildtarget + | db.oo.inlines + | db.templatename + | db.macroname + | db.unionname + | db.enumname + | db.enumvalue + | db.enumidentifier + | db.typedefname +db.oo.inlines = db.ooclass | db.ooexception | db.oointerface +db.synopsis.blocks = + (db.funcsynopsis + | db.classsynopsis + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis + | db.enumsynopsis + | db.typedefsynopsis + | db.packagesynopsis + | db.macrosynopsis + | db.unionsynopsis) + | db.cmdsynopsis +div { + db.synopsis.role.attribute = attribute role { text } + db.synopsis.label.attribute = db.label.attribute + db.synopsis.attlist = + db.synopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.synopsis.label.attribute? + db.synopsis = + + ## A general-purpose element for representing the syntax of commands or functions + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:synopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element synopsis { db.synopsis.attlist, db.verbatim.contentmodel } +} +div { + db.synopsisinfo.role.attribute = attribute role { text } + db.synopsisinfo.attlist = + db.synopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.synopsisinfo = + + ## Information supplementing synopsis + element synopsisinfo { + db.synopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcsynopsis.info = db._info.title.forbidden + db.funcsynopsis.role.attribute = attribute role { text } + db.funcsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.funcsynopsis.attlist = + db.funcsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.funcsynopsis.packageref.attribute? + db.funcsynopsis = + + ## The syntax summary for a function definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:funcsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element funcsynopsis { + db.funcsynopsis.attlist, + db.funcsynopsis.info, + (db.funcsynopsisinfo | db.funcprototype)+ + } +} +div { + db.funcsynopsisinfo.role.attribute = attribute role { text } + db.funcsynopsisinfo.attlist = + db.funcsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.funcsynopsisinfo = + + ## Information supplementing the funcdefs of a funcsynopsis + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:funcsynopsisinfo" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element funcsynopsisinfo { + db.funcsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcprototype.role.attribute = attribute role { text } + db.funcprototype.attlist = + db.funcprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcprototype = + + ## The prototype of a function + element funcprototype { + db.funcprototype.attlist, + db.modifier*, + db.funcdef, + (db.void + | db.varargs + | ((db.paramdef | db.group.paramdef)+, db.varargs?)), + db.modifier* + } +} +div { + db.funcdef.role.attribute = attribute role { text } + db.funcdef.attlist = + db.funcdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcdef = + + ## A function (subroutine) name and its return type + element funcdef { + db.funcdef.attlist, + (db._text | db.type | db.templatename | db.void | db.function)* + } +} +div { + db.function.role.attribute = attribute role { text } + db.function.attlist = + db.function.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.function = + + ## The name of a function or subroutine, as in a programming language + element function { db.function.attlist, db._text } +} +div { + db.void.role.attribute = attribute role { text } + db.void.attlist = + db.void.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.void = + + ## An empty element in a function synopsis indicating that the function in question takes no arguments + element void { db.void.attlist, empty } +} +div { + db.varargs.role.attribute = attribute role { text } + db.varargs.attlist = + db.varargs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varargs = + + ## An empty element in a function synopsis indicating a variable number of arguments + element varargs { db.varargs.attlist, empty } +} +div { + db.group.paramdef.role.attribute = attribute role { text } + db.group.paramdef.choice.attribute = db.choice.opt.attribute + db.group.paramdef.attlist = + db.group.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.paramdef.choice.attribute? + db.group.paramdef = + + ## A group of parameters + element group { + db.group.paramdef.attlist, (db.paramdef | db.group.paramdef)+ + } +} +div { + db.paramdef.role.attribute = attribute role { text } + db.paramdef.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted to indicate that it is required. + "req" + db.paramdef.choice.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] + attribute choice { db.paramdef.choice.enumeration } + db.paramdef.attlist = + db.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.paramdef.choice.attribute? + db.paramdef = + + ## Information about a function parameter in a programming language + element paramdef { + db.paramdef.attlist, + (db._text + | db.initializer + | db.modifier + | db.type + | db.templatename + | db.parameter + | db.funcparams)* + } +} +div { + db.funcparams.role.attribute = attribute role { text } + db.funcparams.attlist = + db.funcparams.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcparams = + + ## Parameters for a function referenced through a function pointer in a synopsis + element funcparams { db.funcparams.attlist, db._text } +} +div { + db.classsynopsis.info = db._info.title.forbidden + db.classsynopsis.role.attribute = attribute role { text } + db.classsynopsis.class.enumeration = + + ## This is the synopsis of a class + "class" + | + ## This is the synopsis of an interface + "interface" + db.classsynopsis.class.attribute = + + ## Specifies the nature of the synopsis + attribute class { db.classsynopsis.class.enumeration } + db.classsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.classsynopsis.attlist = + db.classsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.classsynopsis.class.attribute? + & db.classsynopsis.packageref.attribute? + db.classsynopsis = + + ## The syntax summary for a class definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:classsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element classsynopsis { + db.classsynopsis.attlist, + db.classsynopsis.info, + db.classsynopsisinfo*, + db.templatename*, + db.oo.inlines, + (db.template + | db.ooexception + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis + | db.classsynopsisinfo)* + } +} +div { + db.classsynopsisinfo.role.attribute = attribute role { text } + db.classsynopsisinfo.attlist = + db.classsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.classsynopsisinfo = + + ## Information supplementing the contents of a classsynopsis + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:classsynopsisinfo" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element classsynopsisinfo { + db.classsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.ooclass.role.attribute = attribute role { text } + db.ooclass.attlist = + db.ooclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooclass = + + ## A class in an object-oriented programming language + element ooclass { + db.ooclass.attlist, + (db.package | db.modifier)*, + db.classname, + db.modifier* + } +} +div { + db.oointerface.role.attribute = attribute role { text } + db.oointerface.attlist = + db.oointerface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.oointerface = + + ## An interface in an object-oriented programming language + element oointerface { + db.oointerface.attlist, + (db.package | db.modifier)*, + db.interfacename, + db.modifier* + } +} +div { + db.ooexception.role.attribute = attribute role { text } + db.ooexception.attlist = + db.ooexception.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooexception = + + ## An exception in an object-oriented programming language + element ooexception { + db.ooexception.attlist, + (db.package | db.modifier)*, + db.exceptionname, + db.modifier* + } +} +db.modifier.xml.space.attribute = + + ## Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + attribute xml:space { + + ## Extra whitespace and line breaks must be preserved. + [ + # Ideally the definition of xml:space used on modifier would be + # different from the definition used on the verbatim elements. The + # verbatim elements forbid the use of xml:space="default" which + # wouldn't be a problem on modifier. But doing that causes the + # generated XSD schemas to be broken so I'm just reusing the existing + # definition for now. It won't be backwards incompatible to fix this + # problem in the future. + # | ## Extra whitespace and line breaks are not preserved. + # "default" + + ] + "preserve" + } +div { + db.modifier.role.attribute = attribute role { text } + db.modifier.attlist = + db.modifier.xml.space.attribute? + & db.modifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.modifier = + + ## Modifiers in a synopsis + element modifier { db.modifier.attlist, db._text } +} +div { + db.interfacename.role.attribute = attribute role { text } + db.interfacename.attlist = + db.interfacename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.interfacename = + + ## The name of an interface + element interfacename { db.interfacename.attlist, db._text } +} +div { + db.exceptionname.role.attribute = attribute role { text } + db.exceptionname.attlist = + db.exceptionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.exceptionname = + + ## The name of an exception + element exceptionname { db.exceptionname.attlist, db._text } +} +div { + db.fieldsynopsis.info = db._info.title.forbidden + db.fieldsynopsis.role.attribute = attribute role { text } + db.fieldsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.fieldsynopsis.attlist = + db.fieldsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.fieldsynopsis.packageref.attribute? + db.fieldsynopsis = + + ## The name of a field in a class definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:fieldsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element fieldsynopsis { + db.fieldsynopsis.attlist, + db.fieldsynopsis.info, + db.synopsisinfo*, + db.modifier*, + (db.type | db.templatename)*, + db.varname, + db.modifier*, + db.initializer?, + db.synopsisinfo* + } +} +div { + db.initializer.role.attribute = attribute role { text } + db.initializer.attlist = + db.initializer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.initializer.inlines = db._text | db.mathphrase | db.markup.inlines + db.initializer = + + ## The initializer for a fieldsynopsis + element initializer { + db.initializer.attlist, db.initializer.inlines* + } +} +div { + db.constructorsynopsis.info = db._info.title.forbidden + db.constructorsynopsis.role.attribute = attribute role { text } + db.constructorsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.constructorsynopsis.attlist = + db.constructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.constructorsynopsis.packageref.attribute? + db.constructorsynopsis = + + ## A syntax summary for a constructor + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:constructorsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element constructorsynopsis { + db.constructorsynopsis.attlist, + db.constructorsynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.methodname?, + ((db.methodparam | db.group.methodparam)+ | db.void?), + db.modifier*, + db.exceptionname*, + db.synopsisinfo* + } +} +div { + db.destructorsynopsis.info = db._info.title.forbidden + db.destructorsynopsis.role.attribute = attribute role { text } + db.destructorsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.destructorsynopsis.attlist = + db.destructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.destructorsynopsis.packageref.attribute? + db.destructorsynopsis = + + ## A syntax summary for a destructor + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:destructorsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element destructorsynopsis { + db.destructorsynopsis.attlist, + db.destructorsynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.methodname?, + ((db.methodparam | db.group.methodparam)+ | db.void?), + db.modifier*, + db.exceptionname*, + db.synopsisinfo* + } +} +div { + db.methodsynopsis.info = db._info.title.forbidden + db.methodsynopsis.role.attribute = attribute role { text } + db.methodsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.methodsynopsis.attlist = + db.methodsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.methodsynopsis.packageref.attribute? + db.methodsynopsis = + + ## A syntax summary for a method + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:methodsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element methodsynopsis { + db.methodsynopsis.attlist, + db.methodsynopsis.info, + db.synopsisinfo*, + (db.templatename | db.modifier)*, + (db.type | db.void)?, + db.methodname, + db.templatename*, + ((db.methodparam | db.group.methodparam)+ | db.void), + (db.exceptionname | db.modifier | db.templatename)*, + db.synopsisinfo* + } +} +div { + db.methodname.role.attribute = attribute role { text } + db.methodname.attlist = + db.methodname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.methodname = + + ## The name of a method + element methodname { db.methodname.attlist, db._text } +} +div { + db.methodparam.role.attribute = attribute role { text } + db.methodparam.rep.attribute = db.rep.attribute + db.methodparam.choice.attribute = db.choice.req.attribute + db.methodparam.attlist = + db.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.methodparam.rep.attribute? + & db.methodparam.choice.attribute? + db.methodparam = + + ## Parameters to a method + element methodparam { + db.methodparam.attlist, + (db.modifier | db.type | db.templatename)*, + ((db.parameter, db.initializer?) | db.funcparams), + db.modifier* + } +} +div { + db.group.methodparam.role.attribute = attribute role { text } + db.group.methodparam.choice.attribute = db.choice.opt.attribute + db.group.methodparam.attlist = + db.group.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.methodparam.choice.attribute? + db.group.methodparam = + + ## A group of method parameters + element group { + db.group.methodparam.attlist, + (db.methodparam | db.group.methodparam)+ + } +} +div { + db.varname.role.attribute = attribute role { text } + db.varname.attlist = + db.varname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varname = + + ## The name of a variable + element varname { db.varname.attlist, db._text } +} +div { + db.buildtarget.role.attribute = attribute role { text } + db.buildtarget.attlist = + db.buildtarget.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.buildtarget = + + ## Target of a build + element buildtarget { db.buildtarget.attlist, db._text } +} +div { + db.returnvalue.role.attribute = attribute role { text } + db.returnvalue.attlist = + db.returnvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.returnvalue = + + ## The value returned by a function + element returnvalue { db.returnvalue.attlist, db._text } +} +div { + db.type.role.attribute = attribute role { text } + db.type.class.enumeration = + + ## Combined type is union of nested types + "union" + | + ## Combined type is intersection of nested types + "intersection" + db.type.class.attribute = + + ## Specifies the way how are nested types combined together + attribute class { db.type.class.enumeration } + db.type.attlist = + db.type.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.type.class.attribute? + db.type = + + ## The classification of a value + element type { + db.type.attlist, (db._text | db.programming.inlines)* + } +} +div { + db.classname.role.attribute = attribute role { text } + db.classname.attlist = + db.classname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.classname = + + ## The name of a class, in the object-oriented programming sense + element classname { db.classname.attlist, db._text } +} +div { + db.templatename.role.attribute = attribute role { text } + db.templatename.attlist = + db.templatename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.templatename = + + ## The identifier for a template, in the generic programming sense + element templatename { db.templatename.attlist, db._text } +} +div { + db.template.role.attribute = attribute role { text } + db.template.attlist = + db.template.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.template = + + ## The definition of a template, in the generic programming sense + element template { + db.template.attlist, + (((db.modifier | db.type | db._text)*, + db.templatename, + (db.modifier | db.type | db._text)*) + | db.specializedtemplate) + } +} +div { + db.specializedtemplate.role.attribute = attribute role { text } + db.specializedtemplate.attlist = + db.specializedtemplate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.specializedtemplate = + + ## The specialization of a template identifier, in the generic programming sense + element specializedtemplate { + db.specializedtemplate.attlist, + (db.modifier | db.type | db._text)* + } +} +div { + db.packagesynopsis.info = db._info.title.forbidden + db.packagesynopsis.role.attribute = attribute role { text } + db.packagesynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.packagesynopsis.attlist = + db.packagesynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.packagesynopsis.packageref.attribute? + db.packagesynopsis = + + ## The syntax summary for a package definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:packagesynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element packagesynopsis { + db.packagesynopsis.attlist, + db.packagesynopsis.info, + db.synopsisinfo*, + db.modifier*, + db.package, + db.modifier*, + (db.synopsis.blocks | db.synopsisinfo)* + } +} +div { + db.macroname.role.attribute = attribute role { text } + db.macroname.attlist = + db.macroname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macroname = + + ## The name of a macro (a code-generating function) + element macroname { db.macroname.attlist, db._text } +} +div { + db.macrosynopsis.info = db._info.title.forbidden + db.macrosynopsis.role.attribute = attribute role { text } + db.macrosynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.macrosynopsis.attlist = + db.macrosynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.macrosynopsis.packageref.attribute? + db.macrosynopsis = + + ## The syntax summary for a macro definition (code-generating function) + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:macrosynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element macrosynopsis { + db.macrosynopsis.attlist, + db.macrosynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.macroname, + (db.package | db.modifier)*, + db.macroprototype+, + db.synopsisinfo* + } +} +div { + db.macroprototype.role.attribute = attribute role { text } + db.macroprototype.attlist = + db.macroprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macroprototype = + + ## The prototype of a macro (code-generating function) + element macroprototype { + db.macroprototype.attlist, + db.modifier*, + db.macrodef, + (db.void + | db.varargs + | ((db.paramdef | db.group.paramdef)+, db.varargs?)), + db.modifier* + } +} +div { + db.macrodef.role.attribute = attribute role { text } + db.macrodef.attlist = + db.macrodef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.macrodef = + + ## A macro name and its return type + element macrodef { + db.macrodef.attlist, (db.type | db.templatename)*, db.macroname + } +} +div { + db.unionname.role.attribute = attribute role { text } + db.unionname.attlist = + db.unionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.unionname = + + ## The name of a union of types + element unionname { db.unionname.attlist, db._text } +} +div { + db.union.role.attribute = attribute role { text } + db.union.attlist = + db.union.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.union = + + ## The definition of a union of types, which may be more than a name + element union { db.union.attlist, db.type+ } +} +div { + db.unionsynopsis.info = db._info.title.forbidden + db.unionsynopsis.role.attribute = attribute role { text } + # N.B. the enumeration is explicitly identical to the enumeration + # on enumsynopsis by default. + db.unionsynopsis.ordered.attribute = + + ## Indicates how the value of a union is specified. + attribute ordered { db.enumsynopsis.ordered.enumeration } + db.unionsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.unionsynopsis.attlist = + db.unionsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.unionsynopsis.ordered.attribute? + & db.unionsynopsis.packageref.attribute? + db.unionsynopsis = + + ## The syntax summary for a union-of-types definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:unionsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element unionsynopsis { + db.unionsynopsis.attlist, + db.unionsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.unionname?, + db.union, + (db.package | db.modifier)*, + db.synopsisinfo* + } +} +div { + db.enumname.role.attribute = attribute role { text } + db.enumname.attlist = + db.enumname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumname = + + ## The name of an enumeration + element enumname { db.enumname.attlist, db._text } +} +div { + db.enumvalue.role.attribute = attribute role { text } + db.enumvalue.attlist = + db.enumvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumvalue = + + ## The value an enumerated type can take + element enumvalue { db.enumvalue.attlist, db._text } +} +div { + db.enumitemdescription.role.attribute = attribute role { text } + db.enumitemdescription.attlist = + db.enumitemdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumitemdescription = + + ## The description of a value an enumerated type can take + element enumitemdescription { + db.enumitemdescription.attlist, db.all.inlines* + } +} +div { + db.enumidentifier.role.attribute = attribute role { text } + db.enumidentifier.attlist = + db.enumidentifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumidentifier = + + ## The identifier of a value an enumerated type can take + element enumidentifier { db.enumidentifier.attlist, db._text } +} +div { + db.enumitem.role.attribute = attribute role { text } + db.enumitem.attlist = + db.enumitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.enumitem = + + ## A value an enumerated type can take and its description + element enumitem { + db.enumitem.attlist, + db.enumidentifier, + db.enumvalue*, + db.enumitemdescription? + } +} +div { + db.enumsynopsis.info = db._info.title.forbidden + db.enumsynopsis.role.attribute = attribute role { text } + db.enumsynopsis.ordered.enumeration = + + ## Value of enum is specified explicitly using enumvalue + "0" + | + ## Value of enum is inferred from its position + "1" + db.enumsynopsis.ordered.attribute = + + ## Indicates how the value of an enumeration is specified. + attribute ordered { db.enumsynopsis.ordered.enumeration } + db.enumsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.enumsynopsis.attlist = + db.enumsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.enumsynopsis.ordered.attribute? + & db.enumsynopsis.packageref.attribute? + db.enumsynopsis = + + ## The syntax summary for an enumerated-type definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:enumsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element enumsynopsis { + db.enumsynopsis.attlist, + db.enumsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + (db.enumname, db.modifier*)?, + db.enumitem+, + db.synopsisinfo* + } +} +div { + db.typedefname.role.attribute = attribute role { text } + db.typedefname.attlist = + db.typedefname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.typedefname = + + ## The name of a type alias + element typedefname { db.typedefname.attlist, db._text } +} +div { + db.typedefsynopsis.info = db._info.title.forbidden + db.typedefsynopsis.role.attribute = attribute role { text } + db.typedefsynopsis.packageref.attribute = + + ## Identifies the package to which this synopsis (logically) belongs + attribute packageref { text } + db.typedefsynopsis.attlist = + db.typedefsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.typedefsynopsis.packageref.attribute? + db.typedefsynopsis = + + ## The syntax summary for a type-alias definition + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:typedefsynopsis" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element typedefsynopsis { + db.typedefsynopsis.attlist, + db.typedefsynopsis.info, + db.synopsisinfo*, + (db.package | db.modifier)*, + db.typedefname, + (db.package | db.modifier)*, + db.synopsisinfo* + } +} +div { + db.programlisting.role.attribute = attribute role { text } + db.programlisting.width.attribute = db.width.characters.attribute + db.programlisting.attlist = + db.programlisting.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.programlisting.width.attribute? + db.programlisting = + + ## A literal listing of all or part of a program + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:programlisting" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element programlisting { + db.programlisting.attlist, db.verbatim.contentmodel + } +} +db.admonition.blocks = + db.caution | db.danger | db.important | db.note | db.tip | db.warning +db.admonition.contentmodel = db._info.title.only, db.all.blocks+ +div { + db.caution.role.attribute = attribute role { text } + db.caution.attlist = + db.caution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caution = + + ## A note of caution + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:caution" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of caution" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:caution" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element caution { db.caution.attlist, db.admonition.contentmodel } +} +div { + db.danger.role.attribute = attribute role { text } + db.danger.attlist = + db.danger.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.danger = + + ## An admonition set off from the text indicating hazardous situation + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:danger" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of danger" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:danger" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element danger { db.danger.attlist, db.admonition.contentmodel } +} +div { + db.important.role.attribute = attribute role { text } + db.important.attlist = + db.important.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.important = + + ## An admonition set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:important" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of important" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:important" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element important { + db.important.attlist, db.admonition.contentmodel + } +} +div { + db.note.role.attribute = attribute role { text } + db.note.attlist = + db.note.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.note = + + ## A message set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:note" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of note" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:note" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element note { db.note.attlist, db.admonition.contentmodel } +} +div { + db.tip.role.attribute = attribute role { text } + db.tip.attlist = + db.tip.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tip = + + ## A suggestion to the user, set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:tip" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of tip" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:tip" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element tip { db.tip.attlist, db.admonition.contentmodel } +} +div { + db.warning.role.attribute = attribute role { text } + db.warning.attlist = + db.warning.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.warning = + + ## An admonition set off from the text + [ + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:caution)" + "caution must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:danger)" + "danger must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:important)" + "important must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:note)" + "note must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:tip)" + "tip must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Element exclusion" ] + s:rule [ + context = "db:warning" + s:assert [ + test = "not(.//db:warning)" + "warning must not occur among the children or descendants of warning" + ] + ] + ] + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:warning" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element warning { db.warning.attlist, db.admonition.contentmodel } +} +db.error.inlines = + db.errorcode | db.errortext | db.errorname | db.errortype +div { + db.errorcode.role.attribute = attribute role { text } + db.errorcode.attlist = + db.errorcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorcode = + + ## An error code + element errorcode { db.errorcode.attlist, db._text } +} +div { + db.errorname.role.attribute = attribute role { text } + db.errorname.attlist = + db.errorname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorname = + + ## An error name + element errorname { db.errorname.attlist, db._text } +} +div { + db.errortext.role.attribute = attribute role { text } + db.errortext.attlist = + db.errortext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortext = + + ## An error message. + element errortext { db.errortext.attlist, db._text } +} +div { + db.errortype.role.attribute = attribute role { text } + db.errortype.attlist = + db.errortype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortype = + + ## The classification of an error message + element errortype { db.errortype.attlist, db._text } +} +db.systemitem.inlines = db._text | db.co +div { + db.systemitem.class.enumeration = + + ## A daemon or other system process (syslogd) + "daemon" + | + ## A domain name (example.com) + "domainname" + | + ## An ethernet address (00:05:4E:49:FD:8E) + "etheraddress" + | + ## An event of some sort (SIGHUP) + "event" + | + ## An event handler of some sort (hangup) + "eventhandler" + | + ## A filesystem (ext3) + "filesystem" + | + ## A fully qualified domain name (my.example.com) + "fqdomainname" + | + ## A group name (wheel) + "groupname" + | + ## A network interface (eth0) + "interface" + | + ## An IP address (127.0.0.1) + "ipaddress" + | + ## A library (libncurses) + "library" + | + ## A macro + "macro" + | + ## A netmask (255.255.255.192) + "netmask" + | + ## A newsgroup (comp.text.xml) + "newsgroup" + | + ## An operating system name (Hurd) + "osname" + | + ## A process (gnome-cups-icon) + "process" + | + ## A protocol (ftp) + "protocol" + | + ## A resource + "resource" + | + ## A security context (a role, permission, or security token, for example) + "securitycontext" + | + ## A server (mail.example.com) + "server" + | + ## A service (ppp) + "service" + | + ## A system name (hephaistos) + "systemname" + | + ## A user name (ndw) + "username" + db.systemitem.class-enum.attribute = + + ## Identifies the nature of the system item + attribute class { db.systemitem.class.enumeration }? + db.systemitem.class-other.attribute = + + ## Identifies the nature of the non-standard system item + attribute otherclass { xsd:NMTOKEN } + db.systemitem.class-other.attributes = + + ## Identifies the kind of systemitemgraphic identifier + attribute class { + + ## Indicates that the system item is some 'other' kind. + "other" + } + & db.systemitem.class-other.attribute + db.systemitem.class.attribute = + db.systemitem.class-enum.attribute + | db.systemitem.class-other.attributes + db.systemitem.role.attribute = attribute role { text } + db.systemitem.attlist = + db.systemitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.systemitem.class.attribute? + db.systemitem = + + ## A system-related item or term + element systemitem { db.systemitem.attlist, db.systemitem.inlines* } +} +div { + db.option.role.attribute = attribute role { text } + db.option.attlist = + db.option.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.option = + + ## An option for a software command + element option { db.option.attlist, db._text } +} +div { + db.optional.role.attribute = attribute role { text } + db.optional.attlist = + db.optional.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.optional = + + ## Optional information + element optional { db.optional.attlist, (db._text | db.optional)* } +} +div { + db.property.role.attribute = attribute role { text } + db.property.attlist = + db.property.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.property = + + ## A unit of data associated with some part of a computer system + element property { db.property.attlist, db._text } +} +div { + db.topic.status.attribute = db.status.attribute + db.topic.role.attribute = attribute role { text } + db.topic.type.attribute = + + ## Identifies the topic type + attribute type { text } + db.topic.attlist = + db.topic.role.attribute? + & db.topic.type.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.topic.status.attribute? + db.topic.info = db._info.title.req + db.topic = + + ## A modular unit of documentation not part of any particular narrative flow + [ + s:pattern [ + s:title [ "Root must have version" ] + s:rule [ + context = "/db:topic" + s:assert [ + test = "@version" + "If this element is the root element, it must have a version attribute." + ] + ] + ] + ] + element topic { + db.topic.attlist, + db.topic.info, + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* + } +} +div { + db.any.other.attribute = attribute * - local:* { text } + db.xi.include.attlist = + attribute href { + xsd:anyURI { pattern = "[^#]+" } + }?, + [ a:defaultValue = "xml" ] attribute parse { "xml" | "text" }?, + attribute xpointer { text }?, + attribute fragid { text }?, + attribute set-xml-id { text }?, + attribute encoding { text }?, + attribute accept { text }?, + attribute accept-language { text }?, + db.any.other.attribute* + db.xi.include = + + ## An XInclude + element xi:include { db.xi.include.attlist, db.xi.fallback? } +} +div { + # The fallback element has no attributes + db.xi.fallback = + + ## An XInclude fallback + element xi:fallback { db.all.blocks+ | db.all.inlines+ | db._any* } +} diff --git a/catalog/docbook5.2/rng/docbookxi.rng b/catalog/docbook5.2/rng/docbookxi.rng new file mode 100755 index 0000000..c6b499e --- /dev/null +++ b/catalog/docbook5.2/rng/docbookxi.rng @@ -0,0 +1,18679 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Any attribute, including any attribute in any namespace + + + + + + Any attribute in any other explicit namespace + + + + + + + + + + + + + + Any element from almost any namespace + + + + + + + + + + + + + + +
+ + + Designates the computer or chip architecture to which the element applies + + + + + Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + + + + + provides a standard place for application-specific effectivity + + + + + Indicates standards conformance characteristics of the element + + + + + Indicates the operating system to which the element is applicable + + + + + Indicates the editorial revision to which the element belongs + + + + + Indicates something about the security level associated with the element to which it applies + + + + + Indicates the level of user experience for which the element applies + + + + + Indicates the computer vendor to which the element applies + + + + + Indicates the word size (width in bits) of the computer architecture to which the element applies + + + + + Indicates the output format (for example, print or epub) to which the element applies + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Points to the element whose content is to be used as the text of the link + + + + + + Points to an internal link target by identifying the value of its xml:id attribute + + + + + + Points to one or more internal link targets by identifying the value of their xml:id attributes + + + + + + Identifies a link target with a URI + + + + + + Identifies the XLink link type + simple + An XLink simple link type + + + + + Identifies the XLink role of the link + + + + + + Identifies the XLink arcrole of the link + + + + + + Identifies the XLink title of the link + + + + + new + An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + replace + An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. + embed + An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + other + The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior. + none + The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + + + + + Identifies the XLink show behavior of the link + + + + + + onLoad + An application should traverse to the ending resource immediately on loading the starting resource. + onRequest + An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + other + The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior. + none + The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior. + + + + + Identifies the XLink actuate behavior of the link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Identifies the unique ID value of the element + + + + + + Specifies the DocBook version of the element and its descendants + + + + + Specifies the natural language of the element and its descendants + + + + + Specifies the base URI of the element and its descendants + + + + + + Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + + + + + Provides the text that is to be generated for a cross reference to the element + + + + + Specifies a keyword or keywords identifying additional style information + + + + + changed + The element has been changed. + added + The element is new (has been added to the document). + deleted + The element has been deleted. + off + Explicitly turns off revision markup for this element. + + + + + Identifies the revision status of the element + + + + + + ltr + Left-to-right text + rtl + Right-to-left text + lro + Left-to-right override + rlo + Right-to-left override + + + + + Identifies the direction of text in an element + + + + + + The RDFa Lite vocab + + + + + + The RDFa Lite typeof + + + + + The RDFa Lite property + + + + + The RDFa Lite resource + + + + + The RDFa Lite prefix + + + + + + + + + + + + + + + + + + + + + + + + none + No ID fixup strategy + suffix + ID fixup by concatenating suffixes + auto + ID fixup by creating unique values + + + + + The transclusion ID fixup strategy + + + + + + The transclusion suffix to use when the suffix ID fixup strategy is employed + + Suffix fixup must be specified + + If a suffix is specified, suffix ID fixup must also be specified. + + + + + + + user + No link scope adjustments are made + local + The link scopes are adjusted with the suffix property + near + The link scopes are adjusted based on proximity + global + The link scopes are adjusted based on document order + + + + + The transclusion link scope adjustment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the format of the data + + + + + Indentifies the location of the data by URI + + + + Identifies the location of the data by external identifier (entity name) + + + + + + + continues + Line numbering continues from the immediately preceding element with the same name. + restarts + Line numbering restarts (begins at 1, usually). + + + + + Determines whether line numbering continues from the previous element or restarts + + + + + + numbered + Lines are numbered. + unnumbered + Lines are not numbered. + + + + + Determines whether lines are numbered + + + + + + Specifies the initial line number + + + + + + Identifies the language (i.e. programming language) of the verbatim content + + + + + Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not + preserve + Whitespace must be preserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies an identifying string for presentation purposes + + + + + Specifies the width (in characters) of the element + + + + + + compact + The spacing should be "compact". + normal + The spacing should be "normal". + + + + + Specifies (a hint about) the spacing of the content + + + + + + 0 + The element should be rendered in the current text flow (with the flow column width). + 1 + The element should be rendered across the full text page. + + + + + Indicates if the element is rendered across the column or the page + + + + + + Identifies the language (i.e. programming language) of the content + + + + + optional + The content describes an optional step or steps. + required + The content describes a required step or steps. + + + + + Specifies if the content is required or optional + + + + + + Specifies style information to be used when rendering the float + + + + + Specifies the width of the element + + + + + Specifies the depth of the element + + + + + Specifies the width of the content rectangle + + + + + Specifies the depth of the content rectangle + + + + + 0 + False (do not scale-to-fit; anamorphic scaling may occur) + 1 + True (scale-to-fit; anamorphic scaling is forbidden) + + + + + Specifies the scaling factor + + + + + + Specifies a classid for a media object player + + + + + Specifies the autoplay setting for a media object player + + + + + center + Centered horizontally + char + Aligned horizontally on the specified character + justify + Fully justified (left and right margins or edges) + left + Left aligned + right + Right aligned + + + + + bottom + Aligned on the bottom of the region + middle + Centered vertically + top + Aligned on the top of the region + + + + + doi + A digital object identifier. + isbn + An international standard book number. + isrn + An international standard technical report number (ISO 10444). + issn + An international standard serial number. + istc + An international standard text code. + libraryofcongress + A Library of Congress reference number. + pubsnumber + A publication number (an internal number or possibly organizational standard). + uri + A Uniform Resource Identifier + + + + + + Identifies the kind of bibliographic identifier + + + + + + + Identifies the nature of the non-standard bibliographic identifier + + + + + + + Identifies the kind of bibliographic identifier + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + article + An article + bbs + A bulletin board system + book + A book + cdrom + A CD-ROM + chapter + A chapter (as of a book) + dvd + A DVD + emailmessage + An email message + gopher + A gopher page + journal + A journal + manuscript + A manuscript + newsposting + A posting to a newsgroup + part + A part (as of a book) + refentry + A reference entry + section + A section (as of a book or article) + series + A series + set + A set (as of books) + webpage + A web page + wiki + A wiki page + other + Some other kind of work + + + + + + + + + Identifies the nature of the published work + + + + + + + Identifies the nature of some other kind of published work + + + + + + + Identifies that this is some other kind of published work + other + Indicates that the published work is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text of the title of a section of a document or of a formal block-level element + + + + + + +
+
+ + + + + + + + + + + + + + + The abbreviation of a title + + + + + + +
+
+ + + + + + + + + + + + + + + The subtitle of a document + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with a required title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a required title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + +
+
+ + + + + + Identifies the controlled vocabulary used by this set's terms + + + + + + + + + + + + + + + + + + A set of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + Specifies a ranking for this subject relative to other subjects in the same set + + + + + + + + + + + + + + + + + One of a group of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + + + + + + + + + + A term in a group of terms describing the subject matter of a document + + + + +
+
+ + + + + + + + + + + + + + + A set of keywords describing the content of a document + + + + + + +
+
+ + + + + + + + + + + + + + + One of a set of keywords describing the content of a document + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + Identifies the type of procedure + + + + + + + + + + + + + + + + + + + + + A list of operations to be performed in a well-defined sequence + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A unit of action in a procedure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + Alternative steps in a procedure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for steps that occur within steps in a procedure + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for identifying the results of a procedure or step + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + A portion of a document that is isolated from the main narrative flow + + Element exclusion + + sidebar must not occur among the children or descendants of sidebar + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short description or note about a person + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A quotation set off from the main text + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The source of a block quote or epigraph + + + + + + + + + + + + +
+
+ + + sect1 + Render as a first-level section + sect2 + Render as a second-level section + sect3 + Render as a third-level section + sect4 + Render as a fourth-level section + sect5 + Render as a fifth-level section + + + + + + Indicates how the bridge head should be rendered + + + + + + + Identifies the nature of the non-standard rendering + + + + + + + Indicates how the bridge head should be rendered + other + Identifies a non-standard rendering + + + + + + + + + + + + + + + + + + + + + + + + + + + + A free-floating heading + + + + + + +
+
+ + + + + + + + + + + + + + + A remark (or comment) intended for presentation in a draft manuscript + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short inscription at the beginning of a document or component + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + Identifies the desired footnote mark + + + + + + + + + + + + + + + + + + A footnote + + Element exclusion + + footnote must not occur among the children or descendants of footnote + + + + Element exclusion + + example must not occur among the children or descendants of footnote + + + + Element exclusion + + figure must not occur among the children or descendants of footnote + + + + Element exclusion + + table must not occur among the children or descendants of footnote + + + + Element exclusion + + equation must not occur among the children or descendants of footnote + + + + Element exclusion + + sidebar must not occur among the children or descendants of footnote + + + + Element exclusion + + task must not occur among the children or descendants of footnote + + + + Element exclusion + + epigraph must not occur among the children or descendants of footnote + + + + Element exclusion + + caution must not occur among the children or descendants of footnote + + + + Element exclusion + + danger must not occur among the children or descendants of footnote + + + + Element exclusion + + important must not occur among the children or descendants of footnote + + + + Element exclusion + + note must not occur among the children or descendants of footnote + + + + Element exclusion + + tip must not occur among the children or descendants of footnote + + + + Element exclusion + + warning must not occur among the children or descendants of footnote + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph with a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph that contains only text and inline markup, no block elements + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + Identifies the type of mark to be used on items in this list + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a bullet or other dingbat + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + continues + Specifies that numbering should begin where the preceding list left off + restarts + Specifies that numbering should begin again at 1 + + + + + Indicates how list numbering should begin relative to the immediately preceding list + + + + + + Specifies the initial line number + + + + + + ignore + Specifies that numbering should ignore list nesting + inherit + Specifies that numbering should inherit from outer-level lists + + + + + Indicates whether or not item numbering should be influenced by list nesting + + + + + + arabic + Specifies Arabic numeration (1, 2, 3, …) + upperalpha + Specifies upper-case alphabetic numeration (A, B, C, …) + loweralpha + Specifies lower-case alphabetic numeration (a, b, c, …) + upperroman + Specifies upper-case Roman numeration (I, II, III, …) + lowerroman + Specifies lower-case Roman numeration (i, ii, iii …) + + + + + Indicates the desired numeration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a sequentially incremented label + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + Specifies the keyword for the type of mark that should be used on this + item, instead of the mark that would be used by default + + + + + + + + + + + + + + + + + + + + + A wrapper for the elements of a list item + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A segmented list, a list of sets of elements + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of an element of a list item in a segmented list + + + + + + +
+
+ + + + + + + + + + + + + + + A list item in a segmented list + + Cardinality of segments and titles + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a list item in a segmented list + + + + + + +
+
+ + + + + + horiz + A tabular presentation in row-major order. + vert + A tabular presentation in column-major order. + inline + An inline presentation, usually a comma-delimited list. + + + + + Specifies the type of list presentation + + + + + + Specifies the number of columns for horizontal or vertical presentation + + + + + + + + + + + + + + + + + + + + + An undecorated list of single words or short phrases + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a simple list + + + + + + +
+
+ + + + + + Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is composed of a set of one or more terms and an associated description + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for a set of terms and the associated description in a variable list + + + + + + + +
+
+ + + + + + + + + + + + + + + The word or phrase being defined or described in a variable list + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + Identifies the type of example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal example, with a title + + Element exclusion + + example must not occur among the children or descendants of example + + + + Element exclusion + + figure must not occur among the children or descendants of example + + + + Element exclusion + + table must not occur among the children or descendants of example + + + + Element exclusion + + equation must not occur among the children or descendants of example + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed example without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + monospaced + The literal layout should be formatted with a monospaced font + normal + The literal layout should be formatted with the current font + + + + + Specifies the class of literal layout + + + + + + + + + + + + + + + + + + + A block of text in which line breaks and white space are to be reproduced faithfully + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + Text that a user sees or might see on a computer screen + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A representation of what the user sees or might see on a computer screen + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of figure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal figure, generally an illustration, with a title + + Element exclusion + + example must not occur among the children or descendants of figure + + + + Element exclusion + + figure must not occur among the children or descendants of figure + + + + Element exclusion + + table must not occur among the children or descendants of figure + + + + Element exclusion + + equation must not occur among the children or descendants of figure + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Identifies the type of figure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A untitled figure + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A displayed media object (video, audio, image, etc.) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + An inline media object (video, audio, image, and so on) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for video data and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for audio data and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for image data and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a text description of an object and its associated meta-information + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external video data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external audio data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the image data + + + + + + + + + Specifies the vertical alignment of the image data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external image data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + Identifies the encoding of the text in the external file + + + + + + + + + + + + + + + + + + + + Pointer to external text data + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + Specifies the name of the parameter + + + + + Specifies the value of the parameter + + + + + Specifies the type of the value of the parameter + + + + + + + + + + + + + + + + + + Application specific parameters for a media player + + + + +
+
+ + + + + + + + + + + + + + + + + + A caption + + Element exclusion + + example must not occur among the children or descendants of caption + + + + Element exclusion + + figure must not occur among the children or descendants of caption + + + + Element exclusion + + table must not occur among the children or descendants of caption + + + + Element exclusion + + equation must not occur among the children or descendants of caption + + + + Element exclusion + + sidebar must not occur among the children or descendants of caption + + + + Element exclusion + + task must not occur among the children or descendants of caption + + + + Element exclusion + + caution must not occur among the children or descendants of caption + + + + Element exclusion + + danger must not occur among the children or descendants of caption + + + + Element exclusion + + important must not occur among the children or descendants of caption + + + + Element exclusion + + note must not occur among the children or descendants of caption + + + + Element exclusion + + tip must not occur among the children or descendants of caption + + + + Element exclusion + + warning must not occur among the children or descendants of caption + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A real-world address, generally a postal address + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A street address in an address + + + + +
+
+ + + + + + + + + + + + + + + A post office box in an address + + + + +
+
+ + + + + + + + + + + + + + + A postal code in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a city in an address + + + + +
+
+ + + + + + + + + + + + + + + A state or province in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a country + + + + +
+
+ + + + + + + + + + + + + + + A telephone number + + + + +
+
+ + + + + + + + + + + + + + + A fax number + + + + +
+
+ + + + + + + + + + + + + + + Uncategorized information in address + + + + +
+
+ + + + + + + + + + + + + + + The institutional affiliation of an individual + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A brief description of an affiliation + + + + +
+
+ + + + + + + + + + + + + + + The title of an individual in an organization + + + + +
+
+ + + consortium + A consortium + corporation + A corporation + informal + An informal organization + nonprofit + A non-profit organization + + + + + Specifies the nature of the organization + + + + + + Specifies the nature of the organization + other + Indicates a non-standard organization class + + + Identifies the non-standard nature of the organization + + + + + + + + + + + + + + + + + + + + + + + + + + The name of an organization + + + + +
+
+ + + + + + + + + + + + + + + A division of an organization + + + + + + +
+
+ + + + + + + + + + + + + + + The page numbers of an article as published + + + + +
+
+ + + + + + + + + + + + + + + The personal name of an individual + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The name of an individual author + + + + +
+
+ + + + + + + + + + + + + + + Wrapper for author information when a document has multiple authors or collaborators + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Identifies a collaborator + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The initials or other short identifier for an author + + + + +
+
+ + + + + + + + + + + + + + + A person and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An organization and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for document meta-information about a conference + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The dates of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The title of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + An identifier, frequently numerical, associated with a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The contract number of a document + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a contract + + + + +
+
+ + + + + + + + + + + + + + + Copyright information about a document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The year of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the individual or organization that holds a copyright + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + Additional content for the cover of a publication + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + The date of publication or revision of a document + + + + +
+
+ + + + + + + + + + + + + + + The name or number of an edition of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the editor of a document + + + + +
+
+ + + + + + + + + + + + + + + + An identifier for a document + + + + +
+
+ + + + + + + + + + + + + + + + A citation of a bibliographic identifier + + + + +
+
+ + + + + + + + + + + + + + + + The source of a document + + + + +
+
+ + + hasformat + The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + haspart + The described resource includes the referenced resource either physically or logically + hasversion + The described resource has a version, edition, or adaptation, namely, the referenced resource + isformatof + The described resource is the same intellectual content of the referenced resource, but presented in another format + ispartof + The described resource is a physical or logical part of the referenced resource + isreferencedby + The described resource is referenced, cited, or otherwise pointed to by the referenced resource + isreplacedby + The described resource is supplanted, displaced, or superceded by the referenced resource + isrequiredby + The described resource is required by the referenced resource, either physically or logically + isversionof + The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + references + The described resource references, cites, or otherwise points to the referenced resource + replaces + The described resource supplants, displaces, or supersedes the referenced resource + requires + The described resource requires the referenced resource to support its function, delivery, or coherence of content + + + + + + Identifies the type of relationship + + + + + + + + Identifies the type of relationship + othertype + The described resource has a non-standard relationship with the referenced resource + + + + A keyword that identififes the type of the non-standard relationship + + + + + + + + + + + + + + + + + + + + + + + + + + The relationship of a document to another + + + + +
+
+ + + dcmipoint + The DCMI Point identifies a point in space using its geographic coordinates + iso3166 + ISO 3166 Codes for the representation of names of countries + dcmibox + The DCMI Box identifies a region of space using its geographic limits + tgn + The Getty Thesaurus of Geographic Names + + + + + + Specifies the type of spatial coverage + + + + + + + + Specifies the type of spatial coverage + otherspatial + Identifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + dcmiperiod + A specification of the limits of a time interval + w3c-dtf + W3C Encoding rules for dates and times—a profile based on ISO 8601 + + + + + + Specifies the type of temporal coverage + + + + + + + + Specifies the type of temporal coverage + othertemporal + Specifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The spatial or temporal coverage of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A statement of legal obligations or requirements + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + copyeditor + A copy editor + graphicdesigner + A graphic designer + productioneditor + A production editor + technicaleditor + A technical editor + translator + A translator + indexer + An indexer + proofreader + A proof-reader + coverdesigner + A cover designer + interiordesigner + An interior designer + illustrator + An illustrator + reviewer + A reviewer + typesetter + A typesetter + conversion + A converter (a persons responsible for conversion, not an application) + + + + + + Identifies the nature of the contributor + + + + + + + Identifies the nature of the non-standard contribution + + + + + + + Identifies the nature of the contributor + other + Identifies a non-standard contribution + + + + + + + + + + + + + + + + + + + + + + + + + + A person or entity, other than an author or editor, credited in a document + + + + +
+
+ + + + + + + + + + + + + + + The numbers of the pages in a book, for use in a bibliographic entry + + + + +
+
+ + + + + + + + + + + + + + + A summary of the contributions made to a document by a credited source + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a person + + + + +
+
+ + + + + + + + + + + + + + + A given name of a person + + + + +
+
+ + + + + + + + + + + + + + + The given name of a person + + + + +
+
+ + + + + + + + + + + + + + + An inherited or family name; in western cultures the last name + + + + +
+
+ + + + + + + + + + + + + + + The portion of a person's name indicating a relationship to ancestors + + + + +
+
+ + + + + + + + + + + + + + + A component of a person's name that is not a first name, surname, or lineage + + + + +
+
+ + + + + + + + + + + + + + + The printing history of a document + + + + + + +
+
+ + + + + + + + + + + + + + + The date of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The publisher of a document + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of the publisher of a document + + + + +
+
+ + + + + + + + + + + + + + + Information about a particular release of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A history of the revisions to a document + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry describing a single revision in the history of the revisions to a document + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A document revision number + + + + +
+
+ + + + + + + + + + + + + + + A description of a revision to a document + + + + +
+
+ + + + + + + + + + + + + + + A extended description of a revision to a document + + + + + + +
+
+ + + + + + + + + + + + + + + Numbers of the volumes in a series of books + + + + +
+
+ + + + + + + + + + + + + + + The volume number of a document in a set (as of books in a set or articles in a journal) + + + + +
+
+ + + + + + + + + + + + + + + The number of an issue of a journal + + + + +
+
+ + + + + + A name for the metadata element + + + + + The metadata content + + + + + + + + + + + + + + + + + A generic metadata element + + + + + + + + A generic metadata element + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A software or application package + + + + +
+
+ + + + + + + + + + + + + + + An email address + + + + +
+
+ + + + + + + + + + + + + + + A comment on a line in a verbatim listing + + + + +
+
+ + + command + A command + function + A function + option + An option + + + + + Identifies the class of parameter + + + + + + + + + + + + + + + + + + + + + A value or a symbolic reference to a value + + + + +
+ + + + + + +
+ + + command + A command + function + A function + option + An option + parameter + A parameter + + + + + Identifies the nature of the replaceable text + + + + + + + + + + + + + + + + + + + + + Content that may or must be replaced by the user + + + + + + +
+
+ + + + Identifies the type of URI specified + + + + + + + + + + + + + + + + + + + A Uniform Resource Identifier + + + + +
+
+ + + + + + + + + + + + + + + An abbreviation, especially one followed by a period + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An often pronounceable word made from the initial (or selected) letters of a name or phrase + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An inline bibliographic reference to another published work + + + + + + +
+
+ + + + + + + + + + + + + + + A citation to a reference page + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A reference volume number + + + + +
+
+ + + + + + Identifies the nature of the publication being cited + + + + + + Identifies the nature of some other kind of publication being cited + + + + + + + Identifies that this is some other kind of publication being cited + other + Indicates that the published work is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + The title of a cited work + + + + + + +
+
+ + + + + + + + + + + + + + + Emphasized text + + + + + + +
+
+ + + A limited span of emphasized text + + + + +
+
+ + + + + + + + + + + + + + + A word or phrase in a language other than the primary language of the document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A limited word or phrase in a language other than the primary language of the document + + + + +
+
+ + + + + + + + + + + + + + + A span of text + + + + + + +
+
+ + + A limited span of text + + + + +
+
+ + + + + + + + + + + + + + + An inline quotation + + + + + + +
+
+ + + + + + + + + + + + + + + A limited inline quotation + + + + +
+
+ + + + + + + + + + + + + + + A subscript (as in Hâ‚‚O, the molecular formula for water) + + + + +
+
+ + + + + + + + + + + + + + + A superscript (as in x², the mathematical notation for x multiplied by itself) + + + + +
+
+ + + copyright + A copyright + registered + A registered copyright + service + A service + trade + A trademark + + + + + Identifies the class of trade mark + + + + + + + + + + + + + + + + + + + + + A trademark + + + + +
+
+ + + + + + + + + + + + + + + A word meant specifically as a word and not representing anything else + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a footnote (a footnote mark) + + Footnote reference type constraint + + @linkend on footnoteref must point to a footnote. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A cross reference to another part of the document + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A hypertext link + + + + + + +
+
+ + + + + + + + + Holds additional information that may be used by the application when resolving the link + + + + + Specifies the URI of the document in which the link target appears + + + + + + Specifies the location of the link target in the document + + + + + Identifies application-specific customization of the link behavior + + + + + + + + + + + + + + + + + + + + + + + + + + + + A link that addresses its target indirectly + + + + + + +
+
+ + + + + + + + + + + + + + A spot in the document + + + + +
+
+ + + + + + + + + + + + + + A text-only annotation, often used for accessibility + + + + + + + + + +
+
+ + + Holds style of formalgroup - this can be used to specify desired layout and positioning of subfigures + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A group of formal objects, for example subfigures + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + Identifies the editorial or publication status of the element on which it occurs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of books + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + The dedication of a book or other component + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Acknowledgements of a book or other component + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Text at the back of a book describing facts about its production + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An appendix in a book or article + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A chapter, as of a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Introductory matter preceding the first chapter of a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An introduction to the contents of a part + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + legal + A section of legal obligations or requirements + + + + Identifies the nature of the section + + + + + + Identifies a non-standard section class + + + + + + + Indicates that a non-standard section class is applied + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a document with no subdivisions + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + faq + A collection of frequently asked questions. + journalarticle + An article in a journal or other periodical. + productsheet + A description of a product. + specification + A specification. + techreport + A technical report. + whitepaper + A white paper. + + + + + Identifies the nature of the article + + + + + + Identifies the nature of the non-standard article + + + + + + + Identifies the nature of the article + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An article + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Identifies one or more annotations that apply to this element + + +
+ + + + + + Identifies one or more elements to which this annotation applies + + + + + + + + + + + + + + + + + + + An annotation + + Element exclusion + + annotation must not occur among the children or descendants of annotation + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + Identifies the XLink extended link type + + XLink extended placement + + An XLink extended type element may not occur as the direct child of an XLink extended type element. + + + extended + An XLink extended link type + + + + + Identifies the XLink locator link type + + XLink locator placement + + An XLink locator type element must occur as the direct child of an XLink extended type element. + + + locator + An XLink locator link type + + + + + Identifies the XLink arc link type + + XLink arc placement + + An XLink arc type element must occur as the direct child of an XLink extended type element. + + + arc + An XLink arc link type + + + + + Identifies the XLink resource link type + + XLink resource placement + + An XLink resource type element must occur as the direct child of an XLink extended type element. + + + resource + An XLink resource link type + + + + + Identifies the XLink title link type + + XLink title placement + + An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element. + + + title + An XLink title link type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the XLink traversal-from + + + + + + Specifies the XLink label + + + + + + Specifies the XLink traversal-to + + + +
+ + + + + + + + + + + + Identifies the XLink link type + extended + An XLink extended link + + + + + + + + + + + + + An XLink extended link + + + + + + + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + locator + An XLink locator link + + + + + + + + + + + + + + + + + An XLink locator in an extendedlink + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + arc + An XLink arc link + + + + + + + + + + + + + + + + + + + + + + + + + An XLink arc in an extendedlink + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A top-level section of document + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect1 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect2 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect3 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a sect4 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of reference entries + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A reference page (originally a UNIX man-style reference page) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Meta-information for a reference entry + + + + + + + + + + + + + + + + +
+ + + source + The name of the software product or component to which this topic applies + version + The version of the software product or component to which this topic applies + manual + The section title of the reference page (e.g., User Commands) + sectdesc + The section title of the reference page (believed synonymous with "manual" but in wide use) + software + The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + + + + + + Identifies the kind of miscellaneous information + + + + + + + Identifies the nature of non-standard miscellaneous information + + + + + + Identifies the kind of miscellaneious information + other + Indicates that the information is some 'other' kind. + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + Meta-information for a reference entry other than the title and volume number + + + + +
+
+ + + + + + + + + + + + + + + The name, purpose, and classification of a reference page + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A description of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The name of (one of) the subject(s) of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A short (one sentence) synopsis of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The scope or other indication of applicability of a reference entry + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntactic synopsis of the subject of the reference page + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section in a refentry + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A major subsection of a reference entry + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect1 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect2 + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + + + Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for a list of glossary entries + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + +
+
+ + + + + + Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + + + + + + + + + + + + + + + + + An entry in a glossary or glosslist + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + Specifies a list of keywords for the definition + + + + + + + + + + + + + + + + + A definition in a glossentry + + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry + to another + + Glosssary 'see' type constraint + + @otherterm on glosssee must point to a glossentry. + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry to another + + Glossary 'seealso' type constraint + + @otherterm on glossseealso must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term, with limited content + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A glossary + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a glossary + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + An inline definition of a term + + Glossary term definition constraint + + A termdef must contain exactly one firstterm + + + + + + + + +
+ + + Identifies the relationship between the bibliographic elemnts + + +
+ + + + + + + + + + + + + + + + + + + + + A raw entry in a bibliography + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked entry in a bibliography + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A raw container for related bibliographic information + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked container for related bibliographic information + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Untyped bibliographic information + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A bibliography + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a bibliography + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a list of bibliography entries + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + The units (for example, pages) used to identify the beginning and ending of a reference. + + + + + + Identifies the beginning of a reference; the location within the work that is being referenced. + + + + + + Identifies the end of a reference. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cross-reference to a bibliographic entry + + + + +
+ + + normal + Normal + preferred + Preferred + + + + + Specifies the significance of the term + + + + + + Specifies the IDs of the elements to which this term applies + + + + + + Indicates the page on which this index term occurs in some version of the printed document + + + + + all + All indexes + global + The global index (as for a combined index of a set of books) + local + The local index (the index for this document only) + + + + + Specifies the scope of the index term + + + + + + Specifies the string by which the term is to be sorted; if unspecified, the term content is used + + + + + Specifies the target index for this term + + +
+ + + + + + + + + + + + + + + A set of index terms in the meta-information of a document + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + Identifies the class of index term + singular + A singular index term + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term + + + + +
+
+ + + + + + Identifies the class of index term + startofrange + The start of a range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term that covers a range + + + + +
+
+ + + + + + Identifies the class of index term + endofrange + The end of a range + + + + + Points to the start of the range + + + + + + + + + + + + + + + + + Identifies the end of a range associated with an indexed term + + Indexterm 'startref' type constraint + + @startref on indexterm must point to an indexterm. + @startref on indexterm must point to a startofrange indexterm. + + + + + + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary word or phrase under which an index term should be sorted + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A secondary word or phrase in an index term + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A tertiary word or phrase in an index term + + + + + + +
+
+ + + + + + Identifies the class of 'see' + + normal + Normal + under + See 'under' + + + + + + + + + + + + + + + + + + Part of an index term directing the reader instead to another entry in the index + + + + + + +
+
+ + + + + + Identifies the class of 'seealso' + + normal + Normal + under + See 'under' + + + + + + + + + + + + + + + + + + Part of an index term directing the reader also to another entry in the index + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a book or part of a book + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a set of books + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in an index + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry in an index + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + A primary term in an index entry, not in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A secondary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A tertiary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See +entry in an index, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See also + entry in an index, rather than in the text + + + + + + +
+ + + Indicates the page on which this element occurs in some version of the printed document + + +
+ + + + + + + + + + + + + + + + + + A table of contents + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + A division in a table of contents + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A component title in a table of contents + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + A task to be completed + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary of a task + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The prerequisites for a task + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + Information related to a task + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + calspair + Coordinates expressed as a pair of CALS graphic coordinates. + linecolumn + Coordinates expressed as a line and column. + linecolumnpair + Coordinates expressed as a pair of lines and columns. + linerange + Coordinates expressed as a line range. + + + + + + Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair + for graphics and linecolumn + for line-oriented elements. + + + + + + + + Indicates that non-standard units are used for this area +. In this case otherunits + must be specified. + other + Coordinates expressed in some non-standard units. + + + + Identifies the units used in the coords + attribute when the units + attribute is other +. This attribute is forbidden otherwise. + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A list of callout +s + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + Identifies the areas described by this callout. + + + + + + + + + + + + + + + + A called out + description of a marked area + + Callout cross reference constraint + + @arearefs on callout must point to a areaset, area, or co. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A program listing with associated areas used in callouts + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A collection of regions in a graphic or code example + + + + + + + + + +
+
+ + + + + + Point to the callout +s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + + + + + + Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + + + + + Provides the coordinates of the area. The coordinates must be interpreted using the units + specified. + + + + + + + + + + + + + + + + + + + + + + + + A region defined for a callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A region defined for a callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A set of related areas in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A screen with associated areas used in callouts + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for an image object with callouts + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + The location of a callout embedded in text + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a co + + + + +
+
+ + + + + + + + + + + + + + + + + + A set of EBNF productions + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A production in a set of EBNF productions + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The left-hand side of an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + The right-hand side of an EBNF production + + + + + + + + + + + +
+
+ + + + + + Specifies a URI that points to a production +where the nonterminal + is defined + + + + + + + + + + + + + + + + A non-terminal in an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + A constraint in an EBNF production + + Constraint cross reference constraint + + @linkend on constraint must point to a constraintdef. + + + + + + +
+
+ + + + + + + + + + + + + + + A cross-reference to an EBNF production + + Production recap cross reference constraint + + @linkend on productionrecap must point to a production. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The definition of a constraint in an EBNF production + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+ + + Specifies the alignment character when align + is set to char +. + + + + + Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + when align + is set to char +. + + 0 + 100 + + + + + + Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + + all + Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + bottom + Frame only the bottom of the table. + none + Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + sides + Frame the left and right sides of the table. + top + Frame the top of the table. + topbot + Frame the top and bottom of the table. + + + + + + Specifies the presence or absence of the column separator + + 0 + No column separator rule. + 1 + Provide a column separator rule on the right + + + + + + Specifies the presence or absence of the row separator + + 0 + No row separator rule. + 1 + Provide a row separator rule below + + + + + + Specifies the orientation of the table + + land + 90 degrees counter-clockwise from the rest of the text flow. + port + The same orientation as the rest of the text flow. + + + + + + Specifies the table style + + + + + Indicates whether or not the entries in the first column should be considered row headers + + firstcol + Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + headers + Indicates that row headers are identified by use of the headers attribute on entries in the table. + norowheader + Indicates that entries in the first column have no special significance with respect to column headers. + + + + + + Specifies the horizontal alignment of text in an entry. + + center + Centered. + char + Aligned on a particular character. + justify + Left and right justified. + left + Left justified. + right + Right justified. + + + + + + Specifies the vertical alignment of text in an entry. + + bottom + Aligned on the bottom of the entry. + middle + Aligned in the middle. + top + Aligned at the top of the entry. + + + + + + Specifies a column specification by name. + + + + + Specifies a starting column by name. + + + + + Specifies a span by name. + + + + + + Specifies a starting column by name. + + + Specifies an ending column by name. + + + + + + + + + + + + + + Provides a name for a column specification. + + + + + Provides a name for a span specification. + + +
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for the main content of a table, or part of a table + + + + + + + + + + + + + + + + +
+
+ + + + + + The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + + + + + + Specifies the width of the column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifications for a column in a table + + + + +
+
+ + + + + + Specifies a starting column by name. + + + + + Specifies an ending column by name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Formatting information for a spanned column in a table + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table footer consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + + + + +
+
+ + + + + + Specifies the number of additional rows which this entry occupies. Defaults to zero. + + + + + + Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + + 0 + Do not rotate the cell. + 1 + Rotate the cell 90 degrees counter-clockwise. + + + + + + Specifies the scope of a header. + + row + Applies to the row + col + Applies to the column + rowgroup + Applies to the row group + colgroup + Applies to the column group + + + + + + Specifies the entry or entries which serve as headers for this element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cell in a table + + Element exclusion + + table must not occur among the children or descendants of entry + + + + Element exclusion + + informaltable must not occur among the children or descendants of entry + + + + + + + + + + + + + +
+
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the entry table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subtable appearing in place of an entry in a table + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + +
+
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates if the short or long title should be used in a List of Tables + + 0 + Indicates that the full title should be used. + 1 + Indicates that the short short title (titleabbrev) should be used. + + + + + + Indicates if the table should appear in a List of Tables + + 0 + Indicates that the table should not occur in the List of Tables. + 1 + Indicates that the table should appear in the List of Tables. + + + + + + + + + + + + + + A formal table in a document + + Element exclusion + + example must not occur among the children or descendants of table + + + + Element exclusion + + figure must not occur among the children or descendants of table + + + + Element exclusion + + equation must not occur among the children or descendants of table + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A table without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + + + + + This attribute specifies style information for the current element. + + + + + This attribute offers advisory information about the element for which it is set. + + + + + + + + This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + + + + + + + + Occurs when the pointing device button is clicked over an element. + + + + + Occurs when the pointing device button is double clicked over an element. + + + + + Occurs when the pointing device button is pressed over an element. + + + + + Occurs when the pointing device button is released over an element. + + + + + Occurs when the pointing device is moved onto an element. + + + + + Occurs when the pointing device is moved while it is over an element. + + + + + Occurs when the pointing device is moved away from an element. + + + + + Occurs when a key is pressed and released over an element. + + + + + Occurs when a key is pressed down over an element. + + + + + Occurs when a key is released over an element. + + + + + + + + + + + + + + + + + Specifies the alignment of data and the justification of text in a cell. + + left + Left-flush data/Left-justify text. This is the default value for table data. + center + Center data/Center-justify text. This is the default value for table headers. + right + Right-flush data/Right-justify text. + justify + Double-justify text. + char + Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + + + + + + This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + + + + + When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + + + An explicit offset. + + [0-9]+% + + A percentage offset. + + + + + + + + + Specifies the vertical position of data within a cell. + + top + Cell data is flush with the top of the cell. + middle + Cell data is centered vertically within the cell. This is the default value. + bottom + Cell data is flush with the bottom of the cell. + baseline + All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + + + + + + + + + Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + + + + + Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + + + An explicit width. + + [0-9]+% + + A percentage width. + + + + + + Specifies the width (in pixels only) of the frame around a table. + + + + + + Specifies which sides of the frame surrounding a table will be visible. + + void + No sides. This is the default value. + above + The top side only. + below + The bottom side only. + hsides + The top and bottom sides only. + lhs + The left-hand side only. + rhs + The right-hand side only. + vsides + The right and left sides only. + box + All four sides. + border + All four sides. + + + + + + Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + + none + No rules. This is the default value. + groups + Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + rows + Rules will appear between rows only. + cols + Rules will appear between columns only. + all + Rules will appear between all rows and columns. + + + + + + Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + + + An explicit spacing. + + [0-9]+% + + A percentage spacing. + + + + + + Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + + + An explicit padding. + + [0-9]+% + + A percentage padding. + + + + + + + + + + Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + + + + + This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + + + + + Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + + + + + Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + + row + The current cell provides header information for the rest of the row that contains it + col + The current cell provides header information for the rest of the column that contains it. + rowgroup + The header cell provides header information for the rest of the row group that contains it. + colgroup + The header cell provides header information for the rest of the column group that contains it. + + + + + + Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all rows from the current row to the last row of the table section (thead +, tbody +, or tfoot +) in which the cell is defined. + + + + + + Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all columns from the current column to the last column of the column group (colgroup +) in which the cell is defined. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal (captioned) HTML table in a document + + Element exclusion + + example must not occur among the children or descendants of table + + + + Element exclusion + + figure must not occur among the children or descendants of table + + + + Element exclusion + + equation must not occur among the children or descendants of table + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + Identifies the type of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An HTML table without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + An HTML table caption + + Element exclusion + + example must not occur among the children or descendants of caption + + + + Element exclusion + + figure must not occur among the children or descendants of caption + + + + Element exclusion + + table must not occur among the children or descendants of caption + + + + Element exclusion + + equation must not occur among the children or descendants of caption + + + + Element exclusion + + sidebar must not occur among the children or descendants of caption + + + + Element exclusion + + task must not occur among the children or descendants of caption + + + + Element exclusion + + caution must not occur among the children or descendants of caption + + + + Element exclusion + + danger must not occur among the children or descendants of caption + + + + Element exclusion + + important must not occur among the children or descendants of caption + + + + Element exclusion + + note must not occur among the children or descendants of caption + + + + Element exclusion + + tip must not occur among the children or descendants of caption + + + + Element exclusion + + warning must not occur among the children or descendants of caption + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + +
+
+ + + + + + This attribute, whose value must be an integer > 0, specifies the number of columns spanned + by the col + element; the col + element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + element shares its attributes with the next N-1 columns. + + + + + + Specifies a default width for each column spanned by the current col + element. It has the same meaning as the width + attribute for the colgroup + element and overrides it. + + + + + + + + + Specifications for a column in an HTML table + + + + +
+
+ + + + + + This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + element contains one or more col + elements. + + + + + + This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + element. + + + + + + + + + A group of columns in an HTML table + + + + + + +
+
+ + + + + + + + + + A table header consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A table footer consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A wrapper for the rows of an HTML table or informal HTML table + + + + + + +
+
+ + + + + + + + + + A row in an HTML table + + + + + + + + + +
+
+ + + + + + + + + + + A table header entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + A table entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A detailed set of messages, usually error messages + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for an entry in a message set + + + + + + + + + + + + +
+
+ + + + + + The audience to which the message relevant + + + + + The origin of the message + + + + + The level of importance or severity of a message + + + + + + + + + + + + + + + + + + + + + + + A wrapper for a simpler entry in a message set + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary component of a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A subcomponent of a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A related component of a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + The actual text of a message component in a message set + + + + + + +
+
+ + + + + + + + + + + + + + + Information about a message in a message set + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The level of importance or severity of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The origin of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The audience to which a message in a message set is relevant + + + + +
+
+ + + + + + + + + + + + + + + + + + Explanatory material relating to a message in a message set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + + + + none + No labels + number + Numeric labels + qanda + "Q:" and "A:" labels + + + + + Specifies the default labelling + + + + + + + + + + + + + + + + + + + + + A question-and-answer set + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A titled division in a qandaset + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A question/answer set within a qandaset + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A question in a qandaset + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An answer to a question posed in a qandaset + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A label on a question or answer + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + Identifies the type of equation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation + + Element exclusion + + example must not occur among the children or descendants of equation + + + + Element exclusion + + figure must not occur among the children or descendants of equation + + + + Element exclusion + + table must not occur among the children or descendants of equation + + + + Element exclusion + + equation must not occur among the children or descendants of equation + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + Identifies the type of equation + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation without a title + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical equation or expression occurring inline + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical phrase that can be represented with ordinary text and a small amount of markup + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + Specifies that the format of the data is MathML + mathml + Specifies MathML. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A MathML expression in a media object + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + Any element from the MathML namespace + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + Specifies that the format of the data is SVG + svg + Specifies SVG. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An SVG drawing in a media object + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + +
+
+ + + Any element from the SVG namespace + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A string of formatting markup in text that is to be represented literally + + + + +
+
+ + + + + + attribute + An attribute + attvalue + An attribute value + element + An element + emptytag + An empty element tag + endtag + An end tag + genentity + A general entity + localname + The local name part of a qualified name + namespace + A namespace + numcharref + A numeric character reference + paramentity + A parameter entity + pi + A processing instruction + prefix + The prefix part of a qualified name + comment + An SGML comment + starttag + A start tag + xmlpi + An XML processing instruction + + + + + Identifies the nature of the tag content + + + + + + Identifies the namespace of the tag content + + + + + + + + + + + + + + + + + + + + + A component of XML (or SGML) markup + + + + + + + + + +
+
+ + + Identifies the class of symbol + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A name that is replaced by a value before processing + + + + +
+
+ + + + + + + + + + + + + + + A unit of information + + + + +
+
+ + + + + + + + + + + + + + + Inline text that is some literal value + + + + +
+
+ + + Identifies the (computer) language of the code fragment + + + + + + + + + + + + + + + + + + + + An inline code fragment + + + + + + + + + +
+
+ + + Identifies the class of constant + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A programming or system constant + + + + +
+
+ + + + + + copyright + A name with a copyright + registered + A name with a registered copyright + service + A name of a service + trade + A name which is trademarked + + + + + Specifies the class of product name + + + + + + + + + + + + + + + + + + The formal name of a product + + + + +
+
+ + + + + + + + + + + + + + + A number assigned to a product + + + + +
+
+ + + altkey + An alternate or secondary key + constraint + A constraint + datatype + A data type + field + A field + foreignkey + A foreign key + group + A group + index + An index + key1 + The first or primary key + key2 + An alternate or secondary key + name + A name + primarykey + The primary key + procedure + A (stored) procedure + record + A record + rule + A rule + secondarykey + The secondary key + table + A table + user + A user + view + A view + + + + + Identifies the class of database artifact + + + + + + + + + + + + + + + + + + + + + The name of a database, or part of a database + + + + +
+
+ + + hardware + A hardware application + software + A software application + + + + + Identifies the class of application + + + + + + + + + + + + + + + + + + + + + The name of a software program + + + + +
+
+ + + + + + + + + + + + + + + A physical part of a computer system + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text on a button in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Graphic and/or text appearing as a icon in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The text of a label in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a menu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a terminal menu item in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a submenu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A selection or series of selections from a menu + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The conventional name of a mouse button + + + + +
+ + + + + + + + + + +
+ + + alt + The "Alt" key + altgr + The "Alt Graph" key + backspace + The "Backspace" key + command + The "Command" key + control + The "Control" key + delete + The "Delete" key + down + The down arrow + end + The "End" key + enter + The "Enter" key + escape + The "Escape" key + home + The "Home" key + insert + The "Insert" key + left + The left arrow + meta + The "Meta" key + option + The "Option" key + pagedown + The page down key + pageup + The page up key + right + The right arrow + return + The "Return" key + shift + The "Shift" key + space + The spacebar + tab + The "Tab" key + up + The up arrow + + + + + + Identifies the function key + + + + + + + + Identifies the function key + other + Indicates a non-standard function key + + + + Specifies a keyword that identifies the non-standard key + + + + + + + + + + + + + + + + + + + + + + + + The text printed on a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + The internal, frequently numeric, identifier for a key on a keyboard + + + + +
+ + + + + + + + + + +
+ + + click + A (single) mouse click. + double-click + A double mouse click. + press + A mouse or key press. + seq + Sequential clicks or presses. + simul + Simultaneous clicks or presses. + + + + + + Identifies the nature of the action taken. If keycombo + contains more than one element, simul + is the default, otherwise there is no default. + + + + + + + + Identifies the nature of the action taken + other + Indicates a non-standard action + + + + Identifies the non-standard action in some unspecified way. + + + + + + + + + + + + + + + + + + + + + + + + A combination of input actions + + + + + + +
+
+ + + + + + + + + + + + + + + The symbolic name of a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + A graphical user interface (GUI) keyboard shortcut + + + + +
+
+ + + + + + + + + + + + + + + + + + + A key combination for an action that is also accessible through a menu + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A character or string indicating the start of an input field in a computer display + + + + + + +
+
+ + + + + + + + + + + + + + + A software environment variable + + + + +
+
+ + + devicefile + A device + directory + A directory + extension + A filename extension + headerfile + A header file (as for a programming language) + libraryfile + A library file + partition + A partition (as of a hard disk) + symlink + A symbolic link + + + + + Identifies the class of filename + + + + + + Specifies the path of the filename + + + + + + + + + + + + + + + + + + + + + + + The name of a file + + + + +
+
+ + + + + + + + + + + + + + + The name of an executable program or other software command + + + + +
+
+ + + + + + + + + + + + + + + Data, generally text, displayed or presented by a computer + + + + + + +
+
+ + + + + + + + + + + + + + + Data entered by the user + + + + + + +
+
+ + + + + + Specifies the character that should separate the command and its top-level arguments + + + + + Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A syntax summary for a software command + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + +
+ + + norepeat + Can not be repeated. + repeat + Can be repeated. + + + + + Indicates whether or not repetition is possible. + + + + + + opt + Formatted to indicate that it is optional. + plain + Formatted without indication. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + Indicates optionality. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An argument in a cmdsynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A group of elements in a cmdsynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + An explicit line break in a command synopsis + + + + +
+
+ + + + + + + + + + + + + + + A portion of a cmdsynopsis broken out from the main body of the synopsis + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A reference to a fragment of a command synopsis + + Synopsis fragment type constraint + + @linkend on synopfragmentref must point to a synopfragment. + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + A general-purpose element for representing the syntax of commands or functions + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing synopsis + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a function definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the funcdefs of a funcsynopsis + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a function + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A function (subroutine) name and its return type + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a function or subroutine, as in a programming language + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating that the function in question takes no arguments + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating a variable number of arguments + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A group of parameters + + + + + + + + + +
+
+ + + + + + opt + Formatted to indicate that it is optional. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + + + + + + + + + + + + + Information about a function parameter in a programming language + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Parameters for a function referenced through a function pointer in a synopsis + + + + +
+
+ + + + + + + + + class + This is the synopsis of a class + interface + This is the synopsis of an interface + + + + + Specifies the nature of the synopsis + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for a class definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the contents of a classsynopsis + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + A class in an object-oriented programming language + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An interface in an object-oriented programming language + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An exception in an object-oriented programming language + + + + + + + + + + + + + +
+ + + Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + preserve + Extra whitespace and line breaks must be preserved. + + + +
+ + + + + + + + + + + + + + + + + + Modifiers in a synopsis + + + + +
+
+ + + + + + + + + + + + + + + The name of an interface + + + + +
+
+ + + + + + + + + + + + + + + The name of an exception + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The name of a field in a class definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + The initializer for a fieldsynopsis + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a constructor + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a destructor + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + A syntax summary for a method + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a method + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Parameters to a method + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A group of method parameters + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a variable + + + + +
+
+ + + + + + + + + + + + + + + Target of a build + + + + +
+
+ + + + + + + + + + + + + + + The value returned by a function + + + + +
+
+ + + + + + union + Combined type is union of nested types + intersection + Combined type is intersection of nested types + + + + + Specifies the way how are nested types combined together + + + + + + + + + + + + + + + + + + The classification of a value + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a class, in the object-oriented programming sense + + + + +
+
+ + + + + + + + + + + + + + + The identifier for a template, in the generic programming sense + + + + +
+
+ + + + + + + + + + + + + + + The definition of a template, in the generic programming sense + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The specialization of a template identifier, in the generic programming sense + + + + + + + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a package definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a macro (a code-generating function) + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a macro definition (code-generating function) + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a macro (code-generating function) + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A macro name and its return type + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a union of types + + + + +
+
+ + + + + + + + + + + + + + + The definition of a union of types, which may be more than a name + + + + + + +
+
+ + + + + + + + + + Indicates how the value of a union is specified. + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for a union-of-types definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of an enumeration + + + + +
+
+ + + + + + + + + + + + + + + The value an enumerated type can take + + + + +
+
+ + + + + + + + + + + + + + + The description of a value an enumerated type can take + + + + + + +
+
+ + + + + + + + + + + + + + + The identifier of a value an enumerated type can take + + + + +
+
+ + + + + + + + + + + + + + + A value an enumerated type can take and its description + + + + + + + + + + +
+
+ + + + + + + + + 0 + Value of enum is specified explicitly using enumvalue + 1 + Value of enum is inferred from its position + + + + + Indicates how the value of an enumeration is specified. + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + + + + The syntax summary for an enumerated-type definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a type alias + + + + +
+
+ + + + + + + + + Identifies the package to which this synopsis (logically) belongs + + + + + + + + + + + + + + + + + + + + The syntax summary for a type-alias definition + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A literal listing of all or part of a program + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A note of caution + + Element exclusion + + caution must not occur among the children or descendants of caution + + + + Element exclusion + + danger must not occur among the children or descendants of caution + + + + Element exclusion + + important must not occur among the children or descendants of caution + + + + Element exclusion + + note must not occur among the children or descendants of caution + + + + Element exclusion + + tip must not occur among the children or descendants of caution + + + + Element exclusion + + warning must not occur among the children or descendants of caution + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text indicating hazardous situation + + Element exclusion + + caution must not occur among the children or descendants of danger + + + + Element exclusion + + danger must not occur among the children or descendants of danger + + + + Element exclusion + + important must not occur among the children or descendants of danger + + + + Element exclusion + + note must not occur among the children or descendants of danger + + + + Element exclusion + + tip must not occur among the children or descendants of danger + + + + Element exclusion + + warning must not occur among the children or descendants of danger + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + Element exclusion + + caution must not occur among the children or descendants of important + + + + Element exclusion + + danger must not occur among the children or descendants of important + + + + Element exclusion + + important must not occur among the children or descendants of important + + + + Element exclusion + + note must not occur among the children or descendants of important + + + + Element exclusion + + tip must not occur among the children or descendants of important + + + + Element exclusion + + warning must not occur among the children or descendants of important + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + A message set off from the text + + Element exclusion + + caution must not occur among the children or descendants of note + + + + Element exclusion + + danger must not occur among the children or descendants of note + + + + Element exclusion + + important must not occur among the children or descendants of note + + + + Element exclusion + + note must not occur among the children or descendants of note + + + + Element exclusion + + tip must not occur among the children or descendants of note + + + + Element exclusion + + warning must not occur among the children or descendants of note + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + A suggestion to the user, set off from the text + + Element exclusion + + caution must not occur among the children or descendants of tip + + + + Element exclusion + + danger must not occur among the children or descendants of tip + + + + Element exclusion + + important must not occur among the children or descendants of tip + + + + Element exclusion + + note must not occur among the children or descendants of tip + + + + Element exclusion + + tip must not occur among the children or descendants of tip + + + + Element exclusion + + warning must not occur among the children or descendants of tip + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + Element exclusion + + caution must not occur among the children or descendants of warning + + + + Element exclusion + + danger must not occur among the children or descendants of warning + + + + Element exclusion + + important must not occur among the children or descendants of warning + + + + Element exclusion + + note must not occur among the children or descendants of warning + + + + Element exclusion + + tip must not occur among the children or descendants of warning + + + + Element exclusion + + warning must not occur among the children or descendants of warning + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + An error code + + + + +
+
+ + + + + + + + + + + + + + + An error name + + + + +
+
+ + + + + + + + + + + + + + + An error message. + + + + +
+
+ + + + + + + + + + + + + + + The classification of an error message + + + + +
+ + + + + + +
+ + + daemon + A daemon or other system process (syslogd) + domainname + A domain name (example.com) + etheraddress + An ethernet address (00:05:4E:49:FD:8E) + event + An event of some sort (SIGHUP) + eventhandler + An event handler of some sort (hangup) + filesystem + A filesystem (ext3) + fqdomainname + A fully qualified domain name (my.example.com) + groupname + A group name (wheel) + interface + A network interface (eth0) + ipaddress + An IP address (127.0.0.1) + library + A library (libncurses) + macro + A macro + netmask + A netmask (255.255.255.192) + newsgroup + A newsgroup (comp.text.xml) + osname + An operating system name (Hurd) + process + A process (gnome-cups-icon) + protocol + A protocol (ftp) + resource + A resource + securitycontext + A security context (a role, permission, or security token, for example) + server + A server (mail.example.com) + service + A service (ppp) + systemname + A system name (hephaistos) + username + A user name (ndw) + + + + + + Identifies the nature of the system item + + + + + + + Identifies the nature of the non-standard system item + + + + + + + Identifies the kind of systemitemgraphic identifier + other + Indicates that the system item is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + A system-related item or term + + + + + + +
+
+ + + + + + + + + + + + + + + An option for a software command + + + + +
+
+ + + + + + + + + + + + + + + Optional information + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A unit of data associated with some part of a computer system + + + + +
+
+ + + + + + + + + Identifies the topic type + + + + + + + + + + + + + + + + + + + + + + + + + + A modular unit of documentation not part of any particular narrative flow + + Root must have version + + If this element is the root element, it must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + [^#]+ + + + + + + + xml + text + + + + + + + + + + + + + + + + + + + + + + + + + + + + An XInclude + + + + + + +
+
+ + + + An XInclude fallback + + + + + + + + + + + + + +
+
diff --git a/catalog/docbook5.2/sch/assembly.sch b/catalog/docbook5.2/sch/assembly.sch new file mode 100755 index 0000000..793d5cd --- /dev/null +++ b/catalog/docbook5.2/sch/assembly.sch @@ -0,0 +1,270 @@ + + + + + + + + Callout cross reference constraint + + @arearefs on callout must point to a areaset, area, or co. + + + + Cardinality of segments and titles + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + Constraint cross reference constraint + + @linkend on constraint must point to a constraintdef. + + + + Element exclusion + + annotation must not occur among the children or descendants of annotation + + + caution must not occur among the children or descendants of caution + danger must not occur among the children or descendants of caution + important must not occur among the children or descendants of caution + note must not occur among the children or descendants of caution + tip must not occur among the children or descendants of caution + warning must not occur among the children or descendants of caution + + + caution must not occur among the children or descendants of danger + danger must not occur among the children or descendants of danger + important must not occur among the children or descendants of danger + note must not occur among the children or descendants of danger + tip must not occur among the children or descendants of danger + warning must not occur among the children or descendants of danger + + + caution must not occur among the children or descendants of important + danger must not occur among the children or descendants of important + important must not occur among the children or descendants of important + note must not occur among the children or descendants of important + tip must not occur among the children or descendants of important + warning must not occur among the children or descendants of important + + + caution must not occur among the children or descendants of note + danger must not occur among the children or descendants of note + important must not occur among the children or descendants of note + note must not occur among the children or descendants of note + tip must not occur among the children or descendants of note + warning must not occur among the children or descendants of note + + + caution must not occur among the children or descendants of tip + danger must not occur among the children or descendants of tip + important must not occur among the children or descendants of tip + note must not occur among the children or descendants of tip + tip must not occur among the children or descendants of tip + warning must not occur among the children or descendants of tip + + + caution must not occur among the children or descendants of warning + danger must not occur among the children or descendants of warning + important must not occur among the children or descendants of warning + note must not occur among the children or descendants of warning + tip must not occur among the children or descendants of warning + warning must not occur among the children or descendants of warning + + + caution must not occur among the children or descendants of caption + danger must not occur among the children or descendants of caption + equation must not occur among the children or descendants of caption + example must not occur among the children or descendants of caption + figure must not occur among the children or descendants of caption + important must not occur among the children or descendants of caption + note must not occur among the children or descendants of caption + sidebar must not occur among the children or descendants of caption + table must not occur among the children or descendants of caption + task must not occur among the children or descendants of caption + tip must not occur among the children or descendants of caption + warning must not occur among the children or descendants of caption + + + equation must not occur among the children or descendants of equation + example must not occur among the children or descendants of equation + figure must not occur among the children or descendants of equation + table must not occur among the children or descendants of equation + + + equation must not occur among the children or descendants of example + example must not occur among the children or descendants of example + figure must not occur among the children or descendants of example + table must not occur among the children or descendants of example + + + equation must not occur among the children or descendants of figure + example must not occur among the children or descendants of figure + figure must not occur among the children or descendants of figure + table must not occur among the children or descendants of figure + + + equation must not occur among the children or descendants of table + example must not occur among the children or descendants of table + figure must not occur among the children or descendants of table + + + caution must not occur among the children or descendants of footnote + danger must not occur among the children or descendants of footnote + epigraph must not occur among the children or descendants of footnote + equation must not occur among the children or descendants of footnote + example must not occur among the children or descendants of footnote + figure must not occur among the children or descendants of footnote + footnote must not occur among the children or descendants of footnote + important must not occur among the children or descendants of footnote + note must not occur among the children or descendants of footnote + sidebar must not occur among the children or descendants of footnote + table must not occur among the children or descendants of footnote + task must not occur among the children or descendants of footnote + tip must not occur among the children or descendants of footnote + warning must not occur among the children or descendants of footnote + + + sidebar must not occur among the children or descendants of sidebar + + + informaltable must not occur among the children or descendants of entry + table must not occur among the children or descendants of entry + + + + Footnote reference type constraint + + @linkend on footnoteref must point to a footnote. + + + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + Glossary 'seealso' type constraint + + @otherterm on glossseealso must point to a glossentry. + + + + Glossary term definition constraint + + A termdef must contain exactly one firstterm + + + + Glosssary 'see' type constraint + + @otherterm on glosssee must point to a glossentry. + + + + Indexterm 'startref' type constraint + + @startref on indexterm must point to a startofrange indexterm. + @startref on indexterm must point to an indexterm. + + + + Production recap cross reference constraint + + @linkend on productionrecap must point to a production. + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + + Specification of renderas + + The renderas attribute can be specified on either the structure or output, but not both. + + + The renderas attribute can be specified on either the structure or output, but not both. + + + + Suffix fixup must be specified + + If a suffix is specified, suffix ID fixup must also be specified. + + + + Synopsis fragment type constraint + + @linkend on synopfragmentref must point to a synopfragment. + + + + XLink arc placement + + An XLink arc type element must occur as the direct child of an XLink extended type element. + + + + XLink extended placement + + An XLink extended type element may not occur as the direct child of an XLink extended type element. + + + + XLink locator placement + + An XLink locator type element must occur as the direct child of an XLink extended type element. + + + + XLink resource placement + + An XLink resource type element must occur as the direct child of an XLink extended type element. + + + + XLink title placement + + An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element. + + + diff --git a/catalog/docbook5.2/sch/assemblyxi.sch b/catalog/docbook5.2/sch/assemblyxi.sch new file mode 100755 index 0000000..793d5cd --- /dev/null +++ b/catalog/docbook5.2/sch/assemblyxi.sch @@ -0,0 +1,270 @@ + + + + + + + + Callout cross reference constraint + + @arearefs on callout must point to a areaset, area, or co. + + + + Cardinality of segments and titles + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + Constraint cross reference constraint + + @linkend on constraint must point to a constraintdef. + + + + Element exclusion + + annotation must not occur among the children or descendants of annotation + + + caution must not occur among the children or descendants of caution + danger must not occur among the children or descendants of caution + important must not occur among the children or descendants of caution + note must not occur among the children or descendants of caution + tip must not occur among the children or descendants of caution + warning must not occur among the children or descendants of caution + + + caution must not occur among the children or descendants of danger + danger must not occur among the children or descendants of danger + important must not occur among the children or descendants of danger + note must not occur among the children or descendants of danger + tip must not occur among the children or descendants of danger + warning must not occur among the children or descendants of danger + + + caution must not occur among the children or descendants of important + danger must not occur among the children or descendants of important + important must not occur among the children or descendants of important + note must not occur among the children or descendants of important + tip must not occur among the children or descendants of important + warning must not occur among the children or descendants of important + + + caution must not occur among the children or descendants of note + danger must not occur among the children or descendants of note + important must not occur among the children or descendants of note + note must not occur among the children or descendants of note + tip must not occur among the children or descendants of note + warning must not occur among the children or descendants of note + + + caution must not occur among the children or descendants of tip + danger must not occur among the children or descendants of tip + important must not occur among the children or descendants of tip + note must not occur among the children or descendants of tip + tip must not occur among the children or descendants of tip + warning must not occur among the children or descendants of tip + + + caution must not occur among the children or descendants of warning + danger must not occur among the children or descendants of warning + important must not occur among the children or descendants of warning + note must not occur among the children or descendants of warning + tip must not occur among the children or descendants of warning + warning must not occur among the children or descendants of warning + + + caution must not occur among the children or descendants of caption + danger must not occur among the children or descendants of caption + equation must not occur among the children or descendants of caption + example must not occur among the children or descendants of caption + figure must not occur among the children or descendants of caption + important must not occur among the children or descendants of caption + note must not occur among the children or descendants of caption + sidebar must not occur among the children or descendants of caption + table must not occur among the children or descendants of caption + task must not occur among the children or descendants of caption + tip must not occur among the children or descendants of caption + warning must not occur among the children or descendants of caption + + + equation must not occur among the children or descendants of equation + example must not occur among the children or descendants of equation + figure must not occur among the children or descendants of equation + table must not occur among the children or descendants of equation + + + equation must not occur among the children or descendants of example + example must not occur among the children or descendants of example + figure must not occur among the children or descendants of example + table must not occur among the children or descendants of example + + + equation must not occur among the children or descendants of figure + example must not occur among the children or descendants of figure + figure must not occur among the children or descendants of figure + table must not occur among the children or descendants of figure + + + equation must not occur among the children or descendants of table + example must not occur among the children or descendants of table + figure must not occur among the children or descendants of table + + + caution must not occur among the children or descendants of footnote + danger must not occur among the children or descendants of footnote + epigraph must not occur among the children or descendants of footnote + equation must not occur among the children or descendants of footnote + example must not occur among the children or descendants of footnote + figure must not occur among the children or descendants of footnote + footnote must not occur among the children or descendants of footnote + important must not occur among the children or descendants of footnote + note must not occur among the children or descendants of footnote + sidebar must not occur among the children or descendants of footnote + table must not occur among the children or descendants of footnote + task must not occur among the children or descendants of footnote + tip must not occur among the children or descendants of footnote + warning must not occur among the children or descendants of footnote + + + sidebar must not occur among the children or descendants of sidebar + + + informaltable must not occur among the children or descendants of entry + table must not occur among the children or descendants of entry + + + + Footnote reference type constraint + + @linkend on footnoteref must point to a footnote. + + + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + Glossary 'seealso' type constraint + + @otherterm on glossseealso must point to a glossentry. + + + + Glossary term definition constraint + + A termdef must contain exactly one firstterm + + + + Glosssary 'see' type constraint + + @otherterm on glosssee must point to a glossentry. + + + + Indexterm 'startref' type constraint + + @startref on indexterm must point to a startofrange indexterm. + @startref on indexterm must point to an indexterm. + + + + Production recap cross reference constraint + + @linkend on productionrecap must point to a production. + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + + Specification of renderas + + The renderas attribute can be specified on either the structure or output, but not both. + + + The renderas attribute can be specified on either the structure or output, but not both. + + + + Suffix fixup must be specified + + If a suffix is specified, suffix ID fixup must also be specified. + + + + Synopsis fragment type constraint + + @linkend on synopfragmentref must point to a synopfragment. + + + + XLink arc placement + + An XLink arc type element must occur as the direct child of an XLink extended type element. + + + + XLink extended placement + + An XLink extended type element may not occur as the direct child of an XLink extended type element. + + + + XLink locator placement + + An XLink locator type element must occur as the direct child of an XLink extended type element. + + + + XLink resource placement + + An XLink resource type element must occur as the direct child of an XLink extended type element. + + + + XLink title placement + + An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element. + + + diff --git a/catalog/docbook5.2/sch/dbits.sch b/catalog/docbook5.2/sch/dbits.sch new file mode 100755 index 0000000..8f09d76 --- /dev/null +++ b/catalog/docbook5.2/sch/dbits.sch @@ -0,0 +1,609 @@ + + + + + + + + Callout cross reference constraint + + @arearefs on callout must point to a areaset, area, or co. + + + + Cardinality of segments and titles + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + Constraint cross reference constraint + + @linkend on constraint must point to a constraintdef. + + + + Element exclusion + + annotation must not occur among the children or descendants of annotation + + + caution must not occur among the children or descendants of caution + danger must not occur among the children or descendants of caution + important must not occur among the children or descendants of caution + note must not occur among the children or descendants of caution + tip must not occur among the children or descendants of caution + warning must not occur among the children or descendants of caution + + + caution must not occur among the children or descendants of danger + danger must not occur among the children or descendants of danger + important must not occur among the children or descendants of danger + note must not occur among the children or descendants of danger + tip must not occur among the children or descendants of danger + warning must not occur among the children or descendants of danger + + + caution must not occur among the children or descendants of important + danger must not occur among the children or descendants of important + important must not occur among the children or descendants of important + note must not occur among the children or descendants of important + tip must not occur among the children or descendants of important + warning must not occur among the children or descendants of important + + + caution must not occur among the children or descendants of note + danger must not occur among the children or descendants of note + important must not occur among the children or descendants of note + note must not occur among the children or descendants of note + tip must not occur among the children or descendants of note + warning must not occur among the children or descendants of note + + + caution must not occur among the children or descendants of tip + danger must not occur among the children or descendants of tip + important must not occur among the children or descendants of tip + note must not occur among the children or descendants of tip + tip must not occur among the children or descendants of tip + warning must not occur among the children or descendants of tip + + + caution must not occur among the children or descendants of warning + danger must not occur among the children or descendants of warning + important must not occur among the children or descendants of warning + note must not occur among the children or descendants of warning + tip must not occur among the children or descendants of warning + warning must not occur among the children or descendants of warning + + + caution must not occur among the children or descendants of caption + danger must not occur among the children or descendants of caption + equation must not occur among the children or descendants of caption + example must not occur among the children or descendants of caption + figure must not occur among the children or descendants of caption + important must not occur among the children or descendants of caption + note must not occur among the children or descendants of caption + sidebar must not occur among the children or descendants of caption + table must not occur among the children or descendants of caption + task must not occur among the children or descendants of caption + tip must not occur among the children or descendants of caption + warning must not occur among the children or descendants of caption + + + equation must not occur among the children or descendants of equation + example must not occur among the children or descendants of equation + figure must not occur among the children or descendants of equation + table must not occur among the children or descendants of equation + + + equation must not occur among the children or descendants of example + example must not occur among the children or descendants of example + figure must not occur among the children or descendants of example + table must not occur among the children or descendants of example + + + equation must not occur among the children or descendants of figure + example must not occur among the children or descendants of figure + figure must not occur among the children or descendants of figure + table must not occur among the children or descendants of figure + + + equation must not occur among the children or descendants of table + example must not occur among the children or descendants of table + figure must not occur among the children or descendants of table + + + caution must not occur among the children or descendants of footnote + danger must not occur among the children or descendants of footnote + epigraph must not occur among the children or descendants of footnote + equation must not occur among the children or descendants of footnote + example must not occur among the children or descendants of footnote + figure must not occur among the children or descendants of footnote + footnote must not occur among the children or descendants of footnote + important must not occur among the children or descendants of footnote + note must not occur among the children or descendants of footnote + sidebar must not occur among the children or descendants of footnote + table must not occur among the children or descendants of footnote + task must not occur among the children or descendants of footnote + tip must not occur among the children or descendants of footnote + warning must not occur among the children or descendants of footnote + + + sidebar must not occur among the children or descendants of sidebar + + + informaltable must not occur among the children or descendants of entry + table must not occur among the children or descendants of entry + + + + Footnote reference type constraint + + @linkend on footnoteref must point to a footnote. + + + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + Glossary 'seealso' type constraint + + @otherterm on glossseealso must point to a glossentry. + + + + Glossary term definition constraint + + A termdef must contain exactly one firstterm + + + + Glosssary 'see' type constraint + + @otherterm on glosssee must point to a glossentry. + + + + Indexterm 'startref' type constraint + + @startref on indexterm must point to a startofrange indexterm. + @startref on indexterm must point to an indexterm. + + + + Production recap cross reference constraint + + @linkend on productionrecap must point to a production. + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + + Suffix fixup must be specified + + If a suffix is specified, suffix ID fixup must also be specified. + + + + Synopsis fragment type constraint + + @linkend on synopfragmentref must point to a synopfragment. + + + + XLink arc placement + + An XLink arc type element must occur as the direct child of an XLink extended type element. + + + + XLink extended placement + + An XLink extended type element may not occur as the direct child of an XLink extended type element. + + + + XLink locator placement + + An XLink locator type element must occur as the direct child of an XLink extended type element. + + + + XLink resource placement + + An XLink resource type element must occur as the direct child of an XLink extended type element. + + + + XLink title placement + + An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element. + + + diff --git a/catalog/docbook5.2/sch/dbitsxi.sch b/catalog/docbook5.2/sch/dbitsxi.sch new file mode 100755 index 0000000..8f09d76 --- /dev/null +++ b/catalog/docbook5.2/sch/dbitsxi.sch @@ -0,0 +1,609 @@ + + + + + + + + Callout cross reference constraint + + @arearefs on callout must point to a areaset, area, or co. + + + + Cardinality of segments and titles + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + Constraint cross reference constraint + + @linkend on constraint must point to a constraintdef. + + + + Element exclusion + + annotation must not occur among the children or descendants of annotation + + + caution must not occur among the children or descendants of caution + danger must not occur among the children or descendants of caution + important must not occur among the children or descendants of caution + note must not occur among the children or descendants of caution + tip must not occur among the children or descendants of caution + warning must not occur among the children or descendants of caution + + + caution must not occur among the children or descendants of danger + danger must not occur among the children or descendants of danger + important must not occur among the children or descendants of danger + note must not occur among the children or descendants of danger + tip must not occur among the children or descendants of danger + warning must not occur among the children or descendants of danger + + + caution must not occur among the children or descendants of important + danger must not occur among the children or descendants of important + important must not occur among the children or descendants of important + note must not occur among the children or descendants of important + tip must not occur among the children or descendants of important + warning must not occur among the children or descendants of important + + + caution must not occur among the children or descendants of note + danger must not occur among the children or descendants of note + important must not occur among the children or descendants of note + note must not occur among the children or descendants of note + tip must not occur among the children or descendants of note + warning must not occur among the children or descendants of note + + + caution must not occur among the children or descendants of tip + danger must not occur among the children or descendants of tip + important must not occur among the children or descendants of tip + note must not occur among the children or descendants of tip + tip must not occur among the children or descendants of tip + warning must not occur among the children or descendants of tip + + + caution must not occur among the children or descendants of warning + danger must not occur among the children or descendants of warning + important must not occur among the children or descendants of warning + note must not occur among the children or descendants of warning + tip must not occur among the children or descendants of warning + warning must not occur among the children or descendants of warning + + + caution must not occur among the children or descendants of caption + danger must not occur among the children or descendants of caption + equation must not occur among the children or descendants of caption + example must not occur among the children or descendants of caption + figure must not occur among the children or descendants of caption + important must not occur among the children or descendants of caption + note must not occur among the children or descendants of caption + sidebar must not occur among the children or descendants of caption + table must not occur among the children or descendants of caption + task must not occur among the children or descendants of caption + tip must not occur among the children or descendants of caption + warning must not occur among the children or descendants of caption + + + equation must not occur among the children or descendants of equation + example must not occur among the children or descendants of equation + figure must not occur among the children or descendants of equation + table must not occur among the children or descendants of equation + + + equation must not occur among the children or descendants of example + example must not occur among the children or descendants of example + figure must not occur among the children or descendants of example + table must not occur among the children or descendants of example + + + equation must not occur among the children or descendants of figure + example must not occur among the children or descendants of figure + figure must not occur among the children or descendants of figure + table must not occur among the children or descendants of figure + + + equation must not occur among the children or descendants of table + example must not occur among the children or descendants of table + figure must not occur among the children or descendants of table + + + caution must not occur among the children or descendants of footnote + danger must not occur among the children or descendants of footnote + epigraph must not occur among the children or descendants of footnote + equation must not occur among the children or descendants of footnote + example must not occur among the children or descendants of footnote + figure must not occur among the children or descendants of footnote + footnote must not occur among the children or descendants of footnote + important must not occur among the children or descendants of footnote + note must not occur among the children or descendants of footnote + sidebar must not occur among the children or descendants of footnote + table must not occur among the children or descendants of footnote + task must not occur among the children or descendants of footnote + tip must not occur among the children or descendants of footnote + warning must not occur among the children or descendants of footnote + + + sidebar must not occur among the children or descendants of sidebar + + + informaltable must not occur among the children or descendants of entry + table must not occur among the children or descendants of entry + + + + Footnote reference type constraint + + @linkend on footnoteref must point to a footnote. + + + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + Glossary 'seealso' type constraint + + @otherterm on glossseealso must point to a glossentry. + + + + Glossary term definition constraint + + A termdef must contain exactly one firstterm + + + + Glosssary 'see' type constraint + + @otherterm on glosssee must point to a glossentry. + + + + Indexterm 'startref' type constraint + + @startref on indexterm must point to a startofrange indexterm. + @startref on indexterm must point to an indexterm. + + + + Production recap cross reference constraint + + @linkend on productionrecap must point to a production. + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + + Suffix fixup must be specified + + If a suffix is specified, suffix ID fixup must also be specified. + + + + Synopsis fragment type constraint + + @linkend on synopfragmentref must point to a synopfragment. + + + + XLink arc placement + + An XLink arc type element must occur as the direct child of an XLink extended type element. + + + + XLink extended placement + + An XLink extended type element may not occur as the direct child of an XLink extended type element. + + + + XLink locator placement + + An XLink locator type element must occur as the direct child of an XLink extended type element. + + + + XLink resource placement + + An XLink resource type element must occur as the direct child of an XLink extended type element. + + + + XLink title placement + + An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element. + + + diff --git a/catalog/docbook5.2/sch/docbook.sch b/catalog/docbook5.2/sch/docbook.sch new file mode 100755 index 0000000..8f09d76 --- /dev/null +++ b/catalog/docbook5.2/sch/docbook.sch @@ -0,0 +1,609 @@ + + + + + + + + Callout cross reference constraint + + @arearefs on callout must point to a areaset, area, or co. + + + + Cardinality of segments and titles + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + Constraint cross reference constraint + + @linkend on constraint must point to a constraintdef. + + + + Element exclusion + + annotation must not occur among the children or descendants of annotation + + + caution must not occur among the children or descendants of caution + danger must not occur among the children or descendants of caution + important must not occur among the children or descendants of caution + note must not occur among the children or descendants of caution + tip must not occur among the children or descendants of caution + warning must not occur among the children or descendants of caution + + + caution must not occur among the children or descendants of danger + danger must not occur among the children or descendants of danger + important must not occur among the children or descendants of danger + note must not occur among the children or descendants of danger + tip must not occur among the children or descendants of danger + warning must not occur among the children or descendants of danger + + + caution must not occur among the children or descendants of important + danger must not occur among the children or descendants of important + important must not occur among the children or descendants of important + note must not occur among the children or descendants of important + tip must not occur among the children or descendants of important + warning must not occur among the children or descendants of important + + + caution must not occur among the children or descendants of note + danger must not occur among the children or descendants of note + important must not occur among the children or descendants of note + note must not occur among the children or descendants of note + tip must not occur among the children or descendants of note + warning must not occur among the children or descendants of note + + + caution must not occur among the children or descendants of tip + danger must not occur among the children or descendants of tip + important must not occur among the children or descendants of tip + note must not occur among the children or descendants of tip + tip must not occur among the children or descendants of tip + warning must not occur among the children or descendants of tip + + + caution must not occur among the children or descendants of warning + danger must not occur among the children or descendants of warning + important must not occur among the children or descendants of warning + note must not occur among the children or descendants of warning + tip must not occur among the children or descendants of warning + warning must not occur among the children or descendants of warning + + + caution must not occur among the children or descendants of caption + danger must not occur among the children or descendants of caption + equation must not occur among the children or descendants of caption + example must not occur among the children or descendants of caption + figure must not occur among the children or descendants of caption + important must not occur among the children or descendants of caption + note must not occur among the children or descendants of caption + sidebar must not occur among the children or descendants of caption + table must not occur among the children or descendants of caption + task must not occur among the children or descendants of caption + tip must not occur among the children or descendants of caption + warning must not occur among the children or descendants of caption + + + equation must not occur among the children or descendants of equation + example must not occur among the children or descendants of equation + figure must not occur among the children or descendants of equation + table must not occur among the children or descendants of equation + + + equation must not occur among the children or descendants of example + example must not occur among the children or descendants of example + figure must not occur among the children or descendants of example + table must not occur among the children or descendants of example + + + equation must not occur among the children or descendants of figure + example must not occur among the children or descendants of figure + figure must not occur among the children or descendants of figure + table must not occur among the children or descendants of figure + + + equation must not occur among the children or descendants of table + example must not occur among the children or descendants of table + figure must not occur among the children or descendants of table + + + caution must not occur among the children or descendants of footnote + danger must not occur among the children or descendants of footnote + epigraph must not occur among the children or descendants of footnote + equation must not occur among the children or descendants of footnote + example must not occur among the children or descendants of footnote + figure must not occur among the children or descendants of footnote + footnote must not occur among the children or descendants of footnote + important must not occur among the children or descendants of footnote + note must not occur among the children or descendants of footnote + sidebar must not occur among the children or descendants of footnote + table must not occur among the children or descendants of footnote + task must not occur among the children or descendants of footnote + tip must not occur among the children or descendants of footnote + warning must not occur among the children or descendants of footnote + + + sidebar must not occur among the children or descendants of sidebar + + + informaltable must not occur among the children or descendants of entry + table must not occur among the children or descendants of entry + + + + Footnote reference type constraint + + @linkend on footnoteref must point to a footnote. + + + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + Glossary 'seealso' type constraint + + @otherterm on glossseealso must point to a glossentry. + + + + Glossary term definition constraint + + A termdef must contain exactly one firstterm + + + + Glosssary 'see' type constraint + + @otherterm on glosssee must point to a glossentry. + + + + Indexterm 'startref' type constraint + + @startref on indexterm must point to a startofrange indexterm. + @startref on indexterm must point to an indexterm. + + + + Production recap cross reference constraint + + @linkend on productionrecap must point to a production. + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + + Suffix fixup must be specified + + If a suffix is specified, suffix ID fixup must also be specified. + + + + Synopsis fragment type constraint + + @linkend on synopfragmentref must point to a synopfragment. + + + + XLink arc placement + + An XLink arc type element must occur as the direct child of an XLink extended type element. + + + + XLink extended placement + + An XLink extended type element may not occur as the direct child of an XLink extended type element. + + + + XLink locator placement + + An XLink locator type element must occur as the direct child of an XLink extended type element. + + + + XLink resource placement + + An XLink resource type element must occur as the direct child of an XLink extended type element. + + + + XLink title placement + + An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element. + + + diff --git a/catalog/docbook5.2/sch/docbookxi.sch b/catalog/docbook5.2/sch/docbookxi.sch new file mode 100755 index 0000000..8f09d76 --- /dev/null +++ b/catalog/docbook5.2/sch/docbookxi.sch @@ -0,0 +1,609 @@ + + + + + + + + Callout cross reference constraint + + @arearefs on callout must point to a areaset, area, or co. + + + + Cardinality of segments and titles + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + Constraint cross reference constraint + + @linkend on constraint must point to a constraintdef. + + + + Element exclusion + + annotation must not occur among the children or descendants of annotation + + + caution must not occur among the children or descendants of caution + danger must not occur among the children or descendants of caution + important must not occur among the children or descendants of caution + note must not occur among the children or descendants of caution + tip must not occur among the children or descendants of caution + warning must not occur among the children or descendants of caution + + + caution must not occur among the children or descendants of danger + danger must not occur among the children or descendants of danger + important must not occur among the children or descendants of danger + note must not occur among the children or descendants of danger + tip must not occur among the children or descendants of danger + warning must not occur among the children or descendants of danger + + + caution must not occur among the children or descendants of important + danger must not occur among the children or descendants of important + important must not occur among the children or descendants of important + note must not occur among the children or descendants of important + tip must not occur among the children or descendants of important + warning must not occur among the children or descendants of important + + + caution must not occur among the children or descendants of note + danger must not occur among the children or descendants of note + important must not occur among the children or descendants of note + note must not occur among the children or descendants of note + tip must not occur among the children or descendants of note + warning must not occur among the children or descendants of note + + + caution must not occur among the children or descendants of tip + danger must not occur among the children or descendants of tip + important must not occur among the children or descendants of tip + note must not occur among the children or descendants of tip + tip must not occur among the children or descendants of tip + warning must not occur among the children or descendants of tip + + + caution must not occur among the children or descendants of warning + danger must not occur among the children or descendants of warning + important must not occur among the children or descendants of warning + note must not occur among the children or descendants of warning + tip must not occur among the children or descendants of warning + warning must not occur among the children or descendants of warning + + + caution must not occur among the children or descendants of caption + danger must not occur among the children or descendants of caption + equation must not occur among the children or descendants of caption + example must not occur among the children or descendants of caption + figure must not occur among the children or descendants of caption + important must not occur among the children or descendants of caption + note must not occur among the children or descendants of caption + sidebar must not occur among the children or descendants of caption + table must not occur among the children or descendants of caption + task must not occur among the children or descendants of caption + tip must not occur among the children or descendants of caption + warning must not occur among the children or descendants of caption + + + equation must not occur among the children or descendants of equation + example must not occur among the children or descendants of equation + figure must not occur among the children or descendants of equation + table must not occur among the children or descendants of equation + + + equation must not occur among the children or descendants of example + example must not occur among the children or descendants of example + figure must not occur among the children or descendants of example + table must not occur among the children or descendants of example + + + equation must not occur among the children or descendants of figure + example must not occur among the children or descendants of figure + figure must not occur among the children or descendants of figure + table must not occur among the children or descendants of figure + + + equation must not occur among the children or descendants of table + example must not occur among the children or descendants of table + figure must not occur among the children or descendants of table + + + caution must not occur among the children or descendants of footnote + danger must not occur among the children or descendants of footnote + epigraph must not occur among the children or descendants of footnote + equation must not occur among the children or descendants of footnote + example must not occur among the children or descendants of footnote + figure must not occur among the children or descendants of footnote + footnote must not occur among the children or descendants of footnote + important must not occur among the children or descendants of footnote + note must not occur among the children or descendants of footnote + sidebar must not occur among the children or descendants of footnote + table must not occur among the children or descendants of footnote + task must not occur among the children or descendants of footnote + tip must not occur among the children or descendants of footnote + warning must not occur among the children or descendants of footnote + + + sidebar must not occur among the children or descendants of sidebar + + + informaltable must not occur among the children or descendants of entry + table must not occur among the children or descendants of entry + + + + Footnote reference type constraint + + @linkend on footnoteref must point to a footnote. + + + + Glossary 'firstterm' type constraint + + @linkend on firstterm must point to a glossentry. + + + + Glossary 'glossterm' type constraint + + @linkend on glossterm must point to a glossentry. + + + + Glossary 'seealso' type constraint + + @otherterm on glossseealso must point to a glossentry. + + + + Glossary term definition constraint + + A termdef must contain exactly one firstterm + + + + Glosssary 'see' type constraint + + @otherterm on glosssee must point to a glossentry. + + + + Indexterm 'startref' type constraint + + @startref on indexterm must point to a startofrange indexterm. + @startref on indexterm must point to an indexterm. + + + + Production recap cross reference constraint + + @linkend on productionrecap must point to a production. + + + + Root must have version + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + If this element is the root element, it must have a version attribute. + + + + Suffix fixup must be specified + + If a suffix is specified, suffix ID fixup must also be specified. + + + + Synopsis fragment type constraint + + @linkend on synopfragmentref must point to a synopfragment. + + + + XLink arc placement + + An XLink arc type element must occur as the direct child of an XLink extended type element. + + + + XLink extended placement + + An XLink extended type element may not occur as the direct child of an XLink extended type element. + + + + XLink locator placement + + An XLink locator type element must occur as the direct child of an XLink extended type element. + + + + XLink resource placement + + An XLink resource type element must occur as the direct child of an XLink extended type element. + + + + XLink title placement + + An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element. + + + diff --git a/catalog/xhtml1.1/xhtml-attribs-1.mod b/catalog/xhtml1.1/xhtml-attribs-1.mod new file mode 100644 index 0000000..2567b46 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-attribs-1.mod @@ -0,0 +1,142 @@ + + + + + + + + + +]]> + + + + +]]> + + + + +]]> + + + + + + + + +]]> + + + + + + + + + + + +]]> + + +]]> + + + + + + + + + + + + + + + + diff --git a/catalog/xhtml1.1/xhtml-base-1.mod b/catalog/xhtml1.1/xhtml-base-1.mod new file mode 100644 index 0000000..ea50e42 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-base-1.mod @@ -0,0 +1,53 @@ + + + + + + + + + + + + +]]> + + + +]]> + + + + diff --git a/catalog/xhtml1.1/xhtml-bdo-1.mod b/catalog/xhtml1.1/xhtml-bdo-1.mod new file mode 100644 index 0000000..b47dad6 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-bdo-1.mod @@ -0,0 +1,47 @@ + + + + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-blkphras-1.mod b/catalog/xhtml1.1/xhtml-blkphras-1.mod new file mode 100644 index 0000000..1b2fc45 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-blkphras-1.mod @@ -0,0 +1,164 @@ + + + + + + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + +]]> + + + +]]> + + + + +]]> + + + +]]> + + + + +]]> + + + +]]> + + + + +]]> + + + +]]> + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-blkpres-1.mod b/catalog/xhtml1.1/xhtml-blkpres-1.mod new file mode 100644 index 0000000..62f1da4 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-blkpres-1.mod @@ -0,0 +1,40 @@ + + + + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-blkstruct-1.mod b/catalog/xhtml1.1/xhtml-blkstruct-1.mod new file mode 100644 index 0000000..49fcc82 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-blkstruct-1.mod @@ -0,0 +1,57 @@ + + + + + + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-charent-1.mod b/catalog/xhtml1.1/xhtml-charent-1.mod new file mode 100644 index 0000000..bfe8616 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-charent-1.mod @@ -0,0 +1,39 @@ + + + + + + + +%xhtml-lat1; + + +%xhtml-symbol; + + +%xhtml-special; + + diff --git a/catalog/xhtml1.1/xhtml-csismap-1.mod b/catalog/xhtml1.1/xhtml-csismap-1.mod new file mode 100644 index 0000000..8283031 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-csismap-1.mod @@ -0,0 +1,114 @@ + + + + + + + + + + +]]> + + + + + + +]]> + + + + + + + + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-datatypes-1.mod b/catalog/xhtml1.1/xhtml-datatypes-1.mod new file mode 100644 index 0000000..01383fa --- /dev/null +++ b/catalog/xhtml1.1/xhtml-datatypes-1.mod @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/xhtml1.1/xhtml-edit-1.mod b/catalog/xhtml1.1/xhtml-edit-1.mod new file mode 100644 index 0000000..28dd01c --- /dev/null +++ b/catalog/xhtml1.1/xhtml-edit-1.mod @@ -0,0 +1,66 @@ + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-events-1.mod b/catalog/xhtml1.1/xhtml-events-1.mod new file mode 100644 index 0000000..0a3b183 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-events-1.mod @@ -0,0 +1,135 @@ + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/xhtml1.1/xhtml-form-1.mod b/catalog/xhtml1.1/xhtml-form-1.mod new file mode 100644 index 0000000..44493d3 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-form-1.mod @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-framework-1.mod b/catalog/xhtml1.1/xhtml-framework-1.mod new file mode 100644 index 0000000..f0da5a8 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-framework-1.mod @@ -0,0 +1,97 @@ + + + + + + + + +%xhtml-arch.mod;]]> + + + +%xhtml-notations.mod;]]> + + + +%xhtml-datatypes.mod;]]> + + + +%xhtml-xlink.mod; + + + +%xhtml-qname.mod;]]> + + + +%xhtml-events.mod;]]> + + + +%xhtml-attribs.mod;]]> + + + +%xhtml-model.redecl; + + + +%xhtml-model.mod;]]> + + + +%xhtml-charent.mod;]]> + + diff --git a/catalog/xhtml1.1/xhtml-hypertext-1.mod b/catalog/xhtml1.1/xhtml-hypertext-1.mod new file mode 100644 index 0000000..6c00720 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-hypertext-1.mod @@ -0,0 +1,54 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-image-1.mod b/catalog/xhtml1.1/xhtml-image-1.mod new file mode 100644 index 0000000..6d3742d --- /dev/null +++ b/catalog/xhtml1.1/xhtml-image-1.mod @@ -0,0 +1,51 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-inlphras-1.mod b/catalog/xhtml1.1/xhtml-inlphras-1.mod new file mode 100644 index 0000000..b2f6eab --- /dev/null +++ b/catalog/xhtml1.1/xhtml-inlphras-1.mod @@ -0,0 +1,203 @@ + + + + + + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-inlpres-1.mod b/catalog/xhtml1.1/xhtml-inlpres-1.mod new file mode 100644 index 0000000..5d90096 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-inlpres-1.mod @@ -0,0 +1,138 @@ + + + + + + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-inlstruct-1.mod b/catalog/xhtml1.1/xhtml-inlstruct-1.mod new file mode 100644 index 0000000..422dd23 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-inlstruct-1.mod @@ -0,0 +1,62 @@ + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-link-1.mod b/catalog/xhtml1.1/xhtml-link-1.mod new file mode 100644 index 0000000..2a18daf --- /dev/null +++ b/catalog/xhtml1.1/xhtml-link-1.mod @@ -0,0 +1,59 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-list-1.mod b/catalog/xhtml1.1/xhtml-list-1.mod new file mode 100644 index 0000000..fe95802 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-list-1.mod @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-meta-1.mod b/catalog/xhtml1.1/xhtml-meta-1.mod new file mode 100644 index 0000000..480d8d5 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-meta-1.mod @@ -0,0 +1,47 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-notations-1.mod b/catalog/xhtml1.1/xhtml-notations-1.mod new file mode 100644 index 0000000..a1f44a6 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-notations-1.mod @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/xhtml1.1/xhtml-object-1.mod b/catalog/xhtml1.1/xhtml-object-1.mod new file mode 100644 index 0000000..4ad5abc --- /dev/null +++ b/catalog/xhtml1.1/xhtml-object-1.mod @@ -0,0 +1,60 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-param-1.mod b/catalog/xhtml1.1/xhtml-param-1.mod new file mode 100644 index 0000000..f873388 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-param-1.mod @@ -0,0 +1,48 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-pres-1.mod b/catalog/xhtml1.1/xhtml-pres-1.mod new file mode 100644 index 0000000..cb3d69b --- /dev/null +++ b/catalog/xhtml1.1/xhtml-pres-1.mod @@ -0,0 +1,38 @@ + + + + + + + + +%xhtml-inlpres.mod;]]> + + + +%xhtml-blkpres.mod;]]> + + diff --git a/catalog/xhtml1.1/xhtml-qname-1.mod b/catalog/xhtml1.1/xhtml-qname-1.mod new file mode 100644 index 0000000..5f15d16 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-qname-1.mod @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + +%xhtml-qname-extra.mod; + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + +]]> + + + + +%xhtml-qname.redecl; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/xhtml1.1/xhtml-ruby-1.mod b/catalog/xhtml1.1/xhtml-ruby-1.mod new file mode 100644 index 0000000..a44bb3f --- /dev/null +++ b/catalog/xhtml1.1/xhtml-ruby-1.mod @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + + +]]> + +]]> + + + +]]> + + + + + + + + + + + + + +]]> + + + + + + +]]> + + + + + + +]]> +]]> + + + + + + + +]]> + + + + + + + + +]]> + + + + +]]> +]]> + + + + + + +]]> +]]> + + + + + + + + + + +]]> + + + + + +]]> + + + + + +]]> +]]> + + + + + +]]> + + + + + +]]> + + + + + +]]> +]]> +]]> + + diff --git a/catalog/xhtml1.1/xhtml-script-1.mod b/catalog/xhtml1.1/xhtml-script-1.mod new file mode 100644 index 0000000..573eff9 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-script-1.mod @@ -0,0 +1,67 @@ + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-ssismap-1.mod b/catalog/xhtml1.1/xhtml-ssismap-1.mod new file mode 100644 index 0000000..31a9a0b --- /dev/null +++ b/catalog/xhtml1.1/xhtml-ssismap-1.mod @@ -0,0 +1,32 @@ + + + + + + + + + + + diff --git a/catalog/xhtml1.1/xhtml-struct-1.mod b/catalog/xhtml1.1/xhtml-struct-1.mod new file mode 100644 index 0000000..7530a2d --- /dev/null +++ b/catalog/xhtml1.1/xhtml-struct-1.mod @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-style-1.mod b/catalog/xhtml1.1/xhtml-style-1.mod new file mode 100644 index 0000000..9246993 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-style-1.mod @@ -0,0 +1,48 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-table-1.mod b/catalog/xhtml1.1/xhtml-table-1.mod new file mode 100644 index 0000000..b6eba8d --- /dev/null +++ b/catalog/xhtml1.1/xhtml-table-1.mod @@ -0,0 +1,333 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + diff --git a/catalog/xhtml1.1/xhtml-text-1.mod b/catalog/xhtml1.1/xhtml-text-1.mod new file mode 100644 index 0000000..ab183a3 --- /dev/null +++ b/catalog/xhtml1.1/xhtml-text-1.mod @@ -0,0 +1,52 @@ + + + + + + + + +%xhtml-inlstruct.mod;]]> + + + +%xhtml-inlphras.mod;]]> + + + +%xhtml-blkstruct.mod;]]> + + + +%xhtml-blkphras.mod;]]> + + diff --git a/catalog/xliff2.2/catalog.xml b/catalog/xliff2.2/catalog.xml new file mode 100644 index 0000000..d4b7160 --- /dev/null +++ b/catalog/xliff2.2/catalog.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/catalog/xliff2.2/fs.xsd b/catalog/xliff2.2/fs.xsd new file mode 100644 index 0000000..2561254 --- /dev/null +++ b/catalog/xliff2.2/fs.xsd @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/xliff2.2/glossary.xsd b/catalog/xliff2.2/glossary.xsd new file mode 100644 index 0000000..7b3d060 --- /dev/null +++ b/catalog/xliff2.2/glossary.xsd @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/xliff2.2/informativeCopiesOf3rdPartySchemas/readme.txt b/catalog/xliff2.2/informativeCopiesOf3rdPartySchemas/readme.txt new file mode 100644 index 0000000..9485b98 --- /dev/null +++ b/catalog/xliff2.2/informativeCopiesOf3rdPartySchemas/readme.txt @@ -0,0 +1,3 @@ +IMPORTANT WARNING +Schema copies in this sub-folder are provided solely for implementers convenience and are NOT a part of the OASIS multipart product. +These schemas belong to their respective owners and their use is governed by their owners' respective IPR policies. diff --git a/catalog/xliff2.2/informativeCopiesOf3rdPartySchemas/w3c/xml.xsd b/catalog/xliff2.2/informativeCopiesOf3rdPartySchemas/w3c/xml.xsd new file mode 100644 index 0000000..aea7d0d --- /dev/null +++ b/catalog/xliff2.2/informativeCopiesOf3rdPartySchemas/w3c/xml.xsd @@ -0,0 +1,287 @@ + + + + + + +
+

About the XML namespace

+ +
+

+ This schema document describes the XML namespace, in a form + suitable for import by other schema documents. +

+

+ See + http://www.w3.org/XML/1998/namespace.html and + + http://www.w3.org/TR/REC-xml for information + about this namespace. +

+

+ Note that local names in this namespace are intended to be + defined only by the World Wide Web Consortium or its subgroups. + The names currently defined in this namespace are listed below. + They should not be used with conflicting semantics by any Working + Group, specification, or document instance. +

+

+ See further below in this document for more information about how to refer to this schema document from your own + XSD schema documents and about the + namespace-versioning policy governing this schema document. +

+
+
+
+
+ + + + +
+ +

lang (as an attribute name)

+

+ denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification.

+ +
+
+

Notes

+

+ Attempting to install the relevant ISO 2- and 3-letter + codes as the enumerated possible values is probably never + going to be a realistic possibility. +

+

+ See BCP 47 at + http://www.rfc-editor.org/rfc/bcp/bcp47.txt + and the IANA language subtag registry at + + http://www.iana.org/assignments/language-subtag-registry + for further information. +

+

+ The union allows for the 'un-declaration' of xml:lang with + the empty string. +

+
+
+
+ + + + + + + + + +
+ + + + +
+ +

space (as an attribute name)

+

+ denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification.

+ +
+
+
+ + + + + + +
+ + + +
+ +

base (as an attribute name)

+

+ denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification.

+ +

+ See http://www.w3.org/TR/xmlbase/ + for information about this attribute. +

+
+
+
+
+ + + + +
+ +

id (as an attribute name)

+

+ denotes an attribute whose value + should be interpreted as if declared to be of type ID. + This name is reserved by virtue of its definition in the + xml:id specification.

+ +

+ See http://www.w3.org/TR/xml-id/ + for information about this attribute. +

+
+
+
+
+ + + + + + + + + + +
+ +

Father (in any context at all)

+ +
+

+ denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: +

+
+

+ In appreciation for his vision, leadership and + dedication the W3C XML Plenary on this 10th day of + February, 2000, reserves for Jon Bosak in perpetuity + the XML name "xml:Father". +

+
+
+
+
+
+ + + +
+

About this schema document

+ +
+

+ This schema defines attributes and an attribute group suitable + for use by schemas wishing to allow xml:base, + xml:lang, xml:space or + xml:id attributes on elements they define. +

+

+ To enable this, such a schema must import this schema for + the XML namespace, e.g. as follows: +

+
+          <schema . . .>
+           . . .
+           <import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     
+

+ or +

+
+           <import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     
+

+ Subsequently, qualified reference to any of the attributes or the + group defined below will have the desired effect, e.g. +

+
+          <type . . .>
+           . . .
+           <attributeGroup ref="xml:specialAttrs"/>
+     
+

+ will define a type which will schema-validate an instance element + with any of those attributes. +

+
+
+
+
+ + + +
+

Versioning policy for this schema document

+
+

+ In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + + http://www.w3.org/2009/01/xml.xsd. +

+

+ At the date of issue it can also be found at + + http://www.w3.org/2001/xml.xsd. +

+

+ The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML + Schema itself, or with the XML namespace itself. In other words, + if the XML Schema or XML namespaces change, the version of this + document at + http://www.w3.org/2001/xml.xsd + + will change accordingly; the version at + + http://www.w3.org/2009/01/xml.xsd + + will not change. +

+

+ Previous dated (and unchanging) versions of this schema + document are at: +

+ +
+
+
+
+ +
+ diff --git a/catalog/xliff2.2/its.xsd b/catalog/xliff2.2/its.xsd new file mode 100644 index 0000000..1f99488 --- /dev/null +++ b/catalog/xliff2.2/its.xsd @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/xliff2.2/itsm.xsd b/catalog/xliff2.2/itsm.xsd new file mode 100644 index 0000000..ce937e4 --- /dev/null +++ b/catalog/xliff2.2/itsm.xsd @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/catalog/xliff2.2/matches.xsd b/catalog/xliff2.2/matches.xsd new file mode 100644 index 0000000..da4fc0c --- /dev/null +++ b/catalog/xliff2.2/matches.xsd @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/xliff2.2/metadata.xsd b/catalog/xliff2.2/metadata.xsd new file mode 100644 index 0000000..233c10b --- /dev/null +++ b/catalog/xliff2.2/metadata.xsd @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/xliff2.2/plural_gender_select.xsd b/catalog/xliff2.2/plural_gender_select.xsd new file mode 100644 index 0000000..4d3a75e --- /dev/null +++ b/catalog/xliff2.2/plural_gender_select.xsd @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/catalog/xliff2.2/resource_data.xsd b/catalog/xliff2.2/resource_data.xsd new file mode 100644 index 0000000..665c61f --- /dev/null +++ b/catalog/xliff2.2/resource_data.xsd @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/xliff2.2/size_restriction.xsd b/catalog/xliff2.2/size_restriction.xsd new file mode 100644 index 0000000..6ceeafb --- /dev/null +++ b/catalog/xliff2.2/size_restriction.xsd @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/xliff2.2/validation.xsd b/catalog/xliff2.2/validation.xsd new file mode 100644 index 0000000..d5c35cc --- /dev/null +++ b/catalog/xliff2.2/validation.xsd @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalog/xliff2.2/xliff_core_2.2.xsd b/catalog/xliff2.2/xliff_core_2.2.xsd new file mode 100644 index 0000000..32c48b2 --- /dev/null +++ b/catalog/xliff2.2/xliff_core_2.2.xsd @@ -0,0 +1,421 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Version values: 2.0 and 2.1 are allowed for backward compatibility. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/html/about.html b/html/about.html index 089cc08..50244e3 100644 --- a/html/about.html +++ b/html/about.html @@ -11,7 +11,7 @@

Swordfish

about box -

Copyright © 2007 - 2023 Maxprograms

+

Copyright © 2007 - 2024 Maxprograms

diff --git a/jars/openxliff.jar b/jars/openxliff.jar index a49dfe2..981dceb 100644 Binary files a/jars/openxliff.jar and b/jars/openxliff.jar differ diff --git a/jars/xmljava.jar b/jars/xmljava.jar index d02b858..f1c5bcc 100644 Binary files a/jars/xmljava.jar and b/jars/xmljava.jar differ diff --git a/package.json b/package.json index 6233f5d..42c8a2a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "swordfish", "productName": "Swordfish", - "version": "4.28.1", + "version": "4.29.0", "description": "Swordfish Translation Editor", "main": "js/Swordfish.js", "scripts": { @@ -20,7 +20,12 @@ "url": "https://github.com/rmraya/Swordfish.git" }, "devDependencies": { - "electron": "^27.0.2", - "typescript": "^5.2.2" + "electron": "^28.1.3", + "typescript": "^5.3.3" + }, + "dependencies": { + "mtengines": "^1.2.1", + "typesbcp47": "^1.2.0", + "typesxml": "^1.2.1" } -} +} \ No newline at end of file diff --git a/src/com/maxprograms/swordfish/CheckURL.java b/src/com/maxprograms/swordfish/CheckURL.java index a6a1fea..6561331 100644 --- a/src/com/maxprograms/swordfish/CheckURL.java +++ b/src/com/maxprograms/swordfish/CheckURL.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -16,6 +16,8 @@ import java.lang.System.Logger; import java.lang.System.Logger.Level; import java.net.HttpURLConnection; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; public class CheckURL { @@ -36,7 +38,7 @@ protected static void checkURL(String string) { try { connect(string); waiting = false; - } catch (IOException e) { + } catch (IOException | URISyntaxException e) { try { Thread.sleep(500); count++; @@ -53,8 +55,8 @@ protected static void checkURL(String string) { } } - private static void connect(String string) throws IOException { - URL url = new URL(string); + private static void connect(String string) throws IOException, URISyntaxException { + URL url = new URI(string).toURL(); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(1000); connection.connect(); diff --git a/src/com/maxprograms/swordfish/Constants.java b/src/com/maxprograms/swordfish/Constants.java index 9e48d61..dfc4add 100644 --- a/src/com/maxprograms/swordfish/Constants.java +++ b/src/com/maxprograms/swordfish/Constants.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -19,8 +19,8 @@ private Constants() { } public static final String APPNAME = "Swordfish"; - public static final String VERSION = "4.28.1"; - public static final String BUILD = "20231028_0741"; + public static final String VERSION = "4.29.0"; + public static final String BUILD = "20240122_0818"; public static final String REASON = "reason"; public static final String STATUS = "status"; diff --git a/src/com/maxprograms/swordfish/GlossariesHandler.java b/src/com/maxprograms/swordfish/GlossariesHandler.java index edcf5cc..c9b810c 100644 --- a/src/com/maxprograms/swordfish/GlossariesHandler.java +++ b/src/com/maxprograms/swordfish/GlossariesHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -245,7 +245,7 @@ private static JSONObject deleteGlossary(String request) { JSONObject completed = new JSONObject(); completed.put(Constants.PROGRESS, Constants.COMPLETED); openTasks.put(process, completed); - } catch (IOException | SQLException e) { + } catch (IOException | SQLException | URISyntaxException e) { logger.log(Level.ERROR, e.getMessage(), e); JSONObject error = new JSONObject(); error.put(Constants.REASON, e.getMessage()); @@ -311,7 +311,7 @@ private static JSONObject exportGlossary(String request) { JSONObject completed = new JSONObject(); completed.put(Constants.PROGRESS, Constants.COMPLETED); openTasks.put(process, completed); - } catch (IOException | JSONException | SAXException | ParserConfigurationException | SQLException e) { + } catch (IOException | JSONException | SAXException | ParserConfigurationException | SQLException | URISyntaxException e) { logger.log(Level.ERROR, e.getMessage(), e); JSONObject error = new JSONObject(); error.put(Constants.REASON, e.getMessage()); @@ -322,14 +322,14 @@ private static JSONObject exportGlossary(String request) { return result; } - public static synchronized void openGlossary(String id) throws IOException, SQLException { + public static synchronized void openGlossary(String id) throws IOException, SQLException, URISyntaxException { if (glossaries == null) { loadGlossariesList(); } openGlossary(glossaries.get(id)); } - public static synchronized void openGlossary(Memory memory) throws IOException, SQLException { + public static synchronized void openGlossary(Memory memory) throws IOException, SQLException, URISyntaxException { if (glossaries == null) { loadGlossariesList(); } @@ -338,7 +338,7 @@ public static synchronized void openGlossary(Memory memory) throws IOException, engines.put(memory.getId(), engine); } - public static ITmEngine getEngine(String id) throws IOException, SQLException { + public static ITmEngine getEngine(String id) throws IOException, SQLException, URISyntaxException { if (glossaries == null) { loadGlossariesList(); } @@ -349,14 +349,14 @@ public static ITmEngine getEngine(String id) throws IOException, SQLException { } - public static synchronized void closeGlossary(String id) throws IOException, SQLException { + public static synchronized void closeGlossary(String id) throws IOException, SQLException, URISyntaxException { if (engines != null && engines.containsKey(id)) { engines.get(id).close(); engines.remove(id); } } - public static synchronized void closeAll() throws IOException, SQLException { + public static synchronized void closeAll() throws IOException, SQLException, URISyntaxException { Set keys = engines.keySet(); Iterator it = keys.iterator(); while (it.hasNext()) { @@ -516,7 +516,7 @@ private JSONObject addTerm(String request) { engine.storeTu(tu); engine.commit(); closeGlossary(glossary); - } catch (IOException | SQLException e) { + } catch (IOException | SQLException | URISyntaxException e) { logger.log(Level.ERROR, e); result.put("result", Constants.ERROR); result.put(Constants.REASON, e.getMessage()); @@ -543,7 +543,7 @@ public static JSONObject searchTerm(String request) { closeGlossary(glossary); result.put("count", matches.size()); result.put("html", generateHTML(matches)); - } catch (IOException | SAXException | ParserConfigurationException | SQLException e) { + } catch (IOException | SAXException | ParserConfigurationException | SQLException | URISyntaxException e) { logger.log(Level.ERROR, e); result.put("result", Constants.ERROR); result.put(Constants.REASON, e.getMessage()); diff --git a/src/com/maxprograms/swordfish/MemoriesHandler.java b/src/com/maxprograms/swordfish/MemoriesHandler.java index ddf5523..788ed1e 100644 --- a/src/com/maxprograms/swordfish/MemoriesHandler.java +++ b/src/com/maxprograms/swordfish/MemoriesHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -20,6 +20,7 @@ import java.lang.System.Logger; import java.lang.System.Logger.Level; import java.net.URI; +import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.sql.SQLException; @@ -38,6 +39,7 @@ import javax.xml.parsers.ParserConfigurationException; import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; import org.xml.sax.SAXException; @@ -157,7 +159,7 @@ private static JSONObject getLanguages(String request) { completed.put("languages", array); completed.put(Constants.PROGRESS, Constants.COMPLETED); openTasks.put(process, completed); - } catch (IOException | SQLException e) { + } catch (IOException | SQLException | URISyntaxException e) { logger.log(Level.ERROR, e.getMessage(), e); JSONObject error = new JSONObject(); error.put(Constants.REASON, e.getMessage()); @@ -228,7 +230,7 @@ private JSONObject concordanceSearch(String request) { result.put("html", generateHTML(matches, searchStr, isRegexp, caseSensitive)); result.put(Constants.PROGRESS, Constants.COMPLETED); openTasks.put(process, result); - } catch (IOException | SAXException | ParserConfigurationException | SQLException e) { + } catch (IOException | SAXException | ParserConfigurationException | SQLException | URISyntaxException e) { logger.log(Level.ERROR, e.getMessage(), e); JSONObject error = new JSONObject(); error.put(Constants.REASON, e.getMessage()); @@ -287,7 +289,7 @@ private static JSONObject importTMX(String request) { logger.log(Level.ERROR, e.getMessage(), e); } close(memory); - } catch (IOException | SQLException e) { + } catch (IOException | SQLException | URISyntaxException e) { logger.log(Level.ERROR, e.getMessage(), e); JSONObject error = new JSONObject(); error.put(Constants.REASON, e.getMessage()); @@ -342,7 +344,7 @@ private static JSONObject exportMemory(String request) { JSONObject completed = new JSONObject(); completed.put(Constants.PROGRESS, Constants.COMPLETED); openTasks.put(process, completed); - } catch (IOException | SAXException | ParserConfigurationException | SQLException e) { + } catch (IOException | SAXException | ParserConfigurationException | SQLException | JSONException | URISyntaxException e) { logger.log(Level.ERROR, e.getMessage(), e); JSONObject error = new JSONObject(); error.put(Constants.REASON, e.getMessage()); @@ -382,7 +384,7 @@ private static JSONObject deleteMemory(String request) { JSONObject completed = new JSONObject(); completed.put(Constants.PROGRESS, Constants.COMPLETED); openTasks.put(process, completed); - } catch (IOException | SQLException e) { + } catch (IOException | SQLException | URISyntaxException e) { logger.log(Level.ERROR, e.getMessage(), e); JSONObject error = new JSONObject(); error.put(Constants.REASON, e.getMessage()); @@ -502,7 +504,7 @@ public static String getWorkFolder() throws IOException { return home.getAbsolutePath(); } - public static synchronized void open(String id) throws IOException, SQLException { + public static synchronized void open(String id) throws IOException, SQLException, URISyntaxException { if (memories == null) { loadMemoriesList(); } @@ -514,14 +516,14 @@ public static synchronized void open(String id) throws IOException, SQLException } } - public static synchronized void close(String id) throws IOException, SQLException { + public static synchronized void close(String id) throws IOException, SQLException, URISyntaxException { if (engines != null && engines.containsKey(id)) { engines.get(id).close(); engines.remove(id); } } - public static synchronized void closeAll() throws IOException, SQLException { + public static synchronized void closeAll() throws IOException, SQLException, URISyntaxException { Set keys = engines.keySet(); Iterator it = keys.iterator(); while (it.hasNext()) { @@ -533,7 +535,7 @@ public static synchronized void closeAll() throws IOException, SQLException { } } - public static ITmEngine getEngine(String id) throws IOException, SQLException { + public static ITmEngine getEngine(String id) throws IOException, SQLException, URISyntaxException { if (memories == null) { loadMemoriesList(); } diff --git a/src/com/maxprograms/swordfish/ProjectsHandler.java b/src/com/maxprograms/swordfish/ProjectsHandler.java index 0de19d1..cd455ac 100644 --- a/src/com/maxprograms/swordfish/ProjectsHandler.java +++ b/src/com/maxprograms/swordfish/ProjectsHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -52,7 +52,6 @@ import com.maxprograms.languages.LanguageUtils; import com.maxprograms.swordfish.models.Project; import com.maxprograms.swordfish.models.SourceFile; -import com.maxprograms.swordfish.mt.MT; import com.maxprograms.swordfish.xliff.Skeletons; import com.maxprograms.swordfish.xliff.XliffStore; import com.maxprograms.swordfish.xliff.XliffUtils; @@ -132,6 +131,10 @@ private JSONObject processRequest(String url, String request) { response = getProjectFiles(request); } else if ("/projects/segments".equals(url)) { response = getSegments(request); + } else if ("/projects/segmentSource".equals(url)) { + response = getSegmentSource(request); + } else if ("/projects/setMTMatches".equals(url)) { + response = setMTMatches(request); } else if ("/projects/count".equals(url)) { response = getSegmentsCount(request); } else if ("/projects/save".equals(url)) { @@ -140,8 +143,6 @@ private JSONObject processRequest(String url, String request) { response = saveSource(request); } else if ("/projects/matches".equals(url)) { response = getMatches(request); - } else if ("/projects/machineTranslate".equals(url)) { - response = machineTranslate(request); } else if ("/projects/assembleMatches".equals(url)) { response = assembleMatches(request); } else if ("/projects/applyAmAll".equals(url)) { @@ -215,7 +216,7 @@ private JSONObject processRequest(String url, String request) { } else if ("/projects/removeNote".equals(url)) { response = removeNote(request); } else { - response.put(Constants.REASON, "Unknown request"); + response.put(Constants.REASON, "Unknown request " + url); } if (!response.has(Constants.REASON)) { @@ -231,6 +232,19 @@ private JSONObject processRequest(String url, String request) { return response; } + private JSONObject setMTMatches(String request) + throws JSONException, SQLException, IOException, SAXException, ParserConfigurationException { + JSONObject result = new JSONObject(); + JSONObject json = new JSONObject(request); + String project = json.getString("project"); + if (!projects.containsKey(project)) { + result.put(Constants.REASON, "Project does not exist"); + return result; + } + projectStores.get(project).setMTMatches(json); + return result; + } + private JSONObject getProject(String request) throws IOException, JSONException { JSONObject json = new JSONObject(request); if (!projects.containsKey(json.getString("project"))) { @@ -500,6 +514,36 @@ private synchronized void saveProjectsList() throws IOException { } } + private JSONObject getSegmentSource(String request) { + JSONObject result = new JSONObject(); + JSONObject json = new JSONObject(request); + String project = json.getString("project"); + if (project == null) { + logger.log(Level.ERROR, "Null project requested"); + result.put(Constants.REASON, "Null project requested"); + return result; + } + if (!projectStores.containsKey(project)) { + try { + Project prj = projects.get(project); + XliffStore store = new XliffStore(prj.getXliff(), prj.getSourceLang().getCode(), + prj.getTargetLang().getCode()); + projectStores.put(project, store); + } catch (SAXException | IOException | ParserConfigurationException | URISyntaxException | SQLException e) { + logger.log(Level.ERROR, "Error creating project store", e); + result.put(Constants.REASON, e.getMessage()); + return result; + } + } + try { + result = projectStores.get(project).getSegmentSource(json); + } catch (SQLException | SAXException | IOException | ParserConfigurationException | JSONException e) { + logger.log(Level.ERROR, e); + result.put(Constants.REASON, e.getMessage()); + } + return result; + } + private JSONObject getSegments(String request) { JSONObject result = new JSONObject(); JSONObject json = new JSONObject(request); @@ -853,30 +897,6 @@ private JSONObject getMatches(String request) { return result; } - private JSONObject machineTranslate(String request) { - JSONObject result = new JSONObject(); - try { - MT translator = new MT(); - if (!translator.hasEngines()) { - result.put(Constants.REASON, "MT engines not enabled"); - return result; - } - JSONObject json = new JSONObject(request); - String project = json.getString("project"); - if (projectStores.containsKey(project)) { - result.put("matches", projectStores.get(project).machineTranslate(json, translator)); - } - } catch (IOException | SQLException | JSONException | SAXException | DataFormatException - | ParserConfigurationException e) { - logger.log(Level.ERROR, e); - result.put(Constants.REASON, e.getMessage()); - } catch (InterruptedException e) { - logger.log(Level.WARNING, "MT interrupted", e); - Thread.currentThread().interrupt(); - } - return result; - } - private JSONObject tmTranslate(String request) { JSONObject result = new JSONObject(); try { @@ -886,7 +906,7 @@ private JSONObject tmTranslate(String request) { result.put("matches", projectStores.get(project).tmTranslate(json)); } } catch (IOException | SQLException | JSONException | SAXException | DataFormatException - | ParserConfigurationException e) { + | ParserConfigurationException | URISyntaxException e) { logger.log(Level.ERROR, e); result.put(Constants.REASON, e.getMessage()); } @@ -903,7 +923,7 @@ private JSONObject assembleMatches(String request) { result.put("matches", projectStores.get(project).getTaggedtMatches(json)); } } catch (IOException | SQLException | JSONException | SAXException | DataFormatException - | ParserConfigurationException e) { + | ParserConfigurationException | URISyntaxException e) { logger.log(Level.ERROR, e); result.put(Constants.REASON, e.getMessage()); } @@ -937,7 +957,8 @@ private JSONObject assembleMatchesAll(String request) { } obj.put(Constants.PROGRESS, Constants.COMPLETED); processes.put(id, obj); - } catch (IOException | SQLException | JSONException | SAXException | ParserConfigurationException e) { + } catch (IOException | SQLException | JSONException | SAXException | ParserConfigurationException + | URISyntaxException e) { logger.log(Level.WARNING, e.getMessage(), e); obj.put(Constants.PROGRESS, Constants.ERROR); obj.put(Constants.REASON, e.getMessage()); @@ -979,7 +1000,8 @@ private JSONObject tmTranslateAll(String request) { projectStores.get(project).tmTranslateAll(memory, penalization, processes, id)); obj.put(Constants.PROGRESS, Constants.COMPLETED); processes.put(id, obj); - } catch (JSONException | IOException | SQLException | SAXException | ParserConfigurationException e) { + } catch (JSONException | IOException | SQLException | SAXException | ParserConfigurationException + | URISyntaxException e) { logger.log(Level.WARNING, e.getMessage(), e); obj.put(Constants.PROGRESS, Constants.ERROR); obj.put(Constants.REASON, e.getMessage()); @@ -1266,7 +1288,8 @@ private JSONObject confirmAllTranslations(String request) { } obj.put(Constants.PROGRESS, Constants.COMPLETED); processes.put(id, obj); - } catch (IOException | SQLException | SAXException | ParserConfigurationException e) { + } catch (IOException | SQLException | SAXException | ParserConfigurationException + | URISyntaxException e) { logger.log(Level.WARNING, e.getMessage(), e); obj.put(Constants.PROGRESS, Constants.ERROR); obj.put(Constants.REASON, e.getMessage()); @@ -1373,46 +1396,30 @@ private JSONObject replaceText(String request) { private JSONObject applyMtAll(String request) { JSONObject result = new JSONObject(); - try { - MT translator = new MT(); - if (!translator.hasEngines()) { - result.put(Constants.REASON, "MT engines not enabled"); - return result; - } - String id = "" + System.currentTimeMillis(); - result.put("process", id); - if (processes == null) { - processes = new Hashtable<>(); - } - JSONObject obj = new JSONObject(); - obj.put(Constants.PROGRESS, Constants.PROCESSING); - processes.put(id, obj); - new Thread(() -> { - try { - JSONObject json = new JSONObject(request); - String project = json.getString("project"); - if (projectStores.containsKey(project)) { - projectStores.get(project).applyMtAll(translator); - } - obj.put(Constants.PROGRESS, Constants.COMPLETED); - processes.put(id, obj); - } catch (InterruptedException e) { - logger.log(Level.WARNING, "MT interrupted", e); - obj.put(Constants.PROGRESS, Constants.ERROR); - obj.put(Constants.REASON, e.getMessage()); - processes.put(id, obj); - Thread.currentThread().interrupt(); - } catch (IOException | SQLException | JSONException | SAXException | ParserConfigurationException e) { - logger.log(Level.WARNING, e.getMessage(), e); - obj.put(Constants.PROGRESS, Constants.ERROR); - obj.put(Constants.REASON, e.getMessage()); - processes.put(id, obj); - } - }).start(); - } catch (IOException e) { - logger.log(Level.ERROR, e); - result.put(Constants.REASON, e.getMessage()); + String id = "" + System.currentTimeMillis(); + result.put("process", id); + if (processes == null) { + processes = new Hashtable<>(); } + JSONObject obj = new JSONObject(); + obj.put(Constants.PROGRESS, Constants.PROCESSING); + processes.put(id, obj); + new Thread(() -> { + try { + JSONObject json = new JSONObject(request); + String project = json.getString("project"); + if (projectStores.containsKey(project)) { + projectStores.get(project).applyMtAll(project); + } + obj.put(Constants.PROGRESS, Constants.COMPLETED); + processes.put(id, obj); + } catch (IOException | SQLException | JSONException | SAXException | ParserConfigurationException e) { + logger.log(Level.WARNING, e.getMessage(), e); + obj.put(Constants.PROGRESS, Constants.ERROR); + obj.put(Constants.REASON, e.getMessage()); + processes.put(id, obj); + } + }).start(); return result; } @@ -1457,7 +1464,8 @@ private JSONObject getSegmentTerms(String request) { if (projectStores.containsKey(project)) { result.put("terms", projectStores.get(project).getSegmentTerms(json)); } - } catch (SQLException | JSONException | IOException | SAXException | ParserConfigurationException e) { + } catch (SQLException | JSONException | IOException | SAXException | ParserConfigurationException + | URISyntaxException e) { logger.log(Level.ERROR, e); result.put(Constants.REASON, e.getMessage()); } diff --git a/src/com/maxprograms/swordfish/RemoteUtils.java b/src/com/maxprograms/swordfish/RemoteUtils.java index 977ede3..a7746b7 100644 --- a/src/com/maxprograms/swordfish/RemoteUtils.java +++ b/src/com/maxprograms/swordfish/RemoteUtils.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -16,6 +16,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Base64; @@ -23,6 +25,7 @@ import javax.net.ssl.HttpsURLConnection; import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; public class RemoteUtils { @@ -31,7 +34,7 @@ private RemoteUtils() { // empty for security } - public static JSONObject remoteDatabases(String request) { + public static JSONObject remoteDatabases(String request) throws JSONException, URISyntaxException { JSONObject result = new JSONObject(); JSONObject json = new JSONObject(request); try { @@ -45,8 +48,8 @@ public static JSONObject remoteDatabases(String request) { return result; } - public static JSONArray getRemoteMemories(String server, String ticket) throws IOException { - URL serverUrl = new URL(server + "/memories"); + public static JSONArray getRemoteMemories(String server, String ticket) throws IOException, URISyntaxException { + URL serverUrl = new URI(server + "/memories").toURL(); HttpsURLConnection connection = (HttpsURLConnection) serverUrl.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("Session", ticket); @@ -69,11 +72,11 @@ public static JSONArray getRemoteMemories(String server, String ticket) throws I throw new IOException(result.getString(Constants.REASON)); } - public static String getTicket(String server, String user, String password) throws IOException { + public static String getTicket(String server, String user, String password) throws IOException, URISyntaxException { if (server.endsWith("/")) { server = server.substring(0, server.length() - 1); } - URL serverUrl = new URL(server + "/remote"); + URL serverUrl = new URI(server + "/remote").toURL(); HttpsURLConnection connection = (HttpsURLConnection) serverUrl.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("Accept", "application/json"); diff --git a/src/com/maxprograms/swordfish/ServicesHandler.java b/src/com/maxprograms/swordfish/ServicesHandler.java index bcb14c2..d103d4e 100644 --- a/src/com/maxprograms/swordfish/ServicesHandler.java +++ b/src/com/maxprograms/swordfish/ServicesHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -40,7 +40,6 @@ import javax.xml.parsers.ParserConfigurationException; import org.json.JSONArray; -import org.json.JSONException; import org.json.JSONObject; import org.xml.sax.SAXException; @@ -49,7 +48,6 @@ import com.maxprograms.languages.Language; import com.maxprograms.languages.LanguageUtils; import com.maxprograms.swordfish.models.Memory; -import com.maxprograms.swordfish.mt.MTUtils; import com.maxprograms.xml.Attribute; import com.maxprograms.xml.Catalog; import com.maxprograms.xml.Document; @@ -111,8 +109,6 @@ private JSONObject processRequest(String url, String request) { result = getSubjects(); } else if ("/services/getProjects".equals(url)) { result = getProjects(); - } else if ("/services/getMTLanguages".equals(url)) { - result = getMTLanguages(); } else if ("/services/getSpellingLanguages".equals(url)) { result = getSpellingLanguages(request); } else if ("/services/remoteDatabases".equals(url)) { @@ -478,17 +474,6 @@ private JSONObject getLanguages() { return result; } - private static JSONObject getMTLanguages() { - JSONObject result = new JSONObject(); - try { - result = MTUtils.getMTLanguages(); - } catch (IOException | JSONException | SAXException | ParserConfigurationException e) { - logger.log(Level.ERROR, "Error getting MT languages", e); - result.put(Constants.REASON, e.getMessage()); - } - return result; - } - private static JSONObject getClients() throws IOException { if (clients != null) { return clients; diff --git a/src/com/maxprograms/swordfish/TmsServer.java b/src/com/maxprograms/swordfish/TmsServer.java index d04755b..7fe17c8 100644 --- a/src/com/maxprograms/swordfish/TmsServer.java +++ b/src/com/maxprograms/swordfish/TmsServer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -23,6 +23,7 @@ import java.lang.System.Logger; import java.lang.System.Logger.Level; import java.net.InetSocketAddress; +import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.sql.SQLException; @@ -132,7 +133,7 @@ public void handle(HttpExchange t) throws IOException { try (DataOutputStream stream = new DataOutputStream(t.getResponseBody())) { stream.writeBytes(response); } - } catch (IOException | SQLException e) { + } catch (IOException | SQLException | URISyntaxException e) { logger.log(Level.ERROR, e); obj.put(Constants.STATUS, Constants.ERROR); obj.put(Constants.REASON, e.getMessage()); @@ -144,7 +145,7 @@ public void handle(HttpExchange t) throws IOException { } } - private void closeAll() throws IOException, SQLException { + private void closeAll() throws IOException, SQLException, URISyntaxException { MemoriesHandler.closeAll(); ProjectsHandler.closeAll(); GlossariesHandler.closeAll(); diff --git a/src/com/maxprograms/swordfish/am/MatchAssembler.java b/src/com/maxprograms/swordfish/am/MatchAssembler.java index 549f1a8..4698f8b 100644 --- a/src/com/maxprograms/swordfish/am/MatchAssembler.java +++ b/src/com/maxprograms/swordfish/am/MatchAssembler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -14,6 +14,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; +import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.sql.SQLException; import java.util.Collections; @@ -61,7 +62,8 @@ private MatchAssembler() { } public static Match assembleMatch(String textOnly, List tmMatches, ITmEngine glossEngine, String srcLang, - String tgtLang) throws IOException, ParserConfigurationException, SAXException, SQLException { + String tgtLang) + throws IOException, ParserConfigurationException, SAXException, SQLException, URISyntaxException { List result = new Vector<>(); String pureText = clean(textOnly.trim()); @@ -110,15 +112,6 @@ public static Match assembleMatch(String textOnly, List tmMatches, ITmEng + "\" value=\"auto-translation\">" + srcDiff + ""); mrkId++; } - } else if (isEmail(srcDiff) && isEmail(tgtDiff)) { - // if difference is an email address - if (countInstances(pureTarget, tgtDiff) == 1 && countInstances(pureSource, tgtDiff) == 1) { - pureSource = pureSource.replace(tgtDiff, "" + srcDiff + ""); - pureTarget = pureTarget.replace(tgtDiff, "" + srcDiff + ""); - mrkId++; - } } else { // difference may be term List tgtList = glossEngine.searchTranslation(tgtDiff, srcLang, tgtLang, 100, true); @@ -267,10 +260,6 @@ public static boolean isNumeric(String string) { return numeric; } - public static boolean isEmail(String string) { - return string.matches("\\s*\\w+([-+.]\\w)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*\\s*"); - } - private static String clean(String string) { return string.replace("<", "\uE0A0").replace("&", "\uE0A1"); } diff --git a/src/com/maxprograms/swordfish/am/Term.java b/src/com/maxprograms/swordfish/am/Term.java index c35a8d0..ff1334b 100644 --- a/src/com/maxprograms/swordfish/am/Term.java +++ b/src/com/maxprograms/swordfish/am/Term.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/models/Memory.java b/src/com/maxprograms/swordfish/models/Memory.java index 671a98d..b2d215e 100644 --- a/src/com/maxprograms/swordfish/models/Memory.java +++ b/src/com/maxprograms/swordfish/models/Memory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/models/Project.java b/src/com/maxprograms/swordfish/models/Project.java index 8a1f56e..f08637e 100644 --- a/src/com/maxprograms/swordfish/models/Project.java +++ b/src/com/maxprograms/swordfish/models/Project.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/models/SourceFile.java b/src/com/maxprograms/swordfish/models/SourceFile.java index ecde36b..f9185c6 100644 --- a/src/com/maxprograms/swordfish/models/SourceFile.java +++ b/src/com/maxprograms/swordfish/models/SourceFile.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/mt/MT.java b/src/com/maxprograms/swordfish/mt/MT.java deleted file mode 100644 index fb23ce0..0000000 --- a/src/com/maxprograms/swordfish/mt/MT.java +++ /dev/null @@ -1,186 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2023 Maxprograms. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 1.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/org/documents/epl-v10.html - * - * Contributors: - * Maxprograms - initial API and implementation - *******************************************************************************/ - -package com.maxprograms.swordfish.mt; - -import java.io.IOException; -import java.text.MessageFormat; -import java.util.List; - -import org.json.JSONException; -import org.json.JSONObject; - -import com.maxprograms.mt.AzureTranslator; -import com.maxprograms.mt.ChatGptTranslator; -import com.maxprograms.mt.DeepLTranslator; -import com.maxprograms.mt.GoogleTranslator; -import com.maxprograms.mt.MTranslator; -import com.maxprograms.mt.MyMemoryTranslator; -import com.maxprograms.mt.YandexTranslator; -import com.maxprograms.swordfish.TmsServer; - -public class MT { - - private MTranslator translator; - - private String srcLang; - private String tgtLang; - - private boolean googleEnabled; - private String googleKey; - private String googleSrcLang; - private String googleTgtLang; - private boolean neural; - - private boolean azureEnabled; - private String azureKey; - private String azureSrcLang; - private String azureTgtLang; - - private boolean yandexEnabled; - private String yandexKey; - private String yandexSrcLang; - private String yandexTgtLang; - - private boolean deeplEnabled; - private String deeplKey; - private boolean deeplProPlan; - private String deeplSrcLang; - private String deeplTgtLang; - - private boolean chatGptEnabled; - private String chatGptKey; - private String model; - - private boolean myMemoryEnabled; - private String myMemoryKey; - private String myMemorySrcLang; - private String myMemoryTgtLang; - - private ChatGptTranslator chatGpt; - - public MT() throws IOException { - loadDefaults(); - translator = new MTranslator(); - if (azureEnabled) { - AzureTranslator az = new AzureTranslator(azureKey); - az.setSourceLanguage(azureSrcLang); - az.setTargetLanguage(azureTgtLang); - translator.addEngine(az); - } - if (googleEnabled) { - GoogleTranslator gt = new GoogleTranslator(googleKey, neural); - gt.setSourceLanguage(googleSrcLang); - gt.setTargetLanguage(googleTgtLang); - translator.addEngine(gt); - } - if (yandexEnabled) { - YandexTranslator yt = new YandexTranslator(yandexKey); - yt.setSourceLanguage(yandexSrcLang); - yt.setTargetLanguage(yandexTgtLang); - translator.addEngine(yt); - } - if (deeplEnabled) { - DeepLTranslator dl = new DeepLTranslator(deeplKey, deeplProPlan); - dl.setSourceLanguage(deeplSrcLang); - dl.setTargetLanguage(deeplTgtLang); - translator.addEngine(dl); - } - if (chatGptEnabled) { - chatGpt = new ChatGptTranslator(chatGptKey, model); - translator.addEngine(chatGpt); - } - if (myMemoryEnabled) { - MyMemoryTranslator mm = new MyMemoryTranslator(myMemoryKey); - mm.setSourceLanguage(myMemorySrcLang); - mm.setTargetLanguage(myMemoryTgtLang); - translator.addEngine(mm); - } - } - - public boolean hasEngines() { - return translator.hasEngines(); - } - - private void loadDefaults() throws IOException, JSONException { - JSONObject json = TmsServer.getPreferences(); - - JSONObject google = json.getJSONObject("google"); - googleEnabled = google.getBoolean("enabled"); - googleKey = google.getString("apiKey"); - googleSrcLang = google.getString("srcLang"); - googleTgtLang = google.getString("tgtLang"); - neural = google.getBoolean("neural"); - - JSONObject azure = json.getJSONObject("azure"); - azureEnabled = azure.getBoolean("enabled"); - azureKey = azure.getString("apiKey"); - azureSrcLang = azure.getString("srcLang"); - azureTgtLang = azure.getString("tgtLang"); - - JSONObject yandex = json.getJSONObject("yandex"); - yandexEnabled = yandex.getBoolean("enabled"); - yandexKey = yandex.getString("apiKey"); - yandexSrcLang = yandex.getString("srcLang"); - yandexTgtLang = yandex.getString("tgtLang"); - - JSONObject deepl = json.getJSONObject("deepl"); - deeplEnabled = deepl.getBoolean("enabled"); - deeplKey = deepl.getString("apiKey"); - if (deepl.has("proPlan")) { - deeplProPlan = deepl.getBoolean("proPlan"); - } else { - deeplProPlan = true; - } - deeplProPlan = deepl.getBoolean("proPlan"); - deeplSrcLang = deepl.getString("srcLang"); - deeplTgtLang = deepl.getString("tgtLang"); - - if (json.has("chatGpt")) { - JSONObject chatGptOption = json.getJSONObject("chatGpt"); - chatGptEnabled = chatGptOption.getBoolean("enabled"); - chatGptKey = chatGptOption.getString("apiKey"); - switch (chatGptOption.getString("model")) { - case "gpt-3.5-turbo-instruct": - model = ChatGptTranslator.TURBO_INSTRUCT; - break; - default: - MessageFormat mf = new MessageFormat("Invalid ChatGPT model: {0}"); - throw new JSONException(mf.format(new String[] { chatGptOption.getString("model") })); - } - } else { - chatGptEnabled = false; - } - - JSONObject myMemory = json.getJSONObject("myMemory"); - myMemoryEnabled = myMemory.getBoolean("enabled"); - myMemoryKey = myMemory.getString("apiKey"); - myMemorySrcLang = myMemory.getString("srcLang"); - myMemoryTgtLang = myMemory.getString("tgtLang"); - } - - public List translate(String text) throws IOException, InterruptedException { - if (chatGptEnabled) { - chatGpt.setSourceLanguage(srcLang); - chatGpt.setTargetLanguage(tgtLang); - } - return translator.translate(text); - } - - public void setProjectSourceLanguage(String srcLang) { - this.srcLang = srcLang; - } - - public void setProjectTargetLanguage(String tgtLang) { - this.tgtLang = tgtLang; - } -} \ No newline at end of file diff --git a/src/com/maxprograms/swordfish/mt/MTUtils.java b/src/com/maxprograms/swordfish/mt/MTUtils.java deleted file mode 100644 index 575e425..0000000 --- a/src/com/maxprograms/swordfish/mt/MTUtils.java +++ /dev/null @@ -1,188 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2023 Maxprograms. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 1.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/org/documents/epl-v10.html - * - * Contributors: - * Maxprograms - initial API and implementation - *******************************************************************************/ - -package com.maxprograms.swordfish.mt; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import javax.xml.parsers.ParserConfigurationException; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; -import org.xml.sax.SAXException; - -import com.maxprograms.languages.Language; -import com.maxprograms.languages.LanguageUtils; - -public class MTUtils { - - private MTUtils() { - // empty for security - } - - private static String[] azureSrcLanguages = { "rn", "ny", "lg", "af", "sq", "am", "ar", "hy", "as", "az", - "ba", "eu", "bn", "bs", "bg", "my", "ca", "zh-Hans", "zh-Hant", "hr", "cs", "da", "prs", "dv", - "nl", "en", "et", "fo", "fj", "fil", "fi", "fr", "fr-CA", "gl", "ka", "de", "el", "gu", "ht", - "ha", "he", "hi", "mww", "hu", "is", "ig", "id", "ikt", "iu", "iu-Latn", "ga", "it", "ja", "kn", - "kk", "km", "rw", "ky", "tlh-Piqd", "tlh-Latn", "ko", "ku", "lo", "lv", "ln", "lzh", "lt", "mk", - "mg", "ms", "ml", "mt", "mi", "mr", "mn-Cyrl", "mn-Mong", "ne", "kmr", "nb", "or", "pa", "nso", - "fa", "pl", "pt", "pt-PT", "ps", "otq", "ro", "ru", "sm", "sr-Cyrl", "sr-Latn", "sn", "sk", - "sl", "so", "st", "es", "sw", "sv", "ty", "ta", "tt", "te", "th", "bo", "ti", "to", "tn", "tr", - "tk", "ug", "uk", "hsb", "ur", "uz", "vi", "cy", "xh", "yo", "yua", "yue", "zu" }; - - private static String[] azureTgtLanguages = { "rn", "ny", "lg", "af", "sq", "am", "ar", "hy", "as", "az", - "ba", "eu", "bn", "bs", "bg", "my", "ca", "zh-Hans", "zh-Hant", "hr", "cs", "da", "prs", "dv", - "nl", "en", "et", "fo", "fj", "fil", "fi", "fr", "fr-CA", "gl", "ka", "de", "el", "gu", "ht", - "ha", "he", "hi", "mww", "hu", "is", "ig", "id", "ikt", "iu", "iu-Latn", "ga", "it", "ja", "kn", - "kk", "km", "rw", "ky", "tlh-Piqd", "tlh-Latn", "ko", "ku", "lo", "lv", "ln", "lzh", "lt", "mk", - "mg", "ms", "ml", "mt", "mi", "mr", "mn-Cyrl", "mn-Mong", "ne", "kmr", "nb", "or", "pa", "nso", - "fa", "pl", "pt", "pt-PT", "ps", "otq", "ro", "ru", "sm", "sr-Cyrl", "sr-Latn", "sn", "sk", - "sl", "so", "st", "es", "sw", "sv", "ty", "ta", "tt", "te", "th", "bo", "ti", "to", "tn", "tr", - "tk", "ug", "uk", "hsb", "ur", "uz", "vi", "cy", "xh", "yo", "yua", "yue", "zu" }; - - private static String[] gtSrcLanguages = { "af", "ak", "sq", "am", "ar", "hy", "as", "ay", "az", "bm", "eu", - "be", "bn", "bho", "bs", "bg", "my", "ca", "ceb", "ckb", "zh", "zh-CN", "zh-TW", "co", "hr", - "cs", "da", "dv", "doi", "nl", "en", "eo", "et", "ee", "fi", "fr", "gl", "lg", "ka", "de", - "gom", "el", "gn", "gu", "ht", "ha", "haw", "he", "iw", "hi", "hmn", "hu", "is", "ig", "ilo", - "id", "ga", "it", "ja", "jv", "jw", "kn", "kk", "km", "rw", "ky", "ko", "kri", "ku", "lo", "la", - "lv", "ln", "lt", "lus", "lb", "mk", "mai", "mg", "ms", "ml", "mt", "mni-Mtei", "mi", "mr", - "mn", "ne", "no", "ny", "or", "om", "pa", "nso", "fa", "pl", "pt", "ps", "qu", "ro", "ru", "sm", - "sa", "gd", "sr", "sn", "sd", "si", "sk", "sl", "so", "st", "es", "su", "sw", "sv", "tl", "tg", - "ta", "tt", "te", "th", "ti", "ts", "tr", "tk", "ug", "uk", "ur", "uz", "vi", "cy", "fy", "xh", - "yi", "yo", "zu" }; - - private static String[] gtTgtLanguages = { "af", "ak", "sq", "am", "ar", "hy", "as", "ay", "az", "bm", "eu", - "be", "bn", "bho", "bs", "bg", "my", "ca", "ceb", "ckb", "zh", "zh-CN", "zh-TW", "co", "hr", - "cs", "da", "dv", "doi", "nl", "en", "eo", "et", "ee", "fi", "fr", "gl", "lg", "ka", "de", - "gom", "el", "gn", "gu", "ht", "ha", "haw", "he", "iw", "hi", "hmn", "hu", "is", "ig", "ilo", - "id", "ga", "it", "ja", "jv", "jw", "kn", "kk", "km", "rw", "ky", "ko", "kri", "ku", "lo", "la", - "lv", "ln", "lt", "lus", "lb", "mk", "mai", "mg", "ms", "ml", "mt", "mni-Mtei", "mi", "mr", - "mn", "ne", "no", "ny", "or", "om", "pa", "nso", "fa", "pl", "pt", "ps", "qu", "ro", "ru", "sm", - "sa", "gd", "sr", "sn", "sd", "si", "sk", "sl", "so", "st", "es", "su", "sw", "sv", "tl", "tg", - "ta", "tt", "te", "th", "ti", "ts", "tr", "tk", "ug", "uk", "ur", "uz", "vi", "cy", "fy", "xh", - "yi", "yo", "zu" }; - - private static String[] gtSrcNmtLangs = { "af", "ak", "sq", "am", "ar", "hy", "as", "ay", "az", "bm", "eu", - "be", "bn", "bho", "bs", "bg", "my", "ca", "ceb", "ckb", "zh", "zh-CN", "zh-TW", "co", "hr", - "cs", "da", "dv", "doi", "nl", "en", "eo", "et", "ee", "fi", "fr", "gl", "lg", "ka", "de", - "gom", "el", "gn", "gu", "ht", "ha", "haw", "he", "iw", "hi", "hmn", "hu", "is", "ig", "ilo", - "id", "ga", "it", "ja", "jv", "jw", "kn", "kk", "km", "rw", "ky", "ko", "kri", "ku", "lo", "la", - "lv", "ln", "lt", "lus", "lb", "mk", "mai", "mg", "ms", "ml", "mt", "mni-Mtei", "mi", "mr", - "mn", "ne", "no", "ny", "or", "om", "pa", "nso", "fa", "pl", "pt", "ps", "qu", "ro", "ru", "sm", - "sa", "gd", "sr", "sn", "sd", "si", "sk", "sl", "so", "st", "es", "su", "sw", "sv", "tl", "tg", - "ta", "tt", "te", "th", "ti", "ts", "tr", "tk", "ug", "uk", "ur", "uz", "vi", "cy", "fy", "xh", - "yi", "yo", "zu" }; - - private static String[] gtTgtNmtLangs = { "af", "ak", "sq", "am", "ar", "hy", "as", "ay", "az", "bm", "eu", - "be", "bn", "bho", "bs", "bg", "my", "ca", "ceb", "ckb", "zh", "zh-CN", "zh-TW", "co", "hr", - "cs", "da", "dv", "doi", "nl", "en", "eo", "et", "ee", "fi", "fr", "gl", "lg", "ka", "de", - "gom", "el", "gn", "gu", "ht", "ha", "haw", "he", "iw", "hi", "hmn", "hu", "is", "ig", "ilo", - "id", "ga", "it", "ja", "jv", "jw", "kn", "kk", "km", "rw", "ky", "ko", "kri", "ku", "lo", "la", - "lv", "ln", "lt", "lus", "lb", "mk", "mai", "mg", "ms", "ml", "mt", "mni-Mtei", "mi", "mr", - "mn", "ne", "no", "ny", "or", "om", "pa", "nso", "fa", "pl", "pt", "ps", "qu", "ro", "ru", "sm", - "sa", "gd", "sr", "sn", "sd", "si", "sk", "sl", "so", "st", "es", "su", "sw", "sv", "tl", "tg", - "ta", "tt", "te", "th", "ti", "ts", "tr", "tk", "ug", "uk", "ur", "uz", "vi", "cy", "fy", "xh", - "yi", "yo", "zu" }; - - private static String[] yandexSrcLanguages = { "az", "be", "bg", "ca", "cs", "da", "de", "el", "en", "es", "et", - "fi", "fr", "hr", "hu", "hy", "it", "lt", "lv", "mk", "nl", "no", "pl", "pt", "ro", "ru", "sk", - "sl", "sq", "sr", "sv", "tr", "uk" }; - - private static String[] yandexTgtLanguages = { "az", "be", "bg", "ca", "cs", "da", "de", "el", "en", "es", "et", - "fi", "fr", "hr", "hu", "hy", "it", "lt", "lv", "mk", "nl", "no", "pl", "pt", "ro", "ru", "sk", - "sl", "sq", "sr", "sv", "tr", "uk" }; - - private static String[] yandexDirections = { "az-ru", "be-bg", "be-cs", "be-de", "be-en", "be-es", "be-fr", - "be-it", "be-pl", "be-ro", "be-ru", "be-sr", "be-tr", "bg-be", "bg-ru", "bg-uk", "ca-en", - "ca-ru", "cs-be", "cs-en", "cs-ru", "cs-uk", "da-en", "da-ru", "de-be", "de-en", "de-es", - "de-fr", "de-it", "de-ru", "de-tr", "de-uk", "el-en", "el-ru", "en-be", "en-ca", "en-cs", - "en-da", "en-de", "en-el", "en-es", "en-et", "en-fi", "en-fr", "en-hu", "en-it", "en-lt", - "en-lv", "en-mk", "en-nl", "en-no", "en-pt", "en-ru", "en-sk", "en-sl", "en-sq", "en-sv", - "en-tr", "en-uk", "es-be", "es-de", "es-en", "es-ru", "es-uk", "et-en", "et-ru", "fi-en", - "fi-ru", "fr-be", "fr-de", "fr-en", "fr-ru", "fr-uk", "hr-ru", "hu-en", "hu-ru", "hy-ru", - "it-be", "it-de", "it-en", "it-ru", "it-uk", "lt-en", "lt-ru", "lv-en", "lv-ru", "mk-en", - "mk-ru", "nl-en", "nl-ru", "no-en", "no-ru", "pl-be", "pl-ru", "pl-uk", "pt-en", "pt-ru", - "ro-be", "ro-ru", "ro-uk", "ru-az", "ru-be", "ru-bg", "ru-ca", "ru-cs", "ru-da", "ru-de", - "ru-el", "ru-en", "ru-es", "ru-et", "ru-fi", "ru-fr", "ru-hr", "ru-hu", "ru-hy", "ru-it", - "ru-lt", "ru-lv", "ru-mk", "ru-nl", "ru-no", "ru-pl", "ru-pt", "ru-ro", "ru-sk", "ru-sl", - "ru-sq", "ru-sr", "ru-sv", "ru-tr", "ru-uk", "sk-en", "sk-ru", "sl-en", "sl-ru", "sq-en", - "sq-ru", "sr-be", "sr-ru", "sr-uk", "sv-en", "sv-ru", "tr-be", "tr-de", "tr-en", "tr-ru", - "tr-uk", "uk-bg", "uk-cs", "uk-de", "uk-en", "uk-es", "uk-fr", "uk-it", "uk-pl", "uk-ro", - "uk-ru", "uk-sr", "uk-tr" }; - - private static String[] deepLsrcLang = { "bg", "cs", "da", "de", "el", "en", "es", "et", "fi", "fr", "hu", "id", - "it", "ja", "ko", "lt", "lv", "nb", "nl", "pl", "pt", "ro", "ru", "sk", "sl", "sv", "tr", "uk", - "zh" }; - - private static String[] deepLtgtLang = { "bg", "cs", "da", "de", "el", "en-GB", "en-US", "es", "et", "fi", "fr", - "hu", "id", "it", "ja", "ko", "lt", "lv", "nb", "nl", "pl", "pt-BR", "pt-PT", "ro", "ru", "sk", - "sl", "sv", "tr", "uk", "zh" }; - - public static JSONObject getMTLanguages() throws IOException, JSONException, SAXException, ParserConfigurationException { - JSONObject result = new JSONObject(); - - JSONObject google = new JSONObject(); - google.put("srcLangs", getLanguages(gtSrcLanguages)); - google.put("tgtLangs", getLanguages(gtTgtLanguages)); - google.put("nmtSrcLangs", getLanguages(gtSrcNmtLangs)); - google.put("nmtTgtLangs", getLanguages(gtTgtNmtLangs)); - result.put("google", google); - - JSONObject azure = new JSONObject(); - azure.put("srcLangs", getLanguages(azureSrcLanguages)); - azure.put("tgtLangs", getLanguages(azureTgtLanguages)); - result.put("azure", azure); - - JSONObject yandex = new JSONObject(); - yandex.put("srcLangs", getLanguages(yandexSrcLanguages)); - yandex.put("tgtLangs", getLanguages(yandexTgtLanguages)); - yandex.put("directions", getDirections(yandexDirections)); - result.put("yandex", yandex); - - JSONObject deepL = new JSONObject(); - deepL.put("srcLangs", getLanguages(deepLsrcLang)); - deepL.put("tgtLangs", getLanguages(deepLtgtLang)); - result.put("deepl", deepL); - - return result; - } - - private static JSONArray getLanguages(String[] langs) - throws IOException, SAXException, ParserConfigurationException { - JSONArray array = new JSONArray(); - List languages = new ArrayList<>(); - for (int i = 0; i < langs.length; i++) { - languages.add(LanguageUtils.getLanguage(langs[i])); - } - Collections.sort(languages); - for (int i = 0; i < languages.size(); i++) { - Language lang = languages.get(i); - JSONObject obj = new JSONObject(); - obj.put("code", lang.getCode()); - obj.put("description", lang.getDescription()); - array.put(obj); - } - return array; - } - - private static JSONArray getDirections(String[] dirs) { - JSONArray array = new JSONArray(); - for (int i = 0; i < dirs.length; i++) { - array.put(dirs[i]); - } - return array; - } -} \ No newline at end of file diff --git a/src/com/maxprograms/swordfish/tbx/Tbx2Tmx.java b/src/com/maxprograms/swordfish/tbx/Tbx2Tmx.java index c3d2c31..83da4bb 100644 --- a/src/com/maxprograms/swordfish/tbx/Tbx2Tmx.java +++ b/src/com/maxprograms/swordfish/tbx/Tbx2Tmx.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -10,7 +10,7 @@ * Maxprograms - initial API and implementation *******************************************************************************/ - package com.maxprograms.swordfish.tbx; +package com.maxprograms.swordfish.tbx; import java.io.FileOutputStream; import java.io.IOException; @@ -88,7 +88,7 @@ private void recurse(Element e) throws IOException { if ("langSet".equals(e.getName()) || "langSec".equals(e.getName())) { currentLang = e.getAttributeValue("xml:lang"); } - if ("tig".equals(e.getName()) || "termSec".equals(e.getName())) { + if ("tig".equals(e.getName()) || "termGrp".equals(e.getName()) || "termSec".equals(e.getName())) { currentTUV = new Element("tuv"); currentTUV.setAttribute("xml:lang", currentLang); currentTU.addContent(currentTUV); @@ -147,8 +147,8 @@ private void recurse(Element e) throws IOException { while (it.hasNext()) { recurse(it.next()); } - if ("tig".equals(e.getName()) || "termSec".equals(e.getName())) { - inTUV = false; + if ("tig".equals(e.getName()) || "termGrp".equals(e.getName()) || "termSec".equals(e.getName())) { + inTUV = false; } } } diff --git a/src/com/maxprograms/swordfish/tm/FuzzyIndex.java b/src/com/maxprograms/swordfish/tm/FuzzyIndex.java index c68f6e1..906b642 100755 --- a/src/com/maxprograms/swordfish/tm/FuzzyIndex.java +++ b/src/com/maxprograms/swordfish/tm/FuzzyIndex.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/tm/ITmEngine.java b/src/com/maxprograms/swordfish/tm/ITmEngine.java index a0aa292..539e2b3 100644 --- a/src/com/maxprograms/swordfish/tm/ITmEngine.java +++ b/src/com/maxprograms/swordfish/tm/ITmEngine.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -13,61 +13,64 @@ package com.maxprograms.swordfish.tm; import java.io.IOException; +import java.net.URISyntaxException; import java.sql.SQLException; import java.util.List; import java.util.Set; import javax.xml.parsers.ParserConfigurationException; -import com.maxprograms.xml.Element; - import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; import org.xml.sax.SAXException; +import com.maxprograms.xml.Element; + public interface ITmEngine { public abstract String getType(); - public abstract void close() throws IOException, SQLException; + public abstract void close() throws IOException, SQLException, URISyntaxException; public abstract String getName(); public abstract int storeTMX(String tmxFile, String project, String customer, String subject) - throws SAXException, IOException, ParserConfigurationException, SQLException; + throws SAXException, IOException, ParserConfigurationException, SQLException, URISyntaxException; public abstract void exportMemory(String tmxfile, Set langs, String srcLang) - throws IOException, SAXException, ParserConfigurationException, SQLException; + throws IOException, SAXException, ParserConfigurationException, SQLException, JSONException, + URISyntaxException; - public abstract Set getAllClients() throws SQLException, IOException; + public abstract Set getAllClients() throws SQLException, IOException, URISyntaxException; - public abstract Set getAllLanguages() throws SQLException, IOException; + public abstract Set getAllLanguages() throws SQLException, IOException, URISyntaxException; - public abstract Set getAllProjects() throws SQLException, IOException; + public abstract Set getAllProjects() throws SQLException, IOException, URISyntaxException; - public abstract Set getAllSubjects() throws SQLException, IOException; + public abstract Set getAllSubjects() throws SQLException, IOException, URISyntaxException; public abstract List searchTranslation(String searchStr, String srcLang, String tgtLang, int similarity, - boolean caseSensitive) throws IOException, SAXException, ParserConfigurationException, SQLException; + boolean caseSensitive) throws IOException, SAXException, ParserConfigurationException, SQLException, URISyntaxException; public abstract List searchAll(String searchStr, String srcLang, int similarity, boolean caseSensitive) - throws IOException, SAXException, ParserConfigurationException, SQLException; + throws IOException, SAXException, ParserConfigurationException, SQLException, URISyntaxException; public abstract List concordanceSearch(String searchStr, String srcLang, int limit, boolean isRegexp, - boolean caseSensitive) throws IOException, SAXException, ParserConfigurationException, SQLException; + boolean caseSensitive) throws IOException, SAXException, ParserConfigurationException, SQLException, URISyntaxException; - public abstract void storeTu(Element tu) throws IOException, SQLException; + public abstract void storeTu(Element tu) throws IOException, SQLException, URISyntaxException; - public abstract void commit() throws SQLException, IOException; + public abstract void commit() throws SQLException, IOException, URISyntaxException; public abstract Element getTu(String tuid) - throws IOException, SAXException, ParserConfigurationException, SQLException; + throws IOException, SAXException, ParserConfigurationException, SQLException, URISyntaxException; public abstract void removeTu(String tuid) - throws IOException, SAXException, ParserConfigurationException, SQLException; + throws IOException, SAXException, ParserConfigurationException, SQLException, URISyntaxException; - public abstract void deleteDatabase() throws IOException, SQLException; + public abstract void deleteDatabase() throws IOException, SQLException, URISyntaxException; public abstract JSONArray batchTranslate(JSONObject params) - throws IOException, SAXException, ParserConfigurationException, SQLException; + throws IOException, SAXException, ParserConfigurationException, SQLException, URISyntaxException; } diff --git a/src/com/maxprograms/swordfish/tm/InternalDatabase.java b/src/com/maxprograms/swordfish/tm/InternalDatabase.java index 31b7667..0b87d5f 100755 --- a/src/com/maxprograms/swordfish/tm/InternalDatabase.java +++ b/src/com/maxprograms/swordfish/tm/InternalDatabase.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -202,7 +202,9 @@ public void exportMemory(String tmxfile, Set langs, String srcLang) thro output = new FileOutputStream(tmxfile); writeHeader(srcLang); writeString("\n"); - + if (conn.isClosed()) { + conn = DriverManager.getConnection(url); + } try (PreparedStatement stmt = conn.prepareStatement("SELECT lang, seg FROM tuv WHERE tuid=?")) { try (Statement tus = conn.createStatement()) { try (ResultSet tuKeys = tus.executeQuery("SELECT DISTINCT TUID from TUV")) { @@ -236,7 +238,6 @@ public void exportMemory(String tmxfile, Set langs, String srcLang) thro } } } - writeString("\n"); writeString("\n"); output.close(); @@ -265,6 +266,9 @@ public Set getAllClients() { @Override public Set getAllLanguages() throws SQLException { Set result = Collections.synchronizedSortedSet(new TreeSet<>()); + if (conn.isClosed()) { + conn = DriverManager.getConnection(url); + } try (Statement stmt = conn.createStatement()) { try (ResultSet rs = stmt.executeQuery("SELECT DISTINCT lang FROM tuv")) { while (rs.next()) { @@ -305,6 +309,9 @@ public List searchTranslation(String searchStr, String srcLang, String tg Hashtable candidates = new Hashtable<>(); + if (conn.isClosed()) { + conn = DriverManager.getConnection(url); + } try (PreparedStatement stmt = conn.prepareStatement( "SELECT puretext, seg, textlength FROM tuv WHERE lang=? AND tuid=? AND textlength>=? AND textlength<=?")) { stmt.setString(1, srcLang); @@ -386,6 +393,9 @@ public List concordanceSearch(String searchStr, String srcLang, int lim boolean caseSensitive) throws SQLException, SAXException, IOException, ParserConfigurationException { List result = new Vector<>(); Vector candidates = new Vector<>(); + if (conn.isClosed()) { + conn = DriverManager.getConnection(url); + } if (isRegexp) { try (PreparedStatement stmt = conn .prepareStatement("SELECT tuid, puretext FROM tuv WHERE lang=? AND puretext REGEXP ? LIMIT ?")) { @@ -549,6 +559,9 @@ private void delete(String tuid, String lang) throws SQLException { public void setProject(String project) throws SQLException { String query = "UPDATE databases SET project=? WHERE dbname=?"; + if (conn.isClosed()) { + conn = DriverManager.getConnection(url); + } try (PreparedStatement stmt = conn.prepareStatement(query)) { stmt.setString(1, project); stmt.setString(2, dbname); @@ -558,6 +571,9 @@ public void setProject(String project) throws SQLException { public void setCustomer(String customer) throws SQLException { String query = "UPDATE databases SET client=? WHERE dbname=?"; + if (conn.isClosed()) { + conn = DriverManager.getConnection(url); + } try (PreparedStatement stmt = conn.prepareStatement(query)) { stmt.setString(1, customer); stmt.setString(2, dbname); @@ -567,6 +583,9 @@ public void setCustomer(String customer) throws SQLException { public void setSubject(String subject) throws SQLException { String query = "UPDATE databases SET subject=? WHERE dbname=?"; + if (conn.isClosed()) { + conn = DriverManager.getConnection(url); + } try (PreparedStatement stmt = conn.prepareStatement(query)) { stmt.setString(1, subject); stmt.setString(2, dbname); @@ -581,6 +600,9 @@ public void setCreationDate(String date) { @Override public Element getTu(String tuid) throws SQLException, SAXException, IOException, ParserConfigurationException { Element tu = tuDb.getTu(tuid); + if (conn.isClosed()) { + conn = DriverManager.getConnection(url); + } try (PreparedStatement stmt = conn.prepareStatement("SELECT lang, seg FROM tuv WHERE tuid=?")) { stmt.setString(1, tuid); try (ResultSet rs = stmt.executeQuery()) { @@ -639,7 +661,9 @@ public List searchAll(String searchStr, String srcLang, int similarity, int maxLength = searchStr.length() * (200 - similarity) / 100; Map candidates = new Hashtable<>(); - + if (conn.isClosed()) { + conn = DriverManager.getConnection(url); + } try (PreparedStatement stmt = conn.prepareStatement( "SELECT puretext FROM tuv WHERE lang=? AND tuid=? AND textlength>=? AND textlength<=?")) { stmt.setString(1, srcLang); diff --git a/src/com/maxprograms/swordfish/tm/Match.java b/src/com/maxprograms/swordfish/tm/Match.java index b150f4f..b506dad 100644 --- a/src/com/maxprograms/swordfish/tm/Match.java +++ b/src/com/maxprograms/swordfish/tm/Match.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/tm/MatchQuality.java b/src/com/maxprograms/swordfish/tm/MatchQuality.java index d0646ce..c795303 100755 --- a/src/com/maxprograms/swordfish/tm/MatchQuality.java +++ b/src/com/maxprograms/swordfish/tm/MatchQuality.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/tm/NGrams.java b/src/com/maxprograms/swordfish/tm/NGrams.java index 5f550f9..058775c 100755 --- a/src/com/maxprograms/swordfish/tm/NGrams.java +++ b/src/com/maxprograms/swordfish/tm/NGrams.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/tm/RemoteDatabase.java b/src/com/maxprograms/swordfish/tm/RemoteDatabase.java index d55cafa..12f6368 100644 --- a/src/com/maxprograms/swordfish/tm/RemoteDatabase.java +++ b/src/com/maxprograms/swordfish/tm/RemoteDatabase.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -21,6 +21,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; @@ -39,16 +41,17 @@ import javax.net.ssl.HttpsURLConnection; import javax.xml.parsers.ParserConfigurationException; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.xml.sax.SAXException; + import com.maxprograms.swordfish.Constants; import com.maxprograms.swordfish.RemoteUtils; import com.maxprograms.swordfish.TmsServer; import com.maxprograms.xml.Element; import com.maxprograms.xml.SAXBuilder; -import org.json.JSONArray; -import org.json.JSONObject; -import org.xml.sax.SAXException; - public class RemoteDatabase implements ITmEngine { private String server; @@ -56,7 +59,7 @@ public class RemoteDatabase implements ITmEngine { private String ticket; private SAXBuilder builder; - public RemoteDatabase(String server, String user, String password, String dbname) throws IOException { + public RemoteDatabase(String server, String user, String password, String dbname) throws IOException, URISyntaxException { if (server.endsWith("/")) { server = server.substring(0, server.length() - 1); } @@ -67,9 +70,9 @@ public RemoteDatabase(String server, String user, String password, String dbname open(); } - private JSONObject postMessage(String servlet, JSONObject json) throws IOException { + private JSONObject postMessage(String servlet, JSONObject json) throws IOException, URISyntaxException { byte[] bytes = json.toString(2).getBytes(StandardCharsets.UTF_8); - URL serverUrl = new URL(server + servlet); + URL serverUrl = new URI(server + servlet).toURL(); HttpsURLConnection connection = (HttpsURLConnection) serverUrl.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Session", ticket); @@ -111,7 +114,7 @@ public String getType() { return RemoteDatabase.class.getName(); } - private void open() throws IOException { + private void open() throws IOException, URISyntaxException { JSONObject params = new JSONObject(); params.put("command", "openMemory"); params.put("memory", dbname); @@ -119,7 +122,7 @@ private void open() throws IOException { } @Override - public void close() throws IOException { + public void close() throws IOException, URISyntaxException { JSONObject params = new JSONObject(); params.put("command", "closeMemory"); params.put("memory", dbname); @@ -132,7 +135,7 @@ public String getName() { } @Override - public int storeTMX(String tmxFile, String project, String customer, String subject) throws IOException { + public int storeTMX(String tmxFile, String project, String customer, String subject) throws IOException, URISyntaxException { File zipFile = zip(tmxFile); String uploaded = upload(zipFile); JSONObject params = new JSONObject(); @@ -171,8 +174,8 @@ protected static void writeEntry(ZipOutputStream zip, File file) throws IOExcept } } - private String upload(File zipFile) throws IOException { - URL serverUrl = new URL(server + "/upload"); + private String upload(File zipFile) throws IOException, URISyntaxException { + URL serverUrl = new URI(server + "/upload").toURL(); HttpsURLConnection connection = (HttpsURLConnection) serverUrl.openConnection(); connection.setRequestProperty("Session", ticket); connection.setRequestProperty("Accept", "application/json"); @@ -210,7 +213,7 @@ private String upload(File zipFile) throws IOException { @Override public void exportMemory(String tmxfile, Set langs, String srcLang) - throws IOException, SAXException, ParserConfigurationException { + throws IOException, SAXException, ParserConfigurationException, JSONException, URISyntaxException { JSONObject params = new JSONObject(); params.put("command", "exportMemory"); params.put("memory", dbname); @@ -227,9 +230,9 @@ public void exportMemory(String tmxfile, Set langs, String srcLang) download(tmxfile, json.getString("file")); } - private void download(String tmxFile, String file) throws IOException { - URL serverUrl = new URL(server + "/download?session=" + URLEncoder.encode(ticket, StandardCharsets.UTF_8) - + "&file=" + URLEncoder.encode(file, StandardCharsets.UTF_8)); + private void download(String tmxFile, String file) throws IOException, URISyntaxException { + URL serverUrl = new URI(server + "/download?session=" + URLEncoder.encode(ticket, StandardCharsets.UTF_8) + + "&file=" + URLEncoder.encode(file, StandardCharsets.UTF_8)).toURL(); HttpsURLConnection connection = (HttpsURLConnection) serverUrl.openConnection(); connection.setRequestMethod("GET"); connection.connect(); @@ -245,7 +248,7 @@ private void download(String tmxFile, String file) throws IOException { } @Override - public Set getAllClients() throws IOException { + public Set getAllClients() throws IOException, URISyntaxException { Set result = new TreeSet<>(); JSONObject params = new JSONObject(); params.put("command", "memoryClients"); @@ -259,7 +262,7 @@ public Set getAllClients() throws IOException { } @Override - public Set getAllLanguages() throws IOException { + public Set getAllLanguages() throws IOException, URISyntaxException { Set result = new TreeSet<>(); JSONObject params = new JSONObject(); params.put("command", "memoryLanguages"); @@ -273,7 +276,7 @@ public Set getAllLanguages() throws IOException { } @Override - public Set getAllProjects() throws IOException { + public Set getAllProjects() throws IOException, URISyntaxException { Set result = new TreeSet<>(); JSONObject params = new JSONObject(); params.put("command", "memoryProjects"); @@ -287,7 +290,7 @@ public Set getAllProjects() throws IOException { } @Override - public Set getAllSubjects() throws IOException { + public Set getAllSubjects() throws IOException, URISyntaxException { Set result = new TreeSet<>(); JSONObject params = new JSONObject(); params.put("command", "memorySubjects"); @@ -302,7 +305,7 @@ public Set getAllSubjects() throws IOException { @Override public List searchTranslation(String searchStr, String srcLang, String tgtLang, int similarity, - boolean caseSensitive) throws IOException, SAXException, ParserConfigurationException { + boolean caseSensitive) throws IOException, SAXException, ParserConfigurationException, URISyntaxException { JSONObject params = new JSONObject(); params.put("command", "searchTranslation"); params.put("memory", dbname); @@ -322,7 +325,7 @@ public List searchTranslation(String searchStr, String srcLang, String tg @Override public List searchAll(String searchStr, String srcLang, int similarity, boolean caseSensitive) - throws IOException, SAXException, ParserConfigurationException { + throws IOException, SAXException, ParserConfigurationException, URISyntaxException { JSONObject params = new JSONObject(); params.put("command", "searchAll"); params.put("memory", dbname); @@ -341,7 +344,7 @@ public List searchAll(String searchStr, String srcLang, int similarity, @Override public List concordanceSearch(String searchStr, String srcLang, int limit, boolean isRegexp, - boolean caseSensitive) throws IOException, SAXException, ParserConfigurationException { + boolean caseSensitive) throws IOException, SAXException, ParserConfigurationException, URISyntaxException { JSONObject params = new JSONObject(); params.put("command", "concordanceSearch"); params.put("memory", dbname); @@ -360,7 +363,7 @@ public List concordanceSearch(String searchStr, String srcLang, int lim } @Override - public void storeTu(Element tu) throws IOException { + public void storeTu(Element tu) throws IOException, URISyntaxException { JSONObject params = new JSONObject(); params.put("command", "storeTu"); params.put("memory", dbname); @@ -369,7 +372,7 @@ public void storeTu(Element tu) throws IOException { } @Override - public void commit() throws IOException { + public void commit() throws IOException, URISyntaxException { JSONObject params = new JSONObject(); params.put("command", "commit"); params.put("memory", dbname); @@ -377,7 +380,7 @@ public void commit() throws IOException { } @Override - public Element getTu(String tuid) throws IOException, SAXException, ParserConfigurationException { + public Element getTu(String tuid) throws IOException, SAXException, ParserConfigurationException, URISyntaxException { JSONObject params = new JSONObject(); params.put("command", "getTu"); params.put("memory", dbname); @@ -387,7 +390,7 @@ public Element getTu(String tuid) throws IOException, SAXException, ParserConfig } @Override - public void removeTu(String tuid) throws IOException, SAXException, ParserConfigurationException { + public void removeTu(String tuid) throws IOException, SAXException, ParserConfigurationException, URISyntaxException { JSONObject params = new JSONObject(); params.put("command", "removeTu"); params.put("memory", dbname); @@ -396,7 +399,7 @@ public void removeTu(String tuid) throws IOException, SAXException, ParserConfig } @Override - public void deleteDatabase() throws IOException { + public void deleteDatabase() throws IOException, URISyntaxException { JSONObject params = new JSONObject(); params.put("command", "removeMemory"); params.put("memory", dbname); @@ -426,7 +429,7 @@ private Element toElement(String string) throws SAXException, IOException, Parse } @Override - public JSONArray batchTranslate(JSONObject params) throws IOException { + public JSONArray batchTranslate(JSONObject params) throws IOException, URISyntaxException { params.put("command", "batchTranslate"); params.put("memory", dbname); JSONObject json = postMessage("/memories", params); diff --git a/src/com/maxprograms/swordfish/tm/TMUtils.java b/src/com/maxprograms/swordfish/tm/TMUtils.java index 25de2e4..6e4cb8f 100644 --- a/src/com/maxprograms/swordfish/tm/TMUtils.java +++ b/src/com/maxprograms/swordfish/tm/TMUtils.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/tm/TU.java b/src/com/maxprograms/swordfish/tm/TU.java index 42dc2c1..acafc12 100755 --- a/src/com/maxprograms/swordfish/tm/TU.java +++ b/src/com/maxprograms/swordfish/tm/TU.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/tm/TuData.java b/src/com/maxprograms/swordfish/tm/TuData.java index ba9f215..751eb11 100755 --- a/src/com/maxprograms/swordfish/tm/TuData.java +++ b/src/com/maxprograms/swordfish/tm/TuData.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/tm/TuDatabase.java b/src/com/maxprograms/swordfish/tm/TuDatabase.java index 729d183..fa3f4fe 100755 --- a/src/com/maxprograms/swordfish/tm/TuDatabase.java +++ b/src/com/maxprograms/swordfish/tm/TuDatabase.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/tm/Tuv.java b/src/com/maxprograms/swordfish/tm/Tuv.java index 9f7e622..473423e 100755 --- a/src/com/maxprograms/swordfish/tm/Tuv.java +++ b/src/com/maxprograms/swordfish/tm/Tuv.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/tmx/TMXContentHandler.java b/src/com/maxprograms/swordfish/tmx/TMXContentHandler.java index 5913585..940bf7c 100644 --- a/src/com/maxprograms/swordfish/tmx/TMXContentHandler.java +++ b/src/com/maxprograms/swordfish/tmx/TMXContentHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -15,6 +15,7 @@ import java.io.IOException; import java.lang.System.Logger; import java.lang.System.Logger.Level; +import java.net.URISyntaxException; import java.sql.SQLException; import java.util.Deque; import java.util.concurrent.ConcurrentLinkedDeque; @@ -64,7 +65,7 @@ public void endElement(String uri, String localName, String qName) throws SAXExc if (count % 500 == 0) { db.commit(); } - } catch (IOException | SQLException e) { + } catch (IOException | SQLException | URISyntaxException e) { // ignore logger.log(Level.WARNING, "Error storing " + current, e); } diff --git a/src/com/maxprograms/swordfish/tmx/TMXReader.java b/src/com/maxprograms/swordfish/tmx/TMXReader.java index 10392b3..b157d9d 100644 --- a/src/com/maxprograms/swordfish/tmx/TMXReader.java +++ b/src/com/maxprograms/swordfish/tmx/TMXReader.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/tmx/TMXResolver.java b/src/com/maxprograms/swordfish/tmx/TMXResolver.java index ec84781..d903098 100644 --- a/src/com/maxprograms/swordfish/tmx/TMXResolver.java +++ b/src/com/maxprograms/swordfish/tmx/TMXResolver.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/xliff/Compression.java b/src/com/maxprograms/swordfish/xliff/Compression.java index ae373b0..11fb19d 100644 --- a/src/com/maxprograms/swordfish/xliff/Compression.java +++ b/src/com/maxprograms/swordfish/xliff/Compression.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/xliff/DifferenceTagger.java b/src/com/maxprograms/swordfish/xliff/DifferenceTagger.java index ff60bf2..bdf7391 100755 --- a/src/com/maxprograms/swordfish/xliff/DifferenceTagger.java +++ b/src/com/maxprograms/swordfish/xliff/DifferenceTagger.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/xliff/Skeletons.java b/src/com/maxprograms/swordfish/xliff/Skeletons.java index 7595178..e4e7dae 100644 --- a/src/com/maxprograms/swordfish/xliff/Skeletons.java +++ b/src/com/maxprograms/swordfish/xliff/Skeletons.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/xliff/Split.java b/src/com/maxprograms/swordfish/xliff/Split.java index bc44b88..7845c54 100644 --- a/src/com/maxprograms/swordfish/xliff/Split.java +++ b/src/com/maxprograms/swordfish/xliff/Split.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/src/com/maxprograms/swordfish/xliff/XliffStore.java b/src/com/maxprograms/swordfish/xliff/XliffStore.java index f76d338..7db735a 100644 --- a/src/com/maxprograms/swordfish/xliff/XliffStore.java +++ b/src/com/maxprograms/swordfish/xliff/XliffStore.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -45,6 +45,7 @@ import javax.xml.parsers.ParserConfigurationException; import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; import org.jsoup.Jsoup; import org.xml.sax.SAXException; @@ -61,7 +62,6 @@ import com.maxprograms.swordfish.TmsServer; import com.maxprograms.swordfish.am.MatchAssembler; import com.maxprograms.swordfish.am.Term; -import com.maxprograms.swordfish.mt.MT; import com.maxprograms.swordfish.tm.ITmEngine; import com.maxprograms.swordfish.tm.Match; import com.maxprograms.swordfish.tm.MatchQuality; @@ -873,7 +873,10 @@ private static void getPreferences() throws IOException { JSONObject json = TmsServer.getPreferences(); acceptUnconfirmed = json.getBoolean("acceptUnconfirmed"); caseSensitiveTermSearches = json.getBoolean("caseSensitiveSearches"); - caseSensitiveMatches = json.has("caseSensitiveMatches") ? json.getBoolean("caseSensitiveMatches") : true; + caseSensitiveMatches = true; + if (json.has("caseSensitiveMatches")) { + caseSensitiveMatches = json.getBoolean("caseSensitiveMatches"); + } fuzzyTermSearches = json.getBoolean("fuzzyTermSearches"); catalog = json.getString("catalog"); } @@ -964,7 +967,7 @@ public synchronized JSONObject saveSegment(JSONObject json) engine.storeTu(XliffUtils.toTu(key.toString(), source, target, tags, srcLang, tgtLang)); engine.commit(); MemoriesHandler.close(memory); - } catch (IOException | SQLException e) { + } catch (IOException | SQLException | URISyntaxException e) { logger.log(Level.ERROR, e); } }).start(); @@ -2231,42 +2234,8 @@ private Element getUnitTerms(String file, String unit) throws SQLException, IOEx return glossary.getChildren().isEmpty() ? null : glossary; } - public JSONArray machineTranslate(JSONObject json, MT translator) throws SQLException, IOException, - InterruptedException, SAXException, ParserConfigurationException, DataFormatException { - String file = json.getString("file"); - String unit = json.getString("unit"); - String segment = json.getString("segment"); - - String sourceText = ""; - getSource.setString(1, file); - getSource.setString(2, unit); - getSource.setString(3, segment); - try (ResultSet rs = getSource.executeQuery()) { - while (rs.next()) { - sourceText = TMUtils.getString(rs.getNCharacterStream(2)); - } - } - Element source = XliffUtils.buildElement("" + XMLUtils.cleanText(sourceText) + ""); - JSONObject tagsData = new JSONObject(); - translator.setProjectSourceLanguage(srcLang); - translator.setProjectTargetLanguage(tgtLang); - List translations = translator.translate(sourceText); - Iterator it = translations.iterator(); - while (it.hasNext()) { - JSONObject translation = it.next(); - String origin = translation.getString("key"); - source.setAttribute("xml:lang", translation.getString("srcLang")); - String targetText = "" + XMLUtils.cleanText(translation.getString("target")) + ""; - Element target = XliffUtils.buildElement(targetText); - target.setAttribute("xml:lang", translation.getString("tgtLang")); - insertMatch(file, unit, segment, origin, Constants.MT, 0, source, target, tagsData); - } - conn.commit(); - return getTaggedtMatches(json); - } - public void assembleMatches(JSONObject json) - throws SAXException, IOException, ParserConfigurationException, SQLException { + throws SAXException, IOException, ParserConfigurationException, SQLException, URISyntaxException { String file = json.getString("file"); String unit = json.getString("unit"); String segment = json.getString("segment"); @@ -2305,7 +2274,7 @@ public void assembleMatches(JSONObject json) } public void assembleMatchesAll(JSONObject json) - throws IOException, SQLException, SAXException, ParserConfigurationException { + throws IOException, SQLException, SAXException, ParserConfigurationException, URISyntaxException { String memory = json.getString("memory"); MemoriesHandler.open(memory); @@ -2350,7 +2319,8 @@ public void assembleMatchesAll(JSONObject json) } public JSONArray tmTranslate(JSONObject json) - throws SAXException, IOException, ParserConfigurationException, SQLException, DataFormatException { + throws SAXException, IOException, ParserConfigurationException, SQLException, DataFormatException, + URISyntaxException { String file = json.getString("file"); String unit = json.getString("unit"); String segment = json.getString("segment"); @@ -2390,7 +2360,7 @@ public JSONArray tmTranslate(JSONObject json) } public int tmTranslateAll(String memory, int penalization, Map processes, String processId) - throws IOException, SQLException, SAXException, ParserConfigurationException { + throws IOException, SQLException, SAXException, ParserConfigurationException, URISyntaxException { String memoryName = MemoriesHandler.getName(memory); MemoriesHandler.open(memory); ITmEngine engine = MemoriesHandler.getEngine(memory); @@ -2420,7 +2390,7 @@ public int tmTranslateAll(String memory, int penalization, Map'' AND translate='Y' "); conn.commit(); @@ -3361,32 +3331,47 @@ private Element replaceText(Element target, String searchText, String replaceTex return target; } - public void applyMtAll(MT translator) - throws SQLException, SAXException, IOException, ParserConfigurationException, InterruptedException { - String sql = "SELECT file, unitId, segId, sourceText FROM segments WHERE type='S' AND (state='initial' OR targetText='') AND translate='Y' "; - try (ResultSet rs = stmt.executeQuery(sql)) { - while (rs.next()) { - String file = rs.getString(1); - String unit = rs.getString(2); - String segment = rs.getString(3); - String sourceText = TMUtils.getString(rs.getNCharacterStream(4)); + public void applyMtAll(String projectId) + throws SQLException, SAXException, IOException, ParserConfigurationException { + File projectFolder = new File(TmsServer.getProjectsFolder(), projectId); + try (FileOutputStream out = new FileOutputStream(new File(projectFolder, "applymt.xlf"))) { + String oldFile = ""; + String oldUnit = ""; + out.write(("\n") + .getBytes(StandardCharsets.UTF_8)); + String sql = "SELECT file, unitId, segId, source FROM segments WHERE type='S' AND (state='initial' OR targetText='') AND translate='Y' "; + try (ResultSet rs = stmt.executeQuery(sql)) { + while (rs.next()) { + String file = rs.getString(1); + String unit = rs.getString(2); + String segment = rs.getString(3); + String sourceText = TMUtils.getString(rs.getNCharacterStream(4)); - Element matchSource = XliffUtils - .buildElement("" + XMLUtils.cleanText(sourceText) + ""); + Element matchSource = XliffUtils.buildElement(sourceText); - JSONObject tagsData = new JSONObject(); - List translations = translator.translate(sourceText); - Iterator it = translations.iterator(); - while (it.hasNext()) { - JSONObject translation = it.next(); - String origin = translation.getString("key"); - matchSource.setAttribute("xml:lang", translation.getString("srcLang")); - String targetText = "" + XMLUtils.cleanText(translation.getString("target")) + ""; - Element matchTarget = XliffUtils.buildElement(targetText); - matchTarget.setAttribute("xml:lang", translation.getString("tgtLang")); - insertMatch(file, unit, segment, origin, Constants.MT, 0, matchSource, matchTarget, tagsData); + if (!oldFile.equals(file)) { + if (!oldFile.isEmpty()) { + out.write("\n".getBytes(StandardCharsets.UTF_8)); + } + oldFile = file; + out.write(("\n").getBytes(StandardCharsets.UTF_8)); + } + if (!oldUnit.equals(unit)) { + if (!oldUnit.isEmpty()) { + out.write("\n".getBytes(StandardCharsets.UTF_8)); + } + oldUnit = unit; + out.write(("\n").getBytes(StandardCharsets.UTF_8)); + } + Element seg = new Element("segment"); + seg.setAttribute("id", segment); + seg.addContent(matchSource); + out.write(seg.toString().getBytes(StandardCharsets.UTF_8)); + out.write("\n".getBytes(StandardCharsets.UTF_8)); } - conn.commit(); + out.write("\n".getBytes(StandardCharsets.UTF_8)); + out.write("\n".getBytes(StandardCharsets.UTF_8)); + out.write(("").getBytes(StandardCharsets.UTF_8)); } } } @@ -3451,7 +3436,7 @@ public JSONArray getTerms(JSONObject json) throws SQLException, IOException { } public JSONArray getSegmentTerms(JSONObject json) - throws SQLException, IOException, SAXException, ParserConfigurationException { + throws SQLException, IOException, SAXException, ParserConfigurationException, URISyntaxException { JSONArray result = new JSONArray(); getPreferences(); @@ -3527,7 +3512,7 @@ private JSONArray sortTerms(JSONArray array) { } public int getProjectTerms(String glossary) - throws IOException, SQLException, SAXException, ParserConfigurationException { + throws IOException, SQLException, SAXException, ParserConfigurationException, URISyntaxException { getPreferences(); Language sourceLanguage = LanguageUtils.getLanguage(srcLang); int similarity = fuzzyTermSearches ? 70 : 100; @@ -4423,4 +4408,38 @@ private void indexSegments() throws SQLException { } conn.commit(); } + + public JSONObject getSegmentSource(JSONObject json) + throws JSONException, SQLException, SAXException, IOException, ParserConfigurationException { + getSource.setString(1, json.getString("file")); + getSource.setString(2, json.getString("unit")); + getSource.setString(3, json.getString("segment")); + String src = ""; + try (ResultSet rs = getSource.executeQuery()) { + while (rs.next()) { + src = TMUtils.getString(rs.getNCharacterStream(1)); + } + } + Element source = XliffUtils.buildElement(src); + String plainText = XliffUtils.pureText(source); + JSONObject result = new JSONObject(); + result.put("source", source.toString()); + result.put("plainText", "" + plainText + ""); + return result; + } + + public void setMTMatches(JSONObject json) + throws SQLException, IOException, JSONException, SAXException, ParserConfigurationException { + String file = json.getString("file"); + String unit = json.getString("unit"); + String segment = json.getString("segment"); + JSONArray translations = json.getJSONArray("translations"); + for (int i = 0; i < translations.length(); i++) { + JSONObject translation = translations.getJSONObject(i); + Element source = XliffUtils.buildElement(translation.getString("source")); + Element target = XliffUtils.buildElement(translation.getString("target")); + String origin = translation.getString("origin"); + insertMatch(file, unit, segment, origin, Constants.MT, 0, source, target, new JSONObject()); + } + } } \ No newline at end of file diff --git a/src/com/maxprograms/swordfish/xliff/XliffUtils.java b/src/com/maxprograms/swordfish/xliff/XliffUtils.java index 55ee36f..d0652b1 100644 --- a/src/com/maxprograms/swordfish/xliff/XliffUtils.java +++ b/src/com/maxprograms/swordfish/xliff/XliffUtils.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -51,7 +51,6 @@ public class XliffUtils { private static final String NOTSWORDFISH = "Selected file is not a Swordfish project"; private static int maxTag = 0; private static JSONObject tags; - private static SAXBuilder builder; private XliffUtils() { // empty for security @@ -184,7 +183,7 @@ public static String cleanQuote(String string) { } public static String unquote(String string) { - return string.replaceAll("\"", "\u200B\u2033"); + return string.replace("\"", "\u200B\u2033"); } public static List harvestTags(String source) { @@ -330,9 +329,7 @@ private static List toTmx(Element element, Map tags) { public static JSONObject getProjectDetails(File xliffFile) throws IOException { try { JSONObject result = new JSONObject(); - if (builder == null) { - builder = new SAXBuilder(); - } + SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(xliffFile); Element xliff = doc.getRootElement(); if (!"xliff".equals(xliff.getName())) { @@ -469,9 +466,7 @@ public static String pureText(Element e) { } public static Element buildElement(String string) throws SAXException, IOException, ParserConfigurationException { - if (builder == null) { - builder = new SAXBuilder(); - } + SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(new ByteArrayInputStream(string.getBytes(StandardCharsets.UTF_8))); return doc.getRootElement(); } diff --git a/swordfish.pdf b/swordfish.pdf index fffdf45..767dd8d 100644 Binary files a/swordfish.pdf and b/swordfish.pdf differ diff --git a/ts/Main.ts b/ts/Main.ts index 6b527d9..3f4f782 100644 --- a/ts/Main.ts +++ b/ts/Main.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/Swordfish.ts b/ts/Swordfish.ts index f8000ae..90f04e4 100644 --- a/ts/Swordfish.ts +++ b/ts/Swordfish.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -11,12 +11,13 @@ *******************************************************************************/ import { ChildProcessWithoutNullStreams, execFileSync, spawn } from "child_process"; -import { app, BrowserWindow, ClientRequest, clipboard, dialog, ipcMain, IpcMainEvent, Menu, MenuItem, nativeTheme, net, Rectangle, screen, session, shell, Size } from "electron"; +import { BrowserWindow, ClientRequest, IpcMainEvent, Menu, MenuItem, Rectangle, Size, app, clipboard, dialog, ipcMain, nativeTheme, net, screen, session, shell } from "electron"; import { IncomingMessage } from "electron/main"; import { appendFileSync, existsSync, lstatSync, mkdirSync, readFile, readFileSync, unlinkSync, writeFileSync } from "fs"; import { Locations, Point } from "./locations"; +import { MTManager } from "./mtManager"; -class Swordfish { +export class Swordfish { static path = require('path'); @@ -111,9 +112,9 @@ class Swordfish { chatGpt: { enabled: false, apiKey: '', - model: 'gpt-3.5-turbo-instruct', + model: 'gpt-3.5-turbo', }, - myMemory: { + modernmt: { enabled: false, apiKey: '', srcLang: 'none', @@ -168,19 +169,15 @@ class Swordfish { static locations: Locations; constructor() { - if (!app.requestSingleInstanceLock()) { app.quit(); - } else { - if (Swordfish.mainWindow) { - // Someone tried to run a second instance, we should focus our window. - if (Swordfish.mainWindow.isMinimized()) { - Swordfish.mainWindow.restore(); - } - Swordfish.mainWindow.focus(); + } else if (Swordfish.mainWindow) { + // Someone tried to run a second instance, we should focus our window. + if (Swordfish.mainWindow.isMinimized()) { + Swordfish.mainWindow.restore(); } + Swordfish.mainWindow.focus(); } - if (process.platform === 'darwin' && process.arch === 'arm64') { Swordfish.verticalPadding = 56; } @@ -195,7 +192,6 @@ class Swordfish { } this.ls = spawn(this.javapath, ['-cp', 'lib/h2-1.4.200.jar', '--module-path', 'lib', '-m', 'swordfish/com.maxprograms.swordfish.TmsServer', '-port', '8070'], { cwd: app.getAppPath(), windowsHide: true }); - this.ls.stdout.on('data', (data) => { console.log(`stdout: ${data}`); }); @@ -1298,13 +1294,19 @@ class Swordfish { let data: Buffer = readFileSync(preferencesFile); let json: Preferences = JSON.parse(data.toString()); if (!json.hasOwnProperty('chatGpt')) { - json.chatGpt = { enabled: false, apiKey: '', model: 'gpt-3.5-turbo-instruct' }; + json.chatGpt = { enabled: false, apiKey: '', model: 'gpt-3.5-turbo' }; } - // Davinci, Babbage and Curie models were deprecated, replacing with the only one supported at this moment - json.chatGpt.model = 'gpt-3.5-turbo-instruct'; if (!json.hasOwnProperty('caseSensitiveMatches')) { json.caseSensitiveMatches = true; } + if (!json.hasOwnProperty('modernmt')) { + json.modernmt = { + enabled: false, + apiKey: '', + srcLang: 'none', + tgtLang: 'none' + } + } Swordfish.currentPreferences = json; if (!Swordfish.currentPreferences.projectsFolder || !existsSync(Swordfish.currentPreferences.projectsFolder)) { Swordfish.currentPreferences.projectsFolder = Swordfish.path.join(app.getPath('appData'), app.name, 'projects'); @@ -1853,14 +1855,8 @@ class Swordfish { } getMtLanguages(event: IpcMainEvent): void { - Swordfish.sendRequest('/services/getMTLanguages', {}, - (data: any) => { - event.sender.send('set-mt-languages', data); - }, - (reason: string) => { - Swordfish.showMessage({ type: 'error', message: reason }); - } - ); + let mtManager: MTManager = new MTManager(Swordfish.currentPreferences, '', ''); + event.sender.send('set-mt-languages', mtManager.getMTLanguages()); } static viewMemories(): void { @@ -2299,13 +2295,11 @@ class Swordfish { this.updatesWindow.on('close', () => { this.mainWindow.focus(); }); - } else { - if (!silent) { - Swordfish.showMessage({ - type: 'info', - message: 'There are currently no updates available' - }); - } + } else if (!silent) { + Swordfish.showMessage({ + type: 'info', + message: 'There are currently no updates available' + }); } } catch (reason: any) { if (!silent) { @@ -3070,26 +3064,16 @@ class Swordfish { } static machineTranslate(arg: any): void { - Swordfish.mainWindow.webContents.send('start-waiting'); - Swordfish.mainWindow.webContents.send('set-status', 'Getting Translations'); - Swordfish.sendRequest('/projects/machineTranslate', arg, - (data: any) => { - Swordfish.mainWindow.webContents.send('end-waiting'); - Swordfish.mainWindow.webContents.send('set-status', ''); - if (data.status !== Swordfish.SUCCESS) { - Swordfish.showMessage({ type: 'error', message: data.reason }); - return; - } - if (data.matches.length > 0) { - Swordfish.mainWindow.webContents.send('set-matches', { project: arg.project, matches: data.matches }); - } - }, - (reason: string) => { - Swordfish.mainWindow.webContents.send('end-waiting'); - Swordfish.mainWindow.webContents.send('set-status', ''); - Swordfish.showMessage({ type: 'error', message: reason }); + let mtManager: MTManager = new MTManager(Swordfish.currentPreferences, arg.srcLang, arg.tgtLang); + try { + mtManager.translateSegment(arg); + } catch (error: any) { + if (error instanceof Error) { + console.error(error.message); + } else { + console.error(JSON.stringify(error)); } - ); + } } static assembleMatches(arg: any): void { @@ -4045,7 +4029,7 @@ class Swordfish { } static closeTagsWindow(): void { - if (this.tagsWindow && this.tagsWindow.isVisible()) { + if (this.tagsWindow?.isVisible()) { Swordfish.destroyWindow(Swordfish.tagsWindow); } } @@ -4162,7 +4146,7 @@ class Swordfish { }).then((selection: Electron.MessageBoxReturnValue) => { if (selection.response === 0) { Swordfish.mainWindow.webContents.send('start-waiting'); - Swordfish.mainWindow.webContents.send('set-status', 'Applying MT'); + Swordfish.mainWindow.webContents.send('set-status', 'Selecting segments...'); Swordfish.sendRequest('/projects/applyMtAll', arg, (data: any) => { if (data.status !== Swordfish.SUCCESS) { @@ -4175,9 +4159,23 @@ class Swordfish { let intervalObject = setInterval(() => { if (Swordfish.currentStatus.progress) { if (Swordfish.currentStatus.progress === Swordfish.COMPLETED) { + clearInterval(intervalObject); + Swordfish.mainWindow.webContents.send('set-status', 'Translating...'); + + let exportedFile: string = Swordfish.path.join(Swordfish.appHome, 'projects', arg.project, 'applymt.xlf'); + if (!existsSync(exportedFile)) { + Swordfish.mainWindow.webContents.send('end-waiting'); + Swordfish.mainWindow.webContents.send('set-status', ''); + Swordfish.showMessage({ type: 'error', message: 'Unable to find exported file' }); + return; + } + + let mtManager: MTManager = new MTManager(this.currentPreferences, arg.srcLang, arg.tgtLang); + mtManager.translateProject(arg.project, exportedFile); + unlinkSync(exportedFile); + Swordfish.mainWindow.webContents.send('end-waiting'); Swordfish.mainWindow.webContents.send('set-status', ''); - clearInterval(intervalObject); Swordfish.mainWindow.webContents.send('reload-page', { project: arg.project }); return; } else if (Swordfish.currentStatus.progress === Swordfish.PROCESSING) { diff --git a/ts/about.ts b/ts/about.ts index 8e09edf..0964f30 100644 --- a/ts/about.ts +++ b/ts/about.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/addFile.ts b/ts/addFile.ts index e74a724..de9a71c 100644 --- a/ts/addFile.ts +++ b/ts/addFile.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/addGlossary.ts b/ts/addGlossary.ts index a0c1799..b4d4fdd 100644 --- a/ts/addGlossary.ts +++ b/ts/addGlossary.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/addMemory.ts b/ts/addMemory.ts index 200bfc4..ad4b96c 100644 --- a/ts/addMemory.ts +++ b/ts/addMemory.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/addNote.ts b/ts/addNote.ts index 4d1d5fc..61c3ac9 100644 --- a/ts/addNote.ts +++ b/ts/addNote.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/addProject.ts b/ts/addProject.ts index 3702a02..1e8aea1 100644 --- a/ts/addProject.ts +++ b/ts/addProject.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/addTerm.ts b/ts/addTerm.ts index 0936951..6095676 100644 --- a/ts/addTerm.ts +++ b/ts/addTerm.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/addXmlConfiguration.ts b/ts/addXmlConfiguration.ts index 177602c..c4388b4 100644 --- a/ts/addXmlConfiguration.ts +++ b/ts/addXmlConfiguration.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/applyTm.ts b/ts/applyTm.ts index 40eb602..ae8174f 100644 --- a/ts/applyTm.ts +++ b/ts/applyTm.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -51,7 +51,6 @@ class ApplyTM { let numberKeys: string[] = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'Backspace', 'Delete', 'Escape', 'Enter', 'NumpadEnter']; if (!numberKeys.includes(event.key)) { event.preventDefault(); - event.cancelBubble = true; } }); document.getElementById('applyTmButton').addEventListener('click', () => { diff --git a/ts/browseDatabases.ts b/ts/browseDatabases.ts index bbf51b9..3bc97ca 100644 --- a/ts/browseDatabases.ts +++ b/ts/browseDatabases.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/changeCase.ts b/ts/changeCase.ts index e881521..1a2c5c0 100644 --- a/ts/changeCase.ts +++ b/ts/changeCase.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/concordanceSearch.ts b/ts/concordanceSearch.ts index 39d753b..03dcf5c 100644 --- a/ts/concordanceSearch.ts +++ b/ts/concordanceSearch.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/defaultLangs.ts b/ts/defaultLangs.ts index f46b99a..5fa917d 100644 --- a/ts/defaultLangs.ts +++ b/ts/defaultLangs.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/divider.ts b/ts/divider.ts index 803457f..908e3e0 100644 --- a/ts/divider.ts +++ b/ts/divider.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/elementConfig.ts b/ts/elementConfig.ts index b211e06..5869f05 100644 --- a/ts/elementConfig.ts +++ b/ts/elementConfig.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/filterConfig.ts b/ts/filterConfig.ts index 6e0967d..c101050 100644 --- a/ts/filterConfig.ts +++ b/ts/filterConfig.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/filterSegments.ts b/ts/filterSegments.ts index da1e609..30d2eb1 100644 --- a/ts/filterSegments.ts +++ b/ts/filterSegments.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/gettingStarted.ts b/ts/gettingStarted.ts index eb381a0..4e1e966 100644 --- a/ts/gettingStarted.ts +++ b/ts/gettingStarted.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/glossaries.ts b/ts/glossaries.ts index 11580ae..00292d5 100644 --- a/ts/glossaries.ts +++ b/ts/glossaries.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/goTo.ts b/ts/goTo.ts index 4acf033..2350aa6 100644 --- a/ts/goTo.ts +++ b/ts/goTo.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/htmlViewer.ts b/ts/htmlViewer.ts index 1c48244..b324459 100644 --- a/ts/htmlViewer.ts +++ b/ts/htmlViewer.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/importGlossary.ts b/ts/importGlossary.ts index fc9a570..0670a5b 100644 --- a/ts/importGlossary.ts +++ b/ts/importGlossary.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/importTmx.ts b/ts/importTmx.ts index f78dedc..11c5e00 100644 --- a/ts/importTmx.ts +++ b/ts/importTmx.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/importXliff.ts b/ts/importXliff.ts index ca9dcf8..c0d977a 100644 --- a/ts/importXliff.ts +++ b/ts/importXliff.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/keyboardHandler.ts b/ts/keyboardHandler.ts index 6f2eb8f..8db5e03 100644 --- a/ts/keyboardHandler.ts +++ b/ts/keyboardHandler.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/licenses.ts b/ts/licenses.ts index 0fa1938..23bbcaa 100644 --- a/ts/licenses.ts +++ b/ts/licenses.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/locations.ts b/ts/locations.ts index 6916333..cabf1ae 100644 --- a/ts/locations.ts +++ b/ts/locations.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -52,7 +52,7 @@ export class Locations { this.locations.set(window, point); let text: string = '{'; this.locations.forEach((value: Point, key: string) => { - text = text + '\"' + key + '\": {\"x\":' + value.x + ', \"y\":' + value.y + '},'; + text = text + '"' + key + '": {"x":' + value.x + ', "y":' + value.y + '},'; }); text = text.substring(0, text.length - 1) + '}' let json = JSON.parse(text); diff --git a/ts/memories.ts b/ts/memories.ts index e953da9..9e45d9b 100644 --- a/ts/memories.ts +++ b/ts/memories.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/messages.ts b/ts/messages.ts index f6ed561..805bd18 100644 --- a/ts/messages.ts +++ b/ts/messages.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/mtContentHandler.ts b/ts/mtContentHandler.ts new file mode 100644 index 0000000..2e92224 --- /dev/null +++ b/ts/mtContentHandler.ts @@ -0,0 +1,139 @@ +/******************************************************************************* + * Copyright (c) 2007 - 2024 Maxprograms. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 1.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/org/documents/epl-v10.html + * + * Contributors: + * Maxprograms - initial API and implementation + *******************************************************************************/ +import { Catalog, ContentHandler, XMLAttribute, XMLElement } from "typesxml"; +import { MTManager } from "./mtManager"; + +export class MTContentHandler implements ContentHandler { + + mtManager: MTManager; + project: string; + file: string; + unit: string; + segment: string; + srcLang: string; + tgtLang: string; + + stack: Array + + constructor(mtManager: MTManager, project: string) { + this.mtManager = mtManager; + this.project = project; + this.stack = new Array(); + } + + initialize(): void { + // do nothing + } + + setCatalog(catalog: Catalog): void { + // do nothing + } + + startDocument(): void { + // do nothing + } + + endDocument(): void { + // do nothing + } + + xmlDeclaration(version: string, encoding: string, standalone: string): void { + // do nothing + } + + startElement(name: string, atts: XMLAttribute[]): void { + let element: XMLElement = new XMLElement(name); + atts.forEach(att => { + element.setAttribute(att); + }); + if (name === 'xliff') { + this.srcLang = element.getAttribute('srcLang').getValue(); + this.tgtLang = element.getAttribute('tgtLang').getValue(); + return; + } + if (name === 'file') { + this.file = element.getAttribute('id').getValue(); + return; + } + if (name === 'unit') { + this.unit = element.getAttribute('id').getValue(); + return; + } + if (name === 'segment') { + this.segment = element.getAttribute('id').getValue(); + } + if (this.stack.length > 0) { + this.stack[this.stack.length - 1].addElement(element); + } + this.stack.push(element); + } + + endElement(name: string): void { + if (name === 'xliff' || name === 'file' || name === 'unit') { + return; + } + let e: XMLElement = this.stack.pop(); + if (name === 'segment') { + this.translate(e); + this.stack = new Array(); + } + } + + internalSubset(declaration: string): void { + // do nothing + } + + characters(ch: string): void { + if (this.stack.length > 0) { + this.stack[this.stack.length - 1].addString(ch); + } + } + + ignorableWhitespace(ch: string): void { + // do nothing + } + + comment(ch: string): void { + // do + } + + processingInstruction(target: string, data: string): void { + // do nothing + } + + startCDATA(): void { + // do nothing + } + + endCDATA(): void { + // do nothing + } + + startDTD(name: string, publicId: string, systemId: string): void { + // do nothing + } + + endDTD(): void { + // do nothing + } + + skippedEntity(name: string): void { + console.log('skippedEntity: ' + name); + } + + translate(segment: XMLElement): void { + let source: XMLElement = segment.getChild('source'); + + this.mtManager.translateElement(source, this.project, this.file, this.unit, this.segment); + + } +} \ No newline at end of file diff --git a/ts/mtManager.ts b/ts/mtManager.ts new file mode 100644 index 0000000..f117195 --- /dev/null +++ b/ts/mtManager.ts @@ -0,0 +1,279 @@ +/******************************************************************************* + * Copyright (c) 2007 - 2024 Maxprograms. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 1.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/org/documents/epl-v10.html + * + * Contributors: + * Maxprograms - initial API and implementation + *******************************************************************************/ + +import { AzureTranslator, ChatGPTTranslator, DeepLTranslator, GoogleTranslator, MTEngine, MTMatch, MTUtils, ModernMTTranslator, YandexTranslator } from "mtengines"; +import { Language, LanguageUtils } from "typesbcp47"; +import { Swordfish } from "./Swordfish"; +import { SAXParser, XMLElement } from "typesxml"; +import { MTContentHandler } from "./mtContentHandler"; + +export class MTManager { + + mtEngines: MTEngine[]; + srcLang: string; + tgtLang: string; + + readonly mtLanguages: any = { + google: { + srcLangs: ["af", "ak", "am", "ar", "as", "ay", "az", "be", "bg", "bho", "bm", "bn", "bs", "ca", "ceb", "ckb", "co", "cs", "cy", "da", "de", "doi", "dv", "ee", "el", "en", "eo", "es", "et", "eu", "fa", "fi", "fr", "fy", "ga", "gd", "gl", "gn", "gom", "gu", "ha", "haw", "he", "hi", "hmn", "hr", "ht", "hu", "hy", "id", "ig", "ilo", "is", "it", "iw", "ja", "jv", "jw", "ka", "kk", "km", "kn", "ko", "kri", "ku", "ky", "la", "lb", "lg", "ln", "lo", "lt", "lus", "lv", "mai", "mg", "mi", "mk", "ml", "mn", "mni-Mtei", "mr", "ms", "mt", "my", "ne", "nl", "no", "nso", "ny", "om", "or", "pa", "pl", "ps", "pt", "qu", "ro", "ru", "rw", "sa", "sd", "si", "sk", "sl", "sm", "sn", "so", "sq", "sr", "st", "su", "sv", "sw", "ta", "te", "tg", "th", "ti", "tk", "tl", "tr", "ts", "tt", "ug", "uk", "ur", "uz", "vi", "xh", "yi", "yo", "zh", "zh-CN", "zh-TW", "zu"], + tgtLangs: ["af", "ak", "am", "ar", "as", "ay", "az", "be", "bg", "bho", "bm", "bn", "bs", "ca", "ceb", "ckb", "co", "cs", "cy", "da", "de", "doi", "dv", "ee", "el", "en", "eo", "es", "et", "eu", "fa", "fi", "fr", "fy", "ga", "gd", "gl", "gn", "gom", "gu", "ha", "haw", "he", "hi", "hmn", "hr", "ht", "hu", "hy", "id", "ig", "ilo", "is", "it", "iw", "ja", "jv", "jw", "ka", "kk", "km", "kn", "ko", "kri", "ku", "ky", "la", "lb", "lg", "ln", "lo", "lt", "lus", "lv", "mai", "mg", "mi", "mk", "ml", "mn", "mni-Mtei", "mr", "ms", "mt", "my", "ne", "nl", "no", "nso", "ny", "om", "or", "pa", "pl", "ps", "pt", "qu", "ro", "ru", "rw", "sa", "sd", "si", "sk", "sl", "sm", "sn", "so", "sq", "sr", "st", "su", "sv", "sw", "ta", "te", "tg", "th", "ti", "tk", "tl", "tr", "ts", "tt", "ug", "uk", "ur", "uz", "vi", "xh", "yi", "yo", "zh", "zh-CN", "zh-TW", "zu"], + nmtSrcLangs: ["af", "ak", "am", "ar", "as", "ay", "az", "be", "bg", "bho", "bm", "bn", "bs", "ca", "ceb", "ckb", "co", "cs", "cy", "da", "de", "doi", "dv", "ee", "el", "en", "eo", "es", "et", "eu", "fa", "fi", "fr", "fy", "ga", "gd", "gl", "gn", "gom", "gu", "ha", "haw", "he", "hi", "hmn", "hr", "ht", "hu", "hy", "id", "ig", "ilo", "is", "it", "iw", "ja", "jv", "jw", "ka", "kk", "km", "kn", "ko", "kri", "ku", "ky", "la", "lb", "lg", "ln", "lo", "lt", "lus", "lv", "mai", "mg", "mi", "mk", "ml", "mn", "mni-Mtei", "mr", "ms", "mt", "my", "ne", "nl", "no", "nso", "ny", "om", "or", "pa", "pl", "ps", "pt", "qu", "ro", "ru", "rw", "sa", "sd", "si", "sk", "sl", "sm", "sn", "so", "sq", "sr", "st", "su", "sv", "sw", "ta", "te", "tg", "th", "ti", "tk", "tl", "tr", "ts", "tt", "ug", "uk", "ur", "uz", "vi", "xh", "yi", "yo", "zh", "zh-CN", "zh-TW", "zu"], + nmtTgtLangs: ["af", "ak", "am", "ar", "as", "ay", "az", "be", "bg", "bho", "bm", "bn", "bs", "ca", "ceb", "ckb", "co", "cs", "cy", "da", "de", "doi", "dv", "ee", "el", "en", "eo", "es", "et", "eu", "fa", "fi", "fr", "fy", "ga", "gd", "gl", "gn", "gom", "gu", "ha", "haw", "he", "hi", "hmn", "hr", "ht", "hu", "hy", "id", "ig", "ilo", "is", "it", "iw", "ja", "jv", "jw", "ka", "kk", "km", "kn", "ko", "kri", "ku", "ky", "la", "lb", "lg", "ln", "lo", "lt", "lus", "lv", "mai", "mg", "mi", "mk", "ml", "mn", "mni-Mtei", "mr", "ms", "mt", "my", "ne", "nl", "no", "nso", "ny", "om", "or", "pa", "pl", "ps", "pt", "qu", "ro", "ru", "rw", "sa", "sd", "si", "sk", "sl", "sm", "sn", "so", "sq", "sr", "st", "su", "sv", "sw", "ta", "te", "tg", "th", "ti", "tk", "tl", "tr", "ts", "tt", "ug", "uk", "ur", "uz", "vi", "xh", "yi", "yo", "zh", "zh-CN", "zh-TW", "zu"] + }, + azure: { + srcLangs: ["af", "am", "ar", "as", "az", "ba", "bg", "bho", "bn", "bo", "brx", "bs", "ca", "cs", "cy", "da", "de", "doi", "dsb", "dv", "el", "en", "es", "et", "eu", "fa", "fi", "fil", "fj", "fo", "fr", "fr-CA", "ga", "gl", "gom", "gu", "ha", "he", "hi", "hr", "hsb", "ht", "hu", "hy", "id", "ig", "ikt", "is", "it", "iu", "iu-Latn", "ja", "ka", "kk", "km", "kmr", "kn", "ko", "ks", "ku", "ky", "ln", "lo", "lt", "lug", "lv", "lzh", "mai", "mg", "mi", "mk", "ml", "mn-Cyrl", "mn-Mong", "mr", "ms", "mt", "mww", "my", "nb", "ne", "nl", "nso", "nya", "or", "otq", "pa", "pl", "prs", "ps", "pt", "pt-PT", "ro", "ru", "run", "rw", "sd", "si", "sk", "sl", "sm", "sn", "so", "sq", "sr-Cyrl", "sr-Latn", "st", "sv", "sw", "ta", "te", "th", "ti", "tk", "tlh-Latn", "tlh-Piqd", "tn", "to", "tr", "tt", "ty", "ug", "uk", "ur", "uz", "vi", "xh", "yo", "yua", "yue", "zh-Hans", "zh-Hant", "zu"], + tgtLangs: ["af", "am", "ar", "as", "az", "ba", "bg", "bho", "bn", "bo", "brx", "bs", "ca", "cs", "cy", "da", "de", "doi", "dsb", "dv", "el", "en", "es", "et", "eu", "fa", "fi", "fil", "fj", "fo", "fr", "fr-CA", "ga", "gl", "gom", "gu", "ha", "he", "hi", "hr", "hsb", "ht", "hu", "hy", "id", "ig", "ikt", "is", "it", "iu", "iu-Latn", "ja", "ka", "kk", "km", "kmr", "kn", "ko", "ks", "ku", "ky", "ln", "lo", "lt", "lug", "lv", "lzh", "mai", "mg", "mi", "mk", "ml", "mn-Cyrl", "mn-Mong", "mr", "ms", "mt", "mww", "my", "nb", "ne", "nl", "nso", "nya", "or", "otq", "pa", "pl", "prs", "ps", "pt", "pt-PT", "ro", "ru", "run", "rw", "sd", "si", "sk", "sl", "sm", "sn", "so", "sq", "sr-Cyrl", "sr-Latn", "st", "sv", "sw", "ta", "te", "th", "ti", "tk", "tlh-Latn", "tlh-Piqd", "tn", "to", "tr", "tt", "ty", "ug", "uk", "ur", "uz", "vi", "xh", "yo", "yua", "yue", "zh-Hans", "zh-Hant", "zu"] + }, + yandex: { + srcLangs: ["az", "be", "bg", "ca", "cs", "da", "de", "el", "en", "es", "et", "fi", "fr", "hr", "hu", "hy", "it", "lt", "lv", "mk", "nl", "no", "pl", "pt", "ro", "ru", "sk", "sl", "sq", "sr", "sv", "tr", "uk"], + tgtLangs: ["az", "be", "bg", "ca", "cs", "da", "de", "el", "en", "es", "et", "fi", "fr", "hr", "hu", "hy", "it", "lt", "lv", "mk", "nl", "no", "pl", "pt", "ro", "ru", "sk", "sl", "sq", "sr", "sv", "tr", "uk"] + }, + deepl: { + srcLangs: ["bg", "cs", "da", "de", "el", "en", "es", "et", "fi", "fr", "hu", "id", "it", "ja", "ko", "lt", "lv", "nb", "nl", "pl", "pt", "ro", "ru", "sk", "sl", "sv", "tr", "uk", "zh"], + tgtLangs: ["bg", "cs", "da", "de", "el", "en-GB", "en-US", "es", "et", "fi", "fr", "hu", "id", "it", "ja", "ko", "lt", "lv", "nb", "nl", "pl", "pt-BR", "pt-PT", "ro", "ru", "sk", "sl", "sv", "tr", "uk", "zh"] + }, + modernmt: { + srcLangs: ["azb", "tk", "tl", "de", "ace", "azj", "li", "ti", "lg", "tg", "th", "tum", "bho", "te", "hne", "dz", "la", "ta", "lb", "tw", "lv", "min", "zsm", "ts", "lt", "tt", "tr", "lo", "ln", "tn", "bs", "bug", "dyu", "prs", "cs", "kk", "sk", "ki", "si", "kg", "sg", "sd", "cy", "ca", "sc", "ka", "sa", "da", "ky", "sv", "ast", "zh-TW", "sw", "st", "su", "sr", "ks", "ss", "sq", "kn", "sn", "ko", "so", "be", "ceb", "sl", "km", "sm", "nn", "bjn", "nl", "vi", "ne", "ga", "nb", "gd", "ilo", "khk", "ltg", "zh-CN", "ny", "mni", "uzn", "fj", "fi", "awa", "fo", "fr", "ml", "et", "mk", "uk", "mi", "ba", "cjk", "mg", "ug", "taq", "vec", "mos", "tpi", "ee", "my", "mt", "bg", "ckb", "el", "mr", "ur", "eo", "ms", "en", "es-ES", "mn", "knc", "pt-PT", "hy", "pl", "xh", "id", "ig", "pa", "hi", "hr", "ps", "ht", "hu", "wo", "az", "crh", "als", "ayr", "ha", "oc", "he", "gl", "gn", "or", "kmr", "plt", "gu", "ro", "rn", "kmb", "war", "rw", "ru", "zu", "jv", "af", "dik", "yo", "diq", "ja", "ydd", "is", "it", "kea", "pag", "es-419", "pap", "bm", "bn", "bo", "pbt", "ban", "ak", "tzm", "gaz", "pes", "am", "bem", "ar", "as", "umb", "pt-BR", "quy", "fon", "kas", "kam", "kab", "kac", "fur", "kbp", "fuv", "lij", "lmo", "es", "luo", "lus", "lua", "lvs", "nso", "sat", "mag", "mai", "scn", "shn", "szl", "nus", "zh", "pt"], + tgtLangs: ["azb", "tk", "tl", "de", "ace", "azj", "li", "ti", "lg", "tg", "th", "tum", "bho", "te", "hne", "dz", "la", "ta", "lb", "tw", "lv", "min", "zsm", "ts", "lt", "tt", "tr", "lo", "ln", "tn", "bs", "bug", "dyu", "prs", "cs", "kk", "sk", "ki", "si", "kg", "sg", "sd", "cy", "ca", "sc", "ka", "sa", "da", "ky", "sv", "ast", "zh-TW", "sw", "st", "su", "sr", "ks", "ss", "sq", "kn", "sn", "ko", "so", "be", "ceb", "sl", "km", "sm", "nn", "bjn", "nl", "vi", "ne", "ga", "nb", "gd", "ilo", "khk", "ltg", "zh-CN", "ny", "mni", "uzn", "fj", "fi", "awa", "fo", "fr", "ml", "et", "mk", "uk", "mi", "ba", "cjk", "mg", "ug", "taq", "vec", "mos", "tpi", "ee", "my", "mt", "bg", "ckb", "el", "mr", "ur", "eo", "ms", "en", "es-ES", "mn", "knc", "pt-PT", "hy", "pl", "xh", "id", "ig", "pa", "hi", "hr", "ps", "ht", "hu", "wo", "az", "crh", "als", "ayr", "ha", "oc", "he", "gl", "gn", "or", "kmr", "plt", "gu", "ro", "rn", "kmb", "war", "rw", "ru", "zu", "jv", "af", "dik", "yo", "diq", "ja", "ydd", "is", "it", "kea", "pag", "es-419", "pap", "bm", "bn", "bo", "pbt", "ban", "ak", "tzm", "gaz", "pes", "am", "bem", "ar", "as", "umb", "pt-BR", "quy", "fon", "kas", "kam", "kab", "kac", "fur", "kbp", "fuv", "lij", "lmo", "es", "luo", "lus", "lua", "lvs", "nso", "sat", "mag", "mai", "scn", "shn", "szl", "nus", "zh", "pt"] + } + }; + + constructor(preferences: Preferences, srcLang: string, tgtLang: string) { + this.mtEngines = []; + this.srcLang = srcLang; + this.tgtLang = tgtLang; + if (preferences.google.enabled) { + let googleTranslator: GoogleTranslator = new GoogleTranslator(preferences.google.apiKey, preferences.google.neural); + googleTranslator.setSourceLanguage(preferences.google.srcLang); + googleTranslator.setTargetLanguage(preferences.google.tgtLang); + this.mtEngines.push(googleTranslator); + } + if (preferences.azure.enabled) { + let azureTranslator: AzureTranslator = new AzureTranslator(preferences.azure.apiKey); + azureTranslator.setSourceLanguage(preferences.azure.srcLang); + azureTranslator.setTargetLanguage(preferences.azure.tgtLang); + this.mtEngines.push(azureTranslator); + } + if (preferences.yandex.enabled) { + let yandexTranslator: YandexTranslator = new YandexTranslator(preferences.yandex.apiKey); + yandexTranslator.setSourceLanguage(preferences.yandex.srcLang); + yandexTranslator.setTargetLanguage(preferences.yandex.tgtLang); + this.mtEngines.push(yandexTranslator); + } + if (preferences.deepl.enabled) { + let deeplTranslator: DeepLTranslator = new DeepLTranslator(preferences.deepl.apiKey, preferences.deepl.proPlan); + deeplTranslator.setSourceLanguage(preferences.deepl.srcLang); + deeplTranslator.setTargetLanguage(preferences.deepl.tgtLang); + this.mtEngines.push(deeplTranslator); + } + if (preferences.chatGpt.enabled) { + let chatGptTranslator: ChatGPTTranslator = new ChatGPTTranslator(preferences.chatGpt.apiKey, preferences.chatGpt.model); + chatGptTranslator.setSourceLanguage(srcLang); + chatGptTranslator.setTargetLanguage(tgtLang); + this.mtEngines.push(chatGptTranslator); + } + if (preferences.modernmt.enabled) { + let modernmtTranslator: ModernMTTranslator = new ModernMTTranslator(preferences.modernmt.apiKey); + modernmtTranslator.setSourceLanguage(preferences.modernmt.srcLang); + modernmtTranslator.setTargetLanguage(preferences.modernmt.tgtLang); + this.mtEngines.push(modernmtTranslator); + } + } + + translateProject(project: string, exportedFile: string) { + let parser: SAXParser = new SAXParser(); + let handler: MTContentHandler = new MTContentHandler(this, project); + parser.setContentHandler(handler); + parser.parseFile(exportedFile); + } + + translateElement(source: XMLElement, project: string, file: string, unit: string, segment: string) { + console.log(source.toString()); + let promises: Promise[] = []; + for (let mtEngine of this.mtEngines) { + if (mtEngine.handlesTags()) { + promises.push(mtEngine.getMTMatch(source)); + } else { + let plainText: string = MTUtils.plainText(source); + let plainSource: XMLElement = MTUtils.toXMLElement('' + plainText + ''); + promises.push(mtEngine.getMTMatch(plainSource)); + } + } + Promise.all(promises).then((values: MTMatch[]) => { + let translations: MTMatch[] = []; + for (let value of values) { + translations.push(value); + } + this.setMTMatches({ + project: project, + file: file, + unit: unit, + segment: segment, + srcLang: this.srcLang, + tgtLang: this.tgtLang, + translations: translations + }); + }, (reason: any) => { + if (reason instanceof Error) { + console.log(reason.message); + throw reason; + } + throw new Error(reason); + }); + } + + translateSegment(params: any) { + Swordfish.mainWindow.webContents.send('start-waiting'); + Swordfish.mainWindow.webContents.send('set-status', 'Getting Translations'); + this.getSourceSegment(params, (segment: any) => { + let promises: Promise[] = []; + for (let mtEngine of this.mtEngines) { + if (mtEngine.handlesTags()) { + promises.push(mtEngine.getMTMatch(MTUtils.toXMLElement(segment.source))); + } else { + promises.push(mtEngine.getMTMatch(MTUtils.toXMLElement(segment.plainText))); + } + } + Promise.all(promises).then((values: MTMatch[]) => { + let translations: MTMatch[] = []; + for (let value of values) { + translations.push(value); + } + params.translations = translations; + this.setMTMatches(params); + Swordfish.mainWindow.webContents.send('end-waiting'); + Swordfish.mainWindow.webContents.send('set-status', ''); + }, (reason: any) => { + Swordfish.mainWindow.webContents.send('end-waiting'); + Swordfish.mainWindow.webContents.send('set-status', ''); + if (reason instanceof Error) { + throw reason; + } + throw new Error(reason); + }); + }, (reason: any) => { + Swordfish.mainWindow.webContents.send('end-waiting'); + Swordfish.mainWindow.webContents.send('set-status', ''); + if (reason instanceof Error) { + throw reason; + } + console.log(JSON.stringify(reason, null, 2)); + throw new Error(reason); + }); + } + + getSourceSegment(params: any, resolve: Function, reject: Function): void { + fetch('http://127.0.0.1:8070/projects/segmentSource', { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify(params) + }).then((response: Response) => { + if (response.ok) { + response.json().then((result: any) => { + if (result.status === 'Success') { + resolve(result); + return; + } + reject(result.reason); + }); + } else { + throw new Error("Error getting source segment"); + } + }).catch((error: any) => { + if (error instanceof Error) { + reject(error.message); + return; + } + reject('Error getting source segment'); + }); + } + + setMTMatches(params: any): void { + fetch('http://127.0.0.1:8070/projects/setMTMatches', { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify(params) + }).then((response: Response) => { + if (response.ok) { + response.json().then((result: any) => { + if (result.status === 'Success') { + Swordfish.getMatches({ + project: params.project, + file: params.file, + unit: params.unit, + segment: params.segment + }); + } else { + throw new Error(result.reason); + } + }); + } else { + throw new Error("Error setting MT matches"); + } + }).catch((error: any) => { + if (error instanceof Error) { + throw error; + } + throw new Error("Error setting MT matches"); + }); + } + + getMTLanguages(): any { + return { + google: { + srcLangs: this.getLanguages(this.mtLanguages.google.srcLangs), + tgtLangs: this.getLanguages(this.mtLanguages.google.tgtLangs), + nmtSrclangs: this.getLanguages(this.mtLanguages.google.nmtSrcLangs), + nmtTgtLangs: this.getLanguages(this.mtLanguages.google.nmtTgtLangs) + }, + azure: { + srcLangs: this.getLanguages(this.mtLanguages.azure.srcLangs), + tgtLangs: this.getLanguages(this.mtLanguages.azure.tgtLangs) + }, + yandex: { + srcLangs: this.getLanguages(this.mtLanguages.yandex.srcLangs), + tgtLangs: this.getLanguages(this.mtLanguages.yandex.tgtLangs), + directions: YandexTranslator.getDirections() + }, + deepl: { + srcLangs: this.getLanguages(this.mtLanguages.deepl.srcLangs), + tgtLangs: this.getLanguages(this.mtLanguages.deepl.tgtLangs) + }, + modernmt: { + srcLangs: this.getLanguages(this.mtLanguages.modernmt.srcLangs), + tgtLangs: this.getLanguages(this.mtLanguages.modernmt.tgtLangs) + } + }; + + } + + getLanguages(langs: string[]): Language[] { + let result: Language[] = []; + for (let lang of langs) { + try { + result.push(LanguageUtils.getLanguage(lang)); + } catch (error) { + // ignore unsupported tags + // console.log('unsupported tag', lang); + } + } + result.sort((a: Language, b: Language) => { + return a.description.localeCompare(b.description); + }); + return result; + } + +} \ No newline at end of file diff --git a/ts/mtMatches.ts b/ts/mtMatches.ts index d75e670..f2496c2 100644 --- a/ts/mtMatches.ts +++ b/ts/mtMatches.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/notes.ts b/ts/notes.ts index 4fb9398..2e2971e 100644 --- a/ts/notes.ts +++ b/ts/notes.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/preferences.ts b/ts/preferences.ts index bb82497..86e569e 100644 --- a/ts/preferences.ts +++ b/ts/preferences.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -56,7 +56,7 @@ class Preferences { apiKey: string; model: string; }; - myMemory: { + modernmt: { enabled: boolean; apiKey: string; srcLang: string; diff --git a/ts/preferencesDialog.ts b/ts/preferencesDialog.ts index 445ef40..b7b5cf1 100644 --- a/ts/preferencesDialog.ts +++ b/ts/preferencesDialog.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -61,10 +61,10 @@ class PreferencesDialog { chatGPTKey: HTMLInputElement; chatGPTModel: HTMLSelectElement; - enableMyMemory: HTMLInputElement; - myMemoryKey: HTMLInputElement; - myMemorySrcLang: HTMLSelectElement; - myMemoryTgtLang: HTMLSelectElement; + enableModernmt: HTMLInputElement; + modernmtKey: HTMLInputElement; + modernmtSrcLang: HTMLSelectElement; + modernmtTgtLang: HTMLSelectElement; defaultEnglish: HTMLSelectElement; defaultPortuguese: HTMLSelectElement; @@ -252,17 +252,17 @@ class PreferencesDialog { this.chatGPTKey.value = preferences.chatGpt.apiKey; this.chatGPTModel.value = preferences.chatGpt.model; - this.enableMyMemory.checked = preferences.myMemory.enabled; - this.myMemoryKey.value = preferences.myMemory.apiKey; - this.myMemorySrcLang.value = preferences.myMemory.srcLang; - this.myMemoryTgtLang.value = preferences.myMemory.tgtLang; - this.myMemoryKey.disabled = !preferences.myMemory.enabled; - this.myMemorySrcLang.disabled = !preferences.myMemory.enabled; - this.myMemoryTgtLang.disabled = !preferences.myMemory.enabled; - this.enableMyMemory.addEventListener('change', () => { - this.myMemoryKey.disabled = !this.enableMyMemory.checked; - this.myMemorySrcLang.disabled = !this.enableMyMemory.checked; - this.myMemoryTgtLang.disabled = !this.enableMyMemory.checked; + this.enableModernmt.checked = preferences.modernmt.enabled; + this.modernmtKey.value = preferences.modernmt.apiKey; + this.modernmtSrcLang.value = preferences.modernmt.srcLang; + this.modernmtTgtLang.value = preferences.modernmt.tgtLang; + this.modernmtKey.disabled = !preferences.modernmt.enabled; + this.modernmtSrcLang.disabled = !preferences.modernmt.enabled; + this.modernmtTgtLang.disabled = !preferences.modernmt.enabled; + this.enableModernmt.addEventListener('change', () => { + this.modernmtKey.disabled = !this.enableModernmt.checked; + this.modernmtSrcLang.disabled = !this.enableModernmt.checked; + this.modernmtTgtLang.disabled = !this.enableModernmt.checked; }); this.os = preferences.os; @@ -276,9 +276,6 @@ class PreferencesDialog { this.srcLangSelect.innerHTML = languageOptions; this.tgtLangSelect.innerHTML = languageOptions; - this.myMemorySrcLang.innerHTML = languageOptions; - this.myMemoryTgtLang.innerHTML = languageOptions; - this.electron.ipcRenderer.send('get-mt-languages'); } @@ -330,12 +327,12 @@ class PreferencesDialog { return; } - if (this.enableMyMemory.checked && this.myMemoryKey.value === '') { - this.electron.ipcRenderer.send('show-message', { type: 'warning', message: 'Enter MyMemory API key', parent: 'preferences' }); + if (this.enableModernmt.checked && this.modernmtKey.value === '') { + this.electron.ipcRenderer.send('show-message', { type: 'warning', message: 'Enter ModernMT API key', parent: 'preferences' }); return; } - if (this.enableMyMemory.checked && (this.myMemorySrcLang.value === 'none' || this.myMemoryTgtLang.value === 'none')) { - this.electron.ipcRenderer.send('show-message', { type: 'warning', message: 'Select MyMemory languages', parent: 'preferences' }); + if (this.enableModernmt.checked && (this.modernmtSrcLang.value === 'none' || this.modernmtTgtLang.value === 'none')) { + this.electron.ipcRenderer.send('show-message', { type: 'warning', message: 'Select ModernMT languages', parent: 'preferences' }); return; } @@ -385,11 +382,11 @@ class PreferencesDialog { apiKey: this.chatGPTKey.value, model: this.chatGPTModel.value }, - myMemory: { - enabled: this.enableMyMemory.checked, - apiKey: this.myMemoryKey.value, - srcLang: this.myMemorySrcLang.value, - tgtLang: this.myMemoryTgtLang.value + modernmt: { + enabled: this.enableModernmt.checked, + apiKey: this.modernmtKey.value, + srcLang: this.modernmtSrcLang.value, + tgtLang: this.modernmtTgtLang.value }, spellchecker: { defaultEnglish: 'en-US', @@ -990,12 +987,12 @@ class PreferencesDialog { mtHolder.addTab(chatGptTab); this.populateChatGptTab(chatGptTab.getContainer()); - let myMemoryTab: Tab = new Tab('myMemoryTab', 'MyMemory', false); - myMemoryTab.getLabelDiv().addEventListener('click', () => { + let modernmtTab: Tab = new Tab('modernmtTab', 'ModernMT', false); + modernmtTab.getLabelDiv().addEventListener('click', () => { this.electron.ipcRenderer.send('settings-height', { width: document.body.clientWidth, height: document.body.clientHeight }); }); - mtHolder.addTab(myMemoryTab); - this.populateMyMemoryTab(myMemoryTab.getContainer()); + mtHolder.addTab(modernmtTab); + this.populateModernmtTab(modernmtTab.getContainer()); } populateGoogleTab(container: HTMLDivElement): void { @@ -1316,7 +1313,7 @@ class PreferencesDialog { td = document.createElement('td'); td.classList.add('middle'); td.classList.add('fill_width'); - td.innerHTML = ''; + td.innerHTML = ''; tr.appendChild(td); this.enableChatGPT = document.getElementById('enableChatGPT') as HTMLInputElement; @@ -1324,15 +1321,15 @@ class PreferencesDialog { this.chatGPTModel = document.getElementById('chatGPTModel') as HTMLSelectElement; } - populateMyMemoryTab(container: HTMLDivElement): void { + populateModernmtTab(container: HTMLDivElement): void { container.style.paddingTop = '10px'; - let myMemoryDiv: HTMLDivElement = document.createElement('div'); - myMemoryDiv.classList.add('middle'); - myMemoryDiv.classList.add('row'); - myMemoryDiv.style.paddingLeft = '4px'; - myMemoryDiv.innerHTML = ''; - container.appendChild(myMemoryDiv); + let modernmtDiv: HTMLDivElement = document.createElement('div'); + modernmtDiv.classList.add('middle'); + modernmtDiv.classList.add('row'); + modernmtDiv.style.paddingLeft = '4px'; + modernmtDiv.innerHTML = ''; + container.appendChild(modernmtDiv); let langsTable: HTMLTableElement = document.createElement('table'); langsTable.classList.add('fill_width'); @@ -1344,13 +1341,13 @@ class PreferencesDialog { let td: HTMLTableCellElement = document.createElement('td'); td.classList.add('middle'); td.classList.add('noWrap'); - td.innerHTML = '' + td.innerHTML = '' tr.appendChild(td); td = document.createElement('td'); td.classList.add('middle'); td.classList.add('fill_width'); - td.innerHTML = ''; + td.innerHTML = ''; tr.appendChild(td); tr = document.createElement('tr'); @@ -1359,13 +1356,13 @@ class PreferencesDialog { td = document.createElement('td'); td.classList.add('middle'); td.classList.add('noWrap'); - td.innerHTML = ''; + td.innerHTML = ''; tr.appendChild(td); td = document.createElement('td'); td.classList.add('middle'); td.classList.add('fill_width'); - td.innerHTML = ''; + td.innerHTML = ''; tr.appendChild(td); tr = document.createElement('tr'); @@ -1374,19 +1371,19 @@ class PreferencesDialog { td = document.createElement('td'); td.classList.add('middle'); td.classList.add('noWrap'); - td.innerHTML = ''; + td.innerHTML = ''; tr.appendChild(td); td = document.createElement('td'); td.classList.add('middle'); td.classList.add('fill_width'); - td.innerHTML = ''; + td.innerHTML = ''; tr.appendChild(td); - this.enableMyMemory = document.getElementById('enableMyMemory') as HTMLInputElement; - this.myMemoryKey = document.getElementById('myMemoryKey') as HTMLInputElement; - this.myMemorySrcLang = document.getElementById('myMemorySrcLang') as HTMLSelectElement; - this.myMemoryTgtLang = document.getElementById('myMemoryTgtLang') as HTMLSelectElement; + this.enableModernmt = document.getElementById('enablemodernmt') as HTMLInputElement; + this.modernmtKey = document.getElementById('modernmtKey') as HTMLInputElement; + this.modernmtSrcLang = document.getElementById('modernmtSrcLang') as HTMLSelectElement; + this.modernmtTgtLang = document.getElementById('modernmtTgtLang') as HTMLSelectElement; } setMtLanguages(arg: any): void { @@ -1403,6 +1400,9 @@ class PreferencesDialog { this.deeplSrcLang.innerHTML = this.getOptions(arg.deepl.srcLangs); this.deeplTgtLang.innerHTML = this.getOptions(arg.deepl.tgtLangs); + this.modernmtSrcLang.innerHTML = this.getOptions(arg.modernmt.srcLangs); + this.modernmtTgtLang.innerHTML = this.getOptions(arg.modernmt.tgtLangs); + this.electron.ipcRenderer.send('get-preferences'); this.googleNeural.addEventListener('change', (event: InputEvent) => { diff --git a/ts/projects.ts b/ts/projects.ts index a6508d7..72f453b 100644 --- a/ts/projects.ts +++ b/ts/projects.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/replaceText.ts b/ts/replaceText.ts index 478625b..724621b 100644 --- a/ts/replaceText.ts +++ b/ts/replaceText.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/serverSettings.ts b/ts/serverSettings.ts index 9f23825..18af544 100644 --- a/ts/serverSettings.ts +++ b/ts/serverSettings.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/sortSegments.ts b/ts/sortSegments.ts index 2cffa34..ad3cc96 100644 --- a/ts/sortSegments.ts +++ b/ts/sortSegments.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/spaceAnalysis.ts b/ts/spaceAnalysis.ts index 8e4c8bf..9878a7c 100644 --- a/ts/spaceAnalysis.ts +++ b/ts/spaceAnalysis.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/spellingLangs.ts b/ts/spellingLangs.ts index 036c3fc..90553f4 100644 --- a/ts/spellingLangs.ts +++ b/ts/spellingLangs.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/systemInfo.ts b/ts/systemInfo.ts index 3b70dd9..5217315 100644 --- a/ts/systemInfo.ts +++ b/ts/systemInfo.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/tabs.ts b/ts/tabs.ts index 3c6e640..8372194 100644 --- a/ts/tabs.ts +++ b/ts/tabs.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/tags.ts b/ts/tags.ts index 80fdb4f..aaa9d21 100644 --- a/ts/tags.ts +++ b/ts/tags.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/tagsAnalysis.ts b/ts/tagsAnalysis.ts index fe43c28..7b8143e 100644 --- a/ts/tagsAnalysis.ts +++ b/ts/tagsAnalysis.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/termSearch.ts b/ts/termSearch.ts index a1ffa19..91daa01 100644 --- a/ts/termSearch.ts +++ b/ts/termSearch.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/termsPanel.ts b/ts/termsPanel.ts index 21b30cd..d5f8722 100644 --- a/ts/termsPanel.ts +++ b/ts/termsPanel.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/tmMatches.ts b/ts/tmMatches.ts index ced1ec8..922a912 100644 --- a/ts/tmMatches.ts +++ b/ts/tmMatches.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 diff --git a/ts/translation.ts b/ts/translation.ts index 2132963..fd8e2ec 100644 --- a/ts/translation.ts +++ b/ts/translation.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0 @@ -147,150 +147,121 @@ class TranslationView { this.container.addEventListener('keydown', (event: KeyboardEvent) => { if (event.key === 'PageDown' && !(event.ctrlKey || event.metaKey)) { event.preventDefault(); - event.cancelBubble = true; this.gotoNext(); } if (event.key === 'PageUp' && !(event.ctrlKey || event.metaKey)) { event.preventDefault(); - event.cancelBubble = true; this.gotoPrevious(); } if (event.key === 'PageDown' && (event.ctrlKey || event.metaKey) && !event.shiftKey) { event.preventDefault(); - event.cancelBubble = true; this.nextPage(); } if (event.key === 'PageUp' && (event.ctrlKey || event.metaKey) && !event.shiftKey) { event.preventDefault(); - event.cancelBubble = true; this.previousPage(); } if (event.key === 'PageDown' && (event.ctrlKey || event.metaKey) && event.shiftKey) { event.preventDefault(); - event.cancelBubble = true; this.lastPage(); } if (event.key === 'PageUp' && (event.ctrlKey || event.metaKey) && event.shiftKey) { event.preventDefault(); - event.cancelBubble = true; this.firstPage(); } if ((event.ctrlKey || event.metaKey) && (event.key === 'b' || event.key === 'B')) { event.preventDefault(); - event.cancelBubble = true; this.addTerm(); } if ((event.ctrlKey || event.metaKey) && (event.key === 'u' || event.key === 'U') && !event.shiftKey) { event.preventDefault(); - event.cancelBubble = true; this.nextUntranslated(); } if ((event.ctrlKey || event.metaKey) && (event.key === 'u' || event.key === 'U') && event.shiftKey) { event.preventDefault(); - event.cancelBubble = true; this.nextUnconfirmed(); } // Insert tags with numeric keypad if (event.code === 'Numpad1' && (event.ctrlKey || event.metaKey) && !event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTag({ tag: 1 }); } if (event.code === 'Numpad2' && (event.ctrlKey || event.metaKey) && !event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTag({ tag: 2 }); } if (event.code === 'Numpad3' && (event.ctrlKey || event.metaKey) && !event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTag({ tag: 3 }); } if (event.code === 'Numpad4' && (event.ctrlKey || event.metaKey) && !event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTag({ tag: 4 }); } if (event.code === 'Numpad5' && (event.ctrlKey || event.metaKey) && !event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTag({ tag: 5 }); } if (event.code === 'Numpad6' && (event.ctrlKey || event.metaKey) && !event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTag({ tag: 6 }); } if (event.code === 'Numpad7' && (event.ctrlKey || event.metaKey) && !event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTag({ tag: 7 }); } if (event.code === 'Numpad8' && (event.ctrlKey || event.metaKey) && !event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTag({ tag: 8 }); } if (event.code === 'Numpad9' && (event.ctrlKey || event.metaKey) && !event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTag({ tag: 9 }); } if (event.code === 'Numpad0' && (event.ctrlKey || event.metaKey) && !event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTag({ tag: 10 }); } // Insert terms with numeric keypad if (event.code === 'Numpad1' && (event.ctrlKey || event.metaKey) && event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTerm({ term: 1 }); } if (event.code === 'Numpad2' && (event.ctrlKey || event.metaKey) && event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTerm({ term: 2 }); } if (event.code === 'Numpad3' && (event.ctrlKey || event.metaKey) && event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTerm({ term: 3 }); } if (event.code === 'Numpad4' && (event.ctrlKey || event.metaKey) && event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTerm({ term: 4 }); } if (event.code === 'Numpad5' && (event.ctrlKey || event.metaKey) && event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTerm({ term: 5 }); } if (event.code === 'Numpad6' && (event.ctrlKey || event.metaKey) && event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTerm({ term: 6 }); } if (event.code === 'Numpad7' && (event.ctrlKey || event.metaKey) && event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTerm({ term: 7 }); } if (event.code === 'Numpad8' && (event.ctrlKey || event.metaKey) && event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTerm({ term: 8 }); } if (event.code === 'Numpad9' && (event.ctrlKey || event.metaKey) && event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTerm({ term: 9 }); } if (event.code === 'Numpad0' && (event.ctrlKey || event.metaKey) && event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.insertTerm({ term: 10 }); } }); @@ -1173,16 +1144,18 @@ class TranslationView { this.saveEdit({ confirm: false, next: 'clicked', segment: clickedRow.rowIndex }); } - getMachineTranslations() { + getMachineTranslations(): void { this.electron.ipcRenderer.send('machine-translate', { project: this.projectId, file: this.currentId.file, unit: this.currentId.unit, - segment: this.currentId.id + segment: this.currentId.id, + srcLang: this.srcLang, + tgtLang: this.tgtLang }); } - getAssembledMatches() { + getAssembledMatches(): void { if (this.memSelect.value === 'none') { this.electron.ipcRenderer.send('show-message', { type: 'warning', message: 'Select memory' }); return; @@ -1201,7 +1174,7 @@ class TranslationView { }); } - getTmMatches() { + getTmMatches(): void { if (this.memSelect.value === 'none') { this.electron.ipcRenderer.send('show-message', { type: 'warning', message: 'Select memory' }); return; @@ -1394,7 +1367,7 @@ class TranslationView { } } - selectRow(row: HTMLTableRowElement) { + selectRow(row: HTMLTableRowElement): void { if (this.currentRow) { this.currentRow.classList.remove('currentRow'); } @@ -1474,7 +1447,6 @@ class TranslationView { } if (event.key === 'Enter' && event.altKey) { event.preventDefault(); - event.cancelBubble = true; this.saveSource(segmentId, source, originalSource); this.currentCell.contentEditable = 'true'; this.currentCell.focus(); @@ -1864,7 +1836,7 @@ class TranslationView { unit: this.currentId.unit, segment: this.currentId.id } - this.electron.ipcRenderer.send('apply-mt-all', { project: this.projectId }); + this.electron.ipcRenderer.send('apply-mt-all', { project: this.projectId, srcLang: this.srcLang, tgtLang: this.tgtLang }); } assembleMatchesAll(): void { @@ -2184,7 +2156,6 @@ class TranslationView { let allowedKeys: string[] = ['Escape', 'Enter', 'NumpadEnter', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Alt']; if (!allowedKeys.includes(event.key)) { event.preventDefault(); - event.cancelBubble = true; return; } if (event.key === 'Escape') { @@ -2196,7 +2167,6 @@ class TranslationView { if (event.key === 'Enter' || event.key === 'NumpadEnter') { event.preventDefault(); - event.cancelBubble = true; let selection: Selection = window.getSelection(); if (selection.rangeCount !== 0) { let source: HTMLTableCellElement = event.currentTarget as HTMLTableCellElement; diff --git a/ts/updates.ts b/ts/updates.ts index ee1f1a4..6228011 100644 --- a/ts/updates.ts +++ b/ts/updates.ts @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Maxprograms. + * Copyright (c) 2007 - 2024 Maxprograms. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 1.0