<?xml version="1.0" encoding="UTF-8"?>
<!--
  This file is part of DocBook V5.0
  
  Copyright 1992-2008 HaL Computer Systems, Inc.,
  O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
  Corporation, Norman Walsh, Sun Microsystems, Inc., and the
  Organization for the Advancement of Structured Information
  Standards (OASIS).
  
  Release: $Id: pool.rnc 8931 2010-10-20 13:29:20Z nwalsh $
  
  Permission to use, copy, modify and distribute the DocBook schema
  and its accompanying documentation for any purpose and without fee
  is hereby granted in perpetuity, provided that the above copyright
  notice and this paragraph appear in all copies. The copyright
  holders make no representation about the suitability of the schema
  for any purpose. It is provided "as is" without expressed or implied
  warranty.
  
  If you modify the DocBook schema in any way, label your schema as a
  variant of DocBook. See the reference documentation
  (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
  for more information.
  
  Please direct all questions, bug reports, or suggestions for changes
  to the docbook@lists.oasis-open.org mailing list. For more
  information, see http://www.oasis-open.org/docbook/.
  
  ======================================================================
-->
<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns:dbx="http://sourceforge.net/projects/docbook/defguide/schema/extra-markup" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <!-- ====================================================================== -->
  <!--
    The start tokens are somewhat arbitrary. To resolve RFE #1899655, the
    TC concluded that anything with an info element was a reasonable start
    element. That's mostly what has been done, with a few extra elements
    where the patterns seemed to warrant it. If you need more, just ask.
  -->
  <start combine="choice">
    <choice>
      <ref name="db.abstract"/>
      <ref name="db.mediaobject.content"/>
      <ref name="db.audiodata"/>
      <ref name="db.imagedata"/>
      <ref name="db.textdata"/>
      <ref name="db.videodata"/>
      <ref name="db.caption"/>
      <ref name="db.publishing.blocks"/>
      <ref name="db.formal.blocks"/>
      <ref name="db.informal.blocks"/>
      <ref name="db.formalpara"/>
      <ref name="db.inlinemediaobject"/>
      <ref name="db.list.blocks"/>
      <ref name="db.legalnotice"/>
      <ref name="db.verbatim.blocks"/>
      <ref name="db.graphic.blocks"/>
      <ref name="db.personblurb"/>
      <ref name="db.revhistory"/>
      <ref name="db.simpara"/>
      <ref name="db.step"/>
      <ref name="db.stepalternatives"/>
    </choice>
  </start>
  <!-- ====================================================================== -->
  <div>
    <db:refname>*:*</db:refname>
    <db:refpurpose>Any element from almost any namespace</db:refpurpose>
    <define name="db._any.attribute">
      <attribute>
        <db:refpurpose>Any attribute, including any attribute in any namespace.</db:refpurpose>
        <anyName/>
      </attribute>
    </define>
    <define name="db._any">
      <element>
        <anyName>
          <except>
            <nsName/>
            <nsName ns="http://www.w3.org/1999/xhtml"/>
          </except>
        </anyName>
        <zeroOrMore>
          <choice>
            <ref name="db._any.attribute"/>
            <text/>
            <ref name="db._any"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <define name="db.arch.attribute">
    <attribute name="arch">
      <db:refpurpose>Designates the computer or chip architecture to which the element applies</db:refpurpose>
    </attribute>
  </define>
  <define name="db.audience.attribute">
    <attribute name="audience">
      <db:refpurpose>Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users.</db:refpurpose>
    </attribute>
  </define>
  <define name="db.condition.attribute">
    <attribute name="condition">
      <db:refpurpose>provides a standard place for application-specific effectivity</db:refpurpose>
      <dbx:description>
        <db:para>Many DocBook users observed that in order to add an effectivity condition that was unique to their environment required <db:quote>abusing</db:quote>
 the semantics of one of the existing attributes, or adding their own, making their customization an extension rather than a subset. The<db:tag class="attribute">condition</db:tag>
 attribute is a general-purpose effectivity attribute with no specified semantics.</db:para>
        <db:para>The<db:tag class="attribute">condition</db:tag>
 attribute provides a standard place for application-specific effectivity.</db:para>
      </dbx:description>
    </attribute>
  </define>
  <define name="db.conformance.attribute">
    <attribute name="conformance">
      <db:refpurpose>Indicates standards conformance characteristics of the element</db:refpurpose>
      <dbx:description>
        <db:para>These characteristics are application-specific; DocBook provides no default semantics.</db:para>
      </dbx:description>
    </attribute>
  </define>
  <define name="db.os.attribute">
    <attribute name="os">
      <db:refpurpose>Indicates the operating system to which the element is applicable</db:refpurpose>
    </attribute>
  </define>
  <define name="db.revision.attribute">
    <attribute name="revision">
      <db:refpurpose>Indicates the editorial revision to which the element belongs</db:refpurpose>
    </attribute>
  </define>
  <define name="db.security.attribute">
    <attribute name="security">
      <db:refpurpose>Indicates something about the security level associated with the element to which it applies</db:refpurpose>
    </attribute>
  </define>
  <define name="db.userlevel.attribute">
    <attribute name="userlevel">
      <db:refpurpose>Indicates the level of user experience for which the element applies</db:refpurpose>
    </attribute>
  </define>
  <define name="db.vendor.attribute">
    <attribute name="vendor">
      <db:refpurpose>Indicates the computer vendor to which the element applies.</db:refpurpose>
    </attribute>
  </define>
  <define name="db.wordsize.attribute">
    <attribute name="wordsize">
      <db:refpurpose>Indicates the word size (width in bits) of the computer architecture to which the element applies</db:refpurpose>
    </attribute>
  </define>
  <define name="db.effectivity.attributes">
    <interleave>
      <optional>
        <ref name="db.arch.attribute"/>
      </optional>
      <optional>
        <ref name="db.audience.attribute"/>
      </optional>
      <optional>
        <ref name="db.condition.attribute"/>
      </optional>
      <optional>
        <ref name="db.conformance.attribute"/>
      </optional>
      <optional>
        <ref name="db.os.attribute"/>
      </optional>
      <optional>
        <ref name="db.revision.attribute"/>
      </optional>
      <optional>
        <ref name="db.security.attribute"/>
      </optional>
      <optional>
        <ref name="db.userlevel.attribute"/>
      </optional>
      <optional>
        <ref name="db.vendor.attribute"/>
      </optional>
      <optional>
        <ref name="db.wordsize.attribute"/>
      </optional>
    </interleave>
  </define>
  <!-- ====================================================================== -->
  <define name="db.endterm.attribute">
    <attribute name="endterm">
      <db:refpurpose>Points to the element whose content is to be used as the text of the link</db:refpurpose>
      <data type="IDREF"/>
    </attribute>
  </define>
  <define name="db.linkend.attribute">
    <attribute name="linkend">
      <db:refpurpose>Points to an internal link target by identifying the value of its xml:id attribute</db:refpurpose>
      <data type="IDREF"/>
    </attribute>
  </define>
  <define name="db.linkends.attribute">
    <attribute name="linkends">
      <db:refpurpose>Points to one or more internal link targets by identifying the value of their xml:id attributes</db:refpurpose>
      <data type="IDREFS"/>
    </attribute>
  </define>
  <define name="db.xlink.href.attribute">
    <attribute name="xlink:href">
      <db:refpurpose>Identifies a link target with a URI</db:refpurpose>
      <data type="anyURI"/>
    </attribute>
  </define>
  <define name="db.xlink.type.attribute">
    <attribute name="xlink:type">
      <db:refpurpose>Identifies the XLink link type</db:refpurpose>
      <value>simple</value>
      <a:documentation>An XLink simple link</a:documentation>
    </attribute>
  </define>
  <define name="db.xlink.role.attribute">
    <attribute name="xlink:role">
      <db:refpurpose>Identifies the XLink role of the link</db:refpurpose>
      <dbx:description>
        <db:para>DocBook uses the XLink role value <db:uri>http://docbook.org/xlink/role/olink</db:uri>
 to identify linking elements with OLink semantics. That means the part of <db:tag class="attribute">xlink:href</db:tag>
 before the number sign (#) is to be interpreted as equivalent to the olink <db:tag class="attribute">targetdoc</db:tag>
 attribute value, and the part after the number sign as the olink <db:tag class="attribute">targetptr</db:tag>
 attribute value.</db:para>
      </dbx:description>
      <data type="anyURI"/>
    </attribute>
  </define>
  <define name="db.xlink.arcrole.attribute">
    <attribute name="xlink:arcrole">
      <db:refpurpose>Identifies the XLink arcrole of the link</db:refpurpose>
      <data type="anyURI"/>
    </attribute>
  </define>
  <define name="db.xlink.title.attribute">
    <attribute name="xlink:title">
      <db:refpurpose>Identifies the XLink title of the link</db:refpurpose>
    </attribute>
  </define>
  <define name="db.xlink.show.enumeration">
    <choice>
      <value>new</value>
      <a:documentation>An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context.</a:documentation>
      <value>replace</value>
      <a:documentation>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.</a:documentation>
      <value>embed</value>
      <a:documentation>An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource.</a:documentation>
      <value>other</value>
      <a:documentation>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.</a:documentation>
      <value>none</value>
      <a:documentation>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.</a:documentation>
    </choice>
  </define>
  <define name="db.xlink.show.attribute">
    <attribute name="xlink:show">
      <db:refpurpose>Identifies the XLink show behavior of the link</db:refpurpose>
      <ref name="db.xlink.show.enumeration"/>
    </attribute>
  </define>
  <define name="db.xlink.actuate.enumeration">
    <choice>
      <value>onLoad</value>
      <a:documentation>An application should traverse to the ending resource immediately on loading the starting resource.</a:documentation>
      <value>onRequest</value>
      <a:documentation>An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal.</a:documentation>
      <value>other</value>
      <a:documentation>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.</a:documentation>
      <value>none</value>
      <a:documentation>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.</a:documentation>
    </choice>
  </define>
  <define name="db.xlink.actuate.attribute">
    <attribute name="xlink:actuate">
      <db:refpurpose>Identifies the XLink actuate behavior of the link</db:refpurpose>
      <ref name="db.xlink.actuate.enumeration"/>
    </attribute>
  </define>
  <define name="db.href.attributes">
    <interleave>
      <ref name="db.xlink.href.attribute"/>
      <optional>
        <ref name="db.xlink.type.attribute"/>
      </optional>
      <optional>
        <ref name="db.xlink.role.attribute"/>
      </optional>
      <optional>
        <ref name="db.xlink.arcrole.attribute"/>
      </optional>
      <optional>
        <ref name="db.xlink.title.attribute"/>
      </optional>
      <optional>
        <ref name="db.xlink.show.attribute"/>
      </optional>
      <optional>
        <ref name="db.xlink.actuate.attribute"/>
      </optional>
    </interleave>
  </define>
  <!-- ====================================================================== -->
  <define name="db.xml.id.attribute">
    <attribute name="xml:id">
      <db:refpurpose>Identifies the unique ID value of the element</db:refpurpose>
      <data type="ID"/>
    </attribute>
  </define>
  <define name="db.version.attribute">
    <attribute name="version">
      <db:refpurpose>Specifies the DocBook version of the element and its descendants</db:refpurpose>
    </attribute>
  </define>
  <define name="db.xml.lang.attribute">
    <attribute name="xml:lang">
      <db:refpurpose>Specifies the natural language of the element and its descendants</db:refpurpose>
    </attribute>
  </define>
  <define name="db.xml.base.attribute">
    <attribute name="xml:base">
      <db:refpurpose>Specifies the base URI of the element and its descendants</db:refpurpose>
      <data type="anyURI"/>
    </attribute>
  </define>
  <define name="db.remap.attribute">
    <attribute name="remap">
      <db:refpurpose>Provides the name or similar semantic identifier assigned to the content in some previous markup scheme</db:refpurpose>
    </attribute>
  </define>
  <define name="db.xreflabel.attribute">
    <attribute name="xreflabel">
      <db:refpurpose>Provides the text that is to be generated for a cross reference to the element</db:refpurpose>
    </attribute>
  </define>
  <define name="db.xrefstyle.attribute">
    <attribute name="xrefstyle">
      <db:refpurpose>Specifies a keyword or keywords identifying additional style information</db:refpurpose>
    </attribute>
  </define>
  <define name="db.revisionflag.enumeration">
    <choice>
      <value>changed</value>
      <a:documentation>The element has been changed.</a:documentation>
      <value>added</value>
      <a:documentation>The element is new (has been added to the document).</a:documentation>
      <value>deleted</value>
      <a:documentation>The element has been deleted.</a:documentation>
      <value>off</value>
      <a:documentation>Explicitly turns off revision markup for this element.</a:documentation>
    </choice>
  </define>
  <define name="db.revisionflag.attribute">
    <attribute name="revisionflag">
      <db:refpurpose>Identifies the revision status of the element</db:refpurpose>
      <ref name="db.revisionflag.enumeration"/>
    </attribute>
  </define>
  <define name="db.dir.enumeration">
    <choice>
      <value>ltr</value>
      <a:documentation>Left-to-right text</a:documentation>
      <value>rtl</value>
      <a:documentation>Right-to-left text</a:documentation>
      <value>lro</value>
      <a:documentation>Left-to-right override</a:documentation>
      <value>rlo</value>
      <a:documentation>Right-to-left override</a:documentation>
    </choice>
  </define>
  <define name="db.dir.attribute">
    <attribute name="dir">
      <db:refpurpose>Identifies the direction of text in an element</db:refpurpose>
      <ref name="db.dir.enumeration"/>
    </attribute>
  </define>
  <define name="db.common.base.attributes">
    <interleave>
      <optional>
        <ref name="db.version.attribute"/>
      </optional>
      <optional>
        <ref name="db.xml.lang.attribute"/>
      </optional>
      <optional>
        <ref name="db.xml.base.attribute"/>
      </optional>
      <optional>
        <ref name="db.remap.attribute"/>
      </optional>
      <optional>
        <ref name="db.xreflabel.attribute"/>
      </optional>
      <optional>
        <ref name="db.revisionflag.attribute"/>
      </optional>
      <optional>
        <ref name="db.dir.attribute"/>
      </optional>
      <ref name="db.effectivity.attributes"/>
    </interleave>
  </define>
  <define name="db.common.attributes">
    <interleave>
      <optional>
        <ref name="db.xml.id.attribute"/>
      </optional>
      <ref name="db.common.base.attributes"/>
    </interleave>
  </define>
  <define name="db.common.idreq.attributes">
    <interleave>
      <ref name="db.xml.id.attribute"/>
      <ref name="db.common.base.attributes"/>
    </interleave>
  </define>
  <define name="db.common.linking.attributes">
    <optional>
      <choice>
        <ref name="db.linkend.attribute"/>
        <ref name="db.href.attributes"/>
      </choice>
    </optional>
  </define>
  <define name="db.common.req.linking.attributes">
    <choice>
      <ref name="db.linkend.attribute"/>
      <ref name="db.href.attributes"/>
    </choice>
  </define>
  <define name="db.common.data.attributes">
    <optional>
      <attribute name="format">
        <db:refpurpose>Specifies the format of the data</db:refpurpose>
      </attribute>
    </optional>
    <choice>
      <attribute name="fileref">
        <db:refpurpose>Indentifies the location of the data by URI</db:refpurpose>
        <data type="anyURI"/>
      </attribute>
      <attribute name="entityref">
        <db:refpurpose>Identifies the location of the data by external identifier (entity name)</db:refpurpose>
        <data type="ENTITY"/>
      </attribute>
    </choice>
  </define>
  <!-- ====================================================================== -->
  <define name="db.verbatim.continuation.enumeration">
    <choice>
      <value>continues</value>
      <a:documentation>Line numbering continues from the immediately preceding element with the same name.</a:documentation>
      <value>restarts</value>
      <a:documentation>Line numbering restarts (begins at 1, usually).</a:documentation>
    </choice>
  </define>
  <define name="db.verbatim.continuation.attribute">
    <attribute name="continuation">
      <db:refpurpose>Determines whether line numbering continues from the previous element or restarts.</db:refpurpose>
      <ref name="db.verbatim.continuation.enumeration"/>
    </attribute>
  </define>
  <define name="db.verbatim.linenumbering.enumeration">
    <choice>
      <value>numbered</value>
      <a:documentation>Lines are numbered.</a:documentation>
      <value>unnumbered</value>
      <a:documentation>Lines are not numbered.</a:documentation>
    </choice>
  </define>
  <define name="db.verbatim.linenumbering.attribute">
    <attribute name="linenumbering">
      <db:refpurpose>Determines whether lines are numbered.</db:refpurpose>
      <ref name="db.verbatim.linenumbering.enumeration"/>
    </attribute>
  </define>
  <define name="db.verbatim.startinglinenumber.attribute">
    <attribute name="startinglinenumber">
      <db:refpurpose>Specifies the initial line number.</db:refpurpose>
      <data type="integer"/>
    </attribute>
  </define>
  <define name="db.verbatim.language.attribute">
    <attribute name="language">
      <db:refpurpose>Identifies the language (i.e. programming language) of the verbatim content.</db:refpurpose>
    </attribute>
  </define>
  <define name="db.verbatim.xml.space.attribute">
    <attribute name="xml:space">
      <db:refpurpose>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.</db:refpurpose>
      <value>preserve</value>
      <a:documentation>Whitespace must be preserved.</a:documentation>
    </attribute>
  </define>
  <define name="db.verbatim.attributes">
    <interleave>
      <optional>
        <ref name="db.verbatim.continuation.attribute"/>
      </optional>
      <optional>
        <ref name="db.verbatim.linenumbering.attribute"/>
      </optional>
      <optional>
        <ref name="db.verbatim.startinglinenumber.attribute"/>
      </optional>
      <optional>
        <ref name="db.verbatim.language.attribute"/>
      </optional>
      <optional>
        <ref name="db.verbatim.xml.space.attribute"/>
      </optional>
    </interleave>
  </define>
  <!-- ====================================================================== -->
  <define name="db.label.attribute">
    <attribute name="label">
      <db:refpurpose>Specifies an identifying string for presentation purposes</db:refpurpose>
    </attribute>
  </define>
  <define name="db.width.characters.attribute">
    <attribute name="width">
      <db:refpurpose>Specifies the width (in characters) of the element</db:refpurpose>
      <data type="nonNegativeInteger"/>
    </attribute>
  </define>
  <define name="db.spacing.enumeration">
    <choice>
      <value>compact</value>
      <a:documentation>The spacing should be "compact".</a:documentation>
      <value>normal</value>
      <a:documentation>The spacing should be "normal".</a:documentation>
    </choice>
  </define>
  <define name="db.spacing.attribute">
    <attribute name="spacing">
      <db:refpurpose>Specifies (a hint about) the spacing of the content</db:refpurpose>
      <ref name="db.spacing.enumeration"/>
    </attribute>
  </define>
  <define name="db.pgwide.enumeration">
    <choice>
      <value>0</value>
      <a:documentation>The element should be rendered in the current text flow (with the flow column width).</a:documentation>
      <value>1</value>
      <a:documentation>The element should be rendered across the full text page.</a:documentation>
    </choice>
  </define>
  <define name="db.pgwide.attribute">
    <attribute name="pgwide">
      <db:refpurpose>Indicates if the element is rendered across the column or the page</db:refpurpose>
      <ref name="db.pgwide.enumeration"/>
    </attribute>
  </define>
  <define name="db.language.attribute">
    <attribute name="language">
      <db:refpurpose>Identifies the language (i.e. programming language) of the content.</db:refpurpose>
    </attribute>
  </define>
  <define name="db.performance.enumeration">
    <choice>
      <value>optional</value>
      <a:documentation>The content describes an optional step or steps.</a:documentation>
      <value>required</value>
      <a:documentation>The content describes a required step or steps.</a:documentation>
    </choice>
  </define>
  <define name="db.performance.attribute">
    <attribute name="performance">
      <db:refpurpose>Specifies if the content is required or optional.</db:refpurpose>
      <ref name="db.performance.enumeration"/>
    </attribute>
  </define>
  <define name="db.floatstyle.attribute">
    <attribute name="floatstyle">
      <db:refpurpose>Specifies style information to be used when rendering the float</db:refpurpose>
    </attribute>
  </define>
  <define name="db.width.attribute">
    <attribute name="width">
      <db:refpurpose>Specifies the width of the element</db:refpurpose>
    </attribute>
  </define>
  <define name="db.depth.attribute">
    <attribute name="depth">
      <db:refpurpose>Specifies the depth of the element</db:refpurpose>
    </attribute>
  </define>
  <define name="db.contentwidth.attribute">
    <attribute name="contentwidth">
      <db:refpurpose>Specifies the width of the content rectangle</db:refpurpose>
    </attribute>
  </define>
  <define name="db.contentdepth.attribute">
    <attribute name="contentdepth">
      <db:refpurpose>Specifies the depth of the content rectangle</db:refpurpose>
    </attribute>
  </define>
  <define name="db.scalefit.enumeration">
    <choice>
      <value>0</value>
      <a:documentation>False (do not scale-to-fit; anamorphic scaling may occur)</a:documentation>
      <value>1</value>
      <a:documentation>True (scale-to-fit; anamorphic scaling is forbidden)</a:documentation>
    </choice>
  </define>
  <define name="db.scale.attribute">
    <attribute name="scale">
      <db:refpurpose>Specifies the scaling factor</db:refpurpose>
      <data type="positiveInteger"/>
    </attribute>
  </define>
  <!-- ====================================================================== -->
  <define name="db.halign.enumeration">
    <choice>
      <value>center</value>
      <a:documentation>Centered horizontally</a:documentation>
      <value>char</value>
      <a:documentation>Aligned horizontally on the specified character</a:documentation>
      <value>justify</value>
      <a:documentation>Fully justified (left and right margins or edges)</a:documentation>
      <value>left</value>
      <a:documentation>Left aligned</a:documentation>
      <value>right</value>
      <a:documentation>Right aligned</a:documentation>
    </choice>
  </define>
  <define name="db.valign.enumeration">
    <choice>
      <value>bottom</value>
      <a:documentation>Aligned on the bottom of the region</a:documentation>
      <value>middle</value>
      <a:documentation>Centered vertically</a:documentation>
      <value>top</value>
      <a:documentation>Aligned on the top of the region</a:documentation>
    </choice>
  </define>
  <!-- ====================================================================== -->
  <ctrl:other-attribute name="db.biblio.class.attribute" enum-name="db.biblio.class-enum.attribute" other-name="db.biblio.class-other.attributes"/>
  <define name="db.biblio.class.enumeration">
    <choice>
      <value>doi</value>
      <a:documentation>A digital object identifier.</a:documentation>
      <value>isbn</value>
      <a:documentation>An international standard book number.</a:documentation>
      <value>isrn</value>
      <a:documentation>An international standard technical report number (ISO 10444).</a:documentation>
      <value>issn</value>
      <a:documentation>An international standard serial number.</a:documentation>
      <value>libraryofcongress</value>
      <a:documentation>A Library of Congress reference number.</a:documentation>
      <value>pubsnumber</value>
      <a:documentation>A publication number (an internal number or possibly organizational standard).</a:documentation>
      <value>uri</value>
      <a:documentation>A Uniform Resource Identifier</a:documentation>
    </choice>
  </define>
  <define name="db.biblio.class-enum.attribute">
    <optional>
      <attribute name="class">
        <db:refpurpose>Identifies the kind of bibliographic identifier</db:refpurpose>
        <ref name="db.biblio.class.enumeration"/>
      </attribute>
    </optional>
  </define>
  <define name="db.biblio.class-other.attribute">
    <attribute name="otherclass">
      <db:refpurpose>Identifies the nature of the non-standard bibliographic identifier</db:refpurpose>
      <data type="NMTOKEN"/>
    </attribute>
  </define>
  <define name="db.biblio.class-other.attributes">
    <interleave>
      <attribute name="class">
        <db:refpurpose>Identifies the kind of bibliographic identifier</db:refpurpose>
        <value>other</value>
        <a:documentation>Indicates that the identifier is some 'other' kind.</a:documentation>
      </attribute>
      <ref name="db.biblio.class-other.attribute"/>
    </interleave>
  </define>
  <define name="db.biblio.class.attribute">
    <choice>
      <ref name="db.biblio.class-enum.attribute"/>
      <ref name="db.biblio.class-other.attributes"/>
    </choice>
  </define>
  <!-- ====================================================================== -->
  <define name="db.ubiq.inlines">
    <choice>
      <ref name="db.inlinemediaobject"/>
      <ref name="db.remark"/>
      <ref name="db.link.inlines"/>
      <ref name="db.alt"/>
      <ref name="db.trademark"/>
      <!-- below, effectively the publishing inlines (as of 5.0) -->
      <ref name="db.abbrev"/>
      <ref name="db.acronym"/>
      <ref name="db.date"/>
      <ref name="db._emphasis"/>
      <ref name="db.footnote"/>
      <ref name="db.footnoteref"/>
      <ref name="db._foreignphrase"/>
      <ref name="db._phrase"/>
      <ref name="db._quote"/>
      <ref name="db.subscript"/>
      <ref name="db.superscript"/>
      <ref name="db.wordasword"/>
    </choice>
  </define>
  <define name="db._text">
    <zeroOrMore>
      <choice>
        <text/>
        <ref name="db.ubiq.inlines"/>
        <ref name="db._phrase"/>
        <ref name="db.replaceable"/>
      </choice>
    </zeroOrMore>
  </define>
  <define name="db._title">
    <interleave>
      <optional>
        <ref name="db.title"/>
      </optional>
      <optional>
        <ref name="db.titleabbrev"/>
      </optional>
      <optional>
        <ref name="db.subtitle"/>
      </optional>
    </interleave>
  </define>
  <define name="db._title.req">
    <interleave>
      <ref name="db.title"/>
      <optional>
        <ref name="db.titleabbrev"/>
      </optional>
      <optional>
        <ref name="db.subtitle"/>
      </optional>
    </interleave>
  </define>
  <define name="db._title.only">
    <interleave>
      <optional>
        <ref name="db.title"/>
      </optional>
      <optional>
        <ref name="db.titleabbrev"/>
      </optional>
    </interleave>
  </define>
  <define name="db._title.onlyreq">
    <interleave>
      <ref name="db.title"/>
      <optional>
        <ref name="db.titleabbrev"/>
      </optional>
    </interleave>
  </define>
  <define name="db._info">
    <choice>
      <group>
        <ref name="db._title"/>
        <optional>
          <ref name="db.titleforbidden.info"/>
        </optional>
      </group>
      <optional>
        <ref name="db.info"/>
      </optional>
    </choice>
  </define>
  <define name="db._info.title.req">
    <choice>
      <group>
        <ref name="db._title.req"/>
        <optional>
          <ref name="db.titleforbidden.info"/>
        </optional>
      </group>
      <ref name="db.titlereq.info"/>
    </choice>
  </define>
  <define name="db._info.title.only">
    <choice>
      <group>
        <ref name="db._title.only"/>
        <optional>
          <ref name="db.titleforbidden.info"/>
        </optional>
      </group>
      <ref name="db.titleonly.info"/>
    </choice>
  </define>
  <define name="db._info.title.onlyreq">
    <choice>
      <group>
        <ref name="db._title.onlyreq"/>
        <optional>
          <ref name="db.titleforbidden.info"/>
        </optional>
      </group>
      <ref name="db.titleonlyreq.info"/>
    </choice>
  </define>
  <define name="db._info.title.forbidden">
    <optional>
      <ref name="db.titleforbidden.info"/>
    </optional>
  </define>
  <!-- ====================================================================== -->
  <define name="db.all.inlines">
    <choice>
      <text/>
      <ref name="db.ubiq.inlines"/>
      <ref name="db.general.inlines"/>
      <ref name="db.domain.inlines"/>
      <ref name="db.extension.inlines"/>
    </choice>
  </define>
  <define name="db.general.inlines">
    <choice>
      <ref name="db.publishing.inlines"/>
      <ref name="db.product.inlines"/>
      <ref name="db.bibliography.inlines"/>
      <ref name="db.graphic.inlines"/>
      <ref name="db.indexing.inlines"/>
      <ref name="db.link.inlines"/>
    </choice>
  </define>
  <define name="db.domain.inlines">
    <ref name="db.technical.inlines"/>
  </define>
  <define name="db.technical.inlines">
    <choice>
      <ref name="db.replaceable"/>
      <ref name="db.package"/>
      <ref name="db.parameter"/>
    </choice>
  </define>
  <define name="db.product.inlines">
    <ref name="db.trademark"/>
  </define>
  <define name="db.bibliography.inlines">
    <choice>
      <ref name="db.citation"/>
      <ref name="db.citerefentry"/>
      <ref name="db.citetitle"/>
      <ref name="db.citebiblioid"/>
      <ref name="db.author"/>
      <ref name="db.person"/>
      <ref name="db.personname"/>
      <ref name="db.org"/>
      <ref name="db.orgname"/>
      <ref name="db.editor"/>
      <ref name="db.jobtitle"/>
    </choice>
  </define>
  <define name="db.publishing.inlines">
    <choice>
      <ref name="db.abbrev"/>
      <ref name="db.acronym"/>
      <ref name="db.date"/>
      <ref name="db.emphasis"/>
      <ref name="db.footnote"/>
      <ref name="db.footnoteref"/>
      <ref name="db.foreignphrase"/>
      <ref name="db.phrase"/>
      <ref name="db.quote"/>
      <ref name="db.subscript"/>
      <ref name="db.superscript"/>
      <ref name="db.wordasword"/>
    </choice>
  </define>
  <define name="db.graphic.inlines">
    <ref name="db.inlinemediaobject"/>
  </define>
  <define name="db.indexing.inlines">
    <notAllowed/>
  </define>
  <define name="db.link.inlines">
    <choice>
      <ref name="db.xref"/>
      <ref name="db.link"/>
      <ref name="db.olink"/>
      <ref name="db.anchor"/>
    </choice>
  </define>
  <define name="db.extension.inlines">
    <notAllowed/>
  </define>
  <!-- ====================================================================== -->
  <define name="db.nopara.blocks">
    <choice>
      <ref name="db.list.blocks"/>
      <ref name="db.formal.blocks"/>
      <ref name="db.informal.blocks"/>
      <ref name="db.publishing.blocks"/>
      <ref name="db.graphic.blocks"/>
      <ref name="db.technical.blocks"/>
      <ref name="db.verbatim.blocks"/>
      <ref name="db.bridgehead"/>
      <ref name="db.remark"/>
      <ref name="db.revhistory"/>
    </choice>
  </define>
  <define name="db.para.blocks">
    <choice>
      <ref name="db.anchor"/>
      <ref name="db.para"/>
      <ref name="db.formalpara"/>
      <ref name="db.simpara"/>
    </choice>
  </define>
  <define name="db.all.blocks">
    <choice>
      <ref name="db.nopara.blocks"/>
      <ref name="db.para.blocks"/>
      <ref name="db.extension.blocks"/>
    </choice>
  </define>
  <ctrl:exclude from="db.formal.blocks" exclude="db.formal.blocks"/>
  <define name="db.formal.blocks">
    <choice>
      <ref name="db.example"/>
      <ref name="db.figure"/>
      <ref name="db.table"/>
    </choice>
  </define>
  <define name="db.informal.blocks">
    <choice>
      <ref name="db.informalexample"/>
      <ref name="db.informalfigure"/>
      <ref name="db.informaltable"/>
    </choice>
  </define>
  <define name="db.publishing.blocks">
    <choice>
      <ref name="db.sidebar"/>
      <ref name="db.blockquote"/>
      <ref name="db.address"/>
      <ref name="db.epigraph"/>
    </choice>
  </define>
  <define name="db.graphic.blocks">
    <choice>
      <ref name="db.mediaobject"/>
      <ref name="db.screenshot"/>
    </choice>
  </define>
  <define name="db.technical.blocks">
    <ref name="db.procedure"/>
  </define>
  <define name="db.list.blocks">
    <choice>
      <ref name="db.itemizedlist"/>
      <ref name="db.orderedlist"/>
      <ref name="db.procedure"/>
      <ref name="db.simplelist"/>
      <ref name="db.variablelist"/>
      <ref name="db.segmentedlist"/>
    </choice>
  </define>
  <define name="db.verbatim.blocks">
    <choice>
      <ref name="db.screen"/>
      <ref name="db.literallayout"/>
    </choice>
  </define>
  <define name="db.extension.blocks">
    <notAllowed/>
  </define>
  <!-- ====================================================================== -->
  <define name="db.info.extension">
    <ref name="db._any"/>
  </define>
  <define name="db.info.elements">
    <choice>
      <ref name="db.abstract"/>
      <ref name="db.address"/>
      <ref name="db.artpagenums"/>
      <ref name="db.author"/>
      <ref name="db.authorgroup"/>
      <ref name="db.authorinitials"/>
      <ref name="db.bibliocoverage"/>
      <ref name="db.biblioid"/>
      <ref name="db.bibliosource"/>
      <ref name="db.collab"/>
      <ref name="db.confgroup"/>
      <ref name="db.contractsponsor"/>
      <ref name="db.contractnum"/>
      <ref name="db.copyright"/>
      <ref name="db.cover"/>
      <ref name="db.date"/>
      <ref name="db.edition"/>
      <ref name="db.editor"/>
      <ref name="db.issuenum"/>
      <ref name="db.keywordset"/>
      <ref name="db.legalnotice"/>
      <ref name="db.mediaobject"/>
      <ref name="db.org"/>
      <ref name="db.orgname"/>
      <ref name="db.othercredit"/>
      <ref name="db.pagenums"/>
      <ref name="db.printhistory"/>
      <ref name="db.pubdate"/>
      <ref name="db.publisher"/>
      <ref name="db.publishername"/>
      <ref name="db.releaseinfo"/>
      <ref name="db.revhistory"/>
      <ref name="db.seriesvolnums"/>
      <ref name="db.subjectset"/>
      <ref name="db.volumenum"/>
      <ref name="db.info.extension"/>
    </choice>
  </define>
  <define name="db.bibliographic.elements">
    <choice>
      <ref name="db.info.elements"/>
      <ref name="db.publishing.inlines"/>
      <ref name="db.citerefentry"/>
      <ref name="db.citetitle"/>
      <ref name="db.citebiblioid"/>
      <ref name="db.person"/>
      <ref name="db.personblurb"/>
      <ref name="db.personname"/>
      <ref name="db.subtitle"/>
      <ref name="db.title"/>
      <ref name="db.titleabbrev"/>
    </choice>
  </define>
  <!-- ====================================================================== -->
  <div>
    <db:refname>title</db:refname>
    <db:refpurpose>The text of the title of a section of a document or of a formal block-level element</db:refpurpose>
    <define name="db.title.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.title.attlist">
      <interleave>
        <optional>
          <ref name="db.title.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.title">
      <element name="title">
        <ref name="db.title.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>titleabbrev</db:refname>
    <db:refpurpose>The abbreviation of a title</db:refpurpose>
    <define name="db.titleabbrev.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titleabbrev.attlist">
      <interleave>
        <optional>
          <ref name="db.titleabbrev.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.titleabbrev">
      <element name="titleabbrev">
        <ref name="db.titleabbrev.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>subtitle</db:refname>
    <db:refpurpose>The subtitle of a document</db:refpurpose>
    <define name="db.subtitle.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subtitle.attlist">
      <interleave>
        <optional>
          <ref name="db.subtitle.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.subtitle">
      <element name="subtitle">
        <ref name="db.subtitle.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>info</db:refname>
    <db:refpurpose>A wrapper for information about a component or other block</db:refpurpose>
    <define name="db.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.info.attlist">
      <interleave>
        <optional>
          <ref name="db.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.info">
      <element name="info">
        <ref name="db.info.attlist"/>
        <interleave>
          <ref name="db._title"/>
          <zeroOrMore>
            <ref name="db.info.elements"/>
          </zeroOrMore>
        </interleave>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>info</db:refname>
    <db:refpurpose>A wrapper for information about a component or other block with a required title</db:refpurpose>
    <define name="db.titlereq.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titlereq.info.attlist">
      <interleave>
        <optional>
          <ref name="db.titlereq.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.titlereq.info">
      <element name="info">
        <ref name="db.titlereq.info.attlist"/>
        <interleave>
          <ref name="db._title.req"/>
          <zeroOrMore>
            <ref name="db.info.elements"/>
          </zeroOrMore>
        </interleave>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>info</db:refname>
    <db:refpurpose>A wrapper for information about a component or other block with only a title</db:refpurpose>
    <define name="db.titleonly.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titleonly.info.attlist">
      <interleave>
        <optional>
          <ref name="db.titleonly.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.titleonly.info">
      <element name="info">
        <ref name="db.titleonly.info.attlist"/>
        <interleave>
          <ref name="db._title.only"/>
          <zeroOrMore>
            <ref name="db.info.elements"/>
          </zeroOrMore>
        </interleave>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>info</db:refname>
    <db:refpurpose>A wrapper for information about a component or other block with only a required title</db:refpurpose>
    <define name="db.titleonlyreq.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titleonlyreq.info.attlist">
      <interleave>
        <optional>
          <ref name="db.titleonlyreq.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.titleonlyreq.info">
      <element name="info">
        <ref name="db.titleonlyreq.info.attlist"/>
        <interleave>
          <ref name="db._title.onlyreq"/>
          <zeroOrMore>
            <ref name="db.info.elements"/>
          </zeroOrMore>
        </interleave>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>info</db:refname>
    <db:refpurpose>A wrapper for information about a component or other block without a title</db:refpurpose>
    <define name="db.titleforbidden.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titleforbidden.info.attlist">
      <interleave>
        <optional>
          <ref name="db.titleforbidden.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.titleforbidden.info">
      <element name="info">
        <ref name="db.titleforbidden.info.attlist"/>
        <zeroOrMore>
          <ref name="db.info.elements"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>subjectset</db:refname>
    <db:refpurpose>A set of terms describing the subject matter of a document</db:refpurpose>
    <define name="db.subjectset.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subjectset.scheme.attribute">
      <attribute name="scheme">
        <db:refpurpose>Identifies the controlled vocabulary used by this set's terms</db:refpurpose>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.subjectset.attlist">
      <interleave>
        <optional>
          <ref name="db.subjectset.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.subjectset.scheme.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.subjectset">
      <element name="subjectset">
        <ref name="db.subjectset.attlist"/>
        <oneOrMore>
          <ref name="db.subject"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>subject</db:refname>
    <db:refpurpose>One of a group of terms describing the subject matter of a document</db:refpurpose>
    <define name="db.subject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subject.weight.attribute">
      <attribute name="weight">
        <db:refpurpose>Specifies a ranking for this subject relative to other subjects in the same set</db:refpurpose>
      </attribute>
    </define>
    <define name="db.subject.attlist">
      <interleave>
        <optional>
          <ref name="db.subject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.subject.weight.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.subject">
      <element name="subject">
        <ref name="db.subject.attlist"/>
        <oneOrMore>
          <ref name="db.subjectterm"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>subjectterm</db:refname>
    <db:refpurpose>A term in a group of terms describing the subject matter of a document</db:refpurpose>
    <define name="db.subjectterm.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subjectterm.attlist">
      <interleave>
        <optional>
          <ref name="db.subjectterm.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.subjectterm">
      <element name="subjectterm">
        <ref name="db.subjectterm.attlist"/>
        <text/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>keywordset</db:refname>
    <db:refpurpose>A set of keywords describing the content of a document</db:refpurpose>
    <define name="db.keywordset.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.keywordset.attlist">
      <interleave>
        <optional>
          <ref name="db.keywordset.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.keywordset">
      <element name="keywordset">
        <ref name="db.keywordset.attlist"/>
        <oneOrMore>
          <ref name="db.keyword"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>keyword</db:refname>
    <db:refpurpose>One of a set of keywords describing the content of a document</db:refpurpose>
    <define name="db.keyword.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.keyword.attlist">
      <interleave>
        <optional>
          <ref name="db.keyword.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.keyword">
      <element name="keyword">
        <ref name="db.keyword.attlist"/>
        <text/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <define name="db.table.choice">
    <notAllowed/>
  </define>
  <define name="db.informaltable.choice">
    <notAllowed/>
  </define>
  <define name="db.table">
    <ref name="db.table.choice"/>
  </define>
  <define name="db.informaltable">
    <ref name="db.informaltable.choice"/>
  </define>
  <!-- ====================================================================== -->
  <div>
    <db:refname>procedure</db:refname>
    <db:refpurpose>A list of operations to be performed in a well-defined sequence</db:refpurpose>
    <define name="db.procedure.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.procedure.attlist">
      <interleave>
        <optional>
          <ref name="db.procedure.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.procedure.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.procedure">
      <element name="procedure">
        <ref name="db.procedure.attlist"/>
        <ref name="db.procedure.info"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.step"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>step</db:refname>
    <db:refpurpose>A unit of action in a procedure</db:refpurpose>
    <define name="db.step.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.step.attlist">
      <interleave>
        <optional>
          <ref name="db.step.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.performance.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.step.info">
      <ref name="db._info.title.only"/>
    </define>
    <!--
      This content model is blocks*, step|stepalternatives, blocks* but
      expressed this way it avoids UPA issues in XSD and DTD versions
    -->
    <define name="db.step">
      <element name="step">
        <ref name="db.step.attlist"/>
        <ref name="db.step.info"/>
        <choice>
          <group>
            <oneOrMore>
              <ref name="db.all.blocks"/>
            </oneOrMore>
            <optional>
              <choice>
                <ref name="db.substeps"/>
                <ref name="db.stepalternatives"/>
              </choice>
              <zeroOrMore>
                <ref name="db.all.blocks"/>
              </zeroOrMore>
            </optional>
          </group>
          <group>
            <choice>
              <ref name="db.substeps"/>
              <ref name="db.stepalternatives"/>
            </choice>
            <zeroOrMore>
              <ref name="db.all.blocks"/>
            </zeroOrMore>
          </group>
        </choice>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>stepalternatives</db:refname>
    <db:refpurpose>Alternative steps in a procedure</db:refpurpose>
    <define name="db.stepalternatives.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.stepalternatives.attlist">
      <interleave>
        <optional>
          <ref name="db.stepalternatives.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.performance.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.stepalternatives.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.stepalternatives">
      <element name="stepalternatives">
        <ref name="db.stepalternatives.attlist"/>
        <ref name="db.stepalternatives.info"/>
        <oneOrMore>
          <ref name="db.step"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>substeps</db:refname>
    <db:refpurpose>A wrapper for steps that occur within steps in a procedure</db:refpurpose>
    <define name="db.substeps.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.substeps.attlist">
      <interleave>
        <optional>
          <ref name="db.substeps.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.performance.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.substeps">
      <element name="substeps">
        <ref name="db.substeps.attlist"/>
        <oneOrMore>
          <ref name="db.step"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>sidebar</db:refname>
    <db:refpurpose>A portion of a document that is isolated from the main narrative flow</db:refpurpose>
    <ctrl:exclude from="db.sidebar" exclude="db.sidebar"/>
    <define name="db.sidebar.floatstyle.attribute">
      <ref name="db.floatstyle.attribute"/>
    </define>
    <define name="db.sidebar.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.sidebar.attlist">
      <interleave>
        <optional>
          <ref name="db.sidebar.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.sidebar.floatstyle.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.sidebar.info">
      <ref name="db._info"/>
    </define>
    <define name="db.sidebar">
      <element name="sidebar">
        <ref name="db.sidebar.attlist"/>
        <ref name="db.sidebar.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>abstract</db:refname>
    <db:refpurpose>A summary</db:refpurpose>
    <define name="db.abstract.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.abstract.attlist">
      <interleave>
        <optional>
          <ref name="db.abstract.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.abstract.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.abstract">
      <element name="abstract">
        <ref name="db.abstract.attlist"/>
        <ref name="db.abstract.info"/>
        <oneOrMore>
          <ref name="db.para.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>personblurb</db:refname>
    <db:refpurpose>A short description or note about a person</db:refpurpose>
    <define name="db.personblurb.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.personblurb.attlist">
      <interleave>
        <optional>
          <ref name="db.personblurb.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.personblurb.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.personblurb">
      <element name="personblurb">
        <ref name="db.personblurb.attlist"/>
        <ref name="db.personblurb.info"/>
        <oneOrMore>
          <ref name="db.para.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>blockquote</db:refname>
    <db:refpurpose>A quotation set off from the main text</db:refpurpose>
    <define name="db.blockquote.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.blockquote.attlist">
      <interleave>
        <optional>
          <ref name="db.blockquote.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.blockquote.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.blockquote">
      <element name="blockquote">
        <ref name="db.blockquote.attlist"/>
        <ref name="db.blockquote.info"/>
        <optional>
          <ref name="db.attribution"/>
        </optional>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>attribution</db:refname>
    <db:refpurpose>The source of a block quote or epigraph</db:refpurpose>
    <define name="db.attribution.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.attribution.attlist">
      <interleave>
        <optional>
          <ref name="db.attribution.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.attribution">
      <element name="attribution">
        <ref name="db.attribution.attlist"/>
        <zeroOrMore>
          <choice>
            <ref name="db._text"/>
            <ref name="db.person"/>
            <ref name="db.personname"/>
            <ref name="db.citetitle"/>
            <ref name="db.citation"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>bridgehead</db:refname>
    <db:refpurpose>A free-floating heading</db:refpurpose>
    <ctrl:other-attribute name="db.bridgehead.renderas.attribute" enum-name="db.bridgehead.renderas-enum.attribute" other-name="db.bridgehead.renderas-other.attributes"/>
    <define name="db.bridgehead.renderas.enumeration">
      <choice>
        <value>sect1</value>
        <a:documentation>Render as a first-level section</a:documentation>
        <value>sect2</value>
        <a:documentation>Render as a second-level section</a:documentation>
        <value>sect3</value>
        <a:documentation>Render as a third-level section</a:documentation>
        <value>sect4</value>
        <a:documentation>Render as a fourth-level section</a:documentation>
        <value>sect5</value>
        <a:documentation>Render as a fifth-level section</a:documentation>
      </choice>
    </define>
    <define name="db.bridgehead.renderas-enum.attribute">
      <optional>
        <attribute name="renderas">
          <db:refpurpose>Indicates how the bridge head should be rendered</db:refpurpose>
          <ref name="db.bridgehead.renderas.enumeration"/>
        </attribute>
      </optional>
    </define>
    <define name="db.bridgehead.renderas-other.attribute">
      <attribute name="otherrenderas">
        <db:refpurpose>Identifies the nature of the non-standard rendering</db:refpurpose>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.bridgehead.renderas-other.attributes">
      <interleave>
        <attribute name="renderas">
          <db:refpurpose>Indicates how the bridge head should be rendered</db:refpurpose>
          <value>other</value>
          <a:documentation>Identifies a non-standard rendering</a:documentation>
        </attribute>
        <ref name="db.bridgehead.renderas-other.attribute"/>
      </interleave>
    </define>
    <define name="db.bridgehead.renderas.attribute">
      <choice>
        <ref name="db.bridgehead.renderas-enum.attribute"/>
        <ref name="db.bridgehead.renderas-other.attributes"/>
      </choice>
    </define>
    <define name="db.bridgehead.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.bridgehead.attlist">
      <interleave>
        <optional>
          <ref name="db.bridgehead.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.bridgehead.renderas.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.bridgehead">
      <element name="bridgehead">
        <ref name="db.bridgehead.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>remark</db:refname>
    <db:refpurpose>A remark (or comment) intended for presentation in a draft manuscript</db:refpurpose>
    <define name="db.remark.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.remark.attlist">
      <interleave>
        <optional>
          <ref name="db.remark.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.remark">
      <element name="remark">
        <ref name="db.remark.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>epigraph</db:refname>
    <db:refpurpose>A short inscription at the beginning of a document or component</db:refpurpose>
    <define name="db.epigraph.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.epigraph.attlist">
      <interleave>
        <optional>
          <ref name="db.epigraph.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.epigraph.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.epigraph">
      <element name="epigraph">
        <ref name="db.epigraph.attlist"/>
        <ref name="db.epigraph.info"/>
        <optional>
          <ref name="db.attribution"/>
        </optional>
        <oneOrMore>
          <choice>
            <ref name="db.para.blocks"/>
            <ref name="db.literallayout"/>
          </choice>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>footnote</db:refname>
    <db:refpurpose>A footnote</db:refpurpose>
    <ctrl:exclude from="db.footnote" exclude="db.footnote"/>
    <ctrl:exclude from="db.footnote" exclude="db.formal.blocks"/>
    <ctrl:exclude from="db.footnote" exclude="db.sidebar"/>
    <ctrl:exclude from="db.footnote" exclude="db.task"/>
    <ctrl:exclude from="db.footnote" exclude="db.epigraph"/>
    <define name="db.footnote.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.footnote.label.attribute">
      <attribute name="label">
        <db:refpurpose>Identifies the desired footnote mark</db:refpurpose>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.footnote.attlist">
      <interleave>
        <optional>
          <ref name="db.footnote.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.footnote.label.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.footnote">
      <element name="footnote">
        <ref name="db.footnote.attlist"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>formalpara</db:refname>
    <db:refpurpose>A paragraph with a title</db:refpurpose>
    <define name="db.formalpara.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.formalpara.attlist">
      <interleave>
        <optional>
          <ref name="db.formalpara.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.formalpara.info">
      <ref name="db._info.title.onlyreq"/>
    </define>
    <define name="db.formalpara">
      <element name="formalpara">
        <ref name="db.formalpara.attlist"/>
        <ref name="db.formalpara.info"/>
        <zeroOrMore>
          <ref name="db.indexing.inlines"/>
        </zeroOrMore>
        <ref name="db.para"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>para</db:refname>
    <db:refpurpose>A paragraph</db:refpurpose>
    <define name="db.para.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.para.attlist">
      <interleave>
        <optional>
          <ref name="db.para.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.para.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.para">
      <element name="para">
        <ref name="db.para.attlist"/>
        <ref name="db.para.info"/>
        <zeroOrMore>
          <choice>
            <ref name="db.all.inlines"/>
            <ref name="db.nopara.blocks"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>simpara</db:refname>
    <db:refpurpose>A paragraph that contains only text and inline markup, no block elements</db:refpurpose>
    <define name="db.simpara.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.simpara.attlist">
      <interleave>
        <optional>
          <ref name="db.simpara.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.simpara.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.simpara">
      <element name="simpara">
        <ref name="db.simpara.attlist"/>
        <ref name="db.simpara.info"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>itemizedlist</db:refname>
    <db:refpurpose>A list in which each entry is marked with a bullet or other dingbat</db:refpurpose>
    <define name="db.itemizedlist.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.itemizedlist.mark.attribute">
      <attribute name="mark">
        <db:refpurpose>Identifies the type of mark to be used on items in this list</db:refpurpose>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.itemizedlist.attlist">
      <interleave>
        <optional>
          <ref name="db.itemizedlist.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.spacing.attribute"/>
        </optional>
        <optional>
          <ref name="db.itemizedlist.mark.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.itemizedlist.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.itemizedlist">
      <element name="itemizedlist">
        <ref name="db.itemizedlist.attlist"/>
        <ref name="db.itemizedlist.info"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.listitem"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>orderedlist</db:refname>
    <db:refpurpose>A list in which each entry is marked with a sequentially incremented label</db:refpurpose>
    <define name="db.orderedlist.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.orderedlist.continuation.enumeration">
      <choice>
        <value>continues</value>
        <a:documentation>Specifies that numbering should begin where the preceding list left off</a:documentation>
        <value>restarts</value>
        <a:documentation>Specifies that numbering should begin again at 1</a:documentation>
      </choice>
    </define>
    <define name="db.orderedlist.continuation.attribute">
      <attribute name="continuation">
        <db:refpurpose>Indicates how list numbering should begin relative to the immediately preceding list</db:refpurpose>
        <ref name="db.orderedlist.continuation.enumeration"/>
      </attribute>
    </define>
    <define name="db.orderedlist.startingnumber.attribute">
      <attribute name="startingnumber">
        <db:refpurpose>Specifies the initial line number.</db:refpurpose>
        <data type="integer"/>
      </attribute>
    </define>
    <define name="db.orderedlist.inheritnum.enumeration">
      <choice>
        <value>ignore</value>
        <a:documentation>Specifies that numbering should ignore list nesting</a:documentation>
        <value>inherit</value>
        <a:documentation>Specifies that numbering should inherit from outer-level lists</a:documentation>
      </choice>
    </define>
    <define name="db.orderedlist.inheritnum.attribute">
      <attribute name="inheritnum">
        <db:refpurpose>Indicates whether or not item numbering should be influenced by list nesting</db:refpurpose>
        <ref name="db.orderedlist.inheritnum.enumeration"/>
      </attribute>
    </define>
    <define name="db.orderedlist.numeration.enumeration">
      <choice>
        <value>arabic</value>
        <a:documentation>Specifies Arabic numeration (1, 2, 3, …)</a:documentation>
        <value>upperalpha</value>
        <a:documentation>Specifies upper-case alphabetic numeration (A, B, C, …)</a:documentation>
        <value>loweralpha</value>
        <a:documentation>Specifies lower-case alphabetic numeration (a, b, c, …)</a:documentation>
        <value>upperroman</value>
        <a:documentation>Specifies upper-case Roman numeration (I, II, III, …)</a:documentation>
        <value>lowerroman</value>
        <a:documentation>Specifies lower-case Roman numeration (i, ii, iii …)</a:documentation>
      </choice>
    </define>
    <define name="db.orderedlist.numeration.attribute">
      <attribute name="numeration">
        <db:refpurpose>Indicates the desired numeration</db:refpurpose>
        <ref name="db.orderedlist.numeration.enumeration"/>
      </attribute>
    </define>
    <define name="db.orderedlist.attlist">
      <interleave>
        <optional>
          <ref name="db.orderedlist.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.spacing.attribute"/>
        </optional>
        <optional>
          <choice>
            <ref name="db.orderedlist.continuation.attribute"/>
            <ref name="db.orderedlist.startingnumber.attribute"/>
          </choice>
        </optional>
        <optional>
          <ref name="db.orderedlist.inheritnum.attribute"/>
        </optional>
        <optional>
          <ref name="db.orderedlist.numeration.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.orderedlist.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.orderedlist">
      <element name="orderedlist">
        <ref name="db.orderedlist.attlist"/>
        <ref name="db.orderedlist.info"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.listitem"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>listitem</db:refname>
    <db:refpurpose>A wrapper for the elements of a list item</db:refpurpose>
    <define name="db.listitem.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.listitem.override.attribute">
      <attribute name="override">
        <db:refpurpose>Specifies the keyword for the type of mark that should be used on <db:emphasis>this</db:emphasis>
 item, instead of the mark that would be used by default</db:refpurpose>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.listitem.attlist">
      <interleave>
        <optional>
          <ref name="db.listitem.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.listitem.override.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.listitem">
      <element name="listitem">
        <ref name="db.listitem.attlist"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>segmentedlist</db:refname>
    <db:refpurpose>A segmented list, a list of sets of elements</db:refpurpose>
    <define name="db.segmentedlist.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.segmentedlist.attlist">
      <interleave>
        <optional>
          <ref name="db.segmentedlist.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.segmentedlist.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.segmentedlist">
      <element name="segmentedlist">
        <ref name="db.segmentedlist.attlist"/>
        <ref name="db.segmentedlist.info"/>
        <oneOrMore>
          <ref name="db.segtitle"/>
        </oneOrMore>
        <oneOrMore>
          <ref name="db.seglistitem"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>segtitle</db:refname>
    <db:refpurpose>The title of an element of a list item in a segmented list</db:refpurpose>
    <define name="db.segtitle.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.segtitle.attlist">
      <interleave>
        <optional>
          <ref name="db.segtitle.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.segtitle">
      <element name="segtitle">
        <ref name="db.segtitle.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>seglistitem</db:refname>
    <db:refpurpose>A list item in a segmented list</db:refpurpose>
    <define name="db.seglistitem.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.seglistitem.attlist">
      <interleave>
        <optional>
          <ref name="db.seglistitem.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.seglistitem">
      <element name="seglistitem">
        <s:pattern name="Cardinality of segments and titles">
          <s:rule context="db:seglistitem">
            <s:assert test="count(db:seg) = count(../db:segtitle)">The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.seglistitem.attlist"/>
        <oneOrMore>
          <ref name="db.seg"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>seg</db:refname>
    <db:refpurpose>An element of a list item in a segmented list</db:refpurpose>
    <define name="db.seg.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.seg.attlist">
      <interleave>
        <optional>
          <ref name="db.seg.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.seg">
      <element name="seg">
        <ref name="db.seg.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>simplelist</db:refname>
    <db:refpurpose>An undecorated list of single words or short phrases</db:refpurpose>
    <define name="db.simplelist.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.simplelist.type.enumeration">
      <choice>
        <value>horiz</value>
        <a:documentation>A tabular presentation in row-major order.</a:documentation>
        <value>vert</value>
        <a:documentation>A tabular presentation in column-major order.</a:documentation>
        <value>inline</value>
        <a:documentation>An inline presentation, usually a comma-delimited list.</a:documentation>
      </choice>
    </define>
    <define name="db.simplelist.type.attribute">
      <attribute name="type" a:defaultValue="vert">
        <db:refpurpose>Specifies the type of list presentation.</db:refpurpose>
        <ref name="db.simplelist.type.enumeration"/>
      </attribute>
    </define>
    <define name="db.simplelist.columns.attribute">
      <attribute name="columns">
        <db:refpurpose>Specifies the number of columns for horizontal or vertical presentation</db:refpurpose>
        <data type="integer"/>
      </attribute>
    </define>
    <define name="db.simplelist.attlist">
      <interleave>
        <optional>
          <ref name="db.simplelist.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.simplelist.type.attribute"/>
        </optional>
        <optional>
          <ref name="db.simplelist.columns.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.simplelist">
      <element name="simplelist">
        <ref name="db.simplelist.attlist"/>
        <oneOrMore>
          <ref name="db.member"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>member</db:refname>
    <db:refpurpose>An element of a simple list</db:refpurpose>
    <define name="db.member.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.member.attlist">
      <interleave>
        <optional>
          <ref name="db.member.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.member">
      <element name="member">
        <ref name="db.member.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>variablelist</db:refname>
    <db:refpurpose>A list in which each entry is composed of a set of one or more terms and an associated description</db:refpurpose>
    <define name="db.variablelist.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.variablelist.termlength.attribute">
      <attribute name="termlength">
        <db:refpurpose>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</db:refpurpose>
      </attribute>
    </define>
    <define name="db.variablelist.attlist">
      <interleave>
        <optional>
          <ref name="db.variablelist.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.spacing.attribute"/>
        </optional>
        <optional>
          <ref name="db.variablelist.termlength.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.variablelist.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.variablelist">
      <element name="variablelist">
        <ref name="db.variablelist.attlist"/>
        <ref name="db.variablelist.info"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.varlistentry"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>varlistentry</db:refname>
    <db:refpurpose>A wrapper for a set of terms and the associated description in a variable list</db:refpurpose>
    <define name="db.varlistentry.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.varlistentry.attlist">
      <interleave>
        <optional>
          <ref name="db.varlistentry.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.varlistentry">
      <element name="varlistentry">
        <ref name="db.varlistentry.attlist"/>
        <oneOrMore>
          <ref name="db.term"/>
        </oneOrMore>
        <ref name="db.listitem"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>term</db:refname>
    <db:refpurpose>The word or phrase being defined or described in a variable list</db:refpurpose>
    <define name="db.term.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.term.attlist">
      <interleave>
        <optional>
          <ref name="db.term.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.term">
      <element name="term">
        <ref name="db.term.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>example</db:refname>
    <db:refpurpose>A formal example, with a title</db:refpurpose>
    <define name="db.example.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.example.label.attribute">
      <ref name="db.label.attribute"/>
    </define>
    <define name="db.example.width.attribute">
      <ref name="db.width.characters.attribute"/>
    </define>
    <define name="db.example.pgwide.attribute">
      <ref name="db.pgwide.attribute"/>
    </define>
    <define name="db.example.floatstyle.attribute">
      <ref name="db.floatstyle.attribute"/>
    </define>
    <define name="db.example.attlist">
      <interleave>
        <optional>
          <ref name="db.example.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.example.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.example.floatstyle.attribute"/>
        </optional>
        <optional>
          <choice>
            <ref name="db.example.width.attribute"/>
            <ref name="db.example.pgwide.attribute"/>
          </choice>
        </optional>
      </interleave>
    </define>
    <define name="db.example.info">
      <ref name="db._info.title.onlyreq"/>
    </define>
    <define name="db.example">
      <element name="example">
        <ref name="db.example.attlist"/>
        <ref name="db.example.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>informalexample</db:refname>
    <db:refpurpose>A displayed example without a title</db:refpurpose>
    <define name="db.informalexample.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.informalexample.width.attribute">
      <ref name="db.width.characters.attribute"/>
    </define>
    <define name="db.informalexample.floatstyle.attribute">
      <ref name="db.floatstyle.attribute"/>
    </define>
    <define name="db.informalexample.attlist">
      <interleave>
        <optional>
          <ref name="db.informalexample.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.informalexample.floatstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.informalexample.width.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.informalexample.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.informalexample">
      <element name="informalexample">
        <ref name="db.informalexample.attlist"/>
        <ref name="db.informalexample.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <define name="db.verbatim.inlines">
    <choice>
      <ref name="db.all.inlines"/>
      <ref name="db.lineannotation"/>
    </choice>
  </define>
  <define name="db.verbatim.contentmodel">
    <ref name="db._info.title.forbidden"/>
    <choice>
      <ref name="db.textobject"/>
      <zeroOrMore>
        <ref name="db.verbatim.inlines"/>
      </zeroOrMore>
    </choice>
  </define>
  <!-- ====================================================================== -->
  <div>
    <db:refname>literallayout</db:refname>
    <db:refpurpose>A block of text in which line breaks and white space are to be reproduced faithfully</db:refpurpose>
    <define name="db.literallayout.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.literallayout.class.enumeration">
      <choice>
        <value>monospaced</value>
        <a:documentation>The literal layout should be formatted with a monospaced font</a:documentation>
        <value>normal</value>
        <a:documentation>The literal layout should be formatted with the current font</a:documentation>
      </choice>
    </define>
    <define name="db.literallayout.class.attribute">
      <attribute name="class">
        <db:refpurpose>Specifies the class of literal layout</db:refpurpose>
        <ref name="db.literallayout.class.enumeration"/>
      </attribute>
    </define>
    <define name="db.literallayout.attlist">
      <interleave>
        <optional>
          <ref name="db.literallayout.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.verbatim.attributes"/>
        <optional>
          <ref name="db.literallayout.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.literallayout">
      <element name="literallayout">
        <ref name="db.literallayout.attlist"/>
        <ref name="db.verbatim.contentmodel"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>screen</db:refname>
    <db:refpurpose>Text that a user sees or might see on a computer screen</db:refpurpose>
    <define name="db.screen.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.screen.width.attribute">
      <ref name="db.width.characters.attribute"/>
    </define>
    <define name="db.screen.attlist">
      <interleave>
        <optional>
          <ref name="db.screen.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.verbatim.attributes"/>
        <optional>
          <ref name="db.screen.width.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.screen">
      <element name="screen">
        <ref name="db.screen.attlist"/>
        <ref name="db.verbatim.contentmodel"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>screenshot</db:refname>
    <db:refpurpose>A representation of what the user sees or might see on a computer screen</db:refpurpose>
    <define name="db.screenshot.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.screenshot.attlist">
      <interleave>
        <optional>
          <ref name="db.screenshot.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.screenshot.info">
      <ref name="db._info"/>
    </define>
    <define name="db.screenshot">
      <element name="screenshot">
        <ref name="db.screenshot.attlist"/>
        <ref name="db.screenshot.info"/>
        <ref name="db.mediaobject"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>figure</db:refname>
    <db:refpurpose>A formal figure, generally an illustration, with a title</db:refpurpose>
    <define name="db.figure.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.figure.label.attribute">
      <ref name="db.label.attribute"/>
    </define>
    <define name="db.figure.pgwide.attribute">
      <ref name="db.pgwide.attribute"/>
    </define>
    <define name="db.figure.floatstyle.attribute">
      <ref name="db.floatstyle.attribute"/>
    </define>
    <define name="db.figure.attlist">
      <interleave>
        <optional>
          <ref name="db.figure.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.figure.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.figure.pgwide.attribute"/>
        </optional>
        <optional>
          <ref name="db.figure.floatstyle.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.figure.info">
      <ref name="db._info.title.onlyreq"/>
    </define>
    <define name="db.figure">
      <element name="figure">
        <ref name="db.figure.attlist"/>
        <ref name="db.figure.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>informalfigure</db:refname>
    <db:refpurpose>A untitled figure</db:refpurpose>
    <define name="db.informalfigure.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.informalfigure.label.attribute">
      <ref name="db.label.attribute"/>
    </define>
    <define name="db.informalfigure.pgwide.attribute">
      <ref name="db.pgwide.attribute"/>
    </define>
    <define name="db.informalfigure.floatstyle.attribute">
      <ref name="db.floatstyle.attribute"/>
    </define>
    <define name="db.informalfigure.attlist">
      <interleave>
        <optional>
          <ref name="db.informalfigure.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.informalfigure.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.informalfigure.pgwide.attribute"/>
        </optional>
        <optional>
          <ref name="db.informalfigure.floatstyle.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.informalfigure.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.informalfigure">
      <element name="informalfigure">
        <ref name="db.informalfigure.attlist"/>
        <ref name="db.informalfigure.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <define name="db.mediaobject.content">
    <choice>
      <ref name="db.videoobject"/>
      <ref name="db.audioobject"/>
      <ref name="db.imageobject"/>
      <ref name="db.textobject"/>
    </choice>
  </define>
  <!-- ====================================================================== -->
  <div>
    <db:refname>mediaobject</db:refname>
    <db:refpurpose>A displayed media object (video, audio, image, etc.)</db:refpurpose>
    <define name="db.mediaobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.mediaobject.attlist">
      <interleave>
        <optional>
          <ref name="db.mediaobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.mediaobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.mediaobject">
      <element name="mediaobject">
        <ref name="db.mediaobject.attlist"/>
        <ref name="db.mediaobject.info"/>
        <optional>
          <ref name="db.alt"/>
        </optional>
        <oneOrMore>
          <ref name="db.mediaobject.content"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>inlinemediaobject</db:refname>
    <db:refpurpose>An inline media object (video, audio, image, and so on)</db:refpurpose>
    <define name="db.inlinemediaobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.inlinemediaobject.attlist">
      <interleave>
        <optional>
          <ref name="db.inlinemediaobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.inlinemediaobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.inlinemediaobject">
      <element name="inlinemediaobject">
        <ref name="db.inlinemediaobject.attlist"/>
        <ref name="db.inlinemediaobject.info"/>
        <optional>
          <ref name="db.alt"/>
        </optional>
        <oneOrMore>
          <ref name="db.mediaobject.content"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>videoobject</db:refname>
    <db:refpurpose>A wrapper for video data and its associated meta-information</db:refpurpose>
    <define name="db.videoobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.videoobject.attlist">
      <interleave>
        <optional>
          <ref name="db.videoobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.videoobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.videoobject">
      <element name="videoobject">
        <ref name="db.videoobject.attlist"/>
        <ref name="db.videoobject.info"/>
        <ref name="db.videodata"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>audioobject</db:refname>
    <db:refpurpose>A wrapper for audio data and its associated meta-information</db:refpurpose>
    <define name="db.audioobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.audioobject.attlist">
      <interleave>
        <optional>
          <ref name="db.audioobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.audioobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.audioobject">
      <element name="audioobject">
        <ref name="db.audioobject.attlist"/>
        <ref name="db.audioobject.info"/>
        <ref name="db.audiodata"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <define name="db.imageobject.content">
    <ref name="db.imagedata"/>
  </define>
  <!-- ====================================================================== -->
  <div>
    <db:refname>imageobject</db:refname>
    <db:refpurpose>A wrapper for image data and its associated meta-information</db:refpurpose>
    <define name="db.imageobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.imageobject.attlist">
      <interleave>
        <optional>
          <ref name="db.imageobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.imageobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.imageobject">
      <element name="imageobject">
        <ref name="db.imageobject.attlist"/>
        <ref name="db.imageobject.info"/>
        <ref name="db.imageobject.content"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>textobject</db:refname>
    <db:refpurpose>A wrapper for a text description of an object and its associated meta-information</db:refpurpose>
    <define name="db.textobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.textobject.attlist">
      <interleave>
        <optional>
          <ref name="db.textobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.textobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.textobject">
      <element name="textobject">
        <ref name="db.textobject.attlist"/>
        <ref name="db.textobject.info"/>
        <choice>
          <ref name="db.phrase"/>
          <ref name="db.textdata"/>
          <oneOrMore>
            <ref name="db.all.blocks"/>
          </oneOrMore>
        </choice>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>videodata</db:refname>
    <db:refpurpose>Pointer to external video data</db:refpurpose>
    <define name="db.videodata.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.videodata.align.enumeration">
      <ref name="db.halign.enumeration"/>
    </define>
    <define name="db.videodata.align.attribute">
      <attribute name="align">
        <db:refpurpose>Specifies the (horizontal) alignment of the video data</db:refpurpose>
        <ref name="db.videodata.align.enumeration"/>
      </attribute>
    </define>
    <define name="db.videodata.valign.enumeration">
      <ref name="db.valign.enumeration"/>
    </define>
    <define name="db.videodata.valign.attribute">
      <attribute name="valign">
        <db:refpurpose>Specifies the vertical alignment of the video data</db:refpurpose>
        <ref name="db.videodata.valign.enumeration"/>
      </attribute>
    </define>
    <define name="db.videodata.width.attribute">
      <ref name="db.width.attribute"/>
    </define>
    <define name="db.videodata.depth.attribute">
      <ref name="db.depth.attribute"/>
    </define>
    <define name="db.videodata.contentwidth.attribute">
      <ref name="db.contentwidth.attribute"/>
    </define>
    <define name="db.videodata.contentdepth.attribute">
      <ref name="db.contentdepth.attribute"/>
    </define>
    <define name="db.videodata.scalefit.enumeration">
      <ref name="db.scalefit.enumeration"/>
    </define>
    <define name="db.videodata.scalefit.attribute">
      <attribute name="scalefit">
        <db:refpurpose>Determines if anamorphic scaling is forbidden</db:refpurpose>
        <ref name="db.videodata.scalefit.enumeration"/>
      </attribute>
    </define>
    <define name="db.videodata.scale.attribute">
      <ref name="db.scale.attribute"/>
    </define>
    <define name="db.videodata.attlist">
      <interleave>
        <optional>
          <ref name="db.videodata.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.data.attributes"/>
        <optional>
          <ref name="db.videodata.align.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.valign.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.width.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.contentwidth.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.scalefit.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.scale.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.depth.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.contentdepth.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.videodata.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.videodata">
      <element name="videodata">
        <ref name="db.videodata.attlist"/>
        <ref name="db.videodata.info"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>audiodata</db:refname>
    <db:refpurpose>Pointer to external audio data</db:refpurpose>
    <define name="db.audiodata.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.audiodata.attlist">
      <interleave>
        <optional>
          <ref name="db.audiodata.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.data.attributes"/>
      </interleave>
    </define>
    <define name="db.audiodata.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.audiodata">
      <element name="audiodata">
        <ref name="db.audiodata.attlist"/>
        <ref name="db.audiodata.info"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>imagedata</db:refname>
    <db:refpurpose>Pointer to external image data</db:refpurpose>
    <define name="db.imagedata.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.imagedata.align.enumeration">
      <ref name="db.halign.enumeration"/>
    </define>
    <define name="db.imagedata.align.attribute">
      <attribute name="align">
        <db:refpurpose>Specifies the (horizontal) alignment of the image data</db:refpurpose>
        <ref name="db.imagedata.align.enumeration"/>
      </attribute>
    </define>
    <define name="db.imagedata.valign.enumeration">
      <ref name="db.valign.enumeration"/>
    </define>
    <define name="db.imagedata.valign.attribute">
      <attribute name="valign">
        <db:refpurpose>Specifies the vertical alignment of the image data</db:refpurpose>
        <ref name="db.imagedata.valign.enumeration"/>
      </attribute>
    </define>
    <define name="db.imagedata.width.attribute">
      <ref name="db.width.attribute"/>
    </define>
    <define name="db.imagedata.depth.attribute">
      <ref name="db.depth.attribute"/>
    </define>
    <define name="db.imagedata.contentwidth.attribute">
      <ref name="db.contentwidth.attribute"/>
    </define>
    <define name="db.imagedata.contentdepth.attribute">
      <ref name="db.contentdepth.attribute"/>
    </define>
    <define name="db.imagedata.scalefit.enumeration">
      <ref name="db.scalefit.enumeration"/>
    </define>
    <define name="db.imagedata.scalefit.attribute">
      <attribute name="scalefit">
        <db:refpurpose>Determines if anamorphic scaling is forbidden</db:refpurpose>
        <ref name="db.imagedata.scalefit.enumeration"/>
      </attribute>
    </define>
    <define name="db.imagedata.scale.attribute">
      <ref name="db.scale.attribute"/>
    </define>
    <define name="db.imagedata.attlist">
      <interleave>
        <optional>
          <ref name="db.imagedata.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.data.attributes"/>
        <optional>
          <ref name="db.imagedata.align.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.valign.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.width.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.contentwidth.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.scalefit.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.scale.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.depth.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.contentdepth.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.imagedata.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.imagedata">
      <element name="imagedata">
        <ref name="db.imagedata.attlist"/>
        <ref name="db.imagedata.info"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>textdata</db:refname>
    <db:refpurpose>Pointer to external text data</db:refpurpose>
    <define name="db.textdata.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.textdata.encoding.attribute">
      <attribute name="encoding">
        <db:refpurpose>Identifies the encoding of the text in the external file</db:refpurpose>
      </attribute>
    </define>
    <define name="db.textdata.attlist">
      <interleave>
        <optional>
          <ref name="db.textdata.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.data.attributes"/>
        <optional>
          <ref name="db.textdata.encoding.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.textdata.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.textdata">
      <element name="textdata">
        <ref name="db.textdata.attlist"/>
        <ref name="db.textdata.info"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>caption</db:refname>
    <db:refpurpose>A caption</db:refpurpose>
    <ctrl:exclude from="db.caption" exclude="db.formal.blocks"/>
    <ctrl:exclude from="db.caption" exclude="db.sidebar"/>
    <ctrl:exclude from="db.caption" exclude="db.task"/>
    <define name="db.caption.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.caption.attlist">
      <interleave>
        <optional>
          <ref name="db.caption.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.caption.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.caption">
      <element name="caption">
        <ref name="db.caption.attlist"/>
        <ref name="db.caption.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>address</db:refname>
    <db:refpurpose>A real-world address, generally a postal address</db:refpurpose>
    <define name="db.address.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.address.attlist">
      <interleave>
        <optional>
          <ref name="db.address.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.verbatim.attributes"/>
      </interleave>
    </define>
    <define name="db.address">
      <element name="address">
        <ref name="db.address.attlist"/>
        <zeroOrMore>
          <choice>
            <ref name="db._text"/>
            <ref name="db.personname"/>
            <ref name="db.orgname"/>
            <ref name="db.pob"/>
            <ref name="db.street"/>
            <ref name="db.city"/>
            <ref name="db.state"/>
            <ref name="db.postcode"/>
            <ref name="db.country"/>
            <ref name="db.phone"/>
            <ref name="db.fax"/>
            <ref name="db.email"/>
            <ref name="db.uri"/>
            <ref name="db.otheraddr"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>street</db:refname>
    <db:refpurpose>A street address in an address</db:refpurpose>
    <define name="db.street.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.street.attlist">
      <interleave>
        <optional>
          <ref name="db.street.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.street">
      <element name="street">
        <ref name="db.street.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>pob</db:refname>
    <db:refpurpose>A post office box in an address</db:refpurpose>
    <define name="db.pob.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.pob.attlist">
      <interleave>
        <optional>
          <ref name="db.pob.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.pob">
      <element name="pob">
        <ref name="db.pob.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>postcode</db:refname>
    <db:refpurpose>A postal code in an address</db:refpurpose>
    <define name="db.postcode.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.postcode.attlist">
      <interleave>
        <optional>
          <ref name="db.postcode.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.postcode">
      <element name="postcode">
        <ref name="db.postcode.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>city</db:refname>
    <db:refpurpose>The name of a city in an address</db:refpurpose>
    <define name="db.city.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.city.attlist">
      <interleave>
        <optional>
          <ref name="db.city.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.city">
      <element name="city">
        <ref name="db.city.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>state</db:refname>
    <db:refpurpose>A state or province in an address</db:refpurpose>
    <define name="db.state.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.state.attlist">
      <interleave>
        <optional>
          <ref name="db.state.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.state">
      <element name="state">
        <ref name="db.state.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>country</db:refname>
    <db:refpurpose>The name of a country</db:refpurpose>
    <define name="db.country.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.country.attlist">
      <interleave>
        <optional>
          <ref name="db.country.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.country">
      <element name="country">
        <ref name="db.country.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>phone</db:refname>
    <db:refpurpose>A telephone number</db:refpurpose>
    <define name="db.phone.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.phone.attlist">
      <interleave>
        <optional>
          <ref name="db.phone.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.phone">
      <element name="phone">
        <ref name="db.phone.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>fax</db:refname>
    <db:refpurpose>A fax number</db:refpurpose>
    <define name="db.fax.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.fax.attlist">
      <interleave>
        <optional>
          <ref name="db.fax.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.fax">
      <element name="fax">
        <ref name="db.fax.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>otheraddr</db:refname>
    <db:refpurpose>Uncategorized information in address</db:refpurpose>
    <define name="db.otheraddr.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.otheraddr.attlist">
      <interleave>
        <optional>
          <ref name="db.otheraddr.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.otheraddr">
      <element name="otheraddr">
        <ref name="db.otheraddr.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>affiliation</db:refname>
    <db:refpurpose>The institutional affiliation of an individual</db:refpurpose>
    <define name="db.affiliation.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.affiliation.attlist">
      <interleave>
        <optional>
          <ref name="db.affiliation.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.affiliation">
      <element name="affiliation">
        <ref name="db.affiliation.attlist"/>
        <optional>
          <ref name="db.shortaffil"/>
        </optional>
        <zeroOrMore>
          <ref name="db.jobtitle"/>
        </zeroOrMore>
        <choice>
          <optional>
            <ref name="db.org"/>
          </optional>
          <group>
            <optional>
              <ref name="db.orgname"/>
            </optional>
            <zeroOrMore>
              <ref name="db.orgdiv"/>
            </zeroOrMore>
            <zeroOrMore>
              <ref name="db.address"/>
            </zeroOrMore>
          </group>
        </choice>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>shortaffil</db:refname>
    <db:refpurpose>A brief description of an affiliation</db:refpurpose>
    <define name="db.shortaffil.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.shortaffil.attlist">
      <interleave>
        <optional>
          <ref name="db.shortaffil.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.shortaffil">
      <element name="shortaffil">
        <ref name="db.shortaffil.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>jobtitle</db:refname>
    <db:refpurpose>The title of an individual in an organization</db:refpurpose>
    <define name="db.jobtitle.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.jobtitle.attlist">
      <interleave>
        <optional>
          <ref name="db.jobtitle.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.jobtitle">
      <element name="jobtitle">
        <ref name="db.jobtitle.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>orgname</db:refname>
    <db:refpurpose>The name of an organization</db:refpurpose>
    <ctrl:other-attribute name="db.orgname.class.attrib" enum-name="db.orgname.class-enum.attribute" other-name="db.orgname.class-other.attributes"/>
    <define name="db.orgname.class.enumeration">
      <choice>
        <value>consortium</value>
        <a:documentation>A consortium</a:documentation>
        <value>corporation</value>
        <a:documentation>A corporation</a:documentation>
        <value>informal</value>
        <a:documentation>An informal organization</a:documentation>
        <value>nonprofit</value>
        <a:documentation>A non-profit organization</a:documentation>
      </choice>
    </define>
    <define name="db.orgname.class-enum.attribute">
      <attribute name="class">
        <db:refpurpose>Specifies the nature of the organization</db:refpurpose>
        <ref name="db.orgname.class.enumeration"/>
      </attribute>
    </define>
    <define name="db.orgname.class-other.attributes">
      <attribute name="class">
        <db:refpurpose>Specifies the nature of the organization</db:refpurpose>
        <value>other</value>
        <a:documentation>Indicates a non-standard organization class</a:documentation>
      </attribute>
      <attribute name="otherclass">
        <db:refpurpose>Identifies the non-standard nature of the organization</db:refpurpose>
      </attribute>
    </define>
    <define name="db.orgname.class.attribute">
      <choice>
        <ref name="db.orgname.class-enum.attribute"/>
        <ref name="db.orgname.class-other.attributes"/>
      </choice>
    </define>
    <define name="db.orgname.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.orgname.attlist">
      <interleave>
        <optional>
          <ref name="db.orgname.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.orgname.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.orgname">
      <element name="orgname">
        <ref name="db.orgname.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>orgdiv</db:refname>
    <db:refpurpose>A division of an organization</db:refpurpose>
    <define name="db.orgdiv.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.orgdiv.attlist">
      <interleave>
        <optional>
          <ref name="db.orgdiv.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.orgdiv">
      <element name="orgdiv">
        <ref name="db.orgdiv.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>artpagenums</db:refname>
    <db:refpurpose>The page numbers of an article as published</db:refpurpose>
    <define name="db.artpagenums.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.artpagenums.attlist">
      <interleave>
        <optional>
          <ref name="db.artpagenums.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.artpagenums">
      <element name="artpagenums">
        <ref name="db.artpagenums.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>personname</db:refname>
    <db:refpurpose>The personal name of an individual</db:refpurpose>
    <define name="db.personname.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.personname.attlist">
      <interleave>
        <optional>
          <ref name="db.personname.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.personname">
      <element name="personname">
        <ref name="db.personname.attlist"/>
        <choice>
          <ref name="db._text"/>
          <oneOrMore>
            <choice>
              <ref name="db.honorific"/>
              <ref name="db.firstname"/>
              <ref name="db.surname"/>
              <ref name="db.lineage"/>
              <ref name="db.othername"/>
            </choice>
          </oneOrMore>
          <oneOrMore>
            <choice>
              <ref name="db.honorific"/>
              <ref name="db.givenname"/>
              <ref name="db.surname"/>
              <ref name="db.lineage"/>
              <ref name="db.othername"/>
            </choice>
          </oneOrMore>
        </choice>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <define name="db.person.author.contentmodel">
    <ref name="db.personname"/>
    <zeroOrMore>
      <choice>
        <ref name="db.personblurb"/>
        <ref name="db.affiliation"/>
        <ref name="db.email"/>
        <ref name="db.uri"/>
        <ref name="db.address"/>
        <ref name="db.contrib"/>
      </choice>
    </zeroOrMore>
  </define>
  <define name="db.org.author.contentmodel">
    <ref name="db.orgname"/>
    <zeroOrMore>
      <choice>
        <ref name="db.orgdiv"/>
        <ref name="db.affiliation"/>
        <ref name="db.email"/>
        <ref name="db.uri"/>
        <ref name="db.address"/>
        <ref name="db.contrib"/>
      </choice>
    </zeroOrMore>
  </define>
  <define name="db.credit.contentmodel">
    <choice>
      <ref name="db.person.author.contentmodel"/>
      <ref name="db.org.author.contentmodel"/>
    </choice>
  </define>
  <!-- ====================================================================== -->
  <div>
    <db:refname>author</db:refname>
    <db:refpurpose>The name of an individual author</db:refpurpose>
    <define name="db.author.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.author.attlist">
      <interleave>
        <optional>
          <ref name="db.author.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.author">
      <element name="author">
        <ref name="db.author.attlist"/>
        <ref name="db.credit.contentmodel"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>authorgroup</db:refname>
    <db:refpurpose>Wrapper for author information when a document has multiple authors or collaborators</db:refpurpose>
    <define name="db.authorgroup.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.authorgroup.attlist">
      <interleave>
        <optional>
          <ref name="db.authorgroup.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.authorgroup">
      <element name="authorgroup">
        <ref name="db.authorgroup.attlist"/>
        <oneOrMore>
          <choice>
            <ref name="db.author"/>
            <ref name="db.editor"/>
            <ref name="db.othercredit"/>
          </choice>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>collab</db:refname>
    <db:refpurpose>Identifies a collaborator</db:refpurpose>
    <define name="db.collab.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.collab.attlist">
      <interleave>
        <optional>
          <ref name="db.collab.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.collab">
      <element name="collab">
        <ref name="db.collab.attlist"/>
        <oneOrMore>
          <choice>
            <ref name="db.person"/>
            <ref name="db.personname"/>
            <ref name="db.org"/>
            <ref name="db.orgname"/>
          </choice>
        </oneOrMore>
        <zeroOrMore>
          <ref name="db.affiliation"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>authorinitials</db:refname>
    <db:refpurpose>The initials or other short identifier for an author</db:refpurpose>
    <define name="db.authorinitials.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.authorinitials.attlist">
      <interleave>
        <optional>
          <ref name="db.authorinitials.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.authorinitials">
      <element name="authorinitials">
        <ref name="db.authorinitials.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>person</db:refname>
    <db:refpurpose>A person and associated metadata</db:refpurpose>
    <define name="db.person.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.person.attlist">
      <interleave>
        <optional>
          <ref name="db.person.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.person">
      <element name="person">
        <ref name="db.person.attlist"/>
        <ref name="db.personname"/>
        <zeroOrMore>
          <choice>
            <ref name="db.address"/>
            <ref name="db.affiliation"/>
            <ref name="db.email"/>
            <ref name="db.uri"/>
            <ref name="db.personblurb"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>org</db:refname>
    <db:refpurpose>An organization and associated metadata</db:refpurpose>
    <define name="db.org.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.org.attlist">
      <interleave>
        <optional>
          <ref name="db.org.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.org">
      <element name="org">
        <ref name="db.org.attlist"/>
        <ref name="db.orgname"/>
        <zeroOrMore>
          <choice>
            <ref name="db.address"/>
            <ref name="db.affiliation"/>
            <ref name="db.email"/>
            <ref name="db.uri"/>
            <ref name="db.orgdiv"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>confgroup</db:refname>
    <db:refpurpose>A wrapper for document meta-information about a conference</db:refpurpose>
    <define name="db.confgroup.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.confgroup.attlist">
      <interleave>
        <optional>
          <ref name="db.confgroup.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.confgroup">
      <element name="confgroup">
        <ref name="db.confgroup.attlist"/>
        <zeroOrMore>
          <choice>
            <ref name="db.confdates"/>
            <ref name="db.conftitle"/>
            <ref name="db.confnum"/>
            <ref name="db.confsponsor"/>
            <ref name="db.address"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>confdates</db:refname>
    <db:refpurpose>The dates of a conference for which a document was written</db:refpurpose>
    <define name="db.confdates.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.confdates.attlist">
      <interleave>
        <optional>
          <ref name="db.confdates.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.confdates">
      <element name="confdates">
        <ref name="db.confdates.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>conftitle</db:refname>
    <db:refpurpose>The title of a conference for which a document was written</db:refpurpose>
    <define name="db.conftitle.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.conftitle.attlist">
      <interleave>
        <optional>
          <ref name="db.conftitle.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.conftitle">
      <element name="conftitle">
        <ref name="db.conftitle.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>confnum</db:refname>
    <db:refpurpose>An identifier, frequently numerical, associated with a conference for which a document was written</db:refpurpose>
    <define name="db.confnum.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.confnum.attlist">
      <interleave>
        <optional>
          <ref name="db.confnum.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.confnum">
      <element name="confnum">
        <ref name="db.confnum.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>confsponsor</db:refname>
    <db:refpurpose>The sponsor of a conference for which a document was written</db:refpurpose>
    <define name="db.confsponsor.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.confsponsor.attlist">
      <interleave>
        <optional>
          <ref name="db.confsponsor.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.confsponsor">
      <element name="confsponsor">
        <ref name="db.confsponsor.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>contractnum</db:refname>
    <db:refpurpose>The contract number of a document</db:refpurpose>
    <define name="db.contractnum.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.contractnum.attlist">
      <interleave>
        <optional>
          <ref name="db.contractnum.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.contractnum">
      <element name="contractnum">
        <ref name="db.contractnum.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>contractsponsor</db:refname>
    <db:refpurpose>The sponsor of a contract</db:refpurpose>
    <define name="db.contractsponsor.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.contractsponsor.attlist">
      <interleave>
        <optional>
          <ref name="db.contractsponsor.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.contractsponsor">
      <element name="contractsponsor">
        <ref name="db.contractsponsor.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>copyright</db:refname>
    <db:refpurpose>Copyright information about a document</db:refpurpose>
    <define name="db.copyright.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.copyright.attlist">
      <interleave>
        <optional>
          <ref name="db.copyright.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.copyright">
      <element name="copyright">
        <ref name="db.copyright.attlist"/>
        <oneOrMore>
          <ref name="db.year"/>
        </oneOrMore>
        <zeroOrMore>
          <ref name="db.holder"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>year</db:refname>
    <db:refpurpose>The year of publication of a document</db:refpurpose>
    <define name="db.year.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.year.attlist">
      <interleave>
        <optional>
          <ref name="db.year.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.year">
      <element name="year">
        <ref name="db.year.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>holder</db:refname>
    <db:refpurpose>The name of the individual or organization that holds a copyright</db:refpurpose>
    <define name="db.holder.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.holder.attlist">
      <interleave>
        <optional>
          <ref name="db.holder.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.holder">
      <element name="holder">
        <ref name="db.holder.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <define name="db.cover.contentmodel">
    <choice>
      <ref name="db.para.blocks"/>
      <ref name="db.extension.blocks"/>
      <ref name="db.list.blocks"/>
      <ref name="db.informal.blocks"/>
      <ref name="db.publishing.blocks"/>
      <ref name="db.graphic.blocks"/>
      <ref name="db.technical.blocks"/>
      <ref name="db.verbatim.blocks"/>
      <ref name="db.bridgehead"/>
      <ref name="db.remark"/>
      <ref name="db.revhistory"/>
    </choice>
  </define>
  <div>
    <db:refname>cover</db:refname>
    <db:refpurpose>Additional content for the cover of a publication</db:refpurpose>
    <define name="db.cover.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.cover.attlist">
      <interleave>
        <optional>
          <ref name="db.cover.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.cover">
      <element name="cover">
        <ref name="db.cover.attlist"/>
        <oneOrMore>
          <ref name="db.cover.contentmodel"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <define name="db.date.contentmodel">
    <choice>
      <data type="date"/>
      <data type="dateTime"/>
      <data type="gYearMonth"/>
      <data type="gYear"/>
      <text/>
    </choice>
  </define>
  <!-- ====================================================================== -->
  <div>
    <db:refname>date</db:refname>
    <db:refpurpose>The date of publication or revision of a document</db:refpurpose>
    <define name="db.date.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.date.attlist">
      <interleave>
        <optional>
          <ref name="db.date.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.date">
      <element name="date">
        <ref name="db.date.attlist"/>
        <ref name="db.date.contentmodel"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>edition</db:refname>
    <db:refpurpose>The name or number of an edition of a document</db:refpurpose>
    <define name="db.edition.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.edition.attlist">
      <interleave>
        <optional>
          <ref name="db.edition.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.edition">
      <element name="edition">
        <ref name="db.edition.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>editor</db:refname>
    <db:refpurpose>The name of the editor of a document</db:refpurpose>
    <define name="db.editor.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.editor.attlist">
      <interleave>
        <optional>
          <ref name="db.editor.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.editor">
      <element name="editor">
        <ref name="db.editor.attlist"/>
        <ref name="db.credit.contentmodel"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>biblioid</db:refname>
    <db:refpurpose>An identifier for a document</db:refpurpose>
    <define name="db.biblioid.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.biblioid.attlist">
      <interleave>
        <optional>
          <ref name="db.biblioid.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.biblio.class.attribute"/>
      </interleave>
    </define>
    <define name="db.biblioid">
      <element name="biblioid">
        <ref name="db.biblioid.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>citebiblioid</db:refname>
    <db:refpurpose>A citation of a bibliographic identifier</db:refpurpose>
    <define name="db.citebiblioid.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.citebiblioid.attlist">
      <interleave>
        <optional>
          <ref name="db.citebiblioid.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.biblio.class.attribute"/>
      </interleave>
    </define>
    <define name="db.citebiblioid">
      <element name="citebiblioid">
        <ref name="db.citebiblioid.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>bibliosource</db:refname>
    <db:refpurpose>The source of a document</db:refpurpose>
    <define name="db.bibliosource.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.bibliosource.attlist">
      <interleave>
        <optional>
          <ref name="db.bibliosource.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.biblio.class.attribute"/>
      </interleave>
    </define>
    <define name="db.bibliosource">
      <element name="bibliosource">
        <ref name="db.bibliosource.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>bibliorelation</db:refname>
    <db:refpurpose>The relationship of a document to another</db:refpurpose>
    <ctrl:other-attribute name="db.bibliorelation.type.attrib" enum-name="db.bibliorelation.type-enum.attribute" other-name="db.bibliorelation.type-other.attributes"/>
    <define name="db.bibliorelation.type.enumeration">
      <choice>
        <value>hasformat</value>
        <a:documentation>The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format</a:documentation>
        <value>haspart</value>
        <a:documentation>The described resource includes the referenced resource either physically or logically</a:documentation>
        <value>hasversion</value>
        <a:documentation>The described resource has a version, edition, or adaptation, namely, the referenced resource</a:documentation>
        <value>isformatof</value>
        <a:documentation>The described resource is the same intellectual content of the referenced resource, but presented in another format</a:documentation>
        <value>ispartof</value>
        <a:documentation>The described resource is a physical or logical part of the referenced resource</a:documentation>
        <value>isreferencedby</value>
        <a:documentation>The described resource is referenced, cited, or otherwise pointed to by the referenced resource</a:documentation>
        <value>isreplacedby</value>
        <a:documentation>The described resource is supplanted, displaced, or superceded by the referenced resource</a:documentation>
        <value>isrequiredby</value>
        <a:documentation>The described resource is required by the referenced resource, either physically or logically</a:documentation>
        <value>isversionof</value>
        <a:documentation>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</a:documentation>
        <value>references</value>
        <a:documentation>The described resource references, cites, or otherwise points to the referenced resource</a:documentation>
        <value>replaces</value>
        <a:documentation>The described resource supplants, displaces, or supersedes the referenced resource</a:documentation>
        <value>requires</value>
        <a:documentation>The described resource requires the referenced resource to support its function, delivery, or coherence of content</a:documentation>
      </choice>
    </define>
    <define name="db.bibliorelation.type-enum.attribute">
      <optional>
        <attribute name="type">
          <db:refpurpose>Identifies the type of relationship</db:refpurpose>
          <ref name="db.bibliorelation.type.enumeration"/>
        </attribute>
      </optional>
    </define>
    <define name="db.bibliorelation.type-other.attributes">
      <optional>
        <attribute name="type">
          <db:refpurpose>Identifies the type of relationship</db:refpurpose>
          <value>othertype</value>
          <a:documentation>The described resource has a non-standard relationship with the referenced resource</a:documentation>
        </attribute>
      </optional>
      <attribute name="othertype">
        <db:refpurpose>A keyword that identififes the type of the non-standard relationship</db:refpurpose>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.bibliorelation.type.attribute">
      <choice>
        <ref name="db.bibliorelation.type-enum.attribute"/>
        <ref name="db.bibliorelation.type-other.attributes"/>
      </choice>
    </define>
    <define name="db.bibliorelation.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.bibliorelation.attlist">
      <interleave>
        <optional>
          <ref name="db.bibliorelation.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.biblio.class.attribute"/>
        <ref name="db.bibliorelation.type.attribute"/>
      </interleave>
    </define>
    <define name="db.bibliorelation">
      <element name="bibliorelation">
        <ref name="db.bibliorelation.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>bibliocoverage</db:refname>
    <db:refpurpose>The spatial or temporal coverage of a document</db:refpurpose>
    <ctrl:other-attribute name="db.bibliocoverage.spatial.attrib" enum-name="db.bibliocoverage.spatial-enum.attribute" other-name="db.bibliocoverage.spatial-other.attributes"/>
    <define name="db.bibliocoverage.spacial.enumeration">
      <choice>
        <value>dcmipoint</value>
        <a:documentation>The DCMI Point identifies a point in space using its geographic coordinates</a:documentation>
        <value>iso3166</value>
        <a:documentation>ISO 3166 Codes for the representation of names of countries</a:documentation>
        <value>dcmibox</value>
        <a:documentation>The DCMI Box identifies a region of space using its geographic limits</a:documentation>
        <value>tgn</value>
        <a:documentation>The Getty Thesaurus of Geographic Names</a:documentation>
      </choice>
    </define>
    <define name="db.bibliocoverage.spatial-enum.attribute">
      <optional>
        <attribute name="spatial">
          <db:refpurpose>Specifies the type of spatial coverage</db:refpurpose>
          <ref name="db.bibliocoverage.spacial.enumeration"/>
        </attribute>
      </optional>
    </define>
    <define name="db.bibliocoverage.spatial-other.attributes">
      <optional>
        <attribute name="spatial">
          <db:refpurpose>Specifies the type of spatial coverage</db:refpurpose>
          <value>otherspatial</value>
          <a:documentation>Identifies a non-standard type of coverage</a:documentation>
        </attribute>
      </optional>
      <attribute name="otherspatial">
        <db:refpurpose>A keyword that identifies the type of non-standard coverage</db:refpurpose>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.bibliocoverage.spatial.attribute">
      <choice>
        <ref name="db.bibliocoverage.spatial-enum.attribute"/>
        <ref name="db.bibliocoverage.spatial-other.attributes"/>
      </choice>
    </define>
    <ctrl:other-attribute name="db.bibliocoverage.temporal.attrib" enum-name="db.bibliocoverage.temporal-enum.attribute" other-name="db.bibliocoverage.temporal-other.attributes"/>
    <define name="db.bibliocoverage.temporal.enumeration">
      <choice>
        <value>dcmiperiod</value>
        <a:documentation>A specification of the limits of a time interval</a:documentation>
        <value>w3c-dtf</value>
        <a:documentation>W3C Encoding rules for dates and times—a profile based on ISO 8601</a:documentation>
      </choice>
    </define>
    <define name="db.bibliocoverage.temporal-enum.attribute">
      <optional>
        <attribute name="temporal">
          <db:refpurpose>Specifies the type of temporal coverage</db:refpurpose>
          <ref name="db.bibliocoverage.temporal.enumeration"/>
        </attribute>
      </optional>
    </define>
    <define name="db.bibliocoverage.temporal-other.attributes">
      <optional>
        <attribute name="temporal">
          <db:refpurpose>Specifies the type of temporal coverage</db:refpurpose>
          <value>othertemporal</value>
          <a:documentation>Specifies a non-standard type of coverage</a:documentation>
        </attribute>
      </optional>
      <attribute name="othertemporal">
        <db:refpurpose>A keyword that identifies the type of non-standard coverage</db:refpurpose>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.bibliocoverage.temporal.attribute">
      <choice>
        <ref name="db.bibliocoverage.temporal-enum.attribute"/>
        <ref name="db.bibliocoverage.temporal-other.attributes"/>
      </choice>
    </define>
    <define name="db.bibliocoverage.coverage.attrib">
      <interleave>
        <ref name="db.bibliocoverage.spatial.attribute"/>
        <ref name="db.bibliocoverage.temporal.attribute"/>
      </interleave>
    </define>
    <define name="db.bibliocoverage.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.bibliocoverage.attlist">
      <interleave>
        <optional>
          <ref name="db.bibliocoverage.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.bibliocoverage.coverage.attrib"/>
      </interleave>
    </define>
    <define name="db.bibliocoverage">
      <element name="bibliocoverage">
        <ref name="db.bibliocoverage.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>legalnotice</db:refname>
    <db:refpurpose>A statement of legal obligations or requirements</db:refpurpose>
    <define name="db.legalnotice.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.legalnotice.attlist">
      <interleave>
        <optional>
          <ref name="db.legalnotice.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.legalnotice.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.legalnotice">
      <element name="legalnotice">
        <ref name="db.legalnotice.attlist"/>
        <ref name="db.legalnotice.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>othercredit</db:refname>
    <db:refpurpose>A person or entity, other than an author or editor, credited in a document</db:refpurpose>
    <ctrl:other-attribute name="db.othercredit.class.attribute" enum-name="db.othercredit.class-enum.attribute" other-name="db.othercredit.class-other.attributes"/>
    <define name="db.othercredit.class.enumeration">
      <choice>
        <value>copyeditor</value>
        <a:documentation>A copy editor</a:documentation>
        <value>graphicdesigner</value>
        <a:documentation>A graphic designer</a:documentation>
        <value>other</value>
        <a:documentation>Some other contributor</a:documentation>
        <value>productioneditor</value>
        <a:documentation>A production editor</a:documentation>
        <value>technicaleditor</value>
        <a:documentation>A technical editor</a:documentation>
        <value>translator</value>
        <a:documentation>A translator</a:documentation>
        <value>indexer</value>
        <a:documentation>An indexer</a:documentation>
        <value>proofreader</value>
        <a:documentation>A proof-reader</a:documentation>
        <value>coverdesigner</value>
        <a:documentation>A cover designer</a:documentation>
        <value>interiordesigner</value>
        <a:documentation>An interior designer</a:documentation>
        <value>illustrator</value>
        <a:documentation>An illustrator</a:documentation>
        <value>reviewer</value>
        <a:documentation>A reviewer</a:documentation>
        <value>typesetter</value>
        <a:documentation>A typesetter</a:documentation>
        <value>conversion</value>
        <a:documentation>A converter (a persons responsible for conversion, not an application)</a:documentation>
      </choice>
    </define>
    <define name="db.othercredit.class-enum.attribute">
      <optional>
        <attribute name="class">
          <db:refpurpose>Identifies the nature of the contributor</db:refpurpose>
          <ref name="db.othercredit.class.enumeration"/>
        </attribute>
      </optional>
    </define>
    <define name="db.othercredit.class-other.attribute">
      <attribute name="otherclass">
        <db:refpurpose>Identifies the nature of the non-standard contribution</db:refpurpose>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.othercredit.class-other.attributes">
      <interleave>
        <attribute name="class">
          <db:refpurpose>Identifies the nature of the contributor</db:refpurpose>
          <value>other</value>
          <a:documentation>Identifies a non-standard contribution</a:documentation>
        </attribute>
        <ref name="db.othercredit.class-other.attribute"/>
      </interleave>
    </define>
    <define name="db.othercredit.class.attribute">
      <choice>
        <ref name="db.othercredit.class-enum.attribute"/>
        <ref name="db.othercredit.class-other.attributes"/>
      </choice>
    </define>
    <define name="db.othercredit.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.othercredit.attlist">
      <interleave>
        <optional>
          <ref name="db.othercredit.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.othercredit.class.attribute"/>
      </interleave>
    </define>
    <define name="db.othercredit">
      <element name="othercredit">
        <ref name="db.othercredit.attlist"/>
        <ref name="db.credit.contentmodel"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>pagenums</db:refname>
    <db:refpurpose>The numbers of the pages in a book, for use in a bibliographic entry</db:refpurpose>
    <define name="db.pagenums.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.pagenums.attlist">
      <interleave>
        <optional>
          <ref name="db.pagenums.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.pagenums">
      <element name="pagenums">
        <ref name="db.pagenums.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>contrib</db:refname>
    <db:refpurpose>A summary of the contributions made to a document by a credited source</db:refpurpose>
    <define name="db.contrib.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.contrib.attlist">
      <interleave>
        <optional>
          <ref name="db.contrib.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.contrib">
      <element name="contrib">
        <ref name="db.contrib.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>honorific</db:refname>
    <db:refpurpose>The title of a person</db:refpurpose>
    <define name="db.honorific.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.honorific.attlist">
      <interleave>
        <optional>
          <ref name="db.honorific.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.honorific">
      <element name="honorific">
        <ref name="db.honorific.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>firstname</db:refname>
    <db:refpurpose>A given name of a person</db:refpurpose>
    <define name="db.firstname.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.firstname.attlist">
      <interleave>
        <optional>
          <ref name="db.firstname.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.firstname">
      <element name="firstname">
        <ref name="db.firstname.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>givenname</db:refname>
    <db:refpurpose>The given name of a person</db:refpurpose>
    <define name="db.givenname.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.givenname.attlist">
      <interleave>
        <optional>
          <ref name="db.givenname.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.givenname">
      <element name="givenname">
        <ref name="db.givenname.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>surname</db:refname>
    <db:refpurpose>An inherited or family name; in western cultures the last name</db:refpurpose>
    <define name="db.surname.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.surname.attlist">
      <interleave>
        <optional>
          <ref name="db.surname.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.surname">
      <element name="surname">
        <ref name="db.surname.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>lineage</db:refname>
    <db:refpurpose>The portion of a person's name indicating a relationship to ancestors</db:refpurpose>
    <define name="db.lineage.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.lineage.attlist">
      <interleave>
        <optional>
          <ref name="db.lineage.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.lineage">
      <element name="lineage">
        <ref name="db.lineage.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>othername</db:refname>
    <db:refpurpose>A component of a person's name that is not a first name, surname, or lineage</db:refpurpose>
    <define name="db.othername.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.othername.attlist">
      <interleave>
        <optional>
          <ref name="db.othername.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.othername">
      <element name="othername">
        <ref name="db.othername.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>printhistory</db:refname>
    <db:refpurpose>The printing history of a document</db:refpurpose>
    <define name="db.printhistory.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.printhistory.attlist">
      <interleave>
        <optional>
          <ref name="db.printhistory.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.printhistory">
      <element name="printhistory">
        <ref name="db.printhistory.attlist"/>
        <oneOrMore>
          <ref name="db.para.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>pubdate</db:refname>
    <db:refpurpose>The date of publication of a document</db:refpurpose>
    <define name="db.pubdate.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.pubdate.attlist">
      <interleave>
        <optional>
          <ref name="db.pubdate.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.pubdate">
      <element name="pubdate">
        <ref name="db.pubdate.attlist"/>
        <ref name="db.date.contentmodel"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>publisher</db:refname>
    <db:refpurpose>The publisher of a document</db:refpurpose>
    <define name="db.publisher.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.publisher.attlist">
      <interleave>
        <optional>
          <ref name="db.publisher.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.publisher">
      <element name="publisher">
        <ref name="db.publisher.attlist"/>
        <ref name="db.publishername"/>
        <zeroOrMore>
          <ref name="db.address"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>publishername</db:refname>
    <db:refpurpose>The name of the publisher of a document</db:refpurpose>
    <define name="db.publishername.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.publishername.attlist">
      <interleave>
        <optional>
          <ref name="db.publishername.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.publishername">
      <element name="publishername">
        <ref name="db.publishername.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>releaseinfo</db:refname>
    <db:refpurpose>Information about a particular release of a document</db:refpurpose>
    <define name="db.releaseinfo.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.releaseinfo.attlist">
      <interleave>
        <optional>
          <ref name="db.releaseinfo.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.releaseinfo">
      <element name="releaseinfo">
        <ref name="db.releaseinfo.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>revhistory</db:refname>
    <db:refpurpose>A history of the revisions to a document</db:refpurpose>
    <define name="db.revhistory.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.revhistory.attlist">
      <interleave>
        <optional>
          <ref name="db.revhistory.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.revhistory.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.revhistory">
      <element name="revhistory">
        <ref name="db.revhistory.attlist"/>
        <ref name="db.revhistory.info"/>
        <oneOrMore>
          <ref name="db.revision"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>revision</db:refname>
    <db:refpurpose>An entry describing a single revision in the history of the revisions to a document</db:refpurpose>
    <define name="db.revision.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.revision.attlist">
      <interleave>
        <optional>
          <ref name="db.revision.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.revision">
      <element name="revision">
        <ref name="db.revision.attlist"/>
        <optional>
          <ref name="db.revnumber"/>
        </optional>
        <ref name="db.date"/>
        <zeroOrMore>
          <choice>
            <ref name="db.authorinitials"/>
            <ref name="db.author"/>
          </choice>
        </zeroOrMore>
        <optional>
          <choice>
            <ref name="db.revremark"/>
            <ref name="db.revdescription"/>
          </choice>
        </optional>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>revnumber</db:refname>
    <db:refpurpose>A document revision number</db:refpurpose>
    <define name="db.revnumber.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.revnumber.attlist">
      <interleave>
        <optional>
          <ref name="db.revnumber.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.revnumber">
      <element name="revnumber">
        <ref name="db.revnumber.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>revremark</db:refname>
    <db:refpurpose>A description of a revision to a document</db:refpurpose>
    <define name="db.revremark.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.revremark.attlist">
      <interleave>
        <optional>
          <ref name="db.revremark.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.revremark">
      <element name="revremark">
        <ref name="db.revremark.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>revdescription</db:refname>
    <db:refpurpose>A extended description of a revision to a document</db:refpurpose>
    <define name="db.revdescription.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.revdescription.attlist">
      <interleave>
        <optional>
          <ref name="db.revdescription.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.revdescription">
      <element name="revdescription">
        <ref name="db.revdescription.attlist"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>seriesvolnums</db:refname>
    <db:refpurpose>Numbers of the volumes in a series of books</db:refpurpose>
    <define name="db.seriesvolnums.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.seriesvolnums.attlist">
      <interleave>
        <optional>
          <ref name="db.seriesvolnums.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.seriesvolnums">
      <element name="seriesvolnums">
        <ref name="db.seriesvolnums.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>volumenum</db:refname>
    <db:refpurpose>The volume number of a document in a set (as of books in a set or articles in a journal)</db:refpurpose>
    <define name="db.volumenum.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.volumenum.attlist">
      <interleave>
        <optional>
          <ref name="db.volumenum.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.volumenum">
      <element name="volumenum">
        <ref name="db.volumenum.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>issuenum</db:refname>
    <db:refpurpose>The number of an issue of a journal</db:refpurpose>
    <define name="db.issuenum.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.issuenum.attlist">
      <interleave>
        <optional>
          <ref name="db.issuenum.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.issuenum">
      <element name="issuenum">
        <ref name="db.issuenum.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>package</db:refname>
    <db:refpurpose>A software or application package</db:refpurpose>
    <define name="db.package.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.package.attlist">
      <interleave>
        <optional>
          <ref name="db.package.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.package">
      <element name="package">
        <ref name="db.package.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>email</db:refname>
    <db:refpurpose>An email address</db:refpurpose>
    <define name="db.email.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.email.attlist">
      <interleave>
        <optional>
          <ref name="db.email.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.email">
      <element name="email">
        <ref name="db.email.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>lineannotation</db:refname>
    <db:refpurpose>A comment on a line in a verbatim listing</db:refpurpose>
    <define name="db.lineannotation.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.lineannotation.attlist">
      <interleave>
        <optional>
          <ref name="db.lineannotation.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.lineannotation">
      <element name="lineannotation">
        <ref name="db.lineannotation.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>parameter</db:refname>
    <db:refpurpose>A value or a symbolic reference to a value</db:refpurpose>
    <define name="db.parameter.class.enumeration">
      <choice>
        <value>command</value>
        <a:documentation>A command</a:documentation>
        <value>function</value>
        <a:documentation>A function</a:documentation>
        <value>option</value>
        <a:documentation>An option</a:documentation>
      </choice>
    </define>
    <define name="db.parameter.class.attribute">
      <attribute name="class">
        <db:refpurpose>Identifies the class of parameter</db:refpurpose>
        <ref name="db.parameter.class.enumeration"/>
      </attribute>
    </define>
    <define name="db.parameter.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.parameter.attlist">
      <interleave>
        <optional>
          <ref name="db.parameter.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.parameter.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.parameter">
      <element name="parameter">
        <ref name="db.parameter.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <define name="db.replaceable.inlines">
    <ref name="db._text"/>
  </define>
  <!-- ====================================================================== -->
  <div>
    <db:refname>replaceable</db:refname>
    <db:refpurpose>Content that may or must be replaced by the user</db:refpurpose>
    <define name="db.replaceable.class.enumeration">
      <choice>
        <value>command</value>
        <a:documentation>A command</a:documentation>
        <value>function</value>
        <a:documentation>A function</a:documentation>
        <value>option</value>
        <a:documentation>An option</a:documentation>
        <value>parameter</value>
        <a:documentation>A parameter</a:documentation>
      </choice>
    </define>
    <define name="db.replaceable.class.attribute">
      <attribute name="class">
        <db:refpurpose>Identifies the nature of the replaceable text</db:refpurpose>
        <ref name="db.replaceable.class.enumeration"/>
      </attribute>
    </define>
    <define name="db.replaceable.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.replaceable.attlist">
      <interleave>
        <optional>
          <ref name="db.replaceable.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.replaceable.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.replaceable">
      <element name="replaceable">
        <ref name="db.replaceable.attlist"/>
        <zeroOrMore>
          <ref name="db.replaceable.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>uri</db:refname>
    <db:refpurpose>A Uniform Resource Identifier</db:refpurpose>
    <define name="db.uri.type.attribute">
      <optional>
        <attribute name="type">
          <db:refpurpose>Identifies the type of URI specified</db:refpurpose>
        </attribute>
      </optional>
    </define>
    <define name="db.uri.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.uri.attlist">
      <interleave>
        <optional>
          <ref name="db.uri.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.uri.type.attribute"/>
      </interleave>
    </define>
    <define name="db.uri">
      <element name="uri">
        <ref name="db.uri.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>abbrev</db:refname>
    <db:refpurpose>An abbreviation, especially one followed by a period</db:refpurpose>
    <define name="db.abbrev.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.abbrev.attlist">
      <interleave>
        <optional>
          <ref name="db.abbrev.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.abbrev">
      <element name="abbrev">
        <ref name="db.abbrev.attlist"/>
        <zeroOrMore>
          <choice>
            <ref name="db._text"/>
            <ref name="db.superscript"/>
            <ref name="db.subscript"/>
            <ref name="db.trademark"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>acronym</db:refname>
    <db:refpurpose>An often pronounceable word made from the initial (or selected) letters of a name or phrase</db:refpurpose>
    <define name="db.acronym.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.acronym.attlist">
      <interleave>
        <optional>
          <ref name="db.acronym.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.acronym">
      <element name="acronym">
        <ref name="db.acronym.attlist"/>
        <zeroOrMore>
          <choice>
            <ref name="db._text"/>
            <ref name="db.superscript"/>
            <ref name="db.subscript"/>
            <ref name="db.trademark"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>citation</db:refname>
    <db:refpurpose>An inline bibliographic reference to another published work</db:refpurpose>
    <define name="db.citation.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.citation.attlist">
      <interleave>
        <optional>
          <ref name="db.citation.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.citation">
      <element name="citation">
        <ref name="db.citation.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>citerefentry</db:refname>
    <db:refpurpose>A citation to a reference page</db:refpurpose>
    <define name="db.citerefentry.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.citerefentry.attlist">
      <interleave>
        <optional>
          <ref name="db.citerefentry.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.citerefentry">
      <element name="citerefentry">
        <ref name="db.citerefentry.attlist"/>
        <ref name="db.refentrytitle"/>
        <optional>
          <ref name="db.manvolnum"/>
        </optional>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>refentrytitle</db:refname>
    <db:refpurpose>The title of a reference page</db:refpurpose>
    <define name="db.refentrytitle.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.refentrytitle.attlist">
      <interleave>
        <optional>
          <ref name="db.refentrytitle.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.refentrytitle">
      <element name="refentrytitle">
        <ref name="db.refentrytitle.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>manvolnum</db:refname>
    <db:refpurpose>A reference volume number</db:refpurpose>
    <define name="db.manvolnum.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.manvolnum.attlist">
      <interleave>
        <optional>
          <ref name="db.manvolnum.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.manvolnum">
      <element name="manvolnum">
        <ref name="db.manvolnum.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>citetitle</db:refname>
    <db:refpurpose>The title of a cited work</db:refpurpose>
    <define name="db.citetitle.pubwork.enumeration">
      <choice>
        <value>article</value>
        <a:documentation>An article</a:documentation>
        <value>bbs</value>
        <a:documentation>A bulletin board system</a:documentation>
        <value>book</value>
        <a:documentation>A book</a:documentation>
        <value>cdrom</value>
        <a:documentation>A CD-ROM</a:documentation>
        <value>chapter</value>
        <a:documentation>A chapter (as of a book)</a:documentation>
        <value>dvd</value>
        <a:documentation>A DVD</a:documentation>
        <value>emailmessage</value>
        <a:documentation>An email message</a:documentation>
        <value>gopher</value>
        <a:documentation>A gopher page</a:documentation>
        <value>journal</value>
        <a:documentation>A journal</a:documentation>
        <value>manuscript</value>
        <a:documentation>A manuscript</a:documentation>
        <value>newsposting</value>
        <a:documentation>A posting to a newsgroup</a:documentation>
        <value>part</value>
        <a:documentation>A part (as of a book)</a:documentation>
        <value>refentry</value>
        <a:documentation>A reference entry</a:documentation>
        <value>section</value>
        <a:documentation>A section (as of a book or article)</a:documentation>
        <value>series</value>
        <a:documentation>A series</a:documentation>
        <value>set</value>
        <a:documentation>A set (as of books)</a:documentation>
        <value>webpage</value>
        <a:documentation>A web page</a:documentation>
        <value>wiki</value>
        <a:documentation>A wiki page</a:documentation>
      </choice>
    </define>
    <define name="db.citetitle.pubwork.attribute">
      <attribute name="pubwork">
        <db:refpurpose>Identifies the nature of the publication being cited</db:refpurpose>
        <ref name="db.citetitle.pubwork.enumeration"/>
      </attribute>
    </define>
    <define name="db.citetitle.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.citetitle.attlist">
      <interleave>
        <optional>
          <ref name="db.citetitle.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.citetitle.pubwork.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.citetitle">
      <element name="citetitle">
        <ref name="db.citetitle.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>emphasis</db:refname>
    <db:refpurpose>Emphasized text</db:refpurpose>
    <define name="db.emphasis.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.emphasis.attlist">
      <interleave>
        <optional>
          <ref name="db.emphasis.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.emphasis">
      <element name="emphasis">
        <ref name="db.emphasis.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>emphasis</db:refname>
    <db:refpurpose>A limited span of emphasized text</db:refpurpose>
    <define name="db._emphasis">
      <element name="emphasis">
        <ref name="db.emphasis.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>foreignphrase</db:refname>
    <db:refpurpose>A word or phrase in a language other than the primary language of the document</db:refpurpose>
    <define name="db.foreignphrase.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.foreignphrase.attlist">
      <interleave>
        <optional>
          <ref name="db.foreignphrase.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.foreignphrase">
      <element name="foreignphrase">
        <ref name="db.foreignphrase.attlist"/>
        <zeroOrMore>
          <choice>
            <text/>
            <ref name="db.general.inlines"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>foreignphrase</db:refname>
    <db:refpurpose>A limited word or phrase in a language other than the primary language of the document</db:refpurpose>
    <define name="db._foreignphrase.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db._foreignphrase.attlist">
      <interleave>
        <optional>
          <ref name="db._foreignphrase.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db._foreignphrase">
      <element name="foreignphrase">
        <ref name="db._foreignphrase.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>phrase</db:refname>
    <db:refpurpose>A span of text</db:refpurpose>
    <define name="db.phrase.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.phrase.attlist">
      <interleave>
        <optional>
          <ref name="db.phrase.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.phrase">
      <element name="phrase">
        <ref name="db.phrase.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>phrase</db:refname>
    <db:refpurpose>A limited span of text</db:refpurpose>
    <define name="db._phrase">
      <element name="phrase">
        <ref name="db.phrase.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>quote</db:refname>
    <db:refpurpose>An inline quotation</db:refpurpose>
    <define name="db.quote.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.quote.attlist">
      <interleave>
        <optional>
          <ref name="db.quote.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.quote">
      <element name="quote">
        <ref name="db.quote.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>quote</db:refname>
    <db:refpurpose>A limited inline quotation</db:refpurpose>
    <define name="db._quote.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db._quote.attlist">
      <interleave>
        <optional>
          <ref name="db._quote.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db._quote">
      <element name="quote">
        <ref name="db._quote.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>subscript</db:refname>
    <db:refpurpose>A subscript (as in H<db:subscript>2</db:subscript>
O, the molecular formula for water)</db:refpurpose>
    <define name="db.subscript.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subscript.attlist">
      <interleave>
        <optional>
          <ref name="db.subscript.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.subscript">
      <element name="subscript">
        <ref name="db.subscript.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>superscript</db:refname>
    <db:refpurpose>A superscript (as in x<db:superscript>2</db:superscript>
, the mathematical notation for x multiplied by itself)</db:refpurpose>
    <define name="db.superscript.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.superscript.attlist">
      <interleave>
        <optional>
          <ref name="db.superscript.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.superscript">
      <element name="superscript">
        <ref name="db.superscript.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>trademark</db:refname>
    <db:refpurpose>A trademark</db:refpurpose>
    <define name="db.trademark.class.enumeration">
      <choice>
        <value>copyright</value>
        <a:documentation>A copyright</a:documentation>
        <value>registered</value>
        <a:documentation>A registered copyright</a:documentation>
        <value>service</value>
        <a:documentation>A service</a:documentation>
        <value>trade</value>
        <a:documentation>A trademark</a:documentation>
      </choice>
    </define>
    <define name="db.trademark.class.attribute">
      <attribute name="class">
        <db:refpurpose>Identifies the class of trade mark</db:refpurpose>
        <ref name="db.trademark.class.enumeration"/>
      </attribute>
    </define>
    <define name="db.trademark.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.trademark.attlist">
      <interleave>
        <optional>
          <ref name="db.trademark.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.trademark.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.trademark">
      <element name="trademark">
        <ref name="db.trademark.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>wordasword</db:refname>
    <db:refpurpose>A word meant specifically as a word and not representing anything else</db:refpurpose>
    <define name="db.wordasword.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.wordasword.attlist">
      <interleave>
        <optional>
          <ref name="db.wordasword.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.wordasword">
      <element name="wordasword">
        <ref name="db.wordasword.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>footnoteref</db:refname>
    <db:refpurpose>A cross reference to a footnote (a footnote mark)</db:refpurpose>
    <define name="db.footnoteref.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.footnoteref.label.attribute">
      <ref name="db.label.attribute"/>
    </define>
    <define name="db.footnoteref.attlist">
      <interleave>
        <optional>
          <ref name="db.footnoteref.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.linkend.attribute"/>
        <optional>
          <ref name="db.footnoteref.label.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.footnoteref">
      <element name="footnoteref">
        <s:pattern name="Footnote reference type constraint">
          <s:rule context="db:footnoteref">
            <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on footnoteref must point to a footnote.</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.footnoteref.attlist"/>
        <empty/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>xref</db:refname>
    <db:refpurpose>A cross reference to another part of the document</db:refpurpose>
    <define name="db.xref.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.xref.xrefstyle.attribute">
      <ref name="db.xrefstyle.attribute"/>
    </define>
    <define name="db.xref.endterm.attribute">
      <ref name="db.endterm.attribute"/>
    </define>
    <define name="db.xref.attlist">
      <interleave>
        <optional>
          <ref name="db.xref.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.req.linking.attributes"/>
        <optional>
          <ref name="db.xref.xrefstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.xref.endterm.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.xref">
      <element name="xref">
        <ref name="db.xref.attlist"/>
        <empty/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>link</db:refname>
    <db:refpurpose>A hypertext link</db:refpurpose>
    <define name="db.link.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.link.xrefstyle.attribute">
      <ref name="db.xrefstyle.attribute"/>
    </define>
    <define name="db.link.endterm.attribute">
      <ref name="db.endterm.attribute"/>
    </define>
    <define name="db.link.attlist">
      <interleave>
        <optional>
          <ref name="db.link.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.req.linking.attributes"/>
        <optional>
          <ref name="db.link.xrefstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.link.endterm.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.link">
      <element name="link">
        <ref name="db.link.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>olink</db:refname>
    <db:refpurpose>A link that addresses its target indirectly</db:refpurpose>
    <define name="db.olink.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.olink.xrefstyle.attribute">
      <ref name="db.xrefstyle.attribute"/>
    </define>
    <define name="db.olink.localinfo.attribute">
      <attribute name="localinfo">
        <db:refpurpose>Holds additional information that may be used by the application when resolving the link</db:refpurpose>
      </attribute>
    </define>
    <define name="db.olink.targetdoc.attribute">
      <attribute name="targetdoc">
        <db:refpurpose>Specifies the URI of the document in which the link target appears</db:refpurpose>
        <data type="anyURI"/>
      </attribute>
    </define>
    <define name="db.olink.targetptr.attribute">
      <attribute name="targetptr">
        <db:refpurpose>Specifies the location of the link target in the document</db:refpurpose>
      </attribute>
    </define>
    <define name="db.olink.type.attribute">
      <attribute name="type">
        <db:refpurpose>Identifies application-specific customization of the link behavior</db:refpurpose>
      </attribute>
    </define>
    <define name="db.olink.attlist">
      <interleave>
        <ref name="db.common.attributes"/>
        <optional>
          <ref name="db.olink.targetdoc.attribute"/>
        </optional>
        <optional>
          <ref name="db.olink.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.olink.xrefstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.olink.localinfo.attribute"/>
        </optional>
        <optional>
          <ref name="db.olink.targetptr.attribute"/>
        </optional>
        <optional>
          <ref name="db.olink.type.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.olink">
      <element name="olink">
        <ref name="db.olink.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>anchor</db:refname>
    <db:refpurpose>A spot in the document</db:refpurpose>
    <define name="db.anchor.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.anchor.attlist">
      <interleave>
        <optional>
          <ref name="db.anchor.role.attribute"/>
        </optional>
        <ref name="db.common.idreq.attributes"/>
      </interleave>
    </define>
    <define name="db.anchor">
      <element name="anchor">
        <ref name="db.anchor.attlist"/>
        <empty/>
      </element>
    </define>
  </div>
  <!-- ====================================================================== -->
  <div>
    <db:refname>alt</db:refname>
    <db:refpurpose>A text-only annotation, often used for accessibility</db:refpurpose>
    <define name="db.alt.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.alt.attlist">
      <interleave>
        <optional>
          <ref name="db.alt.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.alt">
      <element name="alt">
        <ref name="db.alt.attlist"/>
        <zeroOrMore>
          <choice>
            <text/>
            <ref name="db.inlinemediaobject"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
</grammar>
