patrick@0: namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" patrick@0: namespace ctrl = "http://nwalsh.com/xmlns/schema-control/" patrick@0: default namespace db = "http://docbook.org/ns/docbook" patrick@0: namespace html = "http://www.w3.org/1999/xhtml" patrick@0: namespace mml = "http://www.w3.org/1998/Math/MathML" patrick@0: namespace rng = "http://relaxng.org/ns/structure/1.0" patrick@0: namespace s = "http://www.ascc.net/xml/schematron" patrick@0: namespace svg = "http://www.w3.org/2000/svg" patrick@0: namespace xlink = "http://www.w3.org/1999/xlink" patrick@0: patrick@0: # DocBook V5.0 patrick@0: patrick@0: # See http://docbook.org/ns/docbook patrick@0: patrick@0: # This file is part of DocBook V5.0 patrick@0: # patrick@0: # Copyright 1992-2008 HaL Computer Systems, Inc., patrick@0: # O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software patrick@0: # Corporation, Norman Walsh, Sun Microsystems, Inc., and the patrick@0: # Organization for the Advancement of Structured Information patrick@0: # Standards (OASIS). patrick@0: # patrick@0: # Release: $Id$ patrick@0: # patrick@0: # Permission to use, copy, modify and distribute the DocBook schema patrick@0: # and its accompanying documentation for any purpose and without fee patrick@0: # is hereby granted in perpetuity, provided that the above copyright patrick@0: # notice and this paragraph appear in all copies. The copyright patrick@0: # holders make no representation about the suitability of the schema patrick@0: # for any purpose. It is provided "as is" without expressed or implied patrick@0: # warranty. patrick@0: # patrick@0: # If you modify the DocBook schema in any way, label your schema as a patrick@0: # variant of DocBook. See the reference documentation patrick@0: # (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook) patrick@0: # for more information. patrick@0: # patrick@0: # Please direct all questions, bug reports, or suggestions for changes patrick@0: # to the docbook@lists.oasis-open.org mailing list. For more patrick@0: # information, see http://www.oasis-open.org/docbook/. patrick@0: # patrick@0: # ====================================================================== patrick@0: start = patrick@0: (db.set patrick@0: | db.book patrick@0: | db.divisions patrick@0: | db.components patrick@0: | db.navigation.components patrick@0: | db.section patrick@0: | db.para) patrick@0: | (db.abstract patrick@0: | db.mediaobject.content patrick@0: | db.audiodata patrick@0: | db.imagedata patrick@0: | db.textdata patrick@0: | db.videodata patrick@0: | db.caption patrick@0: | db.publishing.blocks patrick@0: | db.formal.blocks patrick@0: | db.informal.blocks patrick@0: | db.formalpara patrick@0: | db.inlinemediaobject patrick@0: | db.list.blocks patrick@0: | db.legalnotice patrick@0: | db.verbatim.blocks patrick@0: | db.graphic.blocks patrick@0: | db.personblurb patrick@0: | db.revhistory patrick@0: | db.simpara patrick@0: | db.step patrick@0: | db.stepalternatives) patrick@0: | (db.partintro | db.simplesect) patrick@0: | db.annotation patrick@0: | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5) patrick@0: | (db.refentry | db.refsection | db.refsynopsisdiv) patrick@0: | (db.refsect1 | db.refsect2 | db.refsect3) patrick@0: | (db.glossary | db.glossdiv | db.glosslist) patrick@0: | (db.bibliodiv | db.bibliolist) patrick@0: | (db.setindex | db.index | db.indexdiv) patrick@0: | (db.toc | db.tocdiv) patrick@0: | (db.task | db.taskprerequisites | db.taskrelated | db.tasksummary) patrick@0: | (db.calloutlist patrick@0: | db.programlistingco patrick@0: | db.screenco patrick@0: | db.imageobjectco) patrick@0: | (db.productionset | db.constraintdef) patrick@0: | (db.msg patrick@0: | db.msgexplan patrick@0: | db.msgmain patrick@0: | db.msgrel patrick@0: | db.msgset patrick@0: | db.msgsub) patrick@0: | (db.qandadiv | db.qandaentry | db.qandaset) patrick@0: | (db.equation | db.informalequation) patrick@0: | db.cmdsynopsis patrick@0: | (db.synopsis.blocks | db.funcsynopsisinfo | db.classsynopsisinfo) patrick@0: | db.admonition.blocks patrick@0: | db.topic patrick@0: patrick@0: div { patrick@0: db._any.attribute = patrick@0: patrick@0: ## Any attribute, including any attribute in any namespace. patrick@0: attribute * { text } patrick@0: db._any = patrick@0: patrick@0: ## Any element from almost any namespace patrick@0: element * - (db:* | html:*) { patrick@0: (db._any.attribute | text | db._any)* patrick@0: } patrick@0: } patrick@0: patrick@0: db.arch.attribute = patrick@0: patrick@0: ## Designates the computer or chip architecture to which the element applies patrick@0: attribute arch { text } patrick@0: db.audience.attribute = patrick@0: patrick@0: ## Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. patrick@0: attribute audience { text } patrick@0: db.condition.attribute = patrick@0: patrick@0: ## provides a standard place for application-specific effectivity patrick@0: attribute condition { text } patrick@0: db.conformance.attribute = patrick@0: patrick@0: ## Indicates standards conformance characteristics of the element patrick@0: attribute conformance { text } patrick@0: db.os.attribute = patrick@0: patrick@0: ## Indicates the operating system to which the element is applicable patrick@0: attribute os { text } patrick@0: db.revision.attribute = patrick@0: patrick@0: ## Indicates the editorial revision to which the element belongs patrick@0: attribute revision { text } patrick@0: db.security.attribute = patrick@0: patrick@0: ## Indicates something about the security level associated with the element to which it applies patrick@0: attribute security { text } patrick@0: db.userlevel.attribute = patrick@0: patrick@0: ## Indicates the level of user experience for which the element applies patrick@0: attribute userlevel { text } patrick@0: db.vendor.attribute = patrick@0: patrick@0: ## Indicates the computer vendor to which the element applies. patrick@0: attribute vendor { text } patrick@0: db.wordsize.attribute = patrick@0: patrick@0: ## Indicates the word size (width in bits) of the computer architecture to which the element applies patrick@0: attribute wordsize { text } patrick@0: db.effectivity.attributes = patrick@0: db.arch.attribute? patrick@0: & db.audience.attribute? patrick@0: & db.condition.attribute? patrick@0: & db.conformance.attribute? patrick@0: & db.os.attribute? patrick@0: & db.revision.attribute? patrick@0: & db.security.attribute? patrick@0: & db.userlevel.attribute? patrick@0: & db.vendor.attribute? patrick@0: & db.wordsize.attribute? patrick@0: db.endterm.attribute = patrick@0: patrick@0: ## Points to the element whose content is to be used as the text of the link patrick@0: attribute endterm { xsd:IDREF } patrick@0: db.linkend.attribute = patrick@0: patrick@0: ## Points to an internal link target by identifying the value of its xml:id attribute patrick@0: attribute linkend { xsd:IDREF } patrick@0: db.linkends.attribute = patrick@0: patrick@0: ## Points to one or more internal link targets by identifying the value of their xml:id attributes patrick@0: attribute linkends { xsd:IDREFS } patrick@0: db.xlink.href.attribute = patrick@0: patrick@0: ## Identifies a link target with a URI patrick@0: attribute xlink:href { xsd:anyURI } patrick@0: db.xlink.type.attribute = patrick@0: patrick@0: ## Identifies the XLink link type patrick@0: attribute xlink:type { patrick@0: patrick@0: ## An XLink simple link patrick@0: "simple" patrick@0: } patrick@0: db.xlink.role.attribute = patrick@0: patrick@0: ## Identifies the XLink role of the link patrick@0: attribute xlink:role { xsd:anyURI } patrick@0: db.xlink.arcrole.attribute = patrick@0: patrick@0: ## Identifies the XLink arcrole of the link patrick@0: attribute xlink:arcrole { xsd:anyURI } patrick@0: db.xlink.title.attribute = patrick@0: patrick@0: ## Identifies the XLink title of the link patrick@0: attribute xlink:title { text } patrick@0: db.xlink.show.enumeration = patrick@0: patrick@0: ## An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. patrick@0: "new" patrick@0: | patrick@0: ## 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. patrick@0: "replace" patrick@0: | patrick@0: ## An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. patrick@0: "embed" patrick@0: | patrick@0: ## 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. patrick@0: "other" patrick@0: | patrick@0: ## 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. patrick@0: "none" patrick@0: db.xlink.show.attribute = patrick@0: patrick@0: ## Identifies the XLink show behavior of the link patrick@0: attribute xlink:show { db.xlink.show.enumeration } patrick@0: db.xlink.actuate.enumeration = patrick@0: patrick@0: ## An application should traverse to the ending resource immediately on loading the starting resource. patrick@0: "onLoad" patrick@0: | patrick@0: ## An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. patrick@0: "onRequest" patrick@0: | patrick@0: ## 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. patrick@0: "other" patrick@0: | patrick@0: ## 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. patrick@0: "none" patrick@0: db.xlink.actuate.attribute = patrick@0: patrick@0: ## Identifies the XLink actuate behavior of the link patrick@0: attribute xlink:actuate { db.xlink.actuate.enumeration } patrick@0: db.href.attributes = patrick@0: db.xlink.href.attribute patrick@0: & db.xlink.type.attribute? patrick@0: & db.xlink.role.attribute? patrick@0: & db.xlink.arcrole.attribute? patrick@0: & db.xlink.title.attribute? patrick@0: & db.xlink.show.attribute? patrick@0: & db.xlink.actuate.attribute? patrick@0: db.xml.id.attribute = patrick@0: patrick@0: ## Identifies the unique ID value of the element patrick@0: attribute xml:id { xsd:ID } patrick@0: db.version.attribute = patrick@0: patrick@0: ## Specifies the DocBook version of the element and its descendants patrick@0: attribute version { text } patrick@0: db.xml.lang.attribute = patrick@0: patrick@0: ## Specifies the natural language of the element and its descendants patrick@0: attribute xml:lang { text } patrick@0: db.xml.base.attribute = patrick@0: patrick@0: ## Specifies the base URI of the element and its descendants patrick@0: attribute xml:base { xsd:anyURI } patrick@0: db.remap.attribute = patrick@0: patrick@0: ## Provides the name or similar semantic identifier assigned to the content in some previous markup scheme patrick@0: attribute remap { text } patrick@0: db.xreflabel.attribute = patrick@0: patrick@0: ## Provides the text that is to be generated for a cross reference to the element patrick@0: attribute xreflabel { text } patrick@0: db.xrefstyle.attribute = patrick@0: patrick@0: ## Specifies a keyword or keywords identifying additional style information patrick@0: attribute xrefstyle { text } patrick@0: db.revisionflag.enumeration = patrick@0: patrick@0: ## The element has been changed. patrick@0: "changed" patrick@0: | patrick@0: ## The element is new (has been added to the document). patrick@0: "added" patrick@0: | patrick@0: ## The element has been deleted. patrick@0: "deleted" patrick@0: | patrick@0: ## Explicitly turns off revision markup for this element. patrick@0: "off" patrick@0: db.revisionflag.attribute = patrick@0: patrick@0: ## Identifies the revision status of the element patrick@0: attribute revisionflag { db.revisionflag.enumeration } patrick@0: db.dir.enumeration = patrick@0: patrick@0: ## Left-to-right text patrick@0: "ltr" patrick@0: | patrick@0: ## Right-to-left text patrick@0: "rtl" patrick@0: | patrick@0: ## Left-to-right override patrick@0: "lro" patrick@0: | patrick@0: ## Right-to-left override patrick@0: "rlo" patrick@0: db.dir.attribute = patrick@0: patrick@0: ## Identifies the direction of text in an element patrick@0: attribute dir { db.dir.enumeration } patrick@0: db.common.base.attributes = patrick@0: db.version.attribute? patrick@0: & db.xml.lang.attribute? patrick@0: & db.xml.base.attribute? patrick@0: & db.remap.attribute? patrick@0: & db.xreflabel.attribute? patrick@0: & db.revisionflag.attribute? patrick@0: & db.dir.attribute? patrick@0: & db.effectivity.attributes patrick@0: db.common.attributes = patrick@0: db.xml.id.attribute? patrick@0: & db.common.base.attributes patrick@0: & db.annotations.attribute? patrick@0: db.common.idreq.attributes = patrick@0: db.xml.id.attribute patrick@0: & db.common.base.attributes patrick@0: & db.annotations.attribute? patrick@0: db.common.linking.attributes = patrick@0: (db.linkend.attribute | db.href.attributes)? patrick@0: db.common.req.linking.attributes = patrick@0: db.linkend.attribute | db.href.attributes patrick@0: db.common.data.attributes = patrick@0: patrick@0: ## Specifies the format of the data patrick@0: attribute format { text }?, patrick@0: ( patrick@0: ## Indentifies the location of the data by URI patrick@0: attribute fileref { xsd:anyURI } patrick@0: | patrick@0: ## Identifies the location of the data by external identifier (entity name) patrick@0: attribute entityref { xsd:ENTITY }) patrick@0: db.verbatim.continuation.enumeration = patrick@0: patrick@0: ## Line numbering continues from the immediately preceding element with the same name. patrick@0: "continues" patrick@0: | patrick@0: ## Line numbering restarts (begins at 1, usually). patrick@0: "restarts" patrick@0: db.verbatim.continuation.attribute = patrick@0: patrick@0: ## Determines whether line numbering continues from the previous element or restarts. patrick@0: attribute continuation { db.verbatim.continuation.enumeration } patrick@0: db.verbatim.linenumbering.enumeration = patrick@0: patrick@0: ## Lines are numbered. patrick@0: "numbered" patrick@0: | patrick@0: ## Lines are not numbered. patrick@0: "unnumbered" patrick@0: db.verbatim.linenumbering.attribute = patrick@0: patrick@0: ## Determines whether lines are numbered. patrick@0: attribute linenumbering { db.verbatim.linenumbering.enumeration } patrick@0: db.verbatim.startinglinenumber.attribute = patrick@0: patrick@0: ## Specifies the initial line number. patrick@0: attribute startinglinenumber { xsd:integer } patrick@0: db.verbatim.language.attribute = patrick@0: patrick@0: ## Identifies the language (i.e. programming language) of the verbatim content. patrick@0: attribute language { text } patrick@0: db.verbatim.xml.space.attribute = patrick@0: patrick@0: ## 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. patrick@0: attribute xml:space { patrick@0: patrick@0: ## Whitespace must be preserved. patrick@0: "preserve" patrick@0: } patrick@0: db.verbatim.attributes = patrick@0: db.verbatim.continuation.attribute? patrick@0: & db.verbatim.linenumbering.attribute? patrick@0: & db.verbatim.startinglinenumber.attribute? patrick@0: & db.verbatim.language.attribute? patrick@0: & db.verbatim.xml.space.attribute? patrick@0: db.label.attribute = patrick@0: patrick@0: ## Specifies an identifying string for presentation purposes patrick@0: attribute label { text } patrick@0: db.width.characters.attribute = patrick@0: patrick@0: ## Specifies the width (in characters) of the element patrick@0: attribute width { xsd:nonNegativeInteger } patrick@0: db.spacing.enumeration = patrick@0: patrick@0: ## The spacing should be "compact". patrick@0: "compact" patrick@0: | patrick@0: ## The spacing should be "normal". patrick@0: "normal" patrick@0: db.spacing.attribute = patrick@0: patrick@0: ## Specifies (a hint about) the spacing of the content patrick@0: attribute spacing { db.spacing.enumeration } patrick@0: db.pgwide.enumeration = patrick@0: patrick@0: ## The element should be rendered in the current text flow (with the flow column width). patrick@0: "0" patrick@0: | patrick@0: ## The element should be rendered across the full text page. patrick@0: "1" patrick@0: db.pgwide.attribute = patrick@0: patrick@0: ## Indicates if the element is rendered across the column or the page patrick@0: attribute pgwide { db.pgwide.enumeration } patrick@0: db.language.attribute = patrick@0: patrick@0: ## Identifies the language (i.e. programming language) of the content. patrick@0: attribute language { text } patrick@0: db.performance.enumeration = patrick@0: patrick@0: ## The content describes an optional step or steps. patrick@0: "optional" patrick@0: | patrick@0: ## The content describes a required step or steps. patrick@0: "required" patrick@0: db.performance.attribute = patrick@0: patrick@0: ## Specifies if the content is required or optional. patrick@0: attribute performance { db.performance.enumeration } patrick@0: db.floatstyle.attribute = patrick@0: patrick@0: ## Specifies style information to be used when rendering the float patrick@0: attribute floatstyle { text } patrick@0: db.width.attribute = patrick@0: patrick@0: ## Specifies the width of the element patrick@0: attribute width { text } patrick@0: db.depth.attribute = patrick@0: patrick@0: ## Specifies the depth of the element patrick@0: attribute depth { text } patrick@0: db.contentwidth.attribute = patrick@0: patrick@0: ## Specifies the width of the content rectangle patrick@0: attribute contentwidth { text } patrick@0: db.contentdepth.attribute = patrick@0: patrick@0: ## Specifies the depth of the content rectangle patrick@0: attribute contentdepth { text } patrick@0: db.scalefit.enumeration = patrick@0: patrick@0: ## False (do not scale-to-fit; anamorphic scaling may occur) patrick@0: "0" patrick@0: | patrick@0: ## True (scale-to-fit; anamorphic scaling is forbidden) patrick@0: "1" patrick@0: db.scale.attribute = patrick@0: patrick@0: ## Specifies the scaling factor patrick@0: attribute scale { xsd:positiveInteger } patrick@0: db.halign.enumeration = patrick@0: patrick@0: ## Centered horizontally patrick@0: "center" patrick@0: | patrick@0: ## Aligned horizontally on the specified character patrick@0: "char" patrick@0: | patrick@0: ## Fully justified (left and right margins or edges) patrick@0: "justify" patrick@0: | patrick@0: ## Left aligned patrick@0: "left" patrick@0: | patrick@0: ## Right aligned patrick@0: "right" patrick@0: db.valign.enumeration = patrick@0: patrick@0: ## Aligned on the bottom of the region patrick@0: "bottom" patrick@0: | patrick@0: ## Centered vertically patrick@0: "middle" patrick@0: | patrick@0: ## Aligned on the top of the region patrick@0: "top" patrick@0: db.biblio.class.enumeration = patrick@0: patrick@0: ## A digital object identifier. patrick@0: "doi" patrick@0: | patrick@0: ## An international standard book number. patrick@0: "isbn" patrick@0: | patrick@0: ## An international standard technical report number (ISO 10444). patrick@0: "isrn" patrick@0: | patrick@0: ## An international standard serial number. patrick@0: "issn" patrick@0: | patrick@0: ## A Library of Congress reference number. patrick@0: "libraryofcongress" patrick@0: | patrick@0: ## A publication number (an internal number or possibly organizational standard). patrick@0: "pubsnumber" patrick@0: | patrick@0: ## A Uniform Resource Identifier patrick@0: "uri" patrick@0: db.biblio.class-enum.attribute = patrick@0: patrick@0: ## Identifies the kind of bibliographic identifier patrick@0: attribute class { db.biblio.class.enumeration }? patrick@0: db.biblio.class-other.attribute = patrick@0: patrick@0: ## Identifies the nature of the non-standard bibliographic identifier patrick@0: attribute otherclass { xsd:NMTOKEN } patrick@0: db.biblio.class-other.attributes = patrick@0: patrick@0: ## Identifies the kind of bibliographic identifier patrick@0: attribute class { patrick@0: patrick@0: ## Indicates that the identifier is some 'other' kind. patrick@0: "other" patrick@0: } patrick@0: & db.biblio.class-other.attribute patrick@0: db.biblio.class.attribute = patrick@0: db.biblio.class-enum.attribute | db.biblio.class-other.attributes patrick@0: db.ubiq.inlines = patrick@0: (db.inlinemediaobject patrick@0: | db.remark patrick@0: | db.link.inlines patrick@0: | db.alt patrick@0: | db.trademark patrick@0: | # below, effectively the publishing inlines (as of 5.0) patrick@0: db.abbrev patrick@0: | db.acronym patrick@0: | db.date patrick@0: | db._emphasis patrick@0: | db.footnote patrick@0: | db.footnoteref patrick@0: | db._foreignphrase patrick@0: | db._phrase patrick@0: | db._quote patrick@0: | db.subscript patrick@0: | db.superscript patrick@0: | db.wordasword) patrick@0: | db.annotation patrick@0: | (db._firstterm | db._glossterm) patrick@0: | db.indexterm patrick@0: | db.coref patrick@0: db._text = (text | db.ubiq.inlines | db._phrase | db.replaceable)* patrick@0: db._title = db.title? & db.titleabbrev? & db.subtitle? patrick@0: db._title.req = db.title & db.titleabbrev? & db.subtitle? patrick@0: db._title.only = db.title? & db.titleabbrev? patrick@0: db._title.onlyreq = db.title & db.titleabbrev? patrick@0: db._info = (db._title, db.titleforbidden.info?) | db.info? patrick@0: db._info.title.req = patrick@0: (db._title.req, db.titleforbidden.info?) | db.titlereq.info patrick@0: db._info.title.only = patrick@0: (db._title.only, db.titleforbidden.info?) | db.titleonly.info patrick@0: db._info.title.onlyreq = patrick@0: (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info patrick@0: db._info.title.forbidden = db.titleforbidden.info? patrick@0: db.all.inlines = patrick@0: text patrick@0: | db.ubiq.inlines patrick@0: | db.general.inlines patrick@0: | db.domain.inlines patrick@0: | db.extension.inlines patrick@0: db.general.inlines = patrick@0: db.publishing.inlines patrick@0: | db.product.inlines patrick@0: | db.bibliography.inlines patrick@0: | db.graphic.inlines patrick@0: | db.indexing.inlines patrick@0: | db.link.inlines patrick@0: db.domain.inlines = patrick@0: db.technical.inlines patrick@0: | db.math.inlines patrick@0: | db.markup.inlines patrick@0: | db.gui.inlines patrick@0: | db.keyboard.inlines patrick@0: | db.os.inlines patrick@0: | db.programming.inlines patrick@0: | db.error.inlines patrick@0: db.technical.inlines = patrick@0: (db.replaceable | db.package | db.parameter) patrick@0: | db.termdef patrick@0: | db.nonterminal patrick@0: | (db.systemitem | db.option | db.optional | db.property) patrick@0: db.product.inlines = patrick@0: db.trademark patrick@0: | (db.productnumber patrick@0: | db.productname patrick@0: | db.database patrick@0: | db.application patrick@0: | db.hardware) patrick@0: db.bibliography.inlines = patrick@0: db.citation patrick@0: | db.citerefentry patrick@0: | db.citetitle patrick@0: | db.citebiblioid patrick@0: | db.author patrick@0: | db.person patrick@0: | db.personname patrick@0: | db.org patrick@0: | db.orgname patrick@0: | db.editor patrick@0: | db.jobtitle patrick@0: db.publishing.inlines = patrick@0: (db.abbrev patrick@0: | db.acronym patrick@0: | db.date patrick@0: | db.emphasis patrick@0: | db.footnote patrick@0: | db.footnoteref patrick@0: | db.foreignphrase patrick@0: | db.phrase patrick@0: | db.quote patrick@0: | db.subscript patrick@0: | db.superscript patrick@0: | db.wordasword) patrick@0: | db.glossary.inlines patrick@0: | db.coref patrick@0: db.graphic.inlines = db.inlinemediaobject patrick@0: db.indexing.inlines = notAllowed | db.indexterm patrick@0: db.link.inlines = patrick@0: (db.xref | db.link | db.olink | db.anchor) | db.biblioref patrick@0: db.extension.inlines = notAllowed patrick@0: db.nopara.blocks = patrick@0: (db.list.blocks patrick@0: | db.formal.blocks patrick@0: | db.informal.blocks patrick@0: | db.publishing.blocks patrick@0: | db.graphic.blocks patrick@0: | db.technical.blocks patrick@0: | db.verbatim.blocks patrick@0: | db.bridgehead patrick@0: | db.remark patrick@0: | db.revhistory) patrick@0: | db.indexterm patrick@0: | db.synopsis.blocks patrick@0: | db.admonition.blocks patrick@0: db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara patrick@0: db.all.blocks = patrick@0: (db.nopara.blocks | db.para.blocks | db.extension.blocks) patrick@0: | db.annotation patrick@0: db.formal.blocks = (db.example | db.figure | db.table) | db.equation patrick@0: db.informal.blocks = patrick@0: (db.informalexample | db.informalfigure | db.informaltable) patrick@0: | db.informalequation patrick@0: db.publishing.blocks = patrick@0: db.sidebar | db.blockquote | db.address | db.epigraph patrick@0: db.graphic.blocks = db.mediaobject | db.screenshot patrick@0: db.technical.blocks = patrick@0: db.procedure patrick@0: | db.task patrick@0: | (db.productionset | db.constraintdef) patrick@0: | db.msgset patrick@0: db.list.blocks = patrick@0: (db.itemizedlist patrick@0: | db.orderedlist patrick@0: | db.procedure patrick@0: | db.simplelist patrick@0: | db.variablelist patrick@0: | db.segmentedlist) patrick@0: | db.glosslist patrick@0: | db.bibliolist patrick@0: | db.calloutlist patrick@0: | db.qandaset patrick@0: db.verbatim.blocks = patrick@0: (db.screen | db.literallayout) patrick@0: | (db.programlistingco | db.screenco) patrick@0: | (db.programlisting | db.synopsis) patrick@0: db.extension.blocks = notAllowed patrick@0: db.info.extension = db._any patrick@0: db.info.elements = patrick@0: (db.abstract patrick@0: | db.address patrick@0: | db.artpagenums patrick@0: | db.author patrick@0: | db.authorgroup patrick@0: | db.authorinitials patrick@0: | db.bibliocoverage patrick@0: | db.biblioid patrick@0: | db.bibliosource patrick@0: | db.collab patrick@0: | db.confgroup patrick@0: | db.contractsponsor patrick@0: | db.contractnum patrick@0: | db.copyright patrick@0: | db.cover patrick@0: | db.date patrick@0: | db.edition patrick@0: | db.editor patrick@0: | db.issuenum patrick@0: | db.keywordset patrick@0: | db.legalnotice patrick@0: | db.mediaobject patrick@0: | db.org patrick@0: | db.orgname patrick@0: | db.othercredit patrick@0: | db.pagenums patrick@0: | db.printhistory patrick@0: | db.pubdate patrick@0: | db.publisher patrick@0: | db.publishername patrick@0: | db.releaseinfo patrick@0: | db.revhistory patrick@0: | db.seriesvolnums patrick@0: | db.subjectset patrick@0: | db.volumenum patrick@0: | db.info.extension) patrick@0: | db.annotation patrick@0: | db.extendedlink patrick@0: | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset) patrick@0: | db.itermset patrick@0: | (db.productname | db.productnumber) patrick@0: db.bibliographic.elements = patrick@0: db.info.elements patrick@0: | db.publishing.inlines patrick@0: | db.citerefentry patrick@0: | db.citetitle patrick@0: | db.citebiblioid patrick@0: | db.person patrick@0: | db.personblurb patrick@0: | db.personname patrick@0: | db.subtitle patrick@0: | db.title patrick@0: | db.titleabbrev patrick@0: div { patrick@0: db.title.role.attribute = attribute role { text } patrick@0: db.title.attlist = patrick@0: db.title.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.title = patrick@0: patrick@0: ## The text of the title of a section of a document or of a formal block-level element patrick@0: element title { db.title.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.titleabbrev.role.attribute = attribute role { text } patrick@0: db.titleabbrev.attlist = patrick@0: db.titleabbrev.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.titleabbrev = patrick@0: patrick@0: ## The abbreviation of a title patrick@0: element titleabbrev { db.titleabbrev.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.subtitle.role.attribute = attribute role { text } patrick@0: db.subtitle.attlist = patrick@0: db.subtitle.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.subtitle = patrick@0: patrick@0: ## The subtitle of a document patrick@0: element subtitle { db.subtitle.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.info.role.attribute = attribute role { text } patrick@0: db.info.attlist = db.info.role.attribute? & db.common.attributes patrick@0: db.info = patrick@0: patrick@0: ## A wrapper for information about a component or other block patrick@0: element info { db.info.attlist, (db._title & db.info.elements*) } patrick@0: } patrick@0: div { patrick@0: db.titlereq.info.role.attribute = attribute role { text } patrick@0: db.titlereq.info.attlist = patrick@0: db.titlereq.info.role.attribute? & db.common.attributes patrick@0: db.titlereq.info = patrick@0: patrick@0: ## A wrapper for information about a component or other block with a required title patrick@0: element info { patrick@0: db.titlereq.info.attlist, (db._title.req & db.info.elements*) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.titleonly.info.role.attribute = attribute role { text } patrick@0: db.titleonly.info.attlist = patrick@0: db.titleonly.info.role.attribute? & db.common.attributes patrick@0: db.titleonly.info = patrick@0: patrick@0: ## A wrapper for information about a component or other block with only a title patrick@0: element info { patrick@0: db.titleonly.info.attlist, (db._title.only & db.info.elements*) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.titleonlyreq.info.role.attribute = attribute role { text } patrick@0: db.titleonlyreq.info.attlist = patrick@0: db.titleonlyreq.info.role.attribute? & db.common.attributes patrick@0: db.titleonlyreq.info = patrick@0: patrick@0: ## A wrapper for information about a component or other block with only a required title patrick@0: element info { patrick@0: db.titleonlyreq.info.attlist, patrick@0: (db._title.onlyreq & db.info.elements*) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.titleforbidden.info.role.attribute = attribute role { text } patrick@0: db.titleforbidden.info.attlist = patrick@0: db.titleforbidden.info.role.attribute? & db.common.attributes patrick@0: db.titleforbidden.info = patrick@0: patrick@0: ## A wrapper for information about a component or other block without a title patrick@0: element info { db.titleforbidden.info.attlist, db.info.elements* } patrick@0: } patrick@0: div { patrick@0: db.subjectset.role.attribute = attribute role { text } patrick@0: db.subjectset.scheme.attribute = patrick@0: patrick@0: ## Identifies the controlled vocabulary used by this set's terms patrick@0: attribute scheme { xsd:NMTOKEN } patrick@0: db.subjectset.attlist = patrick@0: db.subjectset.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.subjectset.scheme.attribute? patrick@0: db.subjectset = patrick@0: patrick@0: ## A set of terms describing the subject matter of a document patrick@0: element subjectset { db.subjectset.attlist, db.subject+ } patrick@0: } patrick@0: div { patrick@0: db.subject.role.attribute = attribute role { text } patrick@0: db.subject.weight.attribute = patrick@0: patrick@0: ## Specifies a ranking for this subject relative to other subjects in the same set patrick@0: attribute weight { text } patrick@0: db.subject.attlist = patrick@0: db.subject.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.subject.weight.attribute? patrick@0: db.subject = patrick@0: patrick@0: ## One of a group of terms describing the subject matter of a document patrick@0: element subject { db.subject.attlist, db.subjectterm+ } patrick@0: } patrick@0: div { patrick@0: db.subjectterm.role.attribute = attribute role { text } patrick@0: db.subjectterm.attlist = patrick@0: db.subjectterm.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.subjectterm = patrick@0: patrick@0: ## A term in a group of terms describing the subject matter of a document patrick@0: element subjectterm { db.subjectterm.attlist, text } patrick@0: } patrick@0: div { patrick@0: db.keywordset.role.attribute = attribute role { text } patrick@0: db.keywordset.attlist = patrick@0: db.keywordset.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.keywordset = patrick@0: patrick@0: ## A set of keywords describing the content of a document patrick@0: element keywordset { db.keywordset.attlist, db.keyword+ } patrick@0: } patrick@0: div { patrick@0: db.keyword.role.attribute = attribute role { text } patrick@0: db.keyword.attlist = patrick@0: db.keyword.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.keyword = patrick@0: patrick@0: ## One of a set of keywords describing the content of a document patrick@0: element keyword { db.keyword.attlist, text } patrick@0: } patrick@0: db.table.choice = notAllowed | db.cals.table | db.html.table patrick@0: db.informaltable.choice = patrick@0: notAllowed | db.cals.informaltable | db.html.informaltable patrick@0: db.table = db.table.choice patrick@0: db.informaltable = db.informaltable.choice patrick@0: div { patrick@0: db.procedure.role.attribute = attribute role { text } patrick@0: db.procedure.attlist = patrick@0: db.procedure.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.procedure.info = db._info.title.only patrick@0: db.procedure = patrick@0: patrick@0: ## A list of operations to be performed in a well-defined sequence patrick@0: element procedure { patrick@0: db.procedure.attlist, db.procedure.info, db.all.blocks*, db.step+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.step.role.attribute = attribute role { text } patrick@0: db.step.attlist = patrick@0: db.step.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.performance.attribute? patrick@0: db.step.info = db._info.title.only patrick@0: # patrick@0: # This content model is blocks*, step|stepalternatives, blocks* but patrick@0: # expressed this way it avoids UPA issues in XSD and DTD versions patrick@0: db.step = patrick@0: patrick@0: ## A unit of action in a procedure patrick@0: element step { patrick@0: db.step.attlist, patrick@0: db.step.info, patrick@0: ((db.all.blocks+, patrick@0: ((db.substeps | db.stepalternatives), db.all.blocks*)?) patrick@0: | ((db.substeps | db.stepalternatives), db.all.blocks*)) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.stepalternatives.role.attribute = attribute role { text } patrick@0: db.stepalternatives.attlist = patrick@0: db.stepalternatives.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.performance.attribute? patrick@0: db.stepalternatives.info = db._info.title.forbidden patrick@0: db.stepalternatives = patrick@0: patrick@0: ## Alternative steps in a procedure patrick@0: element stepalternatives { patrick@0: db.stepalternatives.attlist, db.stepalternatives.info, db.step+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.substeps.role.attribute = attribute role { text } patrick@0: db.substeps.attlist = patrick@0: db.substeps.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.performance.attribute? patrick@0: db.substeps = patrick@0: patrick@0: ## A wrapper for steps that occur within steps in a procedure patrick@0: element substeps { db.substeps.attlist, db.step+ } patrick@0: } patrick@0: div { patrick@0: db.sidebar.floatstyle.attribute = db.floatstyle.attribute patrick@0: db.sidebar.role.attribute = attribute role { text } patrick@0: db.sidebar.attlist = patrick@0: db.sidebar.role.attribute? patrick@0: & db.sidebar.floatstyle.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.sidebar.info = db._info patrick@0: db.sidebar = patrick@0: patrick@0: ## A portion of a document that is isolated from the main narrative flow patrick@0: element sidebar { patrick@0: db.sidebar.attlist, db.sidebar.info, db.all.blocks+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.abstract.role.attribute = attribute role { text } patrick@0: db.abstract.attlist = patrick@0: db.abstract.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.abstract.info = db._info.title.only patrick@0: db.abstract = patrick@0: patrick@0: ## A summary patrick@0: element abstract { patrick@0: db.abstract.attlist, db.abstract.info, db.para.blocks+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.personblurb.role.attribute = attribute role { text } patrick@0: db.personblurb.attlist = patrick@0: db.personblurb.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.personblurb.info = db._info.title.only patrick@0: db.personblurb = patrick@0: patrick@0: ## A short description or note about a person patrick@0: element personblurb { patrick@0: db.personblurb.attlist, db.personblurb.info, db.para.blocks+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.blockquote.role.attribute = attribute role { text } patrick@0: db.blockquote.attlist = patrick@0: db.blockquote.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.blockquote.info = db._info.title.only patrick@0: db.blockquote = patrick@0: patrick@0: ## A quotation set off from the main text patrick@0: element blockquote { patrick@0: db.blockquote.attlist, patrick@0: db.blockquote.info, patrick@0: db.attribution?, patrick@0: db.all.blocks+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.attribution.role.attribute = attribute role { text } patrick@0: db.attribution.attlist = patrick@0: db.attribution.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.attribution = patrick@0: patrick@0: ## The source of a block quote or epigraph patrick@0: element attribution { patrick@0: db.attribution.attlist, patrick@0: (db._text patrick@0: | db.person patrick@0: | db.personname patrick@0: | db.citetitle patrick@0: | db.citation)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.bridgehead.renderas.enumeration = patrick@0: patrick@0: ## Render as a first-level section patrick@0: "sect1" patrick@0: | patrick@0: ## Render as a second-level section patrick@0: "sect2" patrick@0: | patrick@0: ## Render as a third-level section patrick@0: "sect3" patrick@0: | patrick@0: ## Render as a fourth-level section patrick@0: "sect4" patrick@0: | patrick@0: ## Render as a fifth-level section patrick@0: "sect5" patrick@0: db.bridgehead.renderas-enum.attribute = patrick@0: patrick@0: ## Indicates how the bridge head should be rendered patrick@0: attribute renderas { db.bridgehead.renderas.enumeration }? patrick@0: db.bridgehead.renderas-other.attribute = patrick@0: patrick@0: ## Identifies the nature of the non-standard rendering patrick@0: attribute otherrenderas { xsd:NMTOKEN } patrick@0: db.bridgehead.renderas-other.attributes = patrick@0: patrick@0: ## Indicates how the bridge head should be rendered patrick@0: attribute renderas { patrick@0: patrick@0: ## Identifies a non-standard rendering patrick@0: "other" patrick@0: } patrick@0: & db.bridgehead.renderas-other.attribute patrick@0: db.bridgehead.renderas.attribute = patrick@0: db.bridgehead.renderas-enum.attribute patrick@0: | db.bridgehead.renderas-other.attributes patrick@0: db.bridgehead.role.attribute = attribute role { text } patrick@0: db.bridgehead.attlist = patrick@0: db.bridgehead.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.bridgehead.renderas.attribute? patrick@0: db.bridgehead = patrick@0: patrick@0: ## A free-floating heading patrick@0: element bridgehead { db.bridgehead.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.remark.role.attribute = attribute role { text } patrick@0: db.remark.attlist = patrick@0: db.remark.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.remark = patrick@0: patrick@0: ## A remark (or comment) intended for presentation in a draft manuscript patrick@0: element remark { db.remark.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.epigraph.role.attribute = attribute role { text } patrick@0: db.epigraph.attlist = patrick@0: db.epigraph.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.epigraph.info = db._info.title.forbidden patrick@0: db.epigraph = patrick@0: patrick@0: ## A short inscription at the beginning of a document or component patrick@0: element epigraph { patrick@0: db.epigraph.attlist, patrick@0: db.epigraph.info, patrick@0: db.attribution?, patrick@0: (db.para.blocks | db.literallayout)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.footnote.role.attribute = attribute role { text } patrick@0: db.footnote.label.attribute = patrick@0: patrick@0: ## Identifies the desired footnote mark patrick@0: attribute label { xsd:NMTOKEN } patrick@0: db.footnote.attlist = patrick@0: db.footnote.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.footnote.label.attribute? patrick@0: db.footnote = patrick@0: patrick@0: ## A footnote patrick@0: element footnote { db.footnote.attlist, db.all.blocks+ } patrick@0: } patrick@0: div { patrick@0: db.formalpara.role.attribute = attribute role { text } patrick@0: db.formalpara.attlist = patrick@0: db.formalpara.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.formalpara.info = db._info.title.onlyreq patrick@0: db.formalpara = patrick@0: patrick@0: ## A paragraph with a title patrick@0: element formalpara { patrick@0: db.formalpara.attlist, patrick@0: db.formalpara.info, patrick@0: db.indexing.inlines*, patrick@0: db.para patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.para.role.attribute = attribute role { text } patrick@0: db.para.attlist = patrick@0: db.para.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.para.info = db._info.title.forbidden patrick@0: db.para = patrick@0: patrick@0: ## A paragraph patrick@0: element para { patrick@0: db.para.attlist, patrick@0: db.para.info, patrick@0: (db.all.inlines | db.nopara.blocks)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.simpara.role.attribute = attribute role { text } patrick@0: db.simpara.attlist = patrick@0: db.simpara.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.simpara.info = db._info.title.forbidden patrick@0: db.simpara = patrick@0: patrick@0: ## A paragraph that contains only text and inline markup, no block elements patrick@0: element simpara { patrick@0: db.simpara.attlist, db.simpara.info, db.all.inlines* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.itemizedlist.role.attribute = attribute role { text } patrick@0: db.itemizedlist.mark.attribute = patrick@0: patrick@0: ## Identifies the type of mark to be used on items in this list patrick@0: attribute mark { xsd:NMTOKEN } patrick@0: db.itemizedlist.attlist = patrick@0: db.itemizedlist.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.spacing.attribute? patrick@0: & db.itemizedlist.mark.attribute? patrick@0: db.itemizedlist.info = db._info.title.only patrick@0: db.itemizedlist = patrick@0: patrick@0: ## A list in which each entry is marked with a bullet or other dingbat patrick@0: element itemizedlist { patrick@0: db.itemizedlist.attlist, patrick@0: db.itemizedlist.info, patrick@0: db.all.blocks*, patrick@0: db.listitem+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.orderedlist.role.attribute = attribute role { text } patrick@0: db.orderedlist.continuation.enumeration = patrick@0: patrick@0: ## Specifies that numbering should begin where the preceding list left off patrick@0: "continues" patrick@0: | patrick@0: ## Specifies that numbering should begin again at 1 patrick@0: "restarts" patrick@0: db.orderedlist.continuation.attribute = patrick@0: patrick@0: ## Indicates how list numbering should begin relative to the immediately preceding list patrick@0: attribute continuation { db.orderedlist.continuation.enumeration } patrick@0: db.orderedlist.startingnumber.attribute = patrick@0: patrick@0: ## Specifies the initial line number. patrick@0: attribute startingnumber { xsd:integer } patrick@0: db.orderedlist.inheritnum.enumeration = patrick@0: patrick@0: ## Specifies that numbering should ignore list nesting patrick@0: "ignore" patrick@0: | patrick@0: ## Specifies that numbering should inherit from outer-level lists patrick@0: "inherit" patrick@0: db.orderedlist.inheritnum.attribute = patrick@0: patrick@0: ## Indicates whether or not item numbering should be influenced by list nesting patrick@0: attribute inheritnum { db.orderedlist.inheritnum.enumeration } patrick@0: db.orderedlist.numeration.enumeration = patrick@0: patrick@0: ## Specifies Arabic numeration (1, 2, 3, …) patrick@0: "arabic" patrick@0: | patrick@0: ## Specifies upper-case alphabetic numeration (A, B, C, …) patrick@0: "upperalpha" patrick@0: | patrick@0: ## Specifies lower-case alphabetic numeration (a, b, c, …) patrick@0: "loweralpha" patrick@0: | patrick@0: ## Specifies upper-case Roman numeration (I, II, III, …) patrick@0: "upperroman" patrick@0: | patrick@0: ## Specifies lower-case Roman numeration (i, ii, iii …) patrick@0: "lowerroman" patrick@0: db.orderedlist.numeration.attribute = patrick@0: patrick@0: ## Indicates the desired numeration patrick@0: attribute numeration { db.orderedlist.numeration.enumeration } patrick@0: db.orderedlist.attlist = patrick@0: db.orderedlist.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.spacing.attribute? patrick@0: & (db.orderedlist.continuation.attribute patrick@0: | db.orderedlist.startingnumber.attribute)? patrick@0: & db.orderedlist.inheritnum.attribute? patrick@0: & db.orderedlist.numeration.attribute? patrick@0: db.orderedlist.info = db._info.title.only patrick@0: db.orderedlist = patrick@0: patrick@0: ## A list in which each entry is marked with a sequentially incremented label patrick@0: element orderedlist { patrick@0: db.orderedlist.attlist, patrick@0: db.orderedlist.info, patrick@0: db.all.blocks*, patrick@0: db.listitem+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.listitem.role.attribute = attribute role { text } patrick@0: db.listitem.override.attribute = patrick@0: patrick@0: ## Specifies the keyword for the type of mark that should be used on this patrick@0: ## item, instead of the mark that would be used by default patrick@0: attribute override { xsd:NMTOKEN } patrick@0: db.listitem.attlist = patrick@0: db.listitem.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.listitem.override.attribute? patrick@0: db.listitem = patrick@0: patrick@0: ## A wrapper for the elements of a list item patrick@0: element listitem { db.listitem.attlist, db.all.blocks+ } patrick@0: } patrick@0: div { patrick@0: db.segmentedlist.role.attribute = attribute role { text } patrick@0: db.segmentedlist.attlist = patrick@0: db.segmentedlist.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.segmentedlist.info = db._info.title.only patrick@0: db.segmentedlist = patrick@0: patrick@0: ## A segmented list, a list of sets of elements patrick@0: element segmentedlist { patrick@0: db.segmentedlist.attlist, patrick@0: db.segmentedlist.info, patrick@0: db.segtitle+, patrick@0: db.seglistitem+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.segtitle.role.attribute = attribute role { text } patrick@0: db.segtitle.attlist = patrick@0: db.segtitle.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.segtitle = patrick@0: patrick@0: ## The title of an element of a list item in a segmented list patrick@0: element segtitle { db.segtitle.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.seglistitem.role.attribute = attribute role { text } patrick@0: db.seglistitem.attlist = patrick@0: db.seglistitem.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.seglistitem = patrick@0: patrick@0: ## A list item in a segmented list patrick@0: element seglistitem { db.seglistitem.attlist, db.seg+ } patrick@0: } patrick@0: div { patrick@0: db.seg.role.attribute = attribute role { text } patrick@0: db.seg.attlist = patrick@0: db.seg.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.seg = patrick@0: patrick@0: ## An element of a list item in a segmented list patrick@0: element seg { db.seg.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.simplelist.role.attribute = attribute role { text } patrick@0: db.simplelist.type.enumeration = patrick@0: patrick@0: ## A tabular presentation in row-major order. patrick@0: "horiz" patrick@0: | patrick@0: ## A tabular presentation in column-major order. patrick@0: "vert" patrick@0: | patrick@0: ## An inline presentation, usually a comma-delimited list. patrick@0: "inline" patrick@0: db.simplelist.type.attribute = patrick@0: patrick@0: ## Specifies the type of list presentation. patrick@0: [ a:defaultValue = "vert" ] patrick@0: attribute type { db.simplelist.type.enumeration } patrick@0: db.simplelist.columns.attribute = patrick@0: patrick@0: ## Specifies the number of columns for horizontal or vertical presentation patrick@0: attribute columns { xsd:integer } patrick@0: db.simplelist.attlist = patrick@0: db.simplelist.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.simplelist.type.attribute? patrick@0: & db.simplelist.columns.attribute? patrick@0: db.simplelist = patrick@0: patrick@0: ## An undecorated list of single words or short phrases patrick@0: element simplelist { db.simplelist.attlist, db.member+ } patrick@0: } patrick@0: div { patrick@0: db.member.role.attribute = attribute role { text } patrick@0: db.member.attlist = patrick@0: db.member.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.member = patrick@0: patrick@0: ## An element of a simple list patrick@0: element member { db.member.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.variablelist.role.attribute = attribute role { text } patrick@0: db.variablelist.termlength.attribute = patrick@0: patrick@0: ## Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list patrick@0: attribute termlength { text } patrick@0: db.variablelist.attlist = patrick@0: db.variablelist.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.spacing.attribute? patrick@0: & db.variablelist.termlength.attribute? patrick@0: db.variablelist.info = db._info.title.only patrick@0: db.variablelist = patrick@0: patrick@0: ## A list in which each entry is composed of a set of one or more terms and an associated description patrick@0: element variablelist { patrick@0: db.variablelist.attlist, patrick@0: db.variablelist.info, patrick@0: db.all.blocks*, patrick@0: db.varlistentry+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.varlistentry.role.attribute = attribute role { text } patrick@0: db.varlistentry.attlist = patrick@0: db.varlistentry.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.varlistentry = patrick@0: patrick@0: ## A wrapper for a set of terms and the associated description in a variable list patrick@0: element varlistentry { patrick@0: db.varlistentry.attlist, db.term+, db.listitem patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.term.role.attribute = attribute role { text } patrick@0: db.term.attlist = patrick@0: db.term.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.term = patrick@0: patrick@0: ## The word or phrase being defined or described in a variable list patrick@0: element term { db.term.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.example.role.attribute = attribute role { text } patrick@0: db.example.label.attribute = db.label.attribute patrick@0: db.example.width.attribute = db.width.characters.attribute patrick@0: db.example.pgwide.attribute = db.pgwide.attribute patrick@0: db.example.floatstyle.attribute = db.floatstyle.attribute patrick@0: db.example.attlist = patrick@0: db.example.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.example.label.attribute? patrick@0: & db.example.floatstyle.attribute? patrick@0: & (db.example.width.attribute | db.example.pgwide.attribute)? patrick@0: db.example.info = db._info.title.onlyreq patrick@0: db.example = patrick@0: patrick@0: ## A formal example, with a title patrick@0: element example { patrick@0: db.example.attlist, db.example.info, db.all.blocks+, db.caption? patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.informalexample.role.attribute = attribute role { text } patrick@0: db.informalexample.width.attribute = db.width.characters.attribute patrick@0: db.informalexample.floatstyle.attribute = db.floatstyle.attribute patrick@0: db.informalexample.attlist = patrick@0: db.informalexample.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.informalexample.floatstyle.attribute? patrick@0: & db.informalexample.width.attribute? patrick@0: db.informalexample.info = db._info.title.forbidden patrick@0: db.informalexample = patrick@0: patrick@0: ## A displayed example without a title patrick@0: element informalexample { patrick@0: db.informalexample.attlist, patrick@0: db.informalexample.info, patrick@0: db.all.blocks+, patrick@0: db.caption? patrick@0: } patrick@0: } patrick@0: db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co patrick@0: db.verbatim.contentmodel = patrick@0: db._info.title.forbidden, (db.textobject | db.verbatim.inlines*) patrick@0: div { patrick@0: db.literallayout.role.attribute = attribute role { text } patrick@0: db.literallayout.class.enumeration = patrick@0: patrick@0: ## The literal layout should be formatted with a monospaced font patrick@0: "monospaced" patrick@0: | patrick@0: ## The literal layout should be formatted with the current font patrick@0: "normal" patrick@0: db.literallayout.class.attribute = patrick@0: patrick@0: ## Specifies the class of literal layout patrick@0: attribute class { db.literallayout.class.enumeration } patrick@0: db.literallayout.attlist = patrick@0: db.literallayout.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.verbatim.attributes patrick@0: & db.literallayout.class.attribute? patrick@0: db.literallayout = patrick@0: patrick@0: ## A block of text in which line breaks and white space are to be reproduced faithfully patrick@0: element literallayout { patrick@0: db.literallayout.attlist, db.verbatim.contentmodel patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.screen.role.attribute = attribute role { text } patrick@0: db.screen.width.attribute = db.width.characters.attribute patrick@0: db.screen.attlist = patrick@0: db.screen.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.verbatim.attributes patrick@0: & db.screen.width.attribute? patrick@0: db.screen = patrick@0: patrick@0: ## Text that a user sees or might see on a computer screen patrick@0: element screen { db.screen.attlist, db.verbatim.contentmodel } patrick@0: } patrick@0: div { patrick@0: db.screenshot.role.attribute = attribute role { text } patrick@0: db.screenshot.attlist = patrick@0: db.screenshot.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.screenshot.info = db._info patrick@0: db.screenshot = patrick@0: patrick@0: ## A representation of what the user sees or might see on a computer screen patrick@0: element screenshot { patrick@0: db.screenshot.attlist, db.screenshot.info, db.mediaobject patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.figure.role.attribute = attribute role { text } patrick@0: db.figure.label.attribute = db.label.attribute patrick@0: db.figure.pgwide.attribute = db.pgwide.attribute patrick@0: db.figure.floatstyle.attribute = db.floatstyle.attribute patrick@0: db.figure.attlist = patrick@0: db.figure.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.figure.label.attribute? patrick@0: & db.figure.pgwide.attribute? patrick@0: & db.figure.floatstyle.attribute? patrick@0: db.figure.info = db._info.title.onlyreq patrick@0: db.figure = patrick@0: patrick@0: ## A formal figure, generally an illustration, with a title patrick@0: element figure { patrick@0: db.figure.attlist, db.figure.info, db.all.blocks+, db.caption? patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.informalfigure.role.attribute = attribute role { text } patrick@0: db.informalfigure.label.attribute = db.label.attribute patrick@0: db.informalfigure.pgwide.attribute = db.pgwide.attribute patrick@0: db.informalfigure.floatstyle.attribute = db.floatstyle.attribute patrick@0: db.informalfigure.attlist = patrick@0: db.informalfigure.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.informalfigure.label.attribute? patrick@0: & db.informalfigure.pgwide.attribute? patrick@0: & db.informalfigure.floatstyle.attribute? patrick@0: db.informalfigure.info = db._info.title.forbidden patrick@0: db.informalfigure = patrick@0: patrick@0: ## A untitled figure patrick@0: element informalfigure { patrick@0: db.informalfigure.attlist, patrick@0: db.informalfigure.info, patrick@0: db.all.blocks+, patrick@0: db.caption? patrick@0: } patrick@0: } patrick@0: db.mediaobject.content = patrick@0: (db.videoobject | db.audioobject | db.imageobject | db.textobject) patrick@0: | db.imageobjectco patrick@0: div { patrick@0: db.mediaobject.role.attribute = attribute role { text } patrick@0: db.mediaobject.attlist = patrick@0: db.mediaobject.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.mediaobject.info = db._info.title.forbidden patrick@0: db.mediaobject = patrick@0: patrick@0: ## A displayed media object (video, audio, image, etc.) patrick@0: element mediaobject { patrick@0: db.mediaobject.attlist, patrick@0: db.mediaobject.info, patrick@0: db.alt?, patrick@0: db.mediaobject.content+, patrick@0: db.caption? patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.inlinemediaobject.role.attribute = attribute role { text } patrick@0: db.inlinemediaobject.attlist = patrick@0: db.inlinemediaobject.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.inlinemediaobject.info = db._info.title.forbidden patrick@0: db.inlinemediaobject = patrick@0: patrick@0: ## An inline media object (video, audio, image, and so on) patrick@0: element inlinemediaobject { patrick@0: db.inlinemediaobject.attlist, patrick@0: db.inlinemediaobject.info, patrick@0: db.alt?, patrick@0: db.mediaobject.content+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.videoobject.role.attribute = attribute role { text } patrick@0: db.videoobject.attlist = patrick@0: db.videoobject.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.videoobject.info = db._info.title.forbidden patrick@0: db.videoobject = patrick@0: patrick@0: ## A wrapper for video data and its associated meta-information patrick@0: element videoobject { patrick@0: db.videoobject.attlist, db.videoobject.info, db.videodata patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.audioobject.role.attribute = attribute role { text } patrick@0: db.audioobject.attlist = patrick@0: db.audioobject.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.audioobject.info = db._info.title.forbidden patrick@0: db.audioobject = patrick@0: patrick@0: ## A wrapper for audio data and its associated meta-information patrick@0: element audioobject { patrick@0: db.audioobject.attlist, db.audioobject.info, db.audiodata patrick@0: } patrick@0: } patrick@0: db.imageobject.content = patrick@0: db.imagedata | db.imagedata.mathml | db.imagedata.svg patrick@0: div { patrick@0: db.imageobject.role.attribute = attribute role { text } patrick@0: db.imageobject.attlist = patrick@0: db.imageobject.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.imageobject.info = db._info.title.forbidden patrick@0: db.imageobject = patrick@0: patrick@0: ## A wrapper for image data and its associated meta-information patrick@0: element imageobject { patrick@0: db.imageobject.attlist, patrick@0: db.imageobject.info, patrick@0: db.imageobject.content patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.textobject.role.attribute = attribute role { text } patrick@0: db.textobject.attlist = patrick@0: db.textobject.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.textobject.info = db._info.title.forbidden patrick@0: db.textobject = patrick@0: patrick@0: ## A wrapper for a text description of an object and its associated meta-information patrick@0: element textobject { patrick@0: db.textobject.attlist, patrick@0: db.textobject.info, patrick@0: (db.phrase | db.textdata | db.all.blocks+) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.videodata.role.attribute = attribute role { text } patrick@0: db.videodata.align.enumeration = db.halign.enumeration patrick@0: db.videodata.align.attribute = patrick@0: patrick@0: ## Specifies the (horizontal) alignment of the video data patrick@0: attribute align { db.videodata.align.enumeration } patrick@0: db.videodata.valign.enumeration = db.valign.enumeration patrick@0: db.videodata.valign.attribute = patrick@0: patrick@0: ## Specifies the vertical alignment of the video data patrick@0: attribute valign { db.videodata.valign.enumeration } patrick@0: db.videodata.width.attribute = db.width.attribute patrick@0: db.videodata.depth.attribute = db.depth.attribute patrick@0: db.videodata.contentwidth.attribute = db.contentwidth.attribute patrick@0: db.videodata.contentdepth.attribute = db.contentdepth.attribute patrick@0: db.videodata.scalefit.enumeration = db.scalefit.enumeration patrick@0: db.videodata.scalefit.attribute = patrick@0: patrick@0: ## Determines if anamorphic scaling is forbidden patrick@0: attribute scalefit { db.videodata.scalefit.enumeration } patrick@0: db.videodata.scale.attribute = db.scale.attribute patrick@0: db.videodata.attlist = patrick@0: db.videodata.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.data.attributes patrick@0: & db.videodata.align.attribute? patrick@0: & db.videodata.valign.attribute? patrick@0: & db.videodata.width.attribute? patrick@0: & db.videodata.contentwidth.attribute? patrick@0: & db.videodata.scalefit.attribute? patrick@0: & db.videodata.scale.attribute? patrick@0: & db.videodata.depth.attribute? patrick@0: & db.videodata.contentdepth.attribute? patrick@0: db.videodata.info = db._info.title.forbidden patrick@0: db.videodata = patrick@0: patrick@0: ## Pointer to external video data patrick@0: element videodata { db.videodata.attlist, db.videodata.info } patrick@0: } patrick@0: div { patrick@0: db.audiodata.role.attribute = attribute role { text } patrick@0: db.audiodata.attlist = patrick@0: db.audiodata.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.data.attributes patrick@0: db.audiodata.info = db._info.title.forbidden patrick@0: db.audiodata = patrick@0: patrick@0: ## Pointer to external audio data patrick@0: element audiodata { db.audiodata.attlist, db.audiodata.info } patrick@0: } patrick@0: div { patrick@0: db.imagedata.role.attribute = attribute role { text } patrick@0: db.imagedata.align.enumeration = db.halign.enumeration patrick@0: db.imagedata.align.attribute = patrick@0: patrick@0: ## Specifies the (horizontal) alignment of the image data patrick@0: attribute align { db.imagedata.align.enumeration } patrick@0: db.imagedata.valign.enumeration = db.valign.enumeration patrick@0: db.imagedata.valign.attribute = patrick@0: patrick@0: ## Specifies the vertical alignment of the image data patrick@0: attribute valign { db.imagedata.valign.enumeration } patrick@0: db.imagedata.width.attribute = db.width.attribute patrick@0: db.imagedata.depth.attribute = db.depth.attribute patrick@0: db.imagedata.contentwidth.attribute = db.contentwidth.attribute patrick@0: db.imagedata.contentdepth.attribute = db.contentdepth.attribute patrick@0: db.imagedata.scalefit.enumeration = db.scalefit.enumeration patrick@0: db.imagedata.scalefit.attribute = patrick@0: patrick@0: ## Determines if anamorphic scaling is forbidden patrick@0: attribute scalefit { db.imagedata.scalefit.enumeration } patrick@0: db.imagedata.scale.attribute = db.scale.attribute patrick@0: db.imagedata.attlist = patrick@0: db.imagedata.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.data.attributes patrick@0: & db.imagedata.align.attribute? patrick@0: & db.imagedata.valign.attribute? patrick@0: & db.imagedata.width.attribute? patrick@0: & db.imagedata.contentwidth.attribute? patrick@0: & db.imagedata.scalefit.attribute? patrick@0: & db.imagedata.scale.attribute? patrick@0: & db.imagedata.depth.attribute? patrick@0: & db.imagedata.contentdepth.attribute? patrick@0: db.imagedata.info = db._info.title.forbidden patrick@0: db.imagedata = patrick@0: patrick@0: ## Pointer to external image data patrick@0: element imagedata { db.imagedata.attlist, db.imagedata.info } patrick@0: } patrick@0: div { patrick@0: db.textdata.role.attribute = attribute role { text } patrick@0: db.textdata.encoding.attribute = patrick@0: patrick@0: ## Identifies the encoding of the text in the external file patrick@0: attribute encoding { text } patrick@0: db.textdata.attlist = patrick@0: db.textdata.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.data.attributes patrick@0: & db.textdata.encoding.attribute? patrick@0: db.textdata.info = db._info.title.forbidden patrick@0: db.textdata = patrick@0: patrick@0: ## Pointer to external text data patrick@0: element textdata { db.textdata.attlist, db.textdata.info } patrick@0: } patrick@0: div { patrick@0: db.caption.role.attribute = attribute role { text } patrick@0: db.caption.attlist = patrick@0: db.caption.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.caption.info = db._info.title.forbidden patrick@0: db.caption = patrick@0: patrick@0: ## A caption patrick@0: element caption { patrick@0: db.caption.attlist, db.caption.info, db.all.blocks+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.address.role.attribute = attribute role { text } patrick@0: db.address.attlist = patrick@0: db.address.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.verbatim.attributes patrick@0: db.address = patrick@0: patrick@0: ## A real-world address, generally a postal address patrick@0: element address { patrick@0: db.address.attlist, patrick@0: (db._text patrick@0: | db.personname patrick@0: | db.orgname patrick@0: | db.pob patrick@0: | db.street patrick@0: | db.city patrick@0: | db.state patrick@0: | db.postcode patrick@0: | db.country patrick@0: | db.phone patrick@0: | db.fax patrick@0: | db.email patrick@0: | db.uri patrick@0: | db.otheraddr)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.street.role.attribute = attribute role { text } patrick@0: db.street.attlist = patrick@0: db.street.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.street = patrick@0: patrick@0: ## A street address in an address patrick@0: element street { db.street.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.pob.role.attribute = attribute role { text } patrick@0: db.pob.attlist = patrick@0: db.pob.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.pob = patrick@0: patrick@0: ## A post office box in an address patrick@0: element pob { db.pob.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.postcode.role.attribute = attribute role { text } patrick@0: db.postcode.attlist = patrick@0: db.postcode.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.postcode = patrick@0: patrick@0: ## A postal code in an address patrick@0: element postcode { db.postcode.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.city.role.attribute = attribute role { text } patrick@0: db.city.attlist = patrick@0: db.city.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.city = patrick@0: patrick@0: ## The name of a city in an address patrick@0: element city { db.city.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.state.role.attribute = attribute role { text } patrick@0: db.state.attlist = patrick@0: db.state.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.state = patrick@0: patrick@0: ## A state or province in an address patrick@0: element state { db.state.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.country.role.attribute = attribute role { text } patrick@0: db.country.attlist = patrick@0: db.country.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.country = patrick@0: patrick@0: ## The name of a country patrick@0: element country { db.country.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.phone.role.attribute = attribute role { text } patrick@0: db.phone.attlist = patrick@0: db.phone.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.phone = patrick@0: patrick@0: ## A telephone number patrick@0: element phone { db.phone.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.fax.role.attribute = attribute role { text } patrick@0: db.fax.attlist = patrick@0: db.fax.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.fax = patrick@0: patrick@0: ## A fax number patrick@0: element fax { db.fax.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.otheraddr.role.attribute = attribute role { text } patrick@0: db.otheraddr.attlist = patrick@0: db.otheraddr.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.otheraddr = patrick@0: patrick@0: ## Uncategorized information in address patrick@0: element otheraddr { db.otheraddr.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.affiliation.role.attribute = attribute role { text } patrick@0: db.affiliation.attlist = patrick@0: db.affiliation.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.affiliation = patrick@0: patrick@0: ## The institutional affiliation of an individual patrick@0: element affiliation { patrick@0: db.affiliation.attlist, patrick@0: db.shortaffil?, patrick@0: db.jobtitle*, patrick@0: (db.org? | (db.orgname?, db.orgdiv*, db.address*)) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.shortaffil.role.attribute = attribute role { text } patrick@0: db.shortaffil.attlist = patrick@0: db.shortaffil.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.shortaffil = patrick@0: patrick@0: ## A brief description of an affiliation patrick@0: element shortaffil { db.shortaffil.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.jobtitle.role.attribute = attribute role { text } patrick@0: db.jobtitle.attlist = patrick@0: db.jobtitle.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.jobtitle = patrick@0: patrick@0: ## The title of an individual in an organization patrick@0: element jobtitle { db.jobtitle.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.orgname.class.enumeration = patrick@0: patrick@0: ## A consortium patrick@0: "consortium" patrick@0: | patrick@0: ## A corporation patrick@0: "corporation" patrick@0: | patrick@0: ## An informal organization patrick@0: "informal" patrick@0: | patrick@0: ## A non-profit organization patrick@0: "nonprofit" patrick@0: db.orgname.class-enum.attribute = patrick@0: patrick@0: ## Specifies the nature of the organization patrick@0: attribute class { db.orgname.class.enumeration } patrick@0: db.orgname.class-other.attributes = patrick@0: patrick@0: ## Specifies the nature of the organization patrick@0: attribute class { patrick@0: patrick@0: ## Indicates a non-standard organization class patrick@0: "other" patrick@0: }, patrick@0: patrick@0: ## Identifies the non-standard nature of the organization patrick@0: attribute otherclass { text } patrick@0: db.orgname.class.attribute = patrick@0: db.orgname.class-enum.attribute | db.orgname.class-other.attributes patrick@0: db.orgname.role.attribute = attribute role { text } patrick@0: db.orgname.attlist = patrick@0: db.orgname.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.orgname.class.attribute? patrick@0: db.orgname = patrick@0: patrick@0: ## The name of an organization patrick@0: element orgname { db.orgname.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.orgdiv.role.attribute = attribute role { text } patrick@0: db.orgdiv.attlist = patrick@0: db.orgdiv.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.orgdiv = patrick@0: patrick@0: ## A division of an organization patrick@0: element orgdiv { db.orgdiv.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.artpagenums.role.attribute = attribute role { text } patrick@0: db.artpagenums.attlist = patrick@0: db.artpagenums.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.artpagenums = patrick@0: patrick@0: ## The page numbers of an article as published patrick@0: element artpagenums { db.artpagenums.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.personname.role.attribute = attribute role { text } patrick@0: db.personname.attlist = patrick@0: db.personname.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.personname = patrick@0: patrick@0: ## The personal name of an individual patrick@0: element personname { patrick@0: db.personname.attlist, patrick@0: (db._text patrick@0: | (db.honorific patrick@0: | db.firstname patrick@0: | db.surname patrick@0: | db.lineage patrick@0: | db.othername)+ patrick@0: | (db.honorific patrick@0: | db.givenname patrick@0: | db.surname patrick@0: | db.lineage patrick@0: | db.othername)+) patrick@0: } patrick@0: } patrick@0: db.person.author.contentmodel = patrick@0: db.personname, patrick@0: (db.personblurb patrick@0: | db.affiliation patrick@0: | db.email patrick@0: | db.uri patrick@0: | db.address patrick@0: | db.contrib)* patrick@0: db.org.author.contentmodel = patrick@0: db.orgname, patrick@0: (db.orgdiv patrick@0: | db.affiliation patrick@0: | db.email patrick@0: | db.uri patrick@0: | db.address patrick@0: | db.contrib)* patrick@0: db.credit.contentmodel = patrick@0: db.person.author.contentmodel | db.org.author.contentmodel patrick@0: div { patrick@0: db.author.role.attribute = attribute role { text } patrick@0: db.author.attlist = patrick@0: db.author.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.author = patrick@0: patrick@0: ## The name of an individual author patrick@0: element author { db.author.attlist, db.credit.contentmodel } patrick@0: } patrick@0: div { patrick@0: db.authorgroup.role.attribute = attribute role { text } patrick@0: db.authorgroup.attlist = patrick@0: db.authorgroup.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.authorgroup = patrick@0: patrick@0: ## Wrapper for author information when a document has multiple authors or collaborators patrick@0: element authorgroup { patrick@0: db.authorgroup.attlist, (db.author | db.editor | db.othercredit)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.collab.role.attribute = attribute role { text } patrick@0: db.collab.attlist = patrick@0: db.collab.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.collab = patrick@0: patrick@0: ## Identifies a collaborator patrick@0: element collab { patrick@0: db.collab.attlist, patrick@0: (db.person | db.personname | db.org | db.orgname)+, patrick@0: db.affiliation* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.authorinitials.role.attribute = attribute role { text } patrick@0: db.authorinitials.attlist = patrick@0: db.authorinitials.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.authorinitials = patrick@0: patrick@0: ## The initials or other short identifier for an author patrick@0: element authorinitials { db.authorinitials.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.person.role.attribute = attribute role { text } patrick@0: db.person.attlist = patrick@0: db.person.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.person = patrick@0: patrick@0: ## A person and associated metadata patrick@0: element person { patrick@0: db.person.attlist, patrick@0: db.personname, patrick@0: (db.address patrick@0: | db.affiliation patrick@0: | db.email patrick@0: | db.uri patrick@0: | db.personblurb)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.org.role.attribute = attribute role { text } patrick@0: db.org.attlist = patrick@0: db.org.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.org = patrick@0: patrick@0: ## An organization and associated metadata patrick@0: element org { patrick@0: db.org.attlist, patrick@0: db.orgname, patrick@0: (db.address | db.affiliation | db.email | db.uri | db.orgdiv)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.confgroup.role.attribute = attribute role { text } patrick@0: db.confgroup.attlist = patrick@0: db.confgroup.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.confgroup = patrick@0: patrick@0: ## A wrapper for document meta-information about a conference patrick@0: element confgroup { patrick@0: db.confgroup.attlist, patrick@0: (db.confdates patrick@0: | db.conftitle patrick@0: | db.confnum patrick@0: | db.confsponsor patrick@0: | db.address)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.confdates.role.attribute = attribute role { text } patrick@0: db.confdates.attlist = patrick@0: db.confdates.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.confdates = patrick@0: patrick@0: ## The dates of a conference for which a document was written patrick@0: element confdates { db.confdates.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.conftitle.role.attribute = attribute role { text } patrick@0: db.conftitle.attlist = patrick@0: db.conftitle.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.conftitle = patrick@0: patrick@0: ## The title of a conference for which a document was written patrick@0: element conftitle { db.conftitle.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.confnum.role.attribute = attribute role { text } patrick@0: db.confnum.attlist = patrick@0: db.confnum.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.confnum = patrick@0: patrick@0: ## An identifier, frequently numerical, associated with a conference for which a document was written patrick@0: element confnum { db.confnum.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.confsponsor.role.attribute = attribute role { text } patrick@0: db.confsponsor.attlist = patrick@0: db.confsponsor.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.confsponsor = patrick@0: patrick@0: ## The sponsor of a conference for which a document was written patrick@0: element confsponsor { db.confsponsor.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.contractnum.role.attribute = attribute role { text } patrick@0: db.contractnum.attlist = patrick@0: db.contractnum.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.contractnum = patrick@0: patrick@0: ## The contract number of a document patrick@0: element contractnum { db.contractnum.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.contractsponsor.role.attribute = attribute role { text } patrick@0: db.contractsponsor.attlist = patrick@0: db.contractsponsor.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.contractsponsor = patrick@0: patrick@0: ## The sponsor of a contract patrick@0: element contractsponsor { db.contractsponsor.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.copyright.role.attribute = attribute role { text } patrick@0: db.copyright.attlist = patrick@0: db.copyright.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.copyright = patrick@0: patrick@0: ## Copyright information about a document patrick@0: element copyright { db.copyright.attlist, db.year+, db.holder* } patrick@0: } patrick@0: div { patrick@0: db.year.role.attribute = attribute role { text } patrick@0: db.year.attlist = patrick@0: db.year.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.year = patrick@0: patrick@0: ## The year of publication of a document patrick@0: element year { db.year.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.holder.role.attribute = attribute role { text } patrick@0: db.holder.attlist = patrick@0: db.holder.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.holder = patrick@0: patrick@0: ## The name of the individual or organization that holds a copyright patrick@0: element holder { db.holder.attlist, db._text } patrick@0: } patrick@0: db.cover.contentmodel = patrick@0: (db.para.blocks patrick@0: | db.extension.blocks patrick@0: | db.list.blocks patrick@0: | db.informal.blocks patrick@0: | db.publishing.blocks patrick@0: | db.graphic.blocks patrick@0: | db.technical.blocks patrick@0: | db.verbatim.blocks patrick@0: | db.bridgehead patrick@0: | db.remark patrick@0: | db.revhistory) patrick@0: | db.synopsis.blocks patrick@0: div { patrick@0: db.cover.role.attribute = attribute role { text } patrick@0: db.cover.attlist = patrick@0: db.cover.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.cover = patrick@0: patrick@0: ## Additional content for the cover of a publication patrick@0: element cover { db.cover.attlist, db.cover.contentmodel+ } patrick@0: } patrick@0: db.date.contentmodel = patrick@0: xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text patrick@0: div { patrick@0: db.date.role.attribute = attribute role { text } patrick@0: db.date.attlist = patrick@0: db.date.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.date = patrick@0: patrick@0: ## The date of publication or revision of a document patrick@0: element date { db.date.attlist, db.date.contentmodel } patrick@0: } patrick@0: div { patrick@0: db.edition.role.attribute = attribute role { text } patrick@0: db.edition.attlist = patrick@0: db.edition.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.edition = patrick@0: patrick@0: ## The name or number of an edition of a document patrick@0: element edition { db.edition.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.editor.role.attribute = attribute role { text } patrick@0: db.editor.attlist = patrick@0: db.editor.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.editor = patrick@0: patrick@0: ## The name of the editor of a document patrick@0: element editor { db.editor.attlist, db.credit.contentmodel } patrick@0: } patrick@0: div { patrick@0: db.biblioid.role.attribute = attribute role { text } patrick@0: db.biblioid.attlist = patrick@0: db.biblioid.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.biblio.class.attribute patrick@0: db.biblioid = patrick@0: patrick@0: ## An identifier for a document patrick@0: element biblioid { db.biblioid.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.citebiblioid.role.attribute = attribute role { text } patrick@0: db.citebiblioid.attlist = patrick@0: db.citebiblioid.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.biblio.class.attribute patrick@0: db.citebiblioid = patrick@0: patrick@0: ## A citation of a bibliographic identifier patrick@0: element citebiblioid { db.citebiblioid.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.bibliosource.role.attribute = attribute role { text } patrick@0: db.bibliosource.attlist = patrick@0: db.bibliosource.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.biblio.class.attribute patrick@0: db.bibliosource = patrick@0: patrick@0: ## The source of a document patrick@0: element bibliosource { db.bibliosource.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.bibliorelation.type.enumeration = patrick@0: patrick@0: ## The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format patrick@0: "hasformat" patrick@0: | patrick@0: ## The described resource includes the referenced resource either physically or logically patrick@0: "haspart" patrick@0: | patrick@0: ## The described resource has a version, edition, or adaptation, namely, the referenced resource patrick@0: "hasversion" patrick@0: | patrick@0: ## The described resource is the same intellectual content of the referenced resource, but presented in another format patrick@0: "isformatof" patrick@0: | patrick@0: ## The described resource is a physical or logical part of the referenced resource patrick@0: "ispartof" patrick@0: | patrick@0: ## The described resource is referenced, cited, or otherwise pointed to by the referenced resource patrick@0: "isreferencedby" patrick@0: | patrick@0: ## The described resource is supplanted, displaced, or superceded by the referenced resource patrick@0: "isreplacedby" patrick@0: | patrick@0: ## The described resource is required by the referenced resource, either physically or logically patrick@0: "isrequiredby" patrick@0: | patrick@0: ## The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format patrick@0: "isversionof" patrick@0: | patrick@0: ## The described resource references, cites, or otherwise points to the referenced resource patrick@0: "references" patrick@0: | patrick@0: ## The described resource supplants, displaces, or supersedes the referenced resource patrick@0: "replaces" patrick@0: | patrick@0: ## The described resource requires the referenced resource to support its function, delivery, or coherence of content patrick@0: "requires" patrick@0: db.bibliorelation.type-enum.attribute = patrick@0: patrick@0: ## Identifies the type of relationship patrick@0: attribute type { db.bibliorelation.type.enumeration }? patrick@0: db.bibliorelation.type-other.attributes = patrick@0: patrick@0: ## Identifies the type of relationship patrick@0: attribute type { patrick@0: patrick@0: ## The described resource has a non-standard relationship with the referenced resource patrick@0: "othertype" patrick@0: }?, patrick@0: patrick@0: ## A keyword that identififes the type of the non-standard relationship patrick@0: attribute othertype { xsd:NMTOKEN } patrick@0: db.bibliorelation.type.attribute = patrick@0: db.bibliorelation.type-enum.attribute patrick@0: | db.bibliorelation.type-other.attributes patrick@0: db.bibliorelation.role.attribute = attribute role { text } patrick@0: db.bibliorelation.attlist = patrick@0: db.bibliorelation.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.biblio.class.attribute patrick@0: & db.bibliorelation.type.attribute patrick@0: db.bibliorelation = patrick@0: patrick@0: ## The relationship of a document to another patrick@0: element bibliorelation { db.bibliorelation.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.bibliocoverage.spacial.enumeration = patrick@0: patrick@0: ## The DCMI Point identifies a point in space using its geographic coordinates patrick@0: "dcmipoint" patrick@0: | patrick@0: ## ISO 3166 Codes for the representation of names of countries patrick@0: "iso3166" patrick@0: | patrick@0: ## The DCMI Box identifies a region of space using its geographic limits patrick@0: "dcmibox" patrick@0: | patrick@0: ## The Getty Thesaurus of Geographic Names patrick@0: "tgn" patrick@0: db.bibliocoverage.spatial-enum.attribute = patrick@0: patrick@0: ## Specifies the type of spatial coverage patrick@0: attribute spatial { db.bibliocoverage.spacial.enumeration }? patrick@0: db.bibliocoverage.spatial-other.attributes = patrick@0: patrick@0: ## Specifies the type of spatial coverage patrick@0: attribute spatial { patrick@0: patrick@0: ## Identifies a non-standard type of coverage patrick@0: "otherspatial" patrick@0: }?, patrick@0: patrick@0: ## A keyword that identifies the type of non-standard coverage patrick@0: attribute otherspatial { xsd:NMTOKEN } patrick@0: db.bibliocoverage.spatial.attribute = patrick@0: db.bibliocoverage.spatial-enum.attribute patrick@0: | db.bibliocoverage.spatial-other.attributes patrick@0: db.bibliocoverage.temporal.enumeration = patrick@0: patrick@0: ## A specification of the limits of a time interval patrick@0: "dcmiperiod" patrick@0: | patrick@0: ## W3C Encoding rules for dates and times—a profile based on ISO 8601 patrick@0: "w3c-dtf" patrick@0: db.bibliocoverage.temporal-enum.attribute = patrick@0: patrick@0: ## Specifies the type of temporal coverage patrick@0: attribute temporal { db.bibliocoverage.temporal.enumeration }? patrick@0: db.bibliocoverage.temporal-other.attributes = patrick@0: patrick@0: ## Specifies the type of temporal coverage patrick@0: attribute temporal { patrick@0: patrick@0: ## Specifies a non-standard type of coverage patrick@0: "othertemporal" patrick@0: }?, patrick@0: patrick@0: ## A keyword that identifies the type of non-standard coverage patrick@0: attribute othertemporal { xsd:NMTOKEN } patrick@0: db.bibliocoverage.temporal.attribute = patrick@0: db.bibliocoverage.temporal-enum.attribute patrick@0: | db.bibliocoverage.temporal-other.attributes patrick@0: db.bibliocoverage.coverage.attrib = patrick@0: db.bibliocoverage.spatial.attribute patrick@0: & db.bibliocoverage.temporal.attribute patrick@0: db.bibliocoverage.role.attribute = attribute role { text } patrick@0: db.bibliocoverage.attlist = patrick@0: db.bibliocoverage.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.bibliocoverage.coverage.attrib patrick@0: db.bibliocoverage = patrick@0: patrick@0: ## The spatial or temporal coverage of a document patrick@0: element bibliocoverage { db.bibliocoverage.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.legalnotice.role.attribute = attribute role { text } patrick@0: db.legalnotice.attlist = patrick@0: db.legalnotice.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.legalnotice.info = db._info.title.only patrick@0: db.legalnotice = patrick@0: patrick@0: ## A statement of legal obligations or requirements patrick@0: element legalnotice { patrick@0: db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.othercredit.class.enumeration = patrick@0: patrick@0: ## A copy editor patrick@0: "copyeditor" patrick@0: | patrick@0: ## A graphic designer patrick@0: "graphicdesigner" patrick@0: | patrick@0: ## Some other contributor patrick@0: "other" patrick@0: | patrick@0: ## A production editor patrick@0: "productioneditor" patrick@0: | patrick@0: ## A technical editor patrick@0: "technicaleditor" patrick@0: | patrick@0: ## A translator patrick@0: "translator" patrick@0: | patrick@0: ## An indexer patrick@0: "indexer" patrick@0: | patrick@0: ## A proof-reader patrick@0: "proofreader" patrick@0: | patrick@0: ## A cover designer patrick@0: "coverdesigner" patrick@0: | patrick@0: ## An interior designer patrick@0: "interiordesigner" patrick@0: | patrick@0: ## An illustrator patrick@0: "illustrator" patrick@0: | patrick@0: ## A reviewer patrick@0: "reviewer" patrick@0: | patrick@0: ## A typesetter patrick@0: "typesetter" patrick@0: | patrick@0: ## A converter (a persons responsible for conversion, not an application) patrick@0: "conversion" patrick@0: db.othercredit.class-enum.attribute = patrick@0: patrick@0: ## Identifies the nature of the contributor patrick@0: attribute class { db.othercredit.class.enumeration }? patrick@0: db.othercredit.class-other.attribute = patrick@0: patrick@0: ## Identifies the nature of the non-standard contribution patrick@0: attribute otherclass { xsd:NMTOKEN } patrick@0: db.othercredit.class-other.attributes = patrick@0: patrick@0: ## Identifies the nature of the contributor patrick@0: attribute class { patrick@0: patrick@0: ## Identifies a non-standard contribution patrick@0: "other" patrick@0: } patrick@0: & db.othercredit.class-other.attribute patrick@0: db.othercredit.class.attribute = patrick@0: db.othercredit.class-enum.attribute patrick@0: | db.othercredit.class-other.attributes patrick@0: db.othercredit.role.attribute = attribute role { text } patrick@0: db.othercredit.attlist = patrick@0: db.othercredit.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.othercredit.class.attribute patrick@0: db.othercredit = patrick@0: patrick@0: ## A person or entity, other than an author or editor, credited in a document patrick@0: element othercredit { patrick@0: db.othercredit.attlist, db.credit.contentmodel patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.pagenums.role.attribute = attribute role { text } patrick@0: db.pagenums.attlist = patrick@0: db.pagenums.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.pagenums = patrick@0: patrick@0: ## The numbers of the pages in a book, for use in a bibliographic entry patrick@0: element pagenums { db.pagenums.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.contrib.role.attribute = attribute role { text } patrick@0: db.contrib.attlist = patrick@0: db.contrib.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.contrib = patrick@0: patrick@0: ## A summary of the contributions made to a document by a credited source patrick@0: element contrib { db.contrib.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.honorific.role.attribute = attribute role { text } patrick@0: db.honorific.attlist = patrick@0: db.honorific.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.honorific = patrick@0: patrick@0: ## The title of a person patrick@0: element honorific { db.honorific.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.firstname.role.attribute = attribute role { text } patrick@0: db.firstname.attlist = patrick@0: db.firstname.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.firstname = patrick@0: patrick@0: ## A given name of a person patrick@0: element firstname { db.firstname.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.givenname.role.attribute = attribute role { text } patrick@0: db.givenname.attlist = patrick@0: db.givenname.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.givenname = patrick@0: patrick@0: ## The given name of a person patrick@0: element givenname { db.givenname.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.surname.role.attribute = attribute role { text } patrick@0: db.surname.attlist = patrick@0: db.surname.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.surname = patrick@0: patrick@0: ## An inherited or family name; in western cultures the last name patrick@0: element surname { db.surname.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.lineage.role.attribute = attribute role { text } patrick@0: db.lineage.attlist = patrick@0: db.lineage.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.lineage = patrick@0: patrick@0: ## The portion of a person's name indicating a relationship to ancestors patrick@0: element lineage { db.lineage.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.othername.role.attribute = attribute role { text } patrick@0: db.othername.attlist = patrick@0: db.othername.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.othername = patrick@0: patrick@0: ## A component of a person's name that is not a first name, surname, or lineage patrick@0: element othername { db.othername.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.printhistory.role.attribute = attribute role { text } patrick@0: db.printhistory.attlist = patrick@0: db.printhistory.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.printhistory = patrick@0: patrick@0: ## The printing history of a document patrick@0: element printhistory { db.printhistory.attlist, db.para.blocks+ } patrick@0: } patrick@0: div { patrick@0: db.pubdate.role.attribute = attribute role { text } patrick@0: db.pubdate.attlist = patrick@0: db.pubdate.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.pubdate = patrick@0: patrick@0: ## The date of publication of a document patrick@0: element pubdate { db.pubdate.attlist, db.date.contentmodel } patrick@0: } patrick@0: div { patrick@0: db.publisher.role.attribute = attribute role { text } patrick@0: db.publisher.attlist = patrick@0: db.publisher.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.publisher = patrick@0: patrick@0: ## The publisher of a document patrick@0: element publisher { patrick@0: db.publisher.attlist, db.publishername, db.address* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.publishername.role.attribute = attribute role { text } patrick@0: db.publishername.attlist = patrick@0: db.publishername.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.publishername = patrick@0: patrick@0: ## The name of the publisher of a document patrick@0: element publishername { db.publishername.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.releaseinfo.role.attribute = attribute role { text } patrick@0: db.releaseinfo.attlist = patrick@0: db.releaseinfo.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.releaseinfo = patrick@0: patrick@0: ## Information about a particular release of a document patrick@0: element releaseinfo { db.releaseinfo.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.revhistory.role.attribute = attribute role { text } patrick@0: db.revhistory.attlist = patrick@0: db.revhistory.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.revhistory.info = db._info.title.only patrick@0: db.revhistory = patrick@0: patrick@0: ## A history of the revisions to a document patrick@0: element revhistory { patrick@0: db.revhistory.attlist, db.revhistory.info, db.revision+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.revision.role.attribute = attribute role { text } patrick@0: db.revision.attlist = patrick@0: db.revision.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.revision = patrick@0: patrick@0: ## An entry describing a single revision in the history of the revisions to a document patrick@0: element revision { patrick@0: db.revision.attlist, patrick@0: db.revnumber?, patrick@0: db.date, patrick@0: (db.authorinitials | db.author)*, patrick@0: (db.revremark | db.revdescription)? patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.revnumber.role.attribute = attribute role { text } patrick@0: db.revnumber.attlist = patrick@0: db.revnumber.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.revnumber = patrick@0: patrick@0: ## A document revision number patrick@0: element revnumber { db.revnumber.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.revremark.role.attribute = attribute role { text } patrick@0: db.revremark.attlist = patrick@0: db.revremark.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.revremark = patrick@0: patrick@0: ## A description of a revision to a document patrick@0: element revremark { db.revremark.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.revdescription.role.attribute = attribute role { text } patrick@0: db.revdescription.attlist = patrick@0: db.revdescription.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.revdescription = patrick@0: patrick@0: ## A extended description of a revision to a document patrick@0: element revdescription { db.revdescription.attlist, db.all.blocks* } patrick@0: } patrick@0: div { patrick@0: db.seriesvolnums.role.attribute = attribute role { text } patrick@0: db.seriesvolnums.attlist = patrick@0: db.seriesvolnums.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.seriesvolnums = patrick@0: patrick@0: ## Numbers of the volumes in a series of books patrick@0: element seriesvolnums { db.seriesvolnums.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.volumenum.role.attribute = attribute role { text } patrick@0: db.volumenum.attlist = patrick@0: db.volumenum.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.volumenum = patrick@0: patrick@0: ## The volume number of a document in a set (as of books in a set or articles in a journal) patrick@0: element volumenum { db.volumenum.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.issuenum.role.attribute = attribute role { text } patrick@0: db.issuenum.attlist = patrick@0: db.issuenum.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.issuenum = patrick@0: patrick@0: ## The number of an issue of a journal patrick@0: element issuenum { db.issuenum.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.package.role.attribute = attribute role { text } patrick@0: db.package.attlist = patrick@0: db.package.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.package = patrick@0: patrick@0: ## A software or application package patrick@0: element package { db.package.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.email.role.attribute = attribute role { text } patrick@0: db.email.attlist = patrick@0: db.email.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.email = patrick@0: patrick@0: ## An email address patrick@0: element email { db.email.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.lineannotation.role.attribute = attribute role { text } patrick@0: db.lineannotation.attlist = patrick@0: db.lineannotation.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.lineannotation = patrick@0: patrick@0: ## A comment on a line in a verbatim listing patrick@0: element lineannotation { db.lineannotation.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.parameter.class.enumeration = patrick@0: patrick@0: ## A command patrick@0: "command" patrick@0: | patrick@0: ## A function patrick@0: "function" patrick@0: | patrick@0: ## An option patrick@0: "option" patrick@0: db.parameter.class.attribute = patrick@0: patrick@0: ## Identifies the class of parameter patrick@0: attribute class { db.parameter.class.enumeration } patrick@0: db.parameter.role.attribute = attribute role { text } patrick@0: db.parameter.attlist = patrick@0: db.parameter.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.parameter.class.attribute? patrick@0: db.parameter = patrick@0: patrick@0: ## A value or a symbolic reference to a value patrick@0: element parameter { db.parameter.attlist, db._text } patrick@0: } patrick@0: db.replaceable.inlines = db._text | db.co patrick@0: div { patrick@0: db.replaceable.class.enumeration = patrick@0: patrick@0: ## A command patrick@0: "command" patrick@0: | patrick@0: ## A function patrick@0: "function" patrick@0: | patrick@0: ## An option patrick@0: "option" patrick@0: | patrick@0: ## A parameter patrick@0: "parameter" patrick@0: db.replaceable.class.attribute = patrick@0: patrick@0: ## Identifies the nature of the replaceable text patrick@0: attribute class { db.replaceable.class.enumeration } patrick@0: db.replaceable.role.attribute = attribute role { text } patrick@0: db.replaceable.attlist = patrick@0: db.replaceable.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.replaceable.class.attribute? patrick@0: db.replaceable = patrick@0: patrick@0: ## Content that may or must be replaced by the user patrick@0: element replaceable { patrick@0: db.replaceable.attlist, db.replaceable.inlines* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.uri.type.attribute = patrick@0: patrick@0: ## Identifies the type of URI specified patrick@0: attribute type { text }? patrick@0: db.uri.role.attribute = attribute role { text } patrick@0: db.uri.attlist = patrick@0: db.uri.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.uri.type.attribute patrick@0: db.uri = patrick@0: patrick@0: ## A Uniform Resource Identifier patrick@0: element uri { db.uri.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.abbrev.role.attribute = attribute role { text } patrick@0: db.abbrev.attlist = patrick@0: db.abbrev.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.abbrev = patrick@0: patrick@0: ## An abbreviation, especially one followed by a period patrick@0: element abbrev { patrick@0: db.abbrev.attlist, patrick@0: (db._text | db.superscript | db.subscript | db.trademark)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.acronym.role.attribute = attribute role { text } patrick@0: db.acronym.attlist = patrick@0: db.acronym.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.acronym = patrick@0: patrick@0: ## An often pronounceable word made from the initial (or selected) letters of a name or phrase patrick@0: element acronym { patrick@0: db.acronym.attlist, patrick@0: (db._text | db.superscript | db.subscript | db.trademark)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.citation.role.attribute = attribute role { text } patrick@0: db.citation.attlist = patrick@0: db.citation.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.citation = patrick@0: patrick@0: ## An inline bibliographic reference to another published work patrick@0: element citation { db.citation.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.citerefentry.role.attribute = attribute role { text } patrick@0: db.citerefentry.attlist = patrick@0: db.citerefentry.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.citerefentry = patrick@0: patrick@0: ## A citation to a reference page patrick@0: element citerefentry { patrick@0: db.citerefentry.attlist, db.refentrytitle, db.manvolnum? patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.refentrytitle.role.attribute = attribute role { text } patrick@0: db.refentrytitle.attlist = patrick@0: db.refentrytitle.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.refentrytitle = patrick@0: patrick@0: ## The title of a reference page patrick@0: element refentrytitle { db.refentrytitle.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.manvolnum.role.attribute = attribute role { text } patrick@0: db.manvolnum.attlist = patrick@0: db.manvolnum.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.manvolnum = patrick@0: patrick@0: ## A reference volume number patrick@0: element manvolnum { db.manvolnum.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.citetitle.pubwork.enumeration = patrick@0: patrick@0: ## An article patrick@0: "article" patrick@0: | patrick@0: ## A bulletin board system patrick@0: "bbs" patrick@0: | patrick@0: ## A book patrick@0: "book" patrick@0: | patrick@0: ## A CD-ROM patrick@0: "cdrom" patrick@0: | patrick@0: ## A chapter (as of a book) patrick@0: "chapter" patrick@0: | patrick@0: ## A DVD patrick@0: "dvd" patrick@0: | patrick@0: ## An email message patrick@0: "emailmessage" patrick@0: | patrick@0: ## A gopher page patrick@0: "gopher" patrick@0: | patrick@0: ## A journal patrick@0: "journal" patrick@0: | patrick@0: ## A manuscript patrick@0: "manuscript" patrick@0: | patrick@0: ## A posting to a newsgroup patrick@0: "newsposting" patrick@0: | patrick@0: ## A part (as of a book) patrick@0: "part" patrick@0: | patrick@0: ## A reference entry patrick@0: "refentry" patrick@0: | patrick@0: ## A section (as of a book or article) patrick@0: "section" patrick@0: | patrick@0: ## A series patrick@0: "series" patrick@0: | patrick@0: ## A set (as of books) patrick@0: "set" patrick@0: | patrick@0: ## A web page patrick@0: "webpage" patrick@0: | patrick@0: ## A wiki page patrick@0: "wiki" patrick@0: db.citetitle.pubwork.attribute = patrick@0: patrick@0: ## Identifies the nature of the publication being cited patrick@0: attribute pubwork { db.citetitle.pubwork.enumeration } patrick@0: db.citetitle.role.attribute = attribute role { text } patrick@0: db.citetitle.attlist = patrick@0: db.citetitle.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.citetitle.pubwork.attribute? patrick@0: db.citetitle = patrick@0: patrick@0: ## The title of a cited work patrick@0: element citetitle { db.citetitle.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.emphasis.role.attribute = attribute role { text } patrick@0: db.emphasis.attlist = patrick@0: db.emphasis.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.emphasis = patrick@0: patrick@0: ## Emphasized text patrick@0: element emphasis { db.emphasis.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db._emphasis = patrick@0: patrick@0: ## A limited span of emphasized text patrick@0: element emphasis { db.emphasis.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.foreignphrase.role.attribute = attribute role { text } patrick@0: db.foreignphrase.attlist = patrick@0: db.foreignphrase.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.foreignphrase = patrick@0: patrick@0: ## A word or phrase in a language other than the primary language of the document patrick@0: element foreignphrase { patrick@0: db.foreignphrase.attlist, (text | db.general.inlines)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db._foreignphrase.role.attribute = attribute role { text } patrick@0: db._foreignphrase.attlist = patrick@0: db._foreignphrase.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db._foreignphrase = patrick@0: patrick@0: ## A limited word or phrase in a language other than the primary language of the document patrick@0: element foreignphrase { db._foreignphrase.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.phrase.role.attribute = attribute role { text } patrick@0: db.phrase.attlist = patrick@0: db.phrase.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.phrase = patrick@0: patrick@0: ## A span of text patrick@0: element phrase { db.phrase.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db._phrase = patrick@0: patrick@0: ## A limited span of text patrick@0: element phrase { db.phrase.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.quote.role.attribute = attribute role { text } patrick@0: db.quote.attlist = patrick@0: db.quote.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.quote = patrick@0: patrick@0: ## An inline quotation patrick@0: element quote { db.quote.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db._quote.role.attribute = attribute role { text } patrick@0: db._quote.attlist = patrick@0: db._quote.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db._quote = patrick@0: patrick@0: ## A limited inline quotation patrick@0: element quote { db._quote.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.subscript.role.attribute = attribute role { text } patrick@0: db.subscript.attlist = patrick@0: db.subscript.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.subscript = patrick@0: patrick@0: ## A subscript (as in H2 patrick@0: ## O, the molecular formula for water) patrick@0: element subscript { db.subscript.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.superscript.role.attribute = attribute role { text } patrick@0: db.superscript.attlist = patrick@0: db.superscript.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.superscript = patrick@0: patrick@0: ## A superscript (as in x2 patrick@0: ## , the mathematical notation for x multiplied by itself) patrick@0: element superscript { db.superscript.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.trademark.class.enumeration = patrick@0: patrick@0: ## A copyright patrick@0: "copyright" patrick@0: | patrick@0: ## A registered copyright patrick@0: "registered" patrick@0: | patrick@0: ## A service patrick@0: "service" patrick@0: | patrick@0: ## A trademark patrick@0: "trade" patrick@0: db.trademark.class.attribute = patrick@0: patrick@0: ## Identifies the class of trade mark patrick@0: attribute class { db.trademark.class.enumeration } patrick@0: db.trademark.role.attribute = attribute role { text } patrick@0: db.trademark.attlist = patrick@0: db.trademark.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.trademark.class.attribute? patrick@0: db.trademark = patrick@0: patrick@0: ## A trademark patrick@0: element trademark { db.trademark.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.wordasword.role.attribute = attribute role { text } patrick@0: db.wordasword.attlist = patrick@0: db.wordasword.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.wordasword = patrick@0: patrick@0: ## A word meant specifically as a word and not representing anything else patrick@0: element wordasword { db.wordasword.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.footnoteref.role.attribute = attribute role { text } patrick@0: db.footnoteref.label.attribute = db.label.attribute patrick@0: db.footnoteref.attlist = patrick@0: db.footnoteref.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.linkend.attribute patrick@0: & db.footnoteref.label.attribute? patrick@0: db.footnoteref = patrick@0: patrick@0: ## A cross reference to a footnote (a footnote mark) patrick@0: element footnoteref { db.footnoteref.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.xref.role.attribute = attribute role { text } patrick@0: db.xref.xrefstyle.attribute = db.xrefstyle.attribute patrick@0: db.xref.endterm.attribute = db.endterm.attribute patrick@0: db.xref.attlist = patrick@0: db.xref.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.req.linking.attributes patrick@0: & db.xref.xrefstyle.attribute? patrick@0: & db.xref.endterm.attribute? patrick@0: db.xref = patrick@0: patrick@0: ## A cross reference to another part of the document patrick@0: element xref { db.xref.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.link.role.attribute = attribute role { text } patrick@0: db.link.xrefstyle.attribute = db.xrefstyle.attribute patrick@0: db.link.endterm.attribute = db.endterm.attribute patrick@0: db.link.attlist = patrick@0: db.link.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.req.linking.attributes patrick@0: & db.link.xrefstyle.attribute? patrick@0: & db.link.endterm.attribute? patrick@0: db.link = patrick@0: patrick@0: ## A hypertext link patrick@0: element link { db.link.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.olink.role.attribute = attribute role { text } patrick@0: db.olink.xrefstyle.attribute = db.xrefstyle.attribute patrick@0: db.olink.localinfo.attribute = patrick@0: patrick@0: ## Holds additional information that may be used by the application when resolving the link patrick@0: attribute localinfo { text } patrick@0: db.olink.targetdoc.attribute = patrick@0: patrick@0: ## Specifies the URI of the document in which the link target appears patrick@0: attribute targetdoc { xsd:anyURI } patrick@0: db.olink.targetptr.attribute = patrick@0: patrick@0: ## Specifies the location of the link target in the document patrick@0: attribute targetptr { text } patrick@0: db.olink.type.attribute = patrick@0: patrick@0: ## Identifies application-specific customization of the link behavior patrick@0: attribute type { text } patrick@0: db.olink.attlist = patrick@0: db.common.attributes patrick@0: & db.olink.targetdoc.attribute? patrick@0: & db.olink.role.attribute? patrick@0: & db.olink.xrefstyle.attribute? patrick@0: & db.olink.localinfo.attribute? patrick@0: & db.olink.targetptr.attribute? patrick@0: & db.olink.type.attribute? patrick@0: db.olink = patrick@0: patrick@0: ## A link that addresses its target indirectly patrick@0: element olink { db.olink.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.anchor.role.attribute = attribute role { text } patrick@0: db.anchor.attlist = patrick@0: db.anchor.role.attribute? & db.common.idreq.attributes patrick@0: db.anchor = patrick@0: patrick@0: ## A spot in the document patrick@0: element anchor { db.anchor.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.alt.role.attribute = attribute role { text } patrick@0: db.alt.attlist = db.alt.role.attribute? & db.common.attributes patrick@0: db.alt = patrick@0: patrick@0: ## A text-only annotation, often used for accessibility patrick@0: element alt { db.alt.attlist, (text | db.inlinemediaobject)* } patrick@0: } patrick@0: db.status.attribute = patrick@0: patrick@0: ## Identifies the editorial or publication status of the element on which it occurs patrick@0: attribute status { text } patrick@0: db.toplevel.sections = patrick@0: ((db.section+, db.simplesect*) | db.simplesect+) patrick@0: | (db.sect1+, db.simplesect*) patrick@0: | db.refentry+ patrick@0: db.toplevel.blocks.or.sections = patrick@0: (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections patrick@0: db.recursive.sections = patrick@0: ((db.section+, db.simplesect*) | db.simplesect+) patrick@0: | db.refentry+ patrick@0: db.recursive.blocks.or.sections = patrick@0: (db.all.blocks+, db.recursive.sections?) | db.recursive.sections patrick@0: db.divisions = db.part | db.reference patrick@0: db.components = patrick@0: db.dedication patrick@0: | db.acknowledgements patrick@0: | db.preface patrick@0: | db.chapter patrick@0: | db.appendix patrick@0: | db.article patrick@0: | db.colophon patrick@0: db.navigation.components = patrick@0: notAllowed | db.glossary | db.bibliography | db.index | db.toc patrick@0: db.component.contentmodel = patrick@0: db.navigation.components*, patrick@0: db.toplevel.blocks.or.sections, patrick@0: db.navigation.components* patrick@0: db.setindex.components = notAllowed | db.setindex patrick@0: db.toc.components = notAllowed | db.toc patrick@0: db.set.components = db.set | db.book patrick@0: div { patrick@0: db.set.status.attribute = db.status.attribute patrick@0: db.set.role.attribute = attribute role { text } patrick@0: db.set.attlist = patrick@0: db.set.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.set.status.attribute? patrick@0: db.set.info = db._info.title.req patrick@0: db.set = patrick@0: patrick@0: ## A collection of books patrick@0: element set { patrick@0: db.set.attlist, patrick@0: db.set.info, patrick@0: db.toc.components?, patrick@0: db.set.components+, patrick@0: db.setindex.components? patrick@0: } patrick@0: } patrick@0: db.book.components = patrick@0: (db.navigation.components | db.components | db.divisions)* | db.topic* patrick@0: div { patrick@0: db.book.status.attribute = db.status.attribute patrick@0: db.book.role.attribute = attribute role { text } patrick@0: db.book.attlist = patrick@0: db.book.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.book.status.attribute? patrick@0: db.book.info = db._info patrick@0: db.book = patrick@0: patrick@0: ## A book patrick@0: element book { db.book.attlist, db.book.info, db.book.components } patrick@0: } patrick@0: div { patrick@0: db.dedication.status.attribute = db.status.attribute patrick@0: db.dedication.role.attribute = attribute role { text } patrick@0: db.dedication.attlist = patrick@0: db.dedication.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.dedication.status.attribute? patrick@0: db.dedication.info = db._info patrick@0: db.dedication = patrick@0: patrick@0: ## The dedication of a book or other component patrick@0: element dedication { patrick@0: db.dedication.attlist, db.dedication.info, db.all.blocks+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.acknowledgements.status.attribute = db.status.attribute patrick@0: db.acknowledgements.role.attribute = attribute role { text } patrick@0: db.acknowledgements.attlist = patrick@0: db.acknowledgements.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.acknowledgements.status.attribute? patrick@0: db.acknowledgements.info = db._info patrick@0: db.acknowledgements = patrick@0: patrick@0: ## Acknowledgements of a book or other component patrick@0: element acknowledgements { patrick@0: db.acknowledgements.attlist, patrick@0: db.acknowledgements.info, patrick@0: db.all.blocks+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.colophon.status.attribute = db.status.attribute patrick@0: db.colophon.role.attribute = attribute role { text } patrick@0: db.colophon.attlist = patrick@0: db.colophon.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.colophon.status.attribute? patrick@0: db.colophon.info = db._info patrick@0: db.colophon = patrick@0: patrick@0: ## Text at the back of a book describing facts about its production patrick@0: element colophon { patrick@0: db.colophon.attlist, patrick@0: db.colophon.info, patrick@0: ((db.all.blocks+, db.simplesect*) patrick@0: | (db.all.blocks*, db.simplesect+)) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.appendix.status.attribute = db.status.attribute patrick@0: db.appendix.role.attribute = attribute role { text } patrick@0: db.appendix.attlist = patrick@0: db.appendix.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.appendix.status.attribute? patrick@0: db.appendix.info = db._info.title.req patrick@0: db.appendix = patrick@0: patrick@0: ## An appendix in a book or article patrick@0: element appendix { patrick@0: db.appendix.attlist, db.appendix.info, db.component.contentmodel patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.chapter.status.attribute = db.status.attribute patrick@0: db.chapter.role.attribute = attribute role { text } patrick@0: db.chapter.attlist = patrick@0: db.chapter.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.chapter.status.attribute? patrick@0: db.chapter.info = db._info.title.req patrick@0: db.chapter = patrick@0: patrick@0: ## A chapter, as of a book patrick@0: element chapter { patrick@0: db.chapter.attlist, db.chapter.info, db.component.contentmodel patrick@0: } patrick@0: } patrick@0: db.part.components = patrick@0: (db.navigation.components | db.components) patrick@0: | (db.refentry | db.reference) patrick@0: db.part.contentmodel = db.part.components+ | db.topic+ patrick@0: div { patrick@0: db.part.status.attribute = db.status.attribute patrick@0: db.part.role.attribute = attribute role { text } patrick@0: db.part.attlist = patrick@0: db.part.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.part.status.attribute? patrick@0: db.part.info = db._info.title.req patrick@0: db.part = patrick@0: patrick@0: ## A division in a book patrick@0: element part { patrick@0: db.part.attlist, db.part.info, db.partintro?, db.part.contentmodel patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.preface.status.attribute = db.status.attribute patrick@0: db.preface.role.attribute = attribute role { text } patrick@0: db.preface.attlist = patrick@0: db.preface.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.preface.status.attribute? patrick@0: db.preface.info = db._info.title.req patrick@0: db.preface = patrick@0: patrick@0: ## Introductory matter preceding the first chapter of a book patrick@0: element preface { patrick@0: db.preface.attlist, db.preface.info, db.component.contentmodel patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.partintro.status.attribute = db.status.attribute patrick@0: db.partintro.role.attribute = attribute role { text } patrick@0: db.partintro.attlist = patrick@0: db.partintro.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.partintro.status.attribute? patrick@0: db.partintro.info = db._info patrick@0: db.partintro = patrick@0: patrick@0: ## An introduction to the contents of a part patrick@0: element partintro { patrick@0: db.partintro.attlist, patrick@0: db.partintro.info, patrick@0: db.toplevel.blocks.or.sections patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.section.status.attribute = db.status.attribute patrick@0: db.section.role.attribute = attribute role { text } patrick@0: db.section.attlist = patrick@0: db.section.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.section.status.attribute? patrick@0: db.section.info = db._info.title.req patrick@0: db.section = patrick@0: patrick@0: ## A recursive section patrick@0: element section { patrick@0: db.section.attlist, patrick@0: db.section.info, patrick@0: db.recursive.blocks.or.sections, patrick@0: db.navigation.components* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.simplesect.status.attribute = db.status.attribute patrick@0: db.simplesect.role.attribute = attribute role { text } patrick@0: db.simplesect.attlist = patrick@0: db.simplesect.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.simplesect.status.attribute? patrick@0: db.simplesect.info = db._info.title.req patrick@0: db.simplesect = patrick@0: patrick@0: ## A section of a document with no subdivisions patrick@0: element simplesect { patrick@0: db.simplesect.attlist, db.simplesect.info, db.all.blocks+ patrick@0: } patrick@0: } patrick@0: db.article.components = db.toplevel.sections patrick@0: div { patrick@0: db.article.status.attribute = db.status.attribute patrick@0: db.article.class.enumeration = patrick@0: patrick@0: ## A collection of frequently asked questions. patrick@0: "faq" patrick@0: | patrick@0: ## An article in a journal or other periodical. patrick@0: "journalarticle" patrick@0: | patrick@0: ## A description of a product. patrick@0: "productsheet" patrick@0: | patrick@0: ## A specification. patrick@0: "specification" patrick@0: | patrick@0: ## A technical report. patrick@0: "techreport" patrick@0: | patrick@0: ## A white paper. patrick@0: "whitepaper" patrick@0: db.article.class.attribute = patrick@0: patrick@0: ## Identifies the nature of the article patrick@0: attribute class { db.article.class.enumeration } patrick@0: db.article.role.attribute = attribute role { text } patrick@0: db.article.attlist = patrick@0: db.article.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.article.status.attribute? patrick@0: & db.article.class.attribute? patrick@0: db.article.info = db._info.title.req patrick@0: db.article = patrick@0: patrick@0: ## An article patrick@0: element article { patrick@0: db.article.attlist, patrick@0: db.article.info, patrick@0: (db.navigation.components patrick@0: | db.appendix patrick@0: | db.acknowledgements patrick@0: | db.colophon)*, patrick@0: ((db.all.blocks+, db.article.components?) patrick@0: | db.article.components), patrick@0: (db.navigation.components patrick@0: | db.appendix patrick@0: | db.acknowledgements patrick@0: | db.colophon)* patrick@0: } patrick@0: } patrick@0: db.annotations.attribute = patrick@0: patrick@0: ## Identifies one or more annotations that apply to this element patrick@0: attribute annotations { text } patrick@0: div { patrick@0: db.annotation.role.attribute = attribute role { text } patrick@0: db.annotation.annotates.attribute = patrick@0: patrick@0: ## Identifies one ore more elements to which this annotation applies patrick@0: attribute annotates { text } patrick@0: db.annotation.attlist = patrick@0: db.annotation.role.attribute? patrick@0: & db.annotation.annotates.attribute? patrick@0: & db.common.attributes patrick@0: db.annotation.info = db._info.title.only patrick@0: db.annotation = patrick@0: patrick@0: ## An annotation patrick@0: element annotation { patrick@0: db.annotation.attlist, db.annotation.info, db.all.blocks+ patrick@0: } patrick@0: } patrick@0: db.xlink.from.attribute = patrick@0: patrick@0: ## Specifies the XLink traversal-from patrick@0: attribute xlink:from { xsd:NMTOKEN } patrick@0: db.xlink.label.attribute = patrick@0: patrick@0: ## Specifies the XLink label patrick@0: attribute xlink:label { xsd:NMTOKEN } patrick@0: db.xlink.to.attribute = patrick@0: patrick@0: ## Specifies the XLink traversal-to patrick@0: attribute xlink:to { xsd:NMTOKEN } patrick@0: div { patrick@0: db.extendedlink.role.attribute = attribute role { text } patrick@0: db.extendedlink.attlist = patrick@0: db.extendedlink.role.attribute? patrick@0: & db.common.attributes patrick@0: & patrick@0: ## Identifies the XLink link type patrick@0: [ a:defaultValue = "extended" ] patrick@0: attribute xlink:type { patrick@0: patrick@0: ## An XLink extended link patrick@0: "extended" patrick@0: }? patrick@0: & db.xlink.role.attribute? patrick@0: & db.xlink.title.attribute? patrick@0: db.extendedlink = patrick@0: patrick@0: ## An XLink extended link patrick@0: element extendedlink { patrick@0: db.extendedlink.attlist, (db.locator | db.arc)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.locator.role.attribute = attribute role { text } patrick@0: db.locator.attlist = patrick@0: db.locator.role.attribute? patrick@0: & db.common.attributes patrick@0: & patrick@0: ## Identifies the XLink link type patrick@0: [ a:defaultValue = "locator" ] patrick@0: attribute xlink:type { patrick@0: patrick@0: ## An XLink locator link patrick@0: "locator" patrick@0: }? patrick@0: & db.xlink.href.attribute patrick@0: & db.xlink.role.attribute? patrick@0: & db.xlink.title.attribute? patrick@0: & db.xlink.label.attribute? patrick@0: db.locator = patrick@0: patrick@0: ## An XLink locator in an extendedlink patrick@0: element locator { db.locator.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.arc.role.attribute = attribute role { text } patrick@0: db.arc.attlist = patrick@0: db.arc.role.attribute? patrick@0: & db.common.attributes patrick@0: & patrick@0: ## Identifies the XLink link type patrick@0: [ a:defaultValue = "arc" ] patrick@0: attribute xlink:type { patrick@0: patrick@0: ## An XLink arc link patrick@0: "arc" patrick@0: }? patrick@0: & db.xlink.arcrole.attribute? patrick@0: & db.xlink.title.attribute? patrick@0: & db.xlink.show.attribute? patrick@0: & db.xlink.actuate.attribute? patrick@0: & db.xlink.from.attribute? patrick@0: & db.xlink.to.attribute? patrick@0: db.arc = patrick@0: patrick@0: ## An XLink arc in an extendedlink patrick@0: element arc { db.arc.attlist, empty } patrick@0: } patrick@0: db.sect1.sections = (db.sect2+, db.simplesect*) | db.simplesect+ patrick@0: div { patrick@0: db.sect1.status.attribute = db.status.attribute patrick@0: db.sect1.role.attribute = attribute role { text } patrick@0: db.sect1.attlist = patrick@0: db.sect1.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.sect1.status.attribute? patrick@0: db.sect1.info = db._info.title.req patrick@0: db.sect1 = patrick@0: patrick@0: ## A top-level section of document patrick@0: element sect1 { patrick@0: db.sect1.attlist, patrick@0: db.sect1.info, patrick@0: ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections), patrick@0: db.navigation.components* patrick@0: } patrick@0: } patrick@0: db.sect2.sections = (db.sect3+, db.simplesect*) | db.simplesect+ patrick@0: div { patrick@0: db.sect2.status.attribute = db.status.attribute patrick@0: db.sect2.role.attribute = attribute role { text } patrick@0: db.sect2.attlist = patrick@0: db.sect2.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.sect2.status.attribute? patrick@0: db.sect2.info = db._info.title.req patrick@0: db.sect2 = patrick@0: patrick@0: ## A subsection within a sect1 patrick@0: element sect2 { patrick@0: db.sect2.attlist, patrick@0: db.sect2.info, patrick@0: ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections), patrick@0: db.navigation.components* patrick@0: } patrick@0: } patrick@0: db.sect3.sections = (db.sect4+, db.simplesect*) | db.simplesect+ patrick@0: div { patrick@0: db.sect3.status.attribute = db.status.attribute patrick@0: db.sect3.role.attribute = attribute role { text } patrick@0: db.sect3.attlist = patrick@0: db.sect3.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.sect3.status.attribute? patrick@0: db.sect3.info = db._info.title.req patrick@0: db.sect3 = patrick@0: patrick@0: ## A subsection within a sect2 patrick@0: element sect3 { patrick@0: db.sect3.attlist, patrick@0: db.sect3.info, patrick@0: ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections), patrick@0: db.navigation.components* patrick@0: } patrick@0: } patrick@0: db.sect4.sections = (db.sect5+, db.simplesect*) | db.simplesect+ patrick@0: div { patrick@0: db.sect4.status.attribute = db.status.attribute patrick@0: db.sect4.role.attribute = attribute role { text } patrick@0: db.sect4.attlist = patrick@0: db.sect4.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.sect4.status.attribute? patrick@0: db.sect4.info = db._info.title.req patrick@0: db.sect4 = patrick@0: patrick@0: ## A subsection within a sect3 patrick@0: element sect4 { patrick@0: db.sect4.attlist, patrick@0: db.sect4.info, patrick@0: ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections), patrick@0: db.navigation.components* patrick@0: } patrick@0: } patrick@0: db.sect5.sections = db.simplesect+ patrick@0: div { patrick@0: db.sect5.status.attribute = db.status.attribute patrick@0: db.sect5.role.attribute = attribute role { text } patrick@0: db.sect5.attlist = patrick@0: db.sect5.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.sect5.status.attribute? patrick@0: db.sect5.info = db._info.title.req patrick@0: db.sect5 = patrick@0: patrick@0: ## A subsection within a sect4 patrick@0: element sect5 { patrick@0: db.sect5.attlist, patrick@0: db.sect5.info, patrick@0: ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections), patrick@0: db.navigation.components* patrick@0: } patrick@0: } patrick@0: db.toplevel.refsection = db.refsection+ | db.refsect1+ patrick@0: db.secondlevel.refsection = db.refsection+ | db.refsect2+ patrick@0: db.reference.components = db.refentry patrick@0: div { patrick@0: db.reference.status.attribute = db.status.attribute patrick@0: db.reference.role.attribute = attribute role { text } patrick@0: db.reference.attlist = patrick@0: db.reference.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.reference.status.attribute? patrick@0: & db.label.attribute? patrick@0: db.reference.info = db._info.title.req patrick@0: db.reference = patrick@0: patrick@0: ## A collection of reference entries patrick@0: element reference { patrick@0: db.reference.attlist, patrick@0: db.reference.info, patrick@0: db.partintro?, patrick@0: db.reference.components+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.refentry.status.attribute = db.status.attribute patrick@0: db.refentry.role.attribute = attribute role { text } patrick@0: db.refentry.attlist = patrick@0: db.refentry.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.refentry.status.attribute? patrick@0: & db.label.attribute? patrick@0: db.refentry.info = db._info.title.forbidden patrick@0: db.refentry = patrick@0: patrick@0: ## A reference page (originally a UNIX man-style reference page) patrick@0: element refentry { patrick@0: db.refentry.attlist, patrick@0: db.indexterm*, patrick@0: db.refentry.info, patrick@0: db.refmeta?, patrick@0: db.refnamediv+, patrick@0: db.refsynopsisdiv?, patrick@0: db.toplevel.refsection patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.refmeta.role.attribute = attribute role { text } patrick@0: db.refmeta.attlist = patrick@0: db.refmeta.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.refmeta = patrick@0: patrick@0: ## Meta-information for a reference entry patrick@0: element refmeta { patrick@0: db.refmeta.attlist, patrick@0: db.indexterm*, patrick@0: db.refentrytitle, patrick@0: db.manvolnum?, patrick@0: db.refmiscinfo*, patrick@0: db.indexterm* patrick@0: } patrick@0: } patrick@0: db.refmiscinfo.class.enumeration = patrick@0: patrick@0: ## The name of the software product or component to which this topic applies patrick@0: "source" patrick@0: | patrick@0: ## The version of the software product or component to which this topic applies patrick@0: "version" patrick@0: | patrick@0: ## The section title of the reference page (e.g., User Commands) patrick@0: "manual" patrick@0: | patrick@0: ## The section title of the reference page (believed synonymous with "manual" but in wide use) patrick@0: "sectdesc" patrick@0: | patrick@0: ## The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) patrick@0: "software" patrick@0: db.refmiscinfo.class-enum.attribute = patrick@0: patrick@0: ## Identifies the kind of miscellaneous information patrick@0: attribute class { db.refmiscinfo.class.enumeration }? patrick@0: db.refmiscinfo.class-other.attribute = patrick@0: patrick@0: ## Identifies the nature of non-standard miscellaneous information patrick@0: attribute otherclass { text } patrick@0: db.refmiscinfo.class-other.attributes = patrick@0: patrick@0: ## Identifies the kind of miscellaneious information patrick@0: attribute class { patrick@0: patrick@0: ## Indicates that the information is some 'other' kind. patrick@0: "other" patrick@0: } patrick@0: & db.refmiscinfo.class-other.attribute patrick@0: db.refmiscinfo.class.attribute = patrick@0: db.refmiscinfo.class-enum.attribute patrick@0: | db.refmiscinfo.class-other.attributes patrick@0: div { patrick@0: db.refmiscinfo.role.attribute = attribute role { text } patrick@0: db.refmiscinfo.attlist = patrick@0: db.refmiscinfo.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.refmiscinfo.class.attribute? patrick@0: db.refmiscinfo = patrick@0: patrick@0: ## Meta-information for a reference entry other than the title and volume number patrick@0: element refmiscinfo { db.refmiscinfo.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.refnamediv.role.attribute = attribute role { text } patrick@0: db.refnamediv.attlist = patrick@0: db.refnamediv.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.refnamediv = patrick@0: patrick@0: ## The name, purpose, and classification of a reference page patrick@0: element refnamediv { patrick@0: db.refnamediv.attlist, patrick@0: db.refdescriptor?, patrick@0: db.refname+, patrick@0: db.refpurpose, patrick@0: db.refclass* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.refdescriptor.role.attribute = attribute role { text } patrick@0: db.refdescriptor.attlist = patrick@0: db.refdescriptor.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.refdescriptor = patrick@0: patrick@0: ## A description of the topic of a reference page patrick@0: element refdescriptor { db.refdescriptor.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.refname.role.attribute = attribute role { text } patrick@0: db.refname.attlist = patrick@0: db.refname.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.refname = patrick@0: patrick@0: ## The name of (one of) the subject(s) of a reference page patrick@0: element refname { db.refname.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.refpurpose.role.attribute = attribute role { text } patrick@0: db.refpurpose.attlist = patrick@0: db.refpurpose.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.refpurpose = patrick@0: patrick@0: ## A short (one sentence) synopsis of the topic of a reference page patrick@0: element refpurpose { db.refpurpose.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.refclass.role.attribute = attribute role { text } patrick@0: db.refclass.attlist = patrick@0: db.refclass.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.refclass = patrick@0: patrick@0: ## The scope or other indication of applicability of a reference entry patrick@0: element refclass { db.refclass.attlist, (text | db.application)* } patrick@0: } patrick@0: div { patrick@0: db.refsynopsisdiv.role.attribute = attribute role { text } patrick@0: db.refsynopsisdiv.attlist = patrick@0: db.refsynopsisdiv.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.refsynopsisdiv.info = db._info patrick@0: db.refsynopsisdiv = patrick@0: patrick@0: ## A syntactic synopsis of the subject of the reference page patrick@0: element refsynopsisdiv { patrick@0: db.refsynopsisdiv.attlist, patrick@0: db.refsynopsisdiv.info, patrick@0: ((db.all.blocks+, db.secondlevel.refsection?) patrick@0: | db.secondlevel.refsection) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.refsection.status.attribute = db.status.attribute patrick@0: db.refsection.role.attribute = attribute role { text } patrick@0: db.refsection.attlist = patrick@0: db.refsection.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.refsection.status.attribute? patrick@0: & db.label.attribute? patrick@0: db.refsection.info = db._info.title.req patrick@0: db.refsection = patrick@0: patrick@0: ## A recursive section in a refentry patrick@0: element refsection { patrick@0: db.refsection.attlist, patrick@0: db.refsection.info, patrick@0: ((db.all.blocks+, db.refsection*) | db.refsection+) patrick@0: } patrick@0: } patrick@0: db.refsect1.sections = db.refsect2+ patrick@0: div { patrick@0: db.refsect1.status.attribute = db.status.attribute patrick@0: db.refsect1.role.attribute = attribute role { text } patrick@0: db.refsect1.attlist = patrick@0: db.refsect1.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.refsect1.status.attribute? patrick@0: db.refsect1.info = db._info.title.req patrick@0: db.refsect1 = patrick@0: patrick@0: ## A major subsection of a reference entry patrick@0: element refsect1 { patrick@0: db.refsect1.attlist, patrick@0: db.refsect1.info, patrick@0: ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections) patrick@0: } patrick@0: } patrick@0: db.refsect2.sections = db.refsect3+ patrick@0: div { patrick@0: db.refsect2.status.attribute = db.status.attribute patrick@0: db.refsect2.role.attribute = attribute role { text } patrick@0: db.refsect2.attlist = patrick@0: db.refsect2.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.refsect2.status.attribute? patrick@0: db.refsect2.info = db._info.title.req patrick@0: db.refsect2 = patrick@0: patrick@0: ## A subsection of a refsect1 patrick@0: element refsect2 { patrick@0: db.refsect2.attlist, patrick@0: db.refsect2.info, patrick@0: ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.refsect3.status.attribute = db.status.attribute patrick@0: db.refsect3.role.attribute = attribute role { text } patrick@0: db.refsect3.attlist = patrick@0: db.refsect3.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.refsect3.status.attribute? patrick@0: db.refsect3.info = db._info.title.req patrick@0: db.refsect3 = patrick@0: patrick@0: ## A subsection of a refsect2 patrick@0: element refsect3 { patrick@0: db.refsect3.attlist, db.refsect3.info, db.all.blocks+ patrick@0: } patrick@0: } patrick@0: db.glossary.inlines = patrick@0: db.firstterm | db.glossterm | db._firstterm | db._glossterm patrick@0: db.baseform.attribute = patrick@0: patrick@0: ## Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. patrick@0: attribute baseform { text }? patrick@0: div { patrick@0: db.glosslist.role.attribute = attribute role { text } patrick@0: db.glosslist.attlist = patrick@0: db.glosslist.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.glosslist.info = db._info.title.only patrick@0: db.glosslist = patrick@0: patrick@0: ## A wrapper for a list of glossary entries patrick@0: element glosslist { patrick@0: db.glosslist.attlist, patrick@0: db.glosslist.info?, patrick@0: db.all.blocks*, patrick@0: db.glossentry+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.glossentry.role.attribute = attribute role { text } patrick@0: db.glossentry.sortas.attribute = patrick@0: patrick@0: ## Specifies the string by which the element's content is to be sorted; if unspecified, the content is used patrick@0: attribute sortas { text } patrick@0: db.glossentry.attlist = patrick@0: db.glossentry.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.glossentry.sortas.attribute? patrick@0: db.glossentry = patrick@0: patrick@0: ## An entry in a glossary or glosslist patrick@0: element glossentry { patrick@0: db.glossentry.attlist, patrick@0: db.glossterm, patrick@0: db.acronym?, patrick@0: db.abbrev?, patrick@0: db.indexterm*, patrick@0: (db.glosssee | db.glossdef+) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.glossdef.role.attribute = attribute role { text } patrick@0: db.glossdef.subject.attribute = patrick@0: patrick@0: ## Specifies a list of keywords for the definition patrick@0: attribute subject { text } patrick@0: db.glossdef.attlist = patrick@0: db.glossdef.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.glossdef.subject.attribute? patrick@0: db.glossdef = patrick@0: patrick@0: ## A definition in a glossentry patrick@0: element glossdef { patrick@0: db.glossdef.attlist, db.all.blocks+, db.glossseealso* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.glosssee.role.attribute = attribute role { text } patrick@0: db.glosssee.otherterm.attribute = patrick@0: patrick@0: ## Identifies the other term patrick@0: attribute otherterm { xsd:IDREF } patrick@0: db.glosssee.attlist = patrick@0: db.glosssee.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.glosssee.otherterm.attribute? patrick@0: db.glosssee = patrick@0: patrick@0: ## A cross-reference from one glossentry patrick@0: ## to another patrick@0: element glosssee { db.glosssee.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.glossseealso.role.attribute = attribute role { text } patrick@0: db.glossseealso.otherterm.attribute = patrick@0: patrick@0: ## Identifies the other term patrick@0: attribute otherterm { xsd:IDREF } patrick@0: db.glossseealso.attlist = patrick@0: db.glossseealso.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.glossseealso.otherterm.attribute? patrick@0: db.glossseealso = patrick@0: patrick@0: ## A cross-reference from one glossentry to another patrick@0: element glossseealso { db.glossseealso.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.firstterm.role.attribute = attribute role { text } patrick@0: db.firstterm.attlist = patrick@0: db.firstterm.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.baseform.attribute patrick@0: db.firstterm = patrick@0: patrick@0: ## The first occurrence of a term patrick@0: element firstterm { db.firstterm.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db._firstterm.role.attribute = attribute role { text } patrick@0: db._firstterm.attlist = patrick@0: db._firstterm.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.baseform.attribute patrick@0: db._firstterm = patrick@0: patrick@0: ## The first occurrence of a term, with limited content patrick@0: element firstterm { db._firstterm.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.glossterm.role.attribute = attribute role { text } patrick@0: db.glossterm.attlist = patrick@0: db.glossterm.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.baseform.attribute patrick@0: db.glossterm = patrick@0: patrick@0: ## A glossary term patrick@0: element glossterm { db.glossterm.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db._glossterm.role.attribute = attribute role { text } patrick@0: db._glossterm.attlist = patrick@0: db._glossterm.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.baseform.attribute patrick@0: db._glossterm = patrick@0: patrick@0: ## A glossary term patrick@0: element glossterm { db._glossterm.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.glossary.status.attribute = db.status.attribute patrick@0: db.glossary.role.attribute = attribute role { text } patrick@0: db.glossary.attlist = patrick@0: db.glossary.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.glossary.status.attribute? patrick@0: db.glossary.info = db._info patrick@0: db.glossary = patrick@0: patrick@0: ## A glossary patrick@0: element glossary { patrick@0: db.glossary.attlist, patrick@0: db.glossary.info, patrick@0: db.all.blocks*, patrick@0: (db.glossdiv* | db.glossentry*), patrick@0: db.bibliography? patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.glossdiv.status.attribute = db.status.attribute patrick@0: db.glossdiv.role.attribute = attribute role { text } patrick@0: db.glossdiv.attlist = patrick@0: db.glossdiv.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.glossdiv.status.attribute? patrick@0: db.glossdiv.info = db._info.title.req patrick@0: db.glossdiv = patrick@0: patrick@0: ## A division in a glossary patrick@0: element glossdiv { patrick@0: db.glossdiv.attlist, patrick@0: db.glossdiv.info, patrick@0: db.all.blocks*, patrick@0: db.glossentry+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.termdef.role.attribute = attribute role { text } patrick@0: db.termdef.attlist = patrick@0: db.termdef.role.attribute? patrick@0: & db.glossentry.sortas.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.baseform.attribute patrick@0: db.termdef = patrick@0: patrick@0: ## An inline definition of a term patrick@0: element termdef { db.termdef.attlist, db.all.inlines* } patrick@0: } patrick@0: db.relation.attribute = patrick@0: patrick@0: ## Identifies the relationship between the bibliographic elemnts patrick@0: attribute relation { text } patrick@0: div { patrick@0: db.biblioentry.role.attribute = attribute role { text } patrick@0: db.biblioentry.attlist = patrick@0: db.biblioentry.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.biblioentry = patrick@0: patrick@0: ## A raw entry in a bibliography patrick@0: element biblioentry { patrick@0: db.biblioentry.attlist, db.bibliographic.elements+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.bibliomixed.role.attribute = attribute role { text } patrick@0: db.bibliomixed.attlist = patrick@0: db.bibliomixed.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.bibliomixed = patrick@0: patrick@0: ## A cooked entry in a bibliography patrick@0: element bibliomixed { patrick@0: db.bibliomixed.attlist, patrick@0: ((db._text patrick@0: | db.honorific patrick@0: | db.firstname patrick@0: | db.surname patrick@0: | db.lineage patrick@0: | db.othername patrick@0: | db.bibliographic.elements)* patrick@0: | (db._text patrick@0: | db.honorific patrick@0: | db.givenname patrick@0: | db.surname patrick@0: | db.lineage patrick@0: | db.othername patrick@0: | db.bibliographic.elements)*) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.biblioset.relation.attribute = db.relation.attribute patrick@0: db.biblioset.role.attribute = attribute role { text } patrick@0: db.biblioset.attlist = patrick@0: db.biblioset.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.biblioset.relation.attribute? patrick@0: db.biblioset = patrick@0: patrick@0: ## A raw container for related bibliographic information patrick@0: element biblioset { patrick@0: db.biblioset.attlist, db.bibliographic.elements+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.bibliomset.relation.attribute = db.relation.attribute patrick@0: db.bibliomset.role.attribute = attribute role { text } patrick@0: db.bibliomset.attlist = patrick@0: db.bibliomset.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.bibliomset.relation.attribute? patrick@0: db.bibliomset = patrick@0: patrick@0: ## A cooked container for related bibliographic information patrick@0: element bibliomset { patrick@0: db.bibliomset.attlist, patrick@0: ((db._text patrick@0: | db.honorific patrick@0: | db.firstname patrick@0: | db.surname patrick@0: | db.lineage patrick@0: | db.othername patrick@0: | db.bibliographic.elements)* patrick@0: | (db._text patrick@0: | db.honorific patrick@0: | db.givenname patrick@0: | db.surname patrick@0: | db.lineage patrick@0: | db.othername patrick@0: | db.bibliographic.elements)*) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.bibliomisc.role.attribute = attribute role { text } patrick@0: db.bibliomisc.attlist = patrick@0: db.bibliomisc.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.bibliomisc = patrick@0: patrick@0: ## Untyped bibliographic information patrick@0: element bibliomisc { db.bibliomisc.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.bibliography.status.attrib = db.status.attribute patrick@0: db.bibliography.role.attribute = attribute role { text } patrick@0: db.bibliography.attlist = patrick@0: db.bibliography.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.bibliography.status.attrib? patrick@0: db.bibliography.info = db._info patrick@0: db.bibliography = patrick@0: patrick@0: ## A bibliography patrick@0: element bibliography { patrick@0: db.bibliography.attlist, patrick@0: db.bibliography.info, patrick@0: db.all.blocks*, patrick@0: (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.bibliodiv.status.attrib = db.status.attribute patrick@0: db.bibliodiv.role.attribute = attribute role { text } patrick@0: db.bibliodiv.attlist = patrick@0: db.bibliodiv.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.bibliodiv.status.attrib? patrick@0: db.bibliodiv.info = db._info.title.req patrick@0: db.bibliodiv = patrick@0: patrick@0: ## A section of a bibliography patrick@0: element bibliodiv { patrick@0: db.bibliodiv.attlist, patrick@0: db.bibliodiv.info, patrick@0: db.all.blocks*, patrick@0: (db.biblioentry | db.bibliomixed)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.bibliolist.role.attribute = attribute role { text } patrick@0: db.bibliolist.attlist = patrick@0: db.bibliolist.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.bibliolist.info = db._info.title.only patrick@0: db.bibliolist = patrick@0: patrick@0: ## A wrapper for a list of bibliography entries patrick@0: element bibliolist { patrick@0: db.bibliolist.attlist, patrick@0: db.bibliolist.info?, patrick@0: db.all.blocks*, patrick@0: (db.biblioentry | db.bibliomixed)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.biblioref.role.attribute = attribute role { text } patrick@0: db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute patrick@0: db.biblioref.endterm.attribute = db.endterm.attribute patrick@0: db.biblioref.units.attribute = patrick@0: patrick@0: ## The units (for example, pages) used to identify the beginning and ending of a reference. patrick@0: attribute units { xsd:token } patrick@0: db.biblioref.begin.attribute = patrick@0: patrick@0: ## Identifies the beginning of a reference; the location within the work that is being referenced. patrick@0: attribute begin { xsd:token } patrick@0: db.biblioref.end.attribute = patrick@0: patrick@0: ## Identifies the end of a reference. patrick@0: attribute end { xsd:token } patrick@0: db.biblioref.attlist = patrick@0: db.biblioref.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.req.linking.attributes patrick@0: & db.biblioref.xrefstyle.attribute? patrick@0: & db.biblioref.endterm.attribute? patrick@0: & db.biblioref.units.attribute? patrick@0: & db.biblioref.begin.attribute? patrick@0: & db.biblioref.end.attribute? patrick@0: db.biblioref = patrick@0: patrick@0: ## A cross-reference to a bibliographic entry patrick@0: element biblioref { db.biblioref.attlist, empty } patrick@0: } patrick@0: db.significance.enumeration = patrick@0: patrick@0: ## Normal patrick@0: "normal" patrick@0: | patrick@0: ## Preferred patrick@0: "preferred" patrick@0: db.significance.attribute = patrick@0: patrick@0: ## Specifies the significance of the term patrick@0: attribute significance { db.significance.enumeration } patrick@0: db.zone.attribute = patrick@0: patrick@0: ## Specifies the IDs of the elements to which this term applies patrick@0: attribute zone { xsd:IDREFS } patrick@0: db.indexterm.pagenum.attribute = patrick@0: patrick@0: ## Indicates the page on which this index term occurs in some version of the printed document patrick@0: attribute pagenum { text } patrick@0: db.scope.enumeration = patrick@0: patrick@0: ## All indexes patrick@0: "all" patrick@0: | patrick@0: ## The global index (as for a combined index of a set of books) patrick@0: "global" patrick@0: | patrick@0: ## The local index (the index for this document only) patrick@0: "local" patrick@0: db.scope.attribute = patrick@0: patrick@0: ## Specifies the scope of the index term patrick@0: attribute scope { db.scope.enumeration } patrick@0: db.sortas.attribute = patrick@0: patrick@0: ## Specifies the string by which the term is to be sorted; if unspecified, the term content is used patrick@0: attribute sortas { text } patrick@0: db.index.type.attribute = patrick@0: patrick@0: ## Specifies the target index for this term patrick@0: attribute type { text } patrick@0: div { patrick@0: db.itermset.role.attribute = attribute role { text } patrick@0: db.itermset.attlist = patrick@0: db.itermset.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.itermset = patrick@0: patrick@0: ## A set of index terms in the meta-information of a document patrick@0: element itermset { db.itermset.attlist, db.indexterm.singular+ } patrick@0: } patrick@0: db.indexterm.contentmodel = patrick@0: db.primary?, patrick@0: ((db.secondary, patrick@0: ((db.tertiary, (db.see | db.seealso+)?) patrick@0: | db.see patrick@0: | db.seealso+)?) patrick@0: | db.see patrick@0: | db.seealso+)? patrick@0: div { patrick@0: db.indexterm.singular.role.attribute = attribute role { text } patrick@0: db.indexterm.singular.class.attribute = patrick@0: patrick@0: ## Identifies the class of index term patrick@0: attribute class { patrick@0: patrick@0: ## A singular index term patrick@0: "singular" patrick@0: } patrick@0: db.indexterm.singular.attlist = patrick@0: db.indexterm.singular.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.significance.attribute? patrick@0: & db.zone.attribute? patrick@0: & db.indexterm.pagenum.attribute? patrick@0: & db.scope.attribute? patrick@0: & db.index.type.attribute? patrick@0: & db.indexterm.singular.class.attribute? patrick@0: db.indexterm.singular = patrick@0: patrick@0: ## A wrapper for an indexed term patrick@0: element indexterm { patrick@0: db.indexterm.singular.attlist, db.indexterm.contentmodel patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.indexterm.startofrange.role.attribute = attribute role { text } patrick@0: db.indexterm.startofrange.class.attribute = patrick@0: patrick@0: ## Identifies the class of index term patrick@0: attribute class { patrick@0: patrick@0: ## The start of a range patrick@0: "startofrange" patrick@0: } patrick@0: db.indexterm.startofrange.attlist = patrick@0: db.indexterm.startofrange.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.significance.attribute? patrick@0: & db.zone.attribute? patrick@0: & db.indexterm.pagenum.attribute? patrick@0: & db.scope.attribute? patrick@0: & db.index.type.attribute? patrick@0: & db.indexterm.startofrange.class.attribute patrick@0: db.indexterm.startofrange = patrick@0: patrick@0: ## A wrapper for an indexed term that covers a range patrick@0: element indexterm { patrick@0: db.indexterm.startofrange.attlist, db.indexterm.contentmodel patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.indexterm.endofrange.role.attribute = attribute role { text } patrick@0: db.indexterm.endofrange.class.attribute = patrick@0: patrick@0: ## Identifies the class of index term patrick@0: attribute class { patrick@0: patrick@0: ## The end of a range patrick@0: "endofrange" patrick@0: } patrick@0: db.indexterm.endofrange.startref.attribute = patrick@0: patrick@0: ## Points to the start of the range patrick@0: attribute startref { xsd:IDREF } patrick@0: db.indexterm.endofrange.attlist = patrick@0: db.indexterm.endofrange.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.indexterm.endofrange.class.attribute patrick@0: & db.indexterm.endofrange.startref.attribute patrick@0: db.indexterm.endofrange = patrick@0: patrick@0: ## Identifies the end of a range associated with an indexed term patrick@0: element indexterm { db.indexterm.endofrange.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.indexterm = patrick@0: db.indexterm.singular patrick@0: | db.indexterm.startofrange patrick@0: | db.indexterm.endofrange patrick@0: } patrick@0: div { patrick@0: db.primary.role.attribute = attribute role { text } patrick@0: db.primary.attlist = patrick@0: db.primary.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.sortas.attribute? patrick@0: db.primary = patrick@0: patrick@0: ## The primary word or phrase under which an index term should be sorted patrick@0: element primary { db.primary.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.secondary.role.attribute = attribute role { text } patrick@0: db.secondary.attlist = patrick@0: db.secondary.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.sortas.attribute? patrick@0: db.secondary = patrick@0: patrick@0: ## A secondary word or phrase in an index term patrick@0: element secondary { db.secondary.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.tertiary.role.attribute = attribute role { text } patrick@0: db.tertiary.attlist = patrick@0: db.tertiary.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.sortas.attribute? patrick@0: db.tertiary = patrick@0: patrick@0: ## A tertiary word or phrase in an index term patrick@0: element tertiary { db.tertiary.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.see.role.attribute = attribute role { text } patrick@0: db.see.attlist = patrick@0: db.see.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.see = patrick@0: patrick@0: ## Part of an index term directing the reader instead to another entry in the index patrick@0: element see { db.see.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.seealso.role.attribute = attribute role { text } patrick@0: db.seealso.attlist = patrick@0: db.seealso.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.seealso = patrick@0: patrick@0: ## Part of an index term directing the reader also to another entry in the index patrick@0: element seealso { db.seealso.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.index.status.attribute = db.status.attribute patrick@0: db.index.role.attribute = attribute role { text } patrick@0: db.index.attlist = patrick@0: db.index.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.index.status.attribute? patrick@0: & db.index.type.attribute? patrick@0: db.index.info = db._info patrick@0: # patrick@0: # Yes, db.indexdiv* and db.indexentry*; that way an is valid. patrick@0: # Authors can use an empty index to indicate where a generated index should patrick@0: # appear. patrick@0: db.index = patrick@0: patrick@0: ## An index to a book or part of a book patrick@0: element index { patrick@0: db.index.attlist, patrick@0: db.index.info, patrick@0: db.all.blocks*, patrick@0: (db.indexdiv* | db.indexentry* | db.segmentedlist) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.setindex.status.attribute = db.status.attribute patrick@0: db.setindex.role.attribute = attribute role { text } patrick@0: db.setindex.attlist = patrick@0: db.setindex.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.setindex.status.attribute? patrick@0: & db.index.type.attribute? patrick@0: db.setindex.info = db._info patrick@0: db.setindex = patrick@0: patrick@0: ## An index to a set of books patrick@0: element setindex { patrick@0: db.setindex.attlist, patrick@0: db.setindex.info, patrick@0: db.all.blocks*, patrick@0: (db.indexdiv* | db.indexentry*) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.indexdiv.status.attribute = db.status.attribute patrick@0: db.indexdiv.role.attribute = attribute role { text } patrick@0: db.indexdiv.attlist = patrick@0: db.indexdiv.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.indexdiv.status.attribute? patrick@0: db.indexdiv.info = db._info.title.req patrick@0: db.indexdiv = patrick@0: patrick@0: ## A division in an index patrick@0: element indexdiv { patrick@0: db.indexdiv.attlist, patrick@0: db.indexdiv.info, patrick@0: db.all.blocks*, patrick@0: (db.indexentry+ | db.segmentedlist) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.indexentry.role.attribute = attribute role { text } patrick@0: db.indexentry.attlist = patrick@0: db.indexentry.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.indexentry = patrick@0: patrick@0: ## An entry in an index patrick@0: element indexentry { patrick@0: db.indexentry.attlist, patrick@0: db.primaryie, patrick@0: (db.seeie | db.seealsoie)*, patrick@0: (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.primaryie.role.attribute = attribute role { text } patrick@0: db.primaryie.attlist = patrick@0: db.primaryie.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.linkends.attribute? patrick@0: db.primaryie = patrick@0: patrick@0: ## A primary term in an index entry, not in the text patrick@0: element primaryie { db.primaryie.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.secondaryie.role.attribute = attribute role { text } patrick@0: db.secondaryie.attlist = patrick@0: db.secondaryie.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.linkends.attribute? patrick@0: db.secondaryie = patrick@0: patrick@0: ## A secondary term in an index entry, rather than in the text patrick@0: element secondaryie { db.secondaryie.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.tertiaryie.role.attribute = attribute role { text } patrick@0: db.tertiaryie.attlist = patrick@0: db.tertiaryie.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.linkends.attribute? patrick@0: db.tertiaryie = patrick@0: patrick@0: ## A tertiary term in an index entry, rather than in the text patrick@0: element tertiaryie { db.tertiaryie.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.seeie.role.attribute = attribute role { text } patrick@0: db.seeie.attlist = patrick@0: db.seeie.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.linkend.attribute? patrick@0: db.seeie = patrick@0: patrick@0: ## A See patrick@0: ## entry in an index, rather than in the text patrick@0: element seeie { db.seeie.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.seealsoie.role.attribute = attribute role { text } patrick@0: db.seealsoie.attlist = patrick@0: db.seealsoie.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.linkends.attribute? patrick@0: db.seealsoie = patrick@0: patrick@0: ## A See also patrick@0: ## entry in an index, rather than in the text patrick@0: element seealsoie { db.seealsoie.attlist, db.all.inlines* } patrick@0: } patrick@0: db.toc.pagenum.attribute = patrick@0: patrick@0: ## Indicates the page on which this element occurs in some version of the printed document patrick@0: attribute pagenum { text } patrick@0: div { patrick@0: db.toc.role.attribute = attribute role { text } patrick@0: db.toc.attlist = patrick@0: db.toc.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.toc.info = db._info.title.only patrick@0: db.toc = patrick@0: patrick@0: ## A table of contents patrick@0: element toc { patrick@0: db.toc.attlist, patrick@0: db.toc.info, patrick@0: db.all.blocks*, patrick@0: (db.tocdiv | db.tocentry)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.tocdiv.role.attribute = attribute role { text } patrick@0: db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute patrick@0: db.tocdiv.attlist = patrick@0: db.tocdiv.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.tocdiv.pagenum.attribute? patrick@0: & db.linkend.attribute? patrick@0: db.tocdiv.info = db._info patrick@0: db.tocdiv = patrick@0: patrick@0: ## A division in a table of contents patrick@0: element tocdiv { patrick@0: db.tocdiv.attlist, patrick@0: db.tocdiv.info, patrick@0: db.all.blocks*, patrick@0: (db.tocdiv | db.tocentry)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.tocentry.role.attribute = attribute role { text } patrick@0: db.tocentry.pagenum.attribute = db.toc.pagenum.attribute patrick@0: db.tocentry.attlist = patrick@0: db.tocentry.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.tocentry.pagenum.attribute? patrick@0: & db.linkend.attribute? patrick@0: db.tocentry = patrick@0: patrick@0: ## A component title in a table of contents patrick@0: element tocentry { db.tocentry.attlist, db.all.inlines* } patrick@0: } patrick@0: db.task.info = db._info.title.req patrick@0: div { patrick@0: db.task.role.attribute = attribute role { text } patrick@0: db.task.attlist = patrick@0: db.task.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.task = patrick@0: patrick@0: ## A task to be completed patrick@0: element task { patrick@0: db.task.attlist, patrick@0: db.task.info, patrick@0: db.tasksummary?, patrick@0: db.taskprerequisites?, patrick@0: db.procedure, patrick@0: db.example*, patrick@0: db.taskrelated? patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.tasksummary.role.attribute = attribute role { text } patrick@0: db.tasksummary.attlist = patrick@0: db.tasksummary.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.tasksummary.info = db._info.title.only patrick@0: db.tasksummary = patrick@0: patrick@0: ## A summary of a task patrick@0: element tasksummary { patrick@0: db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.taskprerequisites.role.attribute = attribute role { text } patrick@0: db.taskprerequisites.attlist = patrick@0: db.taskprerequisites.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.taskprerequisites.info = db._info.title.only patrick@0: db.taskprerequisites = patrick@0: patrick@0: ## The prerequisites for a task patrick@0: element taskprerequisites { patrick@0: db.taskprerequisites.attlist, patrick@0: db.taskprerequisites.info, patrick@0: db.all.blocks+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.taskrelated.role.attribute = attribute role { text } patrick@0: db.taskrelated.attlist = patrick@0: db.taskrelated.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.taskrelated.info = db._info.title.only patrick@0: db.taskrelated = patrick@0: patrick@0: ## Information related to a task patrick@0: element taskrelated { patrick@0: db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+ patrick@0: } patrick@0: } patrick@0: db.area.units.enumeration = patrick@0: patrick@0: ## Coordinates expressed as a pair of CALS graphic coordinates. patrick@0: "calspair" patrick@0: | patrick@0: ## Coordinates expressed as a line and column. patrick@0: "linecolumn" patrick@0: | patrick@0: ## Coordinates expressed as a pair of lines and columns. patrick@0: "linecolumnpair" patrick@0: | patrick@0: ## Coordinates expressed as a line range. patrick@0: "linerange" patrick@0: db.area.units-enum.attribute = patrick@0: patrick@0: ## Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair patrick@0: ## for graphics and linecolumn patrick@0: ## for line-oriented elements. patrick@0: attribute units { db.area.units.enumeration }? patrick@0: db.area.units-other.attributes = patrick@0: patrick@0: ## Indicates that non-standard units are used for this area patrick@0: ## . In this case otherunits patrick@0: ## must be specified. patrick@0: attribute units { patrick@0: patrick@0: ## Coordinates expressed in some non-standard units. patrick@0: "other" patrick@0: }?, patrick@0: patrick@0: ## Identifies the units used in the coords patrick@0: ## attribute when the units patrick@0: ## attribute is other patrick@0: ## . This attribute is forbidden otherwise. patrick@0: attribute otherunits { xsd:NMTOKEN } patrick@0: db.area.units.attribute = patrick@0: db.area.units-enum.attribute | db.area.units-other.attributes patrick@0: div { patrick@0: db.calloutlist.role.attribute = attribute role { text } patrick@0: db.calloutlist.attlist = patrick@0: db.calloutlist.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.calloutlist.info = db._info.title.only patrick@0: db.calloutlist = patrick@0: patrick@0: ## A list of callout patrick@0: ## s patrick@0: element calloutlist { patrick@0: db.calloutlist.attlist, patrick@0: db.calloutlist.info, patrick@0: db.all.blocks*, patrick@0: db.callout+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.callout.role.attribute = attribute role { text } patrick@0: db.callout.arearefs.attribute = patrick@0: patrick@0: ## Identifies the areas described by this callout. patrick@0: attribute arearefs { xsd:IDREFS } patrick@0: db.callout.attlist = patrick@0: db.callout.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.callout.arearefs.attribute patrick@0: db.callout = patrick@0: patrick@0: ## A called out patrick@0: ## description of a marked area patrick@0: element callout { db.callout.attlist, db.all.blocks+ } patrick@0: } patrick@0: div { patrick@0: db.programlistingco.role.attribute = attribute role { text } patrick@0: db.programlistingco.attlist = patrick@0: db.programlistingco.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.programlistingco.info = db._info.title.forbidden patrick@0: db.programlistingco = patrick@0: patrick@0: ## A program listing with associated areas used in callouts patrick@0: element programlistingco { patrick@0: db.programlistingco.attlist, patrick@0: db.programlistingco.info, patrick@0: db.areaspec, patrick@0: db.programlisting, patrick@0: db.calloutlist* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.areaspec.role.attribute = attribute role { text } patrick@0: db.areaspec.attlist = patrick@0: db.areaspec.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.area.units.attribute patrick@0: db.areaspec = patrick@0: patrick@0: ## A collection of regions in a graphic or code example patrick@0: element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ } patrick@0: } patrick@0: div { patrick@0: db.area.role.attribute = attribute role { text } patrick@0: db.area.linkends.attribute = patrick@0: patrick@0: ## Point to the callout patrick@0: ## s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) patrick@0: attribute linkends { xsd:IDREFS } patrick@0: db.area.label.attribute = patrick@0: patrick@0: ## Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. patrick@0: attribute label { text } patrick@0: db.area.coords.attribute = patrick@0: patrick@0: ## Provides the coordinates of the area. The coordinates must be interpreted using the units patrick@0: ## specified. patrick@0: attribute coords { text } patrick@0: db.area.attlist = patrick@0: db.area.role.attribute? patrick@0: & db.common.idreq.attributes patrick@0: & db.area.units.attribute patrick@0: & (db.area.linkends.attribute | db.href.attributes)? patrick@0: & db.area.label.attribute? patrick@0: & db.area.coords.attribute patrick@0: db.area = patrick@0: patrick@0: ## A region defined for a callout in a graphic or code example patrick@0: element area { db.area.attlist, db.alt? } patrick@0: } patrick@0: div { patrick@0: # The only difference is that xml:id is optional patrick@0: db.area.inareaset.attlist = patrick@0: db.area.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.area.units.attribute patrick@0: & (db.area.linkends.attribute | db.href.attributes)? patrick@0: & db.area.label.attribute? patrick@0: & db.area.coords.attribute patrick@0: db.area.inareaset = patrick@0: patrick@0: ## A region defined for a callout in a graphic or code example patrick@0: element area { db.area.inareaset.attlist, db.alt? } patrick@0: } patrick@0: div { patrick@0: db.areaset.role.attribute = attribute role { text } patrick@0: db.areaset.linkends.attribute = db.linkends.attribute patrick@0: db.areaset.label.attribute = db.label.attribute patrick@0: db.areaset.attlist = patrick@0: db.areaset.role.attribute? patrick@0: & db.common.idreq.attributes patrick@0: & db.area.units.attribute patrick@0: & (db.areaset.linkends.attribute | db.href.attributes)? patrick@0: & db.areaset.label.attribute? patrick@0: db.areaset = patrick@0: patrick@0: ## A set of related areas in a graphic or code example patrick@0: element areaset { db.areaset.attlist, db.area.inareaset+ } patrick@0: } patrick@0: div { patrick@0: db.screenco.role.attribute = attribute role { text } patrick@0: db.screenco.attlist = patrick@0: db.screenco.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.screenco.info = db._info.title.forbidden patrick@0: db.screenco = patrick@0: patrick@0: ## A screen with associated areas used in callouts patrick@0: element screenco { patrick@0: db.screenco.attlist, patrick@0: db.screenco.info, patrick@0: db.areaspec, patrick@0: db.screen, patrick@0: db.calloutlist* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.imageobjectco.role.attribute = attribute role { text } patrick@0: db.imageobjectco.attlist = patrick@0: db.imageobjectco.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.imageobjectco.info = db._info.title.forbidden patrick@0: db.imageobjectco = patrick@0: patrick@0: ## A wrapper for an image object with callouts patrick@0: element imageobjectco { patrick@0: db.imageobjectco.attlist, patrick@0: db.imageobjectco.info, patrick@0: db.areaspec, patrick@0: db.imageobject+, patrick@0: db.calloutlist* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.co.role.attribute = attribute role { text } patrick@0: db.co.linkends.attribute = db.linkends.attribute patrick@0: db.co.label.attribute = db.label.attribute patrick@0: db.co.attlist = patrick@0: db.co.role.attribute? patrick@0: & db.common.idreq.attributes patrick@0: & db.co.linkends.attribute? patrick@0: & db.co.label.attribute? patrick@0: db.co = patrick@0: patrick@0: ## The location of a callout embedded in text patrick@0: element co { db.co.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.coref.role.attribute = attribute role { text } patrick@0: db.coref.label.attribute = db.label.attribute patrick@0: db.coref.attlist = patrick@0: db.coref.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.linkend.attribute patrick@0: & db.coref.label.attribute? patrick@0: db.coref = patrick@0: patrick@0: ## A cross reference to a co patrick@0: element coref { db.coref.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.productionset.role.attribute = attribute role { text } patrick@0: db.productionset.attlist = patrick@0: db.productionset.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.productionset.info = db._info.title.only patrick@0: db.productionset = patrick@0: patrick@0: ## A set of EBNF productions patrick@0: element productionset { patrick@0: db.productionset.attlist, patrick@0: db.productionset.info, patrick@0: (db.production | db.productionrecap)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.production.role.attribute = attribute role { text } patrick@0: db.production.attlist = patrick@0: db.production.role.attribute? patrick@0: & db.common.idreq.attributes patrick@0: & db.common.linking.attributes patrick@0: db.production = patrick@0: patrick@0: ## A production in a set of EBNF productions patrick@0: element production { patrick@0: db.production.attlist, db.lhs, db.rhs, db.constraint* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.lhs.role.attribute = attribute role { text } patrick@0: db.lhs.attlist = patrick@0: db.lhs.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.lhs = patrick@0: patrick@0: ## The left-hand side of an EBNF production patrick@0: element lhs { db.lhs.attlist, text } patrick@0: } patrick@0: div { patrick@0: db.rhs.role.attribute = attribute role { text } patrick@0: db.rhs.attlist = patrick@0: db.rhs.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.rhs = patrick@0: patrick@0: ## The right-hand side of an EBNF production patrick@0: element rhs { patrick@0: db.rhs.attlist, patrick@0: (text | db.nonterminal | db.lineannotation | db.sbr)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.nonterminal.role.attribute = attribute role { text } patrick@0: db.nonterminal.def.attribute = patrick@0: patrick@0: ## Specifies a URI that points to a production patrick@0: ## where the nonterminal patrick@0: ## is defined patrick@0: attribute def { xsd:anyURI } patrick@0: db.nonterminal.attlist = patrick@0: db.nonterminal.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.nonterminal.def.attribute patrick@0: db.nonterminal = patrick@0: patrick@0: ## A non-terminal in an EBNF production patrick@0: element nonterminal { db.nonterminal.attlist, text } patrick@0: } patrick@0: div { patrick@0: db.constraint.role.attribute = attribute role { text } patrick@0: db.constraint.attlist = patrick@0: db.constraint.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.req.linking.attributes patrick@0: db.constraint = patrick@0: patrick@0: ## A constraint in an EBNF production patrick@0: element constraint { db.constraint.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.productionrecap.role.attribute = attribute role { text } patrick@0: db.productionrecap.attlist = patrick@0: db.productionrecap.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.req.linking.attributes patrick@0: db.productionrecap = patrick@0: patrick@0: ## A cross-reference to an EBNF production patrick@0: element productionrecap { db.productionrecap.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.constraintdef.role.attribute = attribute role { text } patrick@0: db.constraintdef.attlist = patrick@0: db.constraintdef.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.constraintdef.info = db._info.title.only patrick@0: db.constraintdef = patrick@0: patrick@0: ## The definition of a constraint in an EBNF production patrick@0: element constraintdef { patrick@0: db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+ patrick@0: } patrick@0: } patrick@0: db.char.attribute = patrick@0: patrick@0: ## Specifies the alignment character when align patrick@0: ## is set to char patrick@0: ## . patrick@0: attribute char { text } patrick@0: db.charoff.attribute = patrick@0: patrick@0: ## Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char patrick@0: ## when align patrick@0: ## is set to char patrick@0: ## . patrick@0: attribute charoff { patrick@0: xsd:decimal { minExclusive = "0" maxExclusive = "100" } patrick@0: } patrick@0: db.frame.attribute = patrick@0: patrick@0: ## Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. patrick@0: attribute frame { patrick@0: patrick@0: ## Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. patrick@0: "all" patrick@0: | patrick@0: ## Frame only the bottom of the table. patrick@0: "bottom" patrick@0: | patrick@0: ## Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. patrick@0: "none" patrick@0: | patrick@0: ## Frame the left and right sides of the table. patrick@0: "sides" patrick@0: | patrick@0: ## Frame the top of the table. patrick@0: "top" patrick@0: | patrick@0: ## Frame the top and bottom of the table. patrick@0: "topbot" patrick@0: } patrick@0: db.colsep.attribute = patrick@0: patrick@0: ## Specifies the presence or absence of the column separator patrick@0: attribute colsep { patrick@0: patrick@0: ## No column separator rule. patrick@0: "0" patrick@0: | patrick@0: ## Provide a column separator rule on the right patrick@0: "1" patrick@0: } patrick@0: db.rowsep.attribute = patrick@0: patrick@0: ## Specifies the presence or absence of the row separator patrick@0: attribute rowsep { patrick@0: patrick@0: ## No row separator rule. patrick@0: "0" patrick@0: | patrick@0: ## Provide a row separator rule below patrick@0: "1" patrick@0: } patrick@0: db.orient.attribute = patrick@0: patrick@0: ## Specifies the orientation of the table patrick@0: attribute orient { patrick@0: patrick@0: ## 90 degrees counter-clockwise from the rest of the text flow. patrick@0: "land" patrick@0: | patrick@0: ## The same orientation as the rest of the text flow. patrick@0: "port" patrick@0: } patrick@0: db.tabstyle.attribute = patrick@0: patrick@0: ## Specifies the table style patrick@0: attribute tabstyle { text } patrick@0: db.rowheader.attribute = patrick@0: patrick@0: ## Indicates whether or not the entries in the first column should be considered row headers patrick@0: attribute rowheader { patrick@0: patrick@0: ## Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). patrick@0: "firstcol" patrick@0: | patrick@0: ## Indicates that entries in the first column have no special significance with respect to column headers. patrick@0: "norowheader" patrick@0: } patrick@0: db.align.attribute = patrick@0: patrick@0: ## Specifies the horizontal alignment of text in an entry. patrick@0: attribute align { patrick@0: patrick@0: ## Centered. patrick@0: "center" patrick@0: | patrick@0: ## Aligned on a particular character. patrick@0: "char" patrick@0: | patrick@0: ## Left and right justified. patrick@0: "justify" patrick@0: | patrick@0: ## Left justified. patrick@0: "left" patrick@0: | patrick@0: ## Right justified. patrick@0: "right" patrick@0: } patrick@0: db.valign.attribute = patrick@0: patrick@0: ## Specifies the vertical alignment of text in an entry. patrick@0: attribute valign { patrick@0: patrick@0: ## Aligned on the bottom of the entry. patrick@0: "bottom" patrick@0: | patrick@0: ## Aligned in the middle. patrick@0: "middle" patrick@0: | patrick@0: ## Aligned at the top of the entry. patrick@0: "top" patrick@0: } patrick@0: db.specify-col-by-colname.attributes = patrick@0: patrick@0: ## Specifies a column specification by name. patrick@0: attribute colname { text } patrick@0: db.specify-col-by-namest.attributes = patrick@0: patrick@0: ## Specifies a starting column by name. patrick@0: attribute namest { text } patrick@0: db.specify-span-by-spanspec.attributes = patrick@0: patrick@0: ## Specifies a span by name. patrick@0: attribute spanname { text } patrick@0: db.specify-span-directly.attributes = patrick@0: patrick@0: ## Specifies a starting column by name. patrick@0: attribute namest { text } patrick@0: & patrick@0: ## Specifies an ending column by name. patrick@0: attribute nameend { text } patrick@0: db.column-spec.attributes = patrick@0: db.specify-col-by-colname.attributes patrick@0: | db.specify-col-by-namest.attributes patrick@0: | db.specify-span-by-spanspec.attributes patrick@0: | db.specify-span-directly.attributes patrick@0: db.colname.attribute = patrick@0: patrick@0: ## Provides a name for a column specification. patrick@0: attribute colname { text } patrick@0: db.spanname.attribute = patrick@0: patrick@0: ## Provides a name for a span specification. patrick@0: attribute spanname { text } patrick@0: div { patrick@0: db.tgroup.role.attribute = attribute role { text } patrick@0: db.tgroup.tgroupstyle.attribute = patrick@0: patrick@0: ## Additional style information for downstream processing; typically the name of a style. patrick@0: attribute tgroupstyle { text } patrick@0: db.tgroup.cols.attribute = patrick@0: patrick@0: ## The number of columns in the table. Must be an integer greater than zero. patrick@0: attribute cols { xsd:positiveInteger } patrick@0: db.tgroup.attlist = patrick@0: db.tgroup.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.char.attribute? patrick@0: & db.charoff.attribute? patrick@0: & db.tgroup.tgroupstyle.attribute? patrick@0: & db.tgroup.cols.attribute patrick@0: & db.colsep.attribute? patrick@0: & db.rowsep.attribute? patrick@0: & db.align.attribute? patrick@0: db.tgroup = patrick@0: patrick@0: ## A wrapper for the main content of a table, or part of a table patrick@0: element tgroup { patrick@0: db.tgroup.attlist, patrick@0: db.colspec*, patrick@0: db.spanspec*, patrick@0: db.cals.thead?, patrick@0: db.cals.tfoot?, patrick@0: db.cals.tbody patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.colspec.role.attribute = attribute role { text } patrick@0: db.colspec.colnum.attribute = patrick@0: patrick@0: ## The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. patrick@0: attribute colnum { xsd:positiveInteger } patrick@0: db.colspec.colwidth.attribute = patrick@0: patrick@0: ## Specifies the width of the column. patrick@0: attribute colwidth { text } patrick@0: db.colspec.attlist = patrick@0: db.colspec.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.colspec.colnum.attribute? patrick@0: & db.char.attribute? patrick@0: & db.colsep.attribute? patrick@0: & db.colspec.colwidth.attribute? patrick@0: & db.charoff.attribute? patrick@0: & db.colname.attribute? patrick@0: & db.rowsep.attribute? patrick@0: & db.align.attribute? patrick@0: db.colspec = patrick@0: patrick@0: ## Specifications for a column in a table patrick@0: element colspec { db.colspec.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.spanspec.role.attribute = attribute role { text } patrick@0: db.spanspec.namest.attribute = patrick@0: patrick@0: ## Specifies a starting column by name. patrick@0: attribute namest { text } patrick@0: db.spanspec.nameend.attribute = patrick@0: patrick@0: ## Specifies an ending column by name. patrick@0: attribute nameend { text } patrick@0: db.spanspec.attlist = patrick@0: db.spanspec.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.spanname.attribute patrick@0: & db.spanspec.namest.attribute patrick@0: & db.spanspec.nameend.attribute patrick@0: & db.char.attribute? patrick@0: & db.colsep.attribute? patrick@0: & db.charoff.attribute? patrick@0: & db.rowsep.attribute? patrick@0: & db.align.attribute? patrick@0: db.spanspec = patrick@0: patrick@0: ## Formatting information for a spanned column in a table patrick@0: element spanspec { db.spanspec.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.cals.thead.role.attribute = attribute role { text } patrick@0: db.cals.thead.attlist = patrick@0: db.cals.thead.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.valign.attribute? patrick@0: db.cals.thead = patrick@0: patrick@0: ## A table header consisting of one or more rows patrick@0: element thead { db.cals.thead.attlist, db.colspec*, db.row+ } patrick@0: } patrick@0: div { patrick@0: db.cals.tfoot.role.attribute = attribute role { text } patrick@0: db.cals.tfoot.attlist = patrick@0: db.cals.tfoot.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.valign.attribute? patrick@0: db.cals.tfoot = patrick@0: patrick@0: ## A table footer consisting of one or more rows patrick@0: element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ } patrick@0: } patrick@0: div { patrick@0: db.cals.tbody.role.attribute = attribute role { text } patrick@0: db.cals.tbody.attlist = patrick@0: db.cals.tbody.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.valign.attribute? patrick@0: db.cals.tbody = patrick@0: patrick@0: ## A wrapper for the rows of a table or informal table patrick@0: element tbody { db.cals.tbody.attlist, db.row+ } patrick@0: } patrick@0: div { patrick@0: db.row.role.attribute = attribute role { text } patrick@0: db.row.attlist = patrick@0: db.row.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.rowsep.attribute? patrick@0: & db.valign.attribute? patrick@0: db.row = patrick@0: patrick@0: ## A row in a table patrick@0: element row { db.row.attlist, (db.entry | db.entrytbl)+ } patrick@0: } patrick@0: div { patrick@0: db.entry.role.attribute = attribute role { text } patrick@0: db.entry.morerows.attribute = patrick@0: patrick@0: ## Specifies the number of additional rows which this entry occupies. Defaults to zero. patrick@0: attribute morerows { xsd:integer } patrick@0: db.entry.rotate.attribute = patrick@0: patrick@0: ## Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. patrick@0: attribute rotate { patrick@0: patrick@0: ## Do not rotate the cell. patrick@0: "0" patrick@0: | patrick@0: ## Rotate the cell 90 degrees counter-clockwise. patrick@0: "1" patrick@0: } patrick@0: db.entry.attlist = patrick@0: db.entry.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.valign.attribute? patrick@0: & db.char.attribute? patrick@0: & db.colsep.attribute? patrick@0: & db.charoff.attribute? patrick@0: & db.entry.morerows.attribute? patrick@0: & db.column-spec.attributes? patrick@0: & db.rowsep.attribute? patrick@0: & db.entry.rotate.attribute? patrick@0: & db.align.attribute? patrick@0: db.entry = patrick@0: patrick@0: ## A cell in a table patrick@0: element entry { patrick@0: db.entry.attlist, (db.all.inlines* | db.all.blocks*) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.entrytbl.role.attribute = attribute role { text } patrick@0: db.entrytbl.tgroupstyle.attribute = patrick@0: patrick@0: ## Additional style information for downstream processing; typically the name of a style. patrick@0: attribute tgroupstyle { text } patrick@0: db.entrytbl.cols.attribute = patrick@0: patrick@0: ## The number of columns in the entry table. Must be an integer greater than zero. patrick@0: attribute cols { xsd:positiveInteger } patrick@0: db.entrytbl.attlist = patrick@0: db.entrytbl.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.char.attribute? patrick@0: & db.charoff.attribute? patrick@0: & db.column-spec.attributes? patrick@0: & db.entrytbl.tgroupstyle.attribute? patrick@0: & db.entrytbl.cols.attribute? patrick@0: & db.colsep.attribute? patrick@0: & db.rowsep.attribute? patrick@0: & db.align.attribute? patrick@0: db.entrytbl = patrick@0: patrick@0: ## A subtable appearing in place of an entry in a table patrick@0: element entrytbl { patrick@0: db.entrytbl.attlist, patrick@0: db.colspec*, patrick@0: db.spanspec*, patrick@0: db.cals.entrytbl.thead?, patrick@0: db.cals.entrytbl.tbody patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.cals.entrytbl.thead.role.attribute = attribute role { text } patrick@0: db.cals.entrytbl.thead.attlist = patrick@0: db.cals.entrytbl.thead.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.valign.attribute? patrick@0: db.cals.entrytbl.thead = patrick@0: patrick@0: ## A table header consisting of one or more rows patrick@0: element thead { patrick@0: db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.cals.entrytbl.tbody.role.attribute = attribute role { text } patrick@0: db.cals.entrytbl.tbody.attlist = patrick@0: db.cals.entrytbl.tbody.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.valign.attribute? patrick@0: db.cals.entrytbl.tbody = patrick@0: patrick@0: ## A wrapper for the rows of a table or informal table patrick@0: element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ } patrick@0: } patrick@0: div { patrick@0: db.entrytbl.row.role.attribute = attribute role { text } patrick@0: db.entrytbl.row.attlist = patrick@0: db.entrytbl.row.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.rowsep.attribute? patrick@0: & db.valign.attribute? patrick@0: db.entrytbl.row = patrick@0: patrick@0: ## A row in a table patrick@0: element row { db.entrytbl.row.attlist, db.entry+ } patrick@0: } patrick@0: div { patrick@0: db.cals.table.role.attribute = attribute role { text } patrick@0: db.cals.table.label.attribute = db.label.attribute patrick@0: db.cals.table.attlist = patrick@0: db.cals.table.role.attribute? patrick@0: & db.cals.table.label.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.tabstyle.attribute? patrick@0: & db.floatstyle.attribute? patrick@0: & db.orient.attribute? patrick@0: & db.colsep.attribute? patrick@0: & db.rowsep.attribute? patrick@0: & db.frame.attribute? patrick@0: & db.pgwide.attribute? patrick@0: & patrick@0: ## Indicates if the short or long title should be used in a List of Tables patrick@0: attribute shortentry { patrick@0: patrick@0: ## Indicates that the full title should be used. patrick@0: "0" patrick@0: | patrick@0: ## Indicates that the short short title (titleabbrev) should be used. patrick@0: "1" patrick@0: }? patrick@0: & patrick@0: ## Indicates if the table should appear in a List of Tables patrick@0: attribute tocentry { patrick@0: patrick@0: ## Indicates that the table should not occur in the List of Tables. patrick@0: "0" patrick@0: | patrick@0: ## Indicates that the table should appear in the List of Tables. patrick@0: "1" patrick@0: }? patrick@0: & db.rowheader.attribute? patrick@0: db.cals.table.info = db._info.title.onlyreq patrick@0: db.cals.table = patrick@0: patrick@0: ## A formal table in a document patrick@0: element table { patrick@0: db.cals.table.attlist, patrick@0: db.cals.table.info, patrick@0: (db.alt? & db.indexing.inlines* & db.textobject*), patrick@0: (db.mediaobject+ | db.tgroup+), patrick@0: db.caption? patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.cals.informaltable.role.attribute = attribute role { text } patrick@0: db.cals.informaltable.attlist = patrick@0: db.cals.informaltable.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.tabstyle.attribute? patrick@0: & db.floatstyle.attribute? patrick@0: & db.orient.attribute? patrick@0: & db.colsep.attribute? patrick@0: & db.rowsep.attribute? patrick@0: & db.frame.attribute? patrick@0: & db.pgwide.attribute? patrick@0: & db.rowheader.attribute? patrick@0: db.cals.informaltable.info = db._info.title.forbidden patrick@0: db.cals.informaltable = patrick@0: patrick@0: ## A table without a title patrick@0: element informaltable { patrick@0: db.cals.informaltable.attlist, patrick@0: db.cals.informaltable.info, patrick@0: (db.alt? & db.indexing.inlines* & db.textobject*), patrick@0: (db.mediaobject+ | db.tgroup+), patrick@0: db.caption? patrick@0: } patrick@0: } patrick@0: db.html.coreattrs = patrick@0: patrick@0: ## This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. patrick@0: attribute class { text }? patrick@0: & patrick@0: ## This attribute specifies style information for the current element. patrick@0: attribute style { text }? patrick@0: & patrick@0: ## This attribute offers advisory information about the element for which it is set. patrick@0: attribute title { text }? patrick@0: db.html.i18n = patrick@0: patrick@0: ## This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. patrick@0: attribute lang { text }? patrick@0: db.html.events = patrick@0: patrick@0: ## Occurs when the pointing device button is clicked over an element. patrick@0: attribute onclick { text }? patrick@0: & patrick@0: ## Occurs when the pointing device button is double clicked over an element. patrick@0: attribute ondblclick { text }? patrick@0: & patrick@0: ## Occurs when the pointing device button is pressed over an element. patrick@0: attribute onmousedown { text }? patrick@0: & patrick@0: ## Occurs when the pointing device button is released over an element. patrick@0: attribute onmouseup { text }? patrick@0: & patrick@0: ## Occurs when the pointing device is moved onto an element. patrick@0: attribute onmouseover { text }? patrick@0: & patrick@0: ## Occurs when the pointing device is moved while it is over an element. patrick@0: attribute onmousemove { text }? patrick@0: & patrick@0: ## Occurs when the pointing device is moved away from an element. patrick@0: attribute onmouseout { text }? patrick@0: & patrick@0: ## Occurs when a key is pressed and released over an element. patrick@0: attribute onkeypress { text }? patrick@0: & patrick@0: ## Occurs when a key is pressed down over an element. patrick@0: attribute onkeydown { text }? patrick@0: & patrick@0: ## Occurs when a key is released over an element. patrick@0: attribute onkeyup { text }? patrick@0: db.html.attrs = patrick@0: db.common.attributes patrick@0: & db.html.coreattrs patrick@0: & db.html.i18n patrick@0: & db.html.events patrick@0: db.html.cellhalign = patrick@0: patrick@0: ## Specifies the alignment of data and the justification of text in a cell. patrick@0: attribute align { patrick@0: patrick@0: ## Left-flush data/Left-justify text. This is the default value for table data. patrick@0: "left" patrick@0: | patrick@0: ## Center data/Center-justify text. This is the default value for table headers. patrick@0: "center" patrick@0: | patrick@0: ## Right-flush data/Right-justify text. patrick@0: "right" patrick@0: | patrick@0: ## Double-justify text. patrick@0: "justify" patrick@0: | patrick@0: ## Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. patrick@0: "char" patrick@0: }? patrick@0: & patrick@0: ## This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. patrick@0: attribute char { text }? patrick@0: & patrick@0: ## When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. patrick@0: attribute charoff { patrick@0: xsd:integer >> a:documentation [ "An explicit offset." ] patrick@0: | xsd:string { pattern = "[0-9]+%" } patrick@0: >> a:documentation [ "A percentage offset." ] patrick@0: }? patrick@0: db.html.cellvalign = patrick@0: patrick@0: ## Specifies the vertical position of data within a cell. patrick@0: attribute valign { patrick@0: patrick@0: ## Cell data is flush with the top of the cell. patrick@0: "top" patrick@0: | patrick@0: ## Cell data is centered vertically within the cell. This is the default value. patrick@0: "middle" patrick@0: | patrick@0: ## Cell data is flush with the bottom of the cell. patrick@0: "bottom" patrick@0: | patrick@0: ## All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. patrick@0: "baseline" patrick@0: }? patrick@0: db.html.table.attributes = patrick@0: patrick@0: ## Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. patrick@0: attribute summary { text }? patrick@0: & patrick@0: ## Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. patrick@0: attribute width { patrick@0: xsd:integer >> a:documentation [ "An explicit width." ] patrick@0: | xsd:string { pattern = "[0-9]+%" } patrick@0: >> a:documentation [ "A percentage width." ] patrick@0: }? patrick@0: & patrick@0: ## Specifies the width (in pixels only) of the frame around a table. patrick@0: attribute border { xsd:nonNegativeInteger }? patrick@0: & patrick@0: ## Specifies which sides of the frame surrounding a table will be visible. patrick@0: attribute frame { patrick@0: patrick@0: ## No sides. This is the default value. patrick@0: "void" patrick@0: | patrick@0: ## The top side only. patrick@0: "above" patrick@0: | patrick@0: ## The bottom side only. patrick@0: "below" patrick@0: | patrick@0: ## The top and bottom sides only. patrick@0: "hsides" patrick@0: | patrick@0: ## The left-hand side only. patrick@0: "lhs" patrick@0: | patrick@0: ## The right-hand side only. patrick@0: "rhs" patrick@0: | patrick@0: ## The right and left sides only. patrick@0: "vsides" patrick@0: | patrick@0: ## All four sides. patrick@0: "box" patrick@0: | patrick@0: ## All four sides. patrick@0: "border" patrick@0: }? patrick@0: & patrick@0: ## Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. patrick@0: attribute rules { patrick@0: patrick@0: ## No rules. This is the default value. patrick@0: "none" patrick@0: | patrick@0: ## Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. patrick@0: "groups" patrick@0: | patrick@0: ## Rules will appear between rows only. patrick@0: "rows" patrick@0: | patrick@0: ## Rules will appear between columns only. patrick@0: "cols" patrick@0: | patrick@0: ## Rules will appear between all rows and columns. patrick@0: "all" patrick@0: }? patrick@0: & patrick@0: ## Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. patrick@0: attribute cellspacing { patrick@0: xsd:integer >> a:documentation [ "An explicit spacing." ] patrick@0: | xsd:string { pattern = "[0-9]+%" } patrick@0: >> a:documentation [ "A percentage spacing." ] patrick@0: }? patrick@0: & patrick@0: ## Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. patrick@0: attribute cellpadding { patrick@0: xsd:integer >> a:documentation [ "An explicit padding." ] patrick@0: | xsd:string { pattern = "[0-9]+%" } patrick@0: >> a:documentation [ "A percentage padding." ] patrick@0: }? patrick@0: db.html.tablecell.attributes = patrick@0: patrick@0: ## Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. patrick@0: attribute abbr { text }? patrick@0: & patrick@0: ## This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. patrick@0: attribute axis { text }? patrick@0: & patrick@0: ## Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. patrick@0: attribute headers { text }? patrick@0: & patrick@0: ## Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. patrick@0: attribute scope { patrick@0: patrick@0: ## The current cell provides header information for the rest of the row that contains it patrick@0: "row" patrick@0: | patrick@0: ## The current cell provides header information for the rest of the column that contains it. patrick@0: "col" patrick@0: | patrick@0: ## The header cell provides header information for the rest of the row group that contains it. patrick@0: "rowgroup" patrick@0: | patrick@0: ## The header cell provides header information for the rest of the column group that contains it. patrick@0: "colgroup" patrick@0: }? patrick@0: & patrick@0: ## Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 patrick@0: ## ). The value zero (0 patrick@0: ## ) means that the cell spans all rows from the current row to the last row of the table section (thead patrick@0: ## , tbody patrick@0: ## , or tfoot patrick@0: ## ) in which the cell is defined. patrick@0: attribute rowspan { xsd:nonNegativeInteger }? patrick@0: & patrick@0: ## Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 patrick@0: ## ). The value zero (0 patrick@0: ## ) means that the cell spans all columns from the current column to the last column of the column group (colgroup patrick@0: ## ) in which the cell is defined. patrick@0: attribute colspan { xsd:nonNegativeInteger }? patrick@0: db.html.table.info = db._info.title.forbidden patrick@0: db.html.table.model = patrick@0: db.html.table.info?, patrick@0: db.html.caption, patrick@0: (db.html.col* | db.html.colgroup*), patrick@0: db.html.thead?, patrick@0: db.html.tfoot?, patrick@0: (db.html.tbody+ | db.html.tr+) patrick@0: db.html.informaltable.info = db._info.title.forbidden patrick@0: db.html.informaltable.model = patrick@0: db.html.informaltable.info?, patrick@0: (db.html.col* | db.html.colgroup*), patrick@0: db.html.thead?, patrick@0: db.html.tfoot?, patrick@0: (db.html.tbody+ | db.html.tr+) patrick@0: div { patrick@0: db.html.table.role.attribute = attribute role { text } patrick@0: db.html.table.label.attribute = db.label.attribute patrick@0: db.html.table.attlist = patrick@0: db.html.attrs patrick@0: & db.html.table.attributes patrick@0: & db.html.table.role.attribute? patrick@0: & db.html.table.label.attribute? patrick@0: & db.orient.attribute? patrick@0: & db.pgwide.attribute? patrick@0: & db.tabstyle.attribute? patrick@0: & db.floatstyle.attribute? patrick@0: db.html.table = patrick@0: patrick@0: ## A formal (captioned) HTML table in a document patrick@0: element table { db.html.table.attlist, db.html.table.model } patrick@0: } patrick@0: div { patrick@0: db.html.informaltable.attlist = patrick@0: db.html.attrs & db.html.table.attributes patrick@0: db.html.informaltable = patrick@0: patrick@0: ## An HTML table without a title patrick@0: element informaltable { patrick@0: db.html.informaltable.attlist, db.html.informaltable.model patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.html.caption.attlist = db.html.attrs patrick@0: db.html.caption = patrick@0: patrick@0: ## An HTML table caption patrick@0: element caption { db.html.caption.attlist, db.all.inlines* } patrick@0: } patrick@0: div { patrick@0: db.html.col.attlist = patrick@0: db.html.attrs patrick@0: & patrick@0: ## This attribute, whose value must be an integer > 0, specifies the number of columns spanned patrick@0: ## by the col patrick@0: ## element; the col patrick@0: ## element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col patrick@0: ## element shares its attributes with the next N-1 columns. patrick@0: attribute span { xsd:nonNegativeInteger }? patrick@0: & patrick@0: ## Specifies a default width for each column spanned by the current col patrick@0: ## element. It has the same meaning as the width patrick@0: ## attribute for the colgroup patrick@0: ## element and overrides it. patrick@0: attribute width { text }? patrick@0: & db.html.cellhalign patrick@0: & db.html.cellvalign patrick@0: db.html.col = patrick@0: patrick@0: ## Specifications for a column in an HTML table patrick@0: element col { db.html.col.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.html.colgroup.attlist = patrick@0: db.html.attrs patrick@0: & patrick@0: ## This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup patrick@0: ## defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup patrick@0: ## element defines a column group containing N columns. User agents must ignore this attribute if the colgroup patrick@0: ## element contains one or more col patrick@0: ## elements. patrick@0: attribute span { xsd:nonNegativeInteger }? patrick@0: & patrick@0: ## This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* patrick@0: ## (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* patrick@0: ## will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col patrick@0: ## element. patrick@0: attribute width { text }? patrick@0: & db.html.cellhalign patrick@0: & db.html.cellvalign patrick@0: db.html.colgroup = patrick@0: patrick@0: ## A group of columns in an HTML table patrick@0: element colgroup { db.html.colgroup.attlist, db.html.col* } patrick@0: } patrick@0: div { patrick@0: db.html.thead.attlist = patrick@0: db.html.attrs & db.html.cellhalign & db.html.cellvalign patrick@0: db.html.thead = patrick@0: patrick@0: ## A table header consisting of one or more rows in an HTML table patrick@0: element thead { db.html.thead.attlist, db.html.tr+ } patrick@0: } patrick@0: div { patrick@0: db.html.tfoot.attlist = patrick@0: db.html.attrs & db.html.cellhalign & db.html.cellvalign patrick@0: db.html.tfoot = patrick@0: patrick@0: ## A table footer consisting of one or more rows in an HTML table patrick@0: element tfoot { db.html.tfoot.attlist, db.html.tr+ } patrick@0: } patrick@0: div { patrick@0: db.html.tbody.attlist = patrick@0: db.html.attrs & db.html.cellhalign & db.html.cellvalign patrick@0: db.html.tbody = patrick@0: patrick@0: ## A wrapper for the rows of an HTML table or informal HTML table patrick@0: element tbody { db.html.tbody.attlist, db.html.tr+ } patrick@0: } patrick@0: div { patrick@0: db.html.tr.attlist = patrick@0: db.html.attrs & db.html.cellhalign & db.html.cellvalign patrick@0: db.html.tr = patrick@0: patrick@0: ## A row in an HTML table patrick@0: element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ } patrick@0: } patrick@0: div { patrick@0: db.html.th.attlist = patrick@0: db.html.attrs patrick@0: & db.html.tablecell.attributes patrick@0: & db.html.cellhalign patrick@0: & db.html.cellvalign patrick@0: db.html.th = patrick@0: patrick@0: ## A table header entry in an HTML table patrick@0: element th { patrick@0: db.html.th.attlist, (db.all.inlines* | db.all.blocks*) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.html.td.attlist = patrick@0: db.html.attrs patrick@0: & db.html.tablecell.attributes patrick@0: & db.html.cellhalign patrick@0: & db.html.cellvalign patrick@0: db.html.td = patrick@0: patrick@0: ## A table entry in an HTML table patrick@0: element td { patrick@0: db.html.td.attlist, (db.all.inlines* | db.all.blocks*) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.msgset.role.attribute = attribute role { text } patrick@0: db.msgset.attlist = patrick@0: db.msgset.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.msgset.info = db._info.title.only patrick@0: db.msgset = patrick@0: patrick@0: ## A detailed set of messages, usually error messages patrick@0: element msgset { patrick@0: db.msgset.attlist, patrick@0: db.msgset.info, patrick@0: (db.msgentry+ | db.simplemsgentry+) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.msgentry.role.attribute = attribute role { text } patrick@0: db.msgentry.attlist = patrick@0: db.msgentry.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.msgentry = patrick@0: patrick@0: ## A wrapper for an entry in a message set patrick@0: element msgentry { patrick@0: db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.simplemsgentry.role.attribute = attribute role { text } patrick@0: db.simplemsgentry.msgaud.attribute = patrick@0: patrick@0: ## The audience to which the message relevant patrick@0: attribute msgaud { text } patrick@0: db.simplemsgentry.msgorig.attribute = patrick@0: patrick@0: ## The origin of the message patrick@0: attribute msgorig { text } patrick@0: db.simplemsgentry.msglevel.attribute = patrick@0: patrick@0: ## The level of importance or severity of a message patrick@0: attribute msglevel { text } patrick@0: db.simplemsgentry.attlist = patrick@0: db.simplemsgentry.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.simplemsgentry.msgaud.attribute? patrick@0: & db.simplemsgentry.msgorig.attribute? patrick@0: & db.simplemsgentry.msglevel.attribute? patrick@0: db.simplemsgentry = patrick@0: patrick@0: ## A wrapper for a simpler entry in a message set patrick@0: element simplemsgentry { patrick@0: db.simplemsgentry.attlist, db.msgtext, db.msgexplan+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.msg.role.attribute = attribute role { text } patrick@0: db.msg.attlist = patrick@0: db.msg.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.msg.info = db._info.title.only patrick@0: db.msg = patrick@0: patrick@0: ## A message in a message set patrick@0: element msg { patrick@0: db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.msgmain.role.attribute = attribute role { text } patrick@0: db.msgmain.attlist = patrick@0: db.msgmain.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.msgmain.info = db._info.title.only patrick@0: db.msgmain = patrick@0: patrick@0: ## The primary component of a message in a message set patrick@0: element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext } patrick@0: } patrick@0: div { patrick@0: db.msgsub.role.attribute = attribute role { text } patrick@0: db.msgsub.attlist = patrick@0: db.msgsub.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.msgsub.info = db._info.title.only patrick@0: db.msgsub = patrick@0: patrick@0: ## A subcomponent of a message in a message set patrick@0: element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext } patrick@0: } patrick@0: div { patrick@0: db.msgrel.role.attribute = attribute role { text } patrick@0: db.msgrel.attlist = patrick@0: db.msgrel.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.msgrel.info = db._info.title.only patrick@0: db.msgrel = patrick@0: patrick@0: ## A related component of a message in a message set patrick@0: element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext } patrick@0: } patrick@0: div { patrick@0: db.msgtext.role.attribute = attribute role { text } patrick@0: db.msgtext.attlist = patrick@0: db.msgtext.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.msgtext = patrick@0: patrick@0: ## The actual text of a message component in a message set patrick@0: element msgtext { db.msgtext.attlist, db.all.blocks+ } patrick@0: } patrick@0: div { patrick@0: db.msginfo.role.attribute = attribute role { text } patrick@0: db.msginfo.attlist = patrick@0: db.msginfo.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.msginfo = patrick@0: patrick@0: ## Information about a message in a message set patrick@0: element msginfo { patrick@0: db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.msglevel.role.attribute = attribute role { text } patrick@0: db.msglevel.attlist = patrick@0: db.msglevel.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.msglevel = patrick@0: patrick@0: ## The level of importance or severity of a message in a message set patrick@0: element msglevel { db.msglevel.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.msgorig.role.attribute = attribute role { text } patrick@0: db.msgorig.attlist = patrick@0: db.msgorig.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.msgorig = patrick@0: patrick@0: ## The origin of a message in a message set patrick@0: element msgorig { db.msgorig.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.msgaud.role.attribute = attribute role { text } patrick@0: db.msgaud.attlist = patrick@0: db.msgaud.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.msgaud = patrick@0: patrick@0: ## The audience to which a message in a message set is relevant patrick@0: element msgaud { db.msgaud.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.msgexplan.role.attribute = attribute role { text } patrick@0: db.msgexplan.attlist = patrick@0: db.msgexplan.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.msgexplan.info = db._info.title.only patrick@0: db.msgexplan = patrick@0: patrick@0: ## Explanatory material relating to a message in a message set patrick@0: element msgexplan { patrick@0: db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.qandaset.role.attribute = attribute role { text } patrick@0: db.qandaset.defaultlabel.enumeration = patrick@0: patrick@0: ## No labels patrick@0: "none" patrick@0: | patrick@0: ## Numeric labels patrick@0: "number" patrick@0: | patrick@0: ## "Q:" and "A:" labels patrick@0: "qanda" patrick@0: db.qandaset.defaultlabel.attribute = patrick@0: patrick@0: ## Specifies the default labelling patrick@0: attribute defaultlabel { db.qandaset.defaultlabel.enumeration } patrick@0: db.qandaset.attlist = patrick@0: db.qandaset.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.qandaset.defaultlabel.attribute? patrick@0: db.qandaset.info = db._info.title.only patrick@0: db.qandaset = patrick@0: patrick@0: ## A question-and-answer set patrick@0: element qandaset { patrick@0: db.qandaset.attlist, patrick@0: db.qandaset.info, patrick@0: db.all.blocks*, patrick@0: (db.qandadiv+ | db.qandaentry+) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.qandadiv.role.attribute = attribute role { text } patrick@0: db.qandadiv.attlist = patrick@0: db.qandadiv.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.qandadiv.info = db._info.title.only patrick@0: db.qandadiv = patrick@0: patrick@0: ## A titled division in a qandaset patrick@0: element qandadiv { patrick@0: db.qandadiv.attlist, patrick@0: db.qandadiv.info, patrick@0: db.all.blocks*, patrick@0: (db.qandadiv+ | db.qandaentry+) patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.qandaentry.role.attribute = attribute role { text } patrick@0: db.qandaentry.attlist = patrick@0: db.qandaentry.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.qandaentry.info = db._info.title.only patrick@0: db.qandaentry = patrick@0: patrick@0: ## A question/answer set within a qandaset patrick@0: element qandaentry { patrick@0: db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.question.role.attribute = attribute role { text } patrick@0: db.question.attlist = patrick@0: db.question.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.question = patrick@0: patrick@0: ## A question in a qandaset patrick@0: element question { db.question.attlist, db.label?, db.all.blocks+ } patrick@0: } patrick@0: div { patrick@0: db.answer.role.attribute = attribute role { text } patrick@0: db.answer.attlist = patrick@0: db.answer.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.answer = patrick@0: patrick@0: ## An answer to a question posed in a qandaset patrick@0: element answer { db.answer.attlist, db.label?, db.all.blocks+ } patrick@0: } patrick@0: div { patrick@0: db.label.role.attribute = attribute role { text } patrick@0: db.label.attlist = patrick@0: db.label.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.label = patrick@0: patrick@0: ## A label on a question or answer patrick@0: element label { db.label.attlist, db._text } patrick@0: } patrick@0: db.math.inlines = db.inlineequation patrick@0: db.equation.content = (db.mediaobject+ | db.mathphrase+) | db._any.mml+ patrick@0: db.inlineequation.content = patrick@0: (db.inlinemediaobject+ | db.mathphrase+) | db._any.mml+ patrick@0: div { patrick@0: db.equation.role.attribute = attribute role { text } patrick@0: db.equation.label.attribute = db.label.attribute patrick@0: db.equation.attlist = patrick@0: db.equation.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.equation.label.attribute? patrick@0: & db.pgwide.attribute? patrick@0: & db.floatstyle.attribute? patrick@0: db.equation.info = db._info.title.only patrick@0: db.equation = patrick@0: patrick@0: ## A displayed mathematical equation patrick@0: element equation { patrick@0: db.equation.attlist, patrick@0: db.equation.info, patrick@0: db.alt?, patrick@0: db.equation.content, patrick@0: db.caption? patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.informalequation.role.attribute = attribute role { text } patrick@0: db.informalequation.attlist = patrick@0: db.informalequation.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.informalequation.info = db._info.title.forbidden patrick@0: db.informalequation = patrick@0: patrick@0: ## A displayed mathematical equation without a title patrick@0: element informalequation { patrick@0: db.informalequation.attlist, patrick@0: db.informalequation.info, patrick@0: db.alt?, patrick@0: db.equation.content, patrick@0: db.caption? patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.inlineequation.role.attribute = attribute role { text } patrick@0: db.inlineequation.attlist = patrick@0: db.inlineequation.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.inlineequation = patrick@0: patrick@0: ## A mathematical equation or expression occurring inline patrick@0: element inlineequation { patrick@0: db.inlineequation.attlist, db.alt?, db.inlineequation.content patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.mathphrase.role.attribute = attribute role { text } patrick@0: db.mathphrase.attlist = patrick@0: db.mathphrase.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.mathphrase = patrick@0: patrick@0: ## A mathematical phrase that can be represented with ordinary text and a small amount of markup patrick@0: element mathphrase { patrick@0: db.mathphrase.attlist, patrick@0: (db._text | db.ubiq.inlines | db._emphasis)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.imagedata.mathml.role.attribute = attribute role { text } patrick@0: db.imagedata.mathml.attlist = patrick@0: db.imagedata.mathml.role.attribute? patrick@0: & db.common.attributes patrick@0: & patrick@0: ## Specifies that the format of the data is MathML patrick@0: attribute format { patrick@0: patrick@0: ## Specifies MathML. patrick@0: "mathml" patrick@0: }? patrick@0: & db.imagedata.align.attribute? patrick@0: & db.imagedata.valign.attribute? patrick@0: & db.imagedata.width.attribute? patrick@0: & db.imagedata.contentwidth.attribute? patrick@0: & db.imagedata.scalefit.attribute? patrick@0: & db.imagedata.scale.attribute? patrick@0: & db.imagedata.depth.attribute? patrick@0: & db.imagedata.contentdepth.attribute? patrick@0: db.imagedata.mathml.info = db._info.title.forbidden patrick@0: db.imagedata.mathml = patrick@0: patrick@0: ## A MathML expression in a media object patrick@0: element imagedata { patrick@0: db.imagedata.mathml.attlist, patrick@0: db.imagedata.mathml.info, patrick@0: db._any.mml+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db._any.mml = patrick@0: patrick@0: ## Any element from the MathML namespace patrick@0: element mml:* { (db._any.attribute | text | db._any)* } patrick@0: } patrick@0: div { patrick@0: db.imagedata.svg.role.attribute = attribute role { text } patrick@0: db.imagedata.svg.attlist = patrick@0: db.imagedata.svg.role.attribute? patrick@0: & db.common.attributes patrick@0: & patrick@0: ## Specifies that the format of the data is SVG patrick@0: attribute format { patrick@0: patrick@0: ## Specifies SVG. patrick@0: "svg" patrick@0: }? patrick@0: & db.imagedata.align.attribute? patrick@0: & db.imagedata.valign.attribute? patrick@0: & db.imagedata.width.attribute? patrick@0: & db.imagedata.contentwidth.attribute? patrick@0: & db.imagedata.scalefit.attribute? patrick@0: & db.imagedata.scale.attribute? patrick@0: & db.imagedata.depth.attribute? patrick@0: & db.imagedata.contentdepth.attribute? patrick@0: db.imagedata.svg.info = db._info.title.forbidden patrick@0: db.imagedata.svg = patrick@0: patrick@0: ## An SVG drawing in a media object patrick@0: element imagedata { patrick@0: db.imagedata.svg.attlist, db.imagedata.svg.info, db._any.svg+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db._any.svg = patrick@0: patrick@0: ## Any element from the SVG namespace patrick@0: element svg:* { (db._any.attribute | text | db._any)* } patrick@0: } patrick@0: db.markup.inlines = patrick@0: db.tag patrick@0: | db.markup patrick@0: | db.token patrick@0: | db.symbol patrick@0: | db.literal patrick@0: | db.code patrick@0: | db.constant patrick@0: | db.email patrick@0: | db.uri patrick@0: div { patrick@0: db.markup.role.attribute = attribute role { text } patrick@0: db.markup.attlist = patrick@0: db.markup.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.markup = patrick@0: patrick@0: ## A string of formatting markup in text that is to be represented literally patrick@0: element markup { db.markup.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.tag.role.attribute = attribute role { text } patrick@0: db.tag.class.enumeration = patrick@0: patrick@0: ## An attribute patrick@0: "attribute" patrick@0: | patrick@0: ## An attribute value patrick@0: "attvalue" patrick@0: | patrick@0: ## An element patrick@0: "element" patrick@0: | patrick@0: ## An empty element tag patrick@0: "emptytag" patrick@0: | patrick@0: ## An end tag patrick@0: "endtag" patrick@0: | patrick@0: ## A general entity patrick@0: "genentity" patrick@0: | patrick@0: ## The local name part of a qualified name patrick@0: "localname" patrick@0: | patrick@0: ## A namespace patrick@0: "namespace" patrick@0: | patrick@0: ## A numeric character reference patrick@0: "numcharref" patrick@0: | patrick@0: ## A parameter entity patrick@0: "paramentity" patrick@0: | patrick@0: ## A processing instruction patrick@0: "pi" patrick@0: | patrick@0: ## The prefix part of a qualified name patrick@0: "prefix" patrick@0: | patrick@0: ## An SGML comment patrick@0: "comment" patrick@0: | patrick@0: ## A start tag patrick@0: "starttag" patrick@0: | patrick@0: ## An XML processing instruction patrick@0: "xmlpi" patrick@0: db.tag.class.attribute = patrick@0: patrick@0: ## Identifies the nature of the tag content patrick@0: attribute class { db.tag.class.enumeration } patrick@0: db.tag.namespace.attribute = patrick@0: patrick@0: ## Identifies the namespace of the tag content patrick@0: attribute namespace { xsd:anyURI } patrick@0: db.tag.attlist = patrick@0: db.tag.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.tag.class.attribute? patrick@0: & db.tag.namespace.attribute? patrick@0: db.tag = patrick@0: patrick@0: ## A component of XML (or SGML) markup patrick@0: element tag { db.tag.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.symbol.class.attribute = patrick@0: patrick@0: ## Identifies the class of symbol patrick@0: attribute class { patrick@0: patrick@0: ## The value is a limit of some kind patrick@0: "limit" patrick@0: } patrick@0: db.symbol.role.attribute = attribute role { text } patrick@0: db.symbol.attlist = patrick@0: db.symbol.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.symbol.class.attribute? patrick@0: db.symbol = patrick@0: patrick@0: ## A name that is replaced by a value before processing patrick@0: element symbol { db.symbol.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.token.role.attribute = attribute role { text } patrick@0: db.token.attlist = patrick@0: db.token.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.token = patrick@0: patrick@0: ## A unit of information patrick@0: element token { db.token.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.literal.role.attribute = attribute role { text } patrick@0: db.literal.attlist = patrick@0: db.literal.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.literal = patrick@0: patrick@0: ## Inline text that is some literal value patrick@0: element literal { db.literal.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: code.language.attribute = patrick@0: patrick@0: ## Identifies the (computer) language of the code fragment patrick@0: attribute language { text } patrick@0: db.code.role.attribute = attribute role { text } patrick@0: db.code.attlist = patrick@0: db.code.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & code.language.attribute? patrick@0: db.code = patrick@0: patrick@0: ## An inline code fragment patrick@0: element code { patrick@0: db.code.attlist, (db.programming.inlines | db._text)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.constant.class.attribute = patrick@0: patrick@0: ## Identifies the class of constant patrick@0: attribute class { patrick@0: patrick@0: ## The value is a limit of some kind patrick@0: "limit" patrick@0: } patrick@0: db.constant.role.attribute = attribute role { text } patrick@0: db.constant.attlist = patrick@0: db.constant.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.constant.class.attribute? patrick@0: db.constant = patrick@0: patrick@0: ## A programming or system constant patrick@0: element constant { db.constant.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.productname.role.attribute = attribute role { text } patrick@0: db.productname.class.enumeration = patrick@0: patrick@0: ## A name with a copyright patrick@0: "copyright" patrick@0: | patrick@0: ## A name with a registered copyright patrick@0: "registered" patrick@0: | patrick@0: ## A name of a service patrick@0: "service" patrick@0: | patrick@0: ## A name which is trademarked patrick@0: "trade" patrick@0: db.productname.class.attribute = patrick@0: patrick@0: ## Specifies the class of product name patrick@0: attribute class { db.productname.class.enumeration } patrick@0: db.productname.attlist = patrick@0: db.productname.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.productname.class.attribute? patrick@0: db.productname = patrick@0: patrick@0: ## The formal name of a product patrick@0: element productname { db.productname.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.productnumber.role.attribute = attribute role { text } patrick@0: db.productnumber.attlist = patrick@0: db.productnumber.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.productnumber = patrick@0: patrick@0: ## A number assigned to a product patrick@0: element productnumber { db.productnumber.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.database.class.enumeration = patrick@0: patrick@0: ## An alternate or secondary key patrick@0: "altkey" patrick@0: | patrick@0: ## A constraint patrick@0: "constraint" patrick@0: | patrick@0: ## A data type patrick@0: "datatype" patrick@0: | patrick@0: ## A field patrick@0: "field" patrick@0: | patrick@0: ## A foreign key patrick@0: "foreignkey" patrick@0: | patrick@0: ## A group patrick@0: "group" patrick@0: | patrick@0: ## An index patrick@0: "index" patrick@0: | patrick@0: ## The first or primary key patrick@0: "key1" patrick@0: | patrick@0: ## An alternate or secondary key patrick@0: "key2" patrick@0: | patrick@0: ## A name patrick@0: "name" patrick@0: | patrick@0: ## The primary key patrick@0: "primarykey" patrick@0: | patrick@0: ## A (stored) procedure patrick@0: "procedure" patrick@0: | patrick@0: ## A record patrick@0: "record" patrick@0: | patrick@0: ## A rule patrick@0: "rule" patrick@0: | patrick@0: ## The secondary key patrick@0: "secondarykey" patrick@0: | patrick@0: ## A table patrick@0: "table" patrick@0: | patrick@0: ## A user patrick@0: "user" patrick@0: | patrick@0: ## A view patrick@0: "view" patrick@0: db.database.class.attribute = patrick@0: patrick@0: ## Identifies the class of database artifact patrick@0: attribute class { db.database.class.enumeration } patrick@0: db.database.role.attribute = attribute role { text } patrick@0: db.database.attlist = patrick@0: db.database.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.database.class.attribute? patrick@0: db.database = patrick@0: patrick@0: ## The name of a database, or part of a database patrick@0: element database { db.database.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.application.class.enumeration = patrick@0: patrick@0: ## A hardware application patrick@0: "hardware" patrick@0: | patrick@0: ## A software application patrick@0: "software" patrick@0: db.application.class.attribute = patrick@0: patrick@0: ## Identifies the class of application patrick@0: attribute class { db.application.class.enumeration } patrick@0: db.application.role.attribute = attribute role { text } patrick@0: db.application.attlist = patrick@0: db.application.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.application.class.attribute? patrick@0: db.application = patrick@0: patrick@0: ## The name of a software program patrick@0: element application { db.application.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.hardware.role.attribute = attribute role { text } patrick@0: db.hardware.attlist = patrick@0: db.hardware.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.hardware = patrick@0: patrick@0: ## A physical part of a computer system patrick@0: element hardware { db.hardware.attlist, db._text } patrick@0: } patrick@0: db.gui.inlines = patrick@0: db.guiicon patrick@0: | db.guibutton patrick@0: | db.guimenuitem patrick@0: | db.guimenu patrick@0: | db.guisubmenu patrick@0: | db.guilabel patrick@0: | db.menuchoice patrick@0: | db.mousebutton patrick@0: div { patrick@0: db.guibutton.role.attribute = attribute role { text } patrick@0: db.guibutton.attlist = patrick@0: db.guibutton.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.guibutton = patrick@0: patrick@0: ## The text on a button in a GUI patrick@0: element guibutton { patrick@0: db.guibutton.attlist, patrick@0: (db._text | db.accel | db.superscript | db.subscript)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.guiicon.role.attribute = attribute role { text } patrick@0: db.guiicon.attlist = patrick@0: db.guiicon.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.guiicon = patrick@0: patrick@0: ## Graphic and/or text appearing as a icon in a GUI patrick@0: element guiicon { patrick@0: db.guiicon.attlist, patrick@0: (db._text | db.accel | db.superscript | db.subscript)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.guilabel.role.attribute = attribute role { text } patrick@0: db.guilabel.attlist = patrick@0: db.guilabel.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.guilabel = patrick@0: patrick@0: ## The text of a label in a GUI patrick@0: element guilabel { patrick@0: db.guilabel.attlist, patrick@0: (db._text | db.accel | db.superscript | db.subscript)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.guimenu.role.attribute = attribute role { text } patrick@0: db.guimenu.attlist = patrick@0: db.guimenu.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.guimenu = patrick@0: patrick@0: ## The name of a menu in a GUI patrick@0: element guimenu { patrick@0: db.guimenu.attlist, patrick@0: (db._text | db.accel | db.superscript | db.subscript)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.guimenuitem.role.attribute = attribute role { text } patrick@0: db.guimenuitem.attlist = patrick@0: db.guimenuitem.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.guimenuitem = patrick@0: patrick@0: ## The name of a terminal menu item in a GUI patrick@0: element guimenuitem { patrick@0: db.guimenuitem.attlist, patrick@0: (db._text | db.accel | db.superscript | db.subscript)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.guisubmenu.role.attribute = attribute role { text } patrick@0: db.guisubmenu.attlist = patrick@0: db.guisubmenu.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.guisubmenu = patrick@0: patrick@0: ## The name of a submenu in a GUI patrick@0: element guisubmenu { patrick@0: db.guisubmenu.attlist, patrick@0: (db._text | db.accel | db.superscript | db.subscript)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.menuchoice.role.attribute = attribute role { text } patrick@0: db.menuchoice.attlist = patrick@0: db.menuchoice.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.menuchoice = patrick@0: patrick@0: ## A selection or series of selections from a menu patrick@0: element menuchoice { patrick@0: db.menuchoice.attlist, patrick@0: db.shortcut?, patrick@0: (db.guibutton patrick@0: | db.guiicon patrick@0: | db.guilabel patrick@0: | db.guimenu patrick@0: | db.guimenuitem patrick@0: | db.guisubmenu)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.mousebutton.role.attribute = attribute role { text } patrick@0: db.mousebutton.attlist = patrick@0: db.mousebutton.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.mousebutton = patrick@0: patrick@0: ## The conventional name of a mouse button patrick@0: element mousebutton { db.mousebutton.attlist, db._text } patrick@0: } patrick@0: db.keyboard.inlines = patrick@0: db.keycombo patrick@0: | db.keycap patrick@0: | db.keycode patrick@0: | db.keysym patrick@0: | db.shortcut patrick@0: | db.accel patrick@0: div { patrick@0: db.keycap.function.enumeration = patrick@0: patrick@0: ## The "Alt" key patrick@0: "alt" patrick@0: | patrick@0: ## The "Backspace" key patrick@0: "backspace" patrick@0: | patrick@0: ## The "Command" key patrick@0: "command" patrick@0: | patrick@0: ## The "Control" key patrick@0: "control" patrick@0: | patrick@0: ## The "Delete" key patrick@0: "delete" patrick@0: | patrick@0: ## The down arrow patrick@0: "down" patrick@0: | patrick@0: ## The "End" key patrick@0: "end" patrick@0: | patrick@0: ## The "Enter" or "Return" key patrick@0: "enter" patrick@0: | patrick@0: ## The "Escape" key patrick@0: "escape" patrick@0: | patrick@0: ## The "Home" key patrick@0: "home" patrick@0: | patrick@0: ## The "Insert" key patrick@0: "insert" patrick@0: | patrick@0: ## The left arrow patrick@0: "left" patrick@0: | patrick@0: ## The "Meta" key patrick@0: "meta" patrick@0: | patrick@0: ## The "Option" key patrick@0: "option" patrick@0: | patrick@0: ## The page down key patrick@0: "pagedown" patrick@0: | patrick@0: ## The page up key patrick@0: "pageup" patrick@0: | patrick@0: ## The right arrow patrick@0: "right" patrick@0: | patrick@0: ## The "Shift" key patrick@0: "shift" patrick@0: | patrick@0: ## The spacebar patrick@0: "space" patrick@0: | patrick@0: ## The "Tab" key patrick@0: "tab" patrick@0: | patrick@0: ## The up arrow patrick@0: "up" patrick@0: db.keycap.function-enum.attribute = patrick@0: patrick@0: ## Identifies the function key patrick@0: attribute function { db.keycap.function.enumeration }? patrick@0: db.keycap.function-other.attributes = patrick@0: patrick@0: ## Identifies the function key patrick@0: attribute function { patrick@0: patrick@0: ## Indicates a non-standard function key patrick@0: "other" patrick@0: }?, patrick@0: patrick@0: ## Specifies a keyword that identifies the non-standard key patrick@0: attribute otherfunction { text } patrick@0: db.keycap.function.attrib = patrick@0: db.keycap.function-enum.attribute patrick@0: | db.keycap.function-other.attributes patrick@0: db.keycap.role.attribute = attribute role { text } patrick@0: db.keycap.attlist = patrick@0: db.keycap.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.keycap.function.attrib patrick@0: db.keycap = patrick@0: patrick@0: ## The text printed on a key on a keyboard patrick@0: element keycap { db.keycap.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.keycode.role.attribute = attribute role { text } patrick@0: db.keycode.attlist = patrick@0: db.keycode.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.keycode = patrick@0: patrick@0: ## The internal, frequently numeric, identifier for a key on a keyboard patrick@0: element keycode { db.keycode.attlist, db._text } patrick@0: } patrick@0: db.keycombination.contentmodel = patrick@0: (db.keycap | db.keycombo | db.keysym) | db.mousebutton patrick@0: div { patrick@0: db.keycombo.action.enumeration = patrick@0: patrick@0: ## A (single) mouse click. patrick@0: "click" patrick@0: | patrick@0: ## A double mouse click. patrick@0: "double-click" patrick@0: | patrick@0: ## A mouse or key press. patrick@0: "press" patrick@0: | patrick@0: ## Sequential clicks or presses. patrick@0: "seq" patrick@0: | patrick@0: ## Simultaneous clicks or presses. patrick@0: "simul" patrick@0: db.keycombo.action-enum.attribute = patrick@0: patrick@0: ## Identifies the nature of the action taken. If keycombo patrick@0: ## contains more than one element, simul patrick@0: ## is the default, otherwise there is no default. patrick@0: attribute action { db.keycombo.action.enumeration }? patrick@0: db.keycombo.action-other.attributes = patrick@0: patrick@0: ## Identifies the nature of the action taken patrick@0: attribute action { patrick@0: patrick@0: ## Indicates a non-standard action patrick@0: "other" patrick@0: }?, patrick@0: patrick@0: ## Identifies the non-standard action in some unspecified way. patrick@0: attribute otheraction { text } patrick@0: db.keycombo.action.attrib = patrick@0: db.keycombo.action-enum.attribute patrick@0: | db.keycombo.action-other.attributes patrick@0: db.keycombo.role.attribute = attribute role { text } patrick@0: db.keycombo.attlist = patrick@0: db.keycombo.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.keycombo.action.attrib patrick@0: db.keycombo = patrick@0: patrick@0: ## A combination of input actions patrick@0: element keycombo { patrick@0: db.keycombo.attlist, db.keycombination.contentmodel+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.keysym.role.attribute = attribute role { text } patrick@0: db.keysym.attlist = patrick@0: db.keysym.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.keysym = patrick@0: patrick@0: ## The symbolic name of a key on a keyboard patrick@0: element keysym { db.keysym.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.accel.role.attribute = attribute role { text } patrick@0: db.accel.attlist = patrick@0: db.accel.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.accel = patrick@0: patrick@0: ## A graphical user interface (GUI) keyboard shortcut patrick@0: element accel { db.accel.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.shortcut.action.attrib = db.keycombo.action.attrib patrick@0: db.shortcut.role.attribute = attribute role { text } patrick@0: db.shortcut.attlist = patrick@0: db.shortcut.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.shortcut.action.attrib patrick@0: db.shortcut = patrick@0: patrick@0: ## A key combination for an action that is also accessible through a menu patrick@0: element shortcut { patrick@0: db.shortcut.attlist, db.keycombination.contentmodel+ patrick@0: } patrick@0: } patrick@0: db.os.inlines = patrick@0: db.prompt patrick@0: | db.envar patrick@0: | db.filename patrick@0: | db.command patrick@0: | db.computeroutput patrick@0: | db.userinput patrick@0: db.computeroutput.inlines = patrick@0: (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) patrick@0: | db.co patrick@0: | db.markup.inlines patrick@0: db.userinput.inlines = patrick@0: (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) patrick@0: | db.co patrick@0: | db.markup.inlines patrick@0: | db.gui.inlines patrick@0: | db.keyboard.inlines patrick@0: db.prompt.inlines = db._text | db.co patrick@0: div { patrick@0: db.prompt.role.attribute = attribute role { text } patrick@0: db.prompt.attlist = patrick@0: db.prompt.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.prompt = patrick@0: patrick@0: ## A character or string indicating the start of an input field in a computer display patrick@0: element prompt { db.prompt.attlist, db.prompt.inlines* } patrick@0: } patrick@0: div { patrick@0: db.envar.role.attribute = attribute role { text } patrick@0: db.envar.attlist = patrick@0: db.envar.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.envar = patrick@0: patrick@0: ## A software environment variable patrick@0: element envar { db.envar.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.filename.class.enumeration = patrick@0: patrick@0: ## A device patrick@0: "devicefile" patrick@0: | patrick@0: ## A directory patrick@0: "directory" patrick@0: | patrick@0: ## A filename extension patrick@0: "extension" patrick@0: | patrick@0: ## A header file (as for a programming language) patrick@0: "headerfile" patrick@0: | patrick@0: ## A library file patrick@0: "libraryfile" patrick@0: | patrick@0: ## A partition (as of a hard disk) patrick@0: "partition" patrick@0: | patrick@0: ## A symbolic link patrick@0: "symlink" patrick@0: db.filename.class.attribute = patrick@0: patrick@0: ## Identifies the class of filename patrick@0: attribute class { db.filename.class.enumeration } patrick@0: db.filename.path.attribute = patrick@0: patrick@0: ## Specifies the path of the filename patrick@0: attribute path { text } patrick@0: db.filename.role.attribute = attribute role { text } patrick@0: db.filename.attlist = patrick@0: db.filename.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.filename.path.attribute? patrick@0: & db.filename.class.attribute? patrick@0: db.filename = patrick@0: patrick@0: ## The name of a file patrick@0: element filename { db.filename.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.command.role.attribute = attribute role { text } patrick@0: db.command.attlist = patrick@0: db.command.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.command = patrick@0: patrick@0: ## The name of an executable program or other software command patrick@0: element command { db.command.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.computeroutput.role.attribute = attribute role { text } patrick@0: db.computeroutput.attlist = patrick@0: db.computeroutput.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.computeroutput = patrick@0: patrick@0: ## Data, generally text, displayed or presented by a computer patrick@0: element computeroutput { patrick@0: db.computeroutput.attlist, db.computeroutput.inlines* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.userinput.role.attribute = attribute role { text } patrick@0: db.userinput.attlist = patrick@0: db.userinput.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.userinput = patrick@0: patrick@0: ## Data entered by the user patrick@0: element userinput { db.userinput.attlist, db.userinput.inlines* } patrick@0: } patrick@0: div { patrick@0: db.cmdsynopsis.role.attribute = attribute role { text } patrick@0: db.cmdsynopsis.sepchar.attribute = patrick@0: patrick@0: ## Specifies the character that should separate the command and its top-level arguments patrick@0: attribute sepchar { text } patrick@0: db.cmdsynopsis.cmdlength.attribute = patrick@0: patrick@0: ## Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line patrick@0: attribute cmdlength { text } patrick@0: db.cmdsynopsis.label.attribute = db.label.attribute patrick@0: db.cmdsynopsis.attlist = patrick@0: db.cmdsynopsis.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.cmdsynopsis.sepchar.attribute? patrick@0: & db.cmdsynopsis.cmdlength.attribute? patrick@0: & db.cmdsynopsis.label.attribute? patrick@0: db.cmdsynopsis.info = db._info.title.forbidden patrick@0: db.cmdsynopsis = patrick@0: patrick@0: ## A syntax summary for a software command patrick@0: element cmdsynopsis { patrick@0: db.cmdsynopsis.attlist, patrick@0: db.cmdsynopsis.info, patrick@0: (db.command | db.arg | db.group | db.sbr)+, patrick@0: db.synopfragment* patrick@0: } patrick@0: } patrick@0: db.rep.enumeration = patrick@0: patrick@0: ## Can not be repeated. patrick@0: "norepeat" patrick@0: | patrick@0: ## Can be repeated. patrick@0: "repeat" patrick@0: db.rep.attribute = patrick@0: patrick@0: ## Indicates whether or not repetition is possible. patrick@0: [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration } patrick@0: db.choice.enumeration = patrick@0: patrick@0: ## Formatted to indicate that it is optional. patrick@0: "opt" patrick@0: | patrick@0: ## Formatted without indication. patrick@0: "plain" patrick@0: | patrick@0: ## Formatted to indicate that it is required. patrick@0: "req" patrick@0: db.choice.opt.attribute = patrick@0: patrick@0: ## Indicates optionality. patrick@0: [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration } patrick@0: db.choice.req.attribute = patrick@0: patrick@0: ## Indicates optionality. patrick@0: [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration } patrick@0: div { patrick@0: db.arg.role.attribute = attribute role { text } patrick@0: db.arg.rep.attribute = db.rep.attribute patrick@0: db.arg.choice.attribute = db.choice.opt.attribute patrick@0: db.arg.attlist = patrick@0: db.arg.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.arg.rep.attribute? patrick@0: & db.arg.choice.attribute? patrick@0: db.arg = patrick@0: patrick@0: ## An argument in a cmdsynopsis patrick@0: element arg { patrick@0: db.arg.attlist, patrick@0: (db._text patrick@0: | db.arg patrick@0: | db.group patrick@0: | db.option patrick@0: | db.synopfragmentref patrick@0: | db.sbr)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.group.role.attribute = attribute role { text } patrick@0: db.group.rep.attribute = db.rep.attribute patrick@0: db.group.choice.attribute = db.choice.opt.attribute patrick@0: db.group.attlist = patrick@0: db.group.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.group.rep.attribute? patrick@0: & db.group.choice.attribute? patrick@0: db.group = patrick@0: patrick@0: ## A group of elements in a cmdsynopsis patrick@0: element group { patrick@0: db.group.attlist, patrick@0: (db.arg patrick@0: | db.group patrick@0: | db.option patrick@0: | db.synopfragmentref patrick@0: | db.replaceable patrick@0: | db.sbr)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.sbr.role.attribute = attribute role { text } patrick@0: db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes patrick@0: db.sbr = patrick@0: patrick@0: ## An explicit line break in a command synopsis patrick@0: element sbr { db.sbr.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.synopfragment.role.attribute = attribute role { text } patrick@0: db.synopfragment.attlist = patrick@0: db.synopfragment.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.synopfragment = patrick@0: patrick@0: ## A portion of a cmdsynopsis broken out from the main body of the synopsis patrick@0: element synopfragment { patrick@0: db.synopfragment.attlist, (db.arg | db.group)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.synopfragmentref.role.attribute = attribute role { text } patrick@0: db.synopfragmentref.attlist = patrick@0: db.synopfragmentref.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.linkend.attribute patrick@0: db.synopfragmentref = patrick@0: patrick@0: ## A reference to a fragment of a command synopsis patrick@0: element synopfragmentref { db.synopfragmentref.attlist, text } patrick@0: } patrick@0: db.programming.inlines = patrick@0: db.function patrick@0: | db.parameter patrick@0: | db.varname patrick@0: | db.returnvalue patrick@0: | db.type patrick@0: | db.classname patrick@0: | db.exceptionname patrick@0: | db.interfacename patrick@0: | db.methodname patrick@0: | db.modifier patrick@0: | db.initializer patrick@0: | db.oo.inlines patrick@0: db.oo.inlines = db.ooclass | db.ooexception | db.oointerface patrick@0: db.synopsis.blocks = patrick@0: (db.funcsynopsis patrick@0: | db.classsynopsis patrick@0: | db.methodsynopsis patrick@0: | db.constructorsynopsis patrick@0: | db.destructorsynopsis patrick@0: | db.fieldsynopsis) patrick@0: | db.cmdsynopsis patrick@0: div { patrick@0: db.synopsis.role.attribute = attribute role { text } patrick@0: db.synopsis.label.attribute = db.label.attribute patrick@0: db.synopsis.attlist = patrick@0: db.synopsis.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.verbatim.attributes patrick@0: & db.synopsis.label.attribute? patrick@0: db.synopsis = patrick@0: patrick@0: ## A general-purpose element for representing the syntax of commands or functions patrick@0: element synopsis { db.synopsis.attlist, db.verbatim.contentmodel } patrick@0: } patrick@0: div { patrick@0: db.funcsynopsis.role.attribute = attribute role { text } patrick@0: db.funcsynopsis.attlist = patrick@0: db.funcsynopsis.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.language.attribute? patrick@0: db.funcsynopsis.info = db._info.title.forbidden patrick@0: db.funcsynopsis = patrick@0: patrick@0: ## The syntax summary for a function definition patrick@0: element funcsynopsis { patrick@0: db.funcsynopsis.attlist, patrick@0: db.funcsynopsis.info, patrick@0: (db.funcsynopsisinfo | db.funcprototype)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.funcsynopsisinfo.role.attribute = attribute role { text } patrick@0: db.funcsynopsisinfo.attlist = patrick@0: db.funcsynopsisinfo.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.verbatim.attributes patrick@0: db.funcsynopsisinfo = patrick@0: patrick@0: ## Information supplementing the funcdefs of a funcsynopsis patrick@0: element funcsynopsisinfo { patrick@0: db.funcsynopsisinfo.attlist, db.verbatim.contentmodel patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.funcprototype.role.attribute = attribute role { text } patrick@0: db.funcprototype.attlist = patrick@0: db.funcprototype.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.funcprototype = patrick@0: patrick@0: ## The prototype of a function patrick@0: element funcprototype { patrick@0: db.funcprototype.attlist, patrick@0: db.modifier*, patrick@0: db.funcdef, patrick@0: (db.void patrick@0: | db.varargs patrick@0: | ((db.paramdef | db.group.paramdef)+, db.varargs?)), patrick@0: db.modifier* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.funcdef.role.attribute = attribute role { text } patrick@0: db.funcdef.attlist = patrick@0: db.funcdef.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.funcdef = patrick@0: patrick@0: ## A function (subroutine) name and its return type patrick@0: element funcdef { patrick@0: db.funcdef.attlist, (db._text | db.type | db.function)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.function.role.attribute = attribute role { text } patrick@0: db.function.attlist = patrick@0: db.function.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.function = patrick@0: patrick@0: ## The name of a function or subroutine, as in a programming language patrick@0: element function { db.function.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.void.role.attribute = attribute role { text } patrick@0: db.void.attlist = patrick@0: db.void.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.void = patrick@0: patrick@0: ## An empty element in a function synopsis indicating that the function in question takes no arguments patrick@0: element void { db.void.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.varargs.role.attribute = attribute role { text } patrick@0: db.varargs.attlist = patrick@0: db.varargs.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.varargs = patrick@0: patrick@0: ## An empty element in a function synopsis indicating a variable number of arguments patrick@0: element varargs { db.varargs.attlist, empty } patrick@0: } patrick@0: div { patrick@0: db.group.paramdef.role.attribute = attribute role { text } patrick@0: db.group.paramdef.choice.attribute = db.choice.opt.attribute patrick@0: db.group.paramdef.attlist = patrick@0: db.group.paramdef.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.group.paramdef.choice.attribute? patrick@0: db.group.paramdef = patrick@0: patrick@0: ## A group of parameters patrick@0: element group { patrick@0: db.group.paramdef.attlist, (db.paramdef | db.group.paramdef)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.paramdef.role.attribute = attribute role { text } patrick@0: db.paramdef.choice.enumeration = patrick@0: patrick@0: ## Formatted to indicate that it is optional. patrick@0: "opt" patrick@0: | patrick@0: ## Formatted to indicate that it is required. patrick@0: "req" patrick@0: db.paramdef.choice.attribute = patrick@0: patrick@0: ## Indicates optionality. patrick@0: [ a:defaultValue = "opt" ] patrick@0: attribute choice { db.paramdef.choice.enumeration } patrick@0: db.paramdef.attlist = patrick@0: db.paramdef.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.paramdef.choice.attribute? patrick@0: db.paramdef = patrick@0: patrick@0: ## Information about a function parameter in a programming language patrick@0: element paramdef { patrick@0: db.paramdef.attlist, patrick@0: (db._text patrick@0: | db.initializer patrick@0: | db.type patrick@0: | db.parameter patrick@0: | db.funcparams)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.funcparams.role.attribute = attribute role { text } patrick@0: db.funcparams.attlist = patrick@0: db.funcparams.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.funcparams = patrick@0: patrick@0: ## Parameters for a function referenced through a function pointer in a synopsis patrick@0: element funcparams { db.funcparams.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.classsynopsis.role.attribute = attribute role { text } patrick@0: db.classsynopsis.class.enumeration = patrick@0: patrick@0: ## This is the synopsis of a class patrick@0: "class" patrick@0: | patrick@0: ## This is the synopsis of an interface patrick@0: "interface" patrick@0: db.classsynopsis.class.attribute = patrick@0: patrick@0: ## Specifies the nature of the synopsis patrick@0: attribute class { db.classsynopsis.class.enumeration } patrick@0: db.classsynopsis.attlist = patrick@0: db.classsynopsis.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.language.attribute? patrick@0: & db.classsynopsis.class.attribute? patrick@0: db.classsynopsis = patrick@0: patrick@0: ## The syntax summary for a class definition patrick@0: element classsynopsis { patrick@0: db.classsynopsis.attlist, patrick@0: db.oo.inlines+, patrick@0: (db.classsynopsisinfo patrick@0: | db.methodsynopsis patrick@0: | db.constructorsynopsis patrick@0: | db.destructorsynopsis patrick@0: | db.fieldsynopsis)* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.classsynopsisinfo.role.attribute = attribute role { text } patrick@0: db.classsynopsisinfo.attlist = patrick@0: db.classsynopsisinfo.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.verbatim.attributes patrick@0: db.classsynopsisinfo = patrick@0: patrick@0: ## Information supplementing the contents of a classsynopsis patrick@0: element classsynopsisinfo { patrick@0: db.classsynopsisinfo.attlist, db.verbatim.contentmodel patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.ooclass.role.attribute = attribute role { text } patrick@0: db.ooclass.attlist = patrick@0: db.ooclass.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.ooclass = patrick@0: patrick@0: ## A class in an object-oriented programming language patrick@0: element ooclass { patrick@0: db.ooclass.attlist, (db.package | db.modifier)*, db.classname patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.oointerface.role.attribute = attribute role { text } patrick@0: db.oointerface.attlist = patrick@0: db.oointerface.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.oointerface = patrick@0: patrick@0: ## An interface in an object-oriented programming language patrick@0: element oointerface { patrick@0: db.oointerface.attlist, patrick@0: (db.package | db.modifier)*, patrick@0: db.interfacename patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.ooexception.role.attribute = attribute role { text } patrick@0: db.ooexception.attlist = patrick@0: db.ooexception.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.ooexception = patrick@0: patrick@0: ## An exception in an object-oriented programming language patrick@0: element ooexception { patrick@0: db.ooexception.attlist, patrick@0: (db.package | db.modifier)*, patrick@0: db.exceptionname patrick@0: } patrick@0: } patrick@0: db.modifier.xml.space.attribute = patrick@0: patrick@0: ## Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). patrick@0: attribute xml:space { patrick@0: patrick@0: ## Extra whitespace and line breaks must be preserved. patrick@0: [ patrick@0: # Ideally the definition of xml:space used on modifier would be patrick@0: # different from the definition used on the verbatim elements. The patrick@0: # verbatim elements forbid the use of xml:space="default" which patrick@0: # wouldn't be a problem on modifier. But doing that causes the patrick@0: # generated XSD schemas to be broken so I'm just reusing the existing patrick@0: # definition for now. It won't be backwards incompatible to fix this patrick@0: # problem in the future. patrick@0: # | ## Extra whitespace and line breaks are not preserved. patrick@0: # "default" patrick@0: patrick@0: ] patrick@0: "preserve" patrick@0: } patrick@0: div { patrick@0: db.modifier.role.attribute = attribute role { text } patrick@0: db.modifier.attlist = patrick@0: db.modifier.xml.space.attribute? patrick@0: & db.modifier.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.modifier = patrick@0: patrick@0: ## Modifiers in a synopsis patrick@0: element modifier { db.modifier.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.interfacename.role.attribute = attribute role { text } patrick@0: db.interfacename.attlist = patrick@0: db.interfacename.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.interfacename = patrick@0: patrick@0: ## The name of an interface patrick@0: element interfacename { db.interfacename.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.exceptionname.role.attribute = attribute role { text } patrick@0: db.exceptionname.attlist = patrick@0: db.exceptionname.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.exceptionname = patrick@0: patrick@0: ## The name of an exception patrick@0: element exceptionname { db.exceptionname.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.fieldsynopsis.role.attribute = attribute role { text } patrick@0: db.fieldsynopsis.attlist = patrick@0: db.fieldsynopsis.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.language.attribute? patrick@0: db.fieldsynopsis = patrick@0: patrick@0: ## The name of a field in a class definition patrick@0: element fieldsynopsis { patrick@0: db.fieldsynopsis.attlist, patrick@0: db.modifier*, patrick@0: db.type?, patrick@0: db.varname, patrick@0: db.initializer? patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.initializer.role.attribute = attribute role { text } patrick@0: db.initializer.attlist = patrick@0: db.initializer.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.initializer.inlines = db._text | db.mathphrase | db.markup.inlines patrick@0: db.initializer = patrick@0: patrick@0: ## The initializer for a fieldsynopsis patrick@0: element initializer { patrick@0: db.initializer.attlist, db.initializer.inlines* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.constructorsynopsis.role.attribute = attribute role { text } patrick@0: db.constructorsynopsis.attlist = patrick@0: db.constructorsynopsis.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.language.attribute? patrick@0: db.constructorsynopsis = patrick@0: patrick@0: ## A syntax summary for a constructor patrick@0: element constructorsynopsis { patrick@0: db.constructorsynopsis.attlist, patrick@0: db.modifier*, patrick@0: db.methodname?, patrick@0: ((db.methodparam | db.group.methodparam)+ | db.void?), patrick@0: db.exceptionname* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.destructorsynopsis.role.attribute = attribute role { text } patrick@0: db.destructorsynopsis.attlist = patrick@0: db.destructorsynopsis.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.language.attribute? patrick@0: db.destructorsynopsis = patrick@0: patrick@0: ## A syntax summary for a destructor patrick@0: element destructorsynopsis { patrick@0: db.destructorsynopsis.attlist, patrick@0: db.modifier*, patrick@0: db.methodname?, patrick@0: ((db.methodparam | db.group.methodparam)+ | db.void?), patrick@0: db.exceptionname* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.methodsynopsis.role.attribute = attribute role { text } patrick@0: db.methodsynopsis.attlist = patrick@0: db.methodsynopsis.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.language.attribute? patrick@0: db.methodsynopsis = patrick@0: patrick@0: ## A syntax summary for a method patrick@0: element methodsynopsis { patrick@0: db.methodsynopsis.attlist, patrick@0: db.modifier*, patrick@0: (db.type | db.void)?, patrick@0: db.methodname, patrick@0: ((db.methodparam | db.group.methodparam)+ | db.void), patrick@0: db.exceptionname*, patrick@0: db.modifier* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.methodname.role.attribute = attribute role { text } patrick@0: db.methodname.attlist = patrick@0: db.methodname.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.methodname = patrick@0: patrick@0: ## The name of a method patrick@0: element methodname { db.methodname.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.methodparam.role.attribute = attribute role { text } patrick@0: db.methodparam.rep.attribute = db.rep.attribute patrick@0: db.methodparam.choice.attribute = db.choice.req.attribute patrick@0: db.methodparam.attlist = patrick@0: db.methodparam.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.methodparam.rep.attribute? patrick@0: & db.methodparam.choice.attribute? patrick@0: db.methodparam = patrick@0: patrick@0: ## Parameters to a method patrick@0: element methodparam { patrick@0: db.methodparam.attlist, patrick@0: db.modifier*, patrick@0: db.type?, patrick@0: ((db.modifier*, db.parameter, db.initializer?) | db.funcparams), patrick@0: db.modifier* patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.group.methodparam.role.attribute = attribute role { text } patrick@0: db.group.methodparam.choice.attribute = db.choice.opt.attribute patrick@0: db.group.methodparam.attlist = patrick@0: db.group.methodparam.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.group.methodparam.choice.attribute? patrick@0: db.group.methodparam = patrick@0: patrick@0: ## A group of method parameters patrick@0: element group { patrick@0: db.group.methodparam.attlist, patrick@0: (db.methodparam | db.group.methodparam)+ patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.varname.role.attribute = attribute role { text } patrick@0: db.varname.attlist = patrick@0: db.varname.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.varname = patrick@0: patrick@0: ## The name of a variable patrick@0: element varname { db.varname.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.returnvalue.role.attribute = attribute role { text } patrick@0: db.returnvalue.attlist = patrick@0: db.returnvalue.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.returnvalue = patrick@0: patrick@0: ## The value returned by a function patrick@0: element returnvalue { db.returnvalue.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.type.role.attribute = attribute role { text } patrick@0: db.type.attlist = patrick@0: db.type.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.type = patrick@0: patrick@0: ## The classification of a value patrick@0: element type { db.type.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.classname.role.attribute = attribute role { text } patrick@0: db.classname.attlist = patrick@0: db.classname.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.classname = patrick@0: patrick@0: ## The name of a class, in the object-oriented programming sense patrick@0: element classname { db.classname.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.programlisting.role.attribute = attribute role { text } patrick@0: db.programlisting.width.attribute = db.width.characters.attribute patrick@0: db.programlisting.attlist = patrick@0: db.programlisting.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.verbatim.attributes patrick@0: & db.programlisting.width.attribute? patrick@0: db.programlisting = patrick@0: patrick@0: ## A literal listing of all or part of a program patrick@0: element programlisting { patrick@0: db.programlisting.attlist, db.verbatim.contentmodel patrick@0: } patrick@0: } patrick@0: db.admonition.blocks = patrick@0: db.caution | db.important | db.note | db.tip | db.warning patrick@0: db.admonition.contentmodel = db._info.title.only, db.all.blocks+ patrick@0: div { patrick@0: db.caution.role.attribute = attribute role { text } patrick@0: db.caution.attlist = patrick@0: db.caution.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.caution = patrick@0: patrick@0: ## A note of caution patrick@0: element caution { db.caution.attlist, db.admonition.contentmodel } patrick@0: } patrick@0: div { patrick@0: db.important.role.attribute = attribute role { text } patrick@0: db.important.attlist = patrick@0: db.important.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.important = patrick@0: patrick@0: ## An admonition set off from the text patrick@0: element important { patrick@0: db.important.attlist, db.admonition.contentmodel patrick@0: } patrick@0: } patrick@0: div { patrick@0: db.note.role.attribute = attribute role { text } patrick@0: db.note.attlist = patrick@0: db.note.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.note = patrick@0: patrick@0: ## A message set off from the text patrick@0: element note { db.note.attlist, db.admonition.contentmodel } patrick@0: } patrick@0: div { patrick@0: db.tip.role.attribute = attribute role { text } patrick@0: db.tip.attlist = patrick@0: db.tip.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.tip = patrick@0: patrick@0: ## A suggestion to the user, set off from the text patrick@0: element tip { db.tip.attlist, db.admonition.contentmodel } patrick@0: } patrick@0: div { patrick@0: db.warning.role.attribute = attribute role { text } patrick@0: db.warning.attlist = patrick@0: db.warning.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.warning = patrick@0: patrick@0: ## An admonition set off from the text patrick@0: element warning { db.warning.attlist, db.admonition.contentmodel } patrick@0: } patrick@0: db.error.inlines = patrick@0: db.errorcode | db.errortext | db.errorname | db.errortype patrick@0: div { patrick@0: db.errorcode.role.attribute = attribute role { text } patrick@0: db.errorcode.attlist = patrick@0: db.errorcode.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.errorcode = patrick@0: patrick@0: ## An error code patrick@0: element errorcode { db.errorcode.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.errorname.role.attribute = attribute role { text } patrick@0: db.errorname.attlist = patrick@0: db.errorname.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.errorname = patrick@0: patrick@0: ## An error name patrick@0: element errorname { db.errorname.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.errortext.role.attribute = attribute role { text } patrick@0: db.errortext.attlist = patrick@0: db.errortext.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.errortext = patrick@0: patrick@0: ## An error message. patrick@0: element errortext { db.errortext.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.errortype.role.attribute = attribute role { text } patrick@0: db.errortype.attlist = patrick@0: db.errortype.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.errortype = patrick@0: patrick@0: ## The classification of an error message patrick@0: element errortype { db.errortype.attlist, db._text } patrick@0: } patrick@0: db.systemitem.inlines = db._text | db.co patrick@0: div { patrick@0: db.systemitem.class.enumeration = patrick@0: patrick@0: ## A daemon or other system process (syslogd) patrick@0: "daemon" patrick@0: | patrick@0: ## A domain name (example.com) patrick@0: "domainname" patrick@0: | patrick@0: ## An ethernet address (00:05:4E:49:FD:8E) patrick@0: "etheraddress" patrick@0: | patrick@0: ## An event of some sort (SIGHUP) patrick@0: "event" patrick@0: | patrick@0: ## An event handler of some sort (hangup) patrick@0: "eventhandler" patrick@0: | patrick@0: ## A filesystem (ext3) patrick@0: "filesystem" patrick@0: | patrick@0: ## A fully qualified domain name (my.example.com) patrick@0: "fqdomainname" patrick@0: | patrick@0: ## A group name (wheel) patrick@0: "groupname" patrick@0: | patrick@0: ## An IP address (127.0.0.1) patrick@0: "ipaddress" patrick@0: | patrick@0: ## A library (libncurses) patrick@0: "library" patrick@0: | patrick@0: ## A macro patrick@0: "macro" patrick@0: | patrick@0: ## A netmask (255.255.255.192) patrick@0: "netmask" patrick@0: | patrick@0: ## A newsgroup (comp.text.xml) patrick@0: "newsgroup" patrick@0: | patrick@0: ## An operating system name (Hurd) patrick@0: "osname" patrick@0: | patrick@0: ## A process (gnome-cups-icon) patrick@0: "process" patrick@0: | patrick@0: ## A protocol (ftp) patrick@0: "protocol" patrick@0: | patrick@0: ## A resource patrick@0: "resource" patrick@0: | patrick@0: ## A server (mail.example.com) patrick@0: "server" patrick@0: | patrick@0: ## A service (ppp) patrick@0: "service" patrick@0: | patrick@0: ## A system name (hephaistos) patrick@0: "systemname" patrick@0: | patrick@0: ## A user name (ndw) patrick@0: "username" patrick@0: db.systemitem.class.attribute = patrick@0: patrick@0: ## Identifies the nature of the system item patrick@0: attribute class { db.systemitem.class.enumeration } patrick@0: db.systemitem.role.attribute = attribute role { text } patrick@0: db.systemitem.attlist = patrick@0: db.systemitem.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.systemitem.class.attribute? patrick@0: db.systemitem = patrick@0: patrick@0: ## A system-related item or term patrick@0: element systemitem { db.systemitem.attlist, db.systemitem.inlines* } patrick@0: } patrick@0: div { patrick@0: db.option.role.attribute = attribute role { text } patrick@0: db.option.attlist = patrick@0: db.option.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.option = patrick@0: patrick@0: ## An option for a software command patrick@0: element option { db.option.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.optional.role.attribute = attribute role { text } patrick@0: db.optional.attlist = patrick@0: db.optional.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.optional = patrick@0: patrick@0: ## Optional information patrick@0: element optional { db.optional.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.property.role.attribute = attribute role { text } patrick@0: db.property.attlist = patrick@0: db.property.role.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: db.property = patrick@0: patrick@0: ## A unit of data associated with some part of a computer system patrick@0: element property { db.property.attlist, db._text } patrick@0: } patrick@0: div { patrick@0: db.topic.status.attribute = db.status.attribute patrick@0: db.topic.role.attribute = attribute role { text } patrick@0: db.topic.type.attribute = patrick@0: patrick@0: ## Identifies the topic type patrick@0: attribute type { text } patrick@0: db.topic.attlist = patrick@0: db.topic.role.attribute? patrick@0: & db.topic.type.attribute? patrick@0: & db.common.attributes patrick@0: & db.common.linking.attributes patrick@0: & db.label.attribute? patrick@0: & db.topic.status.attribute? patrick@0: db.topic.info = db._info.title.req patrick@0: db.topic = patrick@0: patrick@0: ## A modular unit of documentation not part of any particular narrative flow patrick@0: element topic { patrick@0: db.topic.attlist, patrick@0: db.topic.info, patrick@0: db.navigation.components*, patrick@0: db.toplevel.blocks.or.sections, patrick@0: db.navigation.components* patrick@0: } patrick@0: }