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 mml = "http://www.w3.org/1998/Math/MathML" namespace rng = "http://relaxng.org/ns/structure/1.0" namespace s = "http://www.ascc.net/xml/schematron" namespace svg = "http://www.w3.org/2000/svg" namespace xlink = "http://www.w3.org/1999/xlink" 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 = "dbx" uri = "http://sourceforge.net/projects/docbook/defguide/schema/extra-markup" ] 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://www.ascc.net/xml/schematron" ] s:ns [ prefix = "svg" uri = "http://www.w3.org/2000/svg" ] s:ns [ prefix = "xlink" uri = "http://www.w3.org/1999/xlink" ] # DocBook V5.0b1 # See http://docbook.org/ns/docbook # This file is part of DocBook V5.0b1 # # Copyright 1992-2005 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). # # Release: $Id: docbook.rnc,v 1.4 2005/10/27 14:14:28 nwalsh Exp $ # # 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@lists.oasis-open.org mailing list. For more # information, see http://www.oasis-open.org/docbook/. # # ====================================================================== start = (db.set | db.book | db.divisions | db.components | db.navigation.components | db.section | db.para) | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5) | (db.refentry | db.refsection) | (db.refsect1 | db.refsect2 | db.refsect3) | db.setindex div { db._any = ## Any element from any namespace except the DocBook namespace element * - (db:* | html:*) { (attribute * { text } | text | db._any)* } } db.effectivity.attributes = ## Designates the computer or chip architecture to which the element applies attribute arch { text }?, ## provides a standard place for application-specific effectivity attribute condition { text }?, ## Indicates standards conformance characteristics of the element attribute conformance { text }?, ## Indicates the operating system to which the element is applicable attribute os { text }?, ## Indicates the editorial revision to which the element belongs attribute revision { text }?, ## Indicates something about the security level associated with the element to which it applies attribute security { text }?, ## Indicates the level of user experience for which the element applies attribute userlevel { text }?, ## Indicates the computer vendor to which the element applies. attribute vendor { text }?, ## Indicates the word size (width in bits) of the computer architecture to which the element applies attribute wordsize { text }? 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 { text } db.xlink.type.attribute = ## Identifies the element as an XLink simple link attribute xlink: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.href.attribute = db.xlink.href.attribute & db.xlink.type.attribute? & db.xlink.role.attribute? & db.xlink.arcrole.attribute? & db.xlink.title.attribute? & db.xlink.show.attribute? & db.xlink.actuate.attribute? 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 { text } 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.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.common.attributes = db.xml.id.attribute? & 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.annotations.attribute? db.common.idreq.attributes = db.xml.id.attribute & 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.annotations.attribute? db.common.linking.attributes = (db.linkend.attribute | db.href.attribute)? db.common.req.linking.attributes = db.linkend.attribute | db.href.attribute 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.attributes = db.verbatim.continuation.attribute? & db.verbatim.linenumbering.attribute? & db.verbatim.startinglinenumber.attribute? & db.verbatim.language.attribute? & db.verbatim.xml.space.attribute? 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.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 document object identifier. "doi" | ## An international standard book number. "isbn" | ## An international standard technical report number (ISO 10444). "isrn" | ## An international standard serial number. "issn" | ## A Library of Congress reference number. "libraryofcongress" | ## A publication number (an internal number or possibly organizational standard). "pubnumber" | ## 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 = ## Provides an identifier for elements with the class 'other' attribute otherclass { xsd:NMTOKEN } db.biblio.class-other.attributes = attribute class { "other" } & db.biblio.class-other.attribute db.biblio.class.attribute = db.biblio.class-enum.attribute | db.biblio.class-other.attributes db.ubiq.inlines = (db.inlinemediaobject | db.remark | db.superscript | db.subscript | db.link.inlines | db.alt) | db.annotation | db.indexterm 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.req?, 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.error.inlines | db.os.inlines | db.programming.inlines | db.markup.inlines | db.gui.inlines | db.keyboard.inlines) | db.math.inlines db.technical.inlines = (db.replaceable | db.systemitem | db.option | db.optional | db.package | db.property | db.termdef) | db.nonterminal db.error.inlines = db.errorcode | db.errortext | db.errorname | db.errortype db.oo.inlines = db.ooclass | db.ooexception | db.oointerface 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.oo.inlines db.product.inlines = db.productnumber | db.productname | db.database | db.application | db.hardware | db.trademark db.os.inlines = db.prompt | db.envar | db.filename | db.command | db.computeroutput | db.userinput db.markup.inlines = db.tag | db.markup | db.token | db.symbol | db.literal | db.code | db.constant | db.email | db.uri db.bibliography.inlines = db.citation | db.citerefentry | db.citetitle | db.citebiblioid | db.author | db.personname | db.orgname | db.editor db.publishing.inlines = (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.glossary.inlines | db.coref db.graphic.inlines = db.inlinemediaobject db.indexing.inlines = notAllowed | db.indexterm db.gui.inlines = db.guiicon | db.guibutton | db.guimenuitem | db.guimenu | db.guisubmenu | db.guilabel | db.menuchoice | db.mousebutton db.keyboard.inlines = db.keycombo | db.keycap | db.keycode | db.keysym | db.shortcut | db.accel db.link.inlines = (db.xref | db.link | db.olink | db.anchor) | db.biblioref db.extension.inlines = notAllowed db.nopara.blocks = (db.list.blocks | db.admonition.blocks | db.formal.blocks | db.informal.blocks | db.publishing.blocks | db.graphic.blocks | db.technical.blocks | db.verbatim.blocks | db.synopsis.blocks | db.bridgehead | db.remark | db.revhistory) | db.indexterm | db.math.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.formal.blocks = db.example | db.figure | db.table db.informal.blocks = db.informalexample | db.informalfigure | db.informaltable 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.admonition.blocks = db.caution | db.important | db.note | db.tip | db.warning 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.programlisting | db.screen | db.literallayout | db.synopsis) | (db.programlistingco | db.screenco) db.synopsis.blocks = db.cmdsynopsis | db.funcsynopsis | db.classsynopsis | db.methodsynopsis | db.constructorsynopsis | db.destructorsynopsis | db.fieldsynopsis db.extension.blocks = notAllowed 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.date | db.edition | db.editor | db.issuenum | db.keywordset | db.legalnotice | db.mediaobject | db.orgname | db.othercredit | db.pagenums | db.printhistory | db.productname | db.productnumber | db.pubdate | db.publisher | db.publishername | db.releaseinfo | db.revhistory | db.seriesvolnums | db.subjectset | db.volumenum) | db.annotation | db.extendedlink | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset) | db.itermset db.bibliographic.elements = db.info.elements | db.abbrev | db.citerefentry | db.citetitle | db.citebiblioid | db.personname | db.subtitle | db.title 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 = 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 = 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.attlist = db.procedure.role.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+ } } 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.substeps | db.stepalternatives), db.all.blocks*)) } } 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.sidebar.role.attribute = attribute role { text } db.sidebar.attlist = db.sidebar.role.attribute? & db.common.attributes & db.common.linking.attributes db.sidebar.info = db._info.title.only db.sidebar = ## A portion of a document that is isolated from the main narrative flow [ s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:sidebar" "\x{a}" ~ " " s:assert [ test = "not(.//db:sidebar)" "sidebar must not occur in the descendants of sidebar" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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.para.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.personname | db.citetitle | db.citation)* } } div { db.bridgehead.role.attribute = attribute role { text } db.bridgehead.renderas.enumeration = "other" | "sect1" | "sect2" | "sect3" | "sect4" | "sect5" db.bridgehead.renderas.attribute = attribute renderas { db.bridgehead.renderas.enumeration } 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._text } } 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 = attribute label { text } db.footnote.attlist = db.footnote.role.attribute? & db.common.attributes & db.common.linking.attributes & db.footnote.label.attribute? db.footnote = ## A footnote [ s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:footnote)" "footnote must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:example)" "example must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:figure)" "figure must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:caution)" "caution must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:important)" "important must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:note)" "note must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:tip)" "tip must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:warning)" "warning must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:indexterm)" "indexterm must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:indexterm)" "indexterm must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:indexterm)" "indexterm must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:sidebar)" "sidebar must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:task)" "task must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:footnote" "\x{a}" ~ " " s:assert [ test = "not(.//db:epigraph)" "epigraph must not occur in the descendants of footnote" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 [ s:pattern [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:para" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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* } } 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 [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caution" "\x{a}" ~ " " s:assert [ test = "not(.//db:caution)" "caution must not occur in the descendants of caution" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caution" "\x{a}" ~ " " s:assert [ test = "not(.//db:important)" "important must not occur in the descendants of caution" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caution" "\x{a}" ~ " " s:assert [ test = "not(.//db:note)" "note must not occur in the descendants of caution" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caution" "\x{a}" ~ " " s:assert [ test = "not(.//db:tip)" "tip must not occur in the descendants of caution" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caution" "\x{a}" ~ " " s:assert [ test = "not(.//db:warning)" "warning must not occur in the descendants of caution" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element caution { db.caution.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 [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:important" "\x{a}" ~ " " s:assert [ test = "not(.//db:caution)" "caution must not occur in the descendants of important" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:important" "\x{a}" ~ " " s:assert [ test = "not(.//db:important)" "important must not occur in the descendants of important" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:important" "\x{a}" ~ " " s:assert [ test = "not(.//db:note)" "note must not occur in the descendants of important" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:important" "\x{a}" ~ " " s:assert [ test = "not(.//db:tip)" "tip must not occur in the descendants of important" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:important" "\x{a}" ~ " " s:assert [ test = "not(.//db:warning)" "warning must not occur in the descendants of important" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:note" "\x{a}" ~ " " s:assert [ test = "not(.//db:caution)" "caution must not occur in the descendants of note" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:note" "\x{a}" ~ " " s:assert [ test = "not(.//db:important)" "important must not occur in the descendants of note" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:note" "\x{a}" ~ " " s:assert [ test = "not(.//db:note)" "note must not occur in the descendants of note" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:note" "\x{a}" ~ " " s:assert [ test = "not(.//db:tip)" "tip must not occur in the descendants of note" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:note" "\x{a}" ~ " " s:assert [ test = "not(.//db:warning)" "warning must not occur in the descendants of note" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:tip" "\x{a}" ~ " " s:assert [ test = "not(.//db:caution)" "caution must not occur in the descendants of tip" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:tip" "\x{a}" ~ " " s:assert [ test = "not(.//db:important)" "important must not occur in the descendants of tip" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:tip" "\x{a}" ~ " " s:assert [ test = "not(.//db:note)" "note must not occur in the descendants of tip" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:tip" "\x{a}" ~ " " s:assert [ test = "not(.//db:tip)" "tip must not occur in the descendants of tip" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:tip" "\x{a}" ~ " " s:assert [ test = "not(.//db:warning)" "warning must not occur in the descendants of tip" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:warning" "\x{a}" ~ " " s:assert [ test = "not(.//db:caution)" "caution must not occur in the descendants of warning" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:warning" "\x{a}" ~ " " s:assert [ test = "not(.//db:important)" "important must not occur in the descendants of warning" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:warning" "\x{a}" ~ " " s:assert [ test = "not(.//db:note)" "note must not occur in the descendants of warning" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:warning" "\x{a}" ~ " " s:assert [ test = "not(.//db:tip)" "tip must not occur in the descendants of warning" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:warning" "\x{a}" ~ " " s:assert [ test = "not(.//db:warning)" "warning must not occur in the descendants of warning" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element warning { db.warning.attlist, db.admonition.contentmodel } } div { db.itemizedlist.role.attribute = attribute role { text } db.itemizedlist.mark.attribute = attribute mark { text } 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 = "continues" | "restarts" db.orderedlist.continuation.attribute = attribute continuation { db.orderedlist.continuation.enumeration } db.orderedlist.inheritnum.enumeration = "ignore" | "inherit" db.orderedlist.inheritnum.attribute = attribute inheritnum { db.orderedlist.inheritnum.enumeration } db.orderedlist.numeration.enumeration = "arabic" | "upperalpha" | "loweralpha" | "upperroman" | "lowerroman" db.orderedlist.numeration.attribute = 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.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 = attribute override { text } db.listitem.attlist = db.listitem.role.attribute? & db.common.attributes & db.common.linking.attributes & db.listitem.override.attribute? db.listitem = ## A wrapper for the elements of a list item element listitem { db.listitem.attlist, 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 [ name = "Cardinality of segments and titles" "\x{a}" ~ " " s:rule [ context = "db:seglistitem" "\x{a}" ~ " " 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" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 = "horiz" | "vert" | "inline" db.simplelist.type.attribute = attribute type { db.simplelist.type.enumeration } db.simplelist.columns.attribute = 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 = 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 = attribute label { text } db.example.width.attribute = attribute width { text } db.example.attlist = db.example.role.attribute? & db.common.attributes & db.common.linking.attributes & db.example.label.attribute? & db.floatstyle.attribute? & db.example.width.attribute? db.example.info = db._info.title.onlyreq db.example = ## A formal example, with a title [ s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:example" "\x{a}" ~ " " s:assert [ test = "not(.//db:example)" "example must not occur in the descendants of example" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:example" "\x{a}" ~ " " s:assert [ test = "not(.//db:figure)" "figure must not occur in the descendants of example" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:example" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of example" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:example" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of example" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:example" "\x{a}" ~ " " s:assert [ test = "not(.//db:caution)" "caution must not occur in the descendants of example" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:example" "\x{a}" ~ " " s:assert [ test = "not(.//db:important)" "important must not occur in the descendants of example" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:example" "\x{a}" ~ " " s:assert [ test = "not(.//db:note)" "note must not occur in the descendants of example" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:example" "\x{a}" ~ " " s:assert [ test = "not(.//db:tip)" "tip must not occur in the descendants of example" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:example" "\x{a}" ~ " " s:assert [ test = "not(.//db:warning)" "warning must not occur in the descendants of example" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 = attribute width { text } db.informalexample.attlist = db.informalexample.role.attribute? & db.common.attributes & db.common.linking.attributes & db.floatstyle.attribute? & db.informalexample.width.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.programlisting.role.attribute = attribute role { text } db.programlisting.width.attribute = attribute width { text } 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 } } div { db.literallayout.role.attribute = attribute role { text } db.literallayout.class.enumeration = "monospaced" | "normal" db.literallayout.class.attribute = 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 = ## Specifies the width (in characters) of the longest line (formatters may use this value to determine scaling or rotation). attribute width { text } 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 = attribute label { text } db.figure.attlist = db.figure.role.attribute? & db.common.attributes & db.common.linking.attributes & db.figure.label.attribute? & db.pgwide.attribute? & db.floatstyle.attribute? db.figure.info = db._info.title.onlyreq db.figure = ## A formal figure, generally an illustration, with a title [ s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:figure" "\x{a}" ~ " " s:assert [ test = "not(.//db:example)" "example must not occur in the descendants of figure" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:figure" "\x{a}" ~ " " s:assert [ test = "not(.//db:figure)" "figure must not occur in the descendants of figure" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:figure" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of figure" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:figure" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of figure" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:figure" "\x{a}" ~ " " s:assert [ test = "not(.//db:caution)" "caution must not occur in the descendants of figure" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:figure" "\x{a}" ~ " " s:assert [ test = "not(.//db:important)" "important must not occur in the descendants of figure" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:figure" "\x{a}" ~ " " s:assert [ test = "not(.//db:note)" "note must not occur in the descendants of figure" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:figure" "\x{a}" ~ " " s:assert [ test = "not(.//db:tip)" "tip must not occur in the descendants of figure" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:figure" "\x{a}" ~ " " s:assert [ test = "not(.//db:warning)" "warning must not occur in the descendants of figure" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 = attribute label { text } db.informalfigure.attlist = db.informalfigure.role.attribute? & db.common.attributes & db.common.linking.attributes & db.informalfigure.label.attribute? & db.pgwide.attribute? & db.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._any.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 = attribute align { db.videodata.align.enumeration } db.videodata.valign.enumeration = db.valign.enumeration db.videodata.valign.attribute = attribute valign { db.videodata.valign.enumeration } db.videodata.width.attribute = attribute width { text } db.videodata.contentwidth.attribute = attribute contentwidth { text } db.videodata.scalefit.enumeration = "0" | "1" db.videodata.scalefit.attribute = attribute scalefit { db.videodata.scalefit.enumeration } db.videodata.scale.attribute = attribute scale { text } db.videodata.depth.attribute = attribute depth { text } db.videodata.contentdepth.attribute = attribute contentdepth { text } 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.info = db._info.title.forbidden db.videodata = ## Pointer to external video data element videodata { db.videodata.attlist, db.videodata.info } } div { db.audiodata.role.attribute = attribute role { text } db.audiodata.attlist = db.audiodata.role.attribute? & db.common.attributes & db.common.data.attributes db.audiodata.info = db._info.title.forbidden db.audiodata = ## Pointer to external audio data element audiodata { db.audiodata.attlist, db.audiodata.info } } div { db.imagedata.role.attribute = attribute role { text } db.imagedata.align.enumeration = db.halign.enumeration db.imagedata.align.attribute = attribute align { db.imagedata.align.enumeration } db.imagedata.valign.enumeration = db.valign.enumeration db.imagedata.valign.attribute = attribute valign { db.imagedata.valign.enumeration } db.imagedata.width.attribute = attribute width { text } db.imagedata.contentwidth.attribute = attribute contentwidth { text } db.imagedata.scalefit.enumeration = "0" | "1" db.imagedata.scalefit.attribute = attribute scalefit { db.imagedata.scalefit.enumeration } db.imagedata.scale.attribute = attribute scale { text } db.imagedata.depth.attribute = attribute depth { text } db.imagedata.contentdepth.attribute = attribute contentdepth { text } 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 } } div { db.textdata.role.attribute = attribute role { text } db.textdata.encoding.attribute = 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.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 [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:example)" "example must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:figure)" "figure must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:caution)" "caution must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:important)" "important must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:note)" "note must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:tip)" "tip must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:warning)" "warning must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:sidebar)" "sidebar must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:task)" "task must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element caption { db.caption.attlist, db.caption.info, db.all.blocks+ } } div { db.synopsis.role.attribute = attribute role { text } db.synopsis.label.attribute = attribute label { text } 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.cmdsynopsis.role.attribute = attribute role { text } db.cmdsynopsis.sepchar.attribute = attribute sepchar { text } db.cmdsynopsis.cmdlength.attribute = attribute cmdlength { text } db.cmdsynopsis.label.attribute = attribute label { 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.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 = "norepeat" | "repeat" db.rep.attribute = attribute rep { db.rep.enumeration } db.choice.enumeration = "opt" | "plain" | "req" db.choice.attribute = attribute choice { db.choice.enumeration } div { db.arg.role.attribute = attribute role { text } db.arg.attlist = db.arg.role.attribute? & db.common.attributes & db.common.linking.attributes & db.rep.attribute? & db.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.attlist = db.group.role.attribute? & db.common.attributes & db.common.linking.attributes & db.rep.attribute? & db.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 [ name = "Synopsis fragment type constraint" "\x{a}" ~ " " s:rule [ context = "db:synopfragmentref" "\x{a}" ~ " " s:assert [ test = "local-name(//*[@id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" "@linkend on synopfragmentref must point to a synopfragment." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element synopfragmentref { db.synopfragmentref.attlist, text } } div { db.funcsynopsis.role.attribute = attribute role { text } db.funcsynopsis.attlist = db.funcsynopsis.role.attribute? & db.common.attributes & db.common.linking.attributes & db.language.attribute? db.funcsynopsis.info = db._info.title.forbidden 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.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.function)* } } 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.paramdef.role.attribute = attribute role { text } db.paramdef.attlist = db.paramdef.role.attribute? & db.common.attributes & db.common.linking.attributes & db.choice.attribute? db.paramdef = ## Information about a function parameter in a programming language element paramdef { db.paramdef.attlist, (db._text | db.initializer | db.type | 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.role.attribute = attribute role { text } db.classsynopsis.class.enumeration = "class" | "interface" db.classsynopsis.class.attribute = attribute class { db.classsynopsis.class.enumeration } db.classsynopsis.attlist = db.classsynopsis.role.attribute? & db.common.attributes & db.common.linking.attributes & db.language.attribute? & db.classsynopsis.class.attribute? db.classsynopsis = ## The syntax summary for a class definition element classsynopsis { db.classsynopsis.attlist, db.oo.inlines+, (db.classsynopsisinfo | db.methodsynopsis | db.constructorsynopsis | db.destructorsynopsis | db.fieldsynopsis)* } } 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 } } 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 } } 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 } } div { db.modifier.role.attribute = attribute role { text } db.modifier.attlist = 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.role.attribute = attribute role { text } db.fieldsynopsis.attlist = db.fieldsynopsis.role.attribute? & db.common.attributes & db.common.linking.attributes & db.language.attribute? db.fieldsynopsis = ## The name of a field in a class definition element fieldsynopsis { db.fieldsynopsis.attlist, db.modifier*, db.type?, db.varname, db.initializer? } } div { db.initializer.role.attribute = attribute role { text } db.initializer.attlist = db.initializer.role.attribute? & db.common.attributes & db.common.linking.attributes db.initializer = ## The initializer for a FieldSynopsis element initializer { db.initializer.attlist, db._text } } div { db.constructorsynopsis.role.attribute = attribute role { text } db.constructorsynopsis.attlist = db.constructorsynopsis.role.attribute? & db.common.attributes & db.common.linking.attributes & db.language.attribute? db.constructorsynopsis = ## A syntax summary for a constructor element constructorsynopsis { db.constructorsynopsis.attlist, db.modifier*, db.methodname?, (db.methodparam+ | db.void?), db.exceptionname* } } div { db.destructorsynopsis.role.attribute = attribute role { text } db.destructorsynopsis.attlist = db.destructorsynopsis.role.attribute? & db.common.attributes & db.common.linking.attributes & db.language.attribute? db.destructorsynopsis = ## A syntax summary for a destructor element destructorsynopsis { db.destructorsynopsis.attlist, db.modifier*, db.methodname?, (db.methodparam+ | db.void?), db.exceptionname* } } div { db.methodsynopsis.role.attribute = attribute role { text } db.methodsynopsis.attlist = db.methodsynopsis.role.attribute? & db.common.attributes & db.common.linking.attributes & db.language.attribute? db.methodsynopsis = ## A syntax summary for a method element methodsynopsis { db.methodsynopsis.attlist, db.modifier*, (db.type | db.void)?, db.methodname, (db.methodparam+ | db.void), db.exceptionname*, db.modifier* } } 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.attlist = db.methodparam.role.attribute? & db.common.attributes & db.common.linking.attributes & db.rep.attribute? & db.choice.attribute? db.methodparam = ## Parameters to a method element methodparam { db.methodparam.attlist, db.modifier*, db.type?, ((db.parameter, db.initializer?) | db.funcparams), db.modifier* } } 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.pob | db.street | db.city | db.state | db.postcode | db.country | db.phone | db.fax | db.email | 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.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 = "consortium" | "corporation" | "informal" | "nonprofit" db.orgname.class-enum.attribute = attribute class { db.orgname.class.enumeration } db.orgname.class-other.attributes = attribute class { "other" } & 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 other than a corporation 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.person.author.contentmodel = db.personname, (db.personblurb | db.affiliation | db.email | db.address | db.contrib)* db.org.author.contentmodel = db.orgname, (db.orgdiv | db.affiliation | db.email | 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 collabarators 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.personname | 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.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.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-enum.attribute = attribute type { "hasformat" | "haspart" | "hasversion" | "isformatof" | "ispartof" | "isreferencedby" | "isreplacedby" | "isrequiredby" | "isversionof" | "othertype" | "references" | "replaces" | "requires" }? db.bibliorelation.type-other.attributes = attribute type { "othertype" }?, 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 = "dcmipoint" | "iso3166" | "dcmibox" | "tgn" db.bibliocoverage.spatial-enum.attribute = attribute spatial { db.bibliocoverage.spacial.enumeration }? db.bibliocoverage.spatial-other.attributes = attribute spatial { "otherspatial" }?, attribute otherspatial { xsd:NMTOKEN } db.bibliocoverage.spatial.attribute = db.bibliocoverage.spatial-enum.attribute | db.bibliocoverage.spatial-other.attributes db.bibliocoverage.temporal.enumeration = "dcmiperiod" | "w3c-dtf" db.bibliocoverage.temporal-enum.attribute = attribute temporal { db.bibliocoverage.temporal.enumeration }? db.bibliocoverage.temporal-other.attributes = attribute temporal { "othertemporal" }?, 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.attribute = attribute class { "copyeditor" | "graphicdesigner" | "other" | "productioneditor" | "technicaleditor" | "translator" }? 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._text } } 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 = ## The first name of a person element firstname { db.firstname.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 = ## A 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 persons 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.productname.role.attribute = attribute role { text } db.productname.class.enumeration = "copyright" | "registered" | "service" | "trade" db.productname.class.attribute = 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.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.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.application.class.enumeration = "hardware" | "software" db.application.class.attribute = 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.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.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.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 } } db.computeroutput.inlines = (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines | db.markup.inlines) | db.co | db.co 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.database.class.attribute = attribute class { "altkey" | "constraint" | "datatype" | "field" | "foreignkey" | "group" | "index" | "key1" | "key2" | "name" | "primarykey" | "procedure" | "record" | "rule" | "secondarykey" | "table" | "user" | "view" } 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.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.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.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 } } div { db.filename.path.attribute = attribute path { text } db.filename.class.attribute = attribute class { "devicefile" | "directory" | "extension" | "headerfile" | "libraryfile" | "partition" | "symlink" } 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.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.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.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 } } div { db.keycap.function-enum.attribute = attribute function { "alt" | "backspace" | "command" | "control" | "delete" | "down" | "end" | "enter" | "escape" | "home" | "insert" | "left" | "meta" | "option" | "pagedown" | "pageup" | "right" | "shift" | "space" | "tab" | "up" }? db.keycap.function-other.attributes = attribute function { "other" }?, 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 } } div { db.keycombo.action.enumeration = "click" | "double-click" | "press" | "seq" | "simul" db.keycombo.action-enum.attribute = attribute action { db.keycombo.action.enumeration }? db.keycombo.action-other.attributes = attribute action { "other" }?, 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.keycap | db.keycombo | db.keysym | db.mousebutton)+ } } 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.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.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 = 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._text } } div { constant.class.attribute = attribute class { "limit" } db.constant.role.attribute = attribute role { text } db.constant.attlist = db.constant.role.attribute? & db.common.attributes & db.common.linking.attributes & constant.class.attribute? db.constant = ## A programming or system constant element constant { db.constant.attlist, db._text } } 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.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.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.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.keycap | db.keycombo | db.keysym | db.mousebutton)+ } } 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 } } 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 } } 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.parameter.class.enumeration = "command" | "function" | "option" db.parameter.class.attribute = 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.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* } } db.replaceable.inlines = db._text | db.co div { db.replaceable.class.enumeration = "command" | "function" | "option" | "parameter" db.replaceable.class.attribute = 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.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.tag.role.attribute = attribute role { text } db.tag.class.enumeration = "attribute" | "attvalue" | "element" | "emptytag" | "endtag" | "genentity" | "numcharref" | "paramentity" | "pi" | "sgmlcomment" | "starttag" | "xmlpi" db.tag.class.attribute = attribute class { db.tag.class.enumeration } db.tag.namespace.attribute = 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 } } div { db.symbol.class.attribute = attribute class { "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 } } db.systemitem.inlines = db._text | db.co div { db.systemitem.class.attribute = attribute class { "daemon" | "domainname" | "etheraddress" | "event" | "eventhandler" | "filesystem" | "fqdomainname" | "groupname" | "ipaddress" | "library" | "macro" | "netmask" | "newsgroup" | "osname" | "process" | "protocol" | "resource" | "server" | "service" | "systemname" | "username" } 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.uri.type.attribute = 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.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.type.role.attribute = attribute role { text } db.type.attlist = db.type.role.attribute? & db.common.attributes & db.common.linking.attributes db.type = ## The classification of a value element type { db.type.attlist, db._text } } db.userinput.inlines = (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines | db.markup.inlines) | db.co 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.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.attribute = attribute pubwork { "article" | "bbs" | "book" | "cdrom" | "chapter" | "dvd" | "emailmessage" | "gopher" | "journal" | "manuscript" | "newsposting" | "part" | "refentry" | "section" | "series" | "set" | "webpage" | "wiki" } 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 | db._emphasis)* } } 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.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.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 H2O, 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^2, the mathematical notation for x multiplied by itself) element superscript { db.superscript.attlist, db._text } } div { db.trademark.class.enumeration = "copyright" | "registered" | "service" | "trade" db.trademark.class.attribute = 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 = attribute label { text } 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 [ name = "Footnote reference type constraint" "\x{a}" ~ " " s:rule [ context = "db:footnoteref" "\x{a}" ~ " " s:assert [ test = "local-name(//*[@id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" "@linkend on footnoteref must point to a footnote." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element footnoteref { db.footnoteref.attlist, empty } } div { db.xref.role.attribute = attribute role { text } db.xref.xrefstyle.attribute = attribute xrefstyle { text } db.xref.endterm.attribute = attribute endterm { xsd:IDREF } 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 = attribute xrefstyle { text } db.link.endterm.attribute = attribute endterm { xsd:IDREF } 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 = attribute xrefstyle { xsd:IDREF } db.olink.localinfo.attribute = attribute localinfo { text } db.olink.targetdoc.attribute = attribute targetdoc { xsd:anyURI } db.olink.targetptr.attribute = attribute targetptr { text } db.olink.type.attribute = 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)* } } db.annotations.attribute = attribute annotations { text } div { db.annotation.role.attribute = attribute role { text } db.annotation.annotates.attribute = 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 [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:annotation" "\x{a}" ~ " " s:assert [ test = "not(.//db:annotation)" "annotation must not occur in the descendants of annotation" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element annotation { db.annotation.attlist, db.annotation.info, db.all.blocks+ } } div { db.extendedlink.role.attribute = attribute role { text } db.extendedlink.attlist = db.extendedlink.role.attribute? & db.common.attributes & [ a:defaultValue = "extended" ] attribute xlink:type { "extended" }? & attribute xlink:role { xsd:anyURI }? & attribute xlink:title { text }? db.extendedlink = ## An XLink extended link element extendedlink { db.extendedlink.attlist, (db.locator | db.arc)+ } } div { db.locator.role.attribute = attribute role { text } db.locator.attlist = db.locator.role.attribute? & db.common.attributes & [ a:defaultValue = "locator" ] attribute xlink:type { "locator" }? & attribute xlink:href { text } & attribute xlink:role { xsd:anyURI }? & attribute xlink:title { text }? & attribute xlink:label { xsd:NMTOKEN }? 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 & [ a:defaultValue = "arc" ] attribute xlink:type { "arc" }? & attribute xlink:arcrole { xsd:anyURI }? & attribute xlink:title { text }? & attribute xlink:show { "new" | "replace" | "embed" | "other" }? & attribute xlink:actuate { "onLoad" | "onRequest" | "other" | "none" }? & attribute xlink:from { xsd:NMTOKEN }? & attribute xlink:to { xsd:NMTOKEN }? db.arc = ## An XLink arc in an extendedlink element arc { db.arc.attlist, empty } } db.status.attribute = ## Identifies the editorial or publication status of the element on which it occurs attribute status { text } db.label.attribute = ## Specifies an identifying string for presentation purposes attribute label { 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.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 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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:set" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element set { db.set.attlist, db.set.info, db.toc.components?, db.set.components+, db.setindex.components? } } 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.title.req db.book = ## A book [ s:pattern [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:book" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element book { db.book.attlist, db.book.info, (db.navigation.components | db.components | db.divisions)+ } } 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 = ## A wrapper for the dedication section of a book [ s:pattern [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:dedication" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element dedication { db.dedication.attlist, db.dedication.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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:colophon" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element colophon { db.colophon.attlist, db.colophon.info, db.all.blocks+ } } 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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:appendix" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element appendix { db.appendix.attlist, db.appendix.info, db.component.contentmodel } } 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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:chapter" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element chapter { db.chapter.attlist, db.chapter.info, db.component.contentmodel } } db.part.components = (db.navigation.components | db.components) | (db.refentry | db.reference) 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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:part" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element part { db.part.attlist, db.part.info, db.partintro?, db.part.components+ } } 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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:preface" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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.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.info = db._info.title.req db.section = ## A recursive section [ s:pattern [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:section" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element section { db.section.attlist, db.section.info, 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+ } } div { db.ackno.role.attribute = attribute role { text } db.ackno.attlist = db.ackno.role.attribute? & db.common.attributes & db.common.linking.attributes db.ackno = ## Acknowledgements in an Article element ackno { db.ackno.attlist, db.para.blocks+ } } db.article.components = db.toplevel.sections 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.attribute = ## Class identifies the type of article. attribute class { db.article.class.enumeration } 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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:article" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element article { db.article.attlist, db.article.info, db.navigation.components*, ((db.all.blocks+, db.article.components?) | db.article.components), (db.appendix | db.navigation.components | db.ackno | db.colophon)* } } db.sect1.sections = (db.sect2+, db.simplesect*) | db.simplesect+ div { db.sect1.status.attribute = db.status.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.info = db._info.title.req db.sect1 = ## A top-level section of document [ s:pattern [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:sect1" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element sect1 { db.sect1.attlist, db.sect1.info, ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections), db.navigation.components* } } db.sect2.sections = (db.sect3+, db.simplesect*) | db.simplesect+ div { db.sect2.status.attribute = db.status.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.info = db._info.title.req db.sect2 = ## A subsection within a Sect1 [ s:pattern [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:sect2" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element sect2 { db.sect2.attlist, db.sect2.info, ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections), db.navigation.components* } } db.sect3.sections = (db.sect4+, db.simplesect*) | db.simplesect+ div { db.sect3.status.attribute = db.status.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.info = db._info.title.req db.sect3 = ## A subsection within a Sect2 [ s:pattern [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:sect3" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element sect3 { db.sect3.attlist, db.sect3.info, ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections), db.navigation.components* } } db.sect4.sections = (db.sect5+, db.simplesect*) | db.simplesect+ div { db.sect4.status.attribute = db.status.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.info = db._info.title.req db.sect4 = ## A subsection within a Sect3 [ s:pattern [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:sect4" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element sect4 { db.sect4.attlist, db.sect4.info, ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections), db.navigation.components* } } db.sect5.sections = db.simplesect+ div { db.sect5.status.attribute = db.status.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.info = db._info.title.req db.sect5 = ## A subsection within a Sect4 [ s:pattern [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:sect5" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element sect5 { db.sect5.attlist, db.sect5.info, ((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+ div { db.reference.role.attribute = attribute role { text } db.reference.attlist = db.reference.role.attribute? & db.common.attributes & db.common.linking.attributes & db.status.attribute? & db.label.attribute? db.reference.info = db._info.title.req db.reference = ## A collection of reference entries [ s:pattern [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:reference" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element reference { db.reference.attlist, db.reference.info, db.partintro?, db.refentry+ } } div { db.refentry.role.attribute = attribute role { text } db.refentry.attlist = db.refentry.role.attribute? & db.common.attributes & db.common.linking.attributes & db.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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:refentry" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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* } } div { db.refmiscinfo.role.attribute = attribute role { text } db.refmiscinfo.class.attribute = attribute class { 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.role.attribute = attribute role { text } db.refsection.attlist = db.refsection.role.attribute? & db.common.attributes & db.common.linking.attributes & db.status.attribute? & db.label.attribute? db.refsection.info = db._info.title.req db.refsection = ## A recursive section in a refentry [ s:pattern [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:refsection" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:refsect1" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:refsect2" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:refsect3" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element refsect3 { db.refsect3.attlist, db.refsect3.info, db.all.blocks+ } } db.glossary.inlines = db.firstterm | db.glossterm db.baseform.attribute = 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 = 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 = 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 = 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 [ name = "Glosssary 'see' type constraint" "\x{a}" ~ " " s:rule [ context = "db:glosssee[@otherterm]" "\x{a}" ~ " " s:assert [ test = "local-name(//*[@id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" "@otherterm on glosssee must point to a glossentry." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element glosssee { db.glosssee.attlist, db.all.inlines* } } div { db.glossseealso.role.attribute = attribute role { text } db.glossseealso.otherterm.attribute = 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 [ name = "Glossary 'seealso' type constraint" "\x{a}" ~ " " s:rule [ context = "db:glossseealso[@otherterm]" "\x{a}" ~ " " s:assert [ test = "local-name(//*[@id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" "@otherterm on glossseealso must point to a glossentry." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 [ name = "Glossary 'firstterm' type constraint" "\x{a}" ~ " " s:rule [ context = "db:firstterm[@linkend]" "\x{a}" ~ " " s:assert [ test = "local-name(//*[@id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" "@linkend on firstterm must point to a glossentry." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element firstterm { db.firstterm.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 [ name = "Glossary 'glossterm' type constraint" "\x{a}" ~ " " s:rule [ context = "db:glossterm[@linkend]" "\x{a}" ~ " " s:assert [ test = "local-name(//*[@id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" "@linkend on glossterm must point to a glossentry." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element glossterm { db.glossterm.attlist, db.all.inlines* } } 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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:glossary" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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.common.attributes & db.common.linking.attributes & db.baseform.attribute db.termdef = ## An inline definition of a term [ s:pattern [ name = "Glossary term definition constraint" "\x{a}" ~ " " s:rule [ context = "db:termdef" "\x{a}" ~ " " s:assert [ test = "count(db:glossterm) != 1" "A termdef must contain a glossterm" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element termdef { db.termdef.attlist, db.all.inlines* } } db.relation.attribute = attribute relation { text } div { db.biblioentry.role.attribute = attribute role { text } db.biblioentry.attlist = db.biblioentry.role.attribute? & db.common.attributes & db.common.linking.attributes db.biblioentry = ## An entry in a Bibliography element biblioentry { db.biblioentry.attlist, db.bibliographic.elements+ } } div { db.bibliomixed.role.attribute = attribute role { text } db.bibliomixed.attlist = db.bibliomixed.role.attribute? & db.common.attributes & db.common.linking.attributes db.bibliomixed = ## An entry in a Bibliography element bibliomixed { db.bibliomixed.attlist, (text | db.bibliographic.elements)* } } div { db.biblioset.relation.attrib = 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.attrib? db.biblioset = ## A raw container for related bibliographic information element biblioset { db.biblioset.attlist, db.bibliographic.elements+ } } div { db.bibliomset.relation.attrib = 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.attrib? db.bibliomset = ## A cooked container for related bibliographic information element bibliomset { db.bibliomset.attlist, (db._text | 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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:bibliography" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 = attribute xrefstyle { text } db.biblioref.endterm.attribute = attribute endterm { xsd:IDREF } db.biblioref.units.attribute = attribute units { xsd:token } db.biblioref.begin.attribute = attribute begin { xsd:token } db.biblioref.end.attribute = 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.attribute = attribute significance { "normal" | "preferred" } db.zone.attribute = attribute zone { xsd:IDREFS } db.pagenum.attribute = attribute pagenum { text } db.scope.attribute = attribute scope { "all" | "global" | "local" } db.sortas.attribute = attribute sortas { text } db.type.attribute = 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 = attribute class { "singular" } db.indexterm.singular.attlist = db.indexterm.singular.role.attribute? & db.common.attributes & db.common.linking.attributes & db.significance.attribute? & db.zone.attribute? & db.pagenum.attribute? & db.scope.attribute? & db.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 = attribute class { "startofrange" } db.indexterm.startofrange.attlist = db.indexterm.startofrange.role.attribute? & db.common.attributes & db.common.linking.attributes & db.significance.attribute? & db.zone.attribute? & db.pagenum.attribute? & db.scope.attribute? & db.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 = attribute class { "endofrange" } db.indexterm.endofrange.startref.attribute = 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 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.attlist = db.see.role.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.attlist = db.seealso.role.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.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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:index" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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.setindex.info = db._info db.setindex = ## An index to a set of books [ s:pattern [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:setindex" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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* } } 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 [ name = "Root must have version" "\x{a}" ~ " " s:rule [ context = "/db:toc" "\x{a}" ~ " " s:assert [ test = "@version" "The root element must have a version attribute." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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 = attribute pagenum { text } 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 = attribute pagenum { text } 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.only 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 = "calspair" | "linecolumn" | "linecolumnpair" | "linerange" db.area.units-enum.attribute = attribute units { db.area.units.enumeration }? db.area.units-other.attributes = attribute units { "other" }?, 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 = attribute arearefs { xsd:IDREFS } db.callout.attlist = db.callout.role.attribute? & db.common.attributes & db.callout.arearefs.attribute db.callout = ## A called out ## description of a marked Area 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 = attribute linkends { xsd:IDREFS } db.area.label.attribute = attribute label { text } db.area.coords.attribute = attribute coords { text } db.area.attlist = db.area.role.attribute? & db.common.idreq.attributes & db.area.units.attribute & (db.area.linkends.attribute | db.href.attribute)? & 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, empty } } div { db.areaset.role.attribute = attribute role { text } db.areaset.label.attribute = attribute label { text } db.areaset.attlist = db.areaset.role.attribute? & db.common.idreq.attributes & db.area.units.attribute & db.areaset.label.attribute? db.areaset = ## A set of related areas in a graphic or code example element areaset { db.areaset.attlist, db.area+ } } 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 = attribute linkends { xsd:IDREFS } db.co.label.attribute = attribute label { text } 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 = attribute label { text } 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 = attribute def { text } 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 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 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 = attribute char { text } db.charoff.attribute = attribute charoff { text } db.frame.attribute = ## Specifies how the table is to be framed attribute frame { "all" | "bottom" | "none" | "sides" | "top" | "topbot" } db.colsep.attribute = ## Specifies the presence or absence of the column separator attribute colsep { text } db.rowsep.attribute = ## Specifies the presence or absence of the row separator attribute rowsep { text } db.orient.attribute = ## Specifies the orientation of the table attribute orient { "land" | "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 { "firstcol" | "norowheader" } db.align.attribute = attribute align { "center" | "char" | "justify" | "left" | "right" } db.valign.attribute = attribute valign { "bottom" | "middle" | "top" } db.specify-col-by-colname.attributes = attribute colname { text } db.specify-col-by-namest.attributes = attribute namest { text } db.specify-span-by-spanspec.attributes = attribute spanname { text } db.specify-span-directly.attributes = attribute namest { text } & 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 = attribute colname { text } db.spanname.attribute = attribute spanname { text } div { db.tgroup.role.attribute = attribute role { text } db.tgroup.tgroupstyle.attribute = attribute tgroupstyle { text } db.tgroup.cols.attribute = attribute cols { xsd:integer } 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 = attribute colnum { xsd:integer } db.colspec.colwidth.attribute = 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.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 = attribute namest { text } db.spanspec.nameend.attribute = 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 = attribute morerows { xsd:integer } db.entry.rotate.attribute = attribute rotate { text } 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 = ## A cell in a table element entry { db.entry.attlist, (db.all.inlines* | db.all.blocks*) } } div { db.entrytbl.role.attribute = attribute role { text } db.entrytbl.tgroupstyle.attribute = attribute tgroupstyle { text } db.entrytbl.cols.attribute = attribute cols { xsd:integer } 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.attlist = db.cals.table.role.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 { "0" | "1" }? & ## Indicates if the table should appear in a List of Tables attribute tocentry { "0" | "1" }? & db.rowheader.attribute? db.cals.table.info = db._info.title.onlyreq db.cals.table = ## A formal table in a document [ s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:example)" "example must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:figure)" "figure must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:caution)" "caution must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:important)" "important must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:note)" "note must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:tip)" "tip must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:warning)" "warning must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:informaltable)" "informaltable must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] 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.attlist = db.cals.informaltable.role.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 = attribute class { text }? & attribute style { text }? & attribute title { text }? db.html.i18n = attribute lang { text }? db.html.events = attribute onclick { text }? & attribute ondblclick { text }? & attribute onmousedown { text }? & attribute onmouseup { text }? & attribute onmouseover { text }? & attribute onmousemove { text }? & attribute onmouseout { text }? & attribute onkeypress { text }? & attribute onkeydown { text }? & attribute onkeyup { text }? db.html.attrs = db.common.attributes & db.html.coreattrs & db.html.i18n & db.html.events db.html.cellhalign = attribute align { "left" | "center" | "right" | "justify" | "char" }? & attribute char { text }? & attribute charoff { text }? db.html.cellvalign = attribute valign { "top" | "middle" | "bottom" | "baseline" }? db.html.table.model = db.html.caption, (db.html.col* | db.html.colgroup*), db.html.thead?, db.html.tfoot?, (db.html.tbody+ | db.html.tr+) db.html.informaltable.model = (db.html.col* | db.html.colgroup*), db.html.thead?, db.html.tfoot?, (db.html.tbody+ | db.html.tr+) div { db.html.table.attlist = db.html.attrs & db.orient.attribute? & db.pgwide.attribute? & db.tabstyle.attribute? & db.floatstyle.attribute? & attribute summary { text }? & attribute width { text }? & attribute border { text }? & attribute frame { "void" | "above" | "below" | "hsides" | "lhs" | "rhs" | "vsides" | "box" | "border" }? & attribute rules { "none" | "groups" | "rows" | "cols" | "all" }? & attribute cellspacing { text }? & attribute cellpadding { text }? db.html.table = ## A formal table in a document [ s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:example)" "example must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:figure)" "figure must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:caution)" "caution must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:important)" "important must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:note)" "note must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:tip)" "tip must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:warning)" "warning must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:table" "\x{a}" ~ " " s:assert [ test = "not(.//db:informaltable)" "informaltable must not occur in the descendants of table" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element table { db.html.table.attlist, db.html.table.model } } div { db.html.informaltable.attlist = db.html.attrs & attribute summary { text }? & attribute width { text }? & attribute border { text }? & attribute frame { "void" | "above" | "below" | "hsides" | "lhs" | "rhs" | "vsides" | "box" | "border" }? & attribute rules { "none" | "groups" | "rows" | "cols" | "all" }? & attribute cellspacing { text }? & attribute cellpadding { text }? db.html.informaltable = ## A 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 = ## A caption [ s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:example)" "example must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:figure)" "figure must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:table)" "table must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:caution)" "caution must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:important)" "important must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:note)" "note must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:tip)" "tip must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:warning)" "warning must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:sidebar)" "sidebar must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] s:pattern [ name = "Element exclusion" "\x{a}" ~ " " s:rule [ context = "db:caption" "\x{a}" ~ " " s:assert [ test = "not(.//db:task)" "task must not occur in the descendants of caption" ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] ] element caption { db.html.caption.attlist, text } } div { db.html.col.attlist = db.html.attrs & attribute span { text }? & 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 & attribute span { text }? & 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 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 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 a table or informal 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 & attribute abbr { text }? & attribute axis { text }? & attribute headers { text }? & attribute scope { text }? & attribute rowspan { text }? & attribute colspan { text }? & 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 & attribute abbr { text }? & attribute axis { text }? & attribute headers { text }? & attribute scope { text }? & attribute rowspan { text }? & attribute colspan { text }? & 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.audience.attribute = attribute audience { text } db.simplemsgentry.origin.attribute = attribute origin { text } db.simplemsgentry.level.attribute = attribute level { text } db.simplemsgentry.attlist = db.simplemsgentry.role.attribute? & db.common.attributes & db.common.linking.attributes & db.simplemsgentry.audience.attribute & db.simplemsgentry.origin.attribute & db.simplemsgentry.level.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 = "none" | "number" | "qanda" db.qandaset.defaultlabel.attribute = 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.forbidden 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.math.blocks = db.equation | db.informalequation db.equation.content = db.alt? | (db.mediaobject+ | db.mathphrase+) | db._any.mml div { db.equation.role.attribute = attribute role { text } db.equation.label.attribute = attribute label { text } db.equation.attlist = db.equation.role.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 element equation { db.equation.attlist, db.equation.info, db.equation.content, db.caption? } } div { db.informalequation.role.attribute = attribute role { text } db.informalequation.attlist = db.informalequation.role.attribute? & db.common.attributes & db.common.linking.attributes 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.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.equation.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, an expression 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)* } } div { db._any.mml = ## Any element from the MathML namespace element mml:* { db._any } } div { db._any.svg = ## Any element from the SVG namespace element svg:* { db._any } }