RelaxNG/docbook.rnc
changeset 0 e8d6296c8d5e
equal deleted inserted replaced
-1:000000000000 0:e8d6296c8d5e
       
     1 namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
       
     2 namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
       
     3 default namespace db = "http://docbook.org/ns/docbook"
       
     4 namespace html = "http://www.w3.org/1999/xhtml"
       
     5 namespace mml = "http://www.w3.org/1998/Math/MathML"
       
     6 namespace rng = "http://relaxng.org/ns/structure/1.0"
       
     7 namespace s = "http://www.ascc.net/xml/schematron"
       
     8 namespace svg = "http://www.w3.org/2000/svg"
       
     9 namespace xlink = "http://www.w3.org/1999/xlink"
       
    10 
       
    11 #  DocBook V5.0
       
    12 
       
    13 # See http://docbook.org/ns/docbook
       
    14 
       
    15 # This file is part of DocBook V5.0
       
    16 # 
       
    17 # Copyright 1992-2008 HaL Computer Systems, Inc.,
       
    18 # O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
       
    19 # Corporation, Norman Walsh, Sun Microsystems, Inc., and the
       
    20 # Organization for the Advancement of Structured Information
       
    21 # Standards (OASIS).
       
    22 # 
       
    23 # Release: $Id$
       
    24 # 
       
    25 # Permission to use, copy, modify and distribute the DocBook schema
       
    26 # and its accompanying documentation for any purpose and without fee
       
    27 # is hereby granted in perpetuity, provided that the above copyright
       
    28 # notice and this paragraph appear in all copies. The copyright
       
    29 # holders make no representation about the suitability of the schema
       
    30 # for any purpose. It is provided "as is" without expressed or implied
       
    31 # warranty.
       
    32 # 
       
    33 # If you modify the DocBook schema in any way, label your schema as a
       
    34 # variant of DocBook. See the reference documentation
       
    35 # (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
       
    36 # for more information.
       
    37 # 
       
    38 # Please direct all questions, bug reports, or suggestions for changes
       
    39 # to the docbook@lists.oasis-open.org mailing list. For more
       
    40 # information, see http://www.oasis-open.org/docbook/.
       
    41 # 
       
    42 # ======================================================================
       
    43 start =
       
    44   (db.set
       
    45    | db.book
       
    46    | db.divisions
       
    47    | db.components
       
    48    | db.navigation.components
       
    49    | db.section
       
    50    | db.para)
       
    51    | (db.abstract
       
    52      | db.mediaobject.content
       
    53      | db.audiodata
       
    54      | db.imagedata
       
    55      | db.textdata
       
    56      | db.videodata
       
    57      | db.caption
       
    58      | db.publishing.blocks
       
    59      | db.formal.blocks
       
    60      | db.informal.blocks
       
    61      | db.formalpara
       
    62      | db.inlinemediaobject
       
    63      | db.list.blocks
       
    64      | db.legalnotice
       
    65      | db.verbatim.blocks
       
    66      | db.graphic.blocks
       
    67      | db.personblurb
       
    68      | db.revhistory
       
    69      | db.simpara
       
    70      | db.step
       
    71      | db.stepalternatives)
       
    72   | (db.partintro | db.simplesect)
       
    73   | db.annotation
       
    74   | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5)
       
    75   | (db.refentry | db.refsection | db.refsynopsisdiv)
       
    76   | (db.refsect1 | db.refsect2 | db.refsect3)
       
    77   | (db.glossary | db.glossdiv | db.glosslist)
       
    78   | (db.bibliodiv | db.bibliolist)
       
    79   | (db.setindex | db.index | db.indexdiv)
       
    80   | (db.toc | db.tocdiv)
       
    81   | (db.task | db.taskprerequisites | db.taskrelated | db.tasksummary)
       
    82   | (db.calloutlist
       
    83      | db.programlistingco
       
    84      | db.screenco
       
    85      | db.imageobjectco)
       
    86   | (db.productionset | db.constraintdef)
       
    87   | (db.msg
       
    88      | db.msgexplan
       
    89      | db.msgmain
       
    90      | db.msgrel
       
    91      | db.msgset
       
    92      | db.msgsub)
       
    93   | (db.qandadiv | db.qandaentry | db.qandaset)
       
    94   | (db.equation | db.informalequation)
       
    95   | db.cmdsynopsis
       
    96   | (db.synopsis.blocks | db.funcsynopsisinfo | db.classsynopsisinfo)
       
    97   | db.admonition.blocks
       
    98   | db.topic
       
    99 
       
   100 div {
       
   101   db._any.attribute =
       
   102     
       
   103     ## Any attribute, including any attribute in any namespace.
       
   104     attribute * { text }
       
   105   db._any =
       
   106     
       
   107     ## Any element from almost any namespace
       
   108     element * - (db:* | html:*) {
       
   109       (db._any.attribute | text | db._any)*
       
   110     }
       
   111 }
       
   112 
       
   113 db.arch.attribute =
       
   114   
       
   115   ## Designates the computer or chip architecture to which the element applies
       
   116   attribute arch { text }
       
   117 db.audience.attribute =
       
   118   
       
   119   ## Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users.
       
   120   attribute audience { text }
       
   121 db.condition.attribute =
       
   122   
       
   123   ## provides a standard place for application-specific effectivity
       
   124   attribute condition { text }
       
   125 db.conformance.attribute =
       
   126   
       
   127   ## Indicates standards conformance characteristics of the element
       
   128   attribute conformance { text }
       
   129 db.os.attribute =
       
   130   
       
   131   ## Indicates the operating system to which the element is applicable
       
   132   attribute os { text }
       
   133 db.revision.attribute =
       
   134   
       
   135   ## Indicates the editorial revision to which the element belongs
       
   136   attribute revision { text }
       
   137 db.security.attribute =
       
   138   
       
   139   ## Indicates something about the security level associated with the element to which it applies
       
   140   attribute security { text }
       
   141 db.userlevel.attribute =
       
   142   
       
   143   ## Indicates the level of user experience for which the element applies
       
   144   attribute userlevel { text }
       
   145 db.vendor.attribute =
       
   146   
       
   147   ## Indicates the computer vendor to which the element applies.
       
   148   attribute vendor { text }
       
   149 db.wordsize.attribute =
       
   150   
       
   151   ## Indicates the word size (width in bits) of the computer architecture to which the element applies
       
   152   attribute wordsize { text }
       
   153 db.effectivity.attributes =
       
   154   db.arch.attribute?
       
   155   & db.audience.attribute?
       
   156   & db.condition.attribute?
       
   157   & db.conformance.attribute?
       
   158   & db.os.attribute?
       
   159   & db.revision.attribute?
       
   160   & db.security.attribute?
       
   161   & db.userlevel.attribute?
       
   162   & db.vendor.attribute?
       
   163   & db.wordsize.attribute?
       
   164 db.endterm.attribute =
       
   165   
       
   166   ## Points to the element whose content is to be used as the text of the link
       
   167   attribute endterm { xsd:IDREF }
       
   168 db.linkend.attribute =
       
   169   
       
   170   ## Points to an internal link target by identifying the value of its xml:id attribute
       
   171   attribute linkend { xsd:IDREF }
       
   172 db.linkends.attribute =
       
   173   
       
   174   ## Points to one or more internal link targets by identifying the value of their xml:id attributes
       
   175   attribute linkends { xsd:IDREFS }
       
   176 db.xlink.href.attribute =
       
   177   
       
   178   ## Identifies a link target with a URI
       
   179   attribute xlink:href { xsd:anyURI }
       
   180 db.xlink.type.attribute =
       
   181   
       
   182   ## Identifies the XLink link type
       
   183   attribute xlink:type {
       
   184     
       
   185     ## An XLink simple link
       
   186     "simple"
       
   187   }
       
   188 db.xlink.role.attribute =
       
   189   
       
   190   ## Identifies the XLink role of the link
       
   191   attribute xlink:role { xsd:anyURI }
       
   192 db.xlink.arcrole.attribute =
       
   193   
       
   194   ## Identifies the XLink arcrole of the link
       
   195   attribute xlink:arcrole { xsd:anyURI }
       
   196 db.xlink.title.attribute =
       
   197   
       
   198   ## Identifies the XLink title of the link
       
   199   attribute xlink:title { text }
       
   200 db.xlink.show.enumeration =
       
   201   
       
   202   ## An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context.
       
   203   "new"
       
   204   | 
       
   205     ## 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.
       
   206     "replace"
       
   207   | 
       
   208     ## An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource.
       
   209     "embed"
       
   210   | 
       
   211     ## 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.
       
   212     "other"
       
   213   | 
       
   214     ## 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.
       
   215     "none"
       
   216 db.xlink.show.attribute =
       
   217   
       
   218   ## Identifies the XLink show behavior of the link
       
   219   attribute xlink:show { db.xlink.show.enumeration }
       
   220 db.xlink.actuate.enumeration =
       
   221   
       
   222   ## An application should traverse to the ending resource immediately on loading the starting resource.
       
   223   "onLoad"
       
   224   | 
       
   225     ## An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal.
       
   226     "onRequest"
       
   227   | 
       
   228     ## 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.
       
   229     "other"
       
   230   | 
       
   231     ## 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.
       
   232     "none"
       
   233 db.xlink.actuate.attribute =
       
   234   
       
   235   ## Identifies the XLink actuate behavior of the link
       
   236   attribute xlink:actuate { db.xlink.actuate.enumeration }
       
   237 db.href.attributes =
       
   238   db.xlink.href.attribute
       
   239   & db.xlink.type.attribute?
       
   240   & db.xlink.role.attribute?
       
   241   & db.xlink.arcrole.attribute?
       
   242   & db.xlink.title.attribute?
       
   243   & db.xlink.show.attribute?
       
   244   & db.xlink.actuate.attribute?
       
   245 db.xml.id.attribute =
       
   246   
       
   247   ## Identifies the unique ID value of the element
       
   248   attribute xml:id { xsd:ID }
       
   249 db.version.attribute =
       
   250   
       
   251   ## Specifies the DocBook version of the element and its descendants
       
   252   attribute version { text }
       
   253 db.xml.lang.attribute =
       
   254   
       
   255   ## Specifies the natural language of the element and its descendants
       
   256   attribute xml:lang { text }
       
   257 db.xml.base.attribute =
       
   258   
       
   259   ## Specifies the base URI of the element and its descendants
       
   260   attribute xml:base { xsd:anyURI }
       
   261 db.remap.attribute =
       
   262   
       
   263   ## Provides the name or similar semantic identifier assigned to the content in some previous markup scheme
       
   264   attribute remap { text }
       
   265 db.xreflabel.attribute =
       
   266   
       
   267   ## Provides the text that is to be generated for a cross reference to the element
       
   268   attribute xreflabel { text }
       
   269 db.xrefstyle.attribute =
       
   270   
       
   271   ## Specifies a keyword or keywords identifying additional style information
       
   272   attribute xrefstyle { text }
       
   273 db.revisionflag.enumeration =
       
   274   
       
   275   ## The element has been changed.
       
   276   "changed"
       
   277   | 
       
   278     ## The element is new (has been added to the document).
       
   279     "added"
       
   280   | 
       
   281     ## The element has been deleted.
       
   282     "deleted"
       
   283   | 
       
   284     ## Explicitly turns off revision markup for this element.
       
   285     "off"
       
   286 db.revisionflag.attribute =
       
   287   
       
   288   ## Identifies the revision status of the element
       
   289   attribute revisionflag { db.revisionflag.enumeration }
       
   290 db.dir.enumeration =
       
   291   
       
   292   ## Left-to-right text
       
   293   "ltr"
       
   294   | 
       
   295     ## Right-to-left text
       
   296     "rtl"
       
   297   | 
       
   298     ## Left-to-right override
       
   299     "lro"
       
   300   | 
       
   301     ## Right-to-left override
       
   302     "rlo"
       
   303 db.dir.attribute =
       
   304   
       
   305   ## Identifies the direction of text in an element
       
   306   attribute dir { db.dir.enumeration }
       
   307 db.common.base.attributes =
       
   308   db.version.attribute?
       
   309   & db.xml.lang.attribute?
       
   310   & db.xml.base.attribute?
       
   311   & db.remap.attribute?
       
   312   & db.xreflabel.attribute?
       
   313   & db.revisionflag.attribute?
       
   314   & db.dir.attribute?
       
   315   & db.effectivity.attributes
       
   316 db.common.attributes =
       
   317   db.xml.id.attribute?
       
   318   & db.common.base.attributes
       
   319   & db.annotations.attribute?
       
   320 db.common.idreq.attributes =
       
   321   db.xml.id.attribute
       
   322   & db.common.base.attributes
       
   323   & db.annotations.attribute?
       
   324 db.common.linking.attributes =
       
   325   (db.linkend.attribute | db.href.attributes)?
       
   326 db.common.req.linking.attributes =
       
   327   db.linkend.attribute | db.href.attributes
       
   328 db.common.data.attributes =
       
   329   
       
   330   ## Specifies the format of the data
       
   331   attribute format { text }?,
       
   332   (
       
   333    ## Indentifies the location of the data by URI
       
   334    attribute fileref { xsd:anyURI }
       
   335    | 
       
   336      ## Identifies the location of the data by external identifier (entity name)
       
   337      attribute entityref { xsd:ENTITY })
       
   338 db.verbatim.continuation.enumeration =
       
   339   
       
   340   ## Line numbering continues from the immediately preceding element with the same name.
       
   341   "continues"
       
   342   | 
       
   343     ## Line numbering restarts (begins at 1, usually).
       
   344     "restarts"
       
   345 db.verbatim.continuation.attribute =
       
   346   
       
   347   ## Determines whether line numbering continues from the previous element or restarts.
       
   348   attribute continuation { db.verbatim.continuation.enumeration }
       
   349 db.verbatim.linenumbering.enumeration =
       
   350   
       
   351   ## Lines are numbered.
       
   352   "numbered"
       
   353   | 
       
   354     ## Lines are not numbered.
       
   355     "unnumbered"
       
   356 db.verbatim.linenumbering.attribute =
       
   357   
       
   358   ## Determines whether lines are numbered.
       
   359   attribute linenumbering { db.verbatim.linenumbering.enumeration }
       
   360 db.verbatim.startinglinenumber.attribute =
       
   361   
       
   362   ## Specifies the initial line number.
       
   363   attribute startinglinenumber { xsd:integer }
       
   364 db.verbatim.language.attribute =
       
   365   
       
   366   ## Identifies the language (i.e. programming language) of the verbatim content.
       
   367   attribute language { text }
       
   368 db.verbatim.xml.space.attribute =
       
   369   
       
   370   ## 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.
       
   371   attribute xml:space {
       
   372     
       
   373     ## Whitespace must be preserved.
       
   374     "preserve"
       
   375   }
       
   376 db.verbatim.attributes =
       
   377   db.verbatim.continuation.attribute?
       
   378   & db.verbatim.linenumbering.attribute?
       
   379   & db.verbatim.startinglinenumber.attribute?
       
   380   & db.verbatim.language.attribute?
       
   381   & db.verbatim.xml.space.attribute?
       
   382 db.label.attribute =
       
   383   
       
   384   ## Specifies an identifying string for presentation purposes
       
   385   attribute label { text }
       
   386 db.width.characters.attribute =
       
   387   
       
   388   ## Specifies the width (in characters) of the element
       
   389   attribute width { xsd:nonNegativeInteger }
       
   390 db.spacing.enumeration =
       
   391   
       
   392   ## The spacing should be "compact".
       
   393   "compact"
       
   394   | 
       
   395     ## The spacing should be "normal".
       
   396     "normal"
       
   397 db.spacing.attribute =
       
   398   
       
   399   ## Specifies (a hint about) the spacing of the content
       
   400   attribute spacing { db.spacing.enumeration }
       
   401 db.pgwide.enumeration =
       
   402   
       
   403   ## The element should be rendered in the current text flow (with the flow column width).
       
   404   "0"
       
   405   | 
       
   406     ## The element should be rendered across the full text page.
       
   407     "1"
       
   408 db.pgwide.attribute =
       
   409   
       
   410   ## Indicates if the element is rendered across the column or the page
       
   411   attribute pgwide { db.pgwide.enumeration }
       
   412 db.language.attribute =
       
   413   
       
   414   ## Identifies the language (i.e. programming language) of the content.
       
   415   attribute language { text }
       
   416 db.performance.enumeration =
       
   417   
       
   418   ## The content describes an optional step or steps.
       
   419   "optional"
       
   420   | 
       
   421     ## The content describes a required step or steps.
       
   422     "required"
       
   423 db.performance.attribute =
       
   424   
       
   425   ## Specifies if the content is required or optional.
       
   426   attribute performance { db.performance.enumeration }
       
   427 db.floatstyle.attribute =
       
   428   
       
   429   ## Specifies style information to be used when rendering the float
       
   430   attribute floatstyle { text }
       
   431 db.width.attribute =
       
   432   
       
   433   ## Specifies the width of the element
       
   434   attribute width { text }
       
   435 db.depth.attribute =
       
   436   
       
   437   ## Specifies the depth of the element
       
   438   attribute depth { text }
       
   439 db.contentwidth.attribute =
       
   440   
       
   441   ## Specifies the width of the content rectangle
       
   442   attribute contentwidth { text }
       
   443 db.contentdepth.attribute =
       
   444   
       
   445   ## Specifies the depth of the content rectangle
       
   446   attribute contentdepth { text }
       
   447 db.scalefit.enumeration =
       
   448   
       
   449   ## False (do not scale-to-fit; anamorphic scaling may occur)
       
   450   "0"
       
   451   | 
       
   452     ## True (scale-to-fit; anamorphic scaling is forbidden)
       
   453     "1"
       
   454 db.scale.attribute =
       
   455   
       
   456   ## Specifies the scaling factor
       
   457   attribute scale { xsd:positiveInteger }
       
   458 db.halign.enumeration =
       
   459   
       
   460   ## Centered horizontally
       
   461   "center"
       
   462   | 
       
   463     ## Aligned horizontally on the specified character
       
   464     "char"
       
   465   | 
       
   466     ## Fully justified (left and right margins or edges)
       
   467     "justify"
       
   468   | 
       
   469     ## Left aligned
       
   470     "left"
       
   471   | 
       
   472     ## Right aligned
       
   473     "right"
       
   474 db.valign.enumeration =
       
   475   
       
   476   ## Aligned on the bottom of the region
       
   477   "bottom"
       
   478   | 
       
   479     ## Centered vertically
       
   480     "middle"
       
   481   | 
       
   482     ## Aligned on the top of the region
       
   483     "top"
       
   484 db.biblio.class.enumeration =
       
   485   
       
   486   ## A digital object identifier.
       
   487   "doi"
       
   488   | 
       
   489     ## An international standard book number.
       
   490     "isbn"
       
   491   | 
       
   492     ## An international standard technical report number (ISO 10444).
       
   493     "isrn"
       
   494   | 
       
   495     ## An international standard serial number.
       
   496     "issn"
       
   497   | 
       
   498     ## A Library of Congress reference number.
       
   499     "libraryofcongress"
       
   500   | 
       
   501     ## A publication number (an internal number or possibly organizational standard).
       
   502     "pubsnumber"
       
   503   | 
       
   504     ## A Uniform Resource Identifier
       
   505     "uri"
       
   506 db.biblio.class-enum.attribute =
       
   507   
       
   508   ## Identifies the kind of bibliographic identifier
       
   509   attribute class { db.biblio.class.enumeration }?
       
   510 db.biblio.class-other.attribute =
       
   511   
       
   512   ## Identifies the nature of the non-standard bibliographic identifier
       
   513   attribute otherclass { xsd:NMTOKEN }
       
   514 db.biblio.class-other.attributes =
       
   515   
       
   516   ## Identifies the kind of bibliographic identifier
       
   517   attribute class {
       
   518     
       
   519     ## Indicates that the identifier is some 'other' kind.
       
   520     "other"
       
   521   }
       
   522   & db.biblio.class-other.attribute
       
   523 db.biblio.class.attribute =
       
   524   db.biblio.class-enum.attribute | db.biblio.class-other.attributes
       
   525 db.ubiq.inlines =
       
   526   (db.inlinemediaobject
       
   527    | db.remark
       
   528    | db.link.inlines
       
   529    | db.alt
       
   530    | db.trademark
       
   531    | # below, effectively the publishing inlines (as of 5.0)
       
   532      db.abbrev
       
   533    | db.acronym
       
   534    | db.date
       
   535    | db._emphasis
       
   536    | db.footnote
       
   537    | db.footnoteref
       
   538    | db._foreignphrase
       
   539    | db._phrase
       
   540    | db._quote
       
   541    | db.subscript
       
   542    | db.superscript
       
   543    | db.wordasword)
       
   544   | db.annotation
       
   545   | (db._firstterm | db._glossterm)
       
   546   | db.indexterm
       
   547   | db.coref
       
   548 db._text = (text | db.ubiq.inlines | db._phrase | db.replaceable)*
       
   549 db._title = db.title? & db.titleabbrev? & db.subtitle?
       
   550 db._title.req = db.title & db.titleabbrev? & db.subtitle?
       
   551 db._title.only = db.title? & db.titleabbrev?
       
   552 db._title.onlyreq = db.title & db.titleabbrev?
       
   553 db._info = (db._title, db.titleforbidden.info?) | db.info?
       
   554 db._info.title.req =
       
   555   (db._title.req, db.titleforbidden.info?) | db.titlereq.info
       
   556 db._info.title.only =
       
   557   (db._title.only, db.titleforbidden.info?) | db.titleonly.info
       
   558 db._info.title.onlyreq =
       
   559   (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info
       
   560 db._info.title.forbidden = db.titleforbidden.info?
       
   561 db.all.inlines =
       
   562   text
       
   563   | db.ubiq.inlines
       
   564   | db.general.inlines
       
   565   | db.domain.inlines
       
   566   | db.extension.inlines
       
   567 db.general.inlines =
       
   568   db.publishing.inlines
       
   569   | db.product.inlines
       
   570   | db.bibliography.inlines
       
   571   | db.graphic.inlines
       
   572   | db.indexing.inlines
       
   573   | db.link.inlines
       
   574 db.domain.inlines =
       
   575   db.technical.inlines
       
   576   | db.math.inlines
       
   577   | db.markup.inlines
       
   578   | db.gui.inlines
       
   579   | db.keyboard.inlines
       
   580   | db.os.inlines
       
   581   | db.programming.inlines
       
   582   | db.error.inlines
       
   583 db.technical.inlines =
       
   584   (db.replaceable | db.package | db.parameter)
       
   585   | db.termdef
       
   586   | db.nonterminal
       
   587   | (db.systemitem | db.option | db.optional | db.property)
       
   588 db.product.inlines =
       
   589   db.trademark
       
   590   | (db.productnumber
       
   591      | db.productname
       
   592      | db.database
       
   593      | db.application
       
   594      | db.hardware)
       
   595 db.bibliography.inlines =
       
   596   db.citation
       
   597   | db.citerefentry
       
   598   | db.citetitle
       
   599   | db.citebiblioid
       
   600   | db.author
       
   601   | db.person
       
   602   | db.personname
       
   603   | db.org
       
   604   | db.orgname
       
   605   | db.editor
       
   606   | db.jobtitle
       
   607 db.publishing.inlines =
       
   608   (db.abbrev
       
   609    | db.acronym
       
   610    | db.date
       
   611    | db.emphasis
       
   612    | db.footnote
       
   613    | db.footnoteref
       
   614    | db.foreignphrase
       
   615    | db.phrase
       
   616    | db.quote
       
   617    | db.subscript
       
   618    | db.superscript
       
   619    | db.wordasword)
       
   620   | db.glossary.inlines
       
   621   | db.coref
       
   622 db.graphic.inlines = db.inlinemediaobject
       
   623 db.indexing.inlines = notAllowed | db.indexterm
       
   624 db.link.inlines =
       
   625   (db.xref | db.link | db.olink | db.anchor) | db.biblioref
       
   626 db.extension.inlines = notAllowed
       
   627 db.nopara.blocks =
       
   628   (db.list.blocks
       
   629    | db.formal.blocks
       
   630    | db.informal.blocks
       
   631    | db.publishing.blocks
       
   632    | db.graphic.blocks
       
   633    | db.technical.blocks
       
   634    | db.verbatim.blocks
       
   635    | db.bridgehead
       
   636    | db.remark
       
   637    | db.revhistory)
       
   638   | db.indexterm
       
   639   | db.synopsis.blocks
       
   640   | db.admonition.blocks
       
   641 db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara
       
   642 db.all.blocks =
       
   643   (db.nopara.blocks | db.para.blocks | db.extension.blocks)
       
   644   | db.annotation
       
   645 db.formal.blocks = (db.example | db.figure | db.table) | db.equation
       
   646 db.informal.blocks =
       
   647   (db.informalexample | db.informalfigure | db.informaltable)
       
   648   | db.informalequation
       
   649 db.publishing.blocks =
       
   650   db.sidebar | db.blockquote | db.address | db.epigraph
       
   651 db.graphic.blocks = db.mediaobject | db.screenshot
       
   652 db.technical.blocks =
       
   653   db.procedure
       
   654   | db.task
       
   655   | (db.productionset | db.constraintdef)
       
   656   | db.msgset
       
   657 db.list.blocks =
       
   658   (db.itemizedlist
       
   659    | db.orderedlist
       
   660    | db.procedure
       
   661    | db.simplelist
       
   662    | db.variablelist
       
   663    | db.segmentedlist)
       
   664   | db.glosslist
       
   665   | db.bibliolist
       
   666   | db.calloutlist
       
   667   | db.qandaset
       
   668 db.verbatim.blocks =
       
   669   (db.screen | db.literallayout)
       
   670   | (db.programlistingco | db.screenco)
       
   671   | (db.programlisting | db.synopsis)
       
   672 db.extension.blocks = notAllowed
       
   673 db.info.extension = db._any
       
   674 db.info.elements =
       
   675   (db.abstract
       
   676    | db.address
       
   677    | db.artpagenums
       
   678    | db.author
       
   679    | db.authorgroup
       
   680    | db.authorinitials
       
   681    | db.bibliocoverage
       
   682    | db.biblioid
       
   683    | db.bibliosource
       
   684    | db.collab
       
   685    | db.confgroup
       
   686    | db.contractsponsor
       
   687    | db.contractnum
       
   688    | db.copyright
       
   689    | db.cover
       
   690    | db.date
       
   691    | db.edition
       
   692    | db.editor
       
   693    | db.issuenum
       
   694    | db.keywordset
       
   695    | db.legalnotice
       
   696    | db.mediaobject
       
   697    | db.org
       
   698    | db.orgname
       
   699    | db.othercredit
       
   700    | db.pagenums
       
   701    | db.printhistory
       
   702    | db.pubdate
       
   703    | db.publisher
       
   704    | db.publishername
       
   705    | db.releaseinfo
       
   706    | db.revhistory
       
   707    | db.seriesvolnums
       
   708    | db.subjectset
       
   709    | db.volumenum
       
   710    | db.info.extension)
       
   711    | db.annotation
       
   712    | db.extendedlink
       
   713    | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset)
       
   714    | db.itermset
       
   715    | (db.productname | db.productnumber)
       
   716 db.bibliographic.elements =
       
   717   db.info.elements
       
   718   | db.publishing.inlines
       
   719   | db.citerefentry
       
   720   | db.citetitle
       
   721   | db.citebiblioid
       
   722   | db.person
       
   723   | db.personblurb
       
   724   | db.personname
       
   725   | db.subtitle
       
   726   | db.title
       
   727   | db.titleabbrev
       
   728 div {
       
   729   db.title.role.attribute = attribute role { text }
       
   730   db.title.attlist =
       
   731     db.title.role.attribute?
       
   732     & db.common.attributes
       
   733     & db.common.linking.attributes
       
   734   db.title =
       
   735     
       
   736     ## The text of the title of a section of a document or of a formal block-level element
       
   737     element title { db.title.attlist, db.all.inlines* }
       
   738 }
       
   739 div {
       
   740   db.titleabbrev.role.attribute = attribute role { text }
       
   741   db.titleabbrev.attlist =
       
   742     db.titleabbrev.role.attribute?
       
   743     & db.common.attributes
       
   744     & db.common.linking.attributes
       
   745   db.titleabbrev =
       
   746     
       
   747     ## The abbreviation of a title
       
   748     element titleabbrev { db.titleabbrev.attlist, db.all.inlines* }
       
   749 }
       
   750 div {
       
   751   db.subtitle.role.attribute = attribute role { text }
       
   752   db.subtitle.attlist =
       
   753     db.subtitle.role.attribute?
       
   754     & db.common.attributes
       
   755     & db.common.linking.attributes
       
   756   db.subtitle =
       
   757     
       
   758     ## The subtitle of a document
       
   759     element subtitle { db.subtitle.attlist, db.all.inlines* }
       
   760 }
       
   761 div {
       
   762   db.info.role.attribute = attribute role { text }
       
   763   db.info.attlist = db.info.role.attribute? & db.common.attributes
       
   764   db.info =
       
   765     
       
   766     ## A wrapper for information about a component or other block
       
   767     element info { db.info.attlist, (db._title & db.info.elements*) }
       
   768 }
       
   769 div {
       
   770   db.titlereq.info.role.attribute = attribute role { text }
       
   771   db.titlereq.info.attlist =
       
   772     db.titlereq.info.role.attribute? & db.common.attributes
       
   773   db.titlereq.info =
       
   774     
       
   775     ## A wrapper for information about a component or other block with a required title
       
   776     element info {
       
   777       db.titlereq.info.attlist, (db._title.req & db.info.elements*)
       
   778     }
       
   779 }
       
   780 div {
       
   781   db.titleonly.info.role.attribute = attribute role { text }
       
   782   db.titleonly.info.attlist =
       
   783     db.titleonly.info.role.attribute? & db.common.attributes
       
   784   db.titleonly.info =
       
   785     
       
   786     ## A wrapper for information about a component or other block with only a title
       
   787     element info {
       
   788       db.titleonly.info.attlist, (db._title.only & db.info.elements*)
       
   789     }
       
   790 }
       
   791 div {
       
   792   db.titleonlyreq.info.role.attribute = attribute role { text }
       
   793   db.titleonlyreq.info.attlist =
       
   794     db.titleonlyreq.info.role.attribute? & db.common.attributes
       
   795   db.titleonlyreq.info =
       
   796     
       
   797     ## A wrapper for information about a component or other block with only a required title
       
   798     element info {
       
   799       db.titleonlyreq.info.attlist,
       
   800       (db._title.onlyreq & db.info.elements*)
       
   801     }
       
   802 }
       
   803 div {
       
   804   db.titleforbidden.info.role.attribute = attribute role { text }
       
   805   db.titleforbidden.info.attlist =
       
   806     db.titleforbidden.info.role.attribute? & db.common.attributes
       
   807   db.titleforbidden.info =
       
   808     
       
   809     ## A wrapper for information about a component or other block without a title
       
   810     element info { db.titleforbidden.info.attlist, db.info.elements* }
       
   811 }
       
   812 div {
       
   813   db.subjectset.role.attribute = attribute role { text }
       
   814   db.subjectset.scheme.attribute =
       
   815     
       
   816     ## Identifies the controlled vocabulary used by this set's terms
       
   817     attribute scheme { xsd:NMTOKEN }
       
   818   db.subjectset.attlist =
       
   819     db.subjectset.role.attribute?
       
   820     & db.common.attributes
       
   821     & db.common.linking.attributes
       
   822     & db.subjectset.scheme.attribute?
       
   823   db.subjectset =
       
   824     
       
   825     ## A set of terms describing the subject matter of a document
       
   826     element subjectset { db.subjectset.attlist, db.subject+ }
       
   827 }
       
   828 div {
       
   829   db.subject.role.attribute = attribute role { text }
       
   830   db.subject.weight.attribute =
       
   831     
       
   832     ## Specifies a ranking for this subject relative to other subjects in the same set
       
   833     attribute weight { text }
       
   834   db.subject.attlist =
       
   835     db.subject.role.attribute?
       
   836     & db.common.attributes
       
   837     & db.common.linking.attributes
       
   838     & db.subject.weight.attribute?
       
   839   db.subject =
       
   840     
       
   841     ## One of a group of terms describing the subject matter of a document
       
   842     element subject { db.subject.attlist, db.subjectterm+ }
       
   843 }
       
   844 div {
       
   845   db.subjectterm.role.attribute = attribute role { text }
       
   846   db.subjectterm.attlist =
       
   847     db.subjectterm.role.attribute?
       
   848     & db.common.attributes
       
   849     & db.common.linking.attributes
       
   850   db.subjectterm =
       
   851     
       
   852     ## A term in a group of terms describing the subject matter of a document
       
   853     element subjectterm { db.subjectterm.attlist, text }
       
   854 }
       
   855 div {
       
   856   db.keywordset.role.attribute = attribute role { text }
       
   857   db.keywordset.attlist =
       
   858     db.keywordset.role.attribute?
       
   859     & db.common.attributes
       
   860     & db.common.linking.attributes
       
   861   db.keywordset =
       
   862     
       
   863     ## A set of keywords describing the content of a document
       
   864     element keywordset { db.keywordset.attlist, db.keyword+ }
       
   865 }
       
   866 div {
       
   867   db.keyword.role.attribute = attribute role { text }
       
   868   db.keyword.attlist =
       
   869     db.keyword.role.attribute?
       
   870     & db.common.attributes
       
   871     & db.common.linking.attributes
       
   872   db.keyword =
       
   873     
       
   874     ## One of a set of keywords describing the content of a document
       
   875     element keyword { db.keyword.attlist, text }
       
   876 }
       
   877 db.table.choice = notAllowed | db.cals.table | db.html.table
       
   878 db.informaltable.choice =
       
   879   notAllowed | db.cals.informaltable | db.html.informaltable
       
   880 db.table = db.table.choice
       
   881 db.informaltable = db.informaltable.choice
       
   882 div {
       
   883   db.procedure.role.attribute = attribute role { text }
       
   884   db.procedure.attlist =
       
   885     db.procedure.role.attribute?
       
   886     & db.common.attributes
       
   887     & db.common.linking.attributes
       
   888   db.procedure.info = db._info.title.only
       
   889   db.procedure =
       
   890     
       
   891     ## A list of operations to be performed in a well-defined sequence
       
   892     element procedure {
       
   893       db.procedure.attlist, db.procedure.info, db.all.blocks*, db.step+
       
   894     }
       
   895 }
       
   896 div {
       
   897   db.step.role.attribute = attribute role { text }
       
   898   db.step.attlist =
       
   899     db.step.role.attribute?
       
   900     & db.common.attributes
       
   901     & db.common.linking.attributes
       
   902     & db.performance.attribute?
       
   903   db.step.info = db._info.title.only
       
   904   # 
       
   905   # This content model is blocks*, step|stepalternatives, blocks* but
       
   906   # expressed this way it avoids UPA issues in XSD and DTD versions
       
   907   db.step =
       
   908     
       
   909     ## A unit of action in a procedure
       
   910     element step {
       
   911       db.step.attlist,
       
   912       db.step.info,
       
   913       ((db.all.blocks+,
       
   914         ((db.substeps | db.stepalternatives), db.all.blocks*)?)
       
   915        | ((db.substeps | db.stepalternatives), db.all.blocks*))
       
   916     }
       
   917 }
       
   918 div {
       
   919   db.stepalternatives.role.attribute = attribute role { text }
       
   920   db.stepalternatives.attlist =
       
   921     db.stepalternatives.role.attribute?
       
   922     & db.common.attributes
       
   923     & db.common.linking.attributes
       
   924     & db.performance.attribute?
       
   925   db.stepalternatives.info = db._info.title.forbidden
       
   926   db.stepalternatives =
       
   927     
       
   928     ## Alternative steps in a procedure
       
   929     element stepalternatives {
       
   930       db.stepalternatives.attlist, db.stepalternatives.info, db.step+
       
   931     }
       
   932 }
       
   933 div {
       
   934   db.substeps.role.attribute = attribute role { text }
       
   935   db.substeps.attlist =
       
   936     db.substeps.role.attribute?
       
   937     & db.common.attributes
       
   938     & db.common.linking.attributes
       
   939     & db.performance.attribute?
       
   940   db.substeps =
       
   941     
       
   942     ## A wrapper for steps that occur within steps in a procedure
       
   943     element substeps { db.substeps.attlist, db.step+ }
       
   944 }
       
   945 div {
       
   946   db.sidebar.floatstyle.attribute = db.floatstyle.attribute
       
   947   db.sidebar.role.attribute = attribute role { text }
       
   948   db.sidebar.attlist =
       
   949     db.sidebar.role.attribute?
       
   950     & db.sidebar.floatstyle.attribute?
       
   951     & db.common.attributes
       
   952     & db.common.linking.attributes
       
   953   db.sidebar.info = db._info
       
   954   db.sidebar =
       
   955     
       
   956     ## A portion of a document that is isolated from the main narrative flow
       
   957     element sidebar {
       
   958       db.sidebar.attlist, db.sidebar.info, db.all.blocks+
       
   959     }
       
   960 }
       
   961 div {
       
   962   db.abstract.role.attribute = attribute role { text }
       
   963   db.abstract.attlist =
       
   964     db.abstract.role.attribute?
       
   965     & db.common.attributes
       
   966     & db.common.linking.attributes
       
   967   db.abstract.info = db._info.title.only
       
   968   db.abstract =
       
   969     
       
   970     ## A summary
       
   971     element abstract {
       
   972       db.abstract.attlist, db.abstract.info, db.para.blocks+
       
   973     }
       
   974 }
       
   975 div {
       
   976   db.personblurb.role.attribute = attribute role { text }
       
   977   db.personblurb.attlist =
       
   978     db.personblurb.role.attribute?
       
   979     & db.common.attributes
       
   980     & db.common.linking.attributes
       
   981   db.personblurb.info = db._info.title.only
       
   982   db.personblurb =
       
   983     
       
   984     ## A short description or note about a person
       
   985     element personblurb {
       
   986       db.personblurb.attlist, db.personblurb.info, db.para.blocks+
       
   987     }
       
   988 }
       
   989 div {
       
   990   db.blockquote.role.attribute = attribute role { text }
       
   991   db.blockquote.attlist =
       
   992     db.blockquote.role.attribute?
       
   993     & db.common.attributes
       
   994     & db.common.linking.attributes
       
   995   db.blockquote.info = db._info.title.only
       
   996   db.blockquote =
       
   997     
       
   998     ## A quotation set off from the main text
       
   999     element blockquote {
       
  1000       db.blockquote.attlist,
       
  1001       db.blockquote.info,
       
  1002       db.attribution?,
       
  1003       db.all.blocks+
       
  1004     }
       
  1005 }
       
  1006 div {
       
  1007   db.attribution.role.attribute = attribute role { text }
       
  1008   db.attribution.attlist =
       
  1009     db.attribution.role.attribute?
       
  1010     & db.common.attributes
       
  1011     & db.common.linking.attributes
       
  1012   db.attribution =
       
  1013     
       
  1014     ## The source of a block quote or epigraph
       
  1015     element attribution {
       
  1016       db.attribution.attlist,
       
  1017       (db._text
       
  1018        | db.person
       
  1019        | db.personname
       
  1020        | db.citetitle
       
  1021        | db.citation)*
       
  1022     }
       
  1023 }
       
  1024 div {
       
  1025   db.bridgehead.renderas.enumeration =
       
  1026     
       
  1027     ## Render as a first-level section
       
  1028     "sect1"
       
  1029     | 
       
  1030       ## Render as a second-level section
       
  1031       "sect2"
       
  1032     | 
       
  1033       ## Render as a third-level section
       
  1034       "sect3"
       
  1035     | 
       
  1036       ## Render as a fourth-level section
       
  1037       "sect4"
       
  1038     | 
       
  1039       ## Render as a fifth-level section
       
  1040       "sect5"
       
  1041   db.bridgehead.renderas-enum.attribute =
       
  1042     
       
  1043     ## Indicates how the bridge head should be rendered
       
  1044     attribute renderas { db.bridgehead.renderas.enumeration }?
       
  1045   db.bridgehead.renderas-other.attribute =
       
  1046     
       
  1047     ## Identifies the nature of the non-standard rendering
       
  1048     attribute otherrenderas { xsd:NMTOKEN }
       
  1049   db.bridgehead.renderas-other.attributes =
       
  1050     
       
  1051     ## Indicates how the bridge head should be rendered
       
  1052     attribute renderas {
       
  1053       
       
  1054       ## Identifies a non-standard rendering
       
  1055       "other"
       
  1056     }
       
  1057     & db.bridgehead.renderas-other.attribute
       
  1058   db.bridgehead.renderas.attribute =
       
  1059     db.bridgehead.renderas-enum.attribute
       
  1060     | db.bridgehead.renderas-other.attributes
       
  1061   db.bridgehead.role.attribute = attribute role { text }
       
  1062   db.bridgehead.attlist =
       
  1063     db.bridgehead.role.attribute?
       
  1064     & db.common.attributes
       
  1065     & db.common.linking.attributes
       
  1066     & db.bridgehead.renderas.attribute?
       
  1067   db.bridgehead =
       
  1068     
       
  1069     ## A free-floating heading
       
  1070     element bridgehead { db.bridgehead.attlist, db.all.inlines* }
       
  1071 }
       
  1072 div {
       
  1073   db.remark.role.attribute = attribute role { text }
       
  1074   db.remark.attlist =
       
  1075     db.remark.role.attribute?
       
  1076     & db.common.attributes
       
  1077     & db.common.linking.attributes
       
  1078   db.remark =
       
  1079     
       
  1080     ## A remark (or comment) intended for presentation in a draft manuscript
       
  1081     element remark { db.remark.attlist, db.all.inlines* }
       
  1082 }
       
  1083 div {
       
  1084   db.epigraph.role.attribute = attribute role { text }
       
  1085   db.epigraph.attlist =
       
  1086     db.epigraph.role.attribute?
       
  1087     & db.common.attributes
       
  1088     & db.common.linking.attributes
       
  1089   db.epigraph.info = db._info.title.forbidden
       
  1090   db.epigraph =
       
  1091     
       
  1092     ## A short inscription at the beginning of a document or component
       
  1093     element epigraph {
       
  1094       db.epigraph.attlist,
       
  1095       db.epigraph.info,
       
  1096       db.attribution?,
       
  1097       (db.para.blocks | db.literallayout)+
       
  1098     }
       
  1099 }
       
  1100 div {
       
  1101   db.footnote.role.attribute = attribute role { text }
       
  1102   db.footnote.label.attribute =
       
  1103     
       
  1104     ## Identifies the desired footnote mark
       
  1105     attribute label { xsd:NMTOKEN }
       
  1106   db.footnote.attlist =
       
  1107     db.footnote.role.attribute?
       
  1108     & db.common.attributes
       
  1109     & db.common.linking.attributes
       
  1110     & db.footnote.label.attribute?
       
  1111   db.footnote =
       
  1112     
       
  1113     ## A footnote
       
  1114     element footnote { db.footnote.attlist, db.all.blocks+ }
       
  1115 }
       
  1116 div {
       
  1117   db.formalpara.role.attribute = attribute role { text }
       
  1118   db.formalpara.attlist =
       
  1119     db.formalpara.role.attribute?
       
  1120     & db.common.attributes
       
  1121     & db.common.linking.attributes
       
  1122   db.formalpara.info = db._info.title.onlyreq
       
  1123   db.formalpara =
       
  1124     
       
  1125     ## A paragraph with a title
       
  1126     element formalpara {
       
  1127       db.formalpara.attlist,
       
  1128       db.formalpara.info,
       
  1129       db.indexing.inlines*,
       
  1130       db.para
       
  1131     }
       
  1132 }
       
  1133 div {
       
  1134   db.para.role.attribute = attribute role { text }
       
  1135   db.para.attlist =
       
  1136     db.para.role.attribute?
       
  1137     & db.common.attributes
       
  1138     & db.common.linking.attributes
       
  1139   db.para.info = db._info.title.forbidden
       
  1140   db.para =
       
  1141     
       
  1142     ## A paragraph
       
  1143     element para {
       
  1144       db.para.attlist,
       
  1145       db.para.info,
       
  1146       (db.all.inlines | db.nopara.blocks)*
       
  1147     }
       
  1148 }
       
  1149 div {
       
  1150   db.simpara.role.attribute = attribute role { text }
       
  1151   db.simpara.attlist =
       
  1152     db.simpara.role.attribute?
       
  1153     & db.common.attributes
       
  1154     & db.common.linking.attributes
       
  1155   db.simpara.info = db._info.title.forbidden
       
  1156   db.simpara =
       
  1157     
       
  1158     ## A paragraph that contains only text and inline markup, no block elements
       
  1159     element simpara {
       
  1160       db.simpara.attlist, db.simpara.info, db.all.inlines*
       
  1161     }
       
  1162 }
       
  1163 div {
       
  1164   db.itemizedlist.role.attribute = attribute role { text }
       
  1165   db.itemizedlist.mark.attribute =
       
  1166     
       
  1167     ## Identifies the type of mark to be used on items in this list
       
  1168     attribute mark { xsd:NMTOKEN }
       
  1169   db.itemizedlist.attlist =
       
  1170     db.itemizedlist.role.attribute?
       
  1171     & db.common.attributes
       
  1172     & db.common.linking.attributes
       
  1173     & db.spacing.attribute?
       
  1174     & db.itemizedlist.mark.attribute?
       
  1175   db.itemizedlist.info = db._info.title.only
       
  1176   db.itemizedlist =
       
  1177     
       
  1178     ## A list in which each entry is marked with a bullet or other dingbat
       
  1179     element itemizedlist {
       
  1180       db.itemizedlist.attlist,
       
  1181       db.itemizedlist.info,
       
  1182       db.all.blocks*,
       
  1183       db.listitem+
       
  1184     }
       
  1185 }
       
  1186 div {
       
  1187   db.orderedlist.role.attribute = attribute role { text }
       
  1188   db.orderedlist.continuation.enumeration =
       
  1189     
       
  1190     ## Specifies that numbering should begin where the preceding list left off
       
  1191     "continues"
       
  1192     | 
       
  1193       ## Specifies that numbering should begin again at 1
       
  1194       "restarts"
       
  1195   db.orderedlist.continuation.attribute =
       
  1196     
       
  1197     ## Indicates how list numbering should begin relative to the immediately preceding list
       
  1198     attribute continuation { db.orderedlist.continuation.enumeration }
       
  1199   db.orderedlist.startingnumber.attribute =
       
  1200     
       
  1201     ## Specifies the initial line number.
       
  1202     attribute startingnumber { xsd:integer }
       
  1203   db.orderedlist.inheritnum.enumeration =
       
  1204     
       
  1205     ## Specifies that numbering should ignore list nesting
       
  1206     "ignore"
       
  1207     | 
       
  1208       ## Specifies that numbering should inherit from outer-level lists
       
  1209       "inherit"
       
  1210   db.orderedlist.inheritnum.attribute =
       
  1211     
       
  1212     ## Indicates whether or not item numbering should be influenced by list nesting
       
  1213     attribute inheritnum { db.orderedlist.inheritnum.enumeration }
       
  1214   db.orderedlist.numeration.enumeration =
       
  1215     
       
  1216     ## Specifies Arabic numeration (1, 2, 3, …)
       
  1217     "arabic"
       
  1218     | 
       
  1219       ## Specifies upper-case alphabetic numeration (A, B, C, …)
       
  1220       "upperalpha"
       
  1221     | 
       
  1222       ## Specifies lower-case alphabetic numeration (a, b, c, …)
       
  1223       "loweralpha"
       
  1224     | 
       
  1225       ## Specifies upper-case Roman numeration (I, II, III, …)
       
  1226       "upperroman"
       
  1227     | 
       
  1228       ## Specifies lower-case Roman numeration (i, ii, iii …)
       
  1229       "lowerroman"
       
  1230   db.orderedlist.numeration.attribute =
       
  1231     
       
  1232     ## Indicates the desired numeration
       
  1233     attribute numeration { db.orderedlist.numeration.enumeration }
       
  1234   db.orderedlist.attlist =
       
  1235     db.orderedlist.role.attribute?
       
  1236     & db.common.attributes
       
  1237     & db.common.linking.attributes
       
  1238     & db.spacing.attribute?
       
  1239     & (db.orderedlist.continuation.attribute
       
  1240        | db.orderedlist.startingnumber.attribute)?
       
  1241     & db.orderedlist.inheritnum.attribute?
       
  1242     & db.orderedlist.numeration.attribute?
       
  1243   db.orderedlist.info = db._info.title.only
       
  1244   db.orderedlist =
       
  1245     
       
  1246     ## A list in which each entry is marked with a sequentially incremented label
       
  1247     element orderedlist {
       
  1248       db.orderedlist.attlist,
       
  1249       db.orderedlist.info,
       
  1250       db.all.blocks*,
       
  1251       db.listitem+
       
  1252     }
       
  1253 }
       
  1254 div {
       
  1255   db.listitem.role.attribute = attribute role { text }
       
  1256   db.listitem.override.attribute =
       
  1257     
       
  1258     ## Specifies the keyword for the type of mark that should be used on this
       
  1259     ##  item, instead of the mark that would be used by default
       
  1260     attribute override { xsd:NMTOKEN }
       
  1261   db.listitem.attlist =
       
  1262     db.listitem.role.attribute?
       
  1263     & db.common.attributes
       
  1264     & db.common.linking.attributes
       
  1265     & db.listitem.override.attribute?
       
  1266   db.listitem =
       
  1267     
       
  1268     ## A wrapper for the elements of a list item
       
  1269     element listitem { db.listitem.attlist, db.all.blocks+ }
       
  1270 }
       
  1271 div {
       
  1272   db.segmentedlist.role.attribute = attribute role { text }
       
  1273   db.segmentedlist.attlist =
       
  1274     db.segmentedlist.role.attribute?
       
  1275     & db.common.attributes
       
  1276     & db.common.linking.attributes
       
  1277   db.segmentedlist.info = db._info.title.only
       
  1278   db.segmentedlist =
       
  1279     
       
  1280     ## A segmented list, a list of sets of elements
       
  1281     element segmentedlist {
       
  1282       db.segmentedlist.attlist,
       
  1283       db.segmentedlist.info,
       
  1284       db.segtitle+,
       
  1285       db.seglistitem+
       
  1286     }
       
  1287 }
       
  1288 div {
       
  1289   db.segtitle.role.attribute = attribute role { text }
       
  1290   db.segtitle.attlist =
       
  1291     db.segtitle.role.attribute?
       
  1292     & db.common.attributes
       
  1293     & db.common.linking.attributes
       
  1294   db.segtitle =
       
  1295     
       
  1296     ## The title of an element of a list item in a segmented list
       
  1297     element segtitle { db.segtitle.attlist, db.all.inlines* }
       
  1298 }
       
  1299 div {
       
  1300   db.seglistitem.role.attribute = attribute role { text }
       
  1301   db.seglistitem.attlist =
       
  1302     db.seglistitem.role.attribute?
       
  1303     & db.common.attributes
       
  1304     & db.common.linking.attributes
       
  1305   db.seglistitem =
       
  1306     
       
  1307     ## A list item in a segmented list
       
  1308     element seglistitem { db.seglistitem.attlist, db.seg+ }
       
  1309 }
       
  1310 div {
       
  1311   db.seg.role.attribute = attribute role { text }
       
  1312   db.seg.attlist =
       
  1313     db.seg.role.attribute?
       
  1314     & db.common.attributes
       
  1315     & db.common.linking.attributes
       
  1316   db.seg =
       
  1317     
       
  1318     ## An element of a list item in a segmented list
       
  1319     element seg { db.seg.attlist, db.all.inlines* }
       
  1320 }
       
  1321 div {
       
  1322   db.simplelist.role.attribute = attribute role { text }
       
  1323   db.simplelist.type.enumeration =
       
  1324     
       
  1325     ## A tabular presentation in row-major order.
       
  1326     "horiz"
       
  1327     | 
       
  1328       ## A tabular presentation in column-major order.
       
  1329       "vert"
       
  1330     | 
       
  1331       ## An inline presentation, usually a comma-delimited list.
       
  1332       "inline"
       
  1333   db.simplelist.type.attribute =
       
  1334     
       
  1335     ## Specifies the type of list presentation.
       
  1336     [ a:defaultValue = "vert" ]
       
  1337     attribute type { db.simplelist.type.enumeration }
       
  1338   db.simplelist.columns.attribute =
       
  1339     
       
  1340     ## Specifies the number of columns for horizontal or vertical presentation
       
  1341     attribute columns { xsd:integer }
       
  1342   db.simplelist.attlist =
       
  1343     db.simplelist.role.attribute?
       
  1344     & db.common.attributes
       
  1345     & db.common.linking.attributes
       
  1346     & db.simplelist.type.attribute?
       
  1347     & db.simplelist.columns.attribute?
       
  1348   db.simplelist =
       
  1349     
       
  1350     ## An undecorated list of single words or short phrases
       
  1351     element simplelist { db.simplelist.attlist, db.member+ }
       
  1352 }
       
  1353 div {
       
  1354   db.member.role.attribute = attribute role { text }
       
  1355   db.member.attlist =
       
  1356     db.member.role.attribute?
       
  1357     & db.common.attributes
       
  1358     & db.common.linking.attributes
       
  1359   db.member =
       
  1360     
       
  1361     ## An element of a simple list
       
  1362     element member { db.member.attlist, db.all.inlines* }
       
  1363 }
       
  1364 div {
       
  1365   db.variablelist.role.attribute = attribute role { text }
       
  1366   db.variablelist.termlength.attribute =
       
  1367     
       
  1368     ## 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
       
  1369     attribute termlength { text }
       
  1370   db.variablelist.attlist =
       
  1371     db.variablelist.role.attribute?
       
  1372     & db.common.attributes
       
  1373     & db.common.linking.attributes
       
  1374     & db.spacing.attribute?
       
  1375     & db.variablelist.termlength.attribute?
       
  1376   db.variablelist.info = db._info.title.only
       
  1377   db.variablelist =
       
  1378     
       
  1379     ## A list in which each entry is composed of a set of one or more terms and an associated description
       
  1380     element variablelist {
       
  1381       db.variablelist.attlist,
       
  1382       db.variablelist.info,
       
  1383       db.all.blocks*,
       
  1384       db.varlistentry+
       
  1385     }
       
  1386 }
       
  1387 div {
       
  1388   db.varlistentry.role.attribute = attribute role { text }
       
  1389   db.varlistentry.attlist =
       
  1390     db.varlistentry.role.attribute?
       
  1391     & db.common.attributes
       
  1392     & db.common.linking.attributes
       
  1393   db.varlistentry =
       
  1394     
       
  1395     ## A wrapper for a set of terms and the associated description in a variable list
       
  1396     element varlistentry {
       
  1397       db.varlistentry.attlist, db.term+, db.listitem
       
  1398     }
       
  1399 }
       
  1400 div {
       
  1401   db.term.role.attribute = attribute role { text }
       
  1402   db.term.attlist =
       
  1403     db.term.role.attribute?
       
  1404     & db.common.attributes
       
  1405     & db.common.linking.attributes
       
  1406   db.term =
       
  1407     
       
  1408     ## The word or phrase being defined or described in a variable list
       
  1409     element term { db.term.attlist, db.all.inlines* }
       
  1410 }
       
  1411 div {
       
  1412   db.example.role.attribute = attribute role { text }
       
  1413   db.example.label.attribute = db.label.attribute
       
  1414   db.example.width.attribute = db.width.characters.attribute
       
  1415   db.example.pgwide.attribute = db.pgwide.attribute
       
  1416   db.example.floatstyle.attribute = db.floatstyle.attribute
       
  1417   db.example.attlist =
       
  1418     db.example.role.attribute?
       
  1419     & db.common.attributes
       
  1420     & db.common.linking.attributes
       
  1421     & db.example.label.attribute?
       
  1422     & db.example.floatstyle.attribute?
       
  1423     & (db.example.width.attribute | db.example.pgwide.attribute)?
       
  1424   db.example.info = db._info.title.onlyreq
       
  1425   db.example =
       
  1426     
       
  1427     ## A formal example, with a title
       
  1428     element example {
       
  1429       db.example.attlist, db.example.info, db.all.blocks+, db.caption?
       
  1430     }
       
  1431 }
       
  1432 div {
       
  1433   db.informalexample.role.attribute = attribute role { text }
       
  1434   db.informalexample.width.attribute = db.width.characters.attribute
       
  1435   db.informalexample.floatstyle.attribute = db.floatstyle.attribute
       
  1436   db.informalexample.attlist =
       
  1437     db.informalexample.role.attribute?
       
  1438     & db.common.attributes
       
  1439     & db.common.linking.attributes
       
  1440     & db.informalexample.floatstyle.attribute?
       
  1441     & db.informalexample.width.attribute?
       
  1442   db.informalexample.info = db._info.title.forbidden
       
  1443   db.informalexample =
       
  1444     
       
  1445     ## A displayed example without a title
       
  1446     element informalexample {
       
  1447       db.informalexample.attlist,
       
  1448       db.informalexample.info,
       
  1449       db.all.blocks+,
       
  1450       db.caption?
       
  1451     }
       
  1452 }
       
  1453 db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co
       
  1454 db.verbatim.contentmodel =
       
  1455   db._info.title.forbidden, (db.textobject | db.verbatim.inlines*)
       
  1456 div {
       
  1457   db.literallayout.role.attribute = attribute role { text }
       
  1458   db.literallayout.class.enumeration =
       
  1459     
       
  1460     ## The literal layout should be formatted with a monospaced font
       
  1461     "monospaced"
       
  1462     | 
       
  1463       ## The literal layout should be formatted with the current font
       
  1464       "normal"
       
  1465   db.literallayout.class.attribute =
       
  1466     
       
  1467     ## Specifies the class of literal layout
       
  1468     attribute class { db.literallayout.class.enumeration }
       
  1469   db.literallayout.attlist =
       
  1470     db.literallayout.role.attribute?
       
  1471     & db.common.attributes
       
  1472     & db.common.linking.attributes
       
  1473     & db.verbatim.attributes
       
  1474     & db.literallayout.class.attribute?
       
  1475   db.literallayout =
       
  1476     
       
  1477     ## A block of text in which line breaks and white space are to be reproduced faithfully
       
  1478     element literallayout {
       
  1479       db.literallayout.attlist, db.verbatim.contentmodel
       
  1480     }
       
  1481 }
       
  1482 div {
       
  1483   db.screen.role.attribute = attribute role { text }
       
  1484   db.screen.width.attribute = db.width.characters.attribute
       
  1485   db.screen.attlist =
       
  1486     db.screen.role.attribute?
       
  1487     & db.common.attributes
       
  1488     & db.common.linking.attributes
       
  1489     & db.verbatim.attributes
       
  1490     & db.screen.width.attribute?
       
  1491   db.screen =
       
  1492     
       
  1493     ## Text that a user sees or might see on a computer screen
       
  1494     element screen { db.screen.attlist, db.verbatim.contentmodel }
       
  1495 }
       
  1496 div {
       
  1497   db.screenshot.role.attribute = attribute role { text }
       
  1498   db.screenshot.attlist =
       
  1499     db.screenshot.role.attribute?
       
  1500     & db.common.attributes
       
  1501     & db.common.linking.attributes
       
  1502   db.screenshot.info = db._info
       
  1503   db.screenshot =
       
  1504     
       
  1505     ## A representation of what the user sees or might see on a computer screen
       
  1506     element screenshot {
       
  1507       db.screenshot.attlist, db.screenshot.info, db.mediaobject
       
  1508     }
       
  1509 }
       
  1510 div {
       
  1511   db.figure.role.attribute = attribute role { text }
       
  1512   db.figure.label.attribute = db.label.attribute
       
  1513   db.figure.pgwide.attribute = db.pgwide.attribute
       
  1514   db.figure.floatstyle.attribute = db.floatstyle.attribute
       
  1515   db.figure.attlist =
       
  1516     db.figure.role.attribute?
       
  1517     & db.common.attributes
       
  1518     & db.common.linking.attributes
       
  1519     & db.figure.label.attribute?
       
  1520     & db.figure.pgwide.attribute?
       
  1521     & db.figure.floatstyle.attribute?
       
  1522   db.figure.info = db._info.title.onlyreq
       
  1523   db.figure =
       
  1524     
       
  1525     ## A formal figure, generally an illustration, with a title
       
  1526     element figure {
       
  1527       db.figure.attlist, db.figure.info, db.all.blocks+, db.caption?
       
  1528     }
       
  1529 }
       
  1530 div {
       
  1531   db.informalfigure.role.attribute = attribute role { text }
       
  1532   db.informalfigure.label.attribute = db.label.attribute
       
  1533   db.informalfigure.pgwide.attribute = db.pgwide.attribute
       
  1534   db.informalfigure.floatstyle.attribute = db.floatstyle.attribute
       
  1535   db.informalfigure.attlist =
       
  1536     db.informalfigure.role.attribute?
       
  1537     & db.common.attributes
       
  1538     & db.common.linking.attributes
       
  1539     & db.informalfigure.label.attribute?
       
  1540     & db.informalfigure.pgwide.attribute?
       
  1541     & db.informalfigure.floatstyle.attribute?
       
  1542   db.informalfigure.info = db._info.title.forbidden
       
  1543   db.informalfigure =
       
  1544     
       
  1545     ## A untitled figure
       
  1546     element informalfigure {
       
  1547       db.informalfigure.attlist,
       
  1548       db.informalfigure.info,
       
  1549       db.all.blocks+,
       
  1550       db.caption?
       
  1551     }
       
  1552 }
       
  1553 db.mediaobject.content =
       
  1554   (db.videoobject | db.audioobject | db.imageobject | db.textobject)
       
  1555   | db.imageobjectco
       
  1556 div {
       
  1557   db.mediaobject.role.attribute = attribute role { text }
       
  1558   db.mediaobject.attlist =
       
  1559     db.mediaobject.role.attribute?
       
  1560     & db.common.attributes
       
  1561     & db.common.linking.attributes
       
  1562   db.mediaobject.info = db._info.title.forbidden
       
  1563   db.mediaobject =
       
  1564     
       
  1565     ## A displayed media object (video, audio, image, etc.)
       
  1566     element mediaobject {
       
  1567       db.mediaobject.attlist,
       
  1568       db.mediaobject.info,
       
  1569       db.alt?,
       
  1570       db.mediaobject.content+,
       
  1571       db.caption?
       
  1572     }
       
  1573 }
       
  1574 div {
       
  1575   db.inlinemediaobject.role.attribute = attribute role { text }
       
  1576   db.inlinemediaobject.attlist =
       
  1577     db.inlinemediaobject.role.attribute?
       
  1578     & db.common.attributes
       
  1579     & db.common.linking.attributes
       
  1580   db.inlinemediaobject.info = db._info.title.forbidden
       
  1581   db.inlinemediaobject =
       
  1582     
       
  1583     ## An inline media object (video, audio, image, and so on)
       
  1584     element inlinemediaobject {
       
  1585       db.inlinemediaobject.attlist,
       
  1586       db.inlinemediaobject.info,
       
  1587       db.alt?,
       
  1588       db.mediaobject.content+
       
  1589     }
       
  1590 }
       
  1591 div {
       
  1592   db.videoobject.role.attribute = attribute role { text }
       
  1593   db.videoobject.attlist =
       
  1594     db.videoobject.role.attribute?
       
  1595     & db.common.attributes
       
  1596     & db.common.linking.attributes
       
  1597   db.videoobject.info = db._info.title.forbidden
       
  1598   db.videoobject =
       
  1599     
       
  1600     ## A wrapper for video data and its associated meta-information
       
  1601     element videoobject {
       
  1602       db.videoobject.attlist, db.videoobject.info, db.videodata
       
  1603     }
       
  1604 }
       
  1605 div {
       
  1606   db.audioobject.role.attribute = attribute role { text }
       
  1607   db.audioobject.attlist =
       
  1608     db.audioobject.role.attribute?
       
  1609     & db.common.attributes
       
  1610     & db.common.linking.attributes
       
  1611   db.audioobject.info = db._info.title.forbidden
       
  1612   db.audioobject =
       
  1613     
       
  1614     ## A wrapper for audio data and its associated meta-information
       
  1615     element audioobject {
       
  1616       db.audioobject.attlist, db.audioobject.info, db.audiodata
       
  1617     }
       
  1618 }
       
  1619 db.imageobject.content =
       
  1620   db.imagedata | db.imagedata.mathml | db.imagedata.svg
       
  1621 div {
       
  1622   db.imageobject.role.attribute = attribute role { text }
       
  1623   db.imageobject.attlist =
       
  1624     db.imageobject.role.attribute?
       
  1625     & db.common.attributes
       
  1626     & db.common.linking.attributes
       
  1627   db.imageobject.info = db._info.title.forbidden
       
  1628   db.imageobject =
       
  1629     
       
  1630     ## A wrapper for image data and its associated meta-information
       
  1631     element imageobject {
       
  1632       db.imageobject.attlist,
       
  1633       db.imageobject.info,
       
  1634       db.imageobject.content
       
  1635     }
       
  1636 }
       
  1637 div {
       
  1638   db.textobject.role.attribute = attribute role { text }
       
  1639   db.textobject.attlist =
       
  1640     db.textobject.role.attribute?
       
  1641     & db.common.attributes
       
  1642     & db.common.linking.attributes
       
  1643   db.textobject.info = db._info.title.forbidden
       
  1644   db.textobject =
       
  1645     
       
  1646     ## A wrapper for a text description of an object and its associated meta-information
       
  1647     element textobject {
       
  1648       db.textobject.attlist,
       
  1649       db.textobject.info,
       
  1650       (db.phrase | db.textdata | db.all.blocks+)
       
  1651     }
       
  1652 }
       
  1653 div {
       
  1654   db.videodata.role.attribute = attribute role { text }
       
  1655   db.videodata.align.enumeration = db.halign.enumeration
       
  1656   db.videodata.align.attribute =
       
  1657     
       
  1658     ## Specifies the (horizontal) alignment of the video data
       
  1659     attribute align { db.videodata.align.enumeration }
       
  1660   db.videodata.valign.enumeration = db.valign.enumeration
       
  1661   db.videodata.valign.attribute =
       
  1662     
       
  1663     ## Specifies the vertical alignment of the video data
       
  1664     attribute valign { db.videodata.valign.enumeration }
       
  1665   db.videodata.width.attribute = db.width.attribute
       
  1666   db.videodata.depth.attribute = db.depth.attribute
       
  1667   db.videodata.contentwidth.attribute = db.contentwidth.attribute
       
  1668   db.videodata.contentdepth.attribute = db.contentdepth.attribute
       
  1669   db.videodata.scalefit.enumeration = db.scalefit.enumeration
       
  1670   db.videodata.scalefit.attribute =
       
  1671     
       
  1672     ## Determines if anamorphic scaling is forbidden
       
  1673     attribute scalefit { db.videodata.scalefit.enumeration }
       
  1674   db.videodata.scale.attribute = db.scale.attribute
       
  1675   db.videodata.attlist =
       
  1676     db.videodata.role.attribute?
       
  1677     & db.common.attributes
       
  1678     & db.common.data.attributes
       
  1679     & db.videodata.align.attribute?
       
  1680     & db.videodata.valign.attribute?
       
  1681     & db.videodata.width.attribute?
       
  1682     & db.videodata.contentwidth.attribute?
       
  1683     & db.videodata.scalefit.attribute?
       
  1684     & db.videodata.scale.attribute?
       
  1685     & db.videodata.depth.attribute?
       
  1686     & db.videodata.contentdepth.attribute?
       
  1687   db.videodata.info = db._info.title.forbidden
       
  1688   db.videodata =
       
  1689     
       
  1690     ## Pointer to external video data
       
  1691     element videodata { db.videodata.attlist, db.videodata.info }
       
  1692 }
       
  1693 div {
       
  1694   db.audiodata.role.attribute = attribute role { text }
       
  1695   db.audiodata.attlist =
       
  1696     db.audiodata.role.attribute?
       
  1697     & db.common.attributes
       
  1698     & db.common.data.attributes
       
  1699   db.audiodata.info = db._info.title.forbidden
       
  1700   db.audiodata =
       
  1701     
       
  1702     ## Pointer to external audio data
       
  1703     element audiodata { db.audiodata.attlist, db.audiodata.info }
       
  1704 }
       
  1705 div {
       
  1706   db.imagedata.role.attribute = attribute role { text }
       
  1707   db.imagedata.align.enumeration = db.halign.enumeration
       
  1708   db.imagedata.align.attribute =
       
  1709     
       
  1710     ## Specifies the (horizontal) alignment of the image data
       
  1711     attribute align { db.imagedata.align.enumeration }
       
  1712   db.imagedata.valign.enumeration = db.valign.enumeration
       
  1713   db.imagedata.valign.attribute =
       
  1714     
       
  1715     ## Specifies the vertical alignment of the image data
       
  1716     attribute valign { db.imagedata.valign.enumeration }
       
  1717   db.imagedata.width.attribute = db.width.attribute
       
  1718   db.imagedata.depth.attribute = db.depth.attribute
       
  1719   db.imagedata.contentwidth.attribute = db.contentwidth.attribute
       
  1720   db.imagedata.contentdepth.attribute = db.contentdepth.attribute
       
  1721   db.imagedata.scalefit.enumeration = db.scalefit.enumeration
       
  1722   db.imagedata.scalefit.attribute =
       
  1723     
       
  1724     ## Determines if anamorphic scaling is forbidden
       
  1725     attribute scalefit { db.imagedata.scalefit.enumeration }
       
  1726   db.imagedata.scale.attribute = db.scale.attribute
       
  1727   db.imagedata.attlist =
       
  1728     db.imagedata.role.attribute?
       
  1729     & db.common.attributes
       
  1730     & db.common.data.attributes
       
  1731     & db.imagedata.align.attribute?
       
  1732     & db.imagedata.valign.attribute?
       
  1733     & db.imagedata.width.attribute?
       
  1734     & db.imagedata.contentwidth.attribute?
       
  1735     & db.imagedata.scalefit.attribute?
       
  1736     & db.imagedata.scale.attribute?
       
  1737     & db.imagedata.depth.attribute?
       
  1738     & db.imagedata.contentdepth.attribute?
       
  1739   db.imagedata.info = db._info.title.forbidden
       
  1740   db.imagedata =
       
  1741     
       
  1742     ## Pointer to external image data
       
  1743     element imagedata { db.imagedata.attlist, db.imagedata.info }
       
  1744 }
       
  1745 div {
       
  1746   db.textdata.role.attribute = attribute role { text }
       
  1747   db.textdata.encoding.attribute =
       
  1748     
       
  1749     ## Identifies the encoding of the text in the external file
       
  1750     attribute encoding { text }
       
  1751   db.textdata.attlist =
       
  1752     db.textdata.role.attribute?
       
  1753     & db.common.attributes
       
  1754     & db.common.data.attributes
       
  1755     & db.textdata.encoding.attribute?
       
  1756   db.textdata.info = db._info.title.forbidden
       
  1757   db.textdata =
       
  1758     
       
  1759     ## Pointer to external text data
       
  1760     element textdata { db.textdata.attlist, db.textdata.info }
       
  1761 }
       
  1762 div {
       
  1763   db.caption.role.attribute = attribute role { text }
       
  1764   db.caption.attlist =
       
  1765     db.caption.role.attribute?
       
  1766     & db.common.attributes
       
  1767     & db.common.linking.attributes
       
  1768   db.caption.info = db._info.title.forbidden
       
  1769   db.caption =
       
  1770     
       
  1771     ## A caption
       
  1772     element caption {
       
  1773       db.caption.attlist, db.caption.info, db.all.blocks+
       
  1774     }
       
  1775 }
       
  1776 div {
       
  1777   db.address.role.attribute = attribute role { text }
       
  1778   db.address.attlist =
       
  1779     db.address.role.attribute?
       
  1780     & db.common.attributes
       
  1781     & db.common.linking.attributes
       
  1782     & db.verbatim.attributes
       
  1783   db.address =
       
  1784     
       
  1785     ## A real-world address, generally a postal address
       
  1786     element address {
       
  1787       db.address.attlist,
       
  1788       (db._text
       
  1789        | db.personname
       
  1790        | db.orgname
       
  1791        | db.pob
       
  1792        | db.street
       
  1793        | db.city
       
  1794        | db.state
       
  1795        | db.postcode
       
  1796        | db.country
       
  1797        | db.phone
       
  1798        | db.fax
       
  1799        | db.email
       
  1800        | db.uri
       
  1801        | db.otheraddr)*
       
  1802     }
       
  1803 }
       
  1804 div {
       
  1805   db.street.role.attribute = attribute role { text }
       
  1806   db.street.attlist =
       
  1807     db.street.role.attribute?
       
  1808     & db.common.attributes
       
  1809     & db.common.linking.attributes
       
  1810   db.street =
       
  1811     
       
  1812     ## A street address in an address
       
  1813     element street { db.street.attlist, db._text }
       
  1814 }
       
  1815 div {
       
  1816   db.pob.role.attribute = attribute role { text }
       
  1817   db.pob.attlist =
       
  1818     db.pob.role.attribute?
       
  1819     & db.common.attributes
       
  1820     & db.common.linking.attributes
       
  1821   db.pob =
       
  1822     
       
  1823     ## A post office box in an address
       
  1824     element pob { db.pob.attlist, db._text }
       
  1825 }
       
  1826 div {
       
  1827   db.postcode.role.attribute = attribute role { text }
       
  1828   db.postcode.attlist =
       
  1829     db.postcode.role.attribute?
       
  1830     & db.common.attributes
       
  1831     & db.common.linking.attributes
       
  1832   db.postcode =
       
  1833     
       
  1834     ## A postal code in an address
       
  1835     element postcode { db.postcode.attlist, db._text }
       
  1836 }
       
  1837 div {
       
  1838   db.city.role.attribute = attribute role { text }
       
  1839   db.city.attlist =
       
  1840     db.city.role.attribute?
       
  1841     & db.common.attributes
       
  1842     & db.common.linking.attributes
       
  1843   db.city =
       
  1844     
       
  1845     ## The name of a city in an address
       
  1846     element city { db.city.attlist, db._text }
       
  1847 }
       
  1848 div {
       
  1849   db.state.role.attribute = attribute role { text }
       
  1850   db.state.attlist =
       
  1851     db.state.role.attribute?
       
  1852     & db.common.attributes
       
  1853     & db.common.linking.attributes
       
  1854   db.state =
       
  1855     
       
  1856     ## A state or province in an address
       
  1857     element state { db.state.attlist, db._text }
       
  1858 }
       
  1859 div {
       
  1860   db.country.role.attribute = attribute role { text }
       
  1861   db.country.attlist =
       
  1862     db.country.role.attribute?
       
  1863     & db.common.attributes
       
  1864     & db.common.linking.attributes
       
  1865   db.country =
       
  1866     
       
  1867     ## The name of a country
       
  1868     element country { db.country.attlist, db._text }
       
  1869 }
       
  1870 div {
       
  1871   db.phone.role.attribute = attribute role { text }
       
  1872   db.phone.attlist =
       
  1873     db.phone.role.attribute?
       
  1874     & db.common.attributes
       
  1875     & db.common.linking.attributes
       
  1876   db.phone =
       
  1877     
       
  1878     ## A telephone number
       
  1879     element phone { db.phone.attlist, db._text }
       
  1880 }
       
  1881 div {
       
  1882   db.fax.role.attribute = attribute role { text }
       
  1883   db.fax.attlist =
       
  1884     db.fax.role.attribute?
       
  1885     & db.common.attributes
       
  1886     & db.common.linking.attributes
       
  1887   db.fax =
       
  1888     
       
  1889     ## A fax number
       
  1890     element fax { db.fax.attlist, db._text }
       
  1891 }
       
  1892 div {
       
  1893   db.otheraddr.role.attribute = attribute role { text }
       
  1894   db.otheraddr.attlist =
       
  1895     db.otheraddr.role.attribute?
       
  1896     & db.common.attributes
       
  1897     & db.common.linking.attributes
       
  1898   db.otheraddr =
       
  1899     
       
  1900     ## Uncategorized information in address
       
  1901     element otheraddr { db.otheraddr.attlist, db._text }
       
  1902 }
       
  1903 div {
       
  1904   db.affiliation.role.attribute = attribute role { text }
       
  1905   db.affiliation.attlist =
       
  1906     db.affiliation.role.attribute?
       
  1907     & db.common.attributes
       
  1908     & db.common.linking.attributes
       
  1909   db.affiliation =
       
  1910     
       
  1911     ## The institutional affiliation of an individual
       
  1912     element affiliation {
       
  1913       db.affiliation.attlist,
       
  1914       db.shortaffil?,
       
  1915       db.jobtitle*,
       
  1916       (db.org? | (db.orgname?, db.orgdiv*, db.address*))
       
  1917     }
       
  1918 }
       
  1919 div {
       
  1920   db.shortaffil.role.attribute = attribute role { text }
       
  1921   db.shortaffil.attlist =
       
  1922     db.shortaffil.role.attribute?
       
  1923     & db.common.attributes
       
  1924     & db.common.linking.attributes
       
  1925   db.shortaffil =
       
  1926     
       
  1927     ## A brief description of an affiliation
       
  1928     element shortaffil { db.shortaffil.attlist, db._text }
       
  1929 }
       
  1930 div {
       
  1931   db.jobtitle.role.attribute = attribute role { text }
       
  1932   db.jobtitle.attlist =
       
  1933     db.jobtitle.role.attribute?
       
  1934     & db.common.attributes
       
  1935     & db.common.linking.attributes
       
  1936   db.jobtitle =
       
  1937     
       
  1938     ## The title of an individual in an organization
       
  1939     element jobtitle { db.jobtitle.attlist, db._text }
       
  1940 }
       
  1941 div {
       
  1942   db.orgname.class.enumeration =
       
  1943     
       
  1944     ## A consortium
       
  1945     "consortium"
       
  1946     | 
       
  1947       ## A corporation
       
  1948       "corporation"
       
  1949     | 
       
  1950       ## An informal organization
       
  1951       "informal"
       
  1952     | 
       
  1953       ## A non-profit organization
       
  1954       "nonprofit"
       
  1955   db.orgname.class-enum.attribute =
       
  1956     
       
  1957     ## Specifies the nature of the organization
       
  1958     attribute class { db.orgname.class.enumeration }
       
  1959   db.orgname.class-other.attributes =
       
  1960     
       
  1961     ## Specifies the nature of the organization
       
  1962     attribute class {
       
  1963       
       
  1964       ## Indicates a non-standard organization class
       
  1965       "other"
       
  1966     },
       
  1967     
       
  1968     ## Identifies the non-standard nature of the organization
       
  1969     attribute otherclass { text }
       
  1970   db.orgname.class.attribute =
       
  1971     db.orgname.class-enum.attribute | db.orgname.class-other.attributes
       
  1972   db.orgname.role.attribute = attribute role { text }
       
  1973   db.orgname.attlist =
       
  1974     db.orgname.role.attribute?
       
  1975     & db.common.attributes
       
  1976     & db.common.linking.attributes
       
  1977     & db.orgname.class.attribute?
       
  1978   db.orgname =
       
  1979     
       
  1980     ## The name of an organization
       
  1981     element orgname { db.orgname.attlist, db._text }
       
  1982 }
       
  1983 div {
       
  1984   db.orgdiv.role.attribute = attribute role { text }
       
  1985   db.orgdiv.attlist =
       
  1986     db.orgdiv.role.attribute?
       
  1987     & db.common.attributes
       
  1988     & db.common.linking.attributes
       
  1989   db.orgdiv =
       
  1990     
       
  1991     ## A division of an organization
       
  1992     element orgdiv { db.orgdiv.attlist, db.all.inlines* }
       
  1993 }
       
  1994 div {
       
  1995   db.artpagenums.role.attribute = attribute role { text }
       
  1996   db.artpagenums.attlist =
       
  1997     db.artpagenums.role.attribute?
       
  1998     & db.common.attributes
       
  1999     & db.common.linking.attributes
       
  2000   db.artpagenums =
       
  2001     
       
  2002     ## The page numbers of an article as published
       
  2003     element artpagenums { db.artpagenums.attlist, db._text }
       
  2004 }
       
  2005 div {
       
  2006   db.personname.role.attribute = attribute role { text }
       
  2007   db.personname.attlist =
       
  2008     db.personname.role.attribute?
       
  2009     & db.common.attributes
       
  2010     & db.common.linking.attributes
       
  2011   db.personname =
       
  2012     
       
  2013     ## The personal name of an individual
       
  2014     element personname {
       
  2015       db.personname.attlist,
       
  2016       (db._text
       
  2017        | (db.honorific
       
  2018           | db.firstname
       
  2019           | db.surname
       
  2020           | db.lineage
       
  2021           | db.othername)+
       
  2022        | (db.honorific
       
  2023           | db.givenname
       
  2024           | db.surname
       
  2025           | db.lineage
       
  2026           | db.othername)+)
       
  2027     }
       
  2028 }
       
  2029 db.person.author.contentmodel =
       
  2030   db.personname,
       
  2031   (db.personblurb
       
  2032    | db.affiliation
       
  2033    | db.email
       
  2034    | db.uri
       
  2035    | db.address
       
  2036    | db.contrib)*
       
  2037 db.org.author.contentmodel =
       
  2038   db.orgname,
       
  2039   (db.orgdiv
       
  2040    | db.affiliation
       
  2041    | db.email
       
  2042    | db.uri
       
  2043    | db.address
       
  2044    | db.contrib)*
       
  2045 db.credit.contentmodel =
       
  2046   db.person.author.contentmodel | db.org.author.contentmodel
       
  2047 div {
       
  2048   db.author.role.attribute = attribute role { text }
       
  2049   db.author.attlist =
       
  2050     db.author.role.attribute?
       
  2051     & db.common.attributes
       
  2052     & db.common.linking.attributes
       
  2053   db.author =
       
  2054     
       
  2055     ## The name of an individual author
       
  2056     element author { db.author.attlist, db.credit.contentmodel }
       
  2057 }
       
  2058 div {
       
  2059   db.authorgroup.role.attribute = attribute role { text }
       
  2060   db.authorgroup.attlist =
       
  2061     db.authorgroup.role.attribute?
       
  2062     & db.common.attributes
       
  2063     & db.common.linking.attributes
       
  2064   db.authorgroup =
       
  2065     
       
  2066     ## Wrapper for author information when a document has multiple authors or collaborators
       
  2067     element authorgroup {
       
  2068       db.authorgroup.attlist, (db.author | db.editor | db.othercredit)+
       
  2069     }
       
  2070 }
       
  2071 div {
       
  2072   db.collab.role.attribute = attribute role { text }
       
  2073   db.collab.attlist =
       
  2074     db.collab.role.attribute?
       
  2075     & db.common.attributes
       
  2076     & db.common.linking.attributes
       
  2077   db.collab =
       
  2078     
       
  2079     ## Identifies a collaborator
       
  2080     element collab {
       
  2081       db.collab.attlist,
       
  2082       (db.person | db.personname | db.org | db.orgname)+,
       
  2083       db.affiliation*
       
  2084     }
       
  2085 }
       
  2086 div {
       
  2087   db.authorinitials.role.attribute = attribute role { text }
       
  2088   db.authorinitials.attlist =
       
  2089     db.authorinitials.role.attribute?
       
  2090     & db.common.attributes
       
  2091     & db.common.linking.attributes
       
  2092   db.authorinitials =
       
  2093     
       
  2094     ## The initials or other short identifier for an author
       
  2095     element authorinitials { db.authorinitials.attlist, db._text }
       
  2096 }
       
  2097 div {
       
  2098   db.person.role.attribute = attribute role { text }
       
  2099   db.person.attlist =
       
  2100     db.person.role.attribute?
       
  2101     & db.common.attributes
       
  2102     & db.common.linking.attributes
       
  2103   db.person =
       
  2104     
       
  2105     ## A person and associated metadata
       
  2106     element person {
       
  2107       db.person.attlist,
       
  2108       db.personname,
       
  2109       (db.address
       
  2110        | db.affiliation
       
  2111        | db.email
       
  2112        | db.uri
       
  2113        | db.personblurb)*
       
  2114     }
       
  2115 }
       
  2116 div {
       
  2117   db.org.role.attribute = attribute role { text }
       
  2118   db.org.attlist =
       
  2119     db.org.role.attribute?
       
  2120     & db.common.attributes
       
  2121     & db.common.linking.attributes
       
  2122   db.org =
       
  2123     
       
  2124     ## An organization and associated metadata
       
  2125     element org {
       
  2126       db.org.attlist,
       
  2127       db.orgname,
       
  2128       (db.address | db.affiliation | db.email | db.uri | db.orgdiv)*
       
  2129     }
       
  2130 }
       
  2131 div {
       
  2132   db.confgroup.role.attribute = attribute role { text }
       
  2133   db.confgroup.attlist =
       
  2134     db.confgroup.role.attribute?
       
  2135     & db.common.attributes
       
  2136     & db.common.linking.attributes
       
  2137   db.confgroup =
       
  2138     
       
  2139     ## A wrapper for document meta-information about a conference
       
  2140     element confgroup {
       
  2141       db.confgroup.attlist,
       
  2142       (db.confdates
       
  2143        | db.conftitle
       
  2144        | db.confnum
       
  2145        | db.confsponsor
       
  2146        | db.address)*
       
  2147     }
       
  2148 }
       
  2149 div {
       
  2150   db.confdates.role.attribute = attribute role { text }
       
  2151   db.confdates.attlist =
       
  2152     db.confdates.role.attribute?
       
  2153     & db.common.attributes
       
  2154     & db.common.linking.attributes
       
  2155   db.confdates =
       
  2156     
       
  2157     ## The dates of a conference for which a document was written
       
  2158     element confdates { db.confdates.attlist, db._text }
       
  2159 }
       
  2160 div {
       
  2161   db.conftitle.role.attribute = attribute role { text }
       
  2162   db.conftitle.attlist =
       
  2163     db.conftitle.role.attribute?
       
  2164     & db.common.attributes
       
  2165     & db.common.linking.attributes
       
  2166   db.conftitle =
       
  2167     
       
  2168     ## The title of a conference for which a document was written
       
  2169     element conftitle { db.conftitle.attlist, db._text }
       
  2170 }
       
  2171 div {
       
  2172   db.confnum.role.attribute = attribute role { text }
       
  2173   db.confnum.attlist =
       
  2174     db.confnum.role.attribute?
       
  2175     & db.common.attributes
       
  2176     & db.common.linking.attributes
       
  2177   db.confnum =
       
  2178     
       
  2179     ## An identifier, frequently numerical, associated with a conference for which a document was written
       
  2180     element confnum { db.confnum.attlist, db._text }
       
  2181 }
       
  2182 div {
       
  2183   db.confsponsor.role.attribute = attribute role { text }
       
  2184   db.confsponsor.attlist =
       
  2185     db.confsponsor.role.attribute?
       
  2186     & db.common.attributes
       
  2187     & db.common.linking.attributes
       
  2188   db.confsponsor =
       
  2189     
       
  2190     ## The sponsor of a conference for which a document was written
       
  2191     element confsponsor { db.confsponsor.attlist, db._text }
       
  2192 }
       
  2193 div {
       
  2194   db.contractnum.role.attribute = attribute role { text }
       
  2195   db.contractnum.attlist =
       
  2196     db.contractnum.role.attribute?
       
  2197     & db.common.attributes
       
  2198     & db.common.linking.attributes
       
  2199   db.contractnum =
       
  2200     
       
  2201     ## The contract number of a document
       
  2202     element contractnum { db.contractnum.attlist, db._text }
       
  2203 }
       
  2204 div {
       
  2205   db.contractsponsor.role.attribute = attribute role { text }
       
  2206   db.contractsponsor.attlist =
       
  2207     db.contractsponsor.role.attribute?
       
  2208     & db.common.attributes
       
  2209     & db.common.linking.attributes
       
  2210   db.contractsponsor =
       
  2211     
       
  2212     ## The sponsor of a contract
       
  2213     element contractsponsor { db.contractsponsor.attlist, db._text }
       
  2214 }
       
  2215 div {
       
  2216   db.copyright.role.attribute = attribute role { text }
       
  2217   db.copyright.attlist =
       
  2218     db.copyright.role.attribute?
       
  2219     & db.common.attributes
       
  2220     & db.common.linking.attributes
       
  2221   db.copyright =
       
  2222     
       
  2223     ## Copyright information about a document
       
  2224     element copyright { db.copyright.attlist, db.year+, db.holder* }
       
  2225 }
       
  2226 div {
       
  2227   db.year.role.attribute = attribute role { text }
       
  2228   db.year.attlist =
       
  2229     db.year.role.attribute?
       
  2230     & db.common.attributes
       
  2231     & db.common.linking.attributes
       
  2232   db.year =
       
  2233     
       
  2234     ## The year of publication of a document
       
  2235     element year { db.year.attlist, db._text }
       
  2236 }
       
  2237 div {
       
  2238   db.holder.role.attribute = attribute role { text }
       
  2239   db.holder.attlist =
       
  2240     db.holder.role.attribute?
       
  2241     & db.common.attributes
       
  2242     & db.common.linking.attributes
       
  2243   db.holder =
       
  2244     
       
  2245     ## The name of the individual or organization that holds a copyright
       
  2246     element holder { db.holder.attlist, db._text }
       
  2247 }
       
  2248 db.cover.contentmodel =
       
  2249   (db.para.blocks
       
  2250    | db.extension.blocks
       
  2251    | db.list.blocks
       
  2252    | db.informal.blocks
       
  2253    | db.publishing.blocks
       
  2254    | db.graphic.blocks
       
  2255    | db.technical.blocks
       
  2256    | db.verbatim.blocks
       
  2257    | db.bridgehead
       
  2258    | db.remark
       
  2259    | db.revhistory)
       
  2260   | db.synopsis.blocks
       
  2261 div {
       
  2262   db.cover.role.attribute = attribute role { text }
       
  2263   db.cover.attlist =
       
  2264     db.cover.role.attribute?
       
  2265     & db.common.attributes
       
  2266     & db.common.linking.attributes
       
  2267   db.cover =
       
  2268     
       
  2269     ## Additional content for the cover of a publication
       
  2270     element cover { db.cover.attlist, db.cover.contentmodel+ }
       
  2271 }
       
  2272 db.date.contentmodel =
       
  2273   xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text
       
  2274 div {
       
  2275   db.date.role.attribute = attribute role { text }
       
  2276   db.date.attlist =
       
  2277     db.date.role.attribute?
       
  2278     & db.common.attributes
       
  2279     & db.common.linking.attributes
       
  2280   db.date =
       
  2281     
       
  2282     ## The date of publication or revision of a document
       
  2283     element date { db.date.attlist, db.date.contentmodel }
       
  2284 }
       
  2285 div {
       
  2286   db.edition.role.attribute = attribute role { text }
       
  2287   db.edition.attlist =
       
  2288     db.edition.role.attribute?
       
  2289     & db.common.attributes
       
  2290     & db.common.linking.attributes
       
  2291   db.edition =
       
  2292     
       
  2293     ## The name or number of an edition of a document
       
  2294     element edition { db.edition.attlist, db._text }
       
  2295 }
       
  2296 div {
       
  2297   db.editor.role.attribute = attribute role { text }
       
  2298   db.editor.attlist =
       
  2299     db.editor.role.attribute?
       
  2300     & db.common.attributes
       
  2301     & db.common.linking.attributes
       
  2302   db.editor =
       
  2303     
       
  2304     ## The name of the editor of a document
       
  2305     element editor { db.editor.attlist, db.credit.contentmodel }
       
  2306 }
       
  2307 div {
       
  2308   db.biblioid.role.attribute = attribute role { text }
       
  2309   db.biblioid.attlist =
       
  2310     db.biblioid.role.attribute?
       
  2311     & db.common.attributes
       
  2312     & db.common.linking.attributes
       
  2313     & db.biblio.class.attribute
       
  2314   db.biblioid =
       
  2315     
       
  2316     ## An identifier for a document
       
  2317     element biblioid { db.biblioid.attlist, db._text }
       
  2318 }
       
  2319 div {
       
  2320   db.citebiblioid.role.attribute = attribute role { text }
       
  2321   db.citebiblioid.attlist =
       
  2322     db.citebiblioid.role.attribute?
       
  2323     & db.common.attributes
       
  2324     & db.common.linking.attributes
       
  2325     & db.biblio.class.attribute
       
  2326   db.citebiblioid =
       
  2327     
       
  2328     ## A citation of a bibliographic identifier
       
  2329     element citebiblioid { db.citebiblioid.attlist, db._text }
       
  2330 }
       
  2331 div {
       
  2332   db.bibliosource.role.attribute = attribute role { text }
       
  2333   db.bibliosource.attlist =
       
  2334     db.bibliosource.role.attribute?
       
  2335     & db.common.attributes
       
  2336     & db.common.linking.attributes
       
  2337     & db.biblio.class.attribute
       
  2338   db.bibliosource =
       
  2339     
       
  2340     ## The source of a document
       
  2341     element bibliosource { db.bibliosource.attlist, db._text }
       
  2342 }
       
  2343 div {
       
  2344   db.bibliorelation.type.enumeration =
       
  2345     
       
  2346     ## The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format
       
  2347     "hasformat"
       
  2348     | 
       
  2349       ## The described resource includes the referenced resource either physically or logically
       
  2350       "haspart"
       
  2351     | 
       
  2352       ## The described resource has a version, edition, or adaptation, namely, the referenced resource
       
  2353       "hasversion"
       
  2354     | 
       
  2355       ## The described resource is the same intellectual content of the referenced resource, but presented in another format
       
  2356       "isformatof"
       
  2357     | 
       
  2358       ## The described resource is a physical or logical part of the referenced resource
       
  2359       "ispartof"
       
  2360     | 
       
  2361       ## The described resource is referenced, cited, or otherwise pointed to by the referenced resource
       
  2362       "isreferencedby"
       
  2363     | 
       
  2364       ## The described resource is supplanted, displaced, or superceded by the referenced resource
       
  2365       "isreplacedby"
       
  2366     | 
       
  2367       ## The described resource is required by the referenced resource, either physically or logically
       
  2368       "isrequiredby"
       
  2369     | 
       
  2370       ## 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
       
  2371       "isversionof"
       
  2372     | 
       
  2373       ## The described resource references, cites, or otherwise points to the referenced resource
       
  2374       "references"
       
  2375     | 
       
  2376       ## The described resource supplants, displaces, or supersedes the referenced resource
       
  2377       "replaces"
       
  2378     | 
       
  2379       ## The described resource requires the referenced resource to support its function, delivery, or coherence of content
       
  2380       "requires"
       
  2381   db.bibliorelation.type-enum.attribute =
       
  2382     
       
  2383     ## Identifies the type of relationship
       
  2384     attribute type { db.bibliorelation.type.enumeration }?
       
  2385   db.bibliorelation.type-other.attributes =
       
  2386     
       
  2387     ## Identifies the type of relationship
       
  2388     attribute type {
       
  2389       
       
  2390       ## The described resource has a non-standard relationship with the referenced resource
       
  2391       "othertype"
       
  2392     }?,
       
  2393     
       
  2394     ## A keyword that identififes the type of the non-standard relationship
       
  2395     attribute othertype { xsd:NMTOKEN }
       
  2396   db.bibliorelation.type.attribute =
       
  2397     db.bibliorelation.type-enum.attribute
       
  2398     | db.bibliorelation.type-other.attributes
       
  2399   db.bibliorelation.role.attribute = attribute role { text }
       
  2400   db.bibliorelation.attlist =
       
  2401     db.bibliorelation.role.attribute?
       
  2402     & db.common.attributes
       
  2403     & db.common.linking.attributes
       
  2404     & db.biblio.class.attribute
       
  2405     & db.bibliorelation.type.attribute
       
  2406   db.bibliorelation =
       
  2407     
       
  2408     ## The relationship of a document to another
       
  2409     element bibliorelation { db.bibliorelation.attlist, db._text }
       
  2410 }
       
  2411 div {
       
  2412   db.bibliocoverage.spacial.enumeration =
       
  2413     
       
  2414     ## The DCMI Point identifies a point in space using its geographic coordinates
       
  2415     "dcmipoint"
       
  2416     | 
       
  2417       ## ISO 3166 Codes for the representation of names of countries
       
  2418       "iso3166"
       
  2419     | 
       
  2420       ## The DCMI Box identifies a region of space using its geographic limits
       
  2421       "dcmibox"
       
  2422     | 
       
  2423       ## The Getty Thesaurus of Geographic Names
       
  2424       "tgn"
       
  2425   db.bibliocoverage.spatial-enum.attribute =
       
  2426     
       
  2427     ## Specifies the type of spatial coverage
       
  2428     attribute spatial { db.bibliocoverage.spacial.enumeration }?
       
  2429   db.bibliocoverage.spatial-other.attributes =
       
  2430     
       
  2431     ## Specifies the type of spatial coverage
       
  2432     attribute spatial {
       
  2433       
       
  2434       ## Identifies a non-standard type of coverage
       
  2435       "otherspatial"
       
  2436     }?,
       
  2437     
       
  2438     ## A keyword that identifies the type of non-standard coverage
       
  2439     attribute otherspatial { xsd:NMTOKEN }
       
  2440   db.bibliocoverage.spatial.attribute =
       
  2441     db.bibliocoverage.spatial-enum.attribute
       
  2442     | db.bibliocoverage.spatial-other.attributes
       
  2443   db.bibliocoverage.temporal.enumeration =
       
  2444     
       
  2445     ## A specification of the limits of a time interval
       
  2446     "dcmiperiod"
       
  2447     | 
       
  2448       ## W3C Encoding rules for dates and times—a profile based on ISO 8601
       
  2449       "w3c-dtf"
       
  2450   db.bibliocoverage.temporal-enum.attribute =
       
  2451     
       
  2452     ## Specifies the type of temporal coverage
       
  2453     attribute temporal { db.bibliocoverage.temporal.enumeration }?
       
  2454   db.bibliocoverage.temporal-other.attributes =
       
  2455     
       
  2456     ## Specifies the type of temporal coverage
       
  2457     attribute temporal {
       
  2458       
       
  2459       ## Specifies a non-standard type of coverage
       
  2460       "othertemporal"
       
  2461     }?,
       
  2462     
       
  2463     ## A keyword that identifies the type of non-standard coverage
       
  2464     attribute othertemporal { xsd:NMTOKEN }
       
  2465   db.bibliocoverage.temporal.attribute =
       
  2466     db.bibliocoverage.temporal-enum.attribute
       
  2467     | db.bibliocoverage.temporal-other.attributes
       
  2468   db.bibliocoverage.coverage.attrib =
       
  2469     db.bibliocoverage.spatial.attribute
       
  2470     & db.bibliocoverage.temporal.attribute
       
  2471   db.bibliocoverage.role.attribute = attribute role { text }
       
  2472   db.bibliocoverage.attlist =
       
  2473     db.bibliocoverage.role.attribute?
       
  2474     & db.common.attributes
       
  2475     & db.common.linking.attributes
       
  2476     & db.bibliocoverage.coverage.attrib
       
  2477   db.bibliocoverage =
       
  2478     
       
  2479     ## The spatial or temporal coverage of a document
       
  2480     element bibliocoverage { db.bibliocoverage.attlist, db._text }
       
  2481 }
       
  2482 div {
       
  2483   db.legalnotice.role.attribute = attribute role { text }
       
  2484   db.legalnotice.attlist =
       
  2485     db.legalnotice.role.attribute?
       
  2486     & db.common.attributes
       
  2487     & db.common.linking.attributes
       
  2488   db.legalnotice.info = db._info.title.only
       
  2489   db.legalnotice =
       
  2490     
       
  2491     ## A statement of legal obligations or requirements
       
  2492     element legalnotice {
       
  2493       db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+
       
  2494     }
       
  2495 }
       
  2496 div {
       
  2497   db.othercredit.class.enumeration =
       
  2498     
       
  2499     ## A copy editor
       
  2500     "copyeditor"
       
  2501     | 
       
  2502       ## A graphic designer
       
  2503       "graphicdesigner"
       
  2504     | 
       
  2505       ## Some other contributor
       
  2506       "other"
       
  2507     | 
       
  2508       ## A production editor
       
  2509       "productioneditor"
       
  2510     | 
       
  2511       ## A technical editor
       
  2512       "technicaleditor"
       
  2513     | 
       
  2514       ## A translator
       
  2515       "translator"
       
  2516     | 
       
  2517       ## An indexer
       
  2518       "indexer"
       
  2519     | 
       
  2520       ## A proof-reader
       
  2521       "proofreader"
       
  2522     | 
       
  2523       ## A cover designer
       
  2524       "coverdesigner"
       
  2525     | 
       
  2526       ## An interior designer
       
  2527       "interiordesigner"
       
  2528     | 
       
  2529       ## An illustrator
       
  2530       "illustrator"
       
  2531     | 
       
  2532       ## A reviewer
       
  2533       "reviewer"
       
  2534     | 
       
  2535       ## A typesetter
       
  2536       "typesetter"
       
  2537     | 
       
  2538       ## A converter (a persons responsible for conversion, not an application)
       
  2539       "conversion"
       
  2540   db.othercredit.class-enum.attribute =
       
  2541     
       
  2542     ## Identifies the nature of the contributor
       
  2543     attribute class { db.othercredit.class.enumeration }?
       
  2544   db.othercredit.class-other.attribute =
       
  2545     
       
  2546     ## Identifies the nature of the non-standard contribution
       
  2547     attribute otherclass { xsd:NMTOKEN }
       
  2548   db.othercredit.class-other.attributes =
       
  2549     
       
  2550     ## Identifies the nature of the contributor
       
  2551     attribute class {
       
  2552       
       
  2553       ## Identifies a non-standard contribution
       
  2554       "other"
       
  2555     }
       
  2556     & db.othercredit.class-other.attribute
       
  2557   db.othercredit.class.attribute =
       
  2558     db.othercredit.class-enum.attribute
       
  2559     | db.othercredit.class-other.attributes
       
  2560   db.othercredit.role.attribute = attribute role { text }
       
  2561   db.othercredit.attlist =
       
  2562     db.othercredit.role.attribute?
       
  2563     & db.common.attributes
       
  2564     & db.common.linking.attributes
       
  2565     & db.othercredit.class.attribute
       
  2566   db.othercredit =
       
  2567     
       
  2568     ## A person or entity, other than an author or editor, credited in a document
       
  2569     element othercredit {
       
  2570       db.othercredit.attlist, db.credit.contentmodel
       
  2571     }
       
  2572 }
       
  2573 div {
       
  2574   db.pagenums.role.attribute = attribute role { text }
       
  2575   db.pagenums.attlist =
       
  2576     db.pagenums.role.attribute?
       
  2577     & db.common.attributes
       
  2578     & db.common.linking.attributes
       
  2579   db.pagenums =
       
  2580     
       
  2581     ## The numbers of the pages in a book, for use in a bibliographic entry
       
  2582     element pagenums { db.pagenums.attlist, db._text }
       
  2583 }
       
  2584 div {
       
  2585   db.contrib.role.attribute = attribute role { text }
       
  2586   db.contrib.attlist =
       
  2587     db.contrib.role.attribute?
       
  2588     & db.common.attributes
       
  2589     & db.common.linking.attributes
       
  2590   db.contrib =
       
  2591     
       
  2592     ## A summary of the contributions made to a document by a credited source
       
  2593     element contrib { db.contrib.attlist, db._text }
       
  2594 }
       
  2595 div {
       
  2596   db.honorific.role.attribute = attribute role { text }
       
  2597   db.honorific.attlist =
       
  2598     db.honorific.role.attribute?
       
  2599     & db.common.attributes
       
  2600     & db.common.linking.attributes
       
  2601   db.honorific =
       
  2602     
       
  2603     ## The title of a person
       
  2604     element honorific { db.honorific.attlist, db._text }
       
  2605 }
       
  2606 div {
       
  2607   db.firstname.role.attribute = attribute role { text }
       
  2608   db.firstname.attlist =
       
  2609     db.firstname.role.attribute?
       
  2610     & db.common.attributes
       
  2611     & db.common.linking.attributes
       
  2612   db.firstname =
       
  2613     
       
  2614     ## A given name of a person
       
  2615     element firstname { db.firstname.attlist, db._text }
       
  2616 }
       
  2617 div {
       
  2618   db.givenname.role.attribute = attribute role { text }
       
  2619   db.givenname.attlist =
       
  2620     db.givenname.role.attribute?
       
  2621     & db.common.attributes
       
  2622     & db.common.linking.attributes
       
  2623   db.givenname =
       
  2624     
       
  2625     ## The given name of a person
       
  2626     element givenname { db.givenname.attlist, db._text }
       
  2627 }
       
  2628 div {
       
  2629   db.surname.role.attribute = attribute role { text }
       
  2630   db.surname.attlist =
       
  2631     db.surname.role.attribute?
       
  2632     & db.common.attributes
       
  2633     & db.common.linking.attributes
       
  2634   db.surname =
       
  2635     
       
  2636     ## An inherited or family name; in western cultures the last name
       
  2637     element surname { db.surname.attlist, db._text }
       
  2638 }
       
  2639 div {
       
  2640   db.lineage.role.attribute = attribute role { text }
       
  2641   db.lineage.attlist =
       
  2642     db.lineage.role.attribute?
       
  2643     & db.common.attributes
       
  2644     & db.common.linking.attributes
       
  2645   db.lineage =
       
  2646     
       
  2647     ## The portion of a person's name indicating a relationship to ancestors
       
  2648     element lineage { db.lineage.attlist, db._text }
       
  2649 }
       
  2650 div {
       
  2651   db.othername.role.attribute = attribute role { text }
       
  2652   db.othername.attlist =
       
  2653     db.othername.role.attribute?
       
  2654     & db.common.attributes
       
  2655     & db.common.linking.attributes
       
  2656   db.othername =
       
  2657     
       
  2658     ## A component of a person's name that is not a first name, surname, or lineage
       
  2659     element othername { db.othername.attlist, db._text }
       
  2660 }
       
  2661 div {
       
  2662   db.printhistory.role.attribute = attribute role { text }
       
  2663   db.printhistory.attlist =
       
  2664     db.printhistory.role.attribute?
       
  2665     & db.common.attributes
       
  2666     & db.common.linking.attributes
       
  2667   db.printhistory =
       
  2668     
       
  2669     ## The printing history of a document
       
  2670     element printhistory { db.printhistory.attlist, db.para.blocks+ }
       
  2671 }
       
  2672 div {
       
  2673   db.pubdate.role.attribute = attribute role { text }
       
  2674   db.pubdate.attlist =
       
  2675     db.pubdate.role.attribute?
       
  2676     & db.common.attributes
       
  2677     & db.common.linking.attributes
       
  2678   db.pubdate =
       
  2679     
       
  2680     ## The date of publication of a document
       
  2681     element pubdate { db.pubdate.attlist, db.date.contentmodel }
       
  2682 }
       
  2683 div {
       
  2684   db.publisher.role.attribute = attribute role { text }
       
  2685   db.publisher.attlist =
       
  2686     db.publisher.role.attribute?
       
  2687     & db.common.attributes
       
  2688     & db.common.linking.attributes
       
  2689   db.publisher =
       
  2690     
       
  2691     ## The publisher of a document
       
  2692     element publisher {
       
  2693       db.publisher.attlist, db.publishername, db.address*
       
  2694     }
       
  2695 }
       
  2696 div {
       
  2697   db.publishername.role.attribute = attribute role { text }
       
  2698   db.publishername.attlist =
       
  2699     db.publishername.role.attribute?
       
  2700     & db.common.attributes
       
  2701     & db.common.linking.attributes
       
  2702   db.publishername =
       
  2703     
       
  2704     ## The name of the publisher of a document
       
  2705     element publishername { db.publishername.attlist, db._text }
       
  2706 }
       
  2707 div {
       
  2708   db.releaseinfo.role.attribute = attribute role { text }
       
  2709   db.releaseinfo.attlist =
       
  2710     db.releaseinfo.role.attribute?
       
  2711     & db.common.attributes
       
  2712     & db.common.linking.attributes
       
  2713   db.releaseinfo =
       
  2714     
       
  2715     ## Information about a particular release of a document
       
  2716     element releaseinfo { db.releaseinfo.attlist, db._text }
       
  2717 }
       
  2718 div {
       
  2719   db.revhistory.role.attribute = attribute role { text }
       
  2720   db.revhistory.attlist =
       
  2721     db.revhistory.role.attribute?
       
  2722     & db.common.attributes
       
  2723     & db.common.linking.attributes
       
  2724   db.revhistory.info = db._info.title.only
       
  2725   db.revhistory =
       
  2726     
       
  2727     ## A history of the revisions to a document
       
  2728     element revhistory {
       
  2729       db.revhistory.attlist, db.revhistory.info, db.revision+
       
  2730     }
       
  2731 }
       
  2732 div {
       
  2733   db.revision.role.attribute = attribute role { text }
       
  2734   db.revision.attlist =
       
  2735     db.revision.role.attribute?
       
  2736     & db.common.attributes
       
  2737     & db.common.linking.attributes
       
  2738   db.revision =
       
  2739     
       
  2740     ## An entry describing a single revision in the history of the revisions to a document
       
  2741     element revision {
       
  2742       db.revision.attlist,
       
  2743       db.revnumber?,
       
  2744       db.date,
       
  2745       (db.authorinitials | db.author)*,
       
  2746       (db.revremark | db.revdescription)?
       
  2747     }
       
  2748 }
       
  2749 div {
       
  2750   db.revnumber.role.attribute = attribute role { text }
       
  2751   db.revnumber.attlist =
       
  2752     db.revnumber.role.attribute?
       
  2753     & db.common.attributes
       
  2754     & db.common.linking.attributes
       
  2755   db.revnumber =
       
  2756     
       
  2757     ## A document revision number
       
  2758     element revnumber { db.revnumber.attlist, db._text }
       
  2759 }
       
  2760 div {
       
  2761   db.revremark.role.attribute = attribute role { text }
       
  2762   db.revremark.attlist =
       
  2763     db.revremark.role.attribute?
       
  2764     & db.common.attributes
       
  2765     & db.common.linking.attributes
       
  2766   db.revremark =
       
  2767     
       
  2768     ## A description of a revision to a document
       
  2769     element revremark { db.revremark.attlist, db._text }
       
  2770 }
       
  2771 div {
       
  2772   db.revdescription.role.attribute = attribute role { text }
       
  2773   db.revdescription.attlist =
       
  2774     db.revdescription.role.attribute?
       
  2775     & db.common.attributes
       
  2776     & db.common.linking.attributes
       
  2777   db.revdescription =
       
  2778     
       
  2779     ## A extended description of a revision to a document
       
  2780     element revdescription { db.revdescription.attlist, db.all.blocks* }
       
  2781 }
       
  2782 div {
       
  2783   db.seriesvolnums.role.attribute = attribute role { text }
       
  2784   db.seriesvolnums.attlist =
       
  2785     db.seriesvolnums.role.attribute?
       
  2786     & db.common.attributes
       
  2787     & db.common.linking.attributes
       
  2788   db.seriesvolnums =
       
  2789     
       
  2790     ## Numbers of the volumes in a series of books
       
  2791     element seriesvolnums { db.seriesvolnums.attlist, db._text }
       
  2792 }
       
  2793 div {
       
  2794   db.volumenum.role.attribute = attribute role { text }
       
  2795   db.volumenum.attlist =
       
  2796     db.volumenum.role.attribute?
       
  2797     & db.common.attributes
       
  2798     & db.common.linking.attributes
       
  2799   db.volumenum =
       
  2800     
       
  2801     ## The volume number of a document in a set (as of books in a set or articles in a journal)
       
  2802     element volumenum { db.volumenum.attlist, db._text }
       
  2803 }
       
  2804 div {
       
  2805   db.issuenum.role.attribute = attribute role { text }
       
  2806   db.issuenum.attlist =
       
  2807     db.issuenum.role.attribute?
       
  2808     & db.common.attributes
       
  2809     & db.common.linking.attributes
       
  2810   db.issuenum =
       
  2811     
       
  2812     ## The number of an issue of a journal
       
  2813     element issuenum { db.issuenum.attlist, db._text }
       
  2814 }
       
  2815 div {
       
  2816   db.package.role.attribute = attribute role { text }
       
  2817   db.package.attlist =
       
  2818     db.package.role.attribute?
       
  2819     & db.common.attributes
       
  2820     & db.common.linking.attributes
       
  2821   db.package =
       
  2822     
       
  2823     ## A software or application package
       
  2824     element package { db.package.attlist, db._text }
       
  2825 }
       
  2826 div {
       
  2827   db.email.role.attribute = attribute role { text }
       
  2828   db.email.attlist =
       
  2829     db.email.role.attribute?
       
  2830     & db.common.attributes
       
  2831     & db.common.linking.attributes
       
  2832   db.email =
       
  2833     
       
  2834     ## An email address
       
  2835     element email { db.email.attlist, db._text }
       
  2836 }
       
  2837 div {
       
  2838   db.lineannotation.role.attribute = attribute role { text }
       
  2839   db.lineannotation.attlist =
       
  2840     db.lineannotation.role.attribute?
       
  2841     & db.common.attributes
       
  2842     & db.common.linking.attributes
       
  2843   db.lineannotation =
       
  2844     
       
  2845     ## A comment on a line in a verbatim listing
       
  2846     element lineannotation { db.lineannotation.attlist, db._text }
       
  2847 }
       
  2848 div {
       
  2849   db.parameter.class.enumeration =
       
  2850     
       
  2851     ## A command
       
  2852     "command"
       
  2853     | 
       
  2854       ## A function
       
  2855       "function"
       
  2856     | 
       
  2857       ## An option
       
  2858       "option"
       
  2859   db.parameter.class.attribute =
       
  2860     
       
  2861     ## Identifies the class of parameter
       
  2862     attribute class { db.parameter.class.enumeration }
       
  2863   db.parameter.role.attribute = attribute role { text }
       
  2864   db.parameter.attlist =
       
  2865     db.parameter.role.attribute?
       
  2866     & db.common.attributes
       
  2867     & db.common.linking.attributes
       
  2868     & db.parameter.class.attribute?
       
  2869   db.parameter =
       
  2870     
       
  2871     ## A value or a symbolic reference to a value
       
  2872     element parameter { db.parameter.attlist, db._text }
       
  2873 }
       
  2874 db.replaceable.inlines = db._text | db.co
       
  2875 div {
       
  2876   db.replaceable.class.enumeration =
       
  2877     
       
  2878     ## A command
       
  2879     "command"
       
  2880     | 
       
  2881       ## A function
       
  2882       "function"
       
  2883     | 
       
  2884       ## An option
       
  2885       "option"
       
  2886     | 
       
  2887       ## A parameter
       
  2888       "parameter"
       
  2889   db.replaceable.class.attribute =
       
  2890     
       
  2891     ## Identifies the nature of the replaceable text
       
  2892     attribute class { db.replaceable.class.enumeration }
       
  2893   db.replaceable.role.attribute = attribute role { text }
       
  2894   db.replaceable.attlist =
       
  2895     db.replaceable.role.attribute?
       
  2896     & db.common.attributes
       
  2897     & db.common.linking.attributes
       
  2898     & db.replaceable.class.attribute?
       
  2899   db.replaceable =
       
  2900     
       
  2901     ## Content that may or must be replaced by the user
       
  2902     element replaceable {
       
  2903       db.replaceable.attlist, db.replaceable.inlines*
       
  2904     }
       
  2905 }
       
  2906 div {
       
  2907   db.uri.type.attribute =
       
  2908     
       
  2909     ## Identifies the type of URI specified
       
  2910     attribute type { text }?
       
  2911   db.uri.role.attribute = attribute role { text }
       
  2912   db.uri.attlist =
       
  2913     db.uri.role.attribute?
       
  2914     & db.common.attributes
       
  2915     & db.common.linking.attributes
       
  2916     & db.uri.type.attribute
       
  2917   db.uri =
       
  2918     
       
  2919     ## A Uniform Resource Identifier
       
  2920     element uri { db.uri.attlist, db._text }
       
  2921 }
       
  2922 div {
       
  2923   db.abbrev.role.attribute = attribute role { text }
       
  2924   db.abbrev.attlist =
       
  2925     db.abbrev.role.attribute?
       
  2926     & db.common.attributes
       
  2927     & db.common.linking.attributes
       
  2928   db.abbrev =
       
  2929     
       
  2930     ## An abbreviation, especially one followed by a period
       
  2931     element abbrev {
       
  2932       db.abbrev.attlist,
       
  2933       (db._text | db.superscript | db.subscript | db.trademark)*
       
  2934     }
       
  2935 }
       
  2936 div {
       
  2937   db.acronym.role.attribute = attribute role { text }
       
  2938   db.acronym.attlist =
       
  2939     db.acronym.role.attribute?
       
  2940     & db.common.attributes
       
  2941     & db.common.linking.attributes
       
  2942   db.acronym =
       
  2943     
       
  2944     ## An often pronounceable word made from the initial (or selected) letters of a name or phrase
       
  2945     element acronym {
       
  2946       db.acronym.attlist,
       
  2947       (db._text | db.superscript | db.subscript | db.trademark)*
       
  2948     }
       
  2949 }
       
  2950 div {
       
  2951   db.citation.role.attribute = attribute role { text }
       
  2952   db.citation.attlist =
       
  2953     db.citation.role.attribute?
       
  2954     & db.common.attributes
       
  2955     & db.common.linking.attributes
       
  2956   db.citation =
       
  2957     
       
  2958     ## An inline bibliographic reference to another published work
       
  2959     element citation { db.citation.attlist, db.all.inlines* }
       
  2960 }
       
  2961 div {
       
  2962   db.citerefentry.role.attribute = attribute role { text }
       
  2963   db.citerefentry.attlist =
       
  2964     db.citerefentry.role.attribute?
       
  2965     & db.common.attributes
       
  2966     & db.common.linking.attributes
       
  2967   db.citerefentry =
       
  2968     
       
  2969     ## A citation to a reference page
       
  2970     element citerefentry {
       
  2971       db.citerefentry.attlist, db.refentrytitle, db.manvolnum?
       
  2972     }
       
  2973 }
       
  2974 div {
       
  2975   db.refentrytitle.role.attribute = attribute role { text }
       
  2976   db.refentrytitle.attlist =
       
  2977     db.refentrytitle.role.attribute?
       
  2978     & db.common.attributes
       
  2979     & db.common.linking.attributes
       
  2980   db.refentrytitle =
       
  2981     
       
  2982     ## The title of a reference page
       
  2983     element refentrytitle { db.refentrytitle.attlist, db.all.inlines* }
       
  2984 }
       
  2985 div {
       
  2986   db.manvolnum.role.attribute = attribute role { text }
       
  2987   db.manvolnum.attlist =
       
  2988     db.manvolnum.role.attribute?
       
  2989     & db.common.attributes
       
  2990     & db.common.linking.attributes
       
  2991   db.manvolnum =
       
  2992     
       
  2993     ## A reference volume number
       
  2994     element manvolnum { db.manvolnum.attlist, db._text }
       
  2995 }
       
  2996 div {
       
  2997   db.citetitle.pubwork.enumeration =
       
  2998     
       
  2999     ## An article
       
  3000     "article"
       
  3001     | 
       
  3002       ## A bulletin board system
       
  3003       "bbs"
       
  3004     | 
       
  3005       ## A book
       
  3006       "book"
       
  3007     | 
       
  3008       ## A CD-ROM
       
  3009       "cdrom"
       
  3010     | 
       
  3011       ## A chapter (as of a book)
       
  3012       "chapter"
       
  3013     | 
       
  3014       ## A DVD
       
  3015       "dvd"
       
  3016     | 
       
  3017       ## An email message
       
  3018       "emailmessage"
       
  3019     | 
       
  3020       ## A gopher page
       
  3021       "gopher"
       
  3022     | 
       
  3023       ## A journal
       
  3024       "journal"
       
  3025     | 
       
  3026       ## A manuscript
       
  3027       "manuscript"
       
  3028     | 
       
  3029       ## A posting to a newsgroup
       
  3030       "newsposting"
       
  3031     | 
       
  3032       ## A part (as of a book)
       
  3033       "part"
       
  3034     | 
       
  3035       ## A reference entry
       
  3036       "refentry"
       
  3037     | 
       
  3038       ## A section (as of a book or article)
       
  3039       "section"
       
  3040     | 
       
  3041       ## A series
       
  3042       "series"
       
  3043     | 
       
  3044       ## A set (as of books)
       
  3045       "set"
       
  3046     | 
       
  3047       ## A web page
       
  3048       "webpage"
       
  3049     | 
       
  3050       ## A wiki page
       
  3051       "wiki"
       
  3052   db.citetitle.pubwork.attribute =
       
  3053     
       
  3054     ## Identifies the nature of the publication being cited
       
  3055     attribute pubwork { db.citetitle.pubwork.enumeration }
       
  3056   db.citetitle.role.attribute = attribute role { text }
       
  3057   db.citetitle.attlist =
       
  3058     db.citetitle.role.attribute?
       
  3059     & db.common.attributes
       
  3060     & db.common.linking.attributes
       
  3061     & db.citetitle.pubwork.attribute?
       
  3062   db.citetitle =
       
  3063     
       
  3064     ## The title of a cited work
       
  3065     element citetitle { db.citetitle.attlist, db.all.inlines* }
       
  3066 }
       
  3067 div {
       
  3068   db.emphasis.role.attribute = attribute role { text }
       
  3069   db.emphasis.attlist =
       
  3070     db.emphasis.role.attribute?
       
  3071     & db.common.attributes
       
  3072     & db.common.linking.attributes
       
  3073   db.emphasis =
       
  3074     
       
  3075     ## Emphasized text
       
  3076     element emphasis { db.emphasis.attlist, db.all.inlines* }
       
  3077 }
       
  3078 div {
       
  3079   db._emphasis =
       
  3080     
       
  3081     ## A limited span of emphasized text
       
  3082     element emphasis { db.emphasis.attlist, db._text }
       
  3083 }
       
  3084 div {
       
  3085   db.foreignphrase.role.attribute = attribute role { text }
       
  3086   db.foreignphrase.attlist =
       
  3087     db.foreignphrase.role.attribute?
       
  3088     & db.common.attributes
       
  3089     & db.common.linking.attributes
       
  3090   db.foreignphrase =
       
  3091     
       
  3092     ## A word or phrase in a language other than the primary language of the document
       
  3093     element foreignphrase {
       
  3094       db.foreignphrase.attlist, (text | db.general.inlines)*
       
  3095     }
       
  3096 }
       
  3097 div {
       
  3098   db._foreignphrase.role.attribute = attribute role { text }
       
  3099   db._foreignphrase.attlist =
       
  3100     db._foreignphrase.role.attribute?
       
  3101     & db.common.attributes
       
  3102     & db.common.linking.attributes
       
  3103   db._foreignphrase =
       
  3104     
       
  3105     ## A limited word or phrase in a language other than the primary language of the document
       
  3106     element foreignphrase { db._foreignphrase.attlist, db._text }
       
  3107 }
       
  3108 div {
       
  3109   db.phrase.role.attribute = attribute role { text }
       
  3110   db.phrase.attlist =
       
  3111     db.phrase.role.attribute?
       
  3112     & db.common.attributes
       
  3113     & db.common.linking.attributes
       
  3114   db.phrase =
       
  3115     
       
  3116     ## A span of text
       
  3117     element phrase { db.phrase.attlist, db.all.inlines* }
       
  3118 }
       
  3119 div {
       
  3120   db._phrase =
       
  3121     
       
  3122     ## A limited span of text
       
  3123     element phrase { db.phrase.attlist, db._text }
       
  3124 }
       
  3125 div {
       
  3126   db.quote.role.attribute = attribute role { text }
       
  3127   db.quote.attlist =
       
  3128     db.quote.role.attribute?
       
  3129     & db.common.attributes
       
  3130     & db.common.linking.attributes
       
  3131   db.quote =
       
  3132     
       
  3133     ## An inline quotation
       
  3134     element quote { db.quote.attlist, db.all.inlines* }
       
  3135 }
       
  3136 div {
       
  3137   db._quote.role.attribute = attribute role { text }
       
  3138   db._quote.attlist =
       
  3139     db._quote.role.attribute?
       
  3140     & db.common.attributes
       
  3141     & db.common.linking.attributes
       
  3142   db._quote =
       
  3143     
       
  3144     ## A limited inline quotation
       
  3145     element quote { db._quote.attlist, db._text }
       
  3146 }
       
  3147 div {
       
  3148   db.subscript.role.attribute = attribute role { text }
       
  3149   db.subscript.attlist =
       
  3150     db.subscript.role.attribute?
       
  3151     & db.common.attributes
       
  3152     & db.common.linking.attributes
       
  3153   db.subscript =
       
  3154     
       
  3155     ## A subscript (as in H2
       
  3156     ## O, the molecular formula for water)
       
  3157     element subscript { db.subscript.attlist, db._text }
       
  3158 }
       
  3159 div {
       
  3160   db.superscript.role.attribute = attribute role { text }
       
  3161   db.superscript.attlist =
       
  3162     db.superscript.role.attribute?
       
  3163     & db.common.attributes
       
  3164     & db.common.linking.attributes
       
  3165   db.superscript =
       
  3166     
       
  3167     ## A superscript (as in x2
       
  3168     ## , the mathematical notation for x multiplied by itself)
       
  3169     element superscript { db.superscript.attlist, db._text }
       
  3170 }
       
  3171 div {
       
  3172   db.trademark.class.enumeration =
       
  3173     
       
  3174     ## A copyright
       
  3175     "copyright"
       
  3176     | 
       
  3177       ## A registered copyright
       
  3178       "registered"
       
  3179     | 
       
  3180       ## A service
       
  3181       "service"
       
  3182     | 
       
  3183       ## A trademark
       
  3184       "trade"
       
  3185   db.trademark.class.attribute =
       
  3186     
       
  3187     ## Identifies the class of trade mark
       
  3188     attribute class { db.trademark.class.enumeration }
       
  3189   db.trademark.role.attribute = attribute role { text }
       
  3190   db.trademark.attlist =
       
  3191     db.trademark.role.attribute?
       
  3192     & db.common.attributes
       
  3193     & db.common.linking.attributes
       
  3194     & db.trademark.class.attribute?
       
  3195   db.trademark =
       
  3196     
       
  3197     ## A trademark
       
  3198     element trademark { db.trademark.attlist, db._text }
       
  3199 }
       
  3200 div {
       
  3201   db.wordasword.role.attribute = attribute role { text }
       
  3202   db.wordasword.attlist =
       
  3203     db.wordasword.role.attribute?
       
  3204     & db.common.attributes
       
  3205     & db.common.linking.attributes
       
  3206   db.wordasword =
       
  3207     
       
  3208     ## A word meant specifically as a word and not representing anything else
       
  3209     element wordasword { db.wordasword.attlist, db._text }
       
  3210 }
       
  3211 div {
       
  3212   db.footnoteref.role.attribute = attribute role { text }
       
  3213   db.footnoteref.label.attribute = db.label.attribute
       
  3214   db.footnoteref.attlist =
       
  3215     db.footnoteref.role.attribute?
       
  3216     & db.common.attributes
       
  3217     & db.linkend.attribute
       
  3218     & db.footnoteref.label.attribute?
       
  3219   db.footnoteref =
       
  3220     
       
  3221     ## A cross reference to a footnote (a footnote mark)
       
  3222     element footnoteref { db.footnoteref.attlist, empty }
       
  3223 }
       
  3224 div {
       
  3225   db.xref.role.attribute = attribute role { text }
       
  3226   db.xref.xrefstyle.attribute = db.xrefstyle.attribute
       
  3227   db.xref.endterm.attribute = db.endterm.attribute
       
  3228   db.xref.attlist =
       
  3229     db.xref.role.attribute?
       
  3230     & db.common.attributes
       
  3231     & db.common.req.linking.attributes
       
  3232     & db.xref.xrefstyle.attribute?
       
  3233     & db.xref.endterm.attribute?
       
  3234   db.xref =
       
  3235     
       
  3236     ## A cross reference to another part of the document
       
  3237     element xref { db.xref.attlist, empty }
       
  3238 }
       
  3239 div {
       
  3240   db.link.role.attribute = attribute role { text }
       
  3241   db.link.xrefstyle.attribute = db.xrefstyle.attribute
       
  3242   db.link.endterm.attribute = db.endterm.attribute
       
  3243   db.link.attlist =
       
  3244     db.link.role.attribute?
       
  3245     & db.common.attributes
       
  3246     & db.common.req.linking.attributes
       
  3247     & db.link.xrefstyle.attribute?
       
  3248     & db.link.endterm.attribute?
       
  3249   db.link =
       
  3250     
       
  3251     ## A hypertext link
       
  3252     element link { db.link.attlist, db.all.inlines* }
       
  3253 }
       
  3254 div {
       
  3255   db.olink.role.attribute = attribute role { text }
       
  3256   db.olink.xrefstyle.attribute = db.xrefstyle.attribute
       
  3257   db.olink.localinfo.attribute =
       
  3258     
       
  3259     ## Holds additional information that may be used by the application when resolving the link
       
  3260     attribute localinfo { text }
       
  3261   db.olink.targetdoc.attribute =
       
  3262     
       
  3263     ## Specifies the URI of the document in which the link target appears
       
  3264     attribute targetdoc { xsd:anyURI }
       
  3265   db.olink.targetptr.attribute =
       
  3266     
       
  3267     ## Specifies the location of the link target in the document
       
  3268     attribute targetptr { text }
       
  3269   db.olink.type.attribute =
       
  3270     
       
  3271     ## Identifies application-specific customization of the link behavior
       
  3272     attribute type { text }
       
  3273   db.olink.attlist =
       
  3274     db.common.attributes
       
  3275     & db.olink.targetdoc.attribute?
       
  3276     & db.olink.role.attribute?
       
  3277     & db.olink.xrefstyle.attribute?
       
  3278     & db.olink.localinfo.attribute?
       
  3279     & db.olink.targetptr.attribute?
       
  3280     & db.olink.type.attribute?
       
  3281   db.olink =
       
  3282     
       
  3283     ## A link that addresses its target indirectly
       
  3284     element olink { db.olink.attlist, db.all.inlines* }
       
  3285 }
       
  3286 div {
       
  3287   db.anchor.role.attribute = attribute role { text }
       
  3288   db.anchor.attlist =
       
  3289     db.anchor.role.attribute? & db.common.idreq.attributes
       
  3290   db.anchor =
       
  3291     
       
  3292     ## A spot in the document
       
  3293     element anchor { db.anchor.attlist, empty }
       
  3294 }
       
  3295 div {
       
  3296   db.alt.role.attribute = attribute role { text }
       
  3297   db.alt.attlist = db.alt.role.attribute? & db.common.attributes
       
  3298   db.alt =
       
  3299     
       
  3300     ## A text-only annotation, often used for accessibility
       
  3301     element alt { db.alt.attlist, (text | db.inlinemediaobject)* }
       
  3302 }
       
  3303 db.status.attribute =
       
  3304   
       
  3305   ## Identifies the editorial or publication status of the element on which it occurs
       
  3306   attribute status { text }
       
  3307 db.toplevel.sections =
       
  3308   ((db.section+, db.simplesect*) | db.simplesect+)
       
  3309   | (db.sect1+, db.simplesect*)
       
  3310   | db.refentry+
       
  3311 db.toplevel.blocks.or.sections =
       
  3312   (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections
       
  3313 db.recursive.sections =
       
  3314   ((db.section+, db.simplesect*) | db.simplesect+)
       
  3315   | db.refentry+
       
  3316 db.recursive.blocks.or.sections =
       
  3317   (db.all.blocks+, db.recursive.sections?) | db.recursive.sections
       
  3318 db.divisions = db.part | db.reference
       
  3319 db.components =
       
  3320   db.dedication
       
  3321   | db.acknowledgements
       
  3322   | db.preface
       
  3323   | db.chapter
       
  3324   | db.appendix
       
  3325   | db.article
       
  3326   | db.colophon
       
  3327 db.navigation.components =
       
  3328   notAllowed | db.glossary | db.bibliography | db.index | db.toc
       
  3329 db.component.contentmodel =
       
  3330   db.navigation.components*,
       
  3331   db.toplevel.blocks.or.sections,
       
  3332   db.navigation.components*
       
  3333 db.setindex.components = notAllowed | db.setindex
       
  3334 db.toc.components = notAllowed | db.toc
       
  3335 db.set.components = db.set | db.book
       
  3336 div {
       
  3337   db.set.status.attribute = db.status.attribute
       
  3338   db.set.role.attribute = attribute role { text }
       
  3339   db.set.attlist =
       
  3340     db.set.role.attribute?
       
  3341     & db.common.attributes
       
  3342     & db.common.linking.attributes
       
  3343     & db.label.attribute?
       
  3344     & db.set.status.attribute?
       
  3345   db.set.info = db._info.title.req
       
  3346   db.set =
       
  3347     
       
  3348     ## A collection of books
       
  3349     element set {
       
  3350       db.set.attlist,
       
  3351       db.set.info,
       
  3352       db.toc.components?,
       
  3353       db.set.components+,
       
  3354       db.setindex.components?
       
  3355     }
       
  3356 }
       
  3357 db.book.components =
       
  3358   (db.navigation.components | db.components | db.divisions)* | db.topic*
       
  3359 div {
       
  3360   db.book.status.attribute = db.status.attribute
       
  3361   db.book.role.attribute = attribute role { text }
       
  3362   db.book.attlist =
       
  3363     db.book.role.attribute?
       
  3364     & db.common.attributes
       
  3365     & db.common.linking.attributes
       
  3366     & db.label.attribute?
       
  3367     & db.book.status.attribute?
       
  3368   db.book.info = db._info
       
  3369   db.book =
       
  3370     
       
  3371     ## A book
       
  3372     element book { db.book.attlist, db.book.info, db.book.components }
       
  3373 }
       
  3374 div {
       
  3375   db.dedication.status.attribute = db.status.attribute
       
  3376   db.dedication.role.attribute = attribute role { text }
       
  3377   db.dedication.attlist =
       
  3378     db.dedication.role.attribute?
       
  3379     & db.common.attributes
       
  3380     & db.common.linking.attributes
       
  3381     & db.label.attribute?
       
  3382     & db.dedication.status.attribute?
       
  3383   db.dedication.info = db._info
       
  3384   db.dedication =
       
  3385     
       
  3386     ## The dedication of a book or other component
       
  3387     element dedication {
       
  3388       db.dedication.attlist, db.dedication.info, db.all.blocks+
       
  3389     }
       
  3390 }
       
  3391 div {
       
  3392   db.acknowledgements.status.attribute = db.status.attribute
       
  3393   db.acknowledgements.role.attribute = attribute role { text }
       
  3394   db.acknowledgements.attlist =
       
  3395     db.acknowledgements.role.attribute?
       
  3396     & db.common.attributes
       
  3397     & db.common.linking.attributes
       
  3398     & db.label.attribute?
       
  3399     & db.acknowledgements.status.attribute?
       
  3400   db.acknowledgements.info = db._info
       
  3401   db.acknowledgements =
       
  3402     
       
  3403     ## Acknowledgements of a book or other component
       
  3404     element acknowledgements {
       
  3405       db.acknowledgements.attlist,
       
  3406       db.acknowledgements.info,
       
  3407       db.all.blocks+
       
  3408     }
       
  3409 }
       
  3410 div {
       
  3411   db.colophon.status.attribute = db.status.attribute
       
  3412   db.colophon.role.attribute = attribute role { text }
       
  3413   db.colophon.attlist =
       
  3414     db.colophon.role.attribute?
       
  3415     & db.common.attributes
       
  3416     & db.common.linking.attributes
       
  3417     & db.label.attribute?
       
  3418     & db.colophon.status.attribute?
       
  3419   db.colophon.info = db._info
       
  3420   db.colophon =
       
  3421     
       
  3422     ## Text at the back of a book describing facts about its production
       
  3423     element colophon {
       
  3424       db.colophon.attlist,
       
  3425       db.colophon.info,
       
  3426       ((db.all.blocks+, db.simplesect*)
       
  3427        | (db.all.blocks*, db.simplesect+))
       
  3428     }
       
  3429 }
       
  3430 div {
       
  3431   db.appendix.status.attribute = db.status.attribute
       
  3432   db.appendix.role.attribute = attribute role { text }
       
  3433   db.appendix.attlist =
       
  3434     db.appendix.role.attribute?
       
  3435     & db.common.attributes
       
  3436     & db.common.linking.attributes
       
  3437     & db.label.attribute?
       
  3438     & db.appendix.status.attribute?
       
  3439   db.appendix.info = db._info.title.req
       
  3440   db.appendix =
       
  3441     
       
  3442     ## An appendix in a book or article
       
  3443     element appendix {
       
  3444       db.appendix.attlist, db.appendix.info, db.component.contentmodel
       
  3445     }
       
  3446 }
       
  3447 div {
       
  3448   db.chapter.status.attribute = db.status.attribute
       
  3449   db.chapter.role.attribute = attribute role { text }
       
  3450   db.chapter.attlist =
       
  3451     db.chapter.role.attribute?
       
  3452     & db.common.attributes
       
  3453     & db.common.linking.attributes
       
  3454     & db.label.attribute?
       
  3455     & db.chapter.status.attribute?
       
  3456   db.chapter.info = db._info.title.req
       
  3457   db.chapter =
       
  3458     
       
  3459     ## A chapter, as of a book
       
  3460     element chapter {
       
  3461       db.chapter.attlist, db.chapter.info, db.component.contentmodel
       
  3462     }
       
  3463 }
       
  3464 db.part.components =
       
  3465   (db.navigation.components | db.components)
       
  3466   | (db.refentry | db.reference)
       
  3467 db.part.contentmodel = db.part.components+ | db.topic+
       
  3468 div {
       
  3469   db.part.status.attribute = db.status.attribute
       
  3470   db.part.role.attribute = attribute role { text }
       
  3471   db.part.attlist =
       
  3472     db.part.role.attribute?
       
  3473     & db.common.attributes
       
  3474     & db.common.linking.attributes
       
  3475     & db.label.attribute?
       
  3476     & db.part.status.attribute?
       
  3477   db.part.info = db._info.title.req
       
  3478   db.part =
       
  3479     
       
  3480     ## A division in a book
       
  3481     element part {
       
  3482       db.part.attlist, db.part.info, db.partintro?, db.part.contentmodel
       
  3483     }
       
  3484 }
       
  3485 div {
       
  3486   db.preface.status.attribute = db.status.attribute
       
  3487   db.preface.role.attribute = attribute role { text }
       
  3488   db.preface.attlist =
       
  3489     db.preface.role.attribute?
       
  3490     & db.common.attributes
       
  3491     & db.common.linking.attributes
       
  3492     & db.label.attribute?
       
  3493     & db.preface.status.attribute?
       
  3494   db.preface.info = db._info.title.req
       
  3495   db.preface =
       
  3496     
       
  3497     ## Introductory matter preceding the first chapter of a book
       
  3498     element preface {
       
  3499       db.preface.attlist, db.preface.info, db.component.contentmodel
       
  3500     }
       
  3501 }
       
  3502 div {
       
  3503   db.partintro.status.attribute = db.status.attribute
       
  3504   db.partintro.role.attribute = attribute role { text }
       
  3505   db.partintro.attlist =
       
  3506     db.partintro.role.attribute?
       
  3507     & db.common.attributes
       
  3508     & db.common.linking.attributes
       
  3509     & db.label.attribute?
       
  3510     & db.partintro.status.attribute?
       
  3511   db.partintro.info = db._info
       
  3512   db.partintro =
       
  3513     
       
  3514     ## An introduction to the contents of a part
       
  3515     element partintro {
       
  3516       db.partintro.attlist,
       
  3517       db.partintro.info,
       
  3518       db.toplevel.blocks.or.sections
       
  3519     }
       
  3520 }
       
  3521 div {
       
  3522   db.section.status.attribute = db.status.attribute
       
  3523   db.section.role.attribute = attribute role { text }
       
  3524   db.section.attlist =
       
  3525     db.section.role.attribute?
       
  3526     & db.common.attributes
       
  3527     & db.common.linking.attributes
       
  3528     & db.label.attribute?
       
  3529     & db.section.status.attribute?
       
  3530   db.section.info = db._info.title.req
       
  3531   db.section =
       
  3532     
       
  3533     ## A recursive section
       
  3534     element section {
       
  3535       db.section.attlist,
       
  3536       db.section.info,
       
  3537       db.recursive.blocks.or.sections,
       
  3538       db.navigation.components*
       
  3539     }
       
  3540 }
       
  3541 div {
       
  3542   db.simplesect.status.attribute = db.status.attribute
       
  3543   db.simplesect.role.attribute = attribute role { text }
       
  3544   db.simplesect.attlist =
       
  3545     db.simplesect.role.attribute?
       
  3546     & db.common.attributes
       
  3547     & db.common.linking.attributes
       
  3548     & db.label.attribute?
       
  3549     & db.simplesect.status.attribute?
       
  3550   db.simplesect.info = db._info.title.req
       
  3551   db.simplesect =
       
  3552     
       
  3553     ## A section of a document with no subdivisions
       
  3554     element simplesect {
       
  3555       db.simplesect.attlist, db.simplesect.info, db.all.blocks+
       
  3556     }
       
  3557 }
       
  3558 db.article.components = db.toplevel.sections
       
  3559 div {
       
  3560   db.article.status.attribute = db.status.attribute
       
  3561   db.article.class.enumeration =
       
  3562     
       
  3563     ## A collection of frequently asked questions.
       
  3564     "faq"
       
  3565     | 
       
  3566       ## An article in a journal or other periodical.
       
  3567       "journalarticle"
       
  3568     | 
       
  3569       ## A description of a product.
       
  3570       "productsheet"
       
  3571     | 
       
  3572       ## A specification.
       
  3573       "specification"
       
  3574     | 
       
  3575       ## A technical report.
       
  3576       "techreport"
       
  3577     | 
       
  3578       ## A white paper.
       
  3579       "whitepaper"
       
  3580   db.article.class.attribute =
       
  3581     
       
  3582     ## Identifies the nature of the article
       
  3583     attribute class { db.article.class.enumeration }
       
  3584   db.article.role.attribute = attribute role { text }
       
  3585   db.article.attlist =
       
  3586     db.article.role.attribute?
       
  3587     & db.common.attributes
       
  3588     & db.common.linking.attributes
       
  3589     & db.label.attribute?
       
  3590     & db.article.status.attribute?
       
  3591     & db.article.class.attribute?
       
  3592   db.article.info = db._info.title.req
       
  3593   db.article =
       
  3594     
       
  3595     ## An article
       
  3596     element article {
       
  3597       db.article.attlist,
       
  3598       db.article.info,
       
  3599       (db.navigation.components
       
  3600        | db.appendix
       
  3601        | db.acknowledgements
       
  3602        | db.colophon)*,
       
  3603       ((db.all.blocks+, db.article.components?)
       
  3604        | db.article.components),
       
  3605       (db.navigation.components
       
  3606        | db.appendix
       
  3607        | db.acknowledgements
       
  3608        | db.colophon)*
       
  3609     }
       
  3610 }
       
  3611 db.annotations.attribute =
       
  3612   
       
  3613   ## Identifies one or more annotations that apply to this element
       
  3614   attribute annotations { text }
       
  3615 div {
       
  3616   db.annotation.role.attribute = attribute role { text }
       
  3617   db.annotation.annotates.attribute =
       
  3618     
       
  3619     ## Identifies one ore more elements to which this annotation applies
       
  3620     attribute annotates { text }
       
  3621   db.annotation.attlist =
       
  3622     db.annotation.role.attribute?
       
  3623     & db.annotation.annotates.attribute?
       
  3624     & db.common.attributes
       
  3625   db.annotation.info = db._info.title.only
       
  3626   db.annotation =
       
  3627     
       
  3628     ## An annotation
       
  3629     element annotation {
       
  3630       db.annotation.attlist, db.annotation.info, db.all.blocks+
       
  3631     }
       
  3632 }
       
  3633 db.xlink.from.attribute =
       
  3634   
       
  3635   ## Specifies the XLink traversal-from
       
  3636   attribute xlink:from { xsd:NMTOKEN }
       
  3637 db.xlink.label.attribute =
       
  3638   
       
  3639   ## Specifies the XLink label
       
  3640   attribute xlink:label { xsd:NMTOKEN }
       
  3641 db.xlink.to.attribute =
       
  3642   
       
  3643   ## Specifies the XLink traversal-to
       
  3644   attribute xlink:to { xsd:NMTOKEN }
       
  3645 div {
       
  3646   db.extendedlink.role.attribute = attribute role { text }
       
  3647   db.extendedlink.attlist =
       
  3648     db.extendedlink.role.attribute?
       
  3649     & db.common.attributes
       
  3650     & 
       
  3651       ## Identifies the XLink link type 
       
  3652       [ a:defaultValue = "extended" ]
       
  3653       attribute xlink:type {
       
  3654         
       
  3655         ## An XLink extended link
       
  3656         "extended"
       
  3657       }?
       
  3658     & db.xlink.role.attribute?
       
  3659     & db.xlink.title.attribute?
       
  3660   db.extendedlink =
       
  3661     
       
  3662     ## An XLink extended link
       
  3663     element extendedlink {
       
  3664       db.extendedlink.attlist, (db.locator | db.arc)+
       
  3665     }
       
  3666 }
       
  3667 div {
       
  3668   db.locator.role.attribute = attribute role { text }
       
  3669   db.locator.attlist =
       
  3670     db.locator.role.attribute?
       
  3671     & db.common.attributes
       
  3672     & 
       
  3673       ## Identifies the XLink link type 
       
  3674       [ a:defaultValue = "locator" ]
       
  3675       attribute xlink:type {
       
  3676         
       
  3677         ## An XLink locator link
       
  3678         "locator"
       
  3679       }?
       
  3680     & db.xlink.href.attribute
       
  3681     & db.xlink.role.attribute?
       
  3682     & db.xlink.title.attribute?
       
  3683     & db.xlink.label.attribute?
       
  3684   db.locator =
       
  3685     
       
  3686     ## An XLink locator in an extendedlink
       
  3687     element locator { db.locator.attlist, empty }
       
  3688 }
       
  3689 div {
       
  3690   db.arc.role.attribute = attribute role { text }
       
  3691   db.arc.attlist =
       
  3692     db.arc.role.attribute?
       
  3693     & db.common.attributes
       
  3694     & 
       
  3695       ## Identifies the XLink link type 
       
  3696       [ a:defaultValue = "arc" ]
       
  3697       attribute xlink:type {
       
  3698         
       
  3699         ## An XLink arc link
       
  3700         "arc"
       
  3701       }?
       
  3702     & db.xlink.arcrole.attribute?
       
  3703     & db.xlink.title.attribute?
       
  3704     & db.xlink.show.attribute?
       
  3705     & db.xlink.actuate.attribute?
       
  3706     & db.xlink.from.attribute?
       
  3707     & db.xlink.to.attribute?
       
  3708   db.arc =
       
  3709     
       
  3710     ## An XLink arc in an extendedlink
       
  3711     element arc { db.arc.attlist, empty }
       
  3712 }
       
  3713 db.sect1.sections = (db.sect2+, db.simplesect*) | db.simplesect+
       
  3714 div {
       
  3715   db.sect1.status.attribute = db.status.attribute
       
  3716   db.sect1.role.attribute = attribute role { text }
       
  3717   db.sect1.attlist =
       
  3718     db.sect1.role.attribute?
       
  3719     & db.common.attributes
       
  3720     & db.common.linking.attributes
       
  3721     & db.label.attribute?
       
  3722     & db.sect1.status.attribute?
       
  3723   db.sect1.info = db._info.title.req
       
  3724   db.sect1 =
       
  3725     
       
  3726     ## A top-level section of document
       
  3727     element sect1 {
       
  3728       db.sect1.attlist,
       
  3729       db.sect1.info,
       
  3730       ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections),
       
  3731       db.navigation.components*
       
  3732     }
       
  3733 }
       
  3734 db.sect2.sections = (db.sect3+, db.simplesect*) | db.simplesect+
       
  3735 div {
       
  3736   db.sect2.status.attribute = db.status.attribute
       
  3737   db.sect2.role.attribute = attribute role { text }
       
  3738   db.sect2.attlist =
       
  3739     db.sect2.role.attribute?
       
  3740     & db.common.attributes
       
  3741     & db.common.linking.attributes
       
  3742     & db.label.attribute?
       
  3743     & db.sect2.status.attribute?
       
  3744   db.sect2.info = db._info.title.req
       
  3745   db.sect2 =
       
  3746     
       
  3747     ## A subsection within a sect1
       
  3748     element sect2 {
       
  3749       db.sect2.attlist,
       
  3750       db.sect2.info,
       
  3751       ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections),
       
  3752       db.navigation.components*
       
  3753     }
       
  3754 }
       
  3755 db.sect3.sections = (db.sect4+, db.simplesect*) | db.simplesect+
       
  3756 div {
       
  3757   db.sect3.status.attribute = db.status.attribute
       
  3758   db.sect3.role.attribute = attribute role { text }
       
  3759   db.sect3.attlist =
       
  3760     db.sect3.role.attribute?
       
  3761     & db.common.attributes
       
  3762     & db.common.linking.attributes
       
  3763     & db.label.attribute?
       
  3764     & db.sect3.status.attribute?
       
  3765   db.sect3.info = db._info.title.req
       
  3766   db.sect3 =
       
  3767     
       
  3768     ## A subsection within a sect2
       
  3769     element sect3 {
       
  3770       db.sect3.attlist,
       
  3771       db.sect3.info,
       
  3772       ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections),
       
  3773       db.navigation.components*
       
  3774     }
       
  3775 }
       
  3776 db.sect4.sections = (db.sect5+, db.simplesect*) | db.simplesect+
       
  3777 div {
       
  3778   db.sect4.status.attribute = db.status.attribute
       
  3779   db.sect4.role.attribute = attribute role { text }
       
  3780   db.sect4.attlist =
       
  3781     db.sect4.role.attribute?
       
  3782     & db.common.attributes
       
  3783     & db.common.linking.attributes
       
  3784     & db.label.attribute?
       
  3785     & db.sect4.status.attribute?
       
  3786   db.sect4.info = db._info.title.req
       
  3787   db.sect4 =
       
  3788     
       
  3789     ## A subsection within a sect3
       
  3790     element sect4 {
       
  3791       db.sect4.attlist,
       
  3792       db.sect4.info,
       
  3793       ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections),
       
  3794       db.navigation.components*
       
  3795     }
       
  3796 }
       
  3797 db.sect5.sections = db.simplesect+
       
  3798 div {
       
  3799   db.sect5.status.attribute = db.status.attribute
       
  3800   db.sect5.role.attribute = attribute role { text }
       
  3801   db.sect5.attlist =
       
  3802     db.sect5.role.attribute?
       
  3803     & db.common.attributes
       
  3804     & db.common.linking.attributes
       
  3805     & db.label.attribute?
       
  3806     & db.sect5.status.attribute?
       
  3807   db.sect5.info = db._info.title.req
       
  3808   db.sect5 =
       
  3809     
       
  3810     ## A subsection within a sect4
       
  3811     element sect5 {
       
  3812       db.sect5.attlist,
       
  3813       db.sect5.info,
       
  3814       ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections),
       
  3815       db.navigation.components*
       
  3816     }
       
  3817 }
       
  3818 db.toplevel.refsection = db.refsection+ | db.refsect1+
       
  3819 db.secondlevel.refsection = db.refsection+ | db.refsect2+
       
  3820 db.reference.components = db.refentry
       
  3821 div {
       
  3822   db.reference.status.attribute = db.status.attribute
       
  3823   db.reference.role.attribute = attribute role { text }
       
  3824   db.reference.attlist =
       
  3825     db.reference.role.attribute?
       
  3826     & db.common.attributes
       
  3827     & db.common.linking.attributes
       
  3828     & db.reference.status.attribute?
       
  3829     & db.label.attribute?
       
  3830   db.reference.info = db._info.title.req
       
  3831   db.reference =
       
  3832     
       
  3833     ## A collection of reference entries
       
  3834     element reference {
       
  3835       db.reference.attlist,
       
  3836       db.reference.info,
       
  3837       db.partintro?,
       
  3838       db.reference.components+
       
  3839     }
       
  3840 }
       
  3841 div {
       
  3842   db.refentry.status.attribute = db.status.attribute
       
  3843   db.refentry.role.attribute = attribute role { text }
       
  3844   db.refentry.attlist =
       
  3845     db.refentry.role.attribute?
       
  3846     & db.common.attributes
       
  3847     & db.common.linking.attributes
       
  3848     & db.refentry.status.attribute?
       
  3849     & db.label.attribute?
       
  3850   db.refentry.info = db._info.title.forbidden
       
  3851   db.refentry =
       
  3852     
       
  3853     ## A reference page (originally a UNIX man-style reference page)
       
  3854     element refentry {
       
  3855       db.refentry.attlist,
       
  3856       db.indexterm*,
       
  3857       db.refentry.info,
       
  3858       db.refmeta?,
       
  3859       db.refnamediv+,
       
  3860       db.refsynopsisdiv?,
       
  3861       db.toplevel.refsection
       
  3862     }
       
  3863 }
       
  3864 div {
       
  3865   db.refmeta.role.attribute = attribute role { text }
       
  3866   db.refmeta.attlist =
       
  3867     db.refmeta.role.attribute?
       
  3868     & db.common.attributes
       
  3869     & db.common.linking.attributes
       
  3870   db.refmeta =
       
  3871     
       
  3872     ## Meta-information for a reference entry
       
  3873     element refmeta {
       
  3874       db.refmeta.attlist,
       
  3875       db.indexterm*,
       
  3876       db.refentrytitle,
       
  3877       db.manvolnum?,
       
  3878       db.refmiscinfo*,
       
  3879       db.indexterm*
       
  3880     }
       
  3881 }
       
  3882 db.refmiscinfo.class.enumeration =
       
  3883   
       
  3884   ## The name of the software product or component to which this topic applies
       
  3885   "source"
       
  3886   | 
       
  3887     ## The version of the software product or component to which this topic applies
       
  3888     "version"
       
  3889   | 
       
  3890     ## The section title of the reference page (e.g., User Commands)
       
  3891     "manual"
       
  3892   | 
       
  3893     ## The section title of the reference page (believed synonymous with "manual" but in wide use)
       
  3894     "sectdesc"
       
  3895   | 
       
  3896     ## 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)
       
  3897     "software"
       
  3898 db.refmiscinfo.class-enum.attribute =
       
  3899   
       
  3900   ## Identifies the kind of miscellaneous information
       
  3901   attribute class { db.refmiscinfo.class.enumeration }?
       
  3902 db.refmiscinfo.class-other.attribute =
       
  3903   
       
  3904   ## Identifies the nature of non-standard miscellaneous information
       
  3905   attribute otherclass { text }
       
  3906 db.refmiscinfo.class-other.attributes =
       
  3907   
       
  3908   ## Identifies the kind of miscellaneious information
       
  3909   attribute class {
       
  3910     
       
  3911     ## Indicates that the information is some 'other' kind.
       
  3912     "other"
       
  3913   }
       
  3914   & db.refmiscinfo.class-other.attribute
       
  3915 db.refmiscinfo.class.attribute =
       
  3916   db.refmiscinfo.class-enum.attribute
       
  3917   | db.refmiscinfo.class-other.attributes
       
  3918 div {
       
  3919   db.refmiscinfo.role.attribute = attribute role { text }
       
  3920   db.refmiscinfo.attlist =
       
  3921     db.refmiscinfo.role.attribute?
       
  3922     & db.common.attributes
       
  3923     & db.common.linking.attributes
       
  3924     & db.refmiscinfo.class.attribute?
       
  3925   db.refmiscinfo =
       
  3926     
       
  3927     ## Meta-information for a reference entry other than the title and volume number
       
  3928     element refmiscinfo { db.refmiscinfo.attlist, db._text }
       
  3929 }
       
  3930 div {
       
  3931   db.refnamediv.role.attribute = attribute role { text }
       
  3932   db.refnamediv.attlist =
       
  3933     db.refnamediv.role.attribute?
       
  3934     & db.common.attributes
       
  3935     & db.common.linking.attributes
       
  3936   db.refnamediv =
       
  3937     
       
  3938     ## The name, purpose, and classification of a reference page
       
  3939     element refnamediv {
       
  3940       db.refnamediv.attlist,
       
  3941       db.refdescriptor?,
       
  3942       db.refname+,
       
  3943       db.refpurpose,
       
  3944       db.refclass*
       
  3945     }
       
  3946 }
       
  3947 div {
       
  3948   db.refdescriptor.role.attribute = attribute role { text }
       
  3949   db.refdescriptor.attlist =
       
  3950     db.refdescriptor.role.attribute?
       
  3951     & db.common.attributes
       
  3952     & db.common.linking.attributes
       
  3953   db.refdescriptor =
       
  3954     
       
  3955     ## A description of the topic of a reference page
       
  3956     element refdescriptor { db.refdescriptor.attlist, db.all.inlines* }
       
  3957 }
       
  3958 div {
       
  3959   db.refname.role.attribute = attribute role { text }
       
  3960   db.refname.attlist =
       
  3961     db.refname.role.attribute?
       
  3962     & db.common.attributes
       
  3963     & db.common.linking.attributes
       
  3964   db.refname =
       
  3965     
       
  3966     ## The name of (one of) the subject(s) of a reference page
       
  3967     element refname { db.refname.attlist, db.all.inlines* }
       
  3968 }
       
  3969 div {
       
  3970   db.refpurpose.role.attribute = attribute role { text }
       
  3971   db.refpurpose.attlist =
       
  3972     db.refpurpose.role.attribute?
       
  3973     & db.common.attributes
       
  3974     & db.common.linking.attributes
       
  3975   db.refpurpose =
       
  3976     
       
  3977     ## A short (one sentence) synopsis of the topic of a reference page
       
  3978     element refpurpose { db.refpurpose.attlist, db.all.inlines* }
       
  3979 }
       
  3980 div {
       
  3981   db.refclass.role.attribute = attribute role { text }
       
  3982   db.refclass.attlist =
       
  3983     db.refclass.role.attribute?
       
  3984     & db.common.attributes
       
  3985     & db.common.linking.attributes
       
  3986   db.refclass =
       
  3987     
       
  3988     ## The scope or other indication of applicability of a reference entry
       
  3989     element refclass { db.refclass.attlist, (text | db.application)* }
       
  3990 }
       
  3991 div {
       
  3992   db.refsynopsisdiv.role.attribute = attribute role { text }
       
  3993   db.refsynopsisdiv.attlist =
       
  3994     db.refsynopsisdiv.role.attribute?
       
  3995     & db.common.attributes
       
  3996     & db.common.linking.attributes
       
  3997   db.refsynopsisdiv.info = db._info
       
  3998   db.refsynopsisdiv =
       
  3999     
       
  4000     ## A syntactic synopsis of the subject of the reference page
       
  4001     element refsynopsisdiv {
       
  4002       db.refsynopsisdiv.attlist,
       
  4003       db.refsynopsisdiv.info,
       
  4004       ((db.all.blocks+, db.secondlevel.refsection?)
       
  4005        | db.secondlevel.refsection)
       
  4006     }
       
  4007 }
       
  4008 div {
       
  4009   db.refsection.status.attribute = db.status.attribute
       
  4010   db.refsection.role.attribute = attribute role { text }
       
  4011   db.refsection.attlist =
       
  4012     db.refsection.role.attribute?
       
  4013     & db.common.attributes
       
  4014     & db.common.linking.attributes
       
  4015     & db.refsection.status.attribute?
       
  4016     & db.label.attribute?
       
  4017   db.refsection.info = db._info.title.req
       
  4018   db.refsection =
       
  4019     
       
  4020     ## A recursive section in a refentry
       
  4021     element refsection {
       
  4022       db.refsection.attlist,
       
  4023       db.refsection.info,
       
  4024       ((db.all.blocks+, db.refsection*) | db.refsection+)
       
  4025     }
       
  4026 }
       
  4027 db.refsect1.sections = db.refsect2+
       
  4028 div {
       
  4029   db.refsect1.status.attribute = db.status.attribute
       
  4030   db.refsect1.role.attribute = attribute role { text }
       
  4031   db.refsect1.attlist =
       
  4032     db.refsect1.role.attribute?
       
  4033     & db.common.attributes
       
  4034     & db.common.linking.attributes
       
  4035     & db.label.attribute?
       
  4036     & db.refsect1.status.attribute?
       
  4037   db.refsect1.info = db._info.title.req
       
  4038   db.refsect1 =
       
  4039     
       
  4040     ## A major subsection of a reference entry
       
  4041     element refsect1 {
       
  4042       db.refsect1.attlist,
       
  4043       db.refsect1.info,
       
  4044       ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections)
       
  4045     }
       
  4046 }
       
  4047 db.refsect2.sections = db.refsect3+
       
  4048 div {
       
  4049   db.refsect2.status.attribute = db.status.attribute
       
  4050   db.refsect2.role.attribute = attribute role { text }
       
  4051   db.refsect2.attlist =
       
  4052     db.refsect2.role.attribute?
       
  4053     & db.common.attributes
       
  4054     & db.common.linking.attributes
       
  4055     & db.label.attribute?
       
  4056     & db.refsect2.status.attribute?
       
  4057   db.refsect2.info = db._info.title.req
       
  4058   db.refsect2 =
       
  4059     
       
  4060     ## A subsection of a refsect1
       
  4061     element refsect2 {
       
  4062       db.refsect2.attlist,
       
  4063       db.refsect2.info,
       
  4064       ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections)
       
  4065     }
       
  4066 }
       
  4067 div {
       
  4068   db.refsect3.status.attribute = db.status.attribute
       
  4069   db.refsect3.role.attribute = attribute role { text }
       
  4070   db.refsect3.attlist =
       
  4071     db.refsect3.role.attribute?
       
  4072     & db.common.attributes
       
  4073     & db.common.linking.attributes
       
  4074     & db.label.attribute?
       
  4075     & db.refsect3.status.attribute?
       
  4076   db.refsect3.info = db._info.title.req
       
  4077   db.refsect3 =
       
  4078     
       
  4079     ## A subsection of a refsect2
       
  4080     element refsect3 {
       
  4081       db.refsect3.attlist, db.refsect3.info, db.all.blocks+
       
  4082     }
       
  4083 }
       
  4084 db.glossary.inlines =
       
  4085   db.firstterm | db.glossterm | db._firstterm | db._glossterm
       
  4086 db.baseform.attribute =
       
  4087   
       
  4088   ## 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.
       
  4089   attribute baseform { text }?
       
  4090 div {
       
  4091   db.glosslist.role.attribute = attribute role { text }
       
  4092   db.glosslist.attlist =
       
  4093     db.glosslist.role.attribute?
       
  4094     & db.common.attributes
       
  4095     & db.common.linking.attributes
       
  4096   db.glosslist.info = db._info.title.only
       
  4097   db.glosslist =
       
  4098     
       
  4099     ## A wrapper for a list of glossary entries
       
  4100     element glosslist {
       
  4101       db.glosslist.attlist,
       
  4102       db.glosslist.info?,
       
  4103       db.all.blocks*,
       
  4104       db.glossentry+
       
  4105     }
       
  4106 }
       
  4107 div {
       
  4108   db.glossentry.role.attribute = attribute role { text }
       
  4109   db.glossentry.sortas.attribute =
       
  4110     
       
  4111     ## Specifies the string by which the element's content is to be sorted; if unspecified, the content is used
       
  4112     attribute sortas { text }
       
  4113   db.glossentry.attlist =
       
  4114     db.glossentry.role.attribute?
       
  4115     & db.common.attributes
       
  4116     & db.common.linking.attributes
       
  4117     & db.glossentry.sortas.attribute?
       
  4118   db.glossentry =
       
  4119     
       
  4120     ## An entry in a glossary or glosslist
       
  4121     element glossentry {
       
  4122       db.glossentry.attlist,
       
  4123       db.glossterm,
       
  4124       db.acronym?,
       
  4125       db.abbrev?,
       
  4126       db.indexterm*,
       
  4127       (db.glosssee | db.glossdef+)
       
  4128     }
       
  4129 }
       
  4130 div {
       
  4131   db.glossdef.role.attribute = attribute role { text }
       
  4132   db.glossdef.subject.attribute =
       
  4133     
       
  4134     ## Specifies a list of keywords for the definition
       
  4135     attribute subject { text }
       
  4136   db.glossdef.attlist =
       
  4137     db.glossdef.role.attribute?
       
  4138     & db.common.attributes
       
  4139     & db.common.linking.attributes
       
  4140     & db.glossdef.subject.attribute?
       
  4141   db.glossdef =
       
  4142     
       
  4143     ## A definition in a glossentry
       
  4144     element glossdef {
       
  4145       db.glossdef.attlist, db.all.blocks+, db.glossseealso*
       
  4146     }
       
  4147 }
       
  4148 div {
       
  4149   db.glosssee.role.attribute = attribute role { text }
       
  4150   db.glosssee.otherterm.attribute =
       
  4151     
       
  4152     ## Identifies the other term
       
  4153     attribute otherterm { xsd:IDREF }
       
  4154   db.glosssee.attlist =
       
  4155     db.glosssee.role.attribute?
       
  4156     & db.common.attributes
       
  4157     & db.common.linking.attributes
       
  4158     & db.glosssee.otherterm.attribute?
       
  4159   db.glosssee =
       
  4160     
       
  4161     ## A cross-reference from one glossentry
       
  4162     ##  to another
       
  4163     element glosssee { db.glosssee.attlist, db.all.inlines* }
       
  4164 }
       
  4165 div {
       
  4166   db.glossseealso.role.attribute = attribute role { text }
       
  4167   db.glossseealso.otherterm.attribute =
       
  4168     
       
  4169     ## Identifies the other term
       
  4170     attribute otherterm { xsd:IDREF }
       
  4171   db.glossseealso.attlist =
       
  4172     db.glossseealso.role.attribute?
       
  4173     & db.common.attributes
       
  4174     & db.common.linking.attributes
       
  4175     & db.glossseealso.otherterm.attribute?
       
  4176   db.glossseealso =
       
  4177     
       
  4178     ## A cross-reference from one glossentry to another
       
  4179     element glossseealso { db.glossseealso.attlist, db.all.inlines* }
       
  4180 }
       
  4181 div {
       
  4182   db.firstterm.role.attribute = attribute role { text }
       
  4183   db.firstterm.attlist =
       
  4184     db.firstterm.role.attribute?
       
  4185     & db.common.attributes
       
  4186     & db.common.linking.attributes
       
  4187     & db.baseform.attribute
       
  4188   db.firstterm =
       
  4189     
       
  4190     ## The first occurrence of a term
       
  4191     element firstterm { db.firstterm.attlist, db.all.inlines* }
       
  4192 }
       
  4193 div {
       
  4194   db._firstterm.role.attribute = attribute role { text }
       
  4195   db._firstterm.attlist =
       
  4196     db._firstterm.role.attribute?
       
  4197     & db.common.attributes
       
  4198     & db.common.linking.attributes
       
  4199     & db.baseform.attribute
       
  4200   db._firstterm =
       
  4201     
       
  4202     ## The first occurrence of a term, with limited content
       
  4203     element firstterm { db._firstterm.attlist, db._text }
       
  4204 }
       
  4205 div {
       
  4206   db.glossterm.role.attribute = attribute role { text }
       
  4207   db.glossterm.attlist =
       
  4208     db.glossterm.role.attribute?
       
  4209     & db.common.attributes
       
  4210     & db.common.linking.attributes
       
  4211     & db.baseform.attribute
       
  4212   db.glossterm =
       
  4213     
       
  4214     ## A glossary term
       
  4215     element glossterm { db.glossterm.attlist, db.all.inlines* }
       
  4216 }
       
  4217 div {
       
  4218   db._glossterm.role.attribute = attribute role { text }
       
  4219   db._glossterm.attlist =
       
  4220     db._glossterm.role.attribute?
       
  4221     & db.common.attributes
       
  4222     & db.common.linking.attributes
       
  4223     & db.baseform.attribute
       
  4224   db._glossterm =
       
  4225     
       
  4226     ## A glossary term
       
  4227     element glossterm { db._glossterm.attlist, db._text }
       
  4228 }
       
  4229 div {
       
  4230   db.glossary.status.attribute = db.status.attribute
       
  4231   db.glossary.role.attribute = attribute role { text }
       
  4232   db.glossary.attlist =
       
  4233     db.glossary.role.attribute?
       
  4234     & db.common.attributes
       
  4235     & db.common.linking.attributes
       
  4236     & db.label.attribute?
       
  4237     & db.glossary.status.attribute?
       
  4238   db.glossary.info = db._info
       
  4239   db.glossary =
       
  4240     
       
  4241     ## A glossary
       
  4242     element glossary {
       
  4243       db.glossary.attlist,
       
  4244       db.glossary.info,
       
  4245       db.all.blocks*,
       
  4246       (db.glossdiv* | db.glossentry*),
       
  4247       db.bibliography?
       
  4248     }
       
  4249 }
       
  4250 div {
       
  4251   db.glossdiv.status.attribute = db.status.attribute
       
  4252   db.glossdiv.role.attribute = attribute role { text }
       
  4253   db.glossdiv.attlist =
       
  4254     db.glossdiv.role.attribute?
       
  4255     & db.common.attributes
       
  4256     & db.common.linking.attributes
       
  4257     & db.label.attribute?
       
  4258     & db.glossdiv.status.attribute?
       
  4259   db.glossdiv.info = db._info.title.req
       
  4260   db.glossdiv =
       
  4261     
       
  4262     ## A division in a glossary
       
  4263     element glossdiv {
       
  4264       db.glossdiv.attlist,
       
  4265       db.glossdiv.info,
       
  4266       db.all.blocks*,
       
  4267       db.glossentry+
       
  4268     }
       
  4269 }
       
  4270 div {
       
  4271   db.termdef.role.attribute = attribute role { text }
       
  4272   db.termdef.attlist =
       
  4273     db.termdef.role.attribute?
       
  4274     & db.glossentry.sortas.attribute?
       
  4275     & db.common.attributes
       
  4276     & db.common.linking.attributes
       
  4277     & db.baseform.attribute
       
  4278   db.termdef =
       
  4279     
       
  4280     ## An inline definition of a term
       
  4281     element termdef { db.termdef.attlist, db.all.inlines* }
       
  4282 }
       
  4283 db.relation.attribute =
       
  4284   
       
  4285   ## Identifies the relationship between the bibliographic elemnts
       
  4286   attribute relation { text }
       
  4287 div {
       
  4288   db.biblioentry.role.attribute = attribute role { text }
       
  4289   db.biblioentry.attlist =
       
  4290     db.biblioentry.role.attribute?
       
  4291     & db.common.attributes
       
  4292     & db.common.linking.attributes
       
  4293   db.biblioentry =
       
  4294     
       
  4295     ## A raw entry in a bibliography
       
  4296     element biblioentry {
       
  4297       db.biblioentry.attlist, db.bibliographic.elements+
       
  4298     }
       
  4299 }
       
  4300 div {
       
  4301   db.bibliomixed.role.attribute = attribute role { text }
       
  4302   db.bibliomixed.attlist =
       
  4303     db.bibliomixed.role.attribute?
       
  4304     & db.common.attributes
       
  4305     & db.common.linking.attributes
       
  4306   db.bibliomixed =
       
  4307     
       
  4308     ## A cooked entry in a bibliography
       
  4309     element bibliomixed {
       
  4310       db.bibliomixed.attlist,
       
  4311       ((db._text
       
  4312         | db.honorific
       
  4313         | db.firstname
       
  4314         | db.surname
       
  4315         | db.lineage
       
  4316         | db.othername
       
  4317         | db.bibliographic.elements)*
       
  4318        | (db._text
       
  4319           | db.honorific
       
  4320           | db.givenname
       
  4321           | db.surname
       
  4322           | db.lineage
       
  4323           | db.othername
       
  4324           | db.bibliographic.elements)*)
       
  4325     }
       
  4326 }
       
  4327 div {
       
  4328   db.biblioset.relation.attribute = db.relation.attribute
       
  4329   db.biblioset.role.attribute = attribute role { text }
       
  4330   db.biblioset.attlist =
       
  4331     db.biblioset.role.attribute?
       
  4332     & db.common.attributes
       
  4333     & db.common.linking.attributes
       
  4334     & db.biblioset.relation.attribute?
       
  4335   db.biblioset =
       
  4336     
       
  4337     ## A raw container for related bibliographic information
       
  4338     element biblioset {
       
  4339       db.biblioset.attlist, db.bibliographic.elements+
       
  4340     }
       
  4341 }
       
  4342 div {
       
  4343   db.bibliomset.relation.attribute = db.relation.attribute
       
  4344   db.bibliomset.role.attribute = attribute role { text }
       
  4345   db.bibliomset.attlist =
       
  4346     db.bibliomset.role.attribute?
       
  4347     & db.common.attributes
       
  4348     & db.common.linking.attributes
       
  4349     & db.bibliomset.relation.attribute?
       
  4350   db.bibliomset =
       
  4351     
       
  4352     ## A cooked container for related bibliographic information
       
  4353     element bibliomset {
       
  4354       db.bibliomset.attlist,
       
  4355       ((db._text
       
  4356         | db.honorific
       
  4357         | db.firstname
       
  4358         | db.surname
       
  4359         | db.lineage
       
  4360         | db.othername
       
  4361         | db.bibliographic.elements)*
       
  4362        | (db._text
       
  4363           | db.honorific
       
  4364           | db.givenname
       
  4365           | db.surname
       
  4366           | db.lineage
       
  4367           | db.othername
       
  4368           | db.bibliographic.elements)*)
       
  4369     }
       
  4370 }
       
  4371 div {
       
  4372   db.bibliomisc.role.attribute = attribute role { text }
       
  4373   db.bibliomisc.attlist =
       
  4374     db.bibliomisc.role.attribute?
       
  4375     & db.common.attributes
       
  4376     & db.common.linking.attributes
       
  4377   db.bibliomisc =
       
  4378     
       
  4379     ## Untyped bibliographic information
       
  4380     element bibliomisc { db.bibliomisc.attlist, db._text }
       
  4381 }
       
  4382 div {
       
  4383   db.bibliography.status.attrib = db.status.attribute
       
  4384   db.bibliography.role.attribute = attribute role { text }
       
  4385   db.bibliography.attlist =
       
  4386     db.bibliography.role.attribute?
       
  4387     & db.common.attributes
       
  4388     & db.common.linking.attributes
       
  4389     & db.label.attribute?
       
  4390     & db.bibliography.status.attrib?
       
  4391   db.bibliography.info = db._info
       
  4392   db.bibliography =
       
  4393     
       
  4394     ## A bibliography
       
  4395     element bibliography {
       
  4396       db.bibliography.attlist,
       
  4397       db.bibliography.info,
       
  4398       db.all.blocks*,
       
  4399       (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+)
       
  4400     }
       
  4401 }
       
  4402 div {
       
  4403   db.bibliodiv.status.attrib = db.status.attribute
       
  4404   db.bibliodiv.role.attribute = attribute role { text }
       
  4405   db.bibliodiv.attlist =
       
  4406     db.bibliodiv.role.attribute?
       
  4407     & db.common.attributes
       
  4408     & db.common.linking.attributes
       
  4409     & db.label.attribute?
       
  4410     & db.bibliodiv.status.attrib?
       
  4411   db.bibliodiv.info = db._info.title.req
       
  4412   db.bibliodiv =
       
  4413     
       
  4414     ## A section of a bibliography
       
  4415     element bibliodiv {
       
  4416       db.bibliodiv.attlist,
       
  4417       db.bibliodiv.info,
       
  4418       db.all.blocks*,
       
  4419       (db.biblioentry | db.bibliomixed)+
       
  4420     }
       
  4421 }
       
  4422 div {
       
  4423   db.bibliolist.role.attribute = attribute role { text }
       
  4424   db.bibliolist.attlist =
       
  4425     db.bibliolist.role.attribute?
       
  4426     & db.common.attributes
       
  4427     & db.common.linking.attributes
       
  4428   db.bibliolist.info = db._info.title.only
       
  4429   db.bibliolist =
       
  4430     
       
  4431     ## A wrapper for a list of bibliography entries
       
  4432     element bibliolist {
       
  4433       db.bibliolist.attlist,
       
  4434       db.bibliolist.info?,
       
  4435       db.all.blocks*,
       
  4436       (db.biblioentry | db.bibliomixed)+
       
  4437     }
       
  4438 }
       
  4439 div {
       
  4440   db.biblioref.role.attribute = attribute role { text }
       
  4441   db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute
       
  4442   db.biblioref.endterm.attribute = db.endterm.attribute
       
  4443   db.biblioref.units.attribute =
       
  4444     
       
  4445     ## The units (for example, pages) used to identify the beginning and ending of a reference.
       
  4446     attribute units { xsd:token }
       
  4447   db.biblioref.begin.attribute =
       
  4448     
       
  4449     ## Identifies the beginning of a reference; the location within the work that is being referenced.
       
  4450     attribute begin { xsd:token }
       
  4451   db.biblioref.end.attribute =
       
  4452     
       
  4453     ## Identifies the end of a reference.
       
  4454     attribute end { xsd:token }
       
  4455   db.biblioref.attlist =
       
  4456     db.biblioref.role.attribute?
       
  4457     & db.common.attributes
       
  4458     & db.common.req.linking.attributes
       
  4459     & db.biblioref.xrefstyle.attribute?
       
  4460     & db.biblioref.endterm.attribute?
       
  4461     & db.biblioref.units.attribute?
       
  4462     & db.biblioref.begin.attribute?
       
  4463     & db.biblioref.end.attribute?
       
  4464   db.biblioref =
       
  4465     
       
  4466     ## A cross-reference to a bibliographic entry
       
  4467     element biblioref { db.biblioref.attlist, empty }
       
  4468 }
       
  4469 db.significance.enumeration =
       
  4470   
       
  4471   ## Normal
       
  4472   "normal"
       
  4473   | 
       
  4474     ## Preferred
       
  4475     "preferred"
       
  4476 db.significance.attribute =
       
  4477   
       
  4478   ## Specifies the significance of the term
       
  4479   attribute significance { db.significance.enumeration }
       
  4480 db.zone.attribute =
       
  4481   
       
  4482   ## Specifies the IDs of the elements to which this term applies
       
  4483   attribute zone { xsd:IDREFS }
       
  4484 db.indexterm.pagenum.attribute =
       
  4485   
       
  4486   ## Indicates the page on which this index term occurs in some version of the printed document
       
  4487   attribute pagenum { text }
       
  4488 db.scope.enumeration =
       
  4489   
       
  4490   ## All indexes
       
  4491   "all"
       
  4492   | 
       
  4493     ## The global index (as for a combined index of a set of books)
       
  4494     "global"
       
  4495   | 
       
  4496     ## The local index (the index for this document only)
       
  4497     "local"
       
  4498 db.scope.attribute =
       
  4499   
       
  4500   ## Specifies the scope of the index term
       
  4501   attribute scope { db.scope.enumeration }
       
  4502 db.sortas.attribute =
       
  4503   
       
  4504   ## Specifies the string by which the term is to be sorted; if unspecified, the term content is used
       
  4505   attribute sortas { text }
       
  4506 db.index.type.attribute =
       
  4507   
       
  4508   ## Specifies the target index for this term
       
  4509   attribute type { text }
       
  4510 div {
       
  4511   db.itermset.role.attribute = attribute role { text }
       
  4512   db.itermset.attlist =
       
  4513     db.itermset.role.attribute?
       
  4514     & db.common.attributes
       
  4515     & db.common.linking.attributes
       
  4516   db.itermset =
       
  4517     
       
  4518     ## A set of index terms in the meta-information of a document
       
  4519     element itermset { db.itermset.attlist, db.indexterm.singular+ }
       
  4520 }
       
  4521 db.indexterm.contentmodel =
       
  4522   db.primary?,
       
  4523   ((db.secondary,
       
  4524     ((db.tertiary, (db.see | db.seealso+)?)
       
  4525      | db.see
       
  4526      | db.seealso+)?)
       
  4527    | db.see
       
  4528    | db.seealso+)?
       
  4529 div {
       
  4530   db.indexterm.singular.role.attribute = attribute role { text }
       
  4531   db.indexterm.singular.class.attribute =
       
  4532     
       
  4533     ## Identifies the class of index term
       
  4534     attribute class {
       
  4535       
       
  4536       ## A singular index term
       
  4537       "singular"
       
  4538     }
       
  4539   db.indexterm.singular.attlist =
       
  4540     db.indexterm.singular.role.attribute?
       
  4541     & db.common.attributes
       
  4542     & db.common.linking.attributes
       
  4543     & db.significance.attribute?
       
  4544     & db.zone.attribute?
       
  4545     & db.indexterm.pagenum.attribute?
       
  4546     & db.scope.attribute?
       
  4547     & db.index.type.attribute?
       
  4548     & db.indexterm.singular.class.attribute?
       
  4549   db.indexterm.singular =
       
  4550     
       
  4551     ## A wrapper for an indexed term
       
  4552     element indexterm {
       
  4553       db.indexterm.singular.attlist, db.indexterm.contentmodel
       
  4554     }
       
  4555 }
       
  4556 div {
       
  4557   db.indexterm.startofrange.role.attribute = attribute role { text }
       
  4558   db.indexterm.startofrange.class.attribute =
       
  4559     
       
  4560     ## Identifies the class of index term
       
  4561     attribute class {
       
  4562       
       
  4563       ## The start of a range
       
  4564       "startofrange"
       
  4565     }
       
  4566   db.indexterm.startofrange.attlist =
       
  4567     db.indexterm.startofrange.role.attribute?
       
  4568     & db.common.attributes
       
  4569     & db.common.linking.attributes
       
  4570     & db.significance.attribute?
       
  4571     & db.zone.attribute?
       
  4572     & db.indexterm.pagenum.attribute?
       
  4573     & db.scope.attribute?
       
  4574     & db.index.type.attribute?
       
  4575     & db.indexterm.startofrange.class.attribute
       
  4576   db.indexterm.startofrange =
       
  4577     
       
  4578     ## A wrapper for an indexed term that covers a range
       
  4579     element indexterm {
       
  4580       db.indexterm.startofrange.attlist, db.indexterm.contentmodel
       
  4581     }
       
  4582 }
       
  4583 div {
       
  4584   db.indexterm.endofrange.role.attribute = attribute role { text }
       
  4585   db.indexterm.endofrange.class.attribute =
       
  4586     
       
  4587     ## Identifies the class of index term
       
  4588     attribute class {
       
  4589       
       
  4590       ## The end of a range
       
  4591       "endofrange"
       
  4592     }
       
  4593   db.indexterm.endofrange.startref.attribute =
       
  4594     
       
  4595     ## Points to the start of the range
       
  4596     attribute startref { xsd:IDREF }
       
  4597   db.indexterm.endofrange.attlist =
       
  4598     db.indexterm.endofrange.role.attribute?
       
  4599     & db.common.attributes
       
  4600     & db.common.linking.attributes
       
  4601     & db.indexterm.endofrange.class.attribute
       
  4602     & db.indexterm.endofrange.startref.attribute
       
  4603   db.indexterm.endofrange =
       
  4604     
       
  4605     ## Identifies the end of a range associated with an indexed term
       
  4606     element indexterm { db.indexterm.endofrange.attlist, empty }
       
  4607 }
       
  4608 div {
       
  4609   db.indexterm =
       
  4610     db.indexterm.singular
       
  4611     | db.indexterm.startofrange
       
  4612     | db.indexterm.endofrange
       
  4613 }
       
  4614 div {
       
  4615   db.primary.role.attribute = attribute role { text }
       
  4616   db.primary.attlist =
       
  4617     db.primary.role.attribute?
       
  4618     & db.common.attributes
       
  4619     & db.common.linking.attributes
       
  4620     & db.sortas.attribute?
       
  4621   db.primary =
       
  4622     
       
  4623     ## The primary word or phrase under which an index term should be sorted
       
  4624     element primary { db.primary.attlist, db.all.inlines* }
       
  4625 }
       
  4626 div {
       
  4627   db.secondary.role.attribute = attribute role { text }
       
  4628   db.secondary.attlist =
       
  4629     db.secondary.role.attribute?
       
  4630     & db.common.attributes
       
  4631     & db.common.linking.attributes
       
  4632     & db.sortas.attribute?
       
  4633   db.secondary =
       
  4634     
       
  4635     ## A secondary word or phrase in an index term
       
  4636     element secondary { db.secondary.attlist, db.all.inlines* }
       
  4637 }
       
  4638 div {
       
  4639   db.tertiary.role.attribute = attribute role { text }
       
  4640   db.tertiary.attlist =
       
  4641     db.tertiary.role.attribute?
       
  4642     & db.common.attributes
       
  4643     & db.common.linking.attributes
       
  4644     & db.sortas.attribute?
       
  4645   db.tertiary =
       
  4646     
       
  4647     ## A tertiary word or phrase in an index term
       
  4648     element tertiary { db.tertiary.attlist, db.all.inlines* }
       
  4649 }
       
  4650 div {
       
  4651   db.see.role.attribute = attribute role { text }
       
  4652   db.see.attlist =
       
  4653     db.see.role.attribute?
       
  4654     & db.common.attributes
       
  4655     & db.common.linking.attributes
       
  4656   db.see =
       
  4657     
       
  4658     ## Part of an index term directing the reader instead to another entry in the index
       
  4659     element see { db.see.attlist, db.all.inlines* }
       
  4660 }
       
  4661 div {
       
  4662   db.seealso.role.attribute = attribute role { text }
       
  4663   db.seealso.attlist =
       
  4664     db.seealso.role.attribute?
       
  4665     & db.common.attributes
       
  4666     & db.common.linking.attributes
       
  4667   db.seealso =
       
  4668     
       
  4669     ## Part of an index term directing the reader also to another entry in the index
       
  4670     element seealso { db.seealso.attlist, db.all.inlines* }
       
  4671 }
       
  4672 div {
       
  4673   db.index.status.attribute = db.status.attribute
       
  4674   db.index.role.attribute = attribute role { text }
       
  4675   db.index.attlist =
       
  4676     db.index.role.attribute?
       
  4677     & db.common.attributes
       
  4678     & db.common.linking.attributes
       
  4679     & db.label.attribute?
       
  4680     & db.index.status.attribute?
       
  4681     & db.index.type.attribute?
       
  4682   db.index.info = db._info
       
  4683   # 
       
  4684   # Yes, db.indexdiv* and db.indexentry*; that way an <index/> is valid.
       
  4685   # Authors can use an empty index to indicate where a generated index should
       
  4686   # appear.
       
  4687   db.index =
       
  4688     
       
  4689     ## An index to a book or part of a book
       
  4690     element index {
       
  4691       db.index.attlist,
       
  4692       db.index.info,
       
  4693       db.all.blocks*,
       
  4694       (db.indexdiv* | db.indexentry* | db.segmentedlist)
       
  4695     }
       
  4696 }
       
  4697 div {
       
  4698   db.setindex.status.attribute = db.status.attribute
       
  4699   db.setindex.role.attribute = attribute role { text }
       
  4700   db.setindex.attlist =
       
  4701     db.setindex.role.attribute?
       
  4702     & db.common.attributes
       
  4703     & db.common.linking.attributes
       
  4704     & db.label.attribute?
       
  4705     & db.setindex.status.attribute?
       
  4706     & db.index.type.attribute?
       
  4707   db.setindex.info = db._info
       
  4708   db.setindex =
       
  4709     
       
  4710     ## An index to a set of books
       
  4711     element setindex {
       
  4712       db.setindex.attlist,
       
  4713       db.setindex.info,
       
  4714       db.all.blocks*,
       
  4715       (db.indexdiv* | db.indexentry*)
       
  4716     }
       
  4717 }
       
  4718 div {
       
  4719   db.indexdiv.status.attribute = db.status.attribute
       
  4720   db.indexdiv.role.attribute = attribute role { text }
       
  4721   db.indexdiv.attlist =
       
  4722     db.indexdiv.role.attribute?
       
  4723     & db.common.attributes
       
  4724     & db.common.linking.attributes
       
  4725     & db.label.attribute?
       
  4726     & db.indexdiv.status.attribute?
       
  4727   db.indexdiv.info = db._info.title.req
       
  4728   db.indexdiv =
       
  4729     
       
  4730     ## A division in an index
       
  4731     element indexdiv {
       
  4732       db.indexdiv.attlist,
       
  4733       db.indexdiv.info,
       
  4734       db.all.blocks*,
       
  4735       (db.indexentry+ | db.segmentedlist)
       
  4736     }
       
  4737 }
       
  4738 div {
       
  4739   db.indexentry.role.attribute = attribute role { text }
       
  4740   db.indexentry.attlist =
       
  4741     db.indexentry.role.attribute?
       
  4742     & db.common.attributes
       
  4743     & db.common.linking.attributes
       
  4744   db.indexentry =
       
  4745     
       
  4746     ## An entry in an index
       
  4747     element indexentry {
       
  4748       db.indexentry.attlist,
       
  4749       db.primaryie,
       
  4750       (db.seeie | db.seealsoie)*,
       
  4751       (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)*
       
  4752     }
       
  4753 }
       
  4754 div {
       
  4755   db.primaryie.role.attribute = attribute role { text }
       
  4756   db.primaryie.attlist =
       
  4757     db.primaryie.role.attribute?
       
  4758     & db.common.attributes
       
  4759     & db.linkends.attribute?
       
  4760   db.primaryie =
       
  4761     
       
  4762     ## A primary term in an index entry, not in the text
       
  4763     element primaryie { db.primaryie.attlist, db.all.inlines* }
       
  4764 }
       
  4765 div {
       
  4766   db.secondaryie.role.attribute = attribute role { text }
       
  4767   db.secondaryie.attlist =
       
  4768     db.secondaryie.role.attribute?
       
  4769     & db.common.attributes
       
  4770     & db.linkends.attribute?
       
  4771   db.secondaryie =
       
  4772     
       
  4773     ## A secondary term in an index entry, rather than in the text
       
  4774     element secondaryie { db.secondaryie.attlist, db.all.inlines* }
       
  4775 }
       
  4776 div {
       
  4777   db.tertiaryie.role.attribute = attribute role { text }
       
  4778   db.tertiaryie.attlist =
       
  4779     db.tertiaryie.role.attribute?
       
  4780     & db.common.attributes
       
  4781     & db.linkends.attribute?
       
  4782   db.tertiaryie =
       
  4783     
       
  4784     ## A tertiary term in an index entry, rather than in the text
       
  4785     element tertiaryie { db.tertiaryie.attlist, db.all.inlines* }
       
  4786 }
       
  4787 div {
       
  4788   db.seeie.role.attribute = attribute role { text }
       
  4789   db.seeie.attlist =
       
  4790     db.seeie.role.attribute?
       
  4791     & db.common.attributes
       
  4792     & db.linkend.attribute?
       
  4793   db.seeie =
       
  4794     
       
  4795     ## A See
       
  4796     ## entry in an index, rather than in the text
       
  4797     element seeie { db.seeie.attlist, db.all.inlines* }
       
  4798 }
       
  4799 div {
       
  4800   db.seealsoie.role.attribute = attribute role { text }
       
  4801   db.seealsoie.attlist =
       
  4802     db.seealsoie.role.attribute?
       
  4803     & db.common.attributes
       
  4804     & db.linkends.attribute?
       
  4805   db.seealsoie =
       
  4806     
       
  4807     ## A See also
       
  4808     ##  entry in an index, rather than in the text
       
  4809     element seealsoie { db.seealsoie.attlist, db.all.inlines* }
       
  4810 }
       
  4811 db.toc.pagenum.attribute =
       
  4812   
       
  4813   ## Indicates the page on which this element occurs in some version of the printed document
       
  4814   attribute pagenum { text }
       
  4815 div {
       
  4816   db.toc.role.attribute = attribute role { text }
       
  4817   db.toc.attlist =
       
  4818     db.toc.role.attribute?
       
  4819     & db.common.attributes
       
  4820     & db.common.linking.attributes
       
  4821   db.toc.info = db._info.title.only
       
  4822   db.toc =
       
  4823     
       
  4824     ## A table of contents
       
  4825     element toc {
       
  4826       db.toc.attlist,
       
  4827       db.toc.info,
       
  4828       db.all.blocks*,
       
  4829       (db.tocdiv | db.tocentry)*
       
  4830     }
       
  4831 }
       
  4832 div {
       
  4833   db.tocdiv.role.attribute = attribute role { text }
       
  4834   db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute
       
  4835   db.tocdiv.attlist =
       
  4836     db.tocdiv.role.attribute?
       
  4837     & db.common.attributes
       
  4838     & db.tocdiv.pagenum.attribute?
       
  4839     & db.linkend.attribute?
       
  4840   db.tocdiv.info = db._info
       
  4841   db.tocdiv =
       
  4842     
       
  4843     ## A division in a table of contents
       
  4844     element tocdiv {
       
  4845       db.tocdiv.attlist,
       
  4846       db.tocdiv.info,
       
  4847       db.all.blocks*,
       
  4848       (db.tocdiv | db.tocentry)+
       
  4849     }
       
  4850 }
       
  4851 div {
       
  4852   db.tocentry.role.attribute = attribute role { text }
       
  4853   db.tocentry.pagenum.attribute = db.toc.pagenum.attribute
       
  4854   db.tocentry.attlist =
       
  4855     db.tocentry.role.attribute?
       
  4856     & db.common.attributes
       
  4857     & db.tocentry.pagenum.attribute?
       
  4858     & db.linkend.attribute?
       
  4859   db.tocentry =
       
  4860     
       
  4861     ## A component title in a table of contents
       
  4862     element tocentry { db.tocentry.attlist, db.all.inlines* }
       
  4863 }
       
  4864 db.task.info = db._info.title.req
       
  4865 div {
       
  4866   db.task.role.attribute = attribute role { text }
       
  4867   db.task.attlist =
       
  4868     db.task.role.attribute?
       
  4869     & db.common.attributes
       
  4870     & db.common.linking.attributes
       
  4871   db.task =
       
  4872     
       
  4873     ## A task to be completed
       
  4874     element task {
       
  4875       db.task.attlist,
       
  4876       db.task.info,
       
  4877       db.tasksummary?,
       
  4878       db.taskprerequisites?,
       
  4879       db.procedure,
       
  4880       db.example*,
       
  4881       db.taskrelated?
       
  4882     }
       
  4883 }
       
  4884 div {
       
  4885   db.tasksummary.role.attribute = attribute role { text }
       
  4886   db.tasksummary.attlist =
       
  4887     db.tasksummary.role.attribute?
       
  4888     & db.common.attributes
       
  4889     & db.common.linking.attributes
       
  4890   db.tasksummary.info = db._info.title.only
       
  4891   db.tasksummary =
       
  4892     
       
  4893     ## A summary of a task
       
  4894     element tasksummary {
       
  4895       db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+
       
  4896     }
       
  4897 }
       
  4898 div {
       
  4899   db.taskprerequisites.role.attribute = attribute role { text }
       
  4900   db.taskprerequisites.attlist =
       
  4901     db.taskprerequisites.role.attribute?
       
  4902     & db.common.attributes
       
  4903     & db.common.linking.attributes
       
  4904   db.taskprerequisites.info = db._info.title.only
       
  4905   db.taskprerequisites =
       
  4906     
       
  4907     ## The prerequisites for a task
       
  4908     element taskprerequisites {
       
  4909       db.taskprerequisites.attlist,
       
  4910       db.taskprerequisites.info,
       
  4911       db.all.blocks+
       
  4912     }
       
  4913 }
       
  4914 div {
       
  4915   db.taskrelated.role.attribute = attribute role { text }
       
  4916   db.taskrelated.attlist =
       
  4917     db.taskrelated.role.attribute?
       
  4918     & db.common.attributes
       
  4919     & db.common.linking.attributes
       
  4920   db.taskrelated.info = db._info.title.only
       
  4921   db.taskrelated =
       
  4922     
       
  4923     ## Information related to a task
       
  4924     element taskrelated {
       
  4925       db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+
       
  4926     }
       
  4927 }
       
  4928 db.area.units.enumeration =
       
  4929   
       
  4930   ## Coordinates expressed as a pair of CALS graphic coordinates.
       
  4931   "calspair"
       
  4932   | 
       
  4933     ## Coordinates expressed as a line and column.
       
  4934     "linecolumn"
       
  4935   | 
       
  4936     ## Coordinates expressed as a pair of lines and columns.
       
  4937     "linecolumnpair"
       
  4938   | 
       
  4939     ## Coordinates expressed as a line range.
       
  4940     "linerange"
       
  4941 db.area.units-enum.attribute =
       
  4942   
       
  4943   ## Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair
       
  4944   ##  for graphics and linecolumn
       
  4945   ##  for line-oriented elements.
       
  4946   attribute units { db.area.units.enumeration }?
       
  4947 db.area.units-other.attributes =
       
  4948   
       
  4949   ## Indicates that non-standard units are used for this area
       
  4950   ## . In this case otherunits
       
  4951   ##  must be specified.
       
  4952   attribute units {
       
  4953     
       
  4954     ## Coordinates expressed in some non-standard units.
       
  4955     "other"
       
  4956   }?,
       
  4957   
       
  4958   ## Identifies the units used in the coords
       
  4959   ##  attribute when the units
       
  4960   ##  attribute is other
       
  4961   ## . This attribute is forbidden otherwise.
       
  4962   attribute otherunits { xsd:NMTOKEN }
       
  4963 db.area.units.attribute =
       
  4964   db.area.units-enum.attribute | db.area.units-other.attributes
       
  4965 div {
       
  4966   db.calloutlist.role.attribute = attribute role { text }
       
  4967   db.calloutlist.attlist =
       
  4968     db.calloutlist.role.attribute?
       
  4969     & db.common.attributes
       
  4970     & db.common.linking.attributes
       
  4971   db.calloutlist.info = db._info.title.only
       
  4972   db.calloutlist =
       
  4973     
       
  4974     ## A list of callout
       
  4975     ## s
       
  4976     element calloutlist {
       
  4977       db.calloutlist.attlist,
       
  4978       db.calloutlist.info,
       
  4979       db.all.blocks*,
       
  4980       db.callout+
       
  4981     }
       
  4982 }
       
  4983 div {
       
  4984   db.callout.role.attribute = attribute role { text }
       
  4985   db.callout.arearefs.attribute =
       
  4986     
       
  4987     ## Identifies the areas described by this callout.
       
  4988     attribute arearefs { xsd:IDREFS }
       
  4989   db.callout.attlist =
       
  4990     db.callout.role.attribute?
       
  4991     & db.common.attributes
       
  4992     & db.callout.arearefs.attribute
       
  4993   db.callout =
       
  4994     
       
  4995     ## A called out
       
  4996     ##  description of a marked area
       
  4997     element callout { db.callout.attlist, db.all.blocks+ }
       
  4998 }
       
  4999 div {
       
  5000   db.programlistingco.role.attribute = attribute role { text }
       
  5001   db.programlistingco.attlist =
       
  5002     db.programlistingco.role.attribute?
       
  5003     & db.common.attributes
       
  5004     & db.common.linking.attributes
       
  5005   db.programlistingco.info = db._info.title.forbidden
       
  5006   db.programlistingco =
       
  5007     
       
  5008     ## A program listing with associated areas used in callouts
       
  5009     element programlistingco {
       
  5010       db.programlistingco.attlist,
       
  5011       db.programlistingco.info,
       
  5012       db.areaspec,
       
  5013       db.programlisting,
       
  5014       db.calloutlist*
       
  5015     }
       
  5016 }
       
  5017 div {
       
  5018   db.areaspec.role.attribute = attribute role { text }
       
  5019   db.areaspec.attlist =
       
  5020     db.areaspec.role.attribute?
       
  5021     & db.common.attributes
       
  5022     & db.common.linking.attributes
       
  5023     & db.area.units.attribute
       
  5024   db.areaspec =
       
  5025     
       
  5026     ## A collection of regions in a graphic or code example
       
  5027     element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ }
       
  5028 }
       
  5029 div {
       
  5030   db.area.role.attribute = attribute role { text }
       
  5031   db.area.linkends.attribute =
       
  5032     
       
  5033     ## Point to the callout
       
  5034     ## s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.)
       
  5035     attribute linkends { xsd:IDREFS }
       
  5036   db.area.label.attribute =
       
  5037     
       
  5038     ## 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.
       
  5039     attribute label { text }
       
  5040   db.area.coords.attribute =
       
  5041     
       
  5042     ## Provides the coordinates of the area. The coordinates must be interpreted using the units
       
  5043     ##  specified.
       
  5044     attribute coords { text }
       
  5045   db.area.attlist =
       
  5046     db.area.role.attribute?
       
  5047     & db.common.idreq.attributes
       
  5048     & db.area.units.attribute
       
  5049     & (db.area.linkends.attribute | db.href.attributes)?
       
  5050     & db.area.label.attribute?
       
  5051     & db.area.coords.attribute
       
  5052   db.area =
       
  5053     
       
  5054     ## A region defined for a callout in a graphic or code example
       
  5055     element area { db.area.attlist, db.alt? }
       
  5056 }
       
  5057 div {
       
  5058   # The only difference is that xml:id is optional
       
  5059   db.area.inareaset.attlist =
       
  5060     db.area.role.attribute?
       
  5061     & db.common.attributes
       
  5062     & db.area.units.attribute
       
  5063     & (db.area.linkends.attribute | db.href.attributes)?
       
  5064     & db.area.label.attribute?
       
  5065     & db.area.coords.attribute
       
  5066   db.area.inareaset =
       
  5067     
       
  5068     ## A region defined for a callout in a graphic or code example
       
  5069     element area { db.area.inareaset.attlist, db.alt? }
       
  5070 }
       
  5071 div {
       
  5072   db.areaset.role.attribute = attribute role { text }
       
  5073   db.areaset.linkends.attribute = db.linkends.attribute
       
  5074   db.areaset.label.attribute = db.label.attribute
       
  5075   db.areaset.attlist =
       
  5076     db.areaset.role.attribute?
       
  5077     & db.common.idreq.attributes
       
  5078     & db.area.units.attribute
       
  5079     & (db.areaset.linkends.attribute | db.href.attributes)?
       
  5080     & db.areaset.label.attribute?
       
  5081   db.areaset =
       
  5082     
       
  5083     ## A set of related areas in a graphic or code example
       
  5084     element areaset { db.areaset.attlist, db.area.inareaset+ }
       
  5085 }
       
  5086 div {
       
  5087   db.screenco.role.attribute = attribute role { text }
       
  5088   db.screenco.attlist =
       
  5089     db.screenco.role.attribute?
       
  5090     & db.common.attributes
       
  5091     & db.common.linking.attributes
       
  5092   db.screenco.info = db._info.title.forbidden
       
  5093   db.screenco =
       
  5094     
       
  5095     ## A screen with associated areas used in callouts
       
  5096     element screenco {
       
  5097       db.screenco.attlist,
       
  5098       db.screenco.info,
       
  5099       db.areaspec,
       
  5100       db.screen,
       
  5101       db.calloutlist*
       
  5102     }
       
  5103 }
       
  5104 div {
       
  5105   db.imageobjectco.role.attribute = attribute role { text }
       
  5106   db.imageobjectco.attlist =
       
  5107     db.imageobjectco.role.attribute?
       
  5108     & db.common.attributes
       
  5109     & db.common.linking.attributes
       
  5110   db.imageobjectco.info = db._info.title.forbidden
       
  5111   db.imageobjectco =
       
  5112     
       
  5113     ## A wrapper for an image object with callouts
       
  5114     element imageobjectco {
       
  5115       db.imageobjectco.attlist,
       
  5116       db.imageobjectco.info,
       
  5117       db.areaspec,
       
  5118       db.imageobject+,
       
  5119       db.calloutlist*
       
  5120     }
       
  5121 }
       
  5122 div {
       
  5123   db.co.role.attribute = attribute role { text }
       
  5124   db.co.linkends.attribute = db.linkends.attribute
       
  5125   db.co.label.attribute = db.label.attribute
       
  5126   db.co.attlist =
       
  5127     db.co.role.attribute?
       
  5128     & db.common.idreq.attributes
       
  5129     & db.co.linkends.attribute?
       
  5130     & db.co.label.attribute?
       
  5131   db.co =
       
  5132     
       
  5133     ## The location of a callout embedded in text
       
  5134     element co { db.co.attlist, empty }
       
  5135 }
       
  5136 div {
       
  5137   db.coref.role.attribute = attribute role { text }
       
  5138   db.coref.label.attribute = db.label.attribute
       
  5139   db.coref.attlist =
       
  5140     db.coref.role.attribute?
       
  5141     & db.common.attributes
       
  5142     & db.linkend.attribute
       
  5143     & db.coref.label.attribute?
       
  5144   db.coref =
       
  5145     
       
  5146     ## A cross reference to a co
       
  5147     element coref { db.coref.attlist, empty }
       
  5148 }
       
  5149 div {
       
  5150   db.productionset.role.attribute = attribute role { text }
       
  5151   db.productionset.attlist =
       
  5152     db.productionset.role.attribute?
       
  5153     & db.common.attributes
       
  5154     & db.common.linking.attributes
       
  5155   db.productionset.info = db._info.title.only
       
  5156   db.productionset =
       
  5157     
       
  5158     ## A set of EBNF productions
       
  5159     element productionset {
       
  5160       db.productionset.attlist,
       
  5161       db.productionset.info,
       
  5162       (db.production | db.productionrecap)+
       
  5163     }
       
  5164 }
       
  5165 div {
       
  5166   db.production.role.attribute = attribute role { text }
       
  5167   db.production.attlist =
       
  5168     db.production.role.attribute?
       
  5169     & db.common.idreq.attributes
       
  5170     & db.common.linking.attributes
       
  5171   db.production =
       
  5172     
       
  5173     ## A production in a set of EBNF productions
       
  5174     element production {
       
  5175       db.production.attlist, db.lhs, db.rhs, db.constraint*
       
  5176     }
       
  5177 }
       
  5178 div {
       
  5179   db.lhs.role.attribute = attribute role { text }
       
  5180   db.lhs.attlist =
       
  5181     db.lhs.role.attribute?
       
  5182     & db.common.attributes
       
  5183     & db.common.linking.attributes
       
  5184   db.lhs =
       
  5185     
       
  5186     ## The left-hand side of an EBNF production
       
  5187     element lhs { db.lhs.attlist, text }
       
  5188 }
       
  5189 div {
       
  5190   db.rhs.role.attribute = attribute role { text }
       
  5191   db.rhs.attlist =
       
  5192     db.rhs.role.attribute?
       
  5193     & db.common.attributes
       
  5194     & db.common.linking.attributes
       
  5195   db.rhs =
       
  5196     
       
  5197     ## The right-hand side of an EBNF production
       
  5198     element rhs {
       
  5199       db.rhs.attlist,
       
  5200       (text | db.nonterminal | db.lineannotation | db.sbr)*
       
  5201     }
       
  5202 }
       
  5203 div {
       
  5204   db.nonterminal.role.attribute = attribute role { text }
       
  5205   db.nonterminal.def.attribute =
       
  5206     
       
  5207     ## Specifies a URI that points to a production
       
  5208     ## where the nonterminal
       
  5209     ##  is defined
       
  5210     attribute def { xsd:anyURI }
       
  5211   db.nonterminal.attlist =
       
  5212     db.nonterminal.role.attribute?
       
  5213     & db.common.attributes
       
  5214     & db.common.linking.attributes
       
  5215     & db.nonterminal.def.attribute
       
  5216   db.nonterminal =
       
  5217     
       
  5218     ## A non-terminal in an EBNF production
       
  5219     element nonterminal { db.nonterminal.attlist, text }
       
  5220 }
       
  5221 div {
       
  5222   db.constraint.role.attribute = attribute role { text }
       
  5223   db.constraint.attlist =
       
  5224     db.constraint.role.attribute?
       
  5225     & db.common.attributes
       
  5226     & db.common.req.linking.attributes
       
  5227   db.constraint =
       
  5228     
       
  5229     ## A constraint in an EBNF production
       
  5230     element constraint { db.constraint.attlist, empty }
       
  5231 }
       
  5232 div {
       
  5233   db.productionrecap.role.attribute = attribute role { text }
       
  5234   db.productionrecap.attlist =
       
  5235     db.productionrecap.role.attribute?
       
  5236     & db.common.attributes
       
  5237     & db.common.req.linking.attributes
       
  5238   db.productionrecap =
       
  5239     
       
  5240     ## A cross-reference to an EBNF production
       
  5241     element productionrecap { db.productionrecap.attlist, empty }
       
  5242 }
       
  5243 div {
       
  5244   db.constraintdef.role.attribute = attribute role { text }
       
  5245   db.constraintdef.attlist =
       
  5246     db.constraintdef.role.attribute?
       
  5247     & db.common.attributes
       
  5248     & db.common.linking.attributes
       
  5249   db.constraintdef.info = db._info.title.only
       
  5250   db.constraintdef =
       
  5251     
       
  5252     ## The definition of a constraint in an EBNF production
       
  5253     element constraintdef {
       
  5254       db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+
       
  5255     }
       
  5256 }
       
  5257 db.char.attribute =
       
  5258   
       
  5259   ## Specifies the alignment character when align
       
  5260   ##  is set to char
       
  5261   ## .
       
  5262   attribute char { text }
       
  5263 db.charoff.attribute =
       
  5264   
       
  5265   ## 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
       
  5266   ##  when align
       
  5267   ##  is set to char
       
  5268   ## .
       
  5269   attribute charoff {
       
  5270     xsd:decimal { minExclusive = "0" maxExclusive = "100" }
       
  5271   }
       
  5272 db.frame.attribute =
       
  5273   
       
  5274   ## 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.
       
  5275   attribute frame {
       
  5276     
       
  5277     ## 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.
       
  5278     "all"
       
  5279     | 
       
  5280       ## Frame only the bottom of the table.
       
  5281       "bottom"
       
  5282     | 
       
  5283       ## 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.
       
  5284       "none"
       
  5285     | 
       
  5286       ## Frame the left and right sides of the table.
       
  5287       "sides"
       
  5288     | 
       
  5289       ## Frame the top of the table.
       
  5290       "top"
       
  5291     | 
       
  5292       ## Frame the top and bottom of the table.
       
  5293       "topbot"
       
  5294   }
       
  5295 db.colsep.attribute =
       
  5296   
       
  5297   ## Specifies the presence or absence of the column separator
       
  5298   attribute colsep {
       
  5299     
       
  5300     ## No column separator rule.
       
  5301     "0"
       
  5302     | 
       
  5303       ## Provide a column separator rule on the right
       
  5304       "1"
       
  5305   }
       
  5306 db.rowsep.attribute =
       
  5307   
       
  5308   ## Specifies the presence or absence of the row separator
       
  5309   attribute rowsep {
       
  5310     
       
  5311     ## No row separator rule.
       
  5312     "0"
       
  5313     | 
       
  5314       ## Provide a row separator rule below
       
  5315       "1"
       
  5316   }
       
  5317 db.orient.attribute =
       
  5318   
       
  5319   ## Specifies the orientation of the table
       
  5320   attribute orient {
       
  5321     
       
  5322     ## 90 degrees counter-clockwise from the rest of the text flow.
       
  5323     "land"
       
  5324     | 
       
  5325       ## The same orientation as the rest of the text flow.
       
  5326       "port"
       
  5327   }
       
  5328 db.tabstyle.attribute =
       
  5329   
       
  5330   ## Specifies the table style
       
  5331   attribute tabstyle { text }
       
  5332 db.rowheader.attribute =
       
  5333   
       
  5334   ## Indicates whether or not the entries in the first column should be considered row headers
       
  5335   attribute rowheader {
       
  5336     
       
  5337     ## Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers).
       
  5338     "firstcol"
       
  5339     | 
       
  5340       ## Indicates that entries in the first column have no special significance with respect to column headers.
       
  5341       "norowheader"
       
  5342   }
       
  5343 db.align.attribute =
       
  5344   
       
  5345   ## Specifies the horizontal alignment of text in an entry.
       
  5346   attribute align {
       
  5347     
       
  5348     ## Centered.
       
  5349     "center"
       
  5350     | 
       
  5351       ## Aligned on a particular character.
       
  5352       "char"
       
  5353     | 
       
  5354       ## Left and right justified.
       
  5355       "justify"
       
  5356     | 
       
  5357       ## Left justified.
       
  5358       "left"
       
  5359     | 
       
  5360       ## Right justified.
       
  5361       "right"
       
  5362   }
       
  5363 db.valign.attribute =
       
  5364   
       
  5365   ## Specifies the vertical alignment of text in an entry.
       
  5366   attribute valign {
       
  5367     
       
  5368     ## Aligned on the bottom of the entry.
       
  5369     "bottom"
       
  5370     | 
       
  5371       ## Aligned in the middle.
       
  5372       "middle"
       
  5373     | 
       
  5374       ## Aligned at the top of the entry.
       
  5375       "top"
       
  5376   }
       
  5377 db.specify-col-by-colname.attributes =
       
  5378   
       
  5379   ## Specifies a column specification by name.
       
  5380   attribute colname { text }
       
  5381 db.specify-col-by-namest.attributes =
       
  5382   
       
  5383   ## Specifies a starting column by name.
       
  5384   attribute namest { text }
       
  5385 db.specify-span-by-spanspec.attributes =
       
  5386   
       
  5387   ## Specifies a span by name.
       
  5388   attribute spanname { text }
       
  5389 db.specify-span-directly.attributes =
       
  5390   
       
  5391   ## Specifies a starting column by name.
       
  5392   attribute namest { text }
       
  5393   & 
       
  5394     ## Specifies an ending column by name.
       
  5395     attribute nameend { text }
       
  5396 db.column-spec.attributes =
       
  5397   db.specify-col-by-colname.attributes
       
  5398   | db.specify-col-by-namest.attributes
       
  5399   | db.specify-span-by-spanspec.attributes
       
  5400   | db.specify-span-directly.attributes
       
  5401 db.colname.attribute =
       
  5402   
       
  5403   ## Provides a name for a column specification.
       
  5404   attribute colname { text }
       
  5405 db.spanname.attribute =
       
  5406   
       
  5407   ## Provides a name for a span specification.
       
  5408   attribute spanname { text }
       
  5409 div {
       
  5410   db.tgroup.role.attribute = attribute role { text }
       
  5411   db.tgroup.tgroupstyle.attribute =
       
  5412     
       
  5413     ## Additional style information for downstream processing; typically the name of a style.
       
  5414     attribute tgroupstyle { text }
       
  5415   db.tgroup.cols.attribute =
       
  5416     
       
  5417     ## The number of columns in the table. Must be an integer greater than zero.
       
  5418     attribute cols { xsd:positiveInteger }
       
  5419   db.tgroup.attlist =
       
  5420     db.tgroup.role.attribute?
       
  5421     & db.common.attributes
       
  5422     & db.common.linking.attributes
       
  5423     & db.char.attribute?
       
  5424     & db.charoff.attribute?
       
  5425     & db.tgroup.tgroupstyle.attribute?
       
  5426     & db.tgroup.cols.attribute
       
  5427     & db.colsep.attribute?
       
  5428     & db.rowsep.attribute?
       
  5429     & db.align.attribute?
       
  5430   db.tgroup =
       
  5431     
       
  5432     ## A wrapper for the main content of a table, or part of a table
       
  5433     element tgroup {
       
  5434       db.tgroup.attlist,
       
  5435       db.colspec*,
       
  5436       db.spanspec*,
       
  5437       db.cals.thead?,
       
  5438       db.cals.tfoot?,
       
  5439       db.cals.tbody
       
  5440     }
       
  5441 }
       
  5442 div {
       
  5443   db.colspec.role.attribute = attribute role { text }
       
  5444   db.colspec.colnum.attribute =
       
  5445     
       
  5446     ## 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.
       
  5447     attribute colnum { xsd:positiveInteger }
       
  5448   db.colspec.colwidth.attribute =
       
  5449     
       
  5450     ## Specifies the width of the column.
       
  5451     attribute colwidth { text }
       
  5452   db.colspec.attlist =
       
  5453     db.colspec.role.attribute?
       
  5454     & db.common.attributes
       
  5455     & db.common.linking.attributes
       
  5456     & db.colspec.colnum.attribute?
       
  5457     & db.char.attribute?
       
  5458     & db.colsep.attribute?
       
  5459     & db.colspec.colwidth.attribute?
       
  5460     & db.charoff.attribute?
       
  5461     & db.colname.attribute?
       
  5462     & db.rowsep.attribute?
       
  5463     & db.align.attribute?
       
  5464   db.colspec =
       
  5465     
       
  5466     ## Specifications for a column in a table
       
  5467     element colspec { db.colspec.attlist, empty }
       
  5468 }
       
  5469 div {
       
  5470   db.spanspec.role.attribute = attribute role { text }
       
  5471   db.spanspec.namest.attribute =
       
  5472     
       
  5473     ## Specifies a starting column by name.
       
  5474     attribute namest { text }
       
  5475   db.spanspec.nameend.attribute =
       
  5476     
       
  5477     ## Specifies an ending column by name.
       
  5478     attribute nameend { text }
       
  5479   db.spanspec.attlist =
       
  5480     db.spanspec.role.attribute?
       
  5481     & db.common.attributes
       
  5482     & db.common.linking.attributes
       
  5483     & db.spanname.attribute
       
  5484     & db.spanspec.namest.attribute
       
  5485     & db.spanspec.nameend.attribute
       
  5486     & db.char.attribute?
       
  5487     & db.colsep.attribute?
       
  5488     & db.charoff.attribute?
       
  5489     & db.rowsep.attribute?
       
  5490     & db.align.attribute?
       
  5491   db.spanspec =
       
  5492     
       
  5493     ## Formatting information for a spanned column in a table
       
  5494     element spanspec { db.spanspec.attlist, empty }
       
  5495 }
       
  5496 div {
       
  5497   db.cals.thead.role.attribute = attribute role { text }
       
  5498   db.cals.thead.attlist =
       
  5499     db.cals.thead.role.attribute?
       
  5500     & db.common.attributes
       
  5501     & db.common.linking.attributes
       
  5502     & db.valign.attribute?
       
  5503   db.cals.thead =
       
  5504     
       
  5505     ## A table header consisting of one or more rows
       
  5506     element thead { db.cals.thead.attlist, db.colspec*, db.row+ }
       
  5507 }
       
  5508 div {
       
  5509   db.cals.tfoot.role.attribute = attribute role { text }
       
  5510   db.cals.tfoot.attlist =
       
  5511     db.cals.tfoot.role.attribute?
       
  5512     & db.common.attributes
       
  5513     & db.common.linking.attributes
       
  5514     & db.valign.attribute?
       
  5515   db.cals.tfoot =
       
  5516     
       
  5517     ## A table footer consisting of one or more rows
       
  5518     element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ }
       
  5519 }
       
  5520 div {
       
  5521   db.cals.tbody.role.attribute = attribute role { text }
       
  5522   db.cals.tbody.attlist =
       
  5523     db.cals.tbody.role.attribute?
       
  5524     & db.common.attributes
       
  5525     & db.common.linking.attributes
       
  5526     & db.valign.attribute?
       
  5527   db.cals.tbody =
       
  5528     
       
  5529     ## A wrapper for the rows of a table or informal table
       
  5530     element tbody { db.cals.tbody.attlist, db.row+ }
       
  5531 }
       
  5532 div {
       
  5533   db.row.role.attribute = attribute role { text }
       
  5534   db.row.attlist =
       
  5535     db.row.role.attribute?
       
  5536     & db.common.attributes
       
  5537     & db.common.linking.attributes
       
  5538     & db.rowsep.attribute?
       
  5539     & db.valign.attribute?
       
  5540   db.row =
       
  5541     
       
  5542     ## A row in a table
       
  5543     element row { db.row.attlist, (db.entry | db.entrytbl)+ }
       
  5544 }
       
  5545 div {
       
  5546   db.entry.role.attribute = attribute role { text }
       
  5547   db.entry.morerows.attribute =
       
  5548     
       
  5549     ## Specifies the number of additional rows which this entry occupies. Defaults to zero.
       
  5550     attribute morerows { xsd:integer }
       
  5551   db.entry.rotate.attribute =
       
  5552     
       
  5553     ## 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.
       
  5554     attribute rotate {
       
  5555       
       
  5556       ## Do not rotate the cell.
       
  5557       "0"
       
  5558       | 
       
  5559         ## Rotate the cell 90 degrees counter-clockwise.
       
  5560         "1"
       
  5561     }
       
  5562   db.entry.attlist =
       
  5563     db.entry.role.attribute?
       
  5564     & db.common.attributes
       
  5565     & db.common.linking.attributes
       
  5566     & db.valign.attribute?
       
  5567     & db.char.attribute?
       
  5568     & db.colsep.attribute?
       
  5569     & db.charoff.attribute?
       
  5570     & db.entry.morerows.attribute?
       
  5571     & db.column-spec.attributes?
       
  5572     & db.rowsep.attribute?
       
  5573     & db.entry.rotate.attribute?
       
  5574     & db.align.attribute?
       
  5575   db.entry =
       
  5576     
       
  5577     ## A cell in a table
       
  5578     element entry {
       
  5579       db.entry.attlist, (db.all.inlines* | db.all.blocks*)
       
  5580     }
       
  5581 }
       
  5582 div {
       
  5583   db.entrytbl.role.attribute = attribute role { text }
       
  5584   db.entrytbl.tgroupstyle.attribute =
       
  5585     
       
  5586     ## Additional style information for downstream processing; typically the name of a style.
       
  5587     attribute tgroupstyle { text }
       
  5588   db.entrytbl.cols.attribute =
       
  5589     
       
  5590     ## The number of columns in the entry table. Must be an integer greater than zero.
       
  5591     attribute cols { xsd:positiveInteger }
       
  5592   db.entrytbl.attlist =
       
  5593     db.entrytbl.role.attribute?
       
  5594     & db.common.attributes
       
  5595     & db.common.linking.attributes
       
  5596     & db.char.attribute?
       
  5597     & db.charoff.attribute?
       
  5598     & db.column-spec.attributes?
       
  5599     & db.entrytbl.tgroupstyle.attribute?
       
  5600     & db.entrytbl.cols.attribute?
       
  5601     & db.colsep.attribute?
       
  5602     & db.rowsep.attribute?
       
  5603     & db.align.attribute?
       
  5604   db.entrytbl =
       
  5605     
       
  5606     ## A subtable appearing in place of an entry in a table
       
  5607     element entrytbl {
       
  5608       db.entrytbl.attlist,
       
  5609       db.colspec*,
       
  5610       db.spanspec*,
       
  5611       db.cals.entrytbl.thead?,
       
  5612       db.cals.entrytbl.tbody
       
  5613     }
       
  5614 }
       
  5615 div {
       
  5616   db.cals.entrytbl.thead.role.attribute = attribute role { text }
       
  5617   db.cals.entrytbl.thead.attlist =
       
  5618     db.cals.entrytbl.thead.role.attribute?
       
  5619     & db.common.attributes
       
  5620     & db.common.linking.attributes
       
  5621     & db.valign.attribute?
       
  5622   db.cals.entrytbl.thead =
       
  5623     
       
  5624     ## A table header consisting of one or more rows
       
  5625     element thead {
       
  5626       db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+
       
  5627     }
       
  5628 }
       
  5629 div {
       
  5630   db.cals.entrytbl.tbody.role.attribute = attribute role { text }
       
  5631   db.cals.entrytbl.tbody.attlist =
       
  5632     db.cals.entrytbl.tbody.role.attribute?
       
  5633     & db.common.attributes
       
  5634     & db.common.linking.attributes
       
  5635     & db.valign.attribute?
       
  5636   db.cals.entrytbl.tbody =
       
  5637     
       
  5638     ## A wrapper for the rows of a table or informal table
       
  5639     element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ }
       
  5640 }
       
  5641 div {
       
  5642   db.entrytbl.row.role.attribute = attribute role { text }
       
  5643   db.entrytbl.row.attlist =
       
  5644     db.entrytbl.row.role.attribute?
       
  5645     & db.common.attributes
       
  5646     & db.common.linking.attributes
       
  5647     & db.rowsep.attribute?
       
  5648     & db.valign.attribute?
       
  5649   db.entrytbl.row =
       
  5650     
       
  5651     ## A row in a table
       
  5652     element row { db.entrytbl.row.attlist, db.entry+ }
       
  5653 }
       
  5654 div {
       
  5655   db.cals.table.role.attribute = attribute role { text }
       
  5656   db.cals.table.label.attribute = db.label.attribute
       
  5657   db.cals.table.attlist =
       
  5658     db.cals.table.role.attribute?
       
  5659     & db.cals.table.label.attribute?
       
  5660     & db.common.attributes
       
  5661     & db.common.linking.attributes
       
  5662     & db.tabstyle.attribute?
       
  5663     & db.floatstyle.attribute?
       
  5664     & db.orient.attribute?
       
  5665     & db.colsep.attribute?
       
  5666     & db.rowsep.attribute?
       
  5667     & db.frame.attribute?
       
  5668     & db.pgwide.attribute?
       
  5669     & 
       
  5670       ## Indicates if the short or long title should be used in a List of Tables
       
  5671       attribute shortentry {
       
  5672         
       
  5673         ## Indicates that the full title should be used.
       
  5674         "0"
       
  5675         | 
       
  5676           ## Indicates that the short short title (titleabbrev) should be used.
       
  5677           "1"
       
  5678       }?
       
  5679     & 
       
  5680       ## Indicates if the table should appear in a List of Tables
       
  5681       attribute tocentry {
       
  5682         
       
  5683         ## Indicates that the table should not occur in the List of Tables.
       
  5684         "0"
       
  5685         | 
       
  5686           ## Indicates that the table should appear in the List of Tables.
       
  5687           "1"
       
  5688       }?
       
  5689     & db.rowheader.attribute?
       
  5690   db.cals.table.info = db._info.title.onlyreq
       
  5691   db.cals.table =
       
  5692     
       
  5693     ## A formal table in a document
       
  5694     element table {
       
  5695       db.cals.table.attlist,
       
  5696       db.cals.table.info,
       
  5697       (db.alt? & db.indexing.inlines* & db.textobject*),
       
  5698       (db.mediaobject+ | db.tgroup+),
       
  5699       db.caption?
       
  5700     }
       
  5701 }
       
  5702 div {
       
  5703   db.cals.informaltable.role.attribute = attribute role { text }
       
  5704   db.cals.informaltable.attlist =
       
  5705     db.cals.informaltable.role.attribute?
       
  5706     & db.common.attributes
       
  5707     & db.common.linking.attributes
       
  5708     & db.tabstyle.attribute?
       
  5709     & db.floatstyle.attribute?
       
  5710     & db.orient.attribute?
       
  5711     & db.colsep.attribute?
       
  5712     & db.rowsep.attribute?
       
  5713     & db.frame.attribute?
       
  5714     & db.pgwide.attribute?
       
  5715     & db.rowheader.attribute?
       
  5716   db.cals.informaltable.info = db._info.title.forbidden
       
  5717   db.cals.informaltable =
       
  5718     
       
  5719     ## A table without a title
       
  5720     element informaltable {
       
  5721       db.cals.informaltable.attlist,
       
  5722       db.cals.informaltable.info,
       
  5723       (db.alt? & db.indexing.inlines* & db.textobject*),
       
  5724       (db.mediaobject+ | db.tgroup+),
       
  5725       db.caption?
       
  5726     }
       
  5727 }
       
  5728 db.html.coreattrs =
       
  5729   
       
  5730   ## 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.
       
  5731   attribute class { text }?
       
  5732   & 
       
  5733     ## This attribute specifies style information for the current element.
       
  5734     attribute style { text }?
       
  5735   & 
       
  5736     ## This attribute offers advisory information about the element for which it is set.
       
  5737     attribute title { text }?
       
  5738 db.html.i18n =
       
  5739   
       
  5740   ## This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown.
       
  5741   attribute lang { text }?
       
  5742 db.html.events =
       
  5743   
       
  5744   ## Occurs when the pointing device button is clicked over an element.
       
  5745   attribute onclick { text }?
       
  5746   & 
       
  5747     ## Occurs when the pointing device button is double clicked over an element.
       
  5748     attribute ondblclick { text }?
       
  5749   & 
       
  5750     ## Occurs when the pointing device button is pressed over an element.
       
  5751     attribute onmousedown { text }?
       
  5752   & 
       
  5753     ## Occurs when the pointing device button is released over an element.
       
  5754     attribute onmouseup { text }?
       
  5755   & 
       
  5756     ## Occurs when the pointing device is moved onto an element.
       
  5757     attribute onmouseover { text }?
       
  5758   & 
       
  5759     ## Occurs when the pointing device is moved while it is over an element.
       
  5760     attribute onmousemove { text }?
       
  5761   & 
       
  5762     ## Occurs when the pointing device is moved away from an element.
       
  5763     attribute onmouseout { text }?
       
  5764   & 
       
  5765     ## Occurs when a key is pressed and released over an element.
       
  5766     attribute onkeypress { text }?
       
  5767   & 
       
  5768     ## Occurs when a key is pressed down over an element.
       
  5769     attribute onkeydown { text }?
       
  5770   & 
       
  5771     ## Occurs when a key is released over an element.
       
  5772     attribute onkeyup { text }?
       
  5773 db.html.attrs =
       
  5774   db.common.attributes
       
  5775   & db.html.coreattrs
       
  5776   & db.html.i18n
       
  5777   & db.html.events
       
  5778 db.html.cellhalign =
       
  5779   
       
  5780   ## Specifies the alignment of data and the justification of text in a cell.
       
  5781   attribute align {
       
  5782     
       
  5783     ## Left-flush data/Left-justify text. This is the default value for table data.
       
  5784     "left"
       
  5785     | 
       
  5786       ## Center data/Center-justify text. This is the default value for table headers.
       
  5787       "center"
       
  5788     | 
       
  5789       ## Right-flush data/Right-justify text.
       
  5790       "right"
       
  5791     | 
       
  5792       ## Double-justify text.
       
  5793       "justify"
       
  5794     | 
       
  5795       ## Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified.
       
  5796       "char"
       
  5797   }?
       
  5798   & 
       
  5799     ## 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.
       
  5800     attribute char { text }?
       
  5801   & 
       
  5802     ## 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.
       
  5803     attribute charoff {
       
  5804       xsd:integer >> a:documentation [ "An explicit offset." ]
       
  5805       | xsd:string { pattern = "[0-9]+%" }
       
  5806         >> a:documentation [ "A percentage offset." ]
       
  5807     }?
       
  5808 db.html.cellvalign =
       
  5809   
       
  5810   ## Specifies the vertical position of data within a cell.
       
  5811   attribute valign {
       
  5812     
       
  5813     ## Cell data is flush with the top of the cell.
       
  5814     "top"
       
  5815     | 
       
  5816       ## Cell data is centered vertically within the cell. This is the default value.
       
  5817       "middle"
       
  5818     | 
       
  5819       ## Cell data is flush with the bottom of the cell.
       
  5820       "bottom"
       
  5821     | 
       
  5822       ## 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.
       
  5823       "baseline"
       
  5824   }?
       
  5825 db.html.table.attributes =
       
  5826   
       
  5827   ## Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille.
       
  5828   attribute summary { text }?
       
  5829   & 
       
  5830     ## 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.
       
  5831     attribute width {
       
  5832       xsd:integer >> a:documentation [ "An explicit width." ]
       
  5833       | xsd:string { pattern = "[0-9]+%" }
       
  5834         >> a:documentation [ "A percentage width." ]
       
  5835     }?
       
  5836   & 
       
  5837     ## Specifies the width (in pixels only) of the frame around a table.
       
  5838     attribute border { xsd:nonNegativeInteger }?
       
  5839   & 
       
  5840     ## Specifies which sides of the frame surrounding a table will be visible.
       
  5841     attribute frame {
       
  5842       
       
  5843       ## No sides. This is the default value.
       
  5844       "void"
       
  5845       | 
       
  5846         ## The top side only.
       
  5847         "above"
       
  5848       | 
       
  5849         ## The bottom side only.
       
  5850         "below"
       
  5851       | 
       
  5852         ## The top and bottom sides only.
       
  5853         "hsides"
       
  5854       | 
       
  5855         ## The left-hand side only.
       
  5856         "lhs"
       
  5857       | 
       
  5858         ## The right-hand side only.
       
  5859         "rhs"
       
  5860       | 
       
  5861         ## The right and left sides only.
       
  5862         "vsides"
       
  5863       | 
       
  5864         ## All four sides.
       
  5865         "box"
       
  5866       | 
       
  5867         ## All four sides.
       
  5868         "border"
       
  5869     }?
       
  5870   & 
       
  5871     ## Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent.
       
  5872     attribute rules {
       
  5873       
       
  5874       ## No rules. This is the default value.
       
  5875       "none"
       
  5876       | 
       
  5877         ## Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only.
       
  5878         "groups"
       
  5879       | 
       
  5880         ## Rules will appear between rows only.
       
  5881         "rows"
       
  5882       | 
       
  5883         ## Rules will appear between columns only.
       
  5884         "cols"
       
  5885       | 
       
  5886         ## Rules will appear between all rows and columns.
       
  5887         "all"
       
  5888     }?
       
  5889   & 
       
  5890     ## 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.
       
  5891     attribute cellspacing {
       
  5892       xsd:integer >> a:documentation [ "An explicit spacing." ]
       
  5893       | xsd:string { pattern = "[0-9]+%" }
       
  5894         >> a:documentation [ "A percentage spacing." ]
       
  5895     }?
       
  5896   & 
       
  5897     ## 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.
       
  5898     attribute cellpadding {
       
  5899       xsd:integer >> a:documentation [ "An explicit padding." ]
       
  5900       | xsd:string { pattern = "[0-9]+%" }
       
  5901         >> a:documentation [ "A percentage padding." ]
       
  5902     }?
       
  5903 db.html.tablecell.attributes =
       
  5904   
       
  5905   ## 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.
       
  5906   attribute abbr { text }?
       
  5907   & 
       
  5908     ## 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.
       
  5909     attribute axis { text }?
       
  5910   & 
       
  5911     ## 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.
       
  5912     attribute headers { text }?
       
  5913   & 
       
  5914     ## 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.
       
  5915     attribute scope {
       
  5916       
       
  5917       ## The current cell provides header information for the rest of the row that contains it
       
  5918       "row"
       
  5919       | 
       
  5920         ## The current cell provides header information for the rest of the column that contains it.
       
  5921         "col"
       
  5922       | 
       
  5923         ## The header cell provides header information for the rest of the row group that contains it.
       
  5924         "rowgroup"
       
  5925       | 
       
  5926         ## The header cell provides header information for the rest of the column group that contains it.
       
  5927         "colgroup"
       
  5928     }?
       
  5929   & 
       
  5930     ## Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1
       
  5931     ## ). The value zero (0
       
  5932     ## ) means that the cell spans all rows from the current row to the last row of the table section (thead
       
  5933     ## , tbody
       
  5934     ## , or tfoot
       
  5935     ## ) in which the cell is defined.
       
  5936     attribute rowspan { xsd:nonNegativeInteger }?
       
  5937   & 
       
  5938     ## Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1
       
  5939     ## ). The value zero (0
       
  5940     ## ) means that the cell spans all columns from the current column to the last column of the column group (colgroup
       
  5941     ## ) in which the cell is defined.
       
  5942     attribute colspan { xsd:nonNegativeInteger }?
       
  5943 db.html.table.info = db._info.title.forbidden
       
  5944 db.html.table.model =
       
  5945   db.html.table.info?,
       
  5946   db.html.caption,
       
  5947   (db.html.col* | db.html.colgroup*),
       
  5948   db.html.thead?,
       
  5949   db.html.tfoot?,
       
  5950   (db.html.tbody+ | db.html.tr+)
       
  5951 db.html.informaltable.info = db._info.title.forbidden
       
  5952 db.html.informaltable.model =
       
  5953   db.html.informaltable.info?,
       
  5954   (db.html.col* | db.html.colgroup*),
       
  5955   db.html.thead?,
       
  5956   db.html.tfoot?,
       
  5957   (db.html.tbody+ | db.html.tr+)
       
  5958 div {
       
  5959   db.html.table.role.attribute = attribute role { text }
       
  5960   db.html.table.label.attribute = db.label.attribute
       
  5961   db.html.table.attlist =
       
  5962     db.html.attrs
       
  5963     & db.html.table.attributes
       
  5964     & db.html.table.role.attribute?
       
  5965     & db.html.table.label.attribute?
       
  5966     & db.orient.attribute?
       
  5967     & db.pgwide.attribute?
       
  5968     & db.tabstyle.attribute?
       
  5969     & db.floatstyle.attribute?
       
  5970   db.html.table =
       
  5971     
       
  5972     ## A formal (captioned) HTML table in a document
       
  5973     element table { db.html.table.attlist, db.html.table.model }
       
  5974 }
       
  5975 div {
       
  5976   db.html.informaltable.attlist =
       
  5977     db.html.attrs & db.html.table.attributes
       
  5978   db.html.informaltable =
       
  5979     
       
  5980     ## An HTML table without a title
       
  5981     element informaltable {
       
  5982       db.html.informaltable.attlist, db.html.informaltable.model
       
  5983     }
       
  5984 }
       
  5985 div {
       
  5986   db.html.caption.attlist = db.html.attrs
       
  5987   db.html.caption =
       
  5988     
       
  5989     ## An HTML table caption
       
  5990     element caption { db.html.caption.attlist, db.all.inlines* }
       
  5991 }
       
  5992 div {
       
  5993   db.html.col.attlist =
       
  5994     db.html.attrs
       
  5995     & 
       
  5996       ## This attribute, whose value must be an integer > 0, specifies the number of columns spanned
       
  5997       ##  by the col
       
  5998       ##  element; the col
       
  5999       ##  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
       
  6000       ##  element shares its attributes with the next N-1 columns.
       
  6001       attribute span { xsd:nonNegativeInteger }?
       
  6002     & 
       
  6003       ## Specifies a default width for each column spanned by the current col
       
  6004       ##  element. It has the same meaning as the width
       
  6005       ##  attribute for the colgroup
       
  6006       ##  element and overrides it.
       
  6007       attribute width { text }?
       
  6008     & db.html.cellhalign
       
  6009     & db.html.cellvalign
       
  6010   db.html.col =
       
  6011     
       
  6012     ## Specifications for a column in an HTML table
       
  6013     element col { db.html.col.attlist, empty }
       
  6014 }
       
  6015 div {
       
  6016   db.html.colgroup.attlist =
       
  6017     db.html.attrs
       
  6018     & 
       
  6019       ## 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
       
  6020       ##  defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup
       
  6021       ##  element defines a column group containing N columns. User agents must ignore this attribute if the colgroup
       
  6022       ##  element contains one or more col
       
  6023       ##  elements.
       
  6024       attribute span { xsd:nonNegativeInteger }?
       
  6025     & 
       
  6026       ## 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*
       
  6027       ##  (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*
       
  6028       ##  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
       
  6029       ##  element.
       
  6030       attribute width { text }?
       
  6031     & db.html.cellhalign
       
  6032     & db.html.cellvalign
       
  6033   db.html.colgroup =
       
  6034     
       
  6035     ## A group of columns in an HTML table
       
  6036     element colgroup { db.html.colgroup.attlist, db.html.col* }
       
  6037 }
       
  6038 div {
       
  6039   db.html.thead.attlist =
       
  6040     db.html.attrs & db.html.cellhalign & db.html.cellvalign
       
  6041   db.html.thead =
       
  6042     
       
  6043     ## A table header consisting of one or more rows in an HTML table
       
  6044     element thead { db.html.thead.attlist, db.html.tr+ }
       
  6045 }
       
  6046 div {
       
  6047   db.html.tfoot.attlist =
       
  6048     db.html.attrs & db.html.cellhalign & db.html.cellvalign
       
  6049   db.html.tfoot =
       
  6050     
       
  6051     ## A table footer consisting of one or more rows in an HTML table
       
  6052     element tfoot { db.html.tfoot.attlist, db.html.tr+ }
       
  6053 }
       
  6054 div {
       
  6055   db.html.tbody.attlist =
       
  6056     db.html.attrs & db.html.cellhalign & db.html.cellvalign
       
  6057   db.html.tbody =
       
  6058     
       
  6059     ## A wrapper for the rows of an HTML table or informal HTML table
       
  6060     element tbody { db.html.tbody.attlist, db.html.tr+ }
       
  6061 }
       
  6062 div {
       
  6063   db.html.tr.attlist =
       
  6064     db.html.attrs & db.html.cellhalign & db.html.cellvalign
       
  6065   db.html.tr =
       
  6066     
       
  6067     ## A row in an HTML table
       
  6068     element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ }
       
  6069 }
       
  6070 div {
       
  6071   db.html.th.attlist =
       
  6072     db.html.attrs
       
  6073     & db.html.tablecell.attributes
       
  6074     & db.html.cellhalign
       
  6075     & db.html.cellvalign
       
  6076   db.html.th =
       
  6077     
       
  6078     ## A table header entry in an HTML table
       
  6079     element th {
       
  6080       db.html.th.attlist, (db.all.inlines* | db.all.blocks*)
       
  6081     }
       
  6082 }
       
  6083 div {
       
  6084   db.html.td.attlist =
       
  6085     db.html.attrs
       
  6086     & db.html.tablecell.attributes
       
  6087     & db.html.cellhalign
       
  6088     & db.html.cellvalign
       
  6089   db.html.td =
       
  6090     
       
  6091     ## A table entry in an HTML table
       
  6092     element td {
       
  6093       db.html.td.attlist, (db.all.inlines* | db.all.blocks*)
       
  6094     }
       
  6095 }
       
  6096 div {
       
  6097   db.msgset.role.attribute = attribute role { text }
       
  6098   db.msgset.attlist =
       
  6099     db.msgset.role.attribute?
       
  6100     & db.common.attributes
       
  6101     & db.common.linking.attributes
       
  6102   db.msgset.info = db._info.title.only
       
  6103   db.msgset =
       
  6104     
       
  6105     ## A detailed set of messages, usually error messages
       
  6106     element msgset {
       
  6107       db.msgset.attlist,
       
  6108       db.msgset.info,
       
  6109       (db.msgentry+ | db.simplemsgentry+)
       
  6110     }
       
  6111 }
       
  6112 div {
       
  6113   db.msgentry.role.attribute = attribute role { text }
       
  6114   db.msgentry.attlist =
       
  6115     db.msgentry.role.attribute?
       
  6116     & db.common.attributes
       
  6117     & db.common.linking.attributes
       
  6118   db.msgentry =
       
  6119     
       
  6120     ## A wrapper for an entry in a message set
       
  6121     element msgentry {
       
  6122       db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan*
       
  6123     }
       
  6124 }
       
  6125 div {
       
  6126   db.simplemsgentry.role.attribute = attribute role { text }
       
  6127   db.simplemsgentry.msgaud.attribute =
       
  6128     
       
  6129     ## The audience to which the message relevant
       
  6130     attribute msgaud { text }
       
  6131   db.simplemsgentry.msgorig.attribute =
       
  6132     
       
  6133     ## The origin of the message
       
  6134     attribute msgorig { text }
       
  6135   db.simplemsgentry.msglevel.attribute =
       
  6136     
       
  6137     ## The level of importance or severity of a message
       
  6138     attribute msglevel { text }
       
  6139   db.simplemsgentry.attlist =
       
  6140     db.simplemsgentry.role.attribute?
       
  6141     & db.common.attributes
       
  6142     & db.common.linking.attributes
       
  6143     & db.simplemsgentry.msgaud.attribute?
       
  6144     & db.simplemsgentry.msgorig.attribute?
       
  6145     & db.simplemsgentry.msglevel.attribute?
       
  6146   db.simplemsgentry =
       
  6147     
       
  6148     ## A wrapper for a simpler entry in a message set
       
  6149     element simplemsgentry {
       
  6150       db.simplemsgentry.attlist, db.msgtext, db.msgexplan+
       
  6151     }
       
  6152 }
       
  6153 div {
       
  6154   db.msg.role.attribute = attribute role { text }
       
  6155   db.msg.attlist =
       
  6156     db.msg.role.attribute?
       
  6157     & db.common.attributes
       
  6158     & db.common.linking.attributes
       
  6159   db.msg.info = db._info.title.only
       
  6160   db.msg =
       
  6161     
       
  6162     ## A message in a message set
       
  6163     element msg {
       
  6164       db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)*
       
  6165     }
       
  6166 }
       
  6167 div {
       
  6168   db.msgmain.role.attribute = attribute role { text }
       
  6169   db.msgmain.attlist =
       
  6170     db.msgmain.role.attribute?
       
  6171     & db.common.attributes
       
  6172     & db.common.linking.attributes
       
  6173   db.msgmain.info = db._info.title.only
       
  6174   db.msgmain =
       
  6175     
       
  6176     ## The primary component of a message in a message set 
       
  6177     element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext }
       
  6178 }
       
  6179 div {
       
  6180   db.msgsub.role.attribute = attribute role { text }
       
  6181   db.msgsub.attlist =
       
  6182     db.msgsub.role.attribute?
       
  6183     & db.common.attributes
       
  6184     & db.common.linking.attributes
       
  6185   db.msgsub.info = db._info.title.only
       
  6186   db.msgsub =
       
  6187     
       
  6188     ## A subcomponent of a message in a message set
       
  6189     element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext }
       
  6190 }
       
  6191 div {
       
  6192   db.msgrel.role.attribute = attribute role { text }
       
  6193   db.msgrel.attlist =
       
  6194     db.msgrel.role.attribute?
       
  6195     & db.common.attributes
       
  6196     & db.common.linking.attributes
       
  6197   db.msgrel.info = db._info.title.only
       
  6198   db.msgrel =
       
  6199     
       
  6200     ## A related component of a message in a message set
       
  6201     element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext }
       
  6202 }
       
  6203 div {
       
  6204   db.msgtext.role.attribute = attribute role { text }
       
  6205   db.msgtext.attlist =
       
  6206     db.msgtext.role.attribute?
       
  6207     & db.common.attributes
       
  6208     & db.common.linking.attributes
       
  6209   db.msgtext =
       
  6210     
       
  6211     ## The actual text of a message component in a message set
       
  6212     element msgtext { db.msgtext.attlist, db.all.blocks+ }
       
  6213 }
       
  6214 div {
       
  6215   db.msginfo.role.attribute = attribute role { text }
       
  6216   db.msginfo.attlist =
       
  6217     db.msginfo.role.attribute?
       
  6218     & db.common.attributes
       
  6219     & db.common.linking.attributes
       
  6220   db.msginfo =
       
  6221     
       
  6222     ## Information about a message in a message set
       
  6223     element msginfo {
       
  6224       db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)*
       
  6225     }
       
  6226 }
       
  6227 div {
       
  6228   db.msglevel.role.attribute = attribute role { text }
       
  6229   db.msglevel.attlist =
       
  6230     db.msglevel.role.attribute?
       
  6231     & db.common.attributes
       
  6232     & db.common.linking.attributes
       
  6233   db.msglevel =
       
  6234     
       
  6235     ## The level of importance or severity of a message in a message set
       
  6236     element msglevel { db.msglevel.attlist, db._text }
       
  6237 }
       
  6238 div {
       
  6239   db.msgorig.role.attribute = attribute role { text }
       
  6240   db.msgorig.attlist =
       
  6241     db.msgorig.role.attribute?
       
  6242     & db.common.attributes
       
  6243     & db.common.linking.attributes
       
  6244   db.msgorig =
       
  6245     
       
  6246     ## The origin of a message in a message set
       
  6247     element msgorig { db.msgorig.attlist, db._text }
       
  6248 }
       
  6249 div {
       
  6250   db.msgaud.role.attribute = attribute role { text }
       
  6251   db.msgaud.attlist =
       
  6252     db.msgaud.role.attribute?
       
  6253     & db.common.attributes
       
  6254     & db.common.linking.attributes
       
  6255   db.msgaud =
       
  6256     
       
  6257     ## The audience to which a message in a message set is relevant
       
  6258     element msgaud { db.msgaud.attlist, db._text }
       
  6259 }
       
  6260 div {
       
  6261   db.msgexplan.role.attribute = attribute role { text }
       
  6262   db.msgexplan.attlist =
       
  6263     db.msgexplan.role.attribute?
       
  6264     & db.common.attributes
       
  6265     & db.common.linking.attributes
       
  6266   db.msgexplan.info = db._info.title.only
       
  6267   db.msgexplan =
       
  6268     
       
  6269     ## Explanatory material relating to a message in a message set
       
  6270     element msgexplan {
       
  6271       db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+
       
  6272     }
       
  6273 }
       
  6274 div {
       
  6275   db.qandaset.role.attribute = attribute role { text }
       
  6276   db.qandaset.defaultlabel.enumeration =
       
  6277     
       
  6278     ## No labels
       
  6279     "none"
       
  6280     | 
       
  6281       ## Numeric labels
       
  6282       "number"
       
  6283     | 
       
  6284       ## "Q:" and "A:" labels
       
  6285       "qanda"
       
  6286   db.qandaset.defaultlabel.attribute =
       
  6287     
       
  6288     ## Specifies the default labelling
       
  6289     attribute defaultlabel { db.qandaset.defaultlabel.enumeration }
       
  6290   db.qandaset.attlist =
       
  6291     db.qandaset.role.attribute?
       
  6292     & db.common.attributes
       
  6293     & db.common.linking.attributes
       
  6294     & db.qandaset.defaultlabel.attribute?
       
  6295   db.qandaset.info = db._info.title.only
       
  6296   db.qandaset =
       
  6297     
       
  6298     ## A question-and-answer set
       
  6299     element qandaset {
       
  6300       db.qandaset.attlist,
       
  6301       db.qandaset.info,
       
  6302       db.all.blocks*,
       
  6303       (db.qandadiv+ | db.qandaentry+)
       
  6304     }
       
  6305 }
       
  6306 div {
       
  6307   db.qandadiv.role.attribute = attribute role { text }
       
  6308   db.qandadiv.attlist =
       
  6309     db.qandadiv.role.attribute?
       
  6310     & db.common.attributes
       
  6311     & db.common.linking.attributes
       
  6312   db.qandadiv.info = db._info.title.only
       
  6313   db.qandadiv =
       
  6314     
       
  6315     ## A titled division in a qandaset
       
  6316     element qandadiv {
       
  6317       db.qandadiv.attlist,
       
  6318       db.qandadiv.info,
       
  6319       db.all.blocks*,
       
  6320       (db.qandadiv+ | db.qandaentry+)
       
  6321     }
       
  6322 }
       
  6323 div {
       
  6324   db.qandaentry.role.attribute = attribute role { text }
       
  6325   db.qandaentry.attlist =
       
  6326     db.qandaentry.role.attribute?
       
  6327     & db.common.attributes
       
  6328     & db.common.linking.attributes
       
  6329   db.qandaentry.info = db._info.title.only
       
  6330   db.qandaentry =
       
  6331     
       
  6332     ## A question/answer set within a qandaset
       
  6333     element qandaentry {
       
  6334       db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer*
       
  6335     }
       
  6336 }
       
  6337 div {
       
  6338   db.question.role.attribute = attribute role { text }
       
  6339   db.question.attlist =
       
  6340     db.question.role.attribute?
       
  6341     & db.common.attributes
       
  6342     & db.common.linking.attributes
       
  6343   db.question =
       
  6344     
       
  6345     ## A question in a qandaset
       
  6346     element question { db.question.attlist, db.label?, db.all.blocks+ }
       
  6347 }
       
  6348 div {
       
  6349   db.answer.role.attribute = attribute role { text }
       
  6350   db.answer.attlist =
       
  6351     db.answer.role.attribute?
       
  6352     & db.common.attributes
       
  6353     & db.common.linking.attributes
       
  6354   db.answer =
       
  6355     
       
  6356     ## An answer to a question posed in a qandaset
       
  6357     element answer { db.answer.attlist, db.label?, db.all.blocks+ }
       
  6358 }
       
  6359 div {
       
  6360   db.label.role.attribute = attribute role { text }
       
  6361   db.label.attlist =
       
  6362     db.label.role.attribute?
       
  6363     & db.common.attributes
       
  6364     & db.common.linking.attributes
       
  6365   db.label =
       
  6366     
       
  6367     ## A label on a question or answer
       
  6368     element label { db.label.attlist, db._text }
       
  6369 }
       
  6370 db.math.inlines = db.inlineequation
       
  6371 db.equation.content = (db.mediaobject+ | db.mathphrase+) | db._any.mml+
       
  6372 db.inlineequation.content =
       
  6373   (db.inlinemediaobject+ | db.mathphrase+) | db._any.mml+
       
  6374 div {
       
  6375   db.equation.role.attribute = attribute role { text }
       
  6376   db.equation.label.attribute = db.label.attribute
       
  6377   db.equation.attlist =
       
  6378     db.equation.role.attribute?
       
  6379     & db.common.attributes
       
  6380     & db.common.linking.attributes
       
  6381     & db.equation.label.attribute?
       
  6382     & db.pgwide.attribute?
       
  6383     & db.floatstyle.attribute?
       
  6384   db.equation.info = db._info.title.only
       
  6385   db.equation =
       
  6386     
       
  6387     ## A displayed mathematical equation
       
  6388     element equation {
       
  6389       db.equation.attlist,
       
  6390       db.equation.info,
       
  6391       db.alt?,
       
  6392       db.equation.content,
       
  6393       db.caption?
       
  6394     }
       
  6395 }
       
  6396 div {
       
  6397   db.informalequation.role.attribute = attribute role { text }
       
  6398   db.informalequation.attlist =
       
  6399     db.informalequation.role.attribute?
       
  6400     & db.common.attributes
       
  6401     & db.common.linking.attributes
       
  6402   db.informalequation.info = db._info.title.forbidden
       
  6403   db.informalequation =
       
  6404     
       
  6405     ## A displayed mathematical equation without a title
       
  6406     element informalequation {
       
  6407       db.informalequation.attlist,
       
  6408       db.informalequation.info,
       
  6409       db.alt?,
       
  6410       db.equation.content,
       
  6411       db.caption?
       
  6412     }
       
  6413 }
       
  6414 div {
       
  6415   db.inlineequation.role.attribute = attribute role { text }
       
  6416   db.inlineequation.attlist =
       
  6417     db.inlineequation.role.attribute?
       
  6418     & db.common.attributes
       
  6419     & db.common.linking.attributes
       
  6420   db.inlineequation =
       
  6421     
       
  6422     ## A mathematical equation or expression occurring inline
       
  6423     element inlineequation {
       
  6424       db.inlineequation.attlist, db.alt?, db.inlineequation.content
       
  6425     }
       
  6426 }
       
  6427 div {
       
  6428   db.mathphrase.role.attribute = attribute role { text }
       
  6429   db.mathphrase.attlist =
       
  6430     db.mathphrase.role.attribute?
       
  6431     & db.common.attributes
       
  6432     & db.common.linking.attributes
       
  6433   db.mathphrase =
       
  6434     
       
  6435     ## A mathematical phrase that can be represented with ordinary text and a small amount of markup
       
  6436     element mathphrase {
       
  6437       db.mathphrase.attlist,
       
  6438       (db._text | db.ubiq.inlines | db._emphasis)*
       
  6439     }
       
  6440 }
       
  6441 div {
       
  6442   db.imagedata.mathml.role.attribute = attribute role { text }
       
  6443   db.imagedata.mathml.attlist =
       
  6444     db.imagedata.mathml.role.attribute?
       
  6445     & db.common.attributes
       
  6446     & 
       
  6447       ## Specifies that the format of the data is MathML
       
  6448       attribute format {
       
  6449         
       
  6450         ## Specifies MathML.
       
  6451         "mathml"
       
  6452       }?
       
  6453     & db.imagedata.align.attribute?
       
  6454     & db.imagedata.valign.attribute?
       
  6455     & db.imagedata.width.attribute?
       
  6456     & db.imagedata.contentwidth.attribute?
       
  6457     & db.imagedata.scalefit.attribute?
       
  6458     & db.imagedata.scale.attribute?
       
  6459     & db.imagedata.depth.attribute?
       
  6460     & db.imagedata.contentdepth.attribute?
       
  6461   db.imagedata.mathml.info = db._info.title.forbidden
       
  6462   db.imagedata.mathml =
       
  6463     
       
  6464     ## A MathML expression in a media object
       
  6465     element imagedata {
       
  6466       db.imagedata.mathml.attlist,
       
  6467       db.imagedata.mathml.info,
       
  6468       db._any.mml+
       
  6469     }
       
  6470 }
       
  6471 div {
       
  6472   db._any.mml =
       
  6473     
       
  6474     ## Any element from the MathML namespace
       
  6475     element mml:* { (db._any.attribute | text | db._any)* }
       
  6476 }
       
  6477 div {
       
  6478   db.imagedata.svg.role.attribute = attribute role { text }
       
  6479   db.imagedata.svg.attlist =
       
  6480     db.imagedata.svg.role.attribute?
       
  6481     & db.common.attributes
       
  6482     & 
       
  6483       ## Specifies that the format of the data is SVG
       
  6484       attribute format {
       
  6485         
       
  6486         ## Specifies SVG.
       
  6487         "svg"
       
  6488       }?
       
  6489     & db.imagedata.align.attribute?
       
  6490     & db.imagedata.valign.attribute?
       
  6491     & db.imagedata.width.attribute?
       
  6492     & db.imagedata.contentwidth.attribute?
       
  6493     & db.imagedata.scalefit.attribute?
       
  6494     & db.imagedata.scale.attribute?
       
  6495     & db.imagedata.depth.attribute?
       
  6496     & db.imagedata.contentdepth.attribute?
       
  6497   db.imagedata.svg.info = db._info.title.forbidden
       
  6498   db.imagedata.svg =
       
  6499     
       
  6500     ## An SVG drawing in a media object
       
  6501     element imagedata {
       
  6502       db.imagedata.svg.attlist, db.imagedata.svg.info, db._any.svg+
       
  6503     }
       
  6504 }
       
  6505 div {
       
  6506   db._any.svg =
       
  6507     
       
  6508     ## Any element from the SVG namespace
       
  6509     element svg:* { (db._any.attribute | text | db._any)* }
       
  6510 }
       
  6511 db.markup.inlines =
       
  6512   db.tag
       
  6513   | db.markup
       
  6514   | db.token
       
  6515   | db.symbol
       
  6516   | db.literal
       
  6517   | db.code
       
  6518   | db.constant
       
  6519   | db.email
       
  6520   | db.uri
       
  6521 div {
       
  6522   db.markup.role.attribute = attribute role { text }
       
  6523   db.markup.attlist =
       
  6524     db.markup.role.attribute?
       
  6525     & db.common.attributes
       
  6526     & db.common.linking.attributes
       
  6527   db.markup =
       
  6528     
       
  6529     ## A string of formatting markup in text that is to be represented literally
       
  6530     element markup { db.markup.attlist, db._text }
       
  6531 }
       
  6532 div {
       
  6533   db.tag.role.attribute = attribute role { text }
       
  6534   db.tag.class.enumeration =
       
  6535     
       
  6536     ## An attribute
       
  6537     "attribute"
       
  6538     | 
       
  6539       ## An attribute value
       
  6540       "attvalue"
       
  6541     | 
       
  6542       ## An element
       
  6543       "element"
       
  6544     | 
       
  6545       ## An empty element tag
       
  6546       "emptytag"
       
  6547     | 
       
  6548       ## An end tag
       
  6549       "endtag"
       
  6550     | 
       
  6551       ## A general entity
       
  6552       "genentity"
       
  6553     | 
       
  6554       ## The local name part of a qualified name
       
  6555       "localname"
       
  6556     | 
       
  6557       ## A namespace
       
  6558       "namespace"
       
  6559     | 
       
  6560       ## A numeric character reference
       
  6561       "numcharref"
       
  6562     | 
       
  6563       ## A parameter entity
       
  6564       "paramentity"
       
  6565     | 
       
  6566       ## A processing instruction
       
  6567       "pi"
       
  6568     | 
       
  6569       ## The prefix part of a qualified name
       
  6570       "prefix"
       
  6571     | 
       
  6572       ## An SGML comment
       
  6573       "comment"
       
  6574     | 
       
  6575       ## A start tag
       
  6576       "starttag"
       
  6577     | 
       
  6578       ## An XML processing instruction
       
  6579       "xmlpi"
       
  6580   db.tag.class.attribute =
       
  6581     
       
  6582     ## Identifies the nature of the tag content
       
  6583     attribute class { db.tag.class.enumeration }
       
  6584   db.tag.namespace.attribute =
       
  6585     
       
  6586     ## Identifies the namespace of the tag content
       
  6587     attribute namespace { xsd:anyURI }
       
  6588   db.tag.attlist =
       
  6589     db.tag.role.attribute?
       
  6590     & db.common.attributes
       
  6591     & db.common.linking.attributes
       
  6592     & db.tag.class.attribute?
       
  6593     & db.tag.namespace.attribute?
       
  6594   db.tag =
       
  6595     
       
  6596     ## A component of XML (or SGML) markup
       
  6597     element tag { db.tag.attlist, db._text }
       
  6598 }
       
  6599 div {
       
  6600   db.symbol.class.attribute =
       
  6601     
       
  6602     ## Identifies the class of symbol
       
  6603     attribute class {
       
  6604       
       
  6605       ## The value is a limit of some kind
       
  6606       "limit"
       
  6607     }
       
  6608   db.symbol.role.attribute = attribute role { text }
       
  6609   db.symbol.attlist =
       
  6610     db.symbol.role.attribute?
       
  6611     & db.common.attributes
       
  6612     & db.common.linking.attributes
       
  6613     & db.symbol.class.attribute?
       
  6614   db.symbol =
       
  6615     
       
  6616     ## A name that is replaced by a value before processing
       
  6617     element symbol { db.symbol.attlist, db._text }
       
  6618 }
       
  6619 div {
       
  6620   db.token.role.attribute = attribute role { text }
       
  6621   db.token.attlist =
       
  6622     db.token.role.attribute?
       
  6623     & db.common.attributes
       
  6624     & db.common.linking.attributes
       
  6625   db.token =
       
  6626     
       
  6627     ## A unit of information
       
  6628     element token { db.token.attlist, db._text }
       
  6629 }
       
  6630 div {
       
  6631   db.literal.role.attribute = attribute role { text }
       
  6632   db.literal.attlist =
       
  6633     db.literal.role.attribute?
       
  6634     & db.common.attributes
       
  6635     & db.common.linking.attributes
       
  6636   db.literal =
       
  6637     
       
  6638     ## Inline text that is some literal value
       
  6639     element literal { db.literal.attlist, db._text }
       
  6640 }
       
  6641 div {
       
  6642   code.language.attribute =
       
  6643     
       
  6644     ## Identifies the (computer) language of the code fragment
       
  6645     attribute language { text }
       
  6646   db.code.role.attribute = attribute role { text }
       
  6647   db.code.attlist =
       
  6648     db.code.role.attribute?
       
  6649     & db.common.attributes
       
  6650     & db.common.linking.attributes
       
  6651     & code.language.attribute?
       
  6652   db.code =
       
  6653     
       
  6654     ## An inline code fragment
       
  6655     element code {
       
  6656       db.code.attlist, (db.programming.inlines | db._text)*
       
  6657     }
       
  6658 }
       
  6659 div {
       
  6660   db.constant.class.attribute =
       
  6661     
       
  6662     ## Identifies the class of constant
       
  6663     attribute class {
       
  6664       
       
  6665       ## The value is a limit of some kind
       
  6666       "limit"
       
  6667     }
       
  6668   db.constant.role.attribute = attribute role { text }
       
  6669   db.constant.attlist =
       
  6670     db.constant.role.attribute?
       
  6671     & db.common.attributes
       
  6672     & db.common.linking.attributes
       
  6673     & db.constant.class.attribute?
       
  6674   db.constant =
       
  6675     
       
  6676     ## A programming or system constant
       
  6677     element constant { db.constant.attlist, db._text }
       
  6678 }
       
  6679 div {
       
  6680   db.productname.role.attribute = attribute role { text }
       
  6681   db.productname.class.enumeration =
       
  6682     
       
  6683     ## A name with a copyright
       
  6684     "copyright"
       
  6685     | 
       
  6686       ## A name with a registered copyright
       
  6687       "registered"
       
  6688     | 
       
  6689       ## A name of a service
       
  6690       "service"
       
  6691     | 
       
  6692       ## A name which is trademarked
       
  6693       "trade"
       
  6694   db.productname.class.attribute =
       
  6695     
       
  6696     ## Specifies the class of product name
       
  6697     attribute class { db.productname.class.enumeration }
       
  6698   db.productname.attlist =
       
  6699     db.productname.role.attribute?
       
  6700     & db.common.attributes
       
  6701     & db.common.linking.attributes
       
  6702     & db.productname.class.attribute?
       
  6703   db.productname =
       
  6704     
       
  6705     ## The formal name of a product
       
  6706     element productname { db.productname.attlist, db._text }
       
  6707 }
       
  6708 div {
       
  6709   db.productnumber.role.attribute = attribute role { text }
       
  6710   db.productnumber.attlist =
       
  6711     db.productnumber.role.attribute?
       
  6712     & db.common.attributes
       
  6713     & db.common.linking.attributes
       
  6714   db.productnumber =
       
  6715     
       
  6716     ## A number assigned to a product
       
  6717     element productnumber { db.productnumber.attlist, db._text }
       
  6718 }
       
  6719 div {
       
  6720   db.database.class.enumeration =
       
  6721     
       
  6722     ## An alternate or secondary key
       
  6723     "altkey"
       
  6724     | 
       
  6725       ## A constraint
       
  6726       "constraint"
       
  6727     | 
       
  6728       ## A data type
       
  6729       "datatype"
       
  6730     | 
       
  6731       ## A field
       
  6732       "field"
       
  6733     | 
       
  6734       ## A foreign key
       
  6735       "foreignkey"
       
  6736     | 
       
  6737       ## A group
       
  6738       "group"
       
  6739     | 
       
  6740       ## An index
       
  6741       "index"
       
  6742     | 
       
  6743       ## The first or primary key
       
  6744       "key1"
       
  6745     | 
       
  6746       ## An alternate or secondary key
       
  6747       "key2"
       
  6748     | 
       
  6749       ## A name
       
  6750       "name"
       
  6751     | 
       
  6752       ## The primary key
       
  6753       "primarykey"
       
  6754     | 
       
  6755       ## A (stored) procedure
       
  6756       "procedure"
       
  6757     | 
       
  6758       ## A record
       
  6759       "record"
       
  6760     | 
       
  6761       ## A rule
       
  6762       "rule"
       
  6763     | 
       
  6764       ## The secondary key
       
  6765       "secondarykey"
       
  6766     | 
       
  6767       ## A table
       
  6768       "table"
       
  6769     | 
       
  6770       ## A user
       
  6771       "user"
       
  6772     | 
       
  6773       ## A view
       
  6774       "view"
       
  6775   db.database.class.attribute =
       
  6776     
       
  6777     ## Identifies the class of database artifact
       
  6778     attribute class { db.database.class.enumeration }
       
  6779   db.database.role.attribute = attribute role { text }
       
  6780   db.database.attlist =
       
  6781     db.database.role.attribute?
       
  6782     & db.common.attributes
       
  6783     & db.common.linking.attributes
       
  6784     & db.database.class.attribute?
       
  6785   db.database =
       
  6786     
       
  6787     ## The name of a database, or part of a database
       
  6788     element database { db.database.attlist, db._text }
       
  6789 }
       
  6790 div {
       
  6791   db.application.class.enumeration =
       
  6792     
       
  6793     ## A hardware application
       
  6794     "hardware"
       
  6795     | 
       
  6796       ## A software application
       
  6797       "software"
       
  6798   db.application.class.attribute =
       
  6799     
       
  6800     ## Identifies the class of application
       
  6801     attribute class { db.application.class.enumeration }
       
  6802   db.application.role.attribute = attribute role { text }
       
  6803   db.application.attlist =
       
  6804     db.application.role.attribute?
       
  6805     & db.common.attributes
       
  6806     & db.common.linking.attributes
       
  6807     & db.application.class.attribute?
       
  6808   db.application =
       
  6809     
       
  6810     ## The name of a software program
       
  6811     element application { db.application.attlist, db._text }
       
  6812 }
       
  6813 div {
       
  6814   db.hardware.role.attribute = attribute role { text }
       
  6815   db.hardware.attlist =
       
  6816     db.hardware.role.attribute?
       
  6817     & db.common.attributes
       
  6818     & db.common.linking.attributes
       
  6819   db.hardware =
       
  6820     
       
  6821     ## A physical part of a computer system
       
  6822     element hardware { db.hardware.attlist, db._text }
       
  6823 }
       
  6824 db.gui.inlines =
       
  6825   db.guiicon
       
  6826   | db.guibutton
       
  6827   | db.guimenuitem
       
  6828   | db.guimenu
       
  6829   | db.guisubmenu
       
  6830   | db.guilabel
       
  6831   | db.menuchoice
       
  6832   | db.mousebutton
       
  6833 div {
       
  6834   db.guibutton.role.attribute = attribute role { text }
       
  6835   db.guibutton.attlist =
       
  6836     db.guibutton.role.attribute?
       
  6837     & db.common.attributes
       
  6838     & db.common.linking.attributes
       
  6839   db.guibutton =
       
  6840     
       
  6841     ## The text on a button in a GUI
       
  6842     element guibutton {
       
  6843       db.guibutton.attlist,
       
  6844       (db._text | db.accel | db.superscript | db.subscript)*
       
  6845     }
       
  6846 }
       
  6847 div {
       
  6848   db.guiicon.role.attribute = attribute role { text }
       
  6849   db.guiicon.attlist =
       
  6850     db.guiicon.role.attribute?
       
  6851     & db.common.attributes
       
  6852     & db.common.linking.attributes
       
  6853   db.guiicon =
       
  6854     
       
  6855     ## Graphic and/or text appearing as a icon in a GUI
       
  6856     element guiicon {
       
  6857       db.guiicon.attlist,
       
  6858       (db._text | db.accel | db.superscript | db.subscript)*
       
  6859     }
       
  6860 }
       
  6861 div {
       
  6862   db.guilabel.role.attribute = attribute role { text }
       
  6863   db.guilabel.attlist =
       
  6864     db.guilabel.role.attribute?
       
  6865     & db.common.attributes
       
  6866     & db.common.linking.attributes
       
  6867   db.guilabel =
       
  6868     
       
  6869     ## The text of a label in a GUI
       
  6870     element guilabel {
       
  6871       db.guilabel.attlist,
       
  6872       (db._text | db.accel | db.superscript | db.subscript)*
       
  6873     }
       
  6874 }
       
  6875 div {
       
  6876   db.guimenu.role.attribute = attribute role { text }
       
  6877   db.guimenu.attlist =
       
  6878     db.guimenu.role.attribute?
       
  6879     & db.common.attributes
       
  6880     & db.common.linking.attributes
       
  6881   db.guimenu =
       
  6882     
       
  6883     ## The name of a menu in a GUI
       
  6884     element guimenu {
       
  6885       db.guimenu.attlist,
       
  6886       (db._text | db.accel | db.superscript | db.subscript)*
       
  6887     }
       
  6888 }
       
  6889 div {
       
  6890   db.guimenuitem.role.attribute = attribute role { text }
       
  6891   db.guimenuitem.attlist =
       
  6892     db.guimenuitem.role.attribute?
       
  6893     & db.common.attributes
       
  6894     & db.common.linking.attributes
       
  6895   db.guimenuitem =
       
  6896     
       
  6897     ## The name of a terminal menu item in a GUI
       
  6898     element guimenuitem {
       
  6899       db.guimenuitem.attlist,
       
  6900       (db._text | db.accel | db.superscript | db.subscript)*
       
  6901     }
       
  6902 }
       
  6903 div {
       
  6904   db.guisubmenu.role.attribute = attribute role { text }
       
  6905   db.guisubmenu.attlist =
       
  6906     db.guisubmenu.role.attribute?
       
  6907     & db.common.attributes
       
  6908     & db.common.linking.attributes
       
  6909   db.guisubmenu =
       
  6910     
       
  6911     ## The name of a submenu in a GUI
       
  6912     element guisubmenu {
       
  6913       db.guisubmenu.attlist,
       
  6914       (db._text | db.accel | db.superscript | db.subscript)*
       
  6915     }
       
  6916 }
       
  6917 div {
       
  6918   db.menuchoice.role.attribute = attribute role { text }
       
  6919   db.menuchoice.attlist =
       
  6920     db.menuchoice.role.attribute?
       
  6921     & db.common.attributes
       
  6922     & db.common.linking.attributes
       
  6923   db.menuchoice =
       
  6924     
       
  6925     ## A selection or series of selections from a menu
       
  6926     element menuchoice {
       
  6927       db.menuchoice.attlist,
       
  6928       db.shortcut?,
       
  6929       (db.guibutton
       
  6930        | db.guiicon
       
  6931        | db.guilabel
       
  6932        | db.guimenu
       
  6933        | db.guimenuitem
       
  6934        | db.guisubmenu)+
       
  6935     }
       
  6936 }
       
  6937 div {
       
  6938   db.mousebutton.role.attribute = attribute role { text }
       
  6939   db.mousebutton.attlist =
       
  6940     db.mousebutton.role.attribute?
       
  6941     & db.common.attributes
       
  6942     & db.common.linking.attributes
       
  6943   db.mousebutton =
       
  6944     
       
  6945     ## The conventional name of a mouse button
       
  6946     element mousebutton { db.mousebutton.attlist, db._text }
       
  6947 }
       
  6948 db.keyboard.inlines =
       
  6949   db.keycombo
       
  6950   | db.keycap
       
  6951   | db.keycode
       
  6952   | db.keysym
       
  6953   | db.shortcut
       
  6954   | db.accel
       
  6955 div {
       
  6956   db.keycap.function.enumeration =
       
  6957     
       
  6958     ## The "Alt" key
       
  6959     "alt"
       
  6960     | 
       
  6961       ## The "Backspace" key
       
  6962       "backspace"
       
  6963     | 
       
  6964       ## The "Command" key
       
  6965       "command"
       
  6966     | 
       
  6967       ## The "Control" key
       
  6968       "control"
       
  6969     | 
       
  6970       ## The "Delete" key
       
  6971       "delete"
       
  6972     | 
       
  6973       ## The down arrow
       
  6974       "down"
       
  6975     | 
       
  6976       ## The "End" key
       
  6977       "end"
       
  6978     | 
       
  6979       ## The "Enter" or "Return" key
       
  6980       "enter"
       
  6981     | 
       
  6982       ## The "Escape" key
       
  6983       "escape"
       
  6984     | 
       
  6985       ## The "Home" key
       
  6986       "home"
       
  6987     | 
       
  6988       ## The "Insert" key
       
  6989       "insert"
       
  6990     | 
       
  6991       ## The left arrow
       
  6992       "left"
       
  6993     | 
       
  6994       ## The "Meta" key
       
  6995       "meta"
       
  6996     | 
       
  6997       ## The "Option" key
       
  6998       "option"
       
  6999     | 
       
  7000       ## The page down key
       
  7001       "pagedown"
       
  7002     | 
       
  7003       ## The page up key
       
  7004       "pageup"
       
  7005     | 
       
  7006       ## The right arrow
       
  7007       "right"
       
  7008     | 
       
  7009       ## The "Shift" key
       
  7010       "shift"
       
  7011     | 
       
  7012       ## The spacebar
       
  7013       "space"
       
  7014     | 
       
  7015       ## The "Tab" key
       
  7016       "tab"
       
  7017     | 
       
  7018       ## The up arrow
       
  7019       "up"
       
  7020   db.keycap.function-enum.attribute =
       
  7021     
       
  7022     ## Identifies the function key
       
  7023     attribute function { db.keycap.function.enumeration }?
       
  7024   db.keycap.function-other.attributes =
       
  7025     
       
  7026     ## Identifies the function key
       
  7027     attribute function {
       
  7028       
       
  7029       ## Indicates a non-standard function key
       
  7030       "other"
       
  7031     }?,
       
  7032     
       
  7033     ## Specifies a keyword that identifies the non-standard key
       
  7034     attribute otherfunction { text }
       
  7035   db.keycap.function.attrib =
       
  7036     db.keycap.function-enum.attribute
       
  7037     | db.keycap.function-other.attributes
       
  7038   db.keycap.role.attribute = attribute role { text }
       
  7039   db.keycap.attlist =
       
  7040     db.keycap.role.attribute?
       
  7041     & db.common.attributes
       
  7042     & db.common.linking.attributes
       
  7043     & db.keycap.function.attrib
       
  7044   db.keycap =
       
  7045     
       
  7046     ## The text printed on a key on a keyboard
       
  7047     element keycap { db.keycap.attlist, db._text }
       
  7048 }
       
  7049 div {
       
  7050   db.keycode.role.attribute = attribute role { text }
       
  7051   db.keycode.attlist =
       
  7052     db.keycode.role.attribute?
       
  7053     & db.common.attributes
       
  7054     & db.common.linking.attributes
       
  7055   db.keycode =
       
  7056     
       
  7057     ## The internal, frequently numeric, identifier for a key on a keyboard
       
  7058     element keycode { db.keycode.attlist, db._text }
       
  7059 }
       
  7060 db.keycombination.contentmodel =
       
  7061   (db.keycap | db.keycombo | db.keysym) | db.mousebutton
       
  7062 div {
       
  7063   db.keycombo.action.enumeration =
       
  7064     
       
  7065     ## A (single) mouse click.
       
  7066     "click"
       
  7067     | 
       
  7068       ## A double mouse click.
       
  7069       "double-click"
       
  7070     | 
       
  7071       ## A mouse or key press.
       
  7072       "press"
       
  7073     | 
       
  7074       ## Sequential clicks or presses.
       
  7075       "seq"
       
  7076     | 
       
  7077       ## Simultaneous clicks or presses.
       
  7078       "simul"
       
  7079   db.keycombo.action-enum.attribute =
       
  7080     
       
  7081     ## Identifies the nature of the action taken. If keycombo
       
  7082     ##  contains more than one element, simul
       
  7083     ##  is the default, otherwise there is no default.
       
  7084     attribute action { db.keycombo.action.enumeration }?
       
  7085   db.keycombo.action-other.attributes =
       
  7086     
       
  7087     ## Identifies the nature of the action taken
       
  7088     attribute action {
       
  7089       
       
  7090       ## Indicates a non-standard action
       
  7091       "other"
       
  7092     }?,
       
  7093     
       
  7094     ## Identifies the non-standard action in some unspecified way.
       
  7095     attribute otheraction { text }
       
  7096   db.keycombo.action.attrib =
       
  7097     db.keycombo.action-enum.attribute
       
  7098     | db.keycombo.action-other.attributes
       
  7099   db.keycombo.role.attribute = attribute role { text }
       
  7100   db.keycombo.attlist =
       
  7101     db.keycombo.role.attribute?
       
  7102     & db.common.attributes
       
  7103     & db.common.linking.attributes
       
  7104     & db.keycombo.action.attrib
       
  7105   db.keycombo =
       
  7106     
       
  7107     ## A combination of input actions
       
  7108     element keycombo {
       
  7109       db.keycombo.attlist, db.keycombination.contentmodel+
       
  7110     }
       
  7111 }
       
  7112 div {
       
  7113   db.keysym.role.attribute = attribute role { text }
       
  7114   db.keysym.attlist =
       
  7115     db.keysym.role.attribute?
       
  7116     & db.common.attributes
       
  7117     & db.common.linking.attributes
       
  7118   db.keysym =
       
  7119     
       
  7120     ## The symbolic name of a key on a keyboard
       
  7121     element keysym { db.keysym.attlist, db._text }
       
  7122 }
       
  7123 div {
       
  7124   db.accel.role.attribute = attribute role { text }
       
  7125   db.accel.attlist =
       
  7126     db.accel.role.attribute?
       
  7127     & db.common.attributes
       
  7128     & db.common.linking.attributes
       
  7129   db.accel =
       
  7130     
       
  7131     ## A graphical user interface (GUI) keyboard shortcut
       
  7132     element accel { db.accel.attlist, db._text }
       
  7133 }
       
  7134 div {
       
  7135   db.shortcut.action.attrib = db.keycombo.action.attrib
       
  7136   db.shortcut.role.attribute = attribute role { text }
       
  7137   db.shortcut.attlist =
       
  7138     db.shortcut.role.attribute?
       
  7139     & db.common.attributes
       
  7140     & db.common.linking.attributes
       
  7141     & db.shortcut.action.attrib
       
  7142   db.shortcut =
       
  7143     
       
  7144     ## A key combination for an action that is also accessible through a menu
       
  7145     element shortcut {
       
  7146       db.shortcut.attlist, db.keycombination.contentmodel+
       
  7147     }
       
  7148 }
       
  7149 db.os.inlines =
       
  7150   db.prompt
       
  7151   | db.envar
       
  7152   | db.filename
       
  7153   | db.command
       
  7154   | db.computeroutput
       
  7155   | db.userinput
       
  7156 db.computeroutput.inlines =
       
  7157   (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines)
       
  7158   | db.co
       
  7159   | db.markup.inlines
       
  7160 db.userinput.inlines =
       
  7161   (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines)
       
  7162   | db.co
       
  7163   | db.markup.inlines
       
  7164   | db.gui.inlines
       
  7165   | db.keyboard.inlines
       
  7166 db.prompt.inlines = db._text | db.co
       
  7167 div {
       
  7168   db.prompt.role.attribute = attribute role { text }
       
  7169   db.prompt.attlist =
       
  7170     db.prompt.role.attribute?
       
  7171     & db.common.attributes
       
  7172     & db.common.linking.attributes
       
  7173   db.prompt =
       
  7174     
       
  7175     ## A character or string indicating the start of an input field in a  computer display
       
  7176     element prompt { db.prompt.attlist, db.prompt.inlines* }
       
  7177 }
       
  7178 div {
       
  7179   db.envar.role.attribute = attribute role { text }
       
  7180   db.envar.attlist =
       
  7181     db.envar.role.attribute?
       
  7182     & db.common.attributes
       
  7183     & db.common.linking.attributes
       
  7184   db.envar =
       
  7185     
       
  7186     ## A software environment variable
       
  7187     element envar { db.envar.attlist, db._text }
       
  7188 }
       
  7189 div {
       
  7190   db.filename.class.enumeration =
       
  7191     
       
  7192     ## A device
       
  7193     "devicefile"
       
  7194     | 
       
  7195       ## A directory
       
  7196       "directory"
       
  7197     | 
       
  7198       ## A filename extension
       
  7199       "extension"
       
  7200     | 
       
  7201       ## A header file (as for a programming language)
       
  7202       "headerfile"
       
  7203     | 
       
  7204       ## A library file
       
  7205       "libraryfile"
       
  7206     | 
       
  7207       ## A partition (as of a hard disk)
       
  7208       "partition"
       
  7209     | 
       
  7210       ## A symbolic link
       
  7211       "symlink"
       
  7212   db.filename.class.attribute =
       
  7213     
       
  7214     ## Identifies the class of filename
       
  7215     attribute class { db.filename.class.enumeration }
       
  7216   db.filename.path.attribute =
       
  7217     
       
  7218     ## Specifies the path of the filename
       
  7219     attribute path { text }
       
  7220   db.filename.role.attribute = attribute role { text }
       
  7221   db.filename.attlist =
       
  7222     db.filename.role.attribute?
       
  7223     & db.common.attributes
       
  7224     & db.common.linking.attributes
       
  7225     & db.filename.path.attribute?
       
  7226     & db.filename.class.attribute?
       
  7227   db.filename =
       
  7228     
       
  7229     ## The name of a file
       
  7230     element filename { db.filename.attlist, db._text }
       
  7231 }
       
  7232 div {
       
  7233   db.command.role.attribute = attribute role { text }
       
  7234   db.command.attlist =
       
  7235     db.command.role.attribute?
       
  7236     & db.common.attributes
       
  7237     & db.common.linking.attributes
       
  7238   db.command =
       
  7239     
       
  7240     ## The name of an executable program or other software command
       
  7241     element command { db.command.attlist, db._text }
       
  7242 }
       
  7243 div {
       
  7244   db.computeroutput.role.attribute = attribute role { text }
       
  7245   db.computeroutput.attlist =
       
  7246     db.computeroutput.role.attribute?
       
  7247     & db.common.attributes
       
  7248     & db.common.linking.attributes
       
  7249   db.computeroutput =
       
  7250     
       
  7251     ## Data, generally text, displayed or presented by a computer
       
  7252     element computeroutput {
       
  7253       db.computeroutput.attlist, db.computeroutput.inlines*
       
  7254     }
       
  7255 }
       
  7256 div {
       
  7257   db.userinput.role.attribute = attribute role { text }
       
  7258   db.userinput.attlist =
       
  7259     db.userinput.role.attribute?
       
  7260     & db.common.attributes
       
  7261     & db.common.linking.attributes
       
  7262   db.userinput =
       
  7263     
       
  7264     ## Data entered by the user
       
  7265     element userinput { db.userinput.attlist, db.userinput.inlines* }
       
  7266 }
       
  7267 div {
       
  7268   db.cmdsynopsis.role.attribute = attribute role { text }
       
  7269   db.cmdsynopsis.sepchar.attribute =
       
  7270     
       
  7271     ## Specifies the character that should separate the command and its top-level arguments
       
  7272     attribute sepchar { text }
       
  7273   db.cmdsynopsis.cmdlength.attribute =
       
  7274     
       
  7275     ## Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line
       
  7276     attribute cmdlength { text }
       
  7277   db.cmdsynopsis.label.attribute = db.label.attribute
       
  7278   db.cmdsynopsis.attlist =
       
  7279     db.cmdsynopsis.role.attribute?
       
  7280     & db.common.attributes
       
  7281     & db.common.linking.attributes
       
  7282     & db.cmdsynopsis.sepchar.attribute?
       
  7283     & db.cmdsynopsis.cmdlength.attribute?
       
  7284     & db.cmdsynopsis.label.attribute?
       
  7285   db.cmdsynopsis.info = db._info.title.forbidden
       
  7286   db.cmdsynopsis =
       
  7287     
       
  7288     ## A syntax summary for a software command
       
  7289     element cmdsynopsis {
       
  7290       db.cmdsynopsis.attlist,
       
  7291       db.cmdsynopsis.info,
       
  7292       (db.command | db.arg | db.group | db.sbr)+,
       
  7293       db.synopfragment*
       
  7294     }
       
  7295 }
       
  7296 db.rep.enumeration =
       
  7297   
       
  7298   ## Can not be repeated.
       
  7299   "norepeat"
       
  7300   | 
       
  7301     ## Can be repeated.
       
  7302     "repeat"
       
  7303 db.rep.attribute =
       
  7304   
       
  7305   ## Indicates whether or not repetition is possible.
       
  7306   [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration }
       
  7307 db.choice.enumeration =
       
  7308   
       
  7309   ## Formatted to indicate that it is optional.
       
  7310   "opt"
       
  7311   | 
       
  7312     ## Formatted without indication.
       
  7313     "plain"
       
  7314   | 
       
  7315     ## Formatted to indicate that it is required.
       
  7316     "req"
       
  7317 db.choice.opt.attribute =
       
  7318   
       
  7319   ## Indicates optionality.
       
  7320   [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration }
       
  7321 db.choice.req.attribute =
       
  7322   
       
  7323   ## Indicates optionality.
       
  7324   [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration }
       
  7325 div {
       
  7326   db.arg.role.attribute = attribute role { text }
       
  7327   db.arg.rep.attribute = db.rep.attribute
       
  7328   db.arg.choice.attribute = db.choice.opt.attribute
       
  7329   db.arg.attlist =
       
  7330     db.arg.role.attribute?
       
  7331     & db.common.attributes
       
  7332     & db.common.linking.attributes
       
  7333     & db.arg.rep.attribute?
       
  7334     & db.arg.choice.attribute?
       
  7335   db.arg =
       
  7336     
       
  7337     ## An argument in a cmdsynopsis
       
  7338     element arg {
       
  7339       db.arg.attlist,
       
  7340       (db._text
       
  7341        | db.arg
       
  7342        | db.group
       
  7343        | db.option
       
  7344        | db.synopfragmentref
       
  7345        | db.sbr)*
       
  7346     }
       
  7347 }
       
  7348 div {
       
  7349   db.group.role.attribute = attribute role { text }
       
  7350   db.group.rep.attribute = db.rep.attribute
       
  7351   db.group.choice.attribute = db.choice.opt.attribute
       
  7352   db.group.attlist =
       
  7353     db.group.role.attribute?
       
  7354     & db.common.attributes
       
  7355     & db.common.linking.attributes
       
  7356     & db.group.rep.attribute?
       
  7357     & db.group.choice.attribute?
       
  7358   db.group =
       
  7359     
       
  7360     ## A group of elements in a cmdsynopsis
       
  7361     element group {
       
  7362       db.group.attlist,
       
  7363       (db.arg
       
  7364        | db.group
       
  7365        | db.option
       
  7366        | db.synopfragmentref
       
  7367        | db.replaceable
       
  7368        | db.sbr)+
       
  7369     }
       
  7370 }
       
  7371 div {
       
  7372   db.sbr.role.attribute = attribute role { text }
       
  7373   db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes
       
  7374   db.sbr =
       
  7375     
       
  7376     ## An explicit line break in a command synopsis
       
  7377     element sbr { db.sbr.attlist, empty }
       
  7378 }
       
  7379 div {
       
  7380   db.synopfragment.role.attribute = attribute role { text }
       
  7381   db.synopfragment.attlist =
       
  7382     db.synopfragment.role.attribute?
       
  7383     & db.common.attributes
       
  7384     & db.common.linking.attributes
       
  7385   db.synopfragment =
       
  7386     
       
  7387     ## A portion of a cmdsynopsis broken out from the main body of the synopsis
       
  7388     element synopfragment {
       
  7389       db.synopfragment.attlist, (db.arg | db.group)+
       
  7390     }
       
  7391 }
       
  7392 div {
       
  7393   db.synopfragmentref.role.attribute = attribute role { text }
       
  7394   db.synopfragmentref.attlist =
       
  7395     db.synopfragmentref.role.attribute?
       
  7396     & db.common.attributes
       
  7397     & db.linkend.attribute
       
  7398   db.synopfragmentref =
       
  7399     
       
  7400     ## A reference to a fragment of a command synopsis
       
  7401     element synopfragmentref { db.synopfragmentref.attlist, text }
       
  7402 }
       
  7403 db.programming.inlines =
       
  7404   db.function
       
  7405   | db.parameter
       
  7406   | db.varname
       
  7407   | db.returnvalue
       
  7408   | db.type
       
  7409   | db.classname
       
  7410   | db.exceptionname
       
  7411   | db.interfacename
       
  7412   | db.methodname
       
  7413   | db.modifier
       
  7414   | db.initializer
       
  7415   | db.oo.inlines
       
  7416 db.oo.inlines = db.ooclass | db.ooexception | db.oointerface
       
  7417 db.synopsis.blocks =
       
  7418   (db.funcsynopsis
       
  7419    | db.classsynopsis
       
  7420    | db.methodsynopsis
       
  7421    | db.constructorsynopsis
       
  7422    | db.destructorsynopsis
       
  7423    | db.fieldsynopsis)
       
  7424   | db.cmdsynopsis
       
  7425 div {
       
  7426   db.synopsis.role.attribute = attribute role { text }
       
  7427   db.synopsis.label.attribute = db.label.attribute
       
  7428   db.synopsis.attlist =
       
  7429     db.synopsis.role.attribute?
       
  7430     & db.common.attributes
       
  7431     & db.common.linking.attributes
       
  7432     & db.verbatim.attributes
       
  7433     & db.synopsis.label.attribute?
       
  7434   db.synopsis =
       
  7435     
       
  7436     ## A general-purpose element for representing the syntax of commands or functions
       
  7437     element synopsis { db.synopsis.attlist, db.verbatim.contentmodel }
       
  7438 }
       
  7439 div {
       
  7440   db.funcsynopsis.role.attribute = attribute role { text }
       
  7441   db.funcsynopsis.attlist =
       
  7442     db.funcsynopsis.role.attribute?
       
  7443     & db.common.attributes
       
  7444     & db.common.linking.attributes
       
  7445     & db.language.attribute?
       
  7446   db.funcsynopsis.info = db._info.title.forbidden
       
  7447   db.funcsynopsis =
       
  7448     
       
  7449     ## The syntax summary for a function definition
       
  7450     element funcsynopsis {
       
  7451       db.funcsynopsis.attlist,
       
  7452       db.funcsynopsis.info,
       
  7453       (db.funcsynopsisinfo | db.funcprototype)+
       
  7454     }
       
  7455 }
       
  7456 div {
       
  7457   db.funcsynopsisinfo.role.attribute = attribute role { text }
       
  7458   db.funcsynopsisinfo.attlist =
       
  7459     db.funcsynopsisinfo.role.attribute?
       
  7460     & db.common.attributes
       
  7461     & db.common.linking.attributes
       
  7462     & db.verbatim.attributes
       
  7463   db.funcsynopsisinfo =
       
  7464     
       
  7465     ## Information supplementing the funcdefs of a funcsynopsis
       
  7466     element funcsynopsisinfo {
       
  7467       db.funcsynopsisinfo.attlist, db.verbatim.contentmodel
       
  7468     }
       
  7469 }
       
  7470 div {
       
  7471   db.funcprototype.role.attribute = attribute role { text }
       
  7472   db.funcprototype.attlist =
       
  7473     db.funcprototype.role.attribute?
       
  7474     & db.common.attributes
       
  7475     & db.common.linking.attributes
       
  7476   db.funcprototype =
       
  7477     
       
  7478     ## The prototype of a function
       
  7479     element funcprototype {
       
  7480       db.funcprototype.attlist,
       
  7481       db.modifier*,
       
  7482       db.funcdef,
       
  7483       (db.void
       
  7484        | db.varargs
       
  7485        | ((db.paramdef | db.group.paramdef)+, db.varargs?)),
       
  7486       db.modifier*
       
  7487     }
       
  7488 }
       
  7489 div {
       
  7490   db.funcdef.role.attribute = attribute role { text }
       
  7491   db.funcdef.attlist =
       
  7492     db.funcdef.role.attribute?
       
  7493     & db.common.attributes
       
  7494     & db.common.linking.attributes
       
  7495   db.funcdef =
       
  7496     
       
  7497     ## A function (subroutine) name and its return type
       
  7498     element funcdef {
       
  7499       db.funcdef.attlist, (db._text | db.type | db.function)*
       
  7500     }
       
  7501 }
       
  7502 div {
       
  7503   db.function.role.attribute = attribute role { text }
       
  7504   db.function.attlist =
       
  7505     db.function.role.attribute?
       
  7506     & db.common.attributes
       
  7507     & db.common.linking.attributes
       
  7508   db.function =
       
  7509     
       
  7510     ## The name of a function or subroutine, as in a programming language
       
  7511     element function { db.function.attlist, db._text }
       
  7512 }
       
  7513 div {
       
  7514   db.void.role.attribute = attribute role { text }
       
  7515   db.void.attlist =
       
  7516     db.void.role.attribute?
       
  7517     & db.common.attributes
       
  7518     & db.common.linking.attributes
       
  7519   db.void =
       
  7520     
       
  7521     ## An empty element in a function synopsis indicating that the function in question takes no arguments
       
  7522     element void { db.void.attlist, empty }
       
  7523 }
       
  7524 div {
       
  7525   db.varargs.role.attribute = attribute role { text }
       
  7526   db.varargs.attlist =
       
  7527     db.varargs.role.attribute?
       
  7528     & db.common.attributes
       
  7529     & db.common.linking.attributes
       
  7530   db.varargs =
       
  7531     
       
  7532     ## An empty element in a function synopsis indicating a variable number of arguments
       
  7533     element varargs { db.varargs.attlist, empty }
       
  7534 }
       
  7535 div {
       
  7536   db.group.paramdef.role.attribute = attribute role { text }
       
  7537   db.group.paramdef.choice.attribute = db.choice.opt.attribute
       
  7538   db.group.paramdef.attlist =
       
  7539     db.group.paramdef.role.attribute?
       
  7540     & db.common.attributes
       
  7541     & db.common.linking.attributes
       
  7542     & db.group.paramdef.choice.attribute?
       
  7543   db.group.paramdef =
       
  7544     
       
  7545     ## A group of parameters
       
  7546     element group {
       
  7547       db.group.paramdef.attlist, (db.paramdef | db.group.paramdef)+
       
  7548     }
       
  7549 }
       
  7550 div {
       
  7551   db.paramdef.role.attribute = attribute role { text }
       
  7552   db.paramdef.choice.enumeration =
       
  7553     
       
  7554     ## Formatted to indicate that it is optional.
       
  7555     "opt"
       
  7556     | 
       
  7557       ## Formatted to indicate that it is required.
       
  7558       "req"
       
  7559   db.paramdef.choice.attribute =
       
  7560     
       
  7561     ## Indicates optionality.
       
  7562     [ a:defaultValue = "opt" ]
       
  7563     attribute choice { db.paramdef.choice.enumeration }
       
  7564   db.paramdef.attlist =
       
  7565     db.paramdef.role.attribute?
       
  7566     & db.common.attributes
       
  7567     & db.common.linking.attributes
       
  7568     & db.paramdef.choice.attribute?
       
  7569   db.paramdef =
       
  7570     
       
  7571     ## Information about a function parameter in a programming language
       
  7572     element paramdef {
       
  7573       db.paramdef.attlist,
       
  7574       (db._text
       
  7575        | db.initializer
       
  7576        | db.type
       
  7577        | db.parameter
       
  7578        | db.funcparams)*
       
  7579     }
       
  7580 }
       
  7581 div {
       
  7582   db.funcparams.role.attribute = attribute role { text }
       
  7583   db.funcparams.attlist =
       
  7584     db.funcparams.role.attribute?
       
  7585     & db.common.attributes
       
  7586     & db.common.linking.attributes
       
  7587   db.funcparams =
       
  7588     
       
  7589     ## Parameters for a function referenced through a function pointer in a synopsis
       
  7590     element funcparams { db.funcparams.attlist, db._text }
       
  7591 }
       
  7592 div {
       
  7593   db.classsynopsis.role.attribute = attribute role { text }
       
  7594   db.classsynopsis.class.enumeration =
       
  7595     
       
  7596     ## This is the synopsis of a class
       
  7597     "class"
       
  7598     | 
       
  7599       ## This is the synopsis of an interface
       
  7600       "interface"
       
  7601   db.classsynopsis.class.attribute =
       
  7602     
       
  7603     ## Specifies the nature of the synopsis
       
  7604     attribute class { db.classsynopsis.class.enumeration }
       
  7605   db.classsynopsis.attlist =
       
  7606     db.classsynopsis.role.attribute?
       
  7607     & db.common.attributes
       
  7608     & db.common.linking.attributes
       
  7609     & db.language.attribute?
       
  7610     & db.classsynopsis.class.attribute?
       
  7611   db.classsynopsis =
       
  7612     
       
  7613     ## The syntax summary for a class definition
       
  7614     element classsynopsis {
       
  7615       db.classsynopsis.attlist,
       
  7616       db.oo.inlines+,
       
  7617       (db.classsynopsisinfo
       
  7618        | db.methodsynopsis
       
  7619        | db.constructorsynopsis
       
  7620        | db.destructorsynopsis
       
  7621        | db.fieldsynopsis)*
       
  7622     }
       
  7623 }
       
  7624 div {
       
  7625   db.classsynopsisinfo.role.attribute = attribute role { text }
       
  7626   db.classsynopsisinfo.attlist =
       
  7627     db.classsynopsisinfo.role.attribute?
       
  7628     & db.common.attributes
       
  7629     & db.common.linking.attributes
       
  7630     & db.verbatim.attributes
       
  7631   db.classsynopsisinfo =
       
  7632     
       
  7633     ## Information supplementing the contents of a classsynopsis
       
  7634     element classsynopsisinfo {
       
  7635       db.classsynopsisinfo.attlist, db.verbatim.contentmodel
       
  7636     }
       
  7637 }
       
  7638 div {
       
  7639   db.ooclass.role.attribute = attribute role { text }
       
  7640   db.ooclass.attlist =
       
  7641     db.ooclass.role.attribute?
       
  7642     & db.common.attributes
       
  7643     & db.common.linking.attributes
       
  7644   db.ooclass =
       
  7645     
       
  7646     ## A class in an object-oriented programming language
       
  7647     element ooclass {
       
  7648       db.ooclass.attlist, (db.package | db.modifier)*, db.classname
       
  7649     }
       
  7650 }
       
  7651 div {
       
  7652   db.oointerface.role.attribute = attribute role { text }
       
  7653   db.oointerface.attlist =
       
  7654     db.oointerface.role.attribute?
       
  7655     & db.common.attributes
       
  7656     & db.common.linking.attributes
       
  7657   db.oointerface =
       
  7658     
       
  7659     ## An interface in an object-oriented programming language
       
  7660     element oointerface {
       
  7661       db.oointerface.attlist,
       
  7662       (db.package | db.modifier)*,
       
  7663       db.interfacename
       
  7664     }
       
  7665 }
       
  7666 div {
       
  7667   db.ooexception.role.attribute = attribute role { text }
       
  7668   db.ooexception.attlist =
       
  7669     db.ooexception.role.attribute?
       
  7670     & db.common.attributes
       
  7671     & db.common.linking.attributes
       
  7672   db.ooexception =
       
  7673     
       
  7674     ## An exception in an object-oriented programming language
       
  7675     element ooexception {
       
  7676       db.ooexception.attlist,
       
  7677       (db.package | db.modifier)*,
       
  7678       db.exceptionname
       
  7679     }
       
  7680 }
       
  7681 db.modifier.xml.space.attribute =
       
  7682   
       
  7683   ## Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example).
       
  7684   attribute xml:space {
       
  7685     
       
  7686     ## Extra whitespace and line breaks must be preserved.
       
  7687     [
       
  7688       # Ideally the definition of xml:space used on modifier would be
       
  7689       # different from the definition used on the verbatim elements. The
       
  7690       # verbatim elements forbid the use of xml:space="default" which
       
  7691       # wouldn't be a problem on modifier. But doing that causes the
       
  7692       # generated XSD schemas to be broken so I'm just reusing the existing
       
  7693       # definition for now. It won't be backwards incompatible to fix this
       
  7694       # problem in the future.
       
  7695       #    | ## Extra whitespace and line breaks are not preserved.
       
  7696       #      "default"
       
  7697       
       
  7698     ]
       
  7699     "preserve"
       
  7700   }
       
  7701 div {
       
  7702   db.modifier.role.attribute = attribute role { text }
       
  7703   db.modifier.attlist =
       
  7704     db.modifier.xml.space.attribute?
       
  7705     & db.modifier.role.attribute?
       
  7706     & db.common.attributes
       
  7707     & db.common.linking.attributes
       
  7708   db.modifier =
       
  7709     
       
  7710     ## Modifiers in a synopsis
       
  7711     element modifier { db.modifier.attlist, db._text }
       
  7712 }
       
  7713 div {
       
  7714   db.interfacename.role.attribute = attribute role { text }
       
  7715   db.interfacename.attlist =
       
  7716     db.interfacename.role.attribute?
       
  7717     & db.common.attributes
       
  7718     & db.common.linking.attributes
       
  7719   db.interfacename =
       
  7720     
       
  7721     ## The name of an interface
       
  7722     element interfacename { db.interfacename.attlist, db._text }
       
  7723 }
       
  7724 div {
       
  7725   db.exceptionname.role.attribute = attribute role { text }
       
  7726   db.exceptionname.attlist =
       
  7727     db.exceptionname.role.attribute?
       
  7728     & db.common.attributes
       
  7729     & db.common.linking.attributes
       
  7730   db.exceptionname =
       
  7731     
       
  7732     ## The name of an exception
       
  7733     element exceptionname { db.exceptionname.attlist, db._text }
       
  7734 }
       
  7735 div {
       
  7736   db.fieldsynopsis.role.attribute = attribute role { text }
       
  7737   db.fieldsynopsis.attlist =
       
  7738     db.fieldsynopsis.role.attribute?
       
  7739     & db.common.attributes
       
  7740     & db.common.linking.attributes
       
  7741     & db.language.attribute?
       
  7742   db.fieldsynopsis =
       
  7743     
       
  7744     ## The name of a field in a class definition
       
  7745     element fieldsynopsis {
       
  7746       db.fieldsynopsis.attlist,
       
  7747       db.modifier*,
       
  7748       db.type?,
       
  7749       db.varname,
       
  7750       db.initializer?
       
  7751     }
       
  7752 }
       
  7753 div {
       
  7754   db.initializer.role.attribute = attribute role { text }
       
  7755   db.initializer.attlist =
       
  7756     db.initializer.role.attribute?
       
  7757     & db.common.attributes
       
  7758     & db.common.linking.attributes
       
  7759   db.initializer.inlines = db._text | db.mathphrase | db.markup.inlines
       
  7760   db.initializer =
       
  7761     
       
  7762     ## The initializer for a fieldsynopsis
       
  7763     element initializer {
       
  7764       db.initializer.attlist, db.initializer.inlines*
       
  7765     }
       
  7766 }
       
  7767 div {
       
  7768   db.constructorsynopsis.role.attribute = attribute role { text }
       
  7769   db.constructorsynopsis.attlist =
       
  7770     db.constructorsynopsis.role.attribute?
       
  7771     & db.common.attributes
       
  7772     & db.common.linking.attributes
       
  7773     & db.language.attribute?
       
  7774   db.constructorsynopsis =
       
  7775     
       
  7776     ## A syntax summary for a constructor
       
  7777     element constructorsynopsis {
       
  7778       db.constructorsynopsis.attlist,
       
  7779       db.modifier*,
       
  7780       db.methodname?,
       
  7781       ((db.methodparam | db.group.methodparam)+ | db.void?),
       
  7782       db.exceptionname*
       
  7783     }
       
  7784 }
       
  7785 div {
       
  7786   db.destructorsynopsis.role.attribute = attribute role { text }
       
  7787   db.destructorsynopsis.attlist =
       
  7788     db.destructorsynopsis.role.attribute?
       
  7789     & db.common.attributes
       
  7790     & db.common.linking.attributes
       
  7791     & db.language.attribute?
       
  7792   db.destructorsynopsis =
       
  7793     
       
  7794     ## A syntax summary for a destructor
       
  7795     element destructorsynopsis {
       
  7796       db.destructorsynopsis.attlist,
       
  7797       db.modifier*,
       
  7798       db.methodname?,
       
  7799       ((db.methodparam | db.group.methodparam)+ | db.void?),
       
  7800       db.exceptionname*
       
  7801     }
       
  7802 }
       
  7803 div {
       
  7804   db.methodsynopsis.role.attribute = attribute role { text }
       
  7805   db.methodsynopsis.attlist =
       
  7806     db.methodsynopsis.role.attribute?
       
  7807     & db.common.attributes
       
  7808     & db.common.linking.attributes
       
  7809     & db.language.attribute?
       
  7810   db.methodsynopsis =
       
  7811     
       
  7812     ## A syntax summary for a method
       
  7813     element methodsynopsis {
       
  7814       db.methodsynopsis.attlist,
       
  7815       db.modifier*,
       
  7816       (db.type | db.void)?,
       
  7817       db.methodname,
       
  7818       ((db.methodparam | db.group.methodparam)+ | db.void),
       
  7819       db.exceptionname*,
       
  7820       db.modifier*
       
  7821     }
       
  7822 }
       
  7823 div {
       
  7824   db.methodname.role.attribute = attribute role { text }
       
  7825   db.methodname.attlist =
       
  7826     db.methodname.role.attribute?
       
  7827     & db.common.attributes
       
  7828     & db.common.linking.attributes
       
  7829   db.methodname =
       
  7830     
       
  7831     ## The name of a method
       
  7832     element methodname { db.methodname.attlist, db._text }
       
  7833 }
       
  7834 div {
       
  7835   db.methodparam.role.attribute = attribute role { text }
       
  7836   db.methodparam.rep.attribute = db.rep.attribute
       
  7837   db.methodparam.choice.attribute = db.choice.req.attribute
       
  7838   db.methodparam.attlist =
       
  7839     db.methodparam.role.attribute?
       
  7840     & db.common.attributes
       
  7841     & db.common.linking.attributes
       
  7842     & db.methodparam.rep.attribute?
       
  7843     & db.methodparam.choice.attribute?
       
  7844   db.methodparam =
       
  7845     
       
  7846     ## Parameters to a method
       
  7847     element methodparam {
       
  7848       db.methodparam.attlist,
       
  7849       db.modifier*,
       
  7850       db.type?,
       
  7851       ((db.modifier*, db.parameter, db.initializer?) | db.funcparams),
       
  7852       db.modifier*
       
  7853     }
       
  7854 }
       
  7855 div {
       
  7856   db.group.methodparam.role.attribute = attribute role { text }
       
  7857   db.group.methodparam.choice.attribute = db.choice.opt.attribute
       
  7858   db.group.methodparam.attlist =
       
  7859     db.group.methodparam.role.attribute?
       
  7860     & db.common.attributes
       
  7861     & db.common.linking.attributes
       
  7862     & db.group.methodparam.choice.attribute?
       
  7863   db.group.methodparam =
       
  7864     
       
  7865     ## A group of method parameters
       
  7866     element group {
       
  7867       db.group.methodparam.attlist,
       
  7868       (db.methodparam | db.group.methodparam)+
       
  7869     }
       
  7870 }
       
  7871 div {
       
  7872   db.varname.role.attribute = attribute role { text }
       
  7873   db.varname.attlist =
       
  7874     db.varname.role.attribute?
       
  7875     & db.common.attributes
       
  7876     & db.common.linking.attributes
       
  7877   db.varname =
       
  7878     
       
  7879     ## The name of a variable
       
  7880     element varname { db.varname.attlist, db._text }
       
  7881 }
       
  7882 div {
       
  7883   db.returnvalue.role.attribute = attribute role { text }
       
  7884   db.returnvalue.attlist =
       
  7885     db.returnvalue.role.attribute?
       
  7886     & db.common.attributes
       
  7887     & db.common.linking.attributes
       
  7888   db.returnvalue =
       
  7889     
       
  7890     ## The value returned by a function
       
  7891     element returnvalue { db.returnvalue.attlist, db._text }
       
  7892 }
       
  7893 div {
       
  7894   db.type.role.attribute = attribute role { text }
       
  7895   db.type.attlist =
       
  7896     db.type.role.attribute?
       
  7897     & db.common.attributes
       
  7898     & db.common.linking.attributes
       
  7899   db.type =
       
  7900     
       
  7901     ## The classification of a value
       
  7902     element type { db.type.attlist, db._text }
       
  7903 }
       
  7904 div {
       
  7905   db.classname.role.attribute = attribute role { text }
       
  7906   db.classname.attlist =
       
  7907     db.classname.role.attribute?
       
  7908     & db.common.attributes
       
  7909     & db.common.linking.attributes
       
  7910   db.classname =
       
  7911     
       
  7912     ## The name of a class, in the object-oriented programming sense
       
  7913     element classname { db.classname.attlist, db._text }
       
  7914 }
       
  7915 div {
       
  7916   db.programlisting.role.attribute = attribute role { text }
       
  7917   db.programlisting.width.attribute = db.width.characters.attribute
       
  7918   db.programlisting.attlist =
       
  7919     db.programlisting.role.attribute?
       
  7920     & db.common.attributes
       
  7921     & db.common.linking.attributes
       
  7922     & db.verbatim.attributes
       
  7923     & db.programlisting.width.attribute?
       
  7924   db.programlisting =
       
  7925     
       
  7926     ## A literal listing of all or part of a program
       
  7927     element programlisting {
       
  7928       db.programlisting.attlist, db.verbatim.contentmodel
       
  7929     }
       
  7930 }
       
  7931 db.admonition.blocks =
       
  7932   db.caution | db.important | db.note | db.tip | db.warning
       
  7933 db.admonition.contentmodel = db._info.title.only, db.all.blocks+
       
  7934 div {
       
  7935   db.caution.role.attribute = attribute role { text }
       
  7936   db.caution.attlist =
       
  7937     db.caution.role.attribute?
       
  7938     & db.common.attributes
       
  7939     & db.common.linking.attributes
       
  7940   db.caution =
       
  7941     
       
  7942     ## A note of caution
       
  7943     element caution { db.caution.attlist, db.admonition.contentmodel }
       
  7944 }
       
  7945 div {
       
  7946   db.important.role.attribute = attribute role { text }
       
  7947   db.important.attlist =
       
  7948     db.important.role.attribute?
       
  7949     & db.common.attributes
       
  7950     & db.common.linking.attributes
       
  7951   db.important =
       
  7952     
       
  7953     ## An admonition set off from the text
       
  7954     element important {
       
  7955       db.important.attlist, db.admonition.contentmodel
       
  7956     }
       
  7957 }
       
  7958 div {
       
  7959   db.note.role.attribute = attribute role { text }
       
  7960   db.note.attlist =
       
  7961     db.note.role.attribute?
       
  7962     & db.common.attributes
       
  7963     & db.common.linking.attributes
       
  7964   db.note =
       
  7965     
       
  7966     ## A message set off from the text
       
  7967     element note { db.note.attlist, db.admonition.contentmodel }
       
  7968 }
       
  7969 div {
       
  7970   db.tip.role.attribute = attribute role { text }
       
  7971   db.tip.attlist =
       
  7972     db.tip.role.attribute?
       
  7973     & db.common.attributes
       
  7974     & db.common.linking.attributes
       
  7975   db.tip =
       
  7976     
       
  7977     ## A suggestion to the user, set off from the text
       
  7978     element tip { db.tip.attlist, db.admonition.contentmodel }
       
  7979 }
       
  7980 div {
       
  7981   db.warning.role.attribute = attribute role { text }
       
  7982   db.warning.attlist =
       
  7983     db.warning.role.attribute?
       
  7984     & db.common.attributes
       
  7985     & db.common.linking.attributes
       
  7986   db.warning =
       
  7987     
       
  7988     ## An admonition set off from the text
       
  7989     element warning { db.warning.attlist, db.admonition.contentmodel }
       
  7990 }
       
  7991 db.error.inlines =
       
  7992   db.errorcode | db.errortext | db.errorname | db.errortype
       
  7993 div {
       
  7994   db.errorcode.role.attribute = attribute role { text }
       
  7995   db.errorcode.attlist =
       
  7996     db.errorcode.role.attribute?
       
  7997     & db.common.attributes
       
  7998     & db.common.linking.attributes
       
  7999   db.errorcode =
       
  8000     
       
  8001     ## An error code
       
  8002     element errorcode { db.errorcode.attlist, db._text }
       
  8003 }
       
  8004 div {
       
  8005   db.errorname.role.attribute = attribute role { text }
       
  8006   db.errorname.attlist =
       
  8007     db.errorname.role.attribute?
       
  8008     & db.common.attributes
       
  8009     & db.common.linking.attributes
       
  8010   db.errorname =
       
  8011     
       
  8012     ## An error name
       
  8013     element errorname { db.errorname.attlist, db._text }
       
  8014 }
       
  8015 div {
       
  8016   db.errortext.role.attribute = attribute role { text }
       
  8017   db.errortext.attlist =
       
  8018     db.errortext.role.attribute?
       
  8019     & db.common.attributes
       
  8020     & db.common.linking.attributes
       
  8021   db.errortext =
       
  8022     
       
  8023     ## An error message.
       
  8024     element errortext { db.errortext.attlist, db._text }
       
  8025 }
       
  8026 div {
       
  8027   db.errortype.role.attribute = attribute role { text }
       
  8028   db.errortype.attlist =
       
  8029     db.errortype.role.attribute?
       
  8030     & db.common.attributes
       
  8031     & db.common.linking.attributes
       
  8032   db.errortype =
       
  8033     
       
  8034     ## The classification of an error message
       
  8035     element errortype { db.errortype.attlist, db._text }
       
  8036 }
       
  8037 db.systemitem.inlines = db._text | db.co
       
  8038 div {
       
  8039   db.systemitem.class.enumeration =
       
  8040     
       
  8041     ## A daemon or other system process (syslogd)
       
  8042     "daemon"
       
  8043     | 
       
  8044       ## A domain name (example.com)
       
  8045       "domainname"
       
  8046     | 
       
  8047       ## An ethernet address (00:05:4E:49:FD:8E)
       
  8048       "etheraddress"
       
  8049     | 
       
  8050       ## An event of some sort (SIGHUP)
       
  8051       "event"
       
  8052     | 
       
  8053       ## An event handler of some sort (hangup)
       
  8054       "eventhandler"
       
  8055     | 
       
  8056       ## A filesystem (ext3)
       
  8057       "filesystem"
       
  8058     | 
       
  8059       ## A fully qualified domain name (my.example.com)
       
  8060       "fqdomainname"
       
  8061     | 
       
  8062       ## A group name (wheel)
       
  8063       "groupname"
       
  8064     | 
       
  8065       ## An IP address (127.0.0.1)
       
  8066       "ipaddress"
       
  8067     | 
       
  8068       ## A library (libncurses)
       
  8069       "library"
       
  8070     | 
       
  8071       ## A macro
       
  8072       "macro"
       
  8073     | 
       
  8074       ## A netmask (255.255.255.192)
       
  8075       "netmask"
       
  8076     | 
       
  8077       ## A newsgroup (comp.text.xml)
       
  8078       "newsgroup"
       
  8079     | 
       
  8080       ## An operating system name (Hurd)
       
  8081       "osname"
       
  8082     | 
       
  8083       ## A process (gnome-cups-icon)
       
  8084       "process"
       
  8085     | 
       
  8086       ## A protocol (ftp)
       
  8087       "protocol"
       
  8088     | 
       
  8089       ## A resource
       
  8090       "resource"
       
  8091     | 
       
  8092       ## A server (mail.example.com)
       
  8093       "server"
       
  8094     | 
       
  8095       ## A service (ppp)
       
  8096       "service"
       
  8097     | 
       
  8098       ## A system name (hephaistos)
       
  8099       "systemname"
       
  8100     | 
       
  8101       ## A user name (ndw)
       
  8102       "username"
       
  8103   db.systemitem.class.attribute =
       
  8104     
       
  8105     ## Identifies the nature of the system item
       
  8106     attribute class { db.systemitem.class.enumeration }
       
  8107   db.systemitem.role.attribute = attribute role { text }
       
  8108   db.systemitem.attlist =
       
  8109     db.systemitem.role.attribute?
       
  8110     & db.common.attributes
       
  8111     & db.common.linking.attributes
       
  8112     & db.systemitem.class.attribute?
       
  8113   db.systemitem =
       
  8114     
       
  8115     ## A system-related item or term
       
  8116     element systemitem { db.systemitem.attlist, db.systemitem.inlines* }
       
  8117 }
       
  8118 div {
       
  8119   db.option.role.attribute = attribute role { text }
       
  8120   db.option.attlist =
       
  8121     db.option.role.attribute?
       
  8122     & db.common.attributes
       
  8123     & db.common.linking.attributes
       
  8124   db.option =
       
  8125     
       
  8126     ## An option for a software command
       
  8127     element option { db.option.attlist, db._text }
       
  8128 }
       
  8129 div {
       
  8130   db.optional.role.attribute = attribute role { text }
       
  8131   db.optional.attlist =
       
  8132     db.optional.role.attribute?
       
  8133     & db.common.attributes
       
  8134     & db.common.linking.attributes
       
  8135   db.optional =
       
  8136     
       
  8137     ## Optional information
       
  8138     element optional { db.optional.attlist, db._text }
       
  8139 }
       
  8140 div {
       
  8141   db.property.role.attribute = attribute role { text }
       
  8142   db.property.attlist =
       
  8143     db.property.role.attribute?
       
  8144     & db.common.attributes
       
  8145     & db.common.linking.attributes
       
  8146   db.property =
       
  8147     
       
  8148     ## A unit of data associated with some part of a computer system
       
  8149     element property { db.property.attlist, db._text }
       
  8150 }
       
  8151 div {
       
  8152   db.topic.status.attribute = db.status.attribute
       
  8153   db.topic.role.attribute = attribute role { text }
       
  8154   db.topic.type.attribute =
       
  8155     
       
  8156     ## Identifies the topic type
       
  8157     attribute type { text }
       
  8158   db.topic.attlist =
       
  8159     db.topic.role.attribute?
       
  8160     & db.topic.type.attribute?
       
  8161     & db.common.attributes
       
  8162     & db.common.linking.attributes
       
  8163     & db.label.attribute?
       
  8164     & db.topic.status.attribute?
       
  8165   db.topic.info = db._info.title.req
       
  8166   db.topic =
       
  8167     
       
  8168     ## A modular unit of documentation not part of any particular narrative flow
       
  8169     element topic {
       
  8170       db.topic.attlist,
       
  8171       db.topic.info,
       
  8172       db.navigation.components*,
       
  8173       db.toplevel.blocks.or.sections,
       
  8174       db.navigation.components*
       
  8175     }
       
  8176 }