<?xml version="1.0" encoding="UTF-8"?>
<!-- ...................................................................... -->
<!-- DocBook XML information pool module V4.5b1 ............................. -->
<!-- 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,v 1.114 2005/05/05 11:38:52 nwalsh Exp $
  
  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.5b1//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="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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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 -->
  <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 -->
  <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 -->
  <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 -->
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
      <attr