<?xml version="1.0" encoding="UTF-8"?>
<!-- ...................................................................... -->
<!-- DocBook XML information pool module V4.5 ............................. -->
<!-- File dbpoolx.mod ..................................................... -->
<!--
  Copyright 1992-2004 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).
  
  $Id: dbpoolx.mod 6340 2006-10-03 13:23:24Z nwalsh $
  
  Permission to use, copy, modify and distribute the DocBook XML DTD
  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 DTD for
  any purpose.  It is provided "as is" without expressed or implied
  warranty.
  
  If you modify the DocBook XML DTD in any way, except for declaring and
  referencing additional sets of general entities and declaring
  additional notations, label your DTD as a variant of DocBook.  See
  the maintenance documentation 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/.
-->
<!-- ...................................................................... -->
<!--
  This module contains the definitions for the objects, inline
  elements, and so on that are available to be used as the main
  content of DocBook documents.  Some elements are useful for general
  publishing, and others are useful specifically for computer
  documentation.
  
  This module has the following dependencies on other modules:
  
  o It assumes that a %notation.class; entity is defined by the
    driver file or other high-level module.  This entity is
    referenced in the NOTATION attributes for the graphic-related and
    ModeSpec elements.
  
  o It assumes that an appropriately parameterized table module is
    available for use with the table-related elements.
  
  In DTD driver files referring to this module, please use an entity
  declaration that uses the public identifier shown below:
  
  <!ENTITY % dbpool PUBLIC
  "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN"
  "dbpoolx.mod">
  %dbpool;
  
  See the documentation for detailed information on the parameter
  entity and module scheme used in DocBook, customizing DocBook and
  planning for interchange, and changes made since the last release
  of DocBook.
-->
<!-- ...................................................................... -->
<!-- Forms entities ....................................................... -->
<!-- These PEs provide the hook by which the forms module can be inserted -->
<!-- into the DTD. -->
<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <define name="forminlines.hook">
    <notAllowed/>
  </define>
  <define name="forms.hook">
    <notAllowed/>
  </define>
  <!-- ...................................................................... -->
  <!-- General-purpose semantics entities ................................... -->
  <define name="yesorno.attvals">
    <data type="string" datatypeLibrary=""/>
  </define>
  <!-- ...................................................................... -->
  <!-- Entities for module inclusions ....................................... -->
  <!-- ...................................................................... -->
  <!-- Entities for element classes and mixtures ............................ -->
  <!-- "Ubiquitous" classes: ndxterm.class and beginpage -->
  <define name="local.ndxterm.class">
    <notAllowed/>
  </define>
  <define name="ndxterm.class">
    <choice>
      <ref name="indexterm"/>
      <ref name="local.ndxterm.class"/>
    </choice>
  </define>
  <!-- Object-level classes ................................................. -->
  <define name="local.list.class">
    <notAllowed/>
  </define>
  <define name="list.class">
    <choice>
      <ref name="calloutlist"/>
      <ref name="glosslist"/>
      <ref name="bibliolist"/>
      <ref name="itemizedlist"/>
      <ref name="orderedlist"/>
      <ref name="segmentedlist"/>
      <ref name="simplelist"/>
      <ref name="variablelist"/>
      <ref name="local.list.class"/>
    </choice>
  </define>
  <define name="local.admon.class">
    <notAllowed/>
  </define>
  <define name="admon.class">
    <choice>
      <ref name="caution"/>
      <ref name="important"/>
      <ref name="note"/>
      <ref name="tip"/>
      <ref name="warning"/>
      <ref name="local.admon.class"/>
    </choice>
  </define>
  <define name="local.linespecific.class">
    <notAllowed/>
  </define>
  <define name="linespecific.class">
    <choice>
      <ref name="literallayout"/>
      <ref name="programlisting"/>
      <ref name="programlistingco"/>
      <ref name="screen"/>
      <ref name="screenco"/>
      <ref name="screenshot"/>
      <ref name="local.linespecific.class"/>
    </choice>
  </define>
  <define name="local.method.synop.class">
    <notAllowed/>
  </define>
  <define name="method.synop.class">
    <choice>
      <ref name="constructorsynopsis"/>
      <ref name="destructorsynopsis"/>
      <ref name="methodsynopsis"/>
      <ref name="local.method.synop.class"/>
    </choice>
  </define>
  <define name="local.synop.class">
    <notAllowed/>
  </define>
  <define name="synop.class">
    <choice>
      <ref name="synopsis"/>
      <ref name="cmdsynopsis"/>
      <ref name="funcsynopsis"/>
      <ref name="classsynopsis"/>
      <ref name="fieldsynopsis"/>
      <ref name="method.synop.class"/>
      <ref name="local.synop.class"/>
    </choice>
  </define>
  <define name="local.para.class">
    <notAllowed/>
  </define>
  <define name="para.class">
    <choice>
      <ref name="formalpara"/>
      <ref name="para"/>
      <ref name="simpara"/>
      <ref name="local.para.class"/>
    </choice>
  </define>
  <define name="local.informal.class">
    <notAllowed/>
  </define>
  <define name="informal.class">
    <choice>
      <ref name="address"/>
      <ref name="blockquote"/>
      <ref name="graphic"/>
      <ref name="graphicco"/>
      <ref name="mediaobject"/>
      <ref name="mediaobjectco"/>
      <ref name="informalequation"/>
      <ref name="informalexample"/>
      <ref name="informalfigure"/>
      <ref name="informaltable"/>
      <ref name="local.informal.class"/>
    </choice>
  </define>
  <define name="local.formal.class">
    <notAllowed/>
  </define>
  <define name="formal.class">
    <choice>
      <ref name="equation"/>
      <ref name="example"/>
      <ref name="figure"/>
      <ref name="table"/>
      <ref name="local.formal.class"/>
    </choice>
  </define>
  <!-- The DocBook TC may produce an official EBNF module for DocBook. -->
  <!-- This PE provides the hook by which it can be inserted into the DTD. -->
  <define name="ebnf.block.hook">
    <notAllowed/>
  </define>
  <define name="local.compound.class">
    <notAllowed/>
  </define>
  <define name="compound.class">
    <choice>
      <ref name="msgset"/>
      <ref name="procedure"/>
      <ref name="sidebar"/>
      <ref name="qandaset"/>
      <ref name="task"/>
      <ref name="ebnf.block.hook"/>
      <ref name="local.compound.class"/>
    </choice>
  </define>
  <define name="local.genobj.class">
    <notAllowed/>
  </define>
  <define name="genobj.class">
    <choice>
      <ref name="anchor"/>
      <ref name="bridgehead"/>
      <ref name="remark"/>
      <ref name="highlights"/>
      <ref name="local.genobj.class"/>
    </choice>
  </define>
  <define name="local.descobj.class">
    <notAllowed/>
  </define>
  <define name="descobj.class">
    <choice>
      <ref name="abstract"/>
      <ref name="authorblurb"/>
      <ref name="epigraph"/>
      <ref name="local.descobj.class"/>
    </choice>
  </define>
  <!-- Character-level classes .............................................. -->
  <define name="local.xref.char.class">
    <notAllowed/>
  </define>
  <define name="xref.char.class">
    <choice>
      <ref name="footnoteref"/>
      <ref name="xref"/>
      <ref name="biblioref"/>
      <ref name="local.xref.char.class"/>
    </choice>
  </define>
  <define name="local.gen.char.class">
    <notAllowed/>
  </define>
  <define name="gen.char.class">
    <choice>
      <ref name="abbrev"/>
      <ref name="acronym"/>
      <ref name="citation"/>
      <ref name="citerefentry"/>
      <ref name="citetitle"/>
      <ref name="citebiblioid"/>
      <ref name="emphasis"/>
      <ref name="firstterm"/>
      <ref name="foreignphrase"/>
      <ref name="glossterm"/>
      <ref name="termdef"/>
      <ref name="footnote"/>
      <ref name="phrase"/>
      <ref name="orgname"/>
      <ref name="quote"/>
      <ref name="trademark"/>
      <ref name="wordasword"/>
      <ref name="personname"/>
      <ref name="local.gen.char.class"/>
    </choice>
  </define>
  <define name="local.link.char.class">
    <notAllowed/>
  </define>
  <define name="link.char.class">
    <choice>
      <ref name="link"/>
      <ref name="olink"/>
      <ref name="ulink"/>
      <ref name="local.link.char.class"/>
    </choice>
  </define>
  <!-- The DocBook TC may produce an official EBNF module for DocBook. -->
  <!-- This PE provides the hook by which it can be inserted into the DTD. -->
  <define name="ebnf.inline.hook">
    <notAllowed/>
  </define>
  <define name="local.tech.char.class">
    <notAllowed/>
  </define>
  <define name="tech.char.class">
    <choice>
      <ref name="action"/>
      <ref name="application"/>
      <ref name="classname"/>
      <ref name="methodname"/>
      <ref name="interfacename"/>
      <ref name="exceptionname"/>
      <ref name="ooclass"/>
      <ref name="oointerface"/>
      <ref name="ooexception"/>
      <ref name="package"/>
      <ref name="command"/>
      <ref name="computeroutput"/>
      <ref name="database"/>
      <ref name="email"/>
      <ref name="envar"/>
      <ref name="errorcode"/>
      <ref name="errorname"/>
      <ref name="errortype"/>
      <ref name="errortext"/>
      <ref name="filename"/>
      <ref name="function"/>
      <ref name="guibutton"/>
      <ref name="guiicon"/>
      <ref name="guilabel"/>
      <ref name="guimenu"/>
      <ref name="guimenuitem"/>
      <ref name="guisubmenu"/>
      <ref name="hardware"/>
      <ref name="interface"/>
      <ref name="keycap"/>
      <ref name="keycode"/>
      <ref name="keycombo"/>
      <ref name="keysym"/>
      <ref name="literal"/>
      <ref name="code"/>
      <ref name="constant"/>
      <ref name="markup"/>
      <ref name="medialabel"/>
      <ref name="menuchoice"/>
      <ref name="mousebutton"/>
      <ref name="option"/>
      <ref name="optional"/>
      <ref name="parameter"/>
      <ref name="prompt"/>
      <ref name="property"/>
      <ref name="replaceable"/>
      <ref name="returnvalue"/>
      <ref name="sgmltag"/>
      <ref name="structfield"/>
      <ref name="structname"/>
      <ref name="symbol"/>
      <ref name="systemitem"/>
      <ref name="uri"/>
      <ref name="token"/>
      <ref name="type"/>
      <ref name="userinput"/>
      <ref name="varname"/>
      <ref name="ebnf.inline.hook"/>
      <ref name="local.tech.char.class"/>
    </choice>
  </define>
  <define name="local.base.char.class">
    <notAllowed/>
  </define>
  <define name="base.char.class">
    <choice>
      <ref name="anchor"/>
      <ref name="local.base.char.class"/>
    </choice>
  </define>
  <define name="local.docinfo.char.class">
    <notAllowed/>
  </define>
  <define name="docinfo.char.class">
    <choice>
      <ref name="author"/>
      <ref name="authorinitials"/>
      <ref name="corpauthor"/>
      <ref name="corpcredit"/>
      <ref name="modespec"/>
      <ref name="othercredit"/>
      <ref name="productname"/>
      <ref name="productnumber"/>
      <ref name="revhistory"/>
      <ref name="local.docinfo.char.class"/>
    </choice>
  </define>
  <define name="local.other.char.class">
    <notAllowed/>
  </define>
  <define name="other.char.class">
    <choice>
      <ref name="remark"/>
      <ref name="subscript"/>
      <ref name="superscript"/>
      <ref name="local.other.char.class"/>
    </choice>
  </define>
  <define name="local.inlineobj.char.class">
    <notAllowed/>
  </define>
  <define name="inlineobj.char.class">
    <choice>
      <ref name="inlinegraphic"/>
      <ref name="inlinemediaobject"/>
      <ref name="inlineequation"/>
      <ref name="local.inlineobj.char.class"/>
    </choice>
  </define>
  <!-- ...................................................................... -->
  <!-- Entities for content models .......................................... -->
  <define name="formalobject.title.content">
    <ref name="title"/>
    <optional>
      <ref name="titleabbrev"/>
    </optional>
  </define>
  <!-- Redeclaration placeholder ............................................ -->
  <!--
    For redeclaring entities that are declared after this point while
    retaining their references to the entities that are declared before
    this point
  -->
  <!-- Object-level mixtures ................................................ -->
  <!--
                          list admn line synp para infm form cmpd gen  desc
    Component mixture       X    X    X    X    X    X    X    X    X    X
    Sidebar mixture         X    X    X    X    X    X    X    a    X
    Footnote mixture        X         X    X    X    X
    Example mixture         X         X    X    X    X
    Highlights mixture      X    X              X
    Paragraph mixture       X         X    X         X
    Admonition mixture      X         X    X    X    X    X    b    c
    Figure mixture                    X    X         X
    Table entry mixture     X    X    X         X    d
    Glossary def mixture    X         X    X    X    X         e
    Legal notice mixture    X    X    X         X    f
    
    a. Just Procedure; not Sidebar itself or MsgSet.
    b. No MsgSet.
    c. No Highlights.
    d. Just Graphic; no other informal objects.
    e. No Anchor, BridgeHead, or Highlights.
    f. Just BlockQuote; no other informal objects.
  -->
  <define name="local.component.mix">
    <notAllowed/>
  </define>
  <define name="component.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="admon.class"/>
      <ref name="linespecific.class"/>
      <ref name="synop.class"/>
      <ref name="para.class"/>
      <ref name="informal.class"/>
      <ref name="formal.class"/>
      <ref name="compound.class"/>
      <ref name="genobj.class"/>
      <ref name="descobj.class"/>
      <ref name="ndxterm.class"/>
      <ref name="beginpage"/>
      <ref name="forms.hook"/>
      <ref name="local.component.mix"/>
    </choice>
  </define>
  <define name="local.sidebar.mix">
    <notAllowed/>
  </define>
  <define name="sidebar.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="admon.class"/>
      <ref name="linespecific.class"/>
      <ref name="synop.class"/>
      <ref name="para.class"/>
      <ref name="informal.class"/>
      <ref name="formal.class"/>
      <ref name="procedure"/>
      <ref name="genobj.class"/>
      <ref name="ndxterm.class"/>
      <ref name="beginpage"/>
      <ref name="forms.hook"/>
      <ref name="local.sidebar.mix"/>
    </choice>
  </define>
  <define name="local.qandaset.mix">
    <notAllowed/>
  </define>
  <define name="qandaset.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="admon.class"/>
      <ref name="linespecific.class"/>
      <ref name="synop.class"/>
      <ref name="para.class"/>
      <ref name="informal.class"/>
      <ref name="formal.class"/>
      <ref name="procedure"/>
      <ref name="genobj.class"/>
      <ref name="ndxterm.class"/>
      <ref name="forms.hook"/>
      <ref name="local.qandaset.mix"/>
    </choice>
  </define>
  <define name="local.revdescription.mix">
    <notAllowed/>
  </define>
  <define name="revdescription.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="admon.class"/>
      <ref name="linespecific.class"/>
      <ref name="synop.class"/>
      <ref name="para.class"/>
      <ref name="informal.class"/>
      <ref name="formal.class"/>
      <ref name="procedure"/>
      <ref name="genobj.class"/>
      <ref name="ndxterm.class"/>
      <ref name="local.revdescription.mix"/>
    </choice>
  </define>
  <define name="local.footnote.mix">
    <notAllowed/>
  </define>
  <define name="footnote.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="linespecific.class"/>
      <ref name="synop.class"/>
      <ref name="para.class"/>
      <ref name="informal.class"/>
      <ref name="local.footnote.mix"/>
    </choice>
  </define>
  <define name="local.example.mix">
    <notAllowed/>
  </define>
  <define name="example.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="linespecific.class"/>
      <ref name="synop.class"/>
      <ref name="para.class"/>
      <ref name="informal.class"/>
      <ref name="ndxterm.class"/>
      <ref name="beginpage"/>
      <ref name="procedure"/>
      <ref name="forms.hook"/>
      <ref name="local.example.mix"/>
    </choice>
  </define>
  <define name="local.highlights.mix">
    <notAllowed/>
  </define>
  <define name="highlights.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="admon.class"/>
      <ref name="para.class"/>
      <ref name="ndxterm.class"/>
      <ref name="local.highlights.mix"/>
    </choice>
  </define>
  <!--
    %formal.class; is explicitly excluded from many contexts in which
    paragraphs are used
  -->
  <define name="local.para.mix">
    <notAllowed/>
  </define>
  <define name="para.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="admon.class"/>
      <ref name="linespecific.class"/>
      <ref name="informal.class"/>
      <ref name="formal.class"/>
      <ref name="local.para.mix"/>
    </choice>
  </define>
  <define name="local.admon.mix">
    <notAllowed/>
  </define>
  <define name="admon.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="linespecific.class"/>
      <ref name="synop.class"/>
      <ref name="para.class"/>
      <ref name="informal.class"/>
      <ref name="formal.class"/>
      <ref name="procedure"/>
      <ref name="sidebar"/>
      <ref name="anchor"/>
      <ref name="bridgehead"/>
      <ref name="remark"/>
      <ref name="ndxterm.class"/>
      <ref name="beginpage"/>
      <ref name="forms.hook"/>
      <ref name="local.admon.mix"/>
    </choice>
  </define>
  <define name="local.figure.mix">
    <notAllowed/>
  </define>
  <define name="figure.mix">
    <choice>
      <ref name="linespecific.class"/>
      <ref name="synop.class"/>
      <ref name="informal.class"/>
      <ref name="ndxterm.class"/>
      <ref name="beginpage"/>
      <ref name="forms.hook"/>
      <ref name="local.figure.mix"/>
    </choice>
  </define>
  <define name="local.tabentry.mix">
    <notAllowed/>
  </define>
  <define name="tabentry.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="admon.class"/>
      <ref name="linespecific.class"/>
      <ref name="para.class"/>
      <ref name="graphic"/>
      <ref name="mediaobject"/>
      <ref name="forms.hook"/>
      <ref name="local.tabentry.mix"/>
    </choice>
  </define>
  <define name="local.glossdef.mix">
    <notAllowed/>
  </define>
  <define name="glossdef.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="linespecific.class"/>
      <ref name="synop.class"/>
      <ref name="para.class"/>
      <ref name="informal.class"/>
      <ref name="formal.class"/>
      <ref name="remark"/>
      <ref name="ndxterm.class"/>
      <ref name="beginpage"/>
      <ref name="local.glossdef.mix"/>
    </choice>
  </define>
  <define name="local.legalnotice.mix">
    <notAllowed/>
  </define>
  <define name="legalnotice.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="admon.class"/>
      <ref name="linespecific.class"/>
      <ref name="para.class"/>
      <ref name="blockquote"/>
      <ref name="ndxterm.class"/>
      <ref name="beginpage"/>
      <ref name="local.legalnotice.mix"/>
    </choice>
  </define>
  <define name="local.textobject.mix">
    <notAllowed/>
  </define>
  <define name="textobject.mix">
    <choice>
      <ref name="list.class"/>
      <ref name="admon.class"/>
      <ref name="linespecific.class"/>
      <ref name="para.class"/>
      <ref name="blockquote"/>
      <ref name="local.textobject.mix"/>
    </choice>
  </define>
  <define name="local.mediaobject.mix">
    <notAllowed/>
  </define>
  <define name="mediaobject.mix">
    <choice>
      <ref name="videoobject"/>
      <ref name="audioobject"/>
      <ref name="imageobject"/>
      <ref name="imageobjectco"/>
      <ref name="textobject"/>
      <ref name="local.mediaobject.mix"/>
    </choice>
  </define>
  <define name="local.listpreamble.mix">
    <notAllowed/>
  </define>
  <define name="listpreamble.mix">
    <choice>
      <ref name="admon.class"/>
      <ref name="linespecific.class"/>
      <ref name="synop.class"/>
      <ref name="para.class"/>
      <ref name="informal.class"/>
      <ref name="genobj.class"/>
      <ref name="descobj.class"/>
      <ref name="ndxterm.class"/>
      <ref name="beginpage"/>
      <ref name="forms.hook"/>
      <ref name="local.listpreamble.mix"/>
    </choice>
  </define>
  <!-- Character-level mixtures ............................................. -->
  <!-- sgml.features -->
  <!-- not [sgml.features[ -->
  <!-- ]] not sgml.features -->
  <!--
                        #PCD xref word link cptr base dnfo othr inob (synop)
    para.char.mix         X    X    X    X    X    X    X    X    X
    title.char.mix        X    X    X    X    X    X    X    X    X
    ndxterm.char.mix      X    X    X    X    X    X    X    X    a
    cptr.char.mix         X              X    X    X         X    a
    smallcptr.char.mix    X                   b                   a
    word.char.mix         X         c    X         X         X    a
    docinfo.char.mix      X         d    X    b              X    a
    
    a. Just InlineGraphic; no InlineEquation.
    b. Just Replaceable; no other computer terms.
    c. Just Emphasis and Trademark; no other word elements.
    d. Just Acronym, Emphasis, and Trademark; no other word elements.
  -->
  <define name="local.para.char.mix">
    <notAllowed/>
  </define>
  <define name="para.char.mix">
    <choice>
      <text/>
      <ref name="xref.char.class"/>
      <ref name="gen.char.class"/>
      <ref name="link.char.class"/>
      <ref name="tech.char.class"/>
      <ref name="base.char.class"/>
      <ref name="docinfo.char.class"/>
      <ref name="other.char.class"/>
      <ref name="inlineobj.char.class"/>
      <ref name="synop.class"/>
      <ref name="ndxterm.class"/>
      <ref name="beginpage"/>
      <ref name="forminlines.hook"/>
      <ref name="local.para.char.mix"/>
    </choice>
  </define>
  <define name="local.title.char.mix">
    <notAllowed/>
  </define>
  <define name="title.char.mix">
    <choice>
      <text/>
      <ref name="xref.char.class"/>
      <ref name="gen.char.class"/>
      <ref name="link.char.class"/>
      <ref name="tech.char.class"/>
      <ref name="base.char.class"/>
      <ref name="docinfo.char.class"/>
      <ref name="other.char.class"/>
      <ref name="inlineobj.char.class"/>
      <ref name="ndxterm.class"/>
      <ref name="local.title.char.mix"/>
    </choice>
  </define>
  <define name="local.ndxterm.char.mix">
    <notAllowed/>
  </define>
  <define name="ndxterm.char.mix">
    <choice>
      <text/>
      <ref name="xref.char.class"/>
      <ref name="gen.char.class"/>
      <ref name="link.char.class"/>
      <ref name="tech.char.class"/>
      <ref name="base.char.class"/>
      <ref name="docinfo.char.class"/>
      <ref name="other.char.class"/>
      <ref name="inlinegraphic"/>
      <ref name="inlinemediaobject"/>
      <ref name="local.ndxterm.char.mix"/>
    </choice>
  </define>
  <define name="local.cptr.char.mix">
    <notAllowed/>
  </define>
  <define name="cptr.char.mix">
    <choice>
      <text/>
      <ref name="link.char.class"/>
      <ref name="tech.char.class"/>
      <ref name="base.char.class"/>
      <ref name="other.char.class"/>
      <ref name="inlinegraphic"/>
      <ref name="inlinemediaobject"/>
      <ref name="ndxterm.class"/>
      <ref name="beginpage"/>
      <ref name="local.cptr.char.mix"/>
    </choice>
  </define>
  <define name="local.smallcptr.char.mix">
    <notAllowed/>
  </define>
  <define name="smallcptr.char.mix">
    <choice>
      <text/>
      <ref name="replaceable"/>
      <ref name="inlinegraphic"/>
      <ref name="inlinemediaobject"/>
      <ref name="ndxterm.class"/>
      <ref name="beginpage"/>
      <ref name="local.smallcptr.char.mix"/>
    </choice>
  </define>
  <define name="local.word.char.mix">
    <notAllowed/>
  </define>
  <define name="word.char.mix">
    <choice>
      <text/>
      <ref name="acronym"/>
      <ref name="emphasis"/>
      <ref name="trademark"/>
      <ref name="link.char.class"/>
      <ref name="base.char.class"/>
      <ref name="other.char.class"/>
      <ref name="inlinegraphic"/>
      <ref name="inlinemediaobject"/>
      <ref name="ndxterm.class"/>
      <ref name="beginpage"/>
      <ref name="local.word.char.mix"/>
    </choice>
  </define>
  <define name="local.docinfo.char.mix">
    <notAllowed/>
  </define>
  <define name="docinfo.char.mix">
    <choice>
      <text/>
      <ref name="link.char.class"/>
      <ref name="emphasis"/>
      <ref name="trademark"/>
      <ref name="replaceable"/>
      <ref name="other.char.class"/>
      <ref name="inlinegraphic"/>
      <ref name="inlinemediaobject"/>
      <ref name="ndxterm.class"/>
      <ref name="local.docinfo.char.mix"/>
    </choice>
  </define>
  <!-- ENTITY % bibliocomponent.mix (see Bibliographic section, below) -->
  <!-- ENTITY % person.ident.mix (see Bibliographic section, below) -->
  <!-- ...................................................................... -->
  <!-- Entities for attributes and attribute components ..................... -->
  <!-- Effectivity attributes ............................................... -->
  <!--
    Arch: Computer or chip architecture to which element applies; no
    default
  -->
  <define name="arch.attrib">
    <optional>
      <attribute name="arch"/>
    </optional>
  </define>
  <!-- Condition: General-purpose effectivity attribute -->
  <define name="condition.attrib">
    <optional>
      <attribute name="condition"/>
    </optional>
  </define>
  <!-- Conformance: Standards conformance characteristics -->
  <define name="conformance.attrib">
    <optional>
      <attribute name="conformance">
        <data type="NMTOKENS"/>
      </attribute>
    </optional>
  </define>
  <!-- OS: Operating system to which element applies; no default -->
  <define name="os.attrib">
    <optional>
      <attribute name="os"/>
    </optional>
  </define>
  <!-- Revision: Editorial revision to which element belongs; no default -->
  <define name="revision.attrib">
    <optional>
      <attribute name="revision"/>
    </optional>
  </define>
  <!-- Security: Security classification; no default -->
  <define name="security.attrib">
    <optional>
      <attribute name="security"/>
    </optional>
  </define>
  <!--
    UserLevel: Level of user experience to which element applies; no
    default
  -->
  <define name="userlevel.attrib">
    <optional>
      <attribute name="userlevel"/>
    </optional>
  </define>
  <!-- Vendor: Computer vendor to which element applies; no default -->
  <define name="vendor.attrib">
    <optional>
      <attribute name="vendor"/>
    </optional>
  </define>
  <!-- Wordsize: Computer word size (32 bit, 64 bit, etc.); no default -->
  <define name="wordsize.attrib">
    <optional>
      <attribute name="wordsize"/>
    </optional>
  </define>
  <define name="local.effectivity.attrib">
    <empty/>
  </define>
  <define name="effectivity.attrib">
    <ref name="arch.attrib"/>
    <ref name="condition.attrib"/>
    <ref name="conformance.attrib"/>
    <ref name="os.attrib"/>
    <ref name="revision.attrib"/>
    <ref name="security.attrib"/>
    <ref name="userlevel.attrib"/>
    <ref name="vendor.attrib"/>
    <ref name="wordsize.attrib"/>
    <ref name="local.effectivity.attrib"/>
  </define>
  <!-- Common attributes .................................................... -->
  <!-- Id: Unique identifier of element; no default -->
  <define name="id.attrib">
    <optional>
      <attribute name="id">
        <data type="ID"/>
      </attribute>
    </optional>
  </define>
  <!--
    Id: Unique identifier of element; a value must be supplied; no
    default
  -->
  <define name="idreq.attrib">
    <attribute name="id">
      <data type="ID"/>
    </attribute>
  </define>
  <!--
    Lang: Indicator of language in which element is written, for
    translation, character set management, etc.; no default
  -->
  <define name="lang.attrib">
    <optional>
      <attribute name="lang"/>
    </optional>
  </define>
  <!-- Remap: Previous role of element before conversion; no default -->
  <define name="remap.attrib">
    <optional>
      <attribute name="remap"/>
    </optional>
  </define>
  <!-- Role: New role of element in local environment; no default -->
  <define name="role.attrib">
    <optional>
      <attribute name="role"/>
    </optional>
  </define>
  <!--
    XRefLabel: Alternate labeling string for XRef text generation;
    default is usually title or other appropriate label text already
    contained in element
  -->
  <define name="xreflabel.attrib">
    <optional>
      <attribute name="xreflabel"/>
    </optional>
  </define>
  <!--
    RevisionFlag: Revision status of element; default is that element
    wasn't revised
  -->
  <define name="revisionflag.attrib">
    <optional>
      <attribute name="revisionflag">
        <choice>
          <value>changed</value>
          <value>added</value>
          <value>deleted</value>
          <value>off</value>
        </choice>
      </attribute>
    </optional>
  </define>
  <define name="local.common.attrib">
    <empty/>
  </define>
  <!-- dir: Bidirectional override -->
  <define name="dir.attrib">
    <optional>
      <attribute name="dir">
        <choice>
          <value>ltr</value>
          <value>rtl</value>
          <value>lro</value>
          <value>rlo</value>
        </choice>
      </attribute>
    </optional>
  </define>
  <!-- xml:base: base URI -->
  <define name="xml-base.attrib">
    <optional>
      <attribute name="xml:base"/>
    </optional>
  </define>
  <!-- Role is included explicitly on each element -->
  <define name="common.attrib">
    <ref name="id.attrib"/>
    <ref name="lang.attrib"/>
    <ref name="remap.attrib"/>
    <ref name="xreflabel.attrib"/>
    <ref name="revisionflag.attrib"/>
    <ref name="effectivity.attrib"/>
    <ref name="dir.attrib"/>
    <ref name="xml-base.attrib"/>
    <ref name="local.common.attrib"/>
  </define>
  <!-- Role is included explicitly on each element -->
  <define name="idreq.common.attrib">
    <ref name="idreq.attrib"/>
    <ref name="lang.attrib"/>
    <ref name="remap.attrib"/>
    <ref name="xreflabel.attrib"/>
    <ref name="revisionflag.attrib"/>
    <ref name="effectivity.attrib"/>
    <ref name="dir.attrib"/>
    <ref name="xml-base.attrib"/>
    <ref name="local.common.attrib"/>
  </define>
  <!-- Semi-common attributes and other attribute entities .................. -->
  <define name="local.graphics.attrib">
    <empty/>
  </define>
  <!--
    EntityRef: Name of an external entity containing the content
    of the graphic
  -->
  <!--
    FileRef: Filename, qualified by a pathname if desired,
    designating the file containing the content of the graphic
  -->
  <!-- Format: Notation of the element content, if any -->
  <!-- SrcCredit: Information about the source of the Graphic -->
  <!-- Width: Same as CALS reprowid (desired width) -->
  <!-- Depth: Same as CALS reprodep (desired depth) -->
  <!--
    Align: Same as CALS hplace with 'none' removed; #IMPLIED means
    application-specific
  -->
  <!-- Scale: Conflation of CALS hscale and vscale -->
  <!-- Scalefit: Same as CALS scalefit -->
  <define name="graphics.attrib">
    <optional>
      <attribute name="entityref">
        <data type="ENTITY"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="fileref"/>
    </optional>
    <optional>
      <attribute name="format">
        <choice>
          <ref name="notation.class"/>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="srccredit"/>
    </optional>
    <optional>
      <attribute name="width"/>
    </optional>
    <optional>
      <attribute name="contentwidth"/>
    </optional>
    <optional>
      <attribute name="depth"/>
    </optional>
    <optional>
      <attribute name="contentdepth"/>
    </optional>
    <optional>
      <attribute name="align">
        <choice>
          <value>left</value>
          <value>right</value>
          <value>center</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="valign">
        <choice>
          <value>top</value>
          <value>middle</value>
          <value>bottom</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="scale"/>
    </optional>
    <optional>
      <attribute name="scalefit">
        <ref name="yesorno.attvals"/>
      </attribute>
    </optional>
    <ref name="local.graphics.attrib"/>
  </define>
  <define name="local.keyaction.attrib">
    <empty/>
  </define>
  <!--
    Action: Key combination type; default is unspecified if one
    child element, Simul if there is more than one; if value is
    Other, the OtherAction attribute must have a nonempty value
  -->
  <!-- OtherAction: User-defined key combination type -->
  <define name="keyaction.attrib">
    <optional>
      <attribute name="action">
        <choice>
          <value>click</value>
          <value>double-click</value>
          <value>press</value>
          <value>seq</value>
          <value>simul</value>
          <value>other</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="otheraction"/>
    </optional>
    <ref name="local.keyaction.attrib"/>
  </define>
  <!--
    Label: Identifying number or string; default is usually the
    appropriate number or string autogenerated by a formatter
  -->
  <define name="label.attrib">
    <optional>
      <attribute name="label"/>
    </optional>
  </define>
  <!-- xml:space: whitespace treatment -->
  <define name="xml-space.attrib">
    <optional>
      <attribute name="xml:space">
        <choice>
          <value>preserve</value>
        </choice>
      </attribute>
    </optional>
  </define>
  <!--
    Format: whether element is assumed to contain significant white
    space
  -->
  <define name="linespecific.attrib">
    <optional>
      <attribute name="format" a:defaultValue="linespecific">
        <choice>
          <value>linespecific</value>
        </choice>
      </attribute>
    </optional>
    <ref name="xml-space.attrib"/>
    <optional>
      <attribute name="linenumbering">
        <choice>
          <value>numbered</value>
          <value>unnumbered</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="continuation">
        <choice>
          <value>continues</value>
          <value>restarts</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="startinglinenumber"/>
    </optional>
    <optional>
      <attribute name="language"/>
    </optional>
  </define>
  <!-- Linkend: link to related information; no default -->
  <define name="linkend.attrib">
    <optional>
      <attribute name="linkend">
        <data type="IDREF"/>
      </attribute>
    </optional>
  </define>
  <!-- Linkend: required link to related information -->
  <define name="linkendreq.attrib">
    <attribute name="linkend">
      <data type="IDREF"/>
    </attribute>
  </define>
  <!--
    Linkends: link to one or more sets of related information; no
    default
  -->
  <define name="linkends.attrib">
    <optional>
      <attribute name="linkends">
        <data type="IDREFS"/>
      </attribute>
    </optional>
  </define>
  <define name="local.mark.attrib">
    <empty/>
  </define>
  <define name="mark.attrib">
    <optional>
      <attribute name="mark"/>
    </optional>
    <ref name="local.mark.attrib"/>
  </define>
  <!-- MoreInfo: whether element's content has an associated RefEntry -->
  <define name="moreinfo.attrib">
    <optional>
      <attribute name="moreinfo" a:defaultValue="none">
        <choice>
          <value>refentry</value>
          <value>none</value>
        </choice>
      </attribute>
    </optional>
  </define>
  <!-- Pagenum: number of page on which element appears; no default -->
  <define name="pagenum.attrib">
    <optional>
      <attribute name="pagenum"/>
    </optional>
  </define>
  <define name="local.status.attrib">
    <empty/>
  </define>
  <!--
    Status: Editorial or publication status of the element
    it applies to, such as "in review" or "approved for distribution"
  -->
  <define name="status.attrib">
    <optional>
      <attribute name="status"/>
    </optional>
    <ref name="local.status.attrib"/>
  </define>
  <!--
    Width: width of the longest line in the element to which it
    pertains, in number of characters
  -->
  <define name="width.attrib">
    <optional>
      <attribute name="width"/>
    </optional>
  </define>
  <!-- ...................................................................... -->
  <!-- Title elements ....................................................... -->
  <define name="local.title.attrib">
    <empty/>
  </define>
  <define name="title.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The text of the title of a section of a document or of a formal block-level element. -->
  <define name="title">
    <element name="title">
      <ref name="title.attlist"/>
      <zeroOrMore>
        <ref name="title.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of title.element -->
  <define name="title.attlist" combine="interleave">
    <ref name="pagenum.attrib"/>
    <ref name="common.attrib"/>
    <ref name="title.role.attrib"/>
    <ref name="local.title.attrib"/>
  </define>
  <!-- end of title.attlist -->
  <!-- end of title.module -->
  <define name="local.titleabbrev.attrib">
    <empty/>
  </define>
  <define name="titleabbrev.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The abbreviation of a Title. -->
  <define name="titleabbrev">
    <element name="titleabbrev">
      <ref name="titleabbrev.attlist"/>
      <zeroOrMore>
        <ref name="title.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of titleabbrev.element -->
  <define name="titleabbrev.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="titleabbrev.role.attrib"/>
    <ref name="local.titleabbrev.attrib"/>
  </define>
  <!-- end of titleabbrev.attlist -->
  <!-- end of titleabbrev.module -->
  <define name="local.subtitle.attrib">
    <empty/>
  </define>
  <define name="subtitle.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The subtitle of a document. -->
  <define name="subtitle">
    <element name="subtitle">
      <ref name="subtitle.attlist"/>
      <zeroOrMore>
        <ref name="title.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of subtitle.element -->
  <define name="subtitle.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="subtitle.role.attrib"/>
    <ref name="local.subtitle.attrib"/>
  </define>
  <!-- end of subtitle.attlist -->
  <!-- end of subtitle.module -->
  <!-- ...................................................................... -->
  <!-- Bibliographic entities and elements .................................. -->
  <!--
    The bibliographic elements are typically used in the document
    hierarchy. They do not appear in content models of information
    pool elements.  See also the document information elements,
    below.
  -->
  <define name="local.person.ident.mix">
    <notAllowed/>
  </define>
  <define name="person.ident.mix">
    <choice>
      <ref name="honorific"/>
      <ref name="firstname"/>
      <ref name="surname"/>
      <ref name="lineage"/>
      <ref name="othername"/>
      <ref name="affiliation"/>
      <ref name="authorblurb"/>
      <ref name="contrib"/>
      <ref name="local.person.ident.mix"/>
    </choice>
  </define>
  <define name="local.bibliocomponent.mix">
    <notAllowed/>
  </define>
  <define name="bibliocomponent.mix">
    <choice>
      <ref name="abbrev"/>
      <ref name="abstract"/>
      <ref name="address"/>
      <ref name="artpagenums"/>
      <ref name="author"/>
      <ref name="authorgroup"/>
      <ref name="authorinitials"/>
      <ref name="bibliomisc"/>
      <ref name="biblioset"/>
      <ref name="collab"/>
      <ref name="confgroup"/>
      <ref name="contractnum"/>
      <ref name="contractsponsor"/>
      <ref name="copyright"/>
      <ref name="corpauthor"/>
      <ref name="corpname"/>
      <ref name="corpcredit"/>
      <ref name="date"/>
      <ref name="edition"/>
      <ref name="editor"/>
      <ref name="invpartnumber"/>
      <ref name="isbn"/>
      <ref name="issn"/>
      <ref name="issuenum"/>
      <ref name="orgname"/>
      <ref name="biblioid"/>
      <ref name="citebiblioid"/>
      <ref name="bibliosource"/>
      <ref name="bibliorelation"/>
      <ref name="bibliocoverage"/>
      <ref name="othercredit"/>
      <ref name="pagenums"/>
      <ref name="printhistory"/>
      <ref name="productname"/>
      <ref name="productnumber"/>
      <ref name="pubdate"/>
      <ref name="publisher"/>
      <ref name="publishername"/>
      <ref name="pubsnumber"/>
      <ref name="releaseinfo"/>
      <ref name="revhistory"/>
      <ref name="seriesvolnums"/>
      <ref name="subtitle"/>
      <ref name="title"/>
      <ref name="titleabbrev"/>
      <ref name="volumenum"/>
      <ref name="citetitle"/>
      <ref name="personname"/>
      <ref name="person.ident.mix"/>
      <ref name="ndxterm.class"/>
      <ref name="local.bibliocomponent.mix"/>
    </choice>
  </define>
  <!-- I don't think this is well placed, but it needs to be here because of -->
  <!-- the reference to bibliocomponent.mix -->
  <define name="local.info.class">
    <notAllowed/>
  </define>
  <define name="info.class">
    <choice>
      <ref name="graphic"/>
      <ref name="mediaobject"/>
      <ref name="legalnotice"/>
      <ref name="modespec"/>
      <ref name="subjectset"/>
      <ref name="keywordset"/>
      <ref name="itermset"/>
      <ref name="bibliocomponent.mix"/>
      <ref name="local.info.class"/>
    </choice>
  </define>
  <!-- BiblioList ........................ -->
  <define name="local.bibliolist.attrib">
    <empty/>
  </define>
  <define name="bibliolist.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for a set of bibliography entries. -->
  <define name="bibliolist">
    <element name="bibliolist">
      <ref name="bibliolist.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <oneOrMore>
        <choice>
          <ref name="biblioentry"/>
          <ref name="bibliomixed"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of bibliolist.element -->
  <define name="bibliolist.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="bibliolist.role.attrib"/>
    <ref name="local.bibliolist.attrib"/>
  </define>
  <!-- end of bibliolist.attlist -->
  <!-- end of bibliolist.module -->
  <define name="local.biblioentry.attrib">
    <empty/>
  </define>
  <define name="biblioentry.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An entry in a Bibliography. -->
  <define name="biblioentry">
    <element name="biblioentry">
      <ref name="biblioentry.attlist"/>
      <oneOrMore>
        <choice>
          <ref name="articleinfo"/>
          <ref name="bibliocomponent.mix"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of biblioentry.element -->
  <define name="biblioentry.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="biblioentry.role.attrib"/>
    <ref name="local.biblioentry.attrib"/>
  </define>
  <!-- end of biblioentry.attlist -->
  <!-- end of biblioentry.module -->
  <define name="local.bibliomixed.attrib">
    <empty/>
  </define>
  <define name="bibliomixed.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An entry in a Bibliography. -->
  <define name="bibliomixed">
    <element name="bibliomixed">
      <ref name="bibliomixed.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="bibliocomponent.mix"/>
          <ref name="bibliomset"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of bibliomixed.element -->
  <define name="bibliomixed.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="bibliomixed.role.attrib"/>
    <ref name="local.bibliomixed.attrib"/>
  </define>
  <!-- end of bibliomixed.attlist -->
  <!-- end of bibliomixed.module -->
  <define name="local.articleinfo.attrib">
    <empty/>
  </define>
  <define name="articleinfo.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Meta-information for an Article. -->
  <define name="articleinfo">
    <element name="articleinfo">
      <ref name="articleinfo.attlist"/>
      <oneOrMore>
        <ref name="info.class"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of articleinfo.element -->
  <define name="articleinfo.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="articleinfo.role.attrib"/>
    <ref name="local.articleinfo.attrib"/>
  </define>
  <!-- end of articleinfo.attlist -->
  <!-- end of articleinfo.module -->
  <define name="local.biblioset.attrib">
    <empty/>
  </define>
  <define name="biblioset.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A "raw" container for related bibliographic information. -->
  <define name="biblioset">
    <element name="biblioset">
      <ref name="biblioset.attlist"/>
      <oneOrMore>
        <ref name="bibliocomponent.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of biblioset.element -->
  <!-- Relation: Relationship of elements contained within BiblioSet -->
  <define name="biblioset.attlist" combine="interleave">
    <optional>
      <attribute name="relation"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="biblioset.role.attrib"/>
    <ref name="local.biblioset.attrib"/>
  </define>
  <!-- end of biblioset.attlist -->
  <!-- end of biblioset.module -->
  <define name="bibliomset.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <define name="local.bibliomset.attrib">
    <empty/>
  </define>
  <!-- doc:A "cooked" container for related bibliographic information. -->
  <define name="bibliomset">
    <element name="bibliomset">
      <ref name="bibliomset.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="bibliocomponent.mix"/>
          <ref name="bibliomset"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of bibliomset.element -->
  <!-- Relation: Relationship of elements contained within BiblioMSet -->
  <define name="bibliomset.attlist" combine="interleave">
    <optional>
      <attribute name="relation"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="bibliomset.role.attrib"/>
    <ref name="local.bibliomset.attrib"/>
  </define>
  <!-- end of bibliomset.attlist -->
  <!-- end of bibliomset.module -->
  <define name="local.bibliomisc.attrib">
    <empty/>
  </define>
  <define name="bibliomisc.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Untyped bibliographic information. -->
  <define name="bibliomisc">
    <element name="bibliomisc">
      <ref name="bibliomisc.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of bibliomisc.element -->
  <define name="bibliomisc.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="bibliomisc.role.attrib"/>
    <ref name="local.bibliomisc.attrib"/>
  </define>
  <!-- end of bibliomisc.attlist -->
  <!-- end of bibliomisc.module -->
  <!-- ...................................................................... -->
  <!-- Subject, Keyword, and ITermSet elements .............................. -->
  <define name="local.subjectset.attrib">
    <empty/>
  </define>
  <define name="subjectset.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A set of terms describing the subject matter of a document. -->
  <define name="subjectset">
    <element name="subjectset">
      <ref name="subjectset.attlist"/>
      <oneOrMore>
        <ref name="subject"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of subjectset.element -->
  <!-- Scheme: Controlled vocabulary employed in SubjectTerms -->
  <define name="subjectset.attlist" combine="interleave">
    <optional>
      <attribute name="scheme">
        <data type="NMTOKEN"/>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="subjectset.role.attrib"/>
    <ref name="local.subjectset.attrib"/>
  </define>
  <!-- end of subjectset.attlist -->
  <!-- end of subjectset.module -->
  <define name="local.subject.attrib">
    <empty/>
  </define>
  <define name="subject.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:One of a group of terms describing the subject matter of a document. -->
  <define name="subject">
    <element name="subject">
      <ref name="subject.attlist"/>
      <oneOrMore>
        <ref name="subjectterm"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of subject.element -->
  <!--
    Weight: Ranking of this group of SubjectTerms relative
    to others, 0 is low, no highest value specified
  -->
  <define name="subject.attlist" combine="interleave">
    <optional>
      <attribute name="weight"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="subject.role.attrib"/>
    <ref name="local.subject.attrib"/>
  </define>
  <!-- end of subject.attlist -->
  <!-- end of subject.module -->
  <define name="local.subjectterm.attrib">
    <empty/>
  </define>
  <define name="subjectterm.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A term in a group of terms describing the subject matter of a document. -->
  <define name="subjectterm">
    <element name="subjectterm">
      <ref name="subjectterm.attlist"/>
      <text/>
    </element>
  </define>
  <!-- end of subjectterm.element -->
  <define name="subjectterm.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="subjectterm.role.attrib"/>
    <ref name="local.subjectterm.attrib"/>
  </define>
  <!-- end of subjectterm.attlist -->
  <!-- end of subjectterm.module -->
  <!-- end of subjectset.content.module -->
  <define name="local.keywordset.attrib">
    <empty/>
  </define>
  <define name="keywordset.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A set of keywords describing the content of a document. -->
  <define name="keywordset">
    <element name="keywordset">
      <ref name="keywordset.attlist"/>
      <oneOrMore>
        <ref name="keyword"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of keywordset.element -->
  <define name="keywordset.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="keywordset.role.attrib"/>
    <ref name="local.keywordset.attrib"/>
  </define>
  <!-- end of keywordset.attlist -->
  <!-- end of keywordset.module -->
  <define name="local.keyword.attrib">
    <empty/>
  </define>
  <define name="keyword.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:One of a set of keywords describing the content of a document. -->
  <define name="keyword">
    <element name="keyword">
      <ref name="keyword.attlist"/>
      <text/>
    </element>
  </define>
  <!-- end of keyword.element -->
  <define name="keyword.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="keyword.role.attrib"/>
    <ref name="local.keyword.attrib"/>
  </define>
  <!-- end of keyword.attlist -->
  <!-- end of keyword.module -->
  <!-- end of keywordset.content.module -->
  <define name="local.itermset.attrib">
    <empty/>
  </define>
  <define name="itermset.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A set of index terms in the meta-information of a document. -->
  <define name="itermset">
    <element name="itermset">
      <ref name="itermset.attlist"/>
      <oneOrMore>
        <ref name="indexterm"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of itermset.element -->
  <define name="itermset.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="itermset.role.attrib"/>
    <ref name="local.itermset.attrib"/>
  </define>
  <!-- end of itermset.attlist -->
  <!-- end of itermset.module -->
  <!-- Bibliographic info for "blocks" -->
  <define name="local.blockinfo.attrib">
    <empty/>
  </define>
  <define name="blockinfo.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Meta-information for a block element. -->
  <define name="blockinfo">
    <element name="blockinfo">
      <ref name="blockinfo.attlist"/>
      <oneOrMore>
        <ref name="info.class"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of blockinfo.element -->
  <define name="blockinfo.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="blockinfo.role.attrib"/>
    <ref name="local.blockinfo.attrib"/>
  </define>
  <!-- end of blockinfo.attlist -->
  <!-- end of blockinfo.module -->
  <!-- ...................................................................... -->
  <!-- Compound (section-ish) elements ...................................... -->
  <!-- Message set ...................... -->
  <define name="local.msgset.attrib">
    <empty/>
  </define>
  <define name="msgset.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A detailed set of messages, usually error messages. -->
  <define name="msgset">
    <element name="msgset">
      <ref name="msgset.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <choice>
        <oneOrMore>
          <ref name="msgentry"/>
        </oneOrMore>
        <oneOrMore>
          <ref name="simplemsgentry"/>
        </oneOrMore>
      </choice>
    </element>
  </define>
  <!-- end of msgset.element -->
  <define name="msgset.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="msgset.role.attrib"/>
    <ref name="local.msgset.attrib"/>
  </define>
  <!-- end of msgset.attlist -->
  <!-- end of msgset.module -->
  <define name="local.msgentry.attrib">
    <empty/>
  </define>
  <define name="msgentry.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for an entry in a message set. -->
  <define name="msgentry">
    <element name="msgentry">
      <ref name="msgentry.attlist"/>
      <oneOrMore>
        <ref name="msg"/>
      </oneOrMore>
      <optional>
        <ref name="msginfo"/>
      </optional>
      <zeroOrMore>
        <ref name="msgexplan"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of msgentry.element -->
  <define name="msgentry.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="msgentry.role.attrib"/>
    <ref name="local.msgentry.attrib"/>
  </define>
  <!-- end of msgentry.attlist -->
  <!-- end of msgentry.module -->
  <define name="local.simplemsgentry.attrib">
    <empty/>
  </define>
  <define name="simplemsgentry.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for a simpler entry in a message set. -->
  <define name="simplemsgentry">
    <element name="simplemsgentry">
      <ref name="simplemsgentry.attlist"/>
      <ref name="msgtext"/>
      <oneOrMore>
        <ref name="msgexplan"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of simplemsgentry.element -->
  <define name="simplemsgentry.attlist" combine="interleave">
    <optional>
      <attribute name="audience"/>
    </optional>
    <optional>
      <attribute name="level"/>
    </optional>
    <optional>
      <attribute name="origin"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="simplemsgentry.role.attrib"/>
    <ref name="local.simplemsgentry.attrib"/>
  </define>
  <!-- end of simplemsgentry.attlist -->
  <!-- end of simplemsgentry.module -->
  <define name="local.msg.attrib">
    <empty/>
  </define>
  <define name="msg.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A message in a message set. -->
  <define name="msg">
    <element name="msg">
      <ref name="msg.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <ref name="msgmain"/>
      <zeroOrMore>
        <choice>
          <ref name="msgsub"/>
          <ref name="msgrel"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of msg.element -->
  <define name="msg.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="msg.role.attrib"/>
    <ref name="local.msg.attrib"/>
  </define>
  <!-- end of msg.attlist -->
  <!-- end of msg.module -->
  <define name="local.msgmain.attrib">
    <empty/>
  </define>
  <define name="msgmain.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The primary component of a message in a message set. -->
  <define name="msgmain">
    <element name="msgmain">
      <ref name="msgmain.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <ref name="msgtext"/>
    </element>
  </define>
  <!-- end of msgmain.element -->
  <define name="msgmain.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="msgmain.role.attrib"/>
    <ref name="local.msgmain.attrib"/>
  </define>
  <!-- end of msgmain.attlist -->
  <!-- end of msgmain.module -->
  <define name="local.msgsub.attrib">
    <empty/>
  </define>
  <define name="msgsub.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A subcomponent of a message in a message set. -->
  <define name="msgsub">
    <element name="msgsub">
      <ref name="msgsub.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <ref name="msgtext"/>
    </element>
  </define>
  <!-- end of msgsub.element -->
  <define name="msgsub.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="msgsub.role.attrib"/>
    <ref name="local.msgsub.attrib"/>
  </define>
  <!-- end of msgsub.attlist -->
  <!-- end of msgsub.module -->
  <define name="local.msgrel.attrib">
    <empty/>
  </define>
  <define name="msgrel.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A related component of a message in a message set. -->
  <define name="msgrel">
    <element name="msgrel">
      <ref name="msgrel.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <ref name="msgtext"/>
    </element>
  </define>
  <!-- end of msgrel.element -->
  <define name="msgrel.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="msgrel.role.attrib"/>
    <ref name="local.msgrel.attrib"/>
  </define>
  <!-- end of msgrel.attlist -->
  <!-- end of msgrel.module -->
  <!--  MsgText (defined in the Inlines section, below) -->
  <define name="local.msginfo.attrib">
    <empty/>
  </define>
  <define name="msginfo.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Information about a message in a message set. -->
  <define name="msginfo">
    <element name="msginfo">
      <ref name="msginfo.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="msglevel"/>
          <ref name="msgorig"/>
          <ref name="msgaud"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of msginfo.element -->
  <define name="msginfo.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="msginfo.role.attrib"/>
    <ref name="local.msginfo.attrib"/>
  </define>
  <!-- end of msginfo.attlist -->
  <!-- end of msginfo.module -->
  <define name="local.msglevel.attrib">
    <empty/>
  </define>
  <define name="msglevel.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The level of importance or severity of a message in a message set. -->
  <define name="msglevel">
    <element name="msglevel">
      <ref name="msglevel.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of msglevel.element -->
  <define name="msglevel.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="msglevel.role.attrib"/>
    <ref name="local.msglevel.attrib"/>
  </define>
  <!-- end of msglevel.attlist -->
  <!-- end of msglevel.module -->
  <define name="local.msgorig.attrib">
    <empty/>
  </define>
  <define name="msgorig.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The origin of a message in a message set. -->
  <define name="msgorig">
    <element name="msgorig">
      <ref name="msgorig.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of msgorig.element -->
  <define name="msgorig.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="msgorig.role.attrib"/>
    <ref name="local.msgorig.attrib"/>
  </define>
  <!-- end of msgorig.attlist -->
  <!-- end of msgorig.module -->
  <define name="local.msgaud.attrib">
    <empty/>
  </define>
  <define name="msgaud.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The audience to which a message in a message set is relevant. -->
  <define name="msgaud">
    <element name="msgaud">
      <ref name="msgaud.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of msgaud.element -->
  <define name="msgaud.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="msgaud.role.attrib"/>
    <ref name="local.msgaud.attrib"/>
  </define>
  <!-- end of msgaud.attlist -->
  <!-- end of msgaud.module -->
  <define name="local.msgexplan.attrib">
    <empty/>
  </define>
  <define name="msgexplan.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Explanatory material relating to a message in a message set. -->
  <define name="msgexplan">
    <element name="msgexplan">
      <ref name="msgexplan.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <oneOrMore>
        <ref name="component.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of msgexplan.element -->
  <define name="msgexplan.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="msgexplan.role.attrib"/>
    <ref name="local.msgexplan.attrib"/>
  </define>
  <!-- end of msgexplan.attlist -->
  <!-- end of msgexplan.module -->
  <!-- end of msgset.content.module -->
  <define name="local.task.attrib">
    <empty/>
  </define>
  <define name="task.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A task to be completed. -->
  <define name="task">
    <element name="task">
      <ref name="task.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <zeroOrMore>
        <ref name="ndxterm.class"/>
      </zeroOrMore>
      <ref name="formalobject.title.content"/>
      <optional>
        <ref name="tasksummary"/>
      </optional>
      <optional>
        <ref name="taskprerequisites"/>
      </optional>
      <ref name="procedure"/>
      <zeroOrMore>
        <ref name="example"/>
      </zeroOrMore>
      <optional>
        <ref name="taskrelated"/>
      </optional>
    </element>
  </define>
  <!-- end of task.element -->
  <define name="task.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="task.role.attrib"/>
    <ref name="local.task.attrib"/>
  </define>
  <!-- end of task.attlist -->
  <!-- end of task.module -->
  <define name="local.tasksummary.attrib">
    <empty/>
  </define>
  <define name="tasksummary.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A summary of a task. -->
  <define name="tasksummary">
    <element name="tasksummary">
      <ref name="tasksummary.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <oneOrMore>
        <ref name="component.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of tasksummary.element -->
  <define name="tasksummary.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="tasksummary.role.attrib"/>
    <ref name="local.tasksummary.attrib"/>
  </define>
  <!-- end of tasksummary.attlist -->
  <!-- end of tasksummary.module -->
  <define name="local.taskprerequisites.attrib">
    <empty/>
  </define>
  <define name="taskprerequisites.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The prerequisites for a task. -->
  <define name="taskprerequisites">
    <element name="taskprerequisites">
      <ref name="taskprerequisites.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <oneOrMore>
        <ref name="component.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of taskprerequisites.element -->
  <define name="taskprerequisites.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="taskprerequisites.role.attrib"/>
    <ref name="local.taskprerequisites.attrib"/>
  </define>
  <!-- end of taskprerequisites.attlist -->
  <!-- end of taskprerequisites.module -->
  <define name="local.taskrelated.attrib">
    <empty/>
  </define>
  <define name="taskrelated.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Information related to a task. -->
  <define name="taskrelated">
    <element name="taskrelated">
      <ref name="taskrelated.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <oneOrMore>
        <ref name="component.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of taskrelated.element -->
  <define name="taskrelated.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="taskrelated.role.attrib"/>
    <ref name="local.taskrelated.attrib"/>
  </define>
  <!-- end of taskrelated.attlist -->
  <!-- end of taskrelated.module -->
  <!-- end of task.content.module -->
  <!-- QandASet ........................ -->
  <define name="local.qandaset.attrib">
    <empty/>
  </define>
  <define name="qandaset.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A question-and-answer set. -->
  <define name="qandaset">
    <element name="qandaset">
      <ref name="qandaset.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <zeroOrMore>
        <ref name="qandaset.mix"/>
      </zeroOrMore>
      <choice>
        <oneOrMore>
          <ref name="qandadiv"/>
        </oneOrMore>
        <oneOrMore>
          <ref name="qandaentry"/>
        </oneOrMore>
      </choice>
    </element>
  </define>
  <!-- end of qandaset.element -->
  <define name="qandaset.attlist" combine="interleave">
    <optional>
      <attribute name="defaultlabel">
        <choice>
          <value>qanda</value>
          <value>number</value>
          <value>none</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="qandaset.role.attrib"/>
    <ref name="local.qandaset.attrib"/>
  </define>
  <!-- end of qandaset.attlist -->
  <!-- end of qandaset.module -->
  <define name="local.qandadiv.attrib">
    <empty/>
  </define>
  <define name="qandadiv.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A titled division in a QandASet. -->
  <define name="qandadiv">
    <element name="qandadiv">
      <ref name="qandadiv.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <zeroOrMore>
        <ref name="qandaset.mix"/>
      </zeroOrMore>
      <choice>
        <oneOrMore>
          <ref name="qandadiv"/>
        </oneOrMore>
        <oneOrMore>
          <ref name="qandaentry"/>
        </oneOrMore>
      </choice>
    </element>
  </define>
  <!-- end of qandadiv.element -->
  <define name="qandadiv.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="qandadiv.role.attrib"/>
    <ref name="local.qandadiv.attrib"/>
  </define>
  <!-- end of qandadiv.attlist -->
  <!-- end of qandadiv.module -->
  <define name="local.qandaentry.attrib">
    <empty/>
  </define>
  <define name="qandaentry.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A question/answer set within a QandASet. -->
  <define name="qandaentry">
    <element name="qandaentry">
      <ref name="qandaentry.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="revhistory"/>
      </optional>
      <ref name="question"/>
      <zeroOrMore>
        <ref name="answer"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of qandaentry.element -->
  <define name="qandaentry.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="qandaentry.role.attrib"/>
    <ref name="local.qandaentry.attrib"/>
  </define>
  <!-- end of qandaentry.attlist -->
  <!-- end of qandaentry.module -->
  <define name="local.question.attrib">
    <empty/>
  </define>
  <define name="question.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A question in a QandASet. -->
  <define name="question">
    <element name="question">
      <ref name="question.attlist"/>
      <optional>
        <ref name="label"/>
      </optional>
      <oneOrMore>
        <ref name="qandaset.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of question.element -->
  <define name="question.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="question.role.attrib"/>
    <ref name="local.question.attrib"/>
  </define>
  <!-- end of question.attlist -->
  <!-- end of question.module -->
  <define name="local.answer.attrib">
    <empty/>
  </define>
  <define name="answer.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An answer to a question posed in a QandASet. -->
  <define name="answer">
    <element name="answer">
      <ref name="answer.attlist"/>
      <optional>
        <ref name="label"/>
      </optional>
      <zeroOrMore>
        <ref name="qandaset.mix"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="qandaentry"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of answer.element -->
  <define name="answer.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="answer.role.attrib"/>
    <ref name="local.answer.attrib"/>
  </define>
  <!-- end of answer.attlist -->
  <!-- end of answer.module -->
  <define name="local.label.attrib">
    <empty/>
  </define>
  <define name="label.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A label on a Question or Answer. -->
  <define name="label">
    <element name="label">
      <ref name="label.attlist"/>
      <zeroOrMore>
        <ref name="word.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of label.element -->
  <define name="label.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="label.role.attrib"/>
    <ref name="local.label.attrib"/>
  </define>
  <!-- end of label.attlist -->
  <!-- end of label.module -->
  <!-- end of qandaset.content.module -->
  <!-- Procedure ........................ -->
  <define name="local.procedure.attrib">
    <empty/>
  </define>
  <define name="procedure.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A list of operations to be performed in a well-defined sequence. -->
  <define name="procedure">
    <element name="procedure">
      <ref name="procedure.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <zeroOrMore>
        <ref name="component.mix"/>
      </zeroOrMore>
      <oneOrMore>
        <ref name="step"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of procedure.element -->
  <define name="procedure.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="procedure.role.attrib"/>
    <ref name="local.procedure.attrib"/>
  </define>
  <!-- end of procedure.attlist -->
  <!-- end of procedure.module -->
  <define name="local.step.attrib">
    <empty/>
  </define>
  <define name="step.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A unit of action in a procedure. -->
  <define name="step">
    <element name="step">
      <ref name="step.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <choice>
        <group>
          <oneOrMore>
            <ref name="component.mix"/>
          </oneOrMore>
          <optional>
            <choice>
              <ref name="substeps"/>
              <ref name="stepalternatives"/>
            </choice>
            <zeroOrMore>
              <ref name="component.mix"/>
            </zeroOrMore>
          </optional>
        </group>
        <group>
          <choice>
            <ref name="substeps"/>
            <ref name="stepalternatives"/>
          </choice>
          <zeroOrMore>
            <ref name="component.mix"/>
          </zeroOrMore>
        </group>
      </choice>
    </element>
  </define>
  <!-- end of step.element -->
  <!-- Performance: Whether the Step must be performed -->
  <!-- not #REQUIRED! -->
  <define name="step.attlist" combine="interleave">
    <optional>
      <attribute name="performance" a:defaultValue="required">
        <choice>
          <value>optional</value>
          <value>required</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="step.role.attrib"/>
    <ref name="local.step.attrib"/>
  </define>
  <!-- end of step.attlist -->
  <!-- end of step.module -->
  <define name="local.substeps.attrib">
    <empty/>
  </define>
  <define name="substeps.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for steps that occur within steps in a procedure. -->
  <define name="substeps">
    <element name="substeps">
      <ref name="substeps.attlist"/>
      <oneOrMore>
        <ref name="step"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of substeps.element -->
  <!-- Performance: whether entire set of substeps must be performed -->
  <!-- not #REQUIRED! -->
  <define name="substeps.attlist" combine="interleave">
    <optional>
      <attribute name="performance" a:defaultValue="required">
        <choice>
          <value>optional</value>
          <value>required</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="substeps.role.attrib"/>
    <ref name="local.substeps.attrib"/>
  </define>
  <!-- end of substeps.attlist -->
  <!-- end of substeps.module -->
  <define name="local.stepalternatives.attrib">
    <empty/>
  </define>
  <define name="stepalternatives.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Alternative steps in a procedure. -->
  <define name="stepalternatives">
    <element name="stepalternatives">
      <ref name="stepalternatives.attlist"/>
      <oneOrMore>
        <ref name="step"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of stepalternatives.element -->
  <!-- Performance: Whether (one of) the alternatives must be performed -->
  <!-- not #REQUIRED! -->
  <define name="stepalternatives.attlist" combine="interleave">
    <optional>
      <attribute name="performance" a:defaultValue="required">
        <choice>
          <value>optional</value>
          <value>required</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="stepalternatives.role.attrib"/>
    <ref name="local.stepalternatives.attrib"/>
  </define>
  <!-- end of stepalternatives.attlist -->
  <!-- end of stepalternatives.module -->
  <!-- end of procedure.content.module -->
  <!-- Sidebar .......................... -->
  <define name="local.sidebarinfo.attrib">
    <empty/>
  </define>
  <define name="sidebarinfo.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Meta-information for a Sidebar. -->
  <define name="sidebarinfo">
    <element name="sidebarinfo">
      <ref name="sidebarinfo.attlist"/>
      <oneOrMore>
        <ref name="info.class"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of sidebarinfo.element -->
  <define name="sidebarinfo.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="sidebarinfo.role.attrib"/>
    <ref name="local.sidebarinfo.attrib"/>
  </define>
  <!-- end of sidebarinfo.attlist -->
  <!-- end of sidebarinfo.module -->
  <define name="local.sidebar.attrib">
    <empty/>
  </define>
  <define name="sidebar.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A portion of a document that is isolated from the main narrative flow. -->
  <define name="sidebar">
    <element name="sidebar">
      <ref name="sidebar.attlist"/>
      <optional>
        <ref name="sidebarinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <oneOrMore>
        <ref name="sidebar.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of sidebar.element -->
  <define name="sidebar.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="sidebar.role.attrib"/>
    <ref name="local.sidebar.attrib"/>
  </define>
  <!-- end of sidebar.attlist -->
  <!-- end of sidebar.module -->
  <!-- end of sidebar.content.model -->
  <!-- ...................................................................... -->
  <!-- Paragraph-related elements ........................................... -->
  <define name="local.abstract.attrib">
    <empty/>
  </define>
  <define name="abstract.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A summary. -->
  <define name="abstract">
    <element name="abstract">
      <ref name="abstract.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <oneOrMore>
        <ref name="para.class"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of abstract.element -->
  <define name="abstract.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="abstract.role.attrib"/>
    <ref name="local.abstract.attrib"/>
  </define>
  <!-- end of abstract.attlist -->
  <!-- end of abstract.module -->
  <define name="local.authorblurb.attrib">
    <empty/>
  </define>
  <define name="authorblurb.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A short description or note about an author. -->
  <define name="authorblurb">
    <element name="authorblurb">
      <ref name="authorblurb.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <oneOrMore>
        <ref name="para.class"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of authorblurb.element -->
  <define name="authorblurb.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="authorblurb.role.attrib"/>
    <ref name="local.authorblurb.attrib"/>
  </define>
  <!-- end of authorblurb.attlist -->
  <!-- end of authorblurb.module -->
  <define name="local.personblurb.attrib">
    <empty/>
  </define>
  <define name="personblurb.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A short description or note about a person. -->
  <define name="personblurb">
    <element name="personblurb">
      <ref name="personblurb.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <oneOrMore>
        <ref name="para.class"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of personblurb.element -->
  <define name="personblurb.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="personblurb.role.attrib"/>
    <ref name="local.personblurb.attrib"/>
  </define>
  <!-- end of personblurb.attlist -->
  <!-- end of personblurb.module -->
  <define name="local.blockquote.attrib">
    <empty/>
  </define>
  <define name="blockquote.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A quotation set off from the main text. -->
  <define name="blockquote">
    <element name="blockquote">
      <ref name="blockquote.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="title"/>
      </optional>
      <optional>
        <ref name="attribution"/>
      </optional>
      <oneOrMore>
        <ref name="component.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of blockquote.element -->
  <define name="blockquote.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="blockquote.role.attrib"/>
    <ref name="local.blockquote.attrib"/>
  </define>
  <!-- end of blockquote.attlist -->
  <!-- end of blockquote.module -->
  <define name="local.attribution.attrib">
    <empty/>
  </define>
  <define name="attribution.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The source of a block quote or epigraph. -->
  <define name="attribution">
    <element name="attribution">
      <ref name="attribution.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of attribution.element -->
  <define name="attribution.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="attribution.role.attrib"/>
    <ref name="local.attribution.attrib"/>
  </define>
  <!-- end of attribution.attlist -->
  <!-- end of attribution.module -->
  <define name="local.bridgehead.attrib">
    <empty/>
  </define>
  <define name="bridgehead.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A free-floating heading. -->
  <define name="bridgehead">
    <element name="bridgehead">
      <ref name="bridgehead.attlist"/>
      <zeroOrMore>
        <ref name="title.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of bridgehead.element -->
  <!--
    Renderas: Indicates the format in which the BridgeHead
    should appear
  -->
  <define name="bridgehead.attlist" combine="interleave">
    <optional>
      <attribute name="renderas">
        <choice>
          <value>other</value>
          <value>sect1</value>
          <value>sect2</value>
          <value>sect3</value>
          <value>sect4</value>
          <value>sect5</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="bridgehead.role.attrib"/>
    <ref name="local.bridgehead.attrib"/>
  </define>
  <!-- end of bridgehead.attlist -->
  <!-- end of bridgehead.module -->
  <define name="local.remark.attrib">
    <empty/>
  </define>
  <define name="remark.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A remark (or comment) intended for presentation in a draft manuscript. -->
  <define name="remark">
    <element name="remark">
      <ref name="remark.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of remark.element -->
  <define name="remark.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="remark.role.attrib"/>
    <ref name="local.remark.attrib"/>
  </define>
  <!-- end of remark.attlist -->
  <!-- end of remark.module -->
  <define name="local.epigraph.attrib">
    <empty/>
  </define>
  <define name="epigraph.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A short inscription at the beginning of a document or component. -->
  <define name="epigraph">
    <element name="epigraph">
      <ref name="epigraph.attlist"/>
      <optional>
        <ref name="attribution"/>
      </optional>
      <oneOrMore>
        <choice>
          <ref name="para.class"/>
          <ref name="literallayout"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of epigraph.element -->
  <define name="epigraph.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="epigraph.role.attrib"/>
    <ref name="local.epigraph.attrib"/>
  </define>
  <!-- end of epigraph.attlist -->
  <!--  Attribution (defined above) -->
  <!-- end of epigraph.module -->
  <define name="local.footnote.attrib">
    <empty/>
  </define>
  <define name="footnote.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A footnote. -->
  <define name="footnote">
    <element name="footnote">
      <ref name="footnote.attlist"/>
      <oneOrMore>
        <ref name="footnote.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of footnote.element -->
  <define name="footnote.attlist" combine="interleave">
    <ref name="label.attrib"/>
    <ref name="common.attrib"/>
    <ref name="footnote.role.attrib"/>
    <ref name="local.footnote.attrib"/>
  </define>
  <!-- end of footnote.attlist -->
  <!-- end of footnote.module -->
  <define name="local.highlights.attrib">
    <empty/>
  </define>
  <define name="highlights.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A summary of the main points of the discussed component. -->
  <define name="highlights">
    <element name="highlights">
      <ref name="highlights.attlist"/>
      <oneOrMore>
        <ref name="highlights.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of highlights.element -->
  <define name="highlights.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="highlights.role.attrib"/>
    <ref name="local.highlights.attrib"/>
  </define>
  <!-- end of highlights.attlist -->
  <!-- end of highlights.module -->
  <define name="local.formalpara.attrib">
    <empty/>
  </define>
  <define name="formalpara.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A paragraph with a title. -->
  <define name="formalpara">
    <element name="formalpara">
      <ref name="formalpara.attlist"/>
      <ref name="title"/>
      <zeroOrMore>
        <ref name="ndxterm.class"/>
      </zeroOrMore>
      <ref name="para"/>
    </element>
  </define>
  <!-- end of formalpara.element -->
  <define name="formalpara.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="formalpara.role.attrib"/>
    <ref name="local.formalpara.attrib"/>
  </define>
  <!-- end of formalpara.attlist -->
  <!-- end of formalpara.module -->
  <define name="local.para.attrib">
    <empty/>
  </define>
  <define name="para.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A paragraph. -->
  <define name="para">
    <element name="para">
      <ref name="para.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="para.char.mix"/>
          <ref name="para.mix"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of para.element -->
  <define name="para.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="para.role.attrib"/>
    <ref name="local.para.attrib"/>
  </define>
  <!-- end of para.attlist -->
  <!-- end of para.module -->
  <define name="local.simpara.attrib">
    <empty/>
  </define>
  <define name="simpara.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A paragraph that contains only text and inline markup, no block elements. -->
  <define name="simpara">
    <element name="simpara">
      <ref name="simpara.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of simpara.element -->
  <define name="simpara.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="simpara.role.attrib"/>
    <ref name="local.simpara.attrib"/>
  </define>
  <!-- end of simpara.attlist -->
  <!-- end of simpara.module -->
  <define name="local.admon.attrib">
    <empty/>
  </define>
  <define name="admon.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A note of caution. -->
  <define name="caution">
    <element name="caution">
      <ref name="caution.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <oneOrMore>
        <ref name="admon.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of caution.element -->
  <define name="caution.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="admon.role.attrib"/>
    <ref name="local.admon.attrib"/>
  </define>
  <!-- end of caution.attlist -->
  <!-- doc:An admonition set off from the text. -->
  <define name="important">
    <element name="important">
      <ref name="important.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <oneOrMore>
        <ref name="admon.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of important.element -->
  <define name="important.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="admon.role.attrib"/>
    <ref name="local.admon.attrib"/>
  </define>
  <!-- end of important.attlist -->
  <!-- doc:A message set off from the text. -->
  <define name="note">
    <element name="note">
      <ref name="note.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <oneOrMore>
        <ref name="admon.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of note.element -->
  <define name="note.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="admon.role.attrib"/>
    <ref name="local.admon.attrib"/>
  </define>
  <!-- end of note.attlist -->
  <!-- doc:A suggestion to the user, set off from the text. -->
  <define name="tip">
    <element name="tip">
      <ref name="tip.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <oneOrMore>
        <ref name="admon.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of tip.element -->
  <define name="tip.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="admon.role.attrib"/>
    <ref name="local.admon.attrib"/>
  </define>
  <!-- end of tip.attlist -->
  <!-- doc:An admonition set off from the text. -->
  <define name="warning">
    <element name="warning">
      <ref name="warning.attlist"/>
      <optional>
        <ref name="title"/>
      </optional>
      <oneOrMore>
        <ref name="admon.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of warning.element -->
  <define name="warning.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="admon.role.attrib"/>
    <ref name="local.admon.attrib"/>
  </define>
  <!-- end of warning.attlist -->
  <!-- end of admon.module -->
  <!-- ...................................................................... -->
  <!-- Lists ................................................................ -->
  <!-- GlossList ........................ -->
  <define name="local.glosslist.attrib">
    <empty/>
  </define>
  <define name="glosslist.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for a set of GlossEntrys. -->
  <define name="glosslist">
    <element name="glosslist">
      <ref name="glosslist.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <oneOrMore>
        <ref name="glossentry"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of glosslist.element -->
  <define name="glosslist.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="glosslist.role.attrib"/>
    <ref name="local.glosslist.attrib"/>
  </define>
  <!-- end of glosslist.attlist -->
  <!-- end of glosslist.module -->
  <define name="local.glossentry.attrib">
    <empty/>
  </define>
  <define name="glossentry.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An entry in a Glossary or GlossList. -->
  <define name="glossentry">
    <element name="glossentry">
      <ref name="glossentry.attlist"/>
      <ref name="glossterm"/>
      <optional>
        <ref name="acronym"/>
      </optional>
      <optional>
        <ref name="abbrev"/>
      </optional>
      <zeroOrMore>
        <ref name="ndxterm.class"/>
      </zeroOrMore>
      <optional>
        <ref name="revhistory"/>
      </optional>
      <choice>
        <ref name="glosssee"/>
        <oneOrMore>
          <ref name="glossdef"/>
        </oneOrMore>
      </choice>
    </element>
  </define>
  <!-- end of glossentry.element -->
  <!--
    SortAs: String by which the GlossEntry is to be sorted
    (alphabetized) in lieu of its proper content
  -->
  <define name="glossentry.attlist" combine="interleave">
    <optional>
      <attribute name="sortas"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="glossentry.role.attrib"/>
    <ref name="local.glossentry.attrib"/>
  </define>
  <!-- end of glossentry.attlist -->
  <!-- end of glossentry.module -->
  <!--  GlossTerm (defined in the Inlines section, below) -->
  <define name="local.glossdef.attrib">
    <empty/>
  </define>
  <define name="glossdef.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A definition in a GlossEntry. -->
  <define name="glossdef">
    <element name="glossdef">
      <ref name="glossdef.attlist"/>
      <oneOrMore>
        <ref name="glossdef.mix"/>
      </oneOrMore>
      <zeroOrMore>
        <ref name="glossseealso"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of glossdef.element -->
  <!-- Subject: List of subjects; keywords for the definition -->
  <define name="glossdef.attlist" combine="interleave">
    <optional>
      <attribute name="subject"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="glossdef.role.attrib"/>
    <ref name="local.glossdef.attrib"/>
  </define>
  <!-- end of glossdef.attlist -->
  <!-- end of glossdef.module -->
  <define name="local.glosssee.attrib">
    <empty/>
  </define>
  <define name="glosssee.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A cross-reference from one GlossEntry to another. -->
  <define name="glosssee">
    <element name="glosssee">
      <ref name="glosssee.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of glosssee.element -->
  <!--
    OtherTerm: Reference to the GlossEntry whose GlossTerm
    should be displayed at the point of the GlossSee
  -->
  <define name="glosssee.attlist" combine="interleave">
    <optional>
      <attribute name="otherterm">
        <data type="IDREF"/>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="glosssee.role.attrib"/>
    <ref name="local.glosssee.attrib"/>
  </define>
  <!-- end of glosssee.attlist -->
  <!-- end of glosssee.module -->
  <define name="local.glossseealso.attrib">
    <empty/>
  </define>
  <define name="glossseealso.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A cross-reference from one GlossEntry to another. -->
  <define name="glossseealso">
    <element name="glossseealso">
      <ref name="glossseealso.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of glossseealso.element -->
  <!--
    OtherTerm: Reference to the GlossEntry whose GlossTerm
    should be displayed at the point of the GlossSeeAlso
  -->
  <define name="glossseealso.attlist" combine="interleave">
    <optional>
      <attribute name="otherterm">
        <data type="IDREF"/>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="glossseealso.role.attrib"/>
    <ref name="local.glossseealso.attrib"/>
  </define>
  <!-- end of glossseealso.attlist -->
  <!-- end of glossseealso.module -->
  <!-- end of glossentry.content.module -->
  <!-- ItemizedList and OrderedList ..... -->
  <define name="local.itemizedlist.attrib">
    <empty/>
  </define>
  <define name="itemizedlist.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
  <define name="itemizedlist">
    <element name="itemizedlist">
      <ref name="itemizedlist.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <zeroOrMore>
        <ref name="listpreamble.mix"/>
      </zeroOrMore>
      <oneOrMore>
        <ref name="listitem"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of itemizedlist.element -->
  <!--
    Spacing: Whether the vertical space in the list should be
    compressed
  -->
  <!--
    Mark: Keyword, e.g., bullet, dash, checkbox, none;
    list of keywords and defaults are implementation specific
  -->
  <define name="itemizedlist.attlist" combine="interleave">
    <optional>
      <attribute name="spacing">
        <choice>
          <value>normal</value>
          <value>compact</value>
        </choice>
      </attribute>
    </optional>
    <ref name="mark.attrib"/>
    <ref name="common.attrib"/>
    <ref name="itemizedlist.role.attrib"/>
    <ref name="local.itemizedlist.attrib"/>
  </define>
  <!-- end of itemizedlist.attlist -->
  <!-- end of itemizedlist.module -->
  <define name="local.orderedlist.attrib">
    <empty/>
  </define>
  <define name="orderedlist.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A list in which each entry is marked with a sequentially incremented label. -->
  <define name="orderedlist">
    <element name="orderedlist">
      <ref name="orderedlist.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <zeroOrMore>
        <ref name="listpreamble.mix"/>
      </zeroOrMore>
      <oneOrMore>
        <ref name="listitem"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of orderedlist.element -->
  <!--
    Numeration: Style of ListItem numbered; default is expected
    to be Arabic
  -->
  <!--
    InheritNum: Specifies for a nested list that the numbering
    of ListItems should include the number of the item
    within which they are nested (e.g., 1a and 1b within 1,
    rather than a and b)
  -->
  <!--
    Continuation: Where list numbering begins afresh (Restarts,
    the default) or continues that of the immediately preceding
    list (Continues)
  -->
  <!--
    Spacing: Whether the vertical space in the list should be
    compressed
  -->
  <define name="orderedlist.attlist" combine="interleave">
    <optional>
      <attribute name="numeration">
        <choice>
          <value>arabic</value>
          <value>upperalpha</value>
          <value>loweralpha</value>
          <value>upperroman</value>
          <value>lowerroman</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="inheritnum" a:defaultValue="ignore">
        <choice>
          <value>inherit</value>
          <value>ignore</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="continuation" a:defaultValue="restarts">
        <choice>
          <value>continues</value>
          <value>restarts</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="spacing">
        <choice>
          <value>normal</value>
          <value>compact</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="orderedlist.role.attrib"/>
    <ref name="local.orderedlist.attrib"/>
  </define>
  <!-- end of orderedlist.attlist -->
  <!-- end of orderedlist.module -->
  <define name="local.listitem.attrib">
    <empty/>
  </define>
  <define name="listitem.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for the elements of a list item. -->
  <define name="listitem">
    <element name="listitem">
      <ref name="listitem.attlist"/>
      <oneOrMore>
        <ref name="component.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of listitem.element -->
  <!--
    Override: Indicates the mark to be used for this ListItem
    instead of the default mark or the mark specified by
    the Mark attribute on the enclosing ItemizedList
  -->
  <define name="listitem.attlist" combine="interleave">
    <optional>
      <attribute name="override"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="listitem.role.attrib"/>
    <ref name="local.listitem.attrib"/>
  </define>
  <!-- end of listitem.attlist -->
  <!-- end of listitem.module -->
  <!-- SegmentedList .................... -->
  <define name="local.segmentedlist.attrib">
    <empty/>
  </define>
  <define name="segmentedlist.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A segmented list, a list of sets of elements. -->
  <define name="segmentedlist">
    <element name="segmentedlist">
      <ref name="segmentedlist.attlist"/>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <oneOrMore>
        <ref name="segtitle"/>
      </oneOrMore>
      <oneOrMore>
        <ref name="seglistitem"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of segmentedlist.element -->
  <define name="segmentedlist.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="segmentedlist.role.attrib"/>
    <ref name="local.segmentedlist.attrib"/>
  </define>
  <!-- end of segmentedlist.attlist -->
  <!-- end of segmentedlist.module -->
  <define name="local.segtitle.attrib">
    <empty/>
  </define>
  <define name="segtitle.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The title of an element of a list item in a segmented list. -->
  <define name="segtitle">
    <element name="segtitle">
      <ref name="segtitle.attlist"/>
      <zeroOrMore>
        <ref name="title.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of segtitle.element -->
  <define name="segtitle.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="segtitle.role.attrib"/>
    <ref name="local.segtitle.attrib"/>
  </define>
  <!-- end of segtitle.attlist -->
  <!-- end of segtitle.module -->
  <define name="local.seglistitem.attrib">
    <empty/>
  </define>
  <define name="seglistitem.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A list item in a segmented list. -->
  <define name="seglistitem">
    <element name="seglistitem">
      <ref name="seglistitem.attlist"/>
      <oneOrMore>
        <ref name="seg"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of seglistitem.element -->
  <define name="seglistitem.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="seglistitem.role.attrib"/>
    <ref name="local.seglistitem.attrib"/>
  </define>
  <!-- end of seglistitem.attlist -->
  <!-- end of seglistitem.module -->
  <define name="local.seg.attrib">
    <empty/>
  </define>
  <define name="seg.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An element of a list item in a segmented list. -->
  <define name="seg">
    <element name="seg">
      <ref name="seg.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of seg.element -->
  <define name="seg.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="seg.role.attrib"/>
    <ref name="local.seg.attrib"/>
  </define>
  <!-- end of seg.attlist -->
  <!-- end of seg.module -->
  <!-- end of segmentedlist.content.module -->
  <!-- SimpleList ....................... -->
  <define name="local.simplelist.attrib">
    <empty/>
  </define>
  <define name="simplelist.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An undecorated list of single words or short phrases. -->
  <define name="simplelist">
    <element name="simplelist">
      <ref name="simplelist.attlist"/>
      <oneOrMore>
        <ref name="member"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of simplelist.element -->
  <!-- Columns: The number of columns the array should contain -->
  <!--
    Type: How the Members of the SimpleList should be
    formatted: Inline (members separated with commas etc.
    inline), Vert (top to bottom in n Columns), or Horiz (in
    the direction of text flow) in n Columns.  If Column
    is 1 or implied, Type=Vert and Type=Horiz give the same
    results.
  -->
  <define name="simplelist.attlist" combine="interleave">
    <optional>
      <attribute name="columns"/>
    </optional>
    <optional>
      <attribute name="type" a:defaultValue="vert">
        <choice>
          <value>inline</value>
          <value>vert</value>
          <value>horiz</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="simplelist.role.attrib"/>
    <ref name="local.simplelist.attrib"/>
  </define>
  <!-- end of simplelist.attlist -->
  <!-- end of simplelist.module -->
  <define name="local.member.attrib">
    <empty/>
  </define>
  <define name="member.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An element of a simple list. -->
  <define name="member">
    <element name="member">
      <ref name="member.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of member.element -->
  <define name="member.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="member.role.attrib"/>
    <ref name="local.member.attrib"/>
  </define>
  <!-- end of member.attlist -->
  <!-- end of member.module -->
  <!-- end of simplelist.content.module -->
  <!-- VariableList ..................... -->
  <define name="local.variablelist.attrib">
    <empty/>
  </define>
  <define name="variablelist.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A list in which each entry is composed of a set of one or more terms and an associated description. -->
  <define name="variablelist">
    <element name="variablelist">
      <ref name="variablelist.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <zeroOrMore>
        <ref name="listpreamble.mix"/>
      </zeroOrMore>
      <oneOrMore>
        <ref name="varlistentry"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of variablelist.element -->
  <!--
    TermLength: Length beyond which the presentation engine
    may consider the Term too long and select an alternate
    presentation of the Term and, or, its associated ListItem.
  -->
  <define name="variablelist.attlist" combine="interleave">
    <optional>
      <attribute name="termlength"/>
    </optional>
    <optional>
      <attribute name="spacing">
        <choice>
          <value>normal</value>
          <value>compact</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="variablelist.role.attrib"/>
    <ref name="local.variablelist.attrib"/>
  </define>
  <!-- end of variablelist.attlist -->
  <!-- end of variablelist.module -->
  <define name="local.varlistentry.attrib">
    <empty/>
  </define>
  <define name="varlistentry.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for a set of terms and the associated description in a variable list. -->
  <define name="varlistentry">
    <element name="varlistentry">
      <ref name="varlistentry.attlist"/>
      <oneOrMore>
        <ref name="term"/>
      </oneOrMore>
      <ref name="listitem"/>
    </element>
  </define>
  <!-- end of varlistentry.element -->
  <define name="varlistentry.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="varlistentry.role.attrib"/>
    <ref name="local.varlistentry.attrib"/>
  </define>
  <!-- end of varlistentry.attlist -->
  <!-- end of varlistentry.module -->
  <define name="local.term.attrib">
    <empty/>
  </define>
  <define name="term.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The word or phrase being defined or described in a variable list. -->
  <define name="term">
    <element name="term">
      <ref name="term.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of term.element -->
  <define name="term.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="term.role.attrib"/>
    <ref name="local.term.attrib"/>
  </define>
  <!-- end of term.attlist -->
  <!-- end of term.module -->
  <!--  ListItem (defined above) -->
  <!-- end of variablelist.content.module -->
  <!-- CalloutList ...................... -->
  <define name="local.calloutlist.attrib">
    <empty/>
  </define>
  <define name="calloutlist.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A list of Callouts. -->
  <define name="calloutlist">
    <element name="calloutlist">
      <ref name="calloutlist.attlist"/>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <oneOrMore>
        <ref name="callout"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of calloutlist.element -->
  <define name="calloutlist.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="calloutlist.role.attrib"/>
    <ref name="local.calloutlist.attrib"/>
  </define>
  <!-- end of calloutlist.attlist -->
  <!-- end of calloutlist.module -->
  <define name="local.callout.attrib">
    <empty/>
  </define>
  <define name="callout.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A &ldquo;called out&rdquo; description of a marked Area. -->
  <define name="callout">
    <element name="callout">
      <ref name="callout.attlist"/>
      <oneOrMore>
        <ref name="component.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of callout.element -->
  <!--
    AreaRefs: IDs of one or more Areas or AreaSets described
    by this Callout
  -->
  <define name="callout.attlist" combine="interleave">
    <attribute name="arearefs">
      <data type="IDREFS"/>
    </attribute>
    <ref name="common.attrib"/>
    <ref name="callout.role.attrib"/>
    <ref name="local.callout.attrib"/>
  </define>
  <!-- end of callout.attlist -->
  <!-- end of callout.module -->
  <!-- end of calloutlist.content.module -->
  <!-- ...................................................................... -->
  <!-- Objects .............................................................. -->
  <!-- Examples etc. .................... -->
  <define name="local.example.attrib">
    <empty/>
  </define>
  <define name="example.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A formal example, with a title. -->
  <define name="example">
    <element name="example">
      <ref name="example.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <ref name="formalobject.title.content"/>
      <oneOrMore>
        <ref name="example.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of example.element -->
  <define name="example.attlist" combine="interleave">
    <optional>
      <attribute name="floatstyle"/>
    </optional>
    <ref name="label.attrib"/>
    <ref name="width.attrib"/>
    <ref name="common.attrib"/>
    <ref name="example.role.attrib"/>
    <ref name="local.example.attrib"/>
  </define>
  <!-- end of example.attlist -->
  <!-- end of example.module -->
  <define name="local.informalexample.attrib">
    <empty/>
  </define>
  <define name="informalexample.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A displayed example without a title. -->
  <define name="informalexample">
    <element name="informalexample">
      <ref name="informalexample.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <oneOrMore>
        <ref name="example.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of informalexample.element -->
  <define name="informalexample.attlist" combine="interleave">
    <optional>
      <attribute name="floatstyle"/>
    </optional>
    <ref name="width.attrib"/>
    <ref name="common.attrib"/>
    <ref name="informalexample.role.attrib"/>
    <ref name="local.informalexample.attrib"/>
  </define>
  <!-- end of informalexample.attlist -->
  <!-- end of informalexample.module -->
  <define name="local.programlistingco.attrib">
    <empty/>
  </define>
  <define name="programlistingco.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A program listing with associated areas used in callouts. -->
  <define name="programlistingco">
    <element name="programlistingco">
      <ref name="programlistingco.attlist"/>
      <ref name="areaspec"/>
      <ref name="programlisting"/>
      <zeroOrMore>
        <ref name="calloutlist"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of programlistingco.element -->
  <define name="programlistingco.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="programlistingco.role.attrib"/>
    <ref name="local.programlistingco.attrib"/>
  </define>
  <!-- end of programlistingco.attlist -->
  <!--  CalloutList (defined above in Lists) -->
  <!-- end of informalexample.module -->
  <define name="local.areaspec.attrib">
    <empty/>
  </define>
  <define name="areaspec.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A collection of regions in a graphic or code example. -->
  <define name="areaspec">
    <element name="areaspec">
      <ref name="areaspec.attlist"/>
      <oneOrMore>
        <choice>
          <ref name="area"/>
          <ref name="areaset"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of areaspec.element -->
  <!--
    Units: global unit of measure in which coordinates in
    this spec are expressed:
    
    - CALSPair "x1,y1 x2,y2": lower-left and upper-right
    coordinates in a rectangle describing repro area in which
    graphic is placed, where X and Y dimensions are each some
    number 0..10000 (taken from CALS graphic attributes)
    
    - LineColumn "line column": line number and column number
    at which to start callout text in "linespecific" content
    
    - LineRange "startline endline": whole lines from startline
    to endline in "linespecific" content
    
    - LineColumnPair "line1 col1 line2 col2": starting and ending
    points of area in "linespecific" content that starts at
    first position and ends at second position (including the
    beginnings of any intervening lines)
    
    - Other: directive to look at value of OtherUnits attribute
    to get implementation-specific keyword
    
    The default is implementation-specific; usually dependent on
    the parent element (GraphicCO gets CALSPair, ProgramListingCO
    and ScreenCO get LineColumn)
  -->
  <!-- OtherUnits: User-defined units -->
  <define name="areaspec.attlist" combine="interleave">
    <optional>
      <attribute name="units">
        <choice>
          <value>calspair</value>
          <value>linecolumn</value>
          <value>linerange</value>
          <value>linecolumnpair</value>
          <value>other</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="otherunits">
        <data type="NMTOKEN"/>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="areaspec.role.attrib"/>
    <ref name="local.areaspec.attrib"/>
  </define>
  <!-- end of areaspec.attlist -->
  <!-- end of areaspec.module -->
  <define name="local.area.attrib">
    <empty/>
  </define>
  <define name="area.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A region defined for a Callout in a graphic or code example. -->
  <define name="area">
    <element name="area">
      <ref name="area.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of area.element -->
  <!-- bug number/symbol override or initialization -->
  <!-- to any related information -->
  <!--
    Units: unit of measure in which coordinates in this
    area are expressed; inherits from AreaSet and AreaSpec
  -->
  <!-- OtherUnits: User-defined units -->
  <define name="area.attlist" combine="interleave">
    <ref name="label.attrib"/>
    <ref name="linkends.attrib"/>
    <optional>
      <attribute name="units">
        <choice>
          <value>calspair</value>
          <value>linecolumn</value>
          <value>linerange</value>
          <value>linecolumnpair</value>
          <value>other</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="otherunits">
        <data type="NMTOKEN"/>
      </attribute>
    </optional>
    <attribute name="coords"/>
    <ref name="idreq.common.attrib"/>
    <ref name="area.role.attrib"/>
    <ref name="local.area.attrib"/>
  </define>
  <!-- end of area.attlist -->
  <!-- end of area.module -->
  <define name="local.areaset.attrib">
    <empty/>
  </define>
  <define name="areaset.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A set of related areas in a graphic or code example. -->
  <define name="areaset">
    <element name="areaset">
      <ref name="areaset.attlist"/>
      <oneOrMore>
        <ref name="area"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of areaset.element -->
  <!-- bug number/symbol override or initialization -->
  <!--
    Units: unit of measure in which coordinates in this
    area are expressed; inherits from AreaSpec
  -->
  <define name="areaset.attlist" combine="interleave">
    <ref name="label.attrib"/>
    <optional>
      <attribute name="units">
        <choice>
          <value>calspair</value>
          <value>linecolumn</value>
          <value>linerange</value>
          <value>linecolumnpair</value>
          <value>other</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="otherunits">
        <data type="NMTOKEN"/>
      </attribute>
    </optional>
    <attribute name="coords"/>
    <ref name="idreq.common.attrib"/>
    <ref name="areaset.role.attrib"/>
    <ref name="local.areaset.attrib"/>
  </define>
  <!-- end of areaset.attlist -->
  <!-- end of areaset.module -->
  <!-- end of areaspec.content.module -->
  <define name="local.programlisting.attrib">
    <empty/>
  </define>
  <define name="programlisting.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A literal listing of all or part of a program. -->
  <define name="programlisting">
    <element name="programlisting">
      <ref name="programlisting.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="para.char.mix"/>
          <ref name="co"/>
          <ref name="coref"/>
          <ref name="lineannotation"/>
          <ref name="textobject"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of programlisting.element -->
  <define name="programlisting.attlist" combine="interleave">
    <ref name="width.attrib"/>
    <ref name="linespecific.attrib"/>
    <ref name="common.attrib"/>
    <ref name="programlisting.role.attrib"/>
    <ref name="local.programlisting.attrib"/>
  </define>
  <!-- end of programlisting.attlist -->
  <!-- end of programlisting.module -->
  <define name="local.literallayout.attrib">
    <empty/>
  </define>
  <define name="literallayout.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A block of text in which line breaks and white space are to be reproduced faithfully. -->
  <define name="literallayout">
    <element name="literallayout">
      <ref name="literallayout.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="para.char.mix"/>
          <ref name="co"/>
          <ref name="coref"/>
          <ref name="textobject"/>
          <ref name="lineannotation"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of literallayout.element -->
  <define name="literallayout.attlist" combine="interleave">
    <ref name="width.attrib"/>
    <ref name="linespecific.attrib"/>
    <optional>
      <attribute name="class" a:defaultValue="normal">
        <choice>
          <value>monospaced</value>
          <value>normal</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="literallayout.role.attrib"/>
    <ref name="local.literallayout.attrib"/>
  </define>
  <!-- end of literallayout.attlist -->
  <!--  LineAnnotation (defined in the Inlines section, below) -->
  <!-- end of literallayout.module -->
  <define name="local.screenco.attrib">
    <empty/>
  </define>
  <define name="screenco.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A screen with associated areas used in callouts. -->
  <define name="screenco">
    <element name="screenco">
      <ref name="screenco.attlist"/>
      <ref name="areaspec"/>
      <ref name="screen"/>
      <zeroOrMore>
        <ref name="calloutlist"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of screenco.element -->
  <define name="screenco.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="screenco.role.attrib"/>
    <ref name="local.screenco.attrib"/>
  </define>
  <!-- end of screenco.attlist -->
  <!--  AreaSpec (defined above) -->
  <!--  CalloutList (defined above in Lists) -->
  <!-- end of screenco.module -->
  <define name="local.screen.attrib">
    <empty/>
  </define>
  <define name="screen.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Text that a user sees or might see on a computer screen. -->
  <define name="screen">
    <element name="screen">
      <ref name="screen.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="para.char.mix"/>
          <ref name="co"/>
          <ref name="coref"/>
          <ref name="textobject"/>
          <ref name="lineannotation"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of screen.element -->
  <define name="screen.attlist" combine="interleave">
    <ref name="width.attrib"/>
    <ref name="linespecific.attrib"/>
    <ref name="common.attrib"/>
    <ref name="screen.role.attrib"/>
    <ref name="local.screen.attrib"/>
  </define>
  <!-- end of screen.attlist -->
  <!-- end of screen.module -->
  <define name="local.screenshot.attrib">
    <empty/>
  </define>
  <define name="screenshot.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A representation of what the user sees or might see on a computer screen. -->
  <define name="screenshot">
    <element name="screenshot">
      <ref name="screenshot.attlist"/>
      <optional>
        <ref name="screeninfo"/>
      </optional>
      <choice>
        <ref name="graphic"/>
        <ref name="graphicco"/>
        <ref name="mediaobject"/>
        <ref name="mediaobjectco"/>
      </choice>
    </element>
  </define>
  <!-- end of screenshot.element -->
  <define name="screenshot.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="screenshot.role.attrib"/>
    <ref name="local.screenshot.attrib"/>
  </define>
  <!-- end of screenshot.attlist -->
  <!-- end of screenshot.module -->
  <define name="local.screeninfo.attrib">
    <empty/>
  </define>
  <define name="screeninfo.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Information about how a screen shot was produced. -->
  <define name="screeninfo">
    <element name="screeninfo">
      <ref name="screeninfo.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of screeninfo.element -->
  <define name="screeninfo.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="screeninfo.role.attrib"/>
    <ref name="local.screeninfo.attrib"/>
  </define>
  <!-- end of screeninfo.attlist -->
  <!-- end of screeninfo.module -->
  <!-- end of screenshot.content.module -->
  <!-- Figures etc. ..................... -->
  <define name="local.figure.attrib">
    <empty/>
  </define>
  <define name="figure.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A formal figure, generally an illustration, with a title. -->
  <define name="figure">
    <element name="figure">
      <ref name="figure.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <ref name="formalobject.title.content"/>
      <oneOrMore>
        <choice>
          <ref name="figure.mix"/>
          <ref name="link.char.class"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of figure.element -->
  <!--
    Float: Whether the Figure is supposed to be rendered
    where convenient (yes (1) value) or at the place it occurs
    in the text (no (0) value, the default)
  -->
  <define name="figure.attlist" combine="interleave">
    <optional>
      <attribute name="float" a:defaultValue="0">
        <ref name="yesorno.attvals"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="floatstyle"/>
    </optional>
    <optional>
      <attribute name="pgwide">
        <ref name="yesorno.attvals"/>
      </attribute>
    </optional>
    <ref name="label.attrib"/>
    <ref name="common.attrib"/>
    <ref name="figure.role.attrib"/>
    <ref name="local.figure.attrib"/>
  </define>
  <!-- end of figure.attlist -->
  <!-- end of figure.module -->
  <define name="local.informalfigure.attrib">
    <empty/>
  </define>
  <define name="informalfigure.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A untitled figure. -->
  <define name="informalfigure">
    <element name="informalfigure">
      <ref name="informalfigure.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <oneOrMore>
        <choice>
          <ref name="figure.mix"/>
          <ref name="link.char.class"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of informalfigure.element -->
  <!--
    Float: Whether the Figure is supposed to be rendered
    where convenient (yes (1) value) or at the place it occurs
    in the text (no (0) value, the default)
  -->
  <define name="informalfigure.attlist" combine="interleave">
    <optional>
      <attribute name="float" a:defaultValue="0">
        <ref name="yesorno.attvals"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="floatstyle"/>
    </optional>
    <optional>
      <attribute name="pgwide">
        <ref name="yesorno.attvals"/>
      </attribute>
    </optional>
    <ref name="label.attrib"/>
    <ref name="common.attrib"/>
    <ref name="informalfigure.role.attrib"/>
    <ref name="local.informalfigure.attrib"/>
  </define>
  <!-- end of informalfigure.attlist -->
  <!-- end of informalfigure.module -->
  <define name="local.graphicco.attrib">
    <empty/>
  </define>
  <define name="graphicco.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A graphic that contains callout areas. -->
  <define name="graphicco">
    <element name="graphicco">
      <ref name="graphicco.attlist"/>
      <ref name="areaspec"/>
      <ref name="graphic"/>
      <zeroOrMore>
        <ref name="calloutlist"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of graphicco.element -->
  <define name="graphicco.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="graphicco.role.attrib"/>
    <ref name="local.graphicco.attrib"/>
  </define>
  <!-- end of graphicco.attlist -->
  <!--  AreaSpec (defined above in Examples) -->
  <!--  CalloutList (defined above in Lists) -->
  <!-- end of graphicco.module -->
  <!--
    Graphical data can be the content of Graphic, or you can reference
    an external file either as an entity (Entitref) or a filename
    (Fileref).
  -->
  <define name="local.graphic.attrib">
    <empty/>
  </define>
  <define name="graphic.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A displayed graphical object (not an inline). -->
  <define name="graphic">
    <element name="graphic">
      <ref name="graphic.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of graphic.element -->
  <define name="graphic.attlist" combine="interleave">
    <ref name="graphics.attrib"/>
    <ref name="common.attrib"/>
    <ref name="graphic.role.attrib"/>
    <ref name="local.graphic.attrib"/>
  </define>
  <!-- end of graphic.attlist -->
  <!-- end of graphic.module -->
  <define name="local.inlinegraphic.attrib">
    <empty/>
  </define>
  <define name="inlinegraphic.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An object containing or pointing to graphical data that will be rendered inline. -->
  <define name="inlinegraphic">
    <element name="inlinegraphic">
      <ref name="inlinegraphic.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of inlinegraphic.element -->
  <define name="inlinegraphic.attlist" combine="interleave">
    <ref name="graphics.attrib"/>
    <ref name="common.attrib"/>
    <ref name="inlinegraphic.role.attrib"/>
    <ref name="local.inlinegraphic.attrib"/>
  </define>
  <!-- end of inlinegraphic.attlist -->
  <!-- end of inlinegraphic.module -->
  <define name="local.mediaobject.attrib">
    <empty/>
  </define>
  <define name="mediaobject.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A displayed media object (video, audio, image, etc.). -->
  <define name="mediaobject">
    <element name="mediaobject">
      <ref name="mediaobject.attlist"/>
      <optional>
        <ref name="objectinfo"/>
      </optional>
      <oneOrMore>
        <ref name="mediaobject.mix"/>
      </oneOrMore>
      <optional>
        <ref name="caption"/>
      </optional>
    </element>
  </define>
  <!-- end of mediaobject.element -->
  <define name="mediaobject.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="mediaobject.role.attrib"/>
    <ref name="local.mediaobject.attrib"/>
  </define>
  <!-- end of mediaobject.attlist -->
  <!-- end of mediaobject.module -->
  <define name="local.inlinemediaobject.attrib">
    <empty/>
  </define>
  <define name="inlinemediaobject.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An inline media object (video, audio, image, and so on). -->
  <define name="inlinemediaobject">
    <element name="inlinemediaobject">
      <ref name="inlinemediaobject.attlist"/>
      <optional>
        <ref name="objectinfo"/>
      </optional>
      <oneOrMore>
        <ref name="mediaobject.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of inlinemediaobject.element -->
  <define name="inlinemediaobject.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="inlinemediaobject.role.attrib"/>
    <ref name="local.inlinemediaobject.attrib"/>
  </define>
  <!-- end of inlinemediaobject.attlist -->
  <!-- end of inlinemediaobject.module -->
  <define name="local.videoobject.attrib">
    <empty/>
  </define>
  <define name="videoobject.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for video data and its associated meta-information. -->
  <define name="videoobject">
    <element name="videoobject">
      <ref name="videoobject.attlist"/>
      <optional>
        <ref name="objectinfo"/>
      </optional>
      <ref name="videodata"/>
    </element>
  </define>
  <!-- end of videoobject.element -->
  <define name="videoobject.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="videoobject.role.attrib"/>
    <ref name="local.videoobject.attrib"/>
  </define>
  <!-- end of videoobject.attlist -->
  <!-- end of videoobject.module -->
  <define name="local.audioobject.attrib">
    <empty/>
  </define>
  <define name="audioobject.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for audio data and its associated meta-information. -->
  <define name="audioobject">
    <element name="audioobject">
      <ref name="audioobject.attlist"/>
      <optional>
        <ref name="objectinfo"/>
      </optional>
      <ref name="audiodata"/>
    </element>
  </define>
  <!-- end of audioobject.element -->
  <define name="audioobject.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="audioobject.role.attrib"/>
    <ref name="local.audioobject.attrib"/>
  </define>
  <!-- end of audioobject.attlist -->
  <!-- end of audioobject.module -->
  <define name="local.imageobject.attrib">
    <empty/>
  </define>
  <define name="imageobject.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for image data and its associated meta-information. -->
  <define name="imageobject">
    <element name="imageobject">
      <ref name="imageobject.attlist"/>
      <optional>
        <ref name="objectinfo"/>
      </optional>
      <ref name="imagedata"/>
    </element>
  </define>
  <!-- end of imageobject.element -->
  <define name="imageobject.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="imageobject.role.attrib"/>
    <ref name="local.imageobject.attrib"/>
  </define>
  <!-- end of imageobject.attlist -->
  <!-- end of imageobject.module -->
  <define name="local.textobject.attrib">
    <empty/>
  </define>
  <define name="textobject.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for a text description of an object and its associated meta-information. -->
  <define name="textobject">
    <element name="textobject">
      <ref name="textobject.attlist"/>
      <optional>
        <ref name="objectinfo"/>
      </optional>
      <choice>
        <ref name="phrase"/>
        <ref name="textdata"/>
        <oneOrMore>
          <ref name="textobject.mix"/>
        </oneOrMore>
      </choice>
    </element>
  </define>
  <!-- end of textobject.element -->
  <define name="textobject.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="textobject.role.attrib"/>
    <ref name="local.textobject.attrib"/>
  </define>
  <!-- end of textobject.attlist -->
  <!-- end of textobject.module -->
  <define name="local.objectinfo.attrib">
    <empty/>
  </define>
  <define name="objectinfo.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Meta-information for an object. -->
  <define name="objectinfo">
    <element name="objectinfo">
      <ref name="objectinfo.attlist"/>
      <oneOrMore>
        <ref name="info.class"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of objectinfo.element -->
  <define name="objectinfo.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="objectinfo.role.attrib"/>
    <ref name="local.objectinfo.attrib"/>
  </define>
  <!-- end of objectinfo.attlist -->
  <!-- end of objectinfo.module -->
  <!--
    EntityRef: Name of an external entity containing the content
    of the object data
  -->
  <!--
    FileRef: Filename, qualified by a pathname if desired,
    designating the file containing the content of the object data
  -->
  <!-- Format: Notation of the element content, if any -->
  <!-- SrcCredit: Information about the source of the image -->
  <define name="local.objectdata.attrib">
    <empty/>
  </define>
  <define name="objectdata.attrib">
    <optional>
      <attribute name="entityref">
        <data type="ENTITY"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="fileref"/>
    </optional>
    <optional>
      <attribute name="format">
        <choice>
          <ref name="notation.class"/>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="srccredit"/>
    </optional>
    <ref name="local.objectdata.attrib"/>
  </define>
  <define name="local.videodata.attrib">
    <empty/>
  </define>
  <define name="videodata.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Pointer to external video data. -->
  <define name="videodata">
    <element name="videodata">
      <ref name="videodata.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of videodata.element -->
  <!-- Width: Same as CALS reprowid (desired width) -->
  <!-- Depth: Same as CALS reprodep (desired depth) -->
  <!--
    Align: Same as CALS hplace with 'none' removed; #IMPLIED means
    application-specific
  -->
  <!-- Scale: Conflation of CALS hscale and vscale -->
  <!-- Scalefit: Same as CALS scalefit -->
  <define name="videodata.attlist" combine="interleave">
    <optional>
      <attribute name="width"/>
    </optional>
    <optional>
      <attribute name="contentwidth"/>
    </optional>
    <optional>
      <attribute name="depth"/>
    </optional>
    <optional>
      <attribute name="contentdepth"/>
    </optional>
    <optional>
      <attribute name="align">
        <choice>
          <value>left</value>
          <value>right</value>
          <value>center</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="valign">
        <choice>
          <value>top</value>
          <value>middle</value>
          <value>bottom</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="scale"/>
    </optional>
    <optional>
      <attribute name="scalefit">
        <ref name="yesorno.attvals"/>
      </attribute>
    </optional>
    <ref name="objectdata.attrib"/>
    <ref name="common.attrib"/>
    <ref name="videodata.role.attrib"/>
    <ref name="local.videodata.attrib"/>
  </define>
  <!-- end of videodata.attlist -->
  <!-- end of videodata.module -->
  <define name="local.audiodata.attrib">
    <empty/>
  </define>
  <define name="audiodata.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Pointer to external audio data. -->
  <define name="audiodata">
    <element name="audiodata">
      <ref name="audiodata.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of audiodata.element -->
  <define name="audiodata.attlist" combine="interleave">
    <ref name="objectdata.attrib"/>
    <ref name="common.attrib"/>
    <ref name="audiodata.role.attrib"/>
    <ref name="local.audiodata.attrib"/>
  </define>
  <!-- end of audiodata.attlist -->
  <!-- end of audiodata.module -->
  <define name="local.imagedata.attrib">
    <empty/>
  </define>
  <define name="imagedata.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Pointer to external image data. -->
  <define name="imagedata">
    <element name="imagedata">
      <ref name="imagedata.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of imagedata.element -->
  <!-- Width: Same as CALS reprowid (desired width) -->
  <!-- Depth: Same as CALS reprodep (desired depth) -->
  <!--
    Align: Same as CALS hplace with 'none' removed; #IMPLIED means
    application-specific
  -->
  <!-- Scale: Conflation of CALS hscale and vscale -->
  <!-- Scalefit: Same as CALS scalefit -->
  <define name="imagedata.attlist" combine="interleave">
    <optional>
      <attribute name="width"/>
    </optional>
    <optional>
      <attribute name="contentwidth"/>
    </optional>
    <optional>
      <attribute name="depth"/>
    </optional>
    <optional>
      <attribute name="contentdepth"/>
    </optional>
    <optional>
      <attribute name="align">
        <choice>
          <value>left</value>
          <value>right</value>
          <value>center</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="valign">
        <choice>
          <value>top</value>
          <value>middle</value>
          <value>bottom</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="scale"/>
    </optional>
    <optional>
      <attribute name="scalefit">
        <ref name="yesorno.attvals"/>
      </attribute>
    </optional>
    <ref name="objectdata.attrib"/>
    <ref name="common.attrib"/>
    <ref name="imagedata.role.attrib"/>
    <ref name="local.imagedata.attrib"/>
  </define>
  <!-- end of imagedata.attlist -->
  <!-- end of imagedata.module -->
  <define name="local.textdata.attrib">
    <empty/>
  </define>
  <define name="textdata.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Pointer to external text data. -->
  <define name="textdata">
    <element name="textdata">
      <ref name="textdata.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of textdata.element -->
  <define name="textdata.attlist" combine="interleave">
    <optional>
      <attribute name="encoding"/>
    </optional>
    <ref name="objectdata.attrib"/>
    <ref name="common.attrib"/>
    <ref name="textdata.role.attrib"/>
    <ref name="local.textdata.attrib"/>
  </define>
  <!-- end of textdata.attlist -->
  <!-- end of textdata.module -->
  <define name="local.mediaobjectco.attrib">
    <empty/>
  </define>
  <define name="mediaobjectco.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A media object that contains callouts. -->
  <define name="mediaobjectco">
    <element name="mediaobjectco">
      <ref name="mediaobjectco.attlist"/>
      <optional>
        <ref name="objectinfo"/>
      </optional>
      <ref name="imageobjectco"/>
      <zeroOrMore>
        <choice>
          <ref name="imageobjectco"/>
          <ref name="textobject"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of mediaobjectco.element -->
  <define name="mediaobjectco.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="mediaobjectco.role.attrib"/>
    <ref name="local.mediaobjectco.attrib"/>
  </define>
  <!-- end of mediaobjectco.attlist -->
  <!-- end of mediaobjectco.module -->
  <define name="local.imageobjectco.attrib">
    <empty/>
  </define>
  <define name="imageobjectco.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for an image object with callouts. -->
  <define name="imageobjectco">
    <element name="imageobjectco">
      <ref name="imageobjectco.attlist"/>
      <ref name="areaspec"/>
      <ref name="imageobject"/>
      <zeroOrMore>
        <ref name="calloutlist"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of imageobjectco.element -->
  <define name="imageobjectco.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="imageobjectco.role.attrib"/>
    <ref name="local.imageobjectco.attrib"/>
  </define>
  <!-- end of imageobjectco.attlist -->
  <!-- end of imageobjectco.module -->
  <!-- end of mediaobject.content.module -->
  <!-- Equations ........................ -->
  <!-- This PE provides a mechanism for replacing equation content, -->
  <!-- perhaps adding a new or different model (e.g., MathML) -->
  <define name="equation.content">
    <optional>
      <ref name="alt"/>
    </optional>
    <choice>
      <oneOrMore>
        <ref name="graphic"/>
      </oneOrMore>
      <oneOrMore>
        <ref name="mediaobject"/>
      </oneOrMore>
      <oneOrMore>
        <ref name="mathphrase"/>
      </oneOrMore>
    </choice>
  </define>
  <define name="inlineequation.content">
    <optional>
      <ref name="alt"/>
    </optional>
    <choice>
      <oneOrMore>
        <ref name="graphic"/>
      </oneOrMore>
      <oneOrMore>
        <ref name="inlinemediaobject"/>
      </oneOrMore>
      <oneOrMore>
        <ref name="mathphrase"/>
      </oneOrMore>
    </choice>
  </define>
  <define name="local.equation.attrib">
    <empty/>
  </define>
  <define name="equation.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A displayed mathematical equation. -->
  <define name="equation">
    <element name="equation">
      <ref name="equation.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="formalobject.title.content"/>
      </optional>
      <choice>
        <ref name="informalequation"/>
        <ref name="equation.content"/>
      </choice>
    </element>
  </define>
  <!-- end of equation.element -->
  <define name="equation.attlist" combine="interleave">
    <optional>
      <attribute name="floatstyle"/>
    </optional>
    <ref name="label.attrib"/>
    <ref name="common.attrib"/>
    <ref name="equation.role.attrib"/>
    <ref name="local.equation.attrib"/>
  </define>
  <!-- end of equation.attlist -->
  <!-- end of equation.module -->
  <define name="local.informalequation.attrib">
    <empty/>
  </define>
  <define name="informalequation.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A displayed mathematical equation without a title. -->
  <define name="informalequation">
    <element name="informalequation">
      <ref name="informalequation.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <ref name="equation.content"/>
    </element>
  </define>
  <!-- end of informalequation.element -->
  <define name="informalequation.attlist" combine="interleave">
    <optional>
      <attribute name="floatstyle"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="informalequation.role.attrib"/>
    <ref name="local.informalequation.attrib"/>
  </define>
  <!-- end of informalequation.attlist -->
  <!-- end of informalequation.module -->
  <define name="local.inlineequation.attrib">
    <empty/>
  </define>
  <define name="inlineequation.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A mathematical equation or expression occurring inline. -->
  <define name="inlineequation">
    <element name="inlineequation">
      <ref name="inlineequation.attlist"/>
      <ref name="inlineequation.content"/>
    </element>
  </define>
  <!-- end of inlineequation.element -->
  <define name="inlineequation.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="inlineequation.role.attrib"/>
    <ref name="local.inlineequation.attrib"/>
  </define>
  <!-- end of inlineequation.attlist -->
  <!-- end of inlineequation.module -->
  <define name="local.alt.attrib">
    <empty/>
  </define>
  <define name="alt.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Text representation for a graphical element. -->
  <define name="alt">
    <element name="alt">
      <ref name="alt.attlist"/>
      <text/>
    </element>
  </define>
  <!-- end of alt.element -->
  <define name="alt.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="alt.role.attrib"/>
    <ref name="local.alt.attrib"/>
  </define>
  <!-- end of alt.attlist -->
  <!-- end of alt.module -->
  <define name="local.mathphrase.attrib">
    <empty/>
  </define>
  <define name="mathphrase.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup. -->
  <define name="mathphrase">
    <element name="mathphrase">
      <ref name="mathphrase.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="subscript"/>
          <ref name="superscript"/>
          <ref name="emphasis"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of mathphrase.element -->
  <define name="mathphrase.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="mathphrase.role.attrib"/>
    <ref name="local.mathphrase.attrib"/>
  </define>
  <!-- end of mathphrase.attlist -->
  <!-- end of mathphrase.module -->
  <!-- Tables ........................... -->
  <!-- Choose a table model. CALS or OASIS XML Exchange -->
  <!-- Do we allow the HTML table model as well? -->
  <!-- ====================================================== -->
  <!--
    xhtmltbl.mod defines HTML tables and sets parameter
    entities so that, when the CALS table module is read,
    we end up allowing any table to be CALS or HTML.
    i.e. This include must come first!
  -->
  <!-- ====================================================== -->
  <include href="htmltblx.rng"/>
  <!-- end of allow.html.tables -->
  <!-- Add label and role attributes to table and informaltable -->
  <!--
    Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
    EntryTbl, and Entry (and InformalTable element).
  -->
  <!-- Content model for Table. -->
  <!-- Allow either objects or inlines; beware of REs between elements. -->
  <!-- Reference CALS Table Model -->
  <include href="calstblx.rng"/>
  <!-- end of table.module -->
  <!--
    Note that InformalTable is dependent on some of the entity
    declarations that customize Table.
  -->
  <define name="local.informaltable.attrib">
    <empty/>
  </define>
  <!-- the following entity may have been declared by the XHTML table module -->
  <!-- doc:A table without a title. -->
  <define name="informaltable">
    <element name="informaltable">
      <ref name="informaltable.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <ref name="informal.tbl.table.mdl"/>
    </element>
  </define>
  <!-- end of informaltable.element -->
  <!--
    Frame, Colsep, and Rowsep must be repeated because
    they are not in entities in the table module.
  -->
  <!--
    includes TabStyle, ToCentry, ShortEntry,
    Orient, PgWide
  -->
  <!-- includes Label -->
  <!-- includes common attributes -->
  <define name="informaltable.attlist" combine="interleave">
    <optional>
      <attribute name="frame">
        <choice>
          <ref name="tbl.frame.attval"/>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="colsep">
        <ref name="yesorno.attvals"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="rowsep">
        <ref name="yesorno.attvals"/>
      </attribute>
    </optional>
    <ref name="common.table.attribs"/>
    <ref name="tbl.table.att"/>
    <ref name="local.informaltable.attrib"/>
  </define>
  <!-- end of informaltable.attlist -->
  <!-- end of informaltable.module -->
  <define name="local.caption.attrib">
    <empty/>
  </define>
  <define name="caption.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A caption. -->
  <define name="caption">
    <element name="caption">
      <ref name="caption.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="textobject.mix"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of caption.element -->
  <!-- attrs comes from HTML tables ... -->
  <!-- common.attrib, but without ID because ID is in attrs -->
  <define name="caption.attlist.content">
    <ref name="caption.role.attrib"/>
    <ref name="attrs"/>
    <optional>
      <attribute name="align">
        <choice>
          <value>top</value>
          <value>bottom</value>
          <value>left</value>
          <value>right</value>
        </choice>
      </attribute>
    </optional>
    <ref name="local.caption.attrib"/>
  </define>
  <define name="caption.attlist" combine="interleave">
    <ref name="caption.attlist.content"/>
  </define>
  <!-- end of caption.attlist -->
  <!-- end of caption.module -->
  <!-- ...................................................................... -->
  <!-- Synopses ............................................................. -->
  <!-- Synopsis ......................... -->
  <define name="local.synopsis.attrib">
    <empty/>
  </define>
  <define name="synopsis.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A general-purpose element for representing the syntax of commands or functions. -->
  <define name="synopsis">
    <element name="synopsis">
      <ref name="synopsis.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="para.char.mix"/>
          <ref name="graphic"/>
          <ref name="mediaobject"/>
          <ref name="co"/>
          <ref name="coref"/>
          <ref name="textobject"/>
          <ref name="lineannotation"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of synopsis.element -->
  <define name="synopsis.attlist" combine="interleave">
    <ref name="label.attrib"/>
    <ref name="linespecific.attrib"/>
    <ref name="common.attrib"/>
    <ref name="synopsis.role.attrib"/>
    <ref name="local.synopsis.attrib"/>
  </define>
  <!-- end of synopsis.attlist -->
  <!--  LineAnnotation (defined in the Inlines section, below) -->
  <!-- end of synopsis.module -->
  <!-- CmdSynopsis ...................... -->
  <define name="local.cmdsynopsis.attrib">
    <empty/>
  </define>
  <define name="cmdsynopsis.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A syntax summary for a software command. -->
  <define name="cmdsynopsis">
    <element name="cmdsynopsis">
      <ref name="cmdsynopsis.attlist"/>
      <oneOrMore>
        <choice>
          <ref name="command"/>
          <ref name="arg"/>
          <ref name="group"/>
          <ref name="sbr"/>
        </choice>
      </oneOrMore>
      <zeroOrMore>
        <ref name="synopfragment"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of cmdsynopsis.element -->
  <!--
    Sepchar: Character that should separate command and all
    top-level arguments; alternate value might be e.g., &Delta;
  -->
  <define name="cmdsynopsis.attlist" combine="interleave">
    <ref name="label.attrib"/>
    <optional>
      <attribute name="sepchar" a:defaultValue=" "/>
    </optional>
    <optional>
      <attribute name="cmdlength"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="cmdsynopsis.role.attrib"/>
    <ref name="local.cmdsynopsis.attrib"/>
  </define>
  <!-- end of cmdsynopsis.attlist -->
  <!-- end of cmdsynopsis.module -->
  <define name="local.arg.attrib">
    <empty/>
  </define>
  <define name="arg.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An argument in a CmdSynopsis. -->
  <define name="arg">
    <element name="arg">
      <ref name="arg.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="arg"/>
          <ref name="group"/>
          <ref name="option"/>
          <ref name="synopfragmentref"/>
          <ref name="replaceable"/>
          <ref name="sbr"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of arg.element -->
  <!--
    Choice: Whether Arg must be supplied: Opt (optional to
    supply, e.g. [arg]; the default), Req (required to supply,
    e.g. {arg}), or Plain (required to supply, e.g. arg)
  -->
  <!--
    Rep: whether Arg is repeatable: Norepeat (e.g. arg without
    ellipsis; the default), or Repeat (e.g. arg...)
  -->
  <define name="arg.attlist" combine="interleave">
    <optional>
      <attribute name="choice" a:defaultValue="opt">
        <choice>
          <value>opt</value>
          <value>req</value>
          <value>plain</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="rep" a:defaultValue="norepeat">
        <choice>
          <value>norepeat</value>
          <value>repeat</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="arg.role.attrib"/>
    <ref name="local.arg.attrib"/>
  </define>
  <!-- end of arg.attlist -->
  <!-- end of arg.module -->
  <define name="local.group.attrib">
    <empty/>
  </define>
  <define name="group.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A group of elements in a CmdSynopsis. -->
  <define name="group">
    <element name="group">
      <ref name="group.attlist"/>
      <oneOrMore>
        <choice>
          <ref name="arg"/>
          <ref name="group"/>
          <ref name="option"/>
          <ref name="synopfragmentref"/>
          <ref name="replaceable"/>
          <ref name="sbr"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of group.element -->
  <!--
    Choice: Whether Group must be supplied: Opt (optional to
    supply, e.g.  [g1|g2|g3]; the default), Req (required to
    supply, e.g.  {g1|g2|g3}), Plain (required to supply,
    e.g.  g1|g2|g3), OptMult (can supply zero or more, e.g.
    [[g1|g2|g3]]), or ReqMult (must supply one or more, e.g.
    {{g1|g2|g3}})
  -->
  <!--
    Rep: whether Group is repeatable: Norepeat (e.g. group
    without ellipsis; the default), or Repeat (e.g. group...)
  -->
  <define name="group.attlist" combine="interleave">
    <optional>
      <attribute name="choice" a:defaultValue="opt">
        <choice>
          <value>opt</value>
          <value>req</value>
          <value>plain</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="rep" a:defaultValue="norepeat">
        <choice>
          <value>norepeat</value>
          <value>repeat</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="group.role.attrib"/>
    <ref name="local.group.attrib"/>
  </define>
  <!-- end of group.attlist -->
  <!-- end of group.module -->
  <define name="local.sbr.attrib">
    <empty/>
  </define>
  <!-- Synopsis break -->
  <define name="sbr.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An explicit line break in a command synopsis. -->
  <define name="sbr">
    <element name="sbr">
      <ref name="sbr.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of sbr.element -->
  <define name="sbr.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="sbr.role.attrib"/>
    <ref name="local.sbr.attrib"/>
  </define>
  <!-- end of sbr.attlist -->
  <!-- end of sbr.module -->
  <define name="local.synopfragmentref.attrib">
    <empty/>
  </define>
  <define name="synopfragmentref.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A reference to a fragment of a command synopsis. -->
  <define name="synopfragmentref">
    <element name="synopfragmentref">
      <ref name="synopfragmentref.attlist"/>
      <text/>
    </element>
  </define>
  <!-- end of synopfragmentref.element -->
  <!--
    to SynopFragment of complex synopsis
    material for separate referencing
  -->
  <define name="synopfragmentref.attlist" combine="interleave">
    <ref name="linkendreq.attrib"/>
    <ref name="common.attrib"/>
    <ref name="synopfragmentref.role.attrib"/>
    <ref name="local.synopfragmentref.attrib"/>
  </define>
  <!-- end of synopfragmentref.attlist -->
  <!-- end of synopfragmentref.module -->
  <define name="local.synopfragment.attrib">
    <empty/>
  </define>
  <define name="synopfragment.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A portion of a CmdSynopsis broken out from the main body of the synopsis. -->
  <define name="synopfragment">
    <element name="synopfragment">
      <ref name="synopfragment.attlist"/>
      <oneOrMore>
        <choice>
          <ref name="arg"/>
          <ref name="group"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of synopfragment.element -->
  <define name="synopfragment.attlist" combine="interleave">
    <ref name="idreq.common.attrib"/>
    <ref name="synopfragment.role.attrib"/>
    <ref name="local.synopfragment.attrib"/>
  </define>
  <!-- end of synopfragment.attlist -->
  <!-- end of synopfragment.module -->
  <!--  Command (defined in the Inlines section, below) -->
  <!--  Option (defined in the Inlines section, below) -->
  <!--  Replaceable (defined in the Inlines section, below) -->
  <!-- end of cmdsynopsis.content.module -->
  <!-- FuncSynopsis ..................... -->
  <define name="local.funcsynopsis.attrib">
    <empty/>
  </define>
  <define name="funcsynopsis.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The syntax summary for a function definition. -->
  <define name="funcsynopsis">
    <element name="funcsynopsis">
      <ref name="funcsynopsis.attlist"/>
      <oneOrMore>
        <choice>
          <ref name="funcsynopsisinfo"/>
          <ref name="funcprototype"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of funcsynopsis.element -->
  <define name="funcsynopsis.attlist" combine="interleave">
    <ref name="label.attrib"/>
    <ref name="common.attrib"/>
    <ref name="funcsynopsis.role.attrib"/>
    <ref name="local.funcsynopsis.attrib"/>
  </define>
  <!-- end of funcsynopsis.attlist -->
  <!-- end of funcsynopsis.module -->
  <define name="local.funcsynopsisinfo.attrib">
    <empty/>
  </define>
  <define name="funcsynopsisinfo.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Information supplementing the FuncDefs of a FuncSynopsis. -->
  <define name="funcsynopsisinfo">
    <element name="funcsynopsisinfo">
      <ref name="funcsynopsisinfo.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="cptr.char.mix"/>
          <ref name="textobject"/>
          <ref name="lineannotation"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of funcsynopsisinfo.element -->
  <define name="funcsynopsisinfo.attlist" combine="interleave">
    <ref name="linespecific.attrib"/>
    <ref name="common.attrib"/>
    <ref name="funcsynopsisinfo.role.attrib"/>
    <ref name="local.funcsynopsisinfo.attrib"/>
  </define>
  <!-- end of funcsynopsisinfo.attlist -->
  <!-- end of funcsynopsisinfo.module -->
  <define name="local.funcprototype.attrib">
    <empty/>
  </define>
  <define name="funcprototype.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The prototype of a function. -->
  <define name="funcprototype">
    <element name="funcprototype">
      <ref name="funcprototype.attlist"/>
      <zeroOrMore>
        <ref name="modifier"/>
      </zeroOrMore>
      <ref name="funcdef"/>
      <choice>
        <ref name="void"/>
        <ref name="varargs"/>
        <group>
          <oneOrMore>
            <ref name="paramdef"/>
          </oneOrMore>
          <optional>
            <ref name="varargs"/>
          </optional>
        </group>
      </choice>
      <zeroOrMore>
        <ref name="modifier"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of funcprototype.element -->
  <define name="funcprototype.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="funcprototype.role.attrib"/>
    <ref name="local.funcprototype.attrib"/>
  </define>
  <!-- end of funcprototype.attlist -->
  <!-- end of funcprototype.module -->
  <define name="local.funcdef.attrib">
    <empty/>
  </define>
  <define name="funcdef.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A function (subroutine) name and its return type. -->
  <define name="funcdef">
    <element name="funcdef">
      <ref name="funcdef.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="type"/>
          <ref name="replaceable"/>
          <ref name="function"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of funcdef.element -->
  <define name="funcdef.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="funcdef.role.attrib"/>
    <ref name="local.funcdef.attrib"/>
  </define>
  <!-- end of funcdef.attlist -->
  <!-- end of funcdef.module -->
  <define name="local.void.attrib">
    <empty/>
  </define>
  <define name="void.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An empty element in a function synopsis indicating that the function in question takes no arguments. -->
  <define name="void">
    <element name="void">
      <ref name="void.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of void.element -->
  <define name="void.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="void.role.attrib"/>
    <ref name="local.void.attrib"/>
  </define>
  <!-- end of void.attlist -->
  <!-- end of void.module -->
  <define name="local.varargs.attrib">
    <empty/>
  </define>
  <define name="varargs.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An empty element in a function synopsis indicating a variable number of arguments. -->
  <define name="varargs">
    <element name="varargs">
      <ref name="varargs.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of varargs.element -->
  <define name="varargs.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="varargs.role.attrib"/>
    <ref name="local.varargs.attrib"/>
  </define>
  <!-- end of varargs.attlist -->
  <!-- end of varargs.module -->
  <!--
    Processing assumes that only one Parameter will appear in a
    ParamDef, and that FuncParams will be used at most once, for
    providing information on the "inner parameters" for parameters that
    are pointers to functions.
  -->
  <define name="local.paramdef.attrib">
    <empty/>
  </define>
  <define name="paramdef.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Information about a function parameter in a programming language. -->
  <define name="paramdef">
    <element name="paramdef">
      <ref name="paramdef.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="initializer"/>
          <ref name="type"/>
          <ref name="replaceable"/>
          <ref name="parameter"/>
          <ref name="funcparams"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of paramdef.element -->
  <define name="paramdef.attlist" combine="interleave">
    <optional>
      <attribute name="choice">
        <choice>
          <value>opt</value>
          <value>req</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="paramdef.role.attrib"/>
    <ref name="local.paramdef.attrib"/>
  </define>
  <!-- end of paramdef.attlist -->
  <!-- end of paramdef.module -->
  <define name="local.funcparams.attrib">
    <empty/>
  </define>
  <define name="funcparams.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Parameters for a function referenced through a function pointer in a synopsis. -->
  <define name="funcparams">
    <element name="funcparams">
      <ref name="funcparams.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of funcparams.element -->
  <define name="funcparams.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="funcparams.role.attrib"/>
    <ref name="local.funcparams.attrib"/>
  </define>
  <!-- end of funcparams.attlist -->
  <!-- end of funcparams.module -->
  <!--  LineAnnotation (defined in the Inlines section, below) -->
  <!--  Replaceable (defined in the Inlines section, below) -->
  <!--  Function (defined in the Inlines section, below) -->
  <!--  Parameter (defined in the Inlines section, below) -->
  <!-- end of funcsynopsis.content.module -->
  <!-- ClassSynopsis ..................... -->
  <define name="local.classsynopsis.attrib">
    <empty/>
  </define>
  <define name="classsynopsis.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The syntax summary for a class definition. -->
  <define name="classsynopsis">
    <element name="classsynopsis">
      <ref name="classsynopsis.attlist"/>
      <oneOrMore>
        <choice>
          <ref name="ooclass"/>
          <ref name="oointerface"/>
          <ref name="ooexception"/>
        </choice>
      </oneOrMore>
      <zeroOrMore>
        <choice>
          <ref name="classsynopsisinfo"/>
          <ref name="fieldsynopsis"/>
          <ref name="method.synop.class"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of classsynopsis.element -->
  <define name="classsynopsis.attlist" combine="interleave">
    <optional>
      <attribute name="language"/>
    </optional>
    <optional>
      <attribute name="class" a:defaultValue="class">
        <choice>
          <value>class</value>
          <value>interface</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="classsynopsis.role.attrib"/>
    <ref name="local.classsynopsis.attrib"/>
  </define>
  <!-- end of classsynopsis.attlist -->
  <!-- end of classsynopsis.module -->
  <define name="local.classsynopsisinfo.attrib">
    <empty/>
  </define>
  <define name="classsynopsisinfo.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Information supplementing the contents of a ClassSynopsis. -->
  <define name="classsynopsisinfo">
    <element name="classsynopsisinfo">
      <ref name="classsynopsisinfo.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="cptr.char.mix"/>
          <ref name="textobject"/>
          <ref name="lineannotation"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of classsynopsisinfo.element -->
  <define name="classsynopsisinfo.attlist" combine="interleave">
    <ref name="linespecific.attrib"/>
    <ref name="common.attrib"/>
    <ref name="classsynopsisinfo.role.attrib"/>
    <ref name="local.classsynopsisinfo.attrib"/>
  </define>
  <!-- end of classsynopsisinfo.attlist -->
  <!-- end of classsynopsisinfo.module -->
  <define name="local.ooclass.attrib">
    <empty/>
  </define>
  <define name="ooclass.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A class in an object-oriented programming language. -->
  <define name="ooclass">
    <element name="ooclass">
      <ref name="ooclass.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="modifier"/>
          <ref name="package"/>
        </choice>
      </zeroOrMore>
      <ref name="classname"/>
    </element>
  </define>
  <!-- end of ooclass.element -->
  <define name="ooclass.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="ooclass.role.attrib"/>
    <ref name="local.ooclass.attrib"/>
  </define>
  <!-- end of ooclass.attlist -->
  <!-- end of ooclass.module -->
  <define name="local.oointerface.attrib">
    <empty/>
  </define>
  <define name="oointerface.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An interface in an object-oriented programming language. -->
  <define name="oointerface">
    <element name="oointerface">
      <ref name="oointerface.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="modifier"/>
          <ref name="package"/>
        </choice>
      </zeroOrMore>
      <ref name="interfacename"/>
    </element>
  </define>
  <!-- end of oointerface.element -->
  <define name="oointerface.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="oointerface.role.attrib"/>
    <ref name="local.oointerface.attrib"/>
  </define>
  <!-- end of oointerface.attlist -->
  <!-- end of oointerface.module -->
  <define name="local.ooexception.attrib">
    <empty/>
  </define>
  <define name="ooexception.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An exception in an object-oriented programming language. -->
  <define name="ooexception">
    <element name="ooexception">
      <ref name="ooexception.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="modifier"/>
          <ref name="package"/>
        </choice>
      </zeroOrMore>
      <ref name="exceptionname"/>
    </element>
  </define>
  <!-- end of ooexception.element -->
  <define name="ooexception.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="ooexception.role.attrib"/>
    <ref name="local.ooexception.attrib"/>
  </define>
  <!-- end of ooexception.attlist -->
  <!-- end of ooexception.module -->
  <define name="local.modifier.attrib">
    <empty/>
  </define>
  <define name="modifier.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Modifiers in a synopsis. -->
  <define name="modifier">
    <element name="modifier">
      <ref name="modifier.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of modifier.element -->
  <define name="modifier.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="modifier.role.attrib"/>
    <ref name="local.modifier.attrib"/>
  </define>
  <!-- end of modifier.attlist -->
  <!-- end of modifier.module -->
  <define name="local.interfacename.attrib">
    <empty/>
  </define>
  <define name="interfacename.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of an interface. -->
  <define name="interfacename">
    <element name="interfacename">
      <ref name="interfacename.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of interfacename.element -->
  <define name="interfacename.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="interfacename.role.attrib"/>
    <ref name="local.interfacename.attrib"/>
  </define>
  <!-- end of interfacename.attlist -->
  <!-- end of interfacename.module -->
  <define name="local.exceptionname.attrib">
    <empty/>
  </define>
  <define name="exceptionname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of an exception. -->
  <define name="exceptionname">
    <element name="exceptionname">
      <ref name="exceptionname.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of exceptionname.element -->
  <define name="exceptionname.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="exceptionname.role.attrib"/>
    <ref name="local.exceptionname.attrib"/>
  </define>
  <!-- end of exceptionname.attlist -->
  <!-- end of exceptionname.module -->
  <define name="local.fieldsynopsis.attrib">
    <empty/>
  </define>
  <define name="fieldsynopsis.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a field in a class definition. -->
  <define name="fieldsynopsis">
    <element name="fieldsynopsis">
      <ref name="fieldsynopsis.attlist"/>
      <zeroOrMore>
        <ref name="modifier"/>
      </zeroOrMore>
      <optional>
        <ref name="type"/>
      </optional>
      <ref name="varname"/>
      <optional>
        <ref name="initializer"/>
      </optional>
    </element>
  </define>
  <!-- end of fieldsynopsis.element -->
  <define name="fieldsynopsis.attlist" combine="interleave">
    <optional>
      <attribute name="language"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="fieldsynopsis.role.attrib"/>
    <ref name="local.fieldsynopsis.attrib"/>
  </define>
  <!-- end of fieldsynopsis.attlist -->
  <!-- end of fieldsynopsis.module -->
  <define name="local.initializer.attrib">
    <empty/>
  </define>
  <define name="initializer.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The initializer for a FieldSynopsis. -->
  <define name="initializer">
    <element name="initializer">
      <ref name="initializer.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of initializer.element -->
  <define name="initializer.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="initializer.role.attrib"/>
    <ref name="local.initializer.attrib"/>
  </define>
  <!-- end of initializer.attlist -->
  <!-- end of initializer.module -->
  <define name="local.constructorsynopsis.attrib">
    <empty/>
  </define>
  <define name="constructorsynopsis.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A syntax summary for a constructor. -->
  <define name="constructorsynopsis">
    <element name="constructorsynopsis">
      <ref name="constructorsynopsis.attlist"/>
      <zeroOrMore>
        <ref name="modifier"/>
      </zeroOrMore>
      <optional>
        <ref name="methodname"/>
      </optional>
      <choice>
        <oneOrMore>
          <ref name="methodparam"/>
        </oneOrMore>
        <optional>
          <ref name="void"/>
        </optional>
      </choice>
      <zeroOrMore>
        <ref name="exceptionname"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of constructorsynopsis.element -->
  <define name="constructorsynopsis.attlist" combine="interleave">
    <optional>
      <attribute name="language"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="constructorsynopsis.role.attrib"/>
    <ref name="local.constructorsynopsis.attrib"/>
  </define>
  <!-- end of constructorsynopsis.attlist -->
  <!-- end of constructorsynopsis.module -->
  <define name="local.destructorsynopsis.attrib">
    <empty/>
  </define>
  <define name="destructorsynopsis.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A syntax summary for a destructor. -->
  <define name="destructorsynopsis">
    <element name="destructorsynopsis">
      <ref name="destructorsynopsis.attlist"/>
      <zeroOrMore>
        <ref name="modifier"/>
      </zeroOrMore>
      <optional>
        <ref name="methodname"/>
      </optional>
      <choice>
        <oneOrMore>
          <ref name="methodparam"/>
        </oneOrMore>
        <optional>
          <ref name="void"/>
        </optional>
      </choice>
      <zeroOrMore>
        <ref name="exceptionname"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of destructorsynopsis.element -->
  <define name="destructorsynopsis.attlist" combine="interleave">
    <optional>
      <attribute name="language"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="destructorsynopsis.role.attrib"/>
    <ref name="local.destructorsynopsis.attrib"/>
  </define>
  <!-- end of destructorsynopsis.attlist -->
  <!-- end of destructorsynopsis.module -->
  <define name="local.methodsynopsis.attrib">
    <empty/>
  </define>
  <define name="methodsynopsis.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A syntax summary for a method. -->
  <define name="methodsynopsis">
    <element name="methodsynopsis">
      <ref name="methodsynopsis.attlist"/>
      <zeroOrMore>
        <ref name="modifier"/>
      </zeroOrMore>
      <optional>
        <choice>
          <ref name="type"/>
          <ref name="void"/>
        </choice>
      </optional>
      <ref name="methodname"/>
      <choice>
        <oneOrMore>
          <ref name="methodparam"/>
        </oneOrMore>
        <optional>
          <ref name="void"/>
        </optional>
      </choice>
      <zeroOrMore>
        <ref name="exceptionname"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="modifier"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of methodsynopsis.element -->
  <define name="methodsynopsis.attlist" combine="interleave">
    <optional>
      <attribute name="language"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="methodsynopsis.role.attrib"/>
    <ref name="local.methodsynopsis.attrib"/>
  </define>
  <!-- end of methodsynopsis.attlist -->
  <!-- end of methodsynopsis.module -->
  <define name="local.methodname.attrib">
    <empty/>
  </define>
  <define name="methodname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a method. -->
  <define name="methodname">
    <element name="methodname">
      <ref name="methodname.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of methodname.element -->
  <define name="methodname.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="methodname.role.attrib"/>
    <ref name="local.methodname.attrib"/>
  </define>
  <!-- end of methodname.attlist -->
  <!-- end of methodname.module -->
  <define name="local.methodparam.attrib">
    <empty/>
  </define>
  <define name="methodparam.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Parameters to a method. -->
  <define name="methodparam">
    <element name="methodparam">
      <ref name="methodparam.attlist"/>
      <zeroOrMore>
        <ref name="modifier"/>
      </zeroOrMore>
      <optional>
        <ref name="type"/>
      </optional>
      <choice>
        <group>
          <ref name="parameter"/>
          <optional>
            <ref name="initializer"/>
          </optional>
        </group>
        <ref name="funcparams"/>
      </choice>
      <zeroOrMore>
        <ref name="modifier"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of methodparam.element -->
  <define name="methodparam.attlist" combine="interleave">
    <optional>
      <attribute name="choice" a:defaultValue="req">
        <choice>
          <value>opt</value>
          <value>req</value>
          <value>plain</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="rep" a:defaultValue="norepeat">
        <choice>
          <value>norepeat</value>
          <value>repeat</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="methodparam.role.attrib"/>
    <ref name="local.methodparam.attrib"/>
  </define>
  <!-- end of methodparam.attlist -->
  <!-- end of methodparam.module -->
  <!-- end of classsynopsis.content.module -->
  <!-- ...................................................................... -->
  <!-- Document information entities and elements ........................... -->
  <!--
    The document information elements include some elements that are
    currently used only in the document hierarchy module. They are
    defined here so that they will be available for use in customized
    document hierarchies.
  -->
  <!-- .................................. -->
  <!-- Ackno ............................ -->
  <define name="local.ackno.attrib">
    <empty/>
  </define>
  <define name="ackno.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Acknowledgements in an Article. -->
  <define name="ackno">
    <element name="ackno">
      <ref name="ackno.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of ackno.element -->
  <define name="ackno.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="ackno.role.attrib"/>
    <ref name="local.ackno.attrib"/>
  </define>
  <!-- end of ackno.attlist -->
  <!-- end of ackno.module -->
  <!-- Address .......................... -->
  <define name="local.address.attrib">
    <empty/>
  </define>
  <define name="address.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A real-world address, generally a postal address. -->
  <define name="address">
    <element name="address">
      <ref name="address.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="personname"/>
          <ref name="person.ident.mix"/>
          <ref name="street"/>
          <ref name="pob"/>
          <ref name="postcode"/>
          <ref name="city"/>
          <ref name="state"/>
          <ref name="country"/>
          <ref name="phone"/>
          <ref name="fax"/>
          <ref name="email"/>
          <ref name="otheraddr"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of address.element -->
  <define name="address.attlist" combine="interleave">
    <ref name="linespecific.attrib"/>
    <ref name="common.attrib"/>
    <ref name="address.role.attrib"/>
    <ref name="local.address.attrib"/>
  </define>
  <!-- end of address.attlist -->
  <!-- end of address.module -->
  <define name="local.street.attrib">
    <empty/>
  </define>
  <define name="street.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A street address in an address. -->
  <define name="street">
    <element name="street">
      <ref name="street.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of street.element -->
  <define name="street.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="street.role.attrib"/>
    <ref name="local.street.attrib"/>
  </define>
  <!-- end of street.attlist -->
  <!-- end of street.module -->
  <define name="local.pob.attrib">
    <empty/>
  </define>
  <define name="pob.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A post office box in an address. -->
  <define name="pob">
    <element name="pob">
      <ref name="pob.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of pob.element -->
  <define name="pob.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="pob.role.attrib"/>
    <ref name="local.pob.attrib"/>
  </define>
  <!-- end of pob.attlist -->
  <!-- end of pob.module -->
  <define name="local.postcode.attrib">
    <empty/>
  </define>
  <define name="postcode.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A postal code in an address. -->
  <define name="postcode">
    <element name="postcode">
      <ref name="postcode.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of postcode.element -->
  <define name="postcode.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="postcode.role.attrib"/>
    <ref name="local.postcode.attrib"/>
  </define>
  <!-- end of postcode.attlist -->
  <!-- end of postcode.module -->
  <define name="local.city.attrib">
    <empty/>
  </define>
  <define name="city.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a city in an address. -->
  <define name="city">
    <element name="city">
      <ref name="city.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of city.element -->
  <define name="city.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="city.role.attrib"/>
    <ref name="local.city.attrib"/>
  </define>
  <!-- end of city.attlist -->
  <!-- end of city.module -->
  <define name="local.state.attrib">
    <empty/>
  </define>
  <define name="state.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A state or province in an address. -->
  <define name="state">
    <element name="state">
      <ref name="state.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of state.element -->
  <define name="state.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="state.role.attrib"/>
    <ref name="local.state.attrib"/>
  </define>
  <!-- end of state.attlist -->
  <!-- end of state.module -->
  <define name="local.country.attrib">
    <empty/>
  </define>
  <define name="country.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a country. -->
  <define name="country">
    <element name="country">
      <ref name="country.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of country.element -->
  <define name="country.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="country.role.attrib"/>
    <ref name="local.country.attrib"/>
  </define>
  <!-- end of country.attlist -->
  <!-- end of country.module -->
  <define name="local.phone.attrib">
    <empty/>
  </define>
  <define name="phone.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A telephone number. -->
  <define name="phone">
    <element name="phone">
      <ref name="phone.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of phone.element -->
  <define name="phone.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="phone.role.attrib"/>
    <ref name="local.phone.attrib"/>
  </define>
  <!-- end of phone.attlist -->
  <!-- end of phone.module -->
  <define name="local.fax.attrib">
    <empty/>
  </define>
  <define name="fax.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A fax number. -->
  <define name="fax">
    <element name="fax">
      <ref name="fax.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of fax.element -->
  <define name="fax.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="fax.role.attrib"/>
    <ref name="local.fax.attrib"/>
  </define>
  <!-- end of fax.attlist -->
  <!-- end of fax.module -->
  <!--  Email (defined in the Inlines section, below) -->
  <define name="local.otheraddr.attrib">
    <empty/>
  </define>
  <define name="otheraddr.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Uncategorized information in address. -->
  <define name="otheraddr">
    <element name="otheraddr">
      <ref name="otheraddr.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of otheraddr.element -->
  <define name="otheraddr.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="otheraddr.role.attrib"/>
    <ref name="local.otheraddr.attrib"/>
  </define>
  <!-- end of otheraddr.attlist -->
  <!-- end of otheraddr.module -->
  <!-- end of address.content.module -->
  <!-- Affiliation ...................... -->
  <define name="local.affiliation.attrib">
    <empty/>
  </define>
  <define name="affiliation.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The institutional affiliation of an individual. -->
  <define name="affiliation">
    <element name="affiliation">
      <ref name="affiliation.attlist"/>
      <optional>
        <ref name="shortaffil"/>
      </optional>
      <zeroOrMore>
        <ref name="jobtitle"/>
      </zeroOrMore>
      <optional>
        <ref name="orgname"/>
      </optional>
      <zeroOrMore>
        <ref name="orgdiv"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="address"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of affiliation.element -->
  <define name="affiliation.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="affiliation.role.attrib"/>
    <ref name="local.affiliation.attrib"/>
  </define>
  <!-- end of affiliation.attlist -->
  <!-- end of affiliation.module -->
  <define name="local.shortaffil.attrib">
    <empty/>
  </define>
  <define name="shortaffil.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A brief description of an affiliation. -->
  <define name="shortaffil">
    <element name="shortaffil">
      <ref name="shortaffil.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of shortaffil.element -->
  <define name="shortaffil.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="shortaffil.role.attrib"/>
    <ref name="local.shortaffil.attrib"/>
  </define>
  <!-- end of shortaffil.attlist -->
  <!-- end of shortaffil.module -->
  <define name="local.jobtitle.attrib">
    <empty/>
  </define>
  <define name="jobtitle.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The title of an individual in an organization. -->
  <define name="jobtitle">
    <element name="jobtitle">
      <ref name="jobtitle.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of jobtitle.element -->
  <define name="jobtitle.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="jobtitle.role.attrib"/>
    <ref name="local.jobtitle.attrib"/>
  </define>
  <!-- end of jobtitle.attlist -->
  <!-- end of jobtitle.module -->
  <!--  OrgName (defined elsewhere in this section) -->
  <define name="local.orgdiv.attrib">
    <empty/>
  </define>
  <define name="orgdiv.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A division of an organization. -->
  <define name="orgdiv">
    <element name="orgdiv">
      <ref name="orgdiv.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of orgdiv.element -->
  <define name="orgdiv.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="orgdiv.role.attrib"/>
    <ref name="local.orgdiv.attrib"/>
  </define>
  <!-- end of orgdiv.attlist -->
  <!-- end of orgdiv.module -->
  <!--  Address (defined elsewhere in this section) -->
  <!-- end of affiliation.content.module -->
  <!-- ArtPageNums ...................... -->
  <define name="local.artpagenums.attrib">
    <empty/>
  </define>
  <define name="artpagenums.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The page numbers of an article as published. -->
  <define name="artpagenums">
    <element name="artpagenums">
      <ref name="artpagenums.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of artpagenums.element -->
  <define name="artpagenums.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="artpagenums.role.attrib"/>
    <ref name="local.artpagenums.attrib"/>
  </define>
  <!-- end of artpagenums.attlist -->
  <!-- end of artpagenums.module -->
  <!-- PersonName -->
  <define name="local.personname.attrib">
    <empty/>
  </define>
  <define name="personname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The personal name of an individual. -->
  <define name="personname">
    <element name="personname">
      <ref name="personname.attlist"/>
      <oneOrMore>
        <choice>
          <ref name="honorific"/>
          <ref name="firstname"/>
          <ref name="surname"/>
          <ref name="lineage"/>
          <ref name="othername"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of personname.element -->
  <define name="personname.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="personname.role.attrib"/>
    <ref name="local.personname.attrib"/>
  </define>
  <!-- end of personname.attlist -->
  <!-- end of personname.module -->
  <!-- Author ........................... -->
  <define name="local.author.attrib">
    <empty/>
  </define>
  <define name="author.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of an individual author. -->
  <define name="author">
    <element name="author">
      <ref name="author.attlist"/>
      <choice>
        <ref name="personname"/>
        <oneOrMore>
          <ref name="person.ident.mix"/>
        </oneOrMore>
      </choice>
      <zeroOrMore>
        <choice>
          <ref name="personblurb"/>
          <ref name="email"/>
          <ref name="address"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of author.element -->
  <define name="author.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="author.role.attrib"/>
    <ref name="local.author.attrib"/>
  </define>
  <!-- end of author.attlist -->
  <!-- (see "Personal identity elements" for %person.ident.mix;) -->
  <!-- end of author.module -->
  <!-- AuthorGroup ...................... -->
  <define name="local.authorgroup.attrib">
    <empty/>
  </define>
  <define name="authorgroup.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Wrapper for author information when a document has multiple authors or collabarators. -->
  <define name="authorgroup">
    <element name="authorgroup">
      <ref name="authorgroup.attlist"/>
      <oneOrMore>
        <choice>
          <ref name="author"/>
          <ref name="editor"/>
          <ref name="collab"/>
          <ref name="corpauthor"/>
          <ref name="corpcredit"/>
          <ref name="othercredit"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of authorgroup.element -->
  <define name="authorgroup.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="authorgroup.role.attrib"/>
    <ref name="local.authorgroup.attrib"/>
  </define>
  <!-- end of authorgroup.attlist -->
  <!-- end of authorgroup.module -->
  <!--  Author (defined elsewhere in this section) -->
  <!--  Editor (defined elsewhere in this section) -->
  <define name="local.collab.attrib">
    <empty/>
  </define>
  <define name="collab.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Identifies a collaborator. -->
  <define name="collab">
    <element name="collab">
      <ref name="collab.attlist"/>
      <ref name="collabname"/>
      <zeroOrMore>
        <ref name="affiliation"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of collab.element -->
  <define name="collab.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="collab.role.attrib"/>
    <ref name="local.collab.attrib"/>
  </define>
  <!-- end of collab.attlist -->
  <!-- end of collab.module -->
  <define name="local.collabname.attrib">
    <empty/>
  </define>
  <define name="collabname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a collaborator. -->
  <define name="collabname">
    <element name="collabname">
      <ref name="collabname.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of collabname.element -->
  <define name="collabname.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="collabname.role.attrib"/>
    <ref name="local.collabname.attrib"/>
  </define>
  <!-- end of collabname.attlist -->
  <!-- end of collabname.module -->
  <!--  Affiliation (defined elsewhere in this section) -->
  <!-- end of collab.content.module -->
  <!--  CorpAuthor (defined elsewhere in this section) -->
  <!--  OtherCredit (defined elsewhere in this section) -->
  <!-- end of authorgroup.content.module -->
  <!-- AuthorInitials ................... -->
  <define name="local.authorinitials.attrib">
    <empty/>
  </define>
  <define name="authorinitials.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The initials or other short identifier for an author. -->
  <define name="authorinitials">
    <element name="authorinitials">
      <ref name="authorinitials.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of authorinitials.element -->
  <define name="authorinitials.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="authorinitials.role.attrib"/>
    <ref name="local.authorinitials.attrib"/>
  </define>
  <!-- end of authorinitials.attlist -->
  <!-- end of authorinitials.module -->
  <!-- ConfGroup ........................ -->
  <define name="local.confgroup.attrib">
    <empty/>
  </define>
  <define name="confgroup.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for document meta-information about a conference. -->
  <define name="confgroup">
    <element name="confgroup">
      <ref name="confgroup.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="confdates"/>
          <ref name="conftitle"/>
          <ref name="confnum"/>
          <ref name="address"/>
          <ref name="confsponsor"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of confgroup.element -->
  <define name="confgroup.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="confgroup.role.attrib"/>
    <ref name="local.confgroup.attrib"/>
  </define>
  <!-- end of confgroup.attlist -->
  <!-- end of confgroup.module -->
  <define name="local.confdates.attrib">
    <empty/>
  </define>
  <define name="confdates.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The dates of a conference for which a document was written. -->
  <define name="confdates">
    <element name="confdates">
      <ref name="confdates.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of confdates.element -->
  <define name="confdates.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="confdates.role.attrib"/>
    <ref name="local.confdates.attrib"/>
  </define>
  <!-- end of confdates.attlist -->
  <!-- end of confdates.module -->
  <define name="local.conftitle.attrib">
    <empty/>
  </define>
  <define name="conftitle.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The title of a conference for which a document was written. -->
  <define name="conftitle">
    <element name="conftitle">
      <ref name="conftitle.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of conftitle.element -->
  <define name="conftitle.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="conftitle.role.attrib"/>
    <ref name="local.conftitle.attrib"/>
  </define>
  <!-- end of conftitle.attlist -->
  <!-- end of conftitle.module -->
  <define name="local.confnum.attrib">
    <empty/>
  </define>
  <define name="confnum.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An identifier, frequently numerical, associated with a conference for which a document was written. -->
  <define name="confnum">
    <element name="confnum">
      <ref name="confnum.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of confnum.element -->
  <define name="confnum.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="confnum.role.attrib"/>
    <ref name="local.confnum.attrib"/>
  </define>
  <!-- end of confnum.attlist -->
  <!-- end of confnum.module -->
  <!--  Address (defined elsewhere in this section) -->
  <define name="local.confsponsor.attrib">
    <empty/>
  </define>
  <define name="confsponsor.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The sponsor of a conference for which a document was written. -->
  <define name="confsponsor">
    <element name="confsponsor">
      <ref name="confsponsor.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of confsponsor.element -->
  <define name="confsponsor.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="confsponsor.role.attrib"/>
    <ref name="local.confsponsor.attrib"/>
  </define>
  <!-- end of confsponsor.attlist -->
  <!-- end of confsponsor.module -->
  <!-- end of confgroup.content.module -->
  <!-- ContractNum ...................... -->
  <define name="local.contractnum.attrib">
    <empty/>
  </define>
  <define name="contractnum.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The contract number of a document. -->
  <define name="contractnum">
    <element name="contractnum">
      <ref name="contractnum.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of contractnum.element -->
  <define name="contractnum.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="contractnum.role.attrib"/>
    <ref name="local.contractnum.attrib"/>
  </define>
  <!-- end of contractnum.attlist -->
  <!-- end of contractnum.module -->
  <!-- ContractSponsor .................. -->
  <define name="local.contractsponsor.attrib">
    <empty/>
  </define>
  <define name="contractsponsor.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The sponsor of a contract. -->
  <define name="contractsponsor">
    <element name="contractsponsor">
      <ref name="contractsponsor.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of contractsponsor.element -->
  <define name="contractsponsor.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="contractsponsor.role.attrib"/>
    <ref name="local.contractsponsor.attrib"/>
  </define>
  <!-- end of contractsponsor.attlist -->
  <!-- end of contractsponsor.module -->
  <!-- Copyright ........................ -->
  <define name="local.copyright.attrib">
    <empty/>
  </define>
  <define name="copyright.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Copyright information about a document. -->
  <define name="copyright">
    <element name="copyright">
      <ref name="copyright.attlist"/>
      <oneOrMore>
        <ref name="year"/>
      </oneOrMore>
      <zeroOrMore>
        <ref name="holder"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of copyright.element -->
  <define name="copyright.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="copyright.role.attrib"/>
    <ref name="local.copyright.attrib"/>
  </define>
  <!-- end of copyright.attlist -->
  <!-- end of copyright.module -->
  <define name="local.year.attrib">
    <empty/>
  </define>
  <define name="year.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The year of publication of a document. -->
  <define name="year">
    <element name="year">
      <ref name="year.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of year.element -->
  <define name="year.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="year.role.attrib"/>
    <ref name="local.year.attrib"/>
  </define>
  <!-- end of year.attlist -->
  <!-- end of year.module -->
  <define name="local.holder.attrib">
    <empty/>
  </define>
  <define name="holder.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of the individual or organization that holds a copyright. -->
  <define name="holder">
    <element name="holder">
      <ref name="holder.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of holder.element -->
  <define name="holder.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="holder.role.attrib"/>
    <ref name="local.holder.attrib"/>
  </define>
  <!-- end of holder.attlist -->
  <!-- end of holder.module -->
  <!-- end of copyright.content.module -->
  <!-- CorpAuthor ....................... -->
  <define name="local.corpauthor.attrib">
    <empty/>
  </define>
  <define name="corpauthor.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A corporate author, as opposed to an individual. -->
  <define name="corpauthor">
    <element name="corpauthor">
      <ref name="corpauthor.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of corpauthor.element -->
  <define name="corpauthor.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="corpauthor.role.attrib"/>
    <ref name="local.corpauthor.attrib"/>
  </define>
  <!-- end of corpauthor.attlist -->
  <!-- end of corpauthor.module -->
  <!-- CorpCredit ...................... -->
  <define name="local.corpcredit.attrib">
    <empty/>
  </define>
  <define name="corpcredit.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A corporation or organization credited in a document. -->
  <define name="corpcredit">
    <element name="corpcredit">
      <ref name="corpcredit.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of corpcredit.element -->
  <define name="corpcredit.attlist" combine="interleave">
    <optional>
      <attribute name="class">
        <choice>
          <value>graphicdesigner</value>
          <value>productioneditor</value>
          <value>copyeditor</value>
          <value>technicaleditor</value>
          <value>translator</value>
          <value>other</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="corpcredit.role.attrib"/>
    <ref name="local.corpcredit.attrib"/>
  </define>
  <!-- end of corpcredit.attlist -->
  <!-- end of corpcredit.module -->
  <!-- CorpName ......................... -->
  <define name="local.corpname.attrib">
    <empty/>
  </define>
  <!-- doc:The name of a corporation. -->
  <define name="corpname">
    <element name="corpname">
      <ref name="corpname.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of corpname.element -->
  <define name="corpname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <define name="corpname.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="corpname.role.attrib"/>
    <ref name="local.corpname.attrib"/>
  </define>
  <!-- end of corpname.attlist -->
  <!-- end of corpname.module -->
  <!-- Date ............................. -->
  <define name="local.date.attrib">
    <empty/>
  </define>
  <define name="date.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The date of publication or revision of a document. -->
  <define name="date">
    <element name="date">
      <ref name="date.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of date.element -->
  <define name="date.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="date.role.attrib"/>
    <ref name="local.date.attrib"/>
  </define>
  <!-- end of date.attlist -->
  <!-- end of date.module -->
  <!-- Edition .......................... -->
  <define name="local.edition.attrib">
    <empty/>
  </define>
  <define name="edition.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name or number of an edition of a document. -->
  <define name="edition">
    <element name="edition">
      <ref name="edition.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of edition.element -->
  <define name="edition.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="edition.role.attrib"/>
    <ref name="local.edition.attrib"/>
  </define>
  <!-- end of edition.attlist -->
  <!-- end of edition.module -->
  <!-- Editor ........................... -->
  <define name="local.editor.attrib">
    <empty/>
  </define>
  <define name="editor.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of the editor of a document. -->
  <define name="editor">
    <element name="editor">
      <ref name="editor.attlist"/>
      <choice>
        <ref name="personname"/>
        <oneOrMore>
          <ref name="person.ident.mix"/>
        </oneOrMore>
      </choice>
      <zeroOrMore>
        <choice>
          <ref name="personblurb"/>
          <ref name="email"/>
          <ref name="address"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of editor.element -->
  <define name="editor.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="editor.role.attrib"/>
    <ref name="local.editor.attrib"/>
  </define>
  <!-- end of editor.attlist -->
  <!-- (see "Personal identity elements" for %person.ident.mix;) -->
  <!-- end of editor.module -->
  <!-- ISBN ............................. -->
  <define name="local.isbn.attrib">
    <empty/>
  </define>
  <define name="isbn.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The International Standard Book Number of a document. -->
  <define name="isbn">
    <element name="isbn">
      <ref name="isbn.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of isbn.element -->
  <define name="isbn.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="isbn.role.attrib"/>
    <ref name="local.isbn.attrib"/>
  </define>
  <!-- end of isbn.attlist -->
  <!-- end of isbn.module -->
  <!-- ISSN ............................. -->
  <define name="local.issn.attrib">
    <empty/>
  </define>
  <define name="issn.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The International Standard Serial Number of a periodical. -->
  <define name="issn">
    <element name="issn">
      <ref name="issn.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of issn.element -->
  <define name="issn.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="issn.role.attrib"/>
    <ref name="local.issn.attrib"/>
  </define>
  <!-- end of issn.attlist -->
  <!-- end of issn.module -->
  <!-- BiblioId ................. -->
  <define name="biblio.class.attrib">
    <optional>
      <attribute name="class">
        <choice>
          <value>uri</value>
          <value>doi</value>
          <value>isbn</value>
          <value>isrn</value>
          <value>issn</value>
          <value>libraryofcongress</value>
          <value>pubnumber</value>
          <value>other</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="otherclass"/>
    </optional>
  </define>
  <define name="local.biblioid.attrib">
    <empty/>
  </define>
  <define name="biblioid.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An identifier for a document. -->
  <define name="biblioid">
    <element name="biblioid">
      <ref name="biblioid.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of biblioid.element -->
  <define name="biblioid.attlist" combine="interleave">
    <ref name="biblio.class.attrib"/>
    <ref name="common.attrib"/>
    <ref name="biblioid.role.attrib"/>
    <ref name="local.biblioid.attrib"/>
  </define>
  <!-- end of biblioid.attlist -->
  <!-- end of biblioid.module -->
  <!-- CiteBiblioId ................. -->
  <define name="local.citebiblioid.attrib">
    <empty/>
  </define>
  <define name="citebiblioid.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A citation of a bibliographic identifier. -->
  <define name="citebiblioid">
    <element name="citebiblioid">
      <ref name="citebiblioid.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of citebiblioid.element -->
  <define name="citebiblioid.attlist" combine="interleave">
    <ref name="biblio.class.attrib"/>
    <ref name="common.attrib"/>
    <ref name="citebiblioid.role.attrib"/>
    <ref name="local.citebiblioid.attrib"/>
  </define>
  <!-- end of citebiblioid.attlist -->
  <!-- end of citebiblioid.module -->
  <!-- BiblioSource ................. -->
  <define name="local.bibliosource.attrib">
    <empty/>
  </define>
  <define name="bibliosource.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The source of a document. -->
  <define name="bibliosource">
    <element name="bibliosource">
      <ref name="bibliosource.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of bibliosource.element -->
  <define name="bibliosource.attlist" combine="interleave">
    <ref name="biblio.class.attrib"/>
    <ref name="common.attrib"/>
    <ref name="bibliosource.role.attrib"/>
    <ref name="local.bibliosource.attrib"/>
  </define>
  <!-- end of bibliosource.attlist -->
  <!-- end of bibliosource.module -->
  <!-- BiblioRelation ................. -->
  <define name="local.bibliorelation.attrib">
    <empty/>
  </define>
  <define name="local.bibliorelation.types">
    <notAllowed/>
  </define>
  <define name="bibliorelation.type.attrib">
    <optional>
      <attribute name="type">
        <choice>
          <value>isversionof</value>
          <value>hasversion</value>
          <value>isreplacedby</value>
          <value>replaces</value>
          <value>isrequiredby</value>
          <value>requires</value>
          <value>ispartof</value>
          <value>haspart</value>
          <value>isreferencedby</value>
          <value>references</value>
          <value>isformatof</value>
          <value>hasformat</value>
          <value>othertype</value>
          <ref name="local.bibliorelation.types"/>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="othertype"/>
    </optional>
  </define>
  <define name="bibliorelation.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The relationship of a document to another. -->
  <define name="bibliorelation">
    <element name="bibliorelation">
      <ref name="bibliorelation.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of bibliorelation.element -->
  <define name="bibliorelation.attlist" combine="interleave">
    <ref name="biblio.class.attrib"/>
    <ref name="bibliorelation.type.attrib"/>
    <ref name="common.attrib"/>
    <ref name="bibliorelation.role.attrib"/>
    <ref name="local.bibliorelation.attrib"/>
  </define>
  <!-- end of bibliorelation.attlist -->
  <!-- end of bibliorelation.module -->
  <!-- BiblioCoverage ................. -->
  <define name="local.bibliocoverage.attrib">
    <empty/>
  </define>
  <define name="bibliocoverage.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The spatial or temporal coverage of a document. -->
  <define name="bibliocoverage">
    <element name="bibliocoverage">
      <ref name="bibliocoverage.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of bibliocoverage.element -->
  <define name="bibliocoverage.attlist" combine="interleave">
    <optional>
      <attribute name="spatial">
        <choice>
          <value>dcmipoint</value>
          <value>iso3166</value>
          <value>dcmibox</value>
          <value>tgn</value>
          <value>otherspatial</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="otherspatial"/>
    </optional>
    <optional>
      <attribute name="temporal">
        <choice>
          <value>dcmiperiod</value>
          <value>w3c-dtf</value>
          <value>othertemporal</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="othertemporal"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="bibliocoverage.role.attrib"/>
    <ref name="local.bibliocoverage.attrib"/>
  </define>
  <!-- end of bibliocoverage.attlist -->
  <!-- end of bibliocoverage.module -->
  <!-- InvPartNumber .................... -->
  <define name="local.invpartnumber.attrib">
    <empty/>
  </define>
  <define name="invpartnumber.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An inventory part number. -->
  <define name="invpartnumber">
    <element name="invpartnumber">
      <ref name="invpartnumber.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of invpartnumber.element -->
  <define name="invpartnumber.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="invpartnumber.role.attrib"/>
    <ref name="local.invpartnumber.attrib"/>
  </define>
  <!-- end of invpartnumber.attlist -->
  <!-- end of invpartnumber.module -->
  <!-- IssueNum ......................... -->
  <define name="local.issuenum.attrib">
    <empty/>
  </define>
  <define name="issuenum.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The number of an issue of a journal. -->
  <define name="issuenum">
    <element name="issuenum">
      <ref name="issuenum.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of issuenum.element -->
  <define name="issuenum.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="issuenum.role.attrib"/>
    <ref name="local.issuenum.attrib"/>
  </define>
  <!-- end of issuenum.attlist -->
  <!-- end of issuenum.module -->
  <!-- LegalNotice ...................... -->
  <define name="local.legalnotice.attrib">
    <empty/>
  </define>
  <define name="legalnotice.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A statement of legal obligations or requirements. -->
  <define name="legalnotice">
    <element name="legalnotice">
      <ref name="legalnotice.attlist"/>
      <optional>
        <ref name="blockinfo"/>
      </optional>
      <optional>
        <ref name="title"/>
      </optional>
      <oneOrMore>
        <ref name="legalnotice.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of legalnotice.element -->
  <define name="legalnotice.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="legalnotice.role.attrib"/>
    <ref name="local.legalnotice.attrib"/>
  </define>
  <!-- end of legalnotice.attlist -->
  <!-- end of legalnotice.module -->
  <!-- ModeSpec ......................... -->
  <define name="local.modespec.attrib">
    <empty/>
  </define>
  <define name="modespec.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Application-specific information necessary for the completion of an OLink. -->
  <define name="modespec">
    <element name="modespec">
      <ref name="modespec.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of modespec.element -->
  <!--
    Application: Type of action required for completion
    of the links to which the ModeSpec is relevant (e.g.,
    retrieval query)
  -->
  <define name="modespec.attlist" combine="interleave">
    <optional>
      <attribute name="application">
        <choice>
          <ref name="notation.class"/>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="modespec.role.attrib"/>
    <ref name="local.modespec.attrib"/>
  </define>
  <!-- end of modespec.attlist -->
  <!-- end of modespec.module -->
  <!-- OrgName .......................... -->
  <define name="local.orgname.attrib">
    <empty/>
  </define>
  <define name="orgname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of an organization other than a corporation. -->
  <define name="orgname">
    <element name="orgname">
      <ref name="orgname.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of orgname.element -->
  <define name="orgname.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <optional>
      <attribute name="class">
        <choice>
          <value>corporation</value>
          <value>nonprofit</value>
          <value>consortium</value>
          <value>informal</value>
          <value>other</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="otherclass"/>
    </optional>
    <ref name="orgname.role.attrib"/>
    <ref name="local.orgname.attrib"/>
  </define>
  <!-- end of orgname.attlist -->
  <!-- end of orgname.module -->
  <!-- OtherCredit ...................... -->
  <define name="local.othercredit.attrib">
    <empty/>
  </define>
  <define name="othercredit.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A person or entity, other than an author or editor, credited in a document. -->
  <define name="othercredit">
    <element name="othercredit">
      <ref name="othercredit.attlist"/>
      <choice>
        <ref name="personname"/>
        <oneOrMore>
          <ref name="person.ident.mix"/>
        </oneOrMore>
      </choice>
      <zeroOrMore>
        <choice>
          <ref name="personblurb"/>
          <ref name="email"/>
          <ref name="address"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of othercredit.element -->
  <define name="othercredit.attlist" combine="interleave">
    <optional>
      <attribute name="class">
        <choice>
          <value>graphicdesigner</value>
          <value>productioneditor</value>
          <value>copyeditor</value>
          <value>technicaleditor</value>
          <value>translator</value>
          <value>other</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="othercredit.role.attrib"/>
    <ref name="local.othercredit.attrib"/>
  </define>
  <!-- end of othercredit.attlist -->
  <!-- (see "Personal identity elements" for %person.ident.mix;) -->
  <!-- end of othercredit.module -->
  <!-- PageNums ......................... -->
  <define name="local.pagenums.attrib">
    <empty/>
  </define>
  <define name="pagenums.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The numbers of the pages in a book, for use in a bibliographic entry. -->
  <define name="pagenums">
    <element name="pagenums">
      <ref name="pagenums.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of pagenums.element -->
  <define name="pagenums.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="pagenums.role.attrib"/>
    <ref name="local.pagenums.attrib"/>
  </define>
  <!-- end of pagenums.attlist -->
  <!-- end of pagenums.module -->
  <!-- Personal identity elements ....... -->
  <!--
    These elements are used only within Author, Editor, and
    OtherCredit.
  -->
  <define name="local.contrib.attrib">
    <empty/>
  </define>
  <define name="contrib.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A summary of the contributions made to a document by a credited source. -->
  <define name="contrib">
    <element name="contrib">
      <ref name="contrib.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of contrib.element -->
  <define name="contrib.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="contrib.role.attrib"/>
    <ref name="local.contrib.attrib"/>
  </define>
  <!-- end of contrib.attlist -->
  <!-- end of contrib.module -->
  <define name="local.firstname.attrib">
    <empty/>
  </define>
  <define name="firstname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The first name of a person. -->
  <define name="firstname">
    <element name="firstname">
      <ref name="firstname.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of firstname.element -->
  <define name="firstname.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="firstname.role.attrib"/>
    <ref name="local.firstname.attrib"/>
  </define>
  <!-- end of firstname.attlist -->
  <!-- end of firstname.module -->
  <define name="local.honorific.attrib">
    <empty/>
  </define>
  <define name="honorific.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The title of a person. -->
  <define name="honorific">
    <element name="honorific">
      <ref name="honorific.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of honorific.element -->
  <define name="honorific.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="honorific.role.attrib"/>
    <ref name="local.honorific.attrib"/>
  </define>
  <!-- end of honorific.attlist -->
  <!-- end of honorific.module -->
  <define name="local.lineage.attrib">
    <empty/>
  </define>
  <define name="lineage.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The portion of a person's name indicating a relationship to ancestors. -->
  <define name="lineage">
    <element name="lineage">
      <ref name="lineage.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of lineage.element -->
  <define name="lineage.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="lineage.role.attrib"/>
    <ref name="local.lineage.attrib"/>
  </define>
  <!-- end of lineage.attlist -->
  <!-- end of lineage.module -->
  <define name="local.othername.attrib">
    <empty/>
  </define>
  <define name="othername.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A component of a persons name that is not a first name, surname, or lineage. -->
  <define name="othername">
    <element name="othername">
      <ref name="othername.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of othername.element -->
  <define name="othername.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="othername.role.attrib"/>
    <ref name="local.othername.attrib"/>
  </define>
  <!-- end of othername.attlist -->
  <!-- end of othername.module -->
  <define name="local.surname.attrib">
    <empty/>
  </define>
  <define name="surname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A family name; in western cultures the last name. -->
  <define name="surname">
    <element name="surname">
      <ref name="surname.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of surname.element -->
  <define name="surname.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="surname.role.attrib"/>
    <ref name="local.surname.attrib"/>
  </define>
  <!-- end of surname.attlist -->
  <!-- end of surname.module -->
  <!-- end of person.ident.module -->
  <!-- PrintHistory ..................... -->
  <define name="local.printhistory.attrib">
    <empty/>
  </define>
  <define name="printhistory.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The printing history of a document. -->
  <define name="printhistory">
    <element name="printhistory">
      <ref name="printhistory.attlist"/>
      <oneOrMore>
        <ref name="para.class"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of printhistory.element -->
  <define name="printhistory.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="printhistory.role.attrib"/>
    <ref name="local.printhistory.attrib"/>
  </define>
  <!-- end of printhistory.attlist -->
  <!-- end of printhistory.module -->
  <!-- ProductName ...................... -->
  <define name="local.productname.attrib">
    <empty/>
  </define>
  <define name="productname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The formal name of a product. -->
  <define name="productname">
    <element name="productname">
      <ref name="productname.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of productname.element -->
  <!-- Class: More precisely identifies the item the element names -->
  <define name="productname.attlist" combine="interleave">
    <optional>
      <attribute name="class" a:defaultValue="trade">
        <choice>
          <value>service</value>
          <value>trade</value>
          <value>registered</value>
          <value>copyright</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="productname.role.attrib"/>
    <ref name="local.productname.attrib"/>
  </define>
  <!-- end of productname.attlist -->
  <!-- end of productname.module -->
  <!-- ProductNumber .................... -->
  <define name="local.productnumber.attrib">
    <empty/>
  </define>
  <define name="productnumber.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A number assigned to a product. -->
  <define name="productnumber">
    <element name="productnumber">
      <ref name="productnumber.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of productnumber.element -->
  <define name="productnumber.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="productnumber.role.attrib"/>
    <ref name="local.productnumber.attrib"/>
  </define>
  <!-- end of productnumber.attlist -->
  <!-- end of productnumber.module -->
  <!-- PubDate .......................... -->
  <define name="local.pubdate.attrib">
    <empty/>
  </define>
  <define name="pubdate.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The date of publication of a document. -->
  <define name="pubdate">
    <element name="pubdate">
      <ref name="pubdate.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of pubdate.element -->
  <define name="pubdate.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="pubdate.role.attrib"/>
    <ref name="local.pubdate.attrib"/>
  </define>
  <!-- end of pubdate.attlist -->
  <!-- end of pubdate.module -->
  <!-- Publisher ........................ -->
  <define name="local.publisher.attrib">
    <empty/>
  </define>
  <define name="publisher.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The publisher of a document. -->
  <define name="publisher">
    <element name="publisher">
      <ref name="publisher.attlist"/>
      <ref name="publishername"/>
      <zeroOrMore>
        <ref name="address"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of publisher.element -->
  <define name="publisher.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="publisher.role.attrib"/>
    <ref name="local.publisher.attrib"/>
  </define>
  <!-- end of publisher.attlist -->
  <!-- end of publisher.module -->
  <define name="local.publishername.attrib">
    <empty/>
  </define>
  <define name="publishername.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of the publisher of a document. -->
  <define name="publishername">
    <element name="publishername">
      <ref name="publishername.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of publishername.element -->
  <define name="publishername.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="publishername.role.attrib"/>
    <ref name="local.publishername.attrib"/>
  </define>
  <!-- end of publishername.attlist -->
  <!-- end of publishername.module -->
  <!--  Address (defined elsewhere in this section) -->
  <!-- end of publisher.content.module -->
  <!-- PubsNumber ....................... -->
  <define name="local.pubsnumber.attrib">
    <empty/>
  </define>
  <define name="pubsnumber.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A number assigned to a publication other than an ISBN or ISSN or inventory part number. -->
  <define name="pubsnumber">
    <element name="pubsnumber">
      <ref name="pubsnumber.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of pubsnumber.element -->
  <define name="pubsnumber.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="pubsnumber.role.attrib"/>
    <ref name="local.pubsnumber.attrib"/>
  </define>
  <!-- end of pubsnumber.attlist -->
  <!-- end of pubsnumber.module -->
  <!-- ReleaseInfo ...................... -->
  <define name="local.releaseinfo.attrib">
    <empty/>
  </define>
  <define name="releaseinfo.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Information about a particular release of a document. -->
  <define name="releaseinfo">
    <element name="releaseinfo">
      <ref name="releaseinfo.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of releaseinfo.element -->
  <define name="releaseinfo.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="releaseinfo.role.attrib"/>
    <ref name="local.releaseinfo.attrib"/>
  </define>
  <!-- end of releaseinfo.attlist -->
  <!-- end of releaseinfo.module -->
  <!-- RevHistory ....................... -->
  <define name="local.revhistory.attrib">
    <empty/>
  </define>
  <define name="revhistory.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A history of the revisions to a document. -->
  <define name="revhistory">
    <element name="revhistory">
      <ref name="revhistory.attlist"/>
      <oneOrMore>
        <ref name="revision"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of revhistory.element -->
  <define name="revhistory.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="revhistory.role.attrib"/>
    <ref name="local.revhistory.attrib"/>
  </define>
  <!-- end of revhistory.attlist -->
  <!-- end of revhistory.module -->
  <define name="local.revision.attrib">
    <empty/>
  </define>
  <define name="revision.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An entry describing a single revision in the history of the revisions to a document. -->
  <define name="revision">
    <element name="revision">
      <ref name="revision.attlist"/>
      <optional>
        <ref name="revnumber"/>
      </optional>
      <ref name="date"/>
      <zeroOrMore>
        <choice>
          <ref name="author"/>
          <ref name="authorinitials"/>
        </choice>
      </zeroOrMore>
      <optional>
        <choice>
          <ref name="revremark"/>
          <ref name="revdescription"/>
        </choice>
      </optional>
    </element>
  </define>
  <!-- end of revision.element -->
  <define name="revision.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="revision.role.attrib"/>
    <ref name="local.revision.attrib"/>
  </define>
  <!-- end of revision.attlist -->
  <!-- end of revision.module -->
  <define name="local.revnumber.attrib">
    <empty/>
  </define>
  <define name="revnumber.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A document revision number. -->
  <define name="revnumber">
    <element name="revnumber">
      <ref name="revnumber.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of revnumber.element -->
  <define name="revnumber.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="revnumber.role.attrib"/>
    <ref name="local.revnumber.attrib"/>
  </define>
  <!-- end of revnumber.attlist -->
  <!-- end of revnumber.module -->
  <!--  Date (defined elsewhere in this section) -->
  <!--  AuthorInitials (defined elsewhere in this section) -->
  <define name="local.revremark.attrib">
    <empty/>
  </define>
  <define name="revremark.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A description of a revision to a document. -->
  <define name="revremark">
    <element name="revremark">
      <ref name="revremark.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of revremark.element -->
  <define name="revremark.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="revremark.role.attrib"/>
    <ref name="local.revremark.attrib"/>
  </define>
  <!-- end of revremark.attlist -->
  <!-- end of revremark.module -->
  <define name="local.revdescription.attrib">
    <empty/>
  </define>
  <define name="revdescription.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A extended description of a revision to a document. -->
  <define name="revdescription">
    <element name="revdescription">
      <ref name="revdescription.attlist"/>
      <oneOrMore>
        <ref name="revdescription.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of revdescription.element -->
  <define name="revdescription.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="revdescription.role.attrib"/>
    <ref name="local.revdescription.attrib"/>
  </define>
  <!-- end of revdescription.attlist -->
  <!-- end of revdescription.module -->
  <!-- end of revhistory.content.module -->
  <!-- SeriesVolNums .................... -->
  <define name="local.seriesvolnums.attrib">
    <empty/>
  </define>
  <define name="seriesvolnums.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Numbers of the volumes in a series of books. -->
  <define name="seriesvolnums">
    <element name="seriesvolnums">
      <ref name="seriesvolnums.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of seriesvolnums.element -->
  <define name="seriesvolnums.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="seriesvolnums.role.attrib"/>
    <ref name="local.seriesvolnums.attrib"/>
  </define>
  <!-- end of seriesvolnums.attlist -->
  <!-- end of seriesvolnums.module -->
  <!-- VolumeNum ........................ -->
  <define name="local.volumenum.attrib">
    <empty/>
  </define>
  <define name="volumenum.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The volume number of a document in a set (as of books in a set or articles in a journal). -->
  <define name="volumenum">
    <element name="volumenum">
      <ref name="volumenum.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of volumenum.element -->
  <define name="volumenum.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="volumenum.role.attrib"/>
    <ref name="local.volumenum.attrib"/>
  </define>
  <!-- end of volumenum.attlist -->
  <!-- end of volumenum.module -->
  <!-- .................................. -->
  <!-- end of docinfo.content.module -->
  <!-- ...................................................................... -->
  <!-- Inline, link, and ubiquitous elements ................................ -->
  <!-- Technical and computer terms ......................................... -->
  <define name="local.accel.attrib">
    <empty/>
  </define>
  <define name="accel.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A graphical user interface (GUI) keyboard shortcut. -->
  <define name="accel">
    <element name="accel">
      <ref name="accel.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of accel.element -->
  <define name="accel.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="accel.role.attrib"/>
    <ref name="local.accel.attrib"/>
  </define>
  <!-- end of accel.attlist -->
  <!-- end of accel.module -->
  <define name="local.action.attrib">
    <empty/>
  </define>
  <define name="action.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A response to a user event. -->
  <define name="action">
    <element name="action">
      <ref name="action.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of action.element -->
  <define name="action.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="action.role.attrib"/>
    <ref name="local.action.attrib"/>
  </define>
  <!-- end of action.attlist -->
  <!-- end of action.module -->
  <define name="local.application.attrib">
    <empty/>
  </define>
  <define name="application.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a software program. -->
  <define name="application">
    <element name="application">
      <ref name="application.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of application.element -->
  <define name="application.attlist" combine="interleave">
    <optional>
      <attribute name="class">
        <choice>
          <value>hardware</value>
          <value>software</value>
        </choice>
      </attribute>
    </optional>
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="application.role.attrib"/>
    <ref name="local.application.attrib"/>
  </define>
  <!-- end of application.attlist -->
  <!-- end of application.module -->
  <define name="local.classname.attrib">
    <empty/>
  </define>
  <define name="classname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a class, in the object-oriented programming sense. -->
  <define name="classname">
    <element name="classname">
      <ref name="classname.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of classname.element -->
  <define name="classname.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="classname.role.attrib"/>
    <ref name="local.classname.attrib"/>
  </define>
  <!-- end of classname.attlist -->
  <!-- end of classname.module -->
  <define name="local.package.attrib">
    <empty/>
  </define>
  <define name="package.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A package. -->
  <define name="package">
    <element name="package">
      <ref name="package.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of package.element -->
  <define name="package.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="package.role.attrib"/>
    <ref name="local.package.attrib"/>
  </define>
  <!-- end of package.attlist -->
  <!-- end of package.module -->
  <define name="local.co.attrib">
    <empty/>
  </define>
  <!--
    CO is a callout area of the LineColumn unit type (a single character
    position); the position is directly indicated by the location of CO.
  -->
  <define name="co.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The location of a callout embedded in text. -->
  <define name="co">
    <element name="co">
      <ref name="co.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of co.element -->
  <!-- bug number/symbol override or initialization -->
  <!-- to any related information -->
  <define name="co.attlist" combine="interleave">
    <ref name="label.attrib"/>
    <ref name="linkends.attrib"/>
    <ref name="idreq.common.attrib"/>
    <ref name="co.role.attrib"/>
    <ref name="local.co.attrib"/>
  </define>
  <!-- end of co.attlist -->
  <!-- end of co.module -->
  <define name="local.coref.attrib">
    <empty/>
  </define>
  <!-- COREF is a reference to a CO -->
  <define name="coref.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A cross reference to a co. -->
  <define name="coref">
    <element name="coref">
      <ref name="coref.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of coref.element -->
  <!-- bug number/symbol override or initialization -->
  <!-- to any related information -->
  <define name="coref.attlist" combine="interleave">
    <ref name="label.attrib"/>
    <ref name="linkendreq.attrib"/>
    <ref name="common.attrib"/>
    <ref name="coref.role.attrib"/>
    <ref name="local.coref.attrib"/>
  </define>
  <!-- end of coref.attlist -->
  <!-- end of coref.module -->
  <define name="local.command.attrib">
    <empty/>
  </define>
  <define name="command.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of an executable program or other software command. -->
  <define name="command">
    <element name="command">
      <ref name="command.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of command.element -->
  <define name="command.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="command.role.attrib"/>
    <ref name="local.command.attrib"/>
  </define>
  <!-- end of command.attlist -->
  <!-- end of command.module -->
  <define name="local.computeroutput.attrib">
    <empty/>
  </define>
  <define name="computeroutput.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Data, generally text, displayed or presented by a computer. -->
  <define name="computeroutput">
    <element name="computeroutput">
      <ref name="computeroutput.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="cptr.char.mix"/>
          <ref name="co"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of computeroutput.element -->
  <define name="computeroutput.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="computeroutput.role.attrib"/>
    <ref name="local.computeroutput.attrib"/>
  </define>
  <!-- end of computeroutput.attlist -->
  <!-- end of computeroutput.module -->
  <define name="local.database.attrib">
    <empty/>
  </define>
  <define name="database.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a database, or part of a database. -->
  <define name="database">
    <element name="database">
      <ref name="database.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of database.element -->
  <!-- Class: Type of database the element names; no default -->
  <define name="database.attlist" combine="interleave">
    <optional>
      <attribute name="class">
        <choice>
          <value>name</value>
          <value>table</value>
          <value>field</value>
          <value>key1</value>
          <value>key2</value>
          <value>record</value>
          <value>index</value>
          <value>view</value>
          <value>primarykey</value>
          <value>secondarykey</value>
          <value>foreignkey</value>
          <value>altkey</value>
          <value>procedure</value>
          <value>datatype</value>
          <value>constraint</value>
          <value>rule</value>
          <value>user</value>
          <value>group</value>
        </choice>
      </attribute>
    </optional>
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="database.role.attrib"/>
    <ref name="local.database.attrib"/>
  </define>
  <!-- end of database.attlist -->
  <!-- end of database.module -->
  <define name="local.email.attrib">
    <empty/>
  </define>
  <define name="email.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An email address. -->
  <define name="email">
    <element name="email">
      <ref name="email.attlist"/>
      <zeroOrMore>
        <ref name="docinfo.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of email.element -->
  <define name="email.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="email.role.attrib"/>
    <ref name="local.email.attrib"/>
  </define>
  <!-- end of email.attlist -->
  <!-- end of email.module -->
  <define name="local.envar.attrib">
    <empty/>
  </define>
  <define name="envar.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A software environment variable. -->
  <define name="envar">
    <element name="envar">
      <ref name="envar.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of envar.element -->
  <define name="envar.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="envar.role.attrib"/>
    <ref name="local.envar.attrib"/>
  </define>
  <!-- end of envar.attlist -->
  <!-- end of envar.module -->
  <define name="local.errorcode.attrib">
    <empty/>
  </define>
  <define name="errorcode.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An error code. -->
  <define name="errorcode">
    <element name="errorcode">
      <ref name="errorcode.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of errorcode.element -->
  <define name="errorcode.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="errorcode.role.attrib"/>
    <ref name="local.errorcode.attrib"/>
  </define>
  <!-- end of errorcode.attlist -->
  <!-- end of errorcode.module -->
  <define name="local.errorname.attrib">
    <empty/>
  </define>
  <define name="errorname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An error name. -->
  <define name="errorname">
    <element name="errorname">
      <ref name="errorname.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of errorname.element -->
  <define name="errorname.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="errorname.role.attrib"/>
    <ref name="local.errorname.attrib"/>
  </define>
  <!-- end of errorname.attlist -->
  <!-- end of errorname.module -->
  <define name="local.errortext.attrib">
    <empty/>
  </define>
  <define name="errortext.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An error message.. -->
  <define name="errortext">
    <element name="errortext">
      <ref name="errortext.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of errortext.element -->
  <define name="errortext.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="errortext.role.attrib"/>
    <ref name="local.errortext.attrib"/>
  </define>
  <!-- end of errortext.attlist -->
  <!-- end of errortext.module -->
  <define name="local.errortype.attrib">
    <empty/>
  </define>
  <define name="errortype.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The classification of an error message. -->
  <define name="errortype">
    <element name="errortype">
      <ref name="errortype.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of errortype.element -->
  <define name="errortype.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="errortype.role.attrib"/>
    <ref name="local.errortype.attrib"/>
  </define>
  <!-- end of errortype.attlist -->
  <!-- end of errortype.module -->
  <define name="local.filename.attrib">
    <empty/>
  </define>
  <define name="filename.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a file. -->
  <define name="filename">
    <element name="filename">
      <ref name="filename.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of filename.element -->
  <!-- Class: Type of filename the element names; no default -->
  <!--
    Path: Search path (possibly system-specific) in which
    file can be found
  -->
  <define name="filename.attlist" combine="interleave">
    <optional>
      <attribute name="class">
        <choice>
          <value>headerfile</value>
          <value>partition</value>
          <value>devicefile</value>
          <value>libraryfile</value>
          <value>directory</value>
          <value>extension</value>
          <value>symlink</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="path"/>
    </optional>
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="filename.role.attrib"/>
    <ref name="local.filename.attrib"/>
  </define>
  <!-- end of filename.attlist -->
  <!-- end of filename.module -->
  <define name="local.function.attrib">
    <empty/>
  </define>
  <define name="function.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a function or subroutine, as in a programming language. -->
  <define name="function">
    <element name="function">
      <ref name="function.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of function.element -->
  <define name="function.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="function.role.attrib"/>
    <ref name="local.function.attrib"/>
  </define>
  <!-- end of function.attlist -->
  <!-- end of function.module -->
  <define name="local.guibutton.attrib">
    <empty/>
  </define>
  <define name="guibutton.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The text on a button in a GUI. -->
  <define name="guibutton">
    <element name="guibutton">
      <ref name="guibutton.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="smallcptr.char.mix"/>
          <ref name="accel"/>
          <ref name="superscript"/>
          <ref name="subscript"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of guibutton.element -->
  <define name="guibutton.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="guibutton.role.attrib"/>
    <ref name="local.guibutton.attrib"/>
  </define>
  <!-- end of guibutton.attlist -->
  <!-- end of guibutton.module -->
  <define name="local.guiicon.attrib">
    <empty/>
  </define>
  <define name="guiicon.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Graphic and/or text appearing as a icon in a GUI. -->
  <define name="guiicon">
    <element name="guiicon">
      <ref name="guiicon.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="smallcptr.char.mix"/>
          <ref name="accel"/>
          <ref name="superscript"/>
          <ref name="subscript"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of guiicon.element -->
  <define name="guiicon.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="guiicon.role.attrib"/>
    <ref name="local.guiicon.attrib"/>
  </define>
  <!-- end of guiicon.attlist -->
  <!-- end of guiicon.module -->
  <define name="local.guilabel.attrib">
    <empty/>
  </define>
  <define name="guilabel.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The text of a label in a GUI. -->
  <define name="guilabel">
    <element name="guilabel">
      <ref name="guilabel.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="smallcptr.char.mix"/>
          <ref name="accel"/>
          <ref name="superscript"/>
          <ref name="subscript"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of guilabel.element -->
  <define name="guilabel.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="guilabel.role.attrib"/>
    <ref name="local.guilabel.attrib"/>
  </define>
  <!-- end of guilabel.attlist -->
  <!-- end of guilabel.module -->
  <define name="local.guimenu.attrib">
    <empty/>
  </define>
  <define name="guimenu.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a menu in a GUI. -->
  <define name="guimenu">
    <element name="guimenu">
      <ref name="guimenu.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="smallcptr.char.mix"/>
          <ref name="accel"/>
          <ref name="superscript"/>
          <ref name="subscript"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of guimenu.element -->
  <define name="guimenu.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="guimenu.role.attrib"/>
    <ref name="local.guimenu.attrib"/>
  </define>
  <!-- end of guimenu.attlist -->
  <!-- end of guimenu.module -->
  <define name="local.guimenuitem.attrib">
    <empty/>
  </define>
  <define name="guimenuitem.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a terminal menu item in a GUI. -->
  <define name="guimenuitem">
    <element name="guimenuitem">
      <ref name="guimenuitem.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="smallcptr.char.mix"/>
          <ref name="accel"/>
          <ref name="superscript"/>
          <ref name="subscript"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of guimenuitem.element -->
  <define name="guimenuitem.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="guimenuitem.role.attrib"/>
    <ref name="local.guimenuitem.attrib"/>
  </define>
  <!-- end of guimenuitem.attlist -->
  <!-- end of guimenuitem.module -->
  <define name="local.guisubmenu.attrib">
    <empty/>
  </define>
  <define name="guisubmenu.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a submenu in a GUI. -->
  <define name="guisubmenu">
    <element name="guisubmenu">
      <ref name="guisubmenu.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="smallcptr.char.mix"/>
          <ref name="accel"/>
          <ref name="superscript"/>
          <ref name="subscript"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of guisubmenu.element -->
  <define name="guisubmenu.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="guisubmenu.role.attrib"/>
    <ref name="local.guisubmenu.attrib"/>
  </define>
  <!-- end of guisubmenu.attlist -->
  <!-- end of guisubmenu.module -->
  <define name="local.hardware.attrib">
    <empty/>
  </define>
  <define name="hardware.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A physical part of a computer system. -->
  <define name="hardware">
    <element name="hardware">
      <ref name="hardware.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of hardware.element -->
  <define name="hardware.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="hardware.role.attrib"/>
    <ref name="local.hardware.attrib"/>
  </define>
  <!-- end of hardware.attlist -->
  <!-- end of hardware.module -->
  <define name="local.interface.attrib">
    <empty/>
  </define>
  <define name="interface.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An element of a GUI. -->
  <define name="interface">
    <element name="interface">
      <ref name="interface.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="smallcptr.char.mix"/>
          <ref name="accel"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of interface.element -->
  <!-- Class: Type of the Interface item; no default -->
  <define name="interface.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="interface.role.attrib"/>
    <ref name="local.interface.attrib"/>
  </define>
  <!-- end of interface.attlist -->
  <!-- end of interface.module -->
  <define name="local.keycap.attrib">
    <empty/>
  </define>
  <define name="keycap.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The text printed on a key on a keyboard. -->
  <define name="keycap">
    <element name="keycap">
      <ref name="keycap.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of keycap.element -->
  <define name="keycap.attlist" combine="interleave">
    <optional>
      <attribute name="function">
        <choice>
          <value>alt</value>
          <value>control</value>
          <value>shift</value>
          <value>meta</value>
          <value>escape</value>
          <value>enter</value>
          <value>tab</value>
          <value>backspace</value>
          <value>command</value>
          <value>option</value>
          <value>space</value>
          <value>delete</value>
          <value>insert</value>
          <value>up</value>
          <value>down</value>
          <value>left</value>
          <value>right</value>
          <value>home</value>
          <value>end</value>
          <value>pageup</value>
          <value>pagedown</value>
          <value>other</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="otherfunction"/>
    </optional>
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="keycap.role.attrib"/>
    <ref name="local.keycap.attrib"/>
  </define>
  <!-- end of keycap.attlist -->
  <!-- end of keycap.module -->
  <define name="local.keycode.attrib">
    <empty/>
  </define>
  <define name="keycode.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The internal, frequently numeric, identifier for a key on a keyboard. -->
  <define name="keycode">
    <element name="keycode">
      <ref name="keycode.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of keycode.element -->
  <define name="keycode.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="keycode.role.attrib"/>
    <ref name="local.keycode.attrib"/>
  </define>
  <!-- end of keycode.attlist -->
  <!-- end of keycode.module -->
  <define name="local.keycombo.attrib">
    <empty/>
  </define>
  <define name="keycombo.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A combination of input actions. -->
  <define name="keycombo">
    <element name="keycombo">
      <ref name="keycombo.attlist"/>
      <oneOrMore>
        <choice>
          <ref name="keycap"/>
          <ref name="keycombo"/>
          <ref name="keysym"/>
          <ref name="mousebutton"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of keycombo.element -->
  <define name="keycombo.attlist" combine="interleave">
    <ref name="keyaction.attrib"/>
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="keycombo.role.attrib"/>
    <ref name="local.keycombo.attrib"/>
  </define>
  <!-- end of keycombo.attlist -->
  <!-- end of keycombo.module -->
  <define name="local.keysym.attrib">
    <empty/>
  </define>
  <define name="keysysm.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The symbolic name of a key on a keyboard. -->
  <define name="keysym">
    <element name="keysym">
      <ref name="keysym.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of keysym.element -->
  <define name="keysym.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="keysysm.role.attrib"/>
    <ref name="local.keysym.attrib"/>
  </define>
  <!-- end of keysym.attlist -->
  <!-- end of keysym.module -->
  <define name="local.lineannotation.attrib">
    <empty/>
  </define>
  <define name="lineannotation.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A comment on a line in a verbatim listing. -->
  <define name="lineannotation">
    <element name="lineannotation">
      <ref name="lineannotation.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of lineannotation.element -->
  <define name="lineannotation.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="lineannotation.role.attrib"/>
    <ref name="local.lineannotation.attrib"/>
  </define>
  <!-- end of lineannotation.attlist -->
  <!-- end of lineannotation.module -->
  <define name="local.literal.attrib">
    <empty/>
  </define>
  <define name="literal.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Inline text that is some literal value. -->
  <define name="literal">
    <element name="literal">
      <ref name="literal.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of literal.element -->
  <define name="literal.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="literal.role.attrib"/>
    <ref name="local.literal.attrib"/>
  </define>
  <!-- end of literal.attlist -->
  <!-- end of literal.module -->
  <define name="local.code.attrib">
    <empty/>
  </define>
  <define name="code.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An inline code fragment. -->
  <define name="code">
    <element name="code">
      <ref name="code.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of code.element -->
  <define name="code.attlist" combine="interleave">
    <optional>
      <attribute name="language"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="code.role.attrib"/>
    <ref name="local.code.attrib"/>
  </define>
  <!-- end of code.attlist -->
  <!-- end of code.module -->
  <define name="local.constant.attrib">
    <empty/>
  </define>
  <define name="constant.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A programming or system constant. -->
  <define name="constant">
    <element name="constant">
      <ref name="constant.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of constant.element -->
  <define name="constant.attlist" combine="interleave">
    <optional>
      <attribute name="class">
        <choice>
          <value>limit</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="constant.role.attrib"/>
    <ref name="local.constant.attrib"/>
  </define>
  <!-- end of constant.attlist -->
  <!-- end of constant.module -->
  <define name="local.varname.attrib">
    <empty/>
  </define>
  <define name="varname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a variable. -->
  <define name="varname">
    <element name="varname">
      <ref name="varname.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of varname.element -->
  <define name="varname.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="varname.role.attrib"/>
    <ref name="local.varname.attrib"/>
  </define>
  <!-- end of varname.attlist -->
  <!-- end of varname.module -->
  <define name="local.markup.attrib">
    <empty/>
  </define>
  <define name="markup.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A string of formatting markup in text that is to be represented literally. -->
  <define name="markup">
    <element name="markup">
      <ref name="markup.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of markup.element -->
  <define name="markup.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="markup.role.attrib"/>
    <ref name="local.markup.attrib"/>
  </define>
  <!-- end of markup.attlist -->
  <!-- end of markup.module -->
  <define name="local.medialabel.attrib">
    <empty/>
  </define>
  <define name="medialabel.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A name that identifies the physical medium on which some information resides. -->
  <define name="medialabel">
    <element name="medialabel">
      <ref name="medialabel.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of medialabel.element -->
  <!-- Class: Type of medium named by the element; no default -->
  <define name="medialabel.attlist" combine="interleave">
    <optional>
      <attribute name="class">
        <choice>
          <value>cartridge</value>
          <value>cdrom</value>
          <value>disk</value>
          <value>tape</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="medialabel.role.attrib"/>
    <ref name="local.medialabel.attrib"/>
  </define>
  <!-- end of medialabel.attlist -->
  <!-- end of medialabel.module -->
  <define name="local.menuchoice.attrib">
    <empty/>
  </define>
  <define name="menuchoice.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A selection or series of selections from a menu. -->
  <define name="menuchoice">
    <element name="menuchoice">
      <ref name="menuchoice.attlist"/>
      <optional>
        <ref name="shortcut"/>
      </optional>
      <oneOrMore>
        <choice>
          <ref name="guibutton"/>
          <ref name="guiicon"/>
          <ref name="guilabel"/>
          <ref name="guimenu"/>
          <ref name="guimenuitem"/>
          <ref name="guisubmenu"/>
          <ref name="interface"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of menuchoice.element -->
  <define name="menuchoice.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="menuchoice.role.attrib"/>
    <ref name="local.menuchoice.attrib"/>
  </define>
  <!-- end of menuchoice.attlist -->
  <!-- end of menuchoice.module -->
  <!-- See also KeyCombo -->
  <define name="local.shortcut.attrib">
    <empty/>
  </define>
  <define name="shortcut.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A key combination for an action that is also accessible through a menu. -->
  <define name="shortcut">
    <element name="shortcut">
      <ref name="shortcut.attlist"/>
      <oneOrMore>
        <choice>
          <ref name="keycap"/>
          <ref name="keycombo"/>
          <ref name="keysym"/>
          <ref name="mousebutton"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <!-- end of shortcut.element -->
  <define name="shortcut.attlist" combine="interleave">
    <ref name="keyaction.attrib"/>
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="shortcut.role.attrib"/>
    <ref name="local.shortcut.attrib"/>
  </define>
  <!-- end of shortcut.attlist -->
  <!-- end of shortcut.module -->
  <!-- end of menuchoice.content.module -->
  <define name="local.mousebutton.attrib">
    <empty/>
  </define>
  <define name="mousebutton.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The conventional name of a mouse button. -->
  <define name="mousebutton">
    <element name="mousebutton">
      <ref name="mousebutton.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of mousebutton.element -->
  <define name="mousebutton.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="mousebutton.role.attrib"/>
    <ref name="local.mousebutton.attrib"/>
  </define>
  <!-- end of mousebutton.attlist -->
  <!-- end of mousebutton.module -->
  <define name="local.msgtext.attrib">
    <empty/>
  </define>
  <define name="msgtext.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The actual text of a message component in a message set. -->
  <define name="msgtext">
    <element name="msgtext">
      <ref name="msgtext.attlist"/>
      <oneOrMore>
        <ref name="component.mix"/>
      </oneOrMore>
    </element>
  </define>
  <!-- end of msgtext.element -->
  <define name="msgtext.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="msgtext.role.attrib"/>
    <ref name="local.msgtext.attrib"/>
  </define>
  <!-- end of msgtext.attlist -->
  <!-- end of msgtext.module -->
  <define name="local.option.attrib">
    <empty/>
  </define>
  <define name="option.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An option for a software command. -->
  <define name="option">
    <element name="option">
      <ref name="option.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of option.element -->
  <define name="option.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="option.role.attrib"/>
    <ref name="local.option.attrib"/>
  </define>
  <!-- end of option.attlist -->
  <!-- end of option.module -->
  <define name="local.optional.attrib">
    <empty/>
  </define>
  <define name="optional.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Optional information. -->
  <define name="optional">
    <element name="optional">
      <ref name="optional.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of optional.element -->
  <define name="optional.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="optional.role.attrib"/>
    <ref name="local.optional.attrib"/>
  </define>
  <!-- end of optional.attlist -->
  <!-- end of optional.module -->
  <define name="local.parameter.attrib">
    <empty/>
  </define>
  <define name="parameter.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A value or a symbolic reference to a value. -->
  <define name="parameter">
    <element name="parameter">
      <ref name="parameter.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of parameter.element -->
  <!-- Class: Type of the Parameter; no default -->
  <define name="parameter.attlist" combine="interleave">
    <optional>
      <attribute name="class">
        <choice>
          <value>command</value>
          <value>function</value>
          <value>option</value>
        </choice>
      </attribute>
    </optional>
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="parameter.role.attrib"/>
    <ref name="local.parameter.attrib"/>
  </define>
  <!-- end of parameter.attlist -->
  <!-- end of parameter.module -->
  <define name="local.prompt.attrib">
    <empty/>
  </define>
  <define name="prompt.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A character or string indicating the start of an input field in a  computer display. -->
  <define name="prompt">
    <element name="prompt">
      <ref name="prompt.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="smallcptr.char.mix"/>
          <ref name="co"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of prompt.element -->
  <define name="prompt.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="prompt.role.attrib"/>
    <ref name="local.prompt.attrib"/>
  </define>
  <!-- end of prompt.attlist -->
  <!-- end of prompt.module -->
  <define name="local.property.attrib">
    <empty/>
  </define>
  <define name="property.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A unit of data associated with some part of a computer system. -->
  <define name="property">
    <element name="property">
      <ref name="property.attlist"/>
      <zeroOrMore>
        <ref name="cptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of property.element -->
  <define name="property.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="property.role.attrib"/>
    <ref name="local.property.attrib"/>
  </define>
  <!-- end of property.attlist -->
  <!-- end of property.module -->
  <define name="local.replaceable.attrib">
    <empty/>
  </define>
  <define name="replaceable.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Content that may or must be replaced by the user. -->
  <define name="replaceable">
    <element name="replaceable">
      <ref name="replaceable.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="link.char.class"/>
          <ref name="optional"/>
          <ref name="base.char.class"/>
          <ref name="other.char.class"/>
          <ref name="inlinegraphic"/>
          <ref name="inlinemediaobject"/>
          <ref name="co"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of replaceable.element -->
  <!--
    Class: Type of information the element represents; no
    default
  -->
  <define name="replaceable.attlist" combine="interleave">
    <optional>
      <attribute name="class">
        <choice>
          <value>command</value>
          <value>function</value>
          <value>option</value>
          <value>parameter</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="replaceable.role.attrib"/>
    <ref name="local.replaceable.attrib"/>
  </define>
  <!-- end of replaceable.attlist -->
  <!-- end of replaceable.module -->
  <define name="local.returnvalue.attrib">
    <empty/>
  </define>
  <define name="returnvalue.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The value returned by a function. -->
  <define name="returnvalue">
    <element name="returnvalue">
      <ref name="returnvalue.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of returnvalue.element -->
  <define name="returnvalue.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="returnvalue.role.attrib"/>
    <ref name="local.returnvalue.attrib"/>
  </define>
  <!-- end of returnvalue.attlist -->
  <!-- end of returnvalue.module -->
  <define name="local.sgmltag.attrib">
    <empty/>
  </define>
  <define name="sgmltag.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A component of SGML markup. -->
  <define name="sgmltag">
    <element name="sgmltag">
      <ref name="sgmltag.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of sgmltag.element -->
  <!-- Class: Type of SGML construct the element names; no default -->
  <define name="sgmltag.attlist" combine="interleave">
    <optional>
      <attribute name="class">
        <choice>
          <value>attribute</value>
          <value>attvalue</value>
          <value>element</value>
          <value>endtag</value>
          <value>emptytag</value>
          <value>genentity</value>
          <value>numcharref</value>
          <value>paramentity</value>
          <value>pi</value>
          <value>xmlpi</value>
          <value>starttag</value>
          <value>sgmlcomment</value>
          <value>prefix</value>
          <value>namespace</value>
          <value>localname</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="namespace"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="sgmltag.role.attrib"/>
    <ref name="local.sgmltag.attrib"/>
  </define>
  <!-- end of sgmltag.attlist -->
  <!-- end of sgmltag.module -->
  <define name="local.structfield.attrib">
    <empty/>
  </define>
  <define name="structfield.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A field in a structure (in the programming language sense). -->
  <define name="structfield">
    <element name="structfield">
      <ref name="structfield.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of structfield.element -->
  <define name="structfield.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="structfield.role.attrib"/>
    <ref name="local.structfield.attrib"/>
  </define>
  <!-- end of structfield.attlist -->
  <!-- end of structfield.module -->
  <define name="local.structname.attrib">
    <empty/>
  </define>
  <define name="structname.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The name of a structure (in the programming language sense). -->
  <define name="structname">
    <element name="structname">
      <ref name="structname.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of structname.element -->
  <define name="structname.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="structname.role.attrib"/>
    <ref name="local.structname.attrib"/>
  </define>
  <!-- end of structname.attlist -->
  <!-- end of structname.module -->
  <define name="local.symbol.attrib">
    <empty/>
  </define>
  <define name="symbol.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A name that is replaced by a value before processing. -->
  <define name="symbol">
    <element name="symbol">
      <ref name="symbol.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of symbol.element -->
  <!-- Class: Type of symbol; no default -->
  <define name="symbol.attlist" combine="interleave">
    <optional>
      <attribute name="class">
        <choice>
          <value>limit</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="symbol.role.attrib"/>
    <ref name="local.symbol.attrib"/>
  </define>
  <!-- end of symbol.attlist -->
  <!-- end of symbol.module -->
  <define name="local.systemitem.attrib">
    <empty/>
  </define>
  <define name="systemitem.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A system-related item or term. -->
  <define name="systemitem">
    <element name="systemitem">
      <ref name="systemitem.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="cptr.char.mix"/>
          <ref name="acronym"/>
          <ref name="co"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of systemitem.element -->
  <!-- Class: Type of system item the element names; no default -->
  <define name="systemitem.attlist" combine="interleave">
    <optional>
      <attribute name="class">
        <choice>
          <value>constant</value>
          <value>daemon</value>
          <value>domainname</value>
          <value>etheraddress</value>
          <value>event</value>
          <value>eventhandler</value>
          <value>filesystem</value>
          <value>fqdomainname</value>
          <value>groupname</value>
          <value>ipaddress</value>
          <value>library</value>
          <value>macro</value>
          <value>netmask</value>
          <value>newsgroup</value>
          <value>osname</value>
          <value>protocol</value>
          <value>resource</value>
          <value>systemname</value>
          <value>username</value>
          <value>process</value>
          <value>server</value>
          <value>service</value>
        </choice>
      </attribute>
    </optional>
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="systemitem.role.attrib"/>
    <ref name="local.systemitem.attrib"/>
  </define>
  <!-- end of systemitem.attlist -->
  <!-- end of systemitem.module -->
  <define name="local.uri.attrib">
    <empty/>
  </define>
  <define name="uri.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A Uniform Resource Identifier. -->
  <define name="uri">
    <element name="uri">
      <ref name="uri.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of uri.element -->
  <!-- Type: Type of URI; no default -->
  <define name="uri.attlist" combine="interleave">
    <optional>
      <attribute name="type"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="uri.role.attrib"/>
    <ref name="local.uri.attrib"/>
  </define>
  <!-- end of uri.attlist -->
  <!-- end of uri.module -->
  <define name="local.token.attrib">
    <empty/>
  </define>
  <define name="token.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A unit of information. -->
  <define name="token">
    <element name="token">
      <ref name="token.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of token.element -->
  <define name="token.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="token.role.attrib"/>
    <ref name="local.token.attrib"/>
  </define>
  <!-- end of token.attlist -->
  <!-- end of token.module -->
  <define name="local.type.attrib">
    <empty/>
  </define>
  <define name="type.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The classification of a value. -->
  <define name="type">
    <element name="type">
      <ref name="type.attlist"/>
      <zeroOrMore>
        <ref name="smallcptr.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of type.element -->
  <define name="type.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="type.role.attrib"/>
    <ref name="local.type.attrib"/>
  </define>
  <!-- end of type.attlist -->
  <!-- end of type.module -->
  <define name="local.userinput.attrib">
    <empty/>
  </define>
  <define name="userinput.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Data entered by the user. -->
  <define name="userinput">
    <element name="userinput">
      <ref name="userinput.attlist"/>
      <zeroOrMore>
        <choice>
          <ref name="cptr.char.mix"/>
          <ref name="co"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of userinput.element -->
  <define name="userinput.attlist" combine="interleave">
    <ref name="moreinfo.attrib"/>
    <ref name="common.attrib"/>
    <ref name="userinput.role.attrib"/>
    <ref name="local.userinput.attrib"/>
  </define>
  <!-- end of userinput.attlist -->
  <!-- end of userinput.module -->
  <define name="local.termdef.attrib">
    <empty/>
  </define>
  <define name="termdef.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An inline definition of a term. -->
  <define name="termdef">
    <element name="termdef">
      <ref name="termdef.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of termdef.element -->
  <define name="termdef.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="termdef.role.attrib"/>
    <ref name="local.termdef.attrib"/>
  </define>
  <!-- end of termdef.attlist -->
  <!-- end of termdef.module -->
  <!-- General words and phrases ............................................ -->
  <define name="local.abbrev.attrib">
    <empty/>
  </define>
  <define name="abbrev.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An abbreviation, especially one followed by a period. -->
  <define name="abbrev">
    <element name="abbrev">
      <ref name="abbrev.attlist"/>
      <zeroOrMore>
        <ref name="word.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of abbrev.element -->
  <define name="abbrev.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="abbrev.role.attrib"/>
    <ref name="local.abbrev.attrib"/>
  </define>
  <!-- end of abbrev.attlist -->
  <!-- end of abbrev.module -->
  <define name="local.acronym.attrib">
    <empty/>
  </define>
  <define name="acronym.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An often pronounceable word made from the initial (or selected) letters of a name or phrase. -->
  <define name="acronym">
    <element name="acronym">
      <ref name="acronym.attlist"/>
      <zeroOrMore>
        <ref name="word.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of acronym.element -->
  <define name="acronym.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="acronym.role.attrib"/>
    <ref name="local.acronym.attrib"/>
  </define>
  <!-- end of acronym.attlist -->
  <!-- end of acronym.module -->
  <define name="local.citation.attrib">
    <empty/>
  </define>
  <define name="citation.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An inline bibliographic reference to another published work. -->
  <define name="citation">
    <element name="citation">
      <ref name="citation.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of citation.element -->
  <define name="citation.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="citation.role.attrib"/>
    <ref name="local.citation.attrib"/>
  </define>
  <!-- end of citation.attlist -->
  <!-- end of citation.module -->
  <define name="local.citerefentry.attrib">
    <empty/>
  </define>
  <define name="citerefentry.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A citation to a reference page. -->
  <define name="citerefentry">
    <element name="citerefentry">
      <ref name="citerefentry.attlist"/>
      <ref name="refentrytitle"/>
      <optional>
        <ref name="manvolnum"/>
      </optional>
    </element>
  </define>
  <!-- end of citerefentry.element -->
  <define name="citerefentry.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="citerefentry.role.attrib"/>
    <ref name="local.citerefentry.attrib"/>
  </define>
  <!-- end of citerefentry.attlist -->
  <!-- end of citerefentry.module -->
  <define name="local.refentrytitle.attrib">
    <empty/>
  </define>
  <define name="refentrytitle.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The title of a reference page. -->
  <define name="refentrytitle">
    <element name="refentrytitle">
      <ref name="refentrytitle.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of refentrytitle.element -->
  <define name="refentrytitle.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="refentrytitle.role.attrib"/>
    <ref name="local.refentrytitle.attrib"/>
  </define>
  <!-- end of refentrytitle.attlist -->
  <!-- end of refentrytitle.module -->
  <define name="local.manvolnum.attrib">
    <empty/>
  </define>
  <define name="namvolnum.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A reference volume number. -->
  <define name="manvolnum">
    <element name="manvolnum">
      <ref name="manvolnum.attlist"/>
      <zeroOrMore>
        <ref name="word.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of manvolnum.element -->
  <define name="manvolnum.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="namvolnum.role.attrib"/>
    <ref name="local.manvolnum.attrib"/>
  </define>
  <!-- end of manvolnum.attlist -->
  <!-- end of manvolnum.module -->
  <define name="local.citetitle.attrib">
    <empty/>
  </define>
  <define name="citetitle.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The title of a cited work. -->
  <define name="citetitle">
    <element name="citetitle">
      <ref name="citetitle.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of citetitle.element -->
  <!-- Pubwork: Genre of published work cited; no default -->
  <define name="citetitle.attlist" combine="interleave">
    <optional>
      <attribute name="pubwork">
        <choice>
          <value>article</value>
          <value>book</value>
          <value>chapter</value>
          <value>part</value>
          <value>refentry</value>
          <value>section</value>
          <value>journal</value>
          <value>series</value>
          <value>set</value>
          <value>manuscript</value>
          <value>cdrom</value>
          <value>dvd</value>
          <value>wiki</value>
          <value>gopher</value>
          <value>bbs</value>
          <value>emailmessage</value>
          <value>webpage</value>
          <value>newsposting</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="citetitle.role.attrib"/>
    <ref name="local.citetitle.attrib"/>
  </define>
  <!-- end of citetitle.attlist -->
  <!-- end of citetitle.module -->
  <define name="local.emphasis.attrib">
    <empty/>
  </define>
  <define name="emphasis.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Emphasized text. -->
  <define name="emphasis">
    <element name="emphasis">
      <ref name="emphasis.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of emphasis.element -->
  <define name="emphasis.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="emphasis.role.attrib"/>
    <ref name="local.emphasis.attrib"/>
  </define>
  <!-- end of emphasis.attlist -->
  <!-- end of emphasis.module -->
  <define name="local.foreignphrase.attrib">
    <empty/>
  </define>
  <define name="foreignphrase.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A word or phrase in a language other than the primary language of the document. -->
  <define name="foreignphrase">
    <element name="foreignphrase">
      <ref name="foreignphrase.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of foreignphrase.element -->
  <define name="foreignphrase.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="foreignphrase.role.attrib"/>
    <ref name="local.foreignphrase.attrib"/>
  </define>
  <!-- end of foreignphrase.attlist -->
  <!-- end of foreignphrase.module -->
  <define name="local.glossterm.attrib">
    <empty/>
  </define>
  <define name="glossterm.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A glossary term. -->
  <define name="glossterm">
    <element name="glossterm">
      <ref name="glossterm.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of glossterm.element -->
  <!-- to GlossEntry if Glossterm used in text -->
  <!--
    BaseForm: Provides the form of GlossTerm to be used
    for indexing
  -->
  <define name="glossterm.attlist" combine="interleave">
    <optional>
      <attribute name="baseform"/>
    </optional>
    <ref name="linkend.attrib"/>
    <ref name="common.attrib"/>
    <ref name="glossterm.role.attrib"/>
    <ref name="local.glossterm.attrib"/>
  </define>
  <!-- end of glossterm.attlist -->
  <!-- end of glossterm.module -->
  <define name="local.firstterm.attrib">
    <empty/>
  </define>
  <define name="firstterm.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The first occurrence of a term. -->
  <define name="firstterm">
    <element name="firstterm">
      <ref name="firstterm.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of firstterm.element -->
  <!-- to GlossEntry or other explanation -->
  <define name="firstterm.attlist" combine="interleave">
    <optional>
      <attribute name="baseform"/>
    </optional>
    <ref name="linkend.attrib"/>
    <ref name="common.attrib"/>
    <ref name="firstterm.role.attrib"/>
    <ref name="local.firstterm.attrib"/>
  </define>
  <!-- end of firstterm.attlist -->
  <!-- end of firstterm.module -->
  <define name="local.phrase.attrib">
    <empty/>
  </define>
  <define name="phrase.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A span of text. -->
  <define name="phrase">
    <element name="phrase">
      <ref name="phrase.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of phrase.element -->
  <define name="phrase.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="phrase.role.attrib"/>
    <ref name="local.phrase.attrib"/>
  </define>
  <!-- end of phrase.attlist -->
  <!-- end of phrase.module -->
  <define name="local.quote.attrib">
    <empty/>
  </define>
  <define name="quote.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:An inline quotation. -->
  <define name="quote">
    <element name="quote">
      <ref name="quote.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of quote.element -->
  <define name="quote.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="quote.role.attrib"/>
    <ref name="local.quote.attrib"/>
  </define>
  <!-- end of quote.attlist -->
  <!-- end of quote.module -->
  <define name="local.ssscript.attrib">
    <empty/>
  </define>
  <define name="ssscript.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A subscript (as in H{^2}O, the molecular formula for water). -->
  <define name="subscript">
    <element name="subscript">
      <ref name="subscript.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="link.char.class"/>
          <ref name="emphasis"/>
          <ref name="replaceable"/>
          <ref name="symbol"/>
          <ref name="inlinegraphic"/>
          <ref name="inlinemediaobject"/>
          <ref name="base.char.class"/>
          <ref name="other.char.class"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of subscript.element -->
  <define name="subscript.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="ssscript.role.attrib"/>
    <ref name="local.ssscript.attrib"/>
  </define>
  <!-- end of subscript.attlist -->
  <!-- doc:A superscript (as in x^2, the mathematical notation for x multiplied by itself). -->
  <define name="superscript">
    <element name="superscript">
      <ref name="superscript.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="link.char.class"/>
          <ref name="emphasis"/>
          <ref name="replaceable"/>
          <ref name="symbol"/>
          <ref name="inlinegraphic"/>
          <ref name="inlinemediaobject"/>
          <ref name="base.char.class"/>
          <ref name="other.char.class"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of superscript.element -->
  <define name="superscript.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="ssscript.role.attrib"/>
    <ref name="local.ssscript.attrib"/>
  </define>
  <!-- end of superscript.attlist -->
  <!-- end of ssscript.module -->
  <define name="local.trademark.attrib">
    <empty/>
  </define>
  <define name="trademark.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A trademark. -->
  <define name="trademark">
    <element name="trademark">
      <ref name="trademark.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="link.char.class"/>
          <ref name="tech.char.class"/>
          <ref name="base.char.class"/>
          <ref name="other.char.class"/>
          <ref name="inlinegraphic"/>
          <ref name="inlinemediaobject"/>
          <ref name="emphasis"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of trademark.element -->
  <!-- Class: More precisely identifies the item the element names -->
  <define name="trademark.attlist" combine="interleave">
    <optional>
      <attribute name="class" a:defaultValue="trade">
        <choice>
          <value>service</value>
          <value>trade</value>
          <value>registered</value>
          <value>copyright</value>
        </choice>
      </attribute>
    </optional>
    <ref name="common.attrib"/>
    <ref name="trademark.role.attrib"/>
    <ref name="local.trademark.attrib"/>
  </define>
  <!-- end of trademark.attlist -->
  <!-- end of trademark.module -->
  <define name="local.wordasword.attrib">
    <empty/>
  </define>
  <define name="wordasword.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A word meant specifically as a word and not representing anything else. -->
  <define name="wordasword">
    <element name="wordasword">
      <ref name="wordasword.attlist"/>
      <zeroOrMore>
        <ref name="word.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of wordasword.element -->
  <define name="wordasword.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="wordasword.role.attrib"/>
    <ref name="local.wordasword.attrib"/>
  </define>
  <!-- end of wordasword.attlist -->
  <!-- end of wordasword.module -->
  <!-- Links and cross-references ........................................... -->
  <define name="local.link.attrib">
    <empty/>
  </define>
  <define name="link.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A hypertext link. -->
  <define name="link">
    <element name="link">
      <ref name="link.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of link.element -->
  <!--
    Endterm: ID of element containing text that is to be
    fetched from elsewhere in the document to appear as
    the content of this element
  -->
  <!-- to linked-to object -->
  <!-- Type: Freely assignable parameter -->
  <define name="link.attlist" combine="interleave">
    <optional>
      <attribute name="endterm">
        <data type="IDREF"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="xrefstyle"/>
    </optional>
    <optional>
      <attribute name="type"/>
    </optional>
    <ref name="linkendreq.attrib"/>
    <ref name="common.attrib"/>
    <ref name="link.role.attrib"/>
    <ref name="local.link.attrib"/>
  </define>
  <!-- end of link.attlist -->
  <!-- end of link.module -->
  <define name="local.olink.attrib">
    <empty/>
  </define>
  <define name="olink.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A link that addresses its target indirectly, through an entity. -->
  <define name="olink">
    <element name="olink">
      <ref name="olink.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of olink.element -->
  <!-- TargetDocEnt: Name of an entity to be the target of the link -->
  <!--
    LinkMode: ID of a ModeSpec containing instructions for
    operating on the entity named by TargetDocEnt
  -->
  <!-- LocalInfo: Information that may be passed to ModeSpec -->
  <!-- Type: Freely assignable parameter -->
  <define name="olink.attlist" combine="interleave">
    <optional>
      <attribute name="targetdocent">
        <data type="ENTITY"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="linkmode">
        <data type="IDREF"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="localinfo"/>
    </optional>
    <optional>
      <attribute name="type"/>
    </optional>
    <optional>
      <attribute name="targetdoc"/>
    </optional>
    <optional>
      <attribute name="targetptr"/>
    </optional>
    <optional>
      <attribute name="xrefstyle"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="olink.role.attrib"/>
    <ref name="local.olink.attrib"/>
  </define>
  <!-- end of olink.attlist -->
  <!-- end of olink.module -->
  <define name="local.ulink.attrib">
    <empty/>
  </define>
  <define name="ulink.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A link that addresses its target by means of a URL (Uniform Resource Locator). -->
  <define name="ulink">
    <element name="ulink">
      <ref name="ulink.attlist"/>
      <zeroOrMore>
        <ref name="para.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of ulink.element -->
  <!-- URL: uniform resource locator; the target of the ULink -->
  <!-- Type: Freely assignable parameter -->
  <define name="ulink.attlist" combine="interleave">
    <attribute name="url"/>
    <optional>
      <attribute name="type"/>
    </optional>
    <optional>
      <attribute name="xrefstyle"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="ulink.role.attrib"/>
    <ref name="local.ulink.attrib"/>
  </define>
  <!-- end of ulink.attlist -->
  <!-- end of ulink.module -->
  <define name="local.footnoteref.attrib">
    <empty/>
  </define>
  <define name="footnoteref.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A cross reference to a footnote (a footnote mark). -->
  <define name="footnoteref">
    <element name="footnoteref">
      <ref name="footnoteref.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of footnoteref.element -->
  <!-- to footnote content supplied elsewhere -->
  <define name="footnoteref.attlist" combine="interleave">
    <ref name="linkendreq.attrib"/>
    <ref name="label.attrib"/>
    <ref name="common.attrib"/>
    <ref name="footnoteref.role.attrib"/>
    <ref name="local.footnoteref.attrib"/>
  </define>
  <!-- end of footnoteref.attlist -->
  <!-- end of footnoteref.module -->
  <define name="local.xref.attrib">
    <empty/>
  </define>
  <define name="xref.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A cross reference to another part of the document. -->
  <define name="xref">
    <element name="xref">
      <ref name="xref.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of xref.element -->
  <!--
    Endterm: ID of element containing text that is to be
    fetched from elsewhere in the document to appear as
    the content of this element
  -->
  <!-- to linked-to object -->
  <define name="xref.attlist" combine="interleave">
    <optional>
      <attribute name="endterm">
        <data type="IDREF"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="xrefstyle"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="linkendreq.attrib"/>
    <ref name="xref.role.attrib"/>
    <ref name="local.xref.attrib"/>
  </define>
  <!-- end of xref.attlist -->
  <!-- end of xref.module -->
  <define name="local.biblioref.attrib">
    <empty/>
  </define>
  <define name="biblioref.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A cross reference to a bibliographic entry. -->
  <define name="biblioref">
    <element name="biblioref">
      <ref name="biblioref.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of biblioref.element -->
  <define name="biblioref.attlist" combine="interleave">
    <optional>
      <attribute name="endterm">
        <data type="IDREF"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="xrefstyle"/>
    </optional>
    <optional>
      <attribute name="units"/>
    </optional>
    <optional>
      <attribute name="begin"/>
    </optional>
    <optional>
      <attribute name="end"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="linkendreq.attrib"/>
    <ref name="biblioref.role.attrib"/>
    <ref name="local.biblioref.attrib"/>
  </define>
  <!-- end of biblioref.attlist -->
  <!-- end of biblioref.module -->
  <!-- Ubiquitous elements .................................................. -->
  <define name="local.anchor.attrib">
    <empty/>
  </define>
  <define name="anchor.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A spot in the document. -->
  <define name="anchor">
    <element name="anchor">
      <ref name="anchor.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of anchor.element -->
  <!-- required -->
  <!-- replaces Lang -->
  <define name="anchor.attlist" combine="interleave">
    <ref name="idreq.attrib"/>
    <ref name="pagenum.attrib"/>
    <ref name="remap.attrib"/>
    <ref name="xreflabel.attrib"/>
    <ref name="revisionflag.attrib"/>
    <ref name="effectivity.attrib"/>
    <ref name="anchor.role.attrib"/>
    <ref name="local.anchor.attrib"/>
  </define>
  <!-- end of anchor.attlist -->
  <!-- end of anchor.module -->
  <define name="local.beginpage.attrib">
    <empty/>
  </define>
  <define name="beginpage.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The location of a page break in a print version of the document. -->
  <define name="beginpage">
    <element name="beginpage">
      <ref name="beginpage.attlist"/>
      <empty/>
    </element>
  </define>
  <!-- end of beginpage.element -->
  <!-- PageNum: Number of page that begins at this point -->
  <define name="beginpage.attlist" combine="interleave">
    <ref name="pagenum.attrib"/>
    <ref name="common.attrib"/>
    <ref name="beginpage.role.attrib"/>
    <ref name="local.beginpage.attrib"/>
  </define>
  <!-- end of beginpage.attlist -->
  <!-- end of beginpage.module -->
  <!--
    IndexTerms appear in the text flow for generating or linking an
    index.
  -->
  <define name="local.indexterm.attrib">
    <empty/>
  </define>
  <define name="indexterm.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:A wrapper for terms to be indexed. -->
  <define name="indexterm">
    <element name="indexterm">
      <ref name="indexterm.attlist"/>
      <optional>
        <ref name="primary"/>
      </optional>
      <optional>
        <choice>
          <group>
            <ref name="secondary"/>
            <optional>
              <choice>
                <group>
                  <ref name="tertiary"/>
                  <optional>
                    <choice>
                      <ref name="see"/>
                      <oneOrMore>
                        <ref name="seealso"/>
                      </oneOrMore>
                    </choice>
                  </optional>
                </group>
                <ref name="see"/>
                <oneOrMore>
                  <ref name="seealso"/>
                </oneOrMore>
              </choice>
            </optional>
          </group>
          <ref name="see"/>
          <oneOrMore>
            <ref name="seealso"/>
          </oneOrMore>
        </choice>
      </optional>
    </element>
  </define>
  <!-- end of indexterm.element -->
  <!--
    Scope: Indicates which generated indices the IndexTerm
    should appear in: Global (whole document set), Local (this
    document only), or All (both)
  -->
  <!--
    Significance: Whether this IndexTerm is the most pertinent
    of its series (Preferred) or not (Normal, the default)
  -->
  <!--
    Class: Indicates type of IndexTerm; default is Singular,
    or EndOfRange if StartRef is supplied; StartOfRange value
    must be supplied explicitly on starts of ranges
  -->
  <!--
    StartRef: ID of the IndexTerm that starts the indexing
    range ended by this IndexTerm
  -->
  <!--
    Zone: IDs of the elements to which the IndexTerm applies,
    and indicates that the IndexTerm applies to those entire
    elements rather than the point at which the IndexTerm
    occurs
  -->
  <define name="indexterm.attlist" combine="interleave">
    <ref name="pagenum.attrib"/>
    <optional>
      <attribute name="scope">
        <choice>
          <value>all</value>
          <value>global</value>
          <value>local</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="significance" a:defaultValue="normal">
        <choice>
          <value>preferred</value>
          <value>normal</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="class">
        <choice>
          <value>singular</value>
          <value>startofrange</value>
          <value>endofrange</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="startref">
        <data type="IDREF"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="zone">
        <data type="IDREFS"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="type"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="indexterm.role.attrib"/>
    <ref name="local.indexterm.attrib"/>
  </define>
  <!-- end of indexterm.attlist -->
  <!-- end of indexterm.module -->
  <define name="local.primsecter.attrib">
    <empty/>
  </define>
  <define name="primsecter.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:The primary word or phrase under which an index term should be sorted. -->
  <define name="primary">
    <element name="primary">
      <ref name="primary.attlist"/>
      <zeroOrMore>
        <ref name="ndxterm.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of primary.element -->
  <!--
    SortAs: Alternate sort string for index sorting, e.g.,
    "fourteen" for an element containing "14"
  -->
  <define name="primary.attlist" combine="interleave">
    <optional>
      <attribute name="sortas"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="primsecter.role.attrib"/>
    <ref name="local.primsecter.attrib"/>
  </define>
  <!-- end of primary.attlist -->
  <!-- doc:A secondary word or phrase in an index term. -->
  <define name="secondary">
    <element name="secondary">
      <ref name="secondary.attlist"/>
      <zeroOrMore>
        <ref name="ndxterm.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of secondary.element -->
  <!--
    SortAs: Alternate sort string for index sorting, e.g.,
    "fourteen" for an element containing "14"
  -->
  <define name="secondary.attlist" combine="interleave">
    <optional>
      <attribute name="sortas"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="primsecter.role.attrib"/>
    <ref name="local.primsecter.attrib"/>
  </define>
  <!-- end of secondary.attlist -->
  <!-- doc:A tertiary word or phrase in an index term. -->
  <define name="tertiary">
    <element name="tertiary">
      <ref name="tertiary.attlist"/>
      <zeroOrMore>
        <ref name="ndxterm.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of tertiary.element -->
  <!--
    SortAs: Alternate sort string for index sorting, e.g.,
    "fourteen" for an element containing "14"
  -->
  <define name="tertiary.attlist" combine="interleave">
    <optional>
      <attribute name="sortas"/>
    </optional>
    <ref name="common.attrib"/>
    <ref name="primsecter.role.attrib"/>
    <ref name="local.primsecter.attrib"/>
  </define>
  <!-- end of tertiary.attlist -->
  <!-- end of primsecter.module -->
  <define name="local.seeseealso.attrib">
    <empty/>
  </define>
  <define name="seeseealso.role.attrib">
    <ref name="role.attrib"/>
  </define>
  <!-- doc:Part of an index term directing the reader instead to another entry in the index. -->
  <define name="see">
    <element name="see">
      <ref name="see.attlist"/>
      <zeroOrMore>
        <ref name="ndxterm.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of see.element -->
  <define name="see.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="seeseealso.role.attrib"/>
    <ref name="local.seeseealso.attrib"/>
  </define>
  <!-- end of see.attlist -->
  <!-- doc:Part of an index term directing the reader also to another entry in the index. -->
  <define name="seealso">
    <element name="seealso">
      <ref name="seealso.attlist"/>
      <zeroOrMore>
        <ref name="ndxterm.char.mix"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- end of seealso.element -->
  <define name="seealso.attlist" combine="interleave">
    <ref name="common.attrib"/>
    <ref name="seeseealso.role.attrib"/>
    <ref name="local.seeseealso.attrib"/>
  </define>
</grammar>
<!-- end of seealso.attlist -->
<!-- end of seeseealso.module -->
<!-- end of indexterm.content.module -->
<!-- End of DocBook XML information pool module V4.5 ...................... -->
<!-- ...................................................................... -->
