<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?>
<!DOCTYPE interface-description SYSTEM 'file:///usr/pkgsrc/lang/oo2c/work.macaroon/oo2c_32-2.0.11/rsrc/OOC/xml/interface-description.dtd'>
<interface-description name='XML:DTD' id=''>
  <oberon-doc>
    <summary>This module implements the mechanisms to store, maintain, and query the data gathered from an XML document's DTD.</summary>
    <p pad-after='yes' no-indent='yes'>This module implements the mechanisms to store, maintain, and query the data gathered from an XML document's DTD.  An instance of <oberon-type href='#Builder'>Builder</oberon-type> is created by the parser <oberon-type href='XML:Parser#Parser'>XML:Parser.Parser</oberon-type> to hold a document's DTD information.</p>
  </oberon-doc>
  <import-decl name='URI' id='URI' export='no' module='URI'/>
  <import-decl name='UnicodeCodec' id='UnicodeCodec' export='no' module='XML:UnicodeCodec'/>
  <import-decl name='UnicodeBuffer' id='UnicodeBuffer' export='no' module='XML:UnicodeBuffer'/>
  <type-decl name='Char' id='Char' export='yes'>
    <oberon-doc>
      <summary>Character type used to store names and character data from an XML document.</summary>
      <p pad-after='yes' no-indent='yes'>Character type used to store names and character data from an XML document.</p>
    </oberon-doc>
    <type>
      <type-name module='UnicodeBuffer' name='Char' href='XML:UnicodeBuffer#Char'/>
    </type>
  </type-decl>
  <type-decl name='String' id='String' export='yes'>
    <oberon-doc>
      <summary>A pointer to an array of <oberon-type href='#Char'>Char</oberon-type>.</summary>
      <p pad-after='yes' no-indent='yes'>A pointer to an array of <oberon-type href='#Char'>Char</oberon-type>.</p>
    </oberon-doc>
    <type>
      <type-name module='UnicodeBuffer' name='CharArray' href='XML:UnicodeBuffer#CharArray'/>
    </type>
  </type-decl>
  <type-decl name='StringVar' id='StringVar' export='yes'>
    <oberon-doc>
      <summary>An open array with <oberon-type href='#Char'>Char</oberon-type> as element type.</summary>
      <p pad-after='yes' no-indent='yes'>An open array with <oberon-type href='#Char'>Char</oberon-type> as element type.</p>
    </oberon-doc>
    <type>
      <array>
        <element-type>
          <type-name module='#predef' name='Char'/>
        </element-type>
      </array>
    </type>
  </type-decl>
  <type-decl name='CharPos' id='CharPos' export='yes'>
    <oberon-doc>
      <summary>This integer type is used to store the position of a character in the input buffer or in a string.</summary>
      <p pad-after='yes' no-indent='yes'>This integer type is used to store the position of a character in the input buffer or in a string.</p>
    </oberon-doc>
    <type>
      <type-name module='UnicodeBuffer' name='CharPos' href='XML:UnicodeBuffer#CharPos'/>
    </type>
  </type-decl>
  <type-decl name='StandaloneType' id='StandaloneType' export='yes'>
    <oberon-doc>
      <summary>Used to store information about the <samp>standalone</samp> of an XML declaration.</summary>
      <p pad-after='yes' no-indent='yes'>Used to store information about the <samp>standalone</samp> of an XML declaration.  One of <oberon-const href='#standaloneYes'>standaloneYes</oberon-const>, <oberon-const href='#standaloneNo'>standaloneNo</oberon-const>, <oberon-const href='#standaloneNotPresent'>standaloneNotPresent</oberon-const>, or <oberon-const href='#standaloneNotApplicable'>standaloneNotApplicable</oberon-const>.</p>
    </oberon-doc>
    <type>
      <type-name module='#predef' name='SHORTINT'/>
    </type>
  </type-decl>
  <const-decl name='standaloneYes' id='standaloneYes' export='yes' value='unknown'/>
  <const-decl name='standaloneNo' id='standaloneNo' export='yes' value='unknown'/>
  <const-decl name='standaloneNotPresent' id='standaloneNotPresent' export='yes' value='unknown'/>
  <const-decl name='standaloneNotApplicable' id='standaloneNotApplicable' export='yes' value='unknown'/>
  <type-decl name='AttributeType' id='AttributeType' export='yes'>
    <oberon-doc>
      <summary>Indicates the type of an attribute.</summary>
      <p pad-after='yes' no-indent='yes'>Indicates the type of an attribute.  See <oberon-const href='#attrCDATA'>attrCDATA</oberon-const> et al.</p>
    </oberon-doc>
    <type>
      <type-name module='#predef' name='SHORTINT'/>
    </type>
  </type-decl>
  <const-decl name='attrID' id='attrID' export='yes' value='unknown'/>
  <const-decl name='attrIDREF' id='attrIDREF' export='yes' value='unknown'/>
  <const-decl name='attrIDREFS' id='attrIDREFS' export='yes' value='unknown'/>
  <const-decl name='attrENTITY' id='attrENTITY' export='yes' value='unknown'/>
  <const-decl name='attrENTITIES' id='attrENTITIES' export='yes' value='unknown'/>
  <const-decl name='attrNMTOKEN' id='attrNMTOKEN' export='yes' value='unknown'/>
  <const-decl name='attrNMTOKENS' id='attrNMTOKENS' export='yes' value='unknown'/>
  <const-decl name='attrNOTATION' id='attrNOTATION' export='yes' value='unknown'/>
  <const-decl name='attrENUMERATED' id='attrENUMERATED' export='yes' value='unknown'/>
  <const-decl name='attrCDATA' id='attrCDATA' export='yes' value='unknown'/>
  <type-decl name='DefaultType' id='DefaultType' export='yes'>
    <oberon-doc>
      <summary>Indicates the defaulting mode of an attribute declaration.</summary>
      <p pad-after='yes' no-indent='yes'>Indicates the defaulting mode of an attribute declaration.  One of <oberon-const href='#attrRequired'>attrRequired</oberon-const>, <oberon-const href='#attrImplied'>attrImplied</oberon-const>, <oberon-const href='#attrDefault'>attrDefault</oberon-const>, or <oberon-const href='#attrFixed'>attrFixed</oberon-const>.</p>
    </oberon-doc>
    <type>
      <type-name module='#predef' name='SHORTINT'/>
    </type>
  </type-decl>
  <const-decl name='attrRequired' id='attrRequired' export='yes' value='unknown'/>
  <const-decl name='attrImplied' id='attrImplied' export='yes' value='unknown'/>
  <const-decl name='attrDefault' id='attrDefault' export='yes' value='unknown'/>
  <const-decl name='attrFixed' id='attrFixed' export='yes' value='unknown'/>
  <var-decl name='undefAttr' id='undefAttr' export='read-only'>
    <type>
      <type-name name='AttrDecl' href='#AttrDecl'/>
    </type>
  </var-decl>
  <type-decl name='EntityType' id='EntityType' export='yes'>
    <oberon-doc>
      <summary>Values of this type indicate the type of an entity.</summary>
      <p pad-after='yes' no-indent='yes'>Values of this type indicate the type of an entity.  See <oberon-const href='#entityInternalGeneral'>entityInternalGeneral</oberon-const> et al.</p>
    </oberon-doc>
    <type>
      <type-name module='#predef' name='SHORTINT'/>
    </type>
  </type-decl>
  <const-decl name='entityInternalGeneral' id='entityInternalGeneral' export='yes' value='unknown'>
    <oberon-doc>
      <summary>Internal general entity.</summary>
      <p pad-after='yes' no-indent='yes'>Internal general entity.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='entityInternalParameter' id='entityInternalParameter' export='yes' value='unknown'>
    <oberon-doc>
      <summary>Internal parameter entity.</summary>
      <p pad-after='yes' no-indent='yes'>Internal parameter entity.  Such entities do not appear in the XML infoset.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='entityExternalGeneral' id='entityExternalGeneral' export='yes' value='unknown'>
    <oberon-doc>
      <summary>External general entity.</summary>
      <p pad-after='yes' no-indent='yes'>External general entity.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='entityExternalParameter' id='entityExternalParameter' export='yes' value='unknown'>
    <oberon-doc>
      <summary>External parameter entity.</summary>
      <p pad-after='yes' no-indent='yes'>External parameter entity.  Such entities do not appear in the XML infoset.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='entityUnparsed' id='entityUnparsed' export='yes' value='unknown'>
    <oberon-doc>
      <summary>Unparsed external general entity.</summary>
      <p pad-after='yes' no-indent='yes'>Unparsed external general entity.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='entityDocument' id='entityDocument' export='yes' value='unknown'>
    <oberon-doc>
      <summary>Document entity.</summary>
      <p pad-after='yes' no-indent='yes'>Document entity.  It represents the top-level entity of a document, the one that holds the internal DTD subset and the root element.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='entityExternalDTDSubset' id='entityExternalDTDSubset' export='yes' value='unknown'>
    <oberon-doc>
      <summary>Entity representing the external DTD subset.</summary>
      <p pad-after='yes' no-indent='yes'>Entity representing the external DTD subset.</p>
    </oberon-doc>
  </const-decl>
  <type-decl name='CPModeType' id='CPModeType' export='yes'>
    <type>
      <type-name module='#predef' name='SHORTINT'/>
    </type>
  </type-decl>
  <const-decl name='cpOnce' id='cpOnce' export='yes' value='unknown'/>
  <const-decl name='cpOptional' id='cpOptional' export='yes' value='unknown'/>
  <const-decl name='cpRepeat0' id='cpRepeat0' export='yes' value='unknown'/>
  <const-decl name='cpRepeat1' id='cpRepeat1' export='yes' value='unknown'/>
  <type-decl name='ContentType' id='ContentType' export='yes'>
    <type>
      <type-name module='#predef' name='SHORTINT'/>
    </type>
  </type-decl>
  <const-decl name='contentEMPTY' id='contentEMPTY' export='yes' value='unknown'/>
  <const-decl name='contentANY' id='contentANY' export='yes' value='unknown'/>
  <const-decl name='contentMixed' id='contentMixed' export='yes' value='unknown'/>
  <const-decl name='contentChildren' id='contentChildren' export='yes' value='unknown'/>
  <type-decl name='ElementWhitespaceType' id='ElementWhitespaceType' export='yes'>
    <type>
      <type-name module='#predef' name='SHORTINT'/>
    </type>
  </type-decl>
  <const-decl name='elementWhitespaceYes' id='elementWhitespaceYes' export='yes' value='unknown'>
    <oberon-doc>
      <summary>This flag is used if the document source matches the production <code>S</code>, the parser is validating, and the current element only permits element content.</summary>
      <p pad-after='yes' no-indent='yes'>This flag is used if the document source matches the production <code>S</code>, the parser is validating, and the current element only permits element content.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='elementWhitespaceNo' id='elementWhitespaceNo' export='yes' value='unknown'>
    <oberon-doc>
      <summary>If the document source for a character sequence does not match the <code>S</code> production (for example, because it includes a non-whitespace character, a character reference, or is a <code>CDATA</code> section), then <oberon-param href='XML:Builder#Characters.elementWhitespace'>XML:Builder.Characters.elementWhitespace</oberon-param> is <oberon-const href='#elementWhitespaceNo'>elementWhitespaceNo</oberon-const>.</summary>
      <p pad-after='yes' no-indent='yes'>If the document source for a character sequence does not match the <code>S</code> production (for example, because it includes a non-whitespace character, a character reference, or is a <code>CDATA</code> section), then <oberon-param href='XML:Builder#Characters.elementWhitespace'>XML:Builder.Characters.elementWhitespace</oberon-param> is <oberon-const href='#elementWhitespaceNo'>elementWhitespaceNo</oberon-const>.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='elementWhitespaceUnknown' id='elementWhitespaceUnknown' export='yes' value='unknown'>
    <oberon-doc>
      <summary>If the document source matches the production <code>S</code>, but the parser does not know if the current element permits only element content, then the character data is flagged as <oberon-const href='#elementWhitespaceUnknown'>elementWhitespaceUnknown</oberon-const>.</summary>
      <p pad-after='yes' no-indent='yes'>If the document source matches the production <code>S</code>, but the parser does not know if the current element permits only element content, then the character data is flagged as <oberon-const href='#elementWhitespaceUnknown'>elementWhitespaceUnknown</oberon-const>.</p>
    </oberon-doc>
  </const-decl>
  <type-decl name='StringURI' id='StringURI' export='yes'>
    <type>
      <pointer>
        <pointer-base>
          <array>
            <element-type>
              <type-name module='#predef' name='CHAR'/>
            </element-type>
          </array>
        </pointer-base>
      </pointer>
    </type>
  </type-decl>
  <procedure name='GetString' id='GetString' export='yes'>
    <formal-parameters>
      <parameter-decl name='string' id='GetString.string' export='no' variable-parameter='yes'>
        <type>
          <array>
            <element-type>
              <type-name module='#predef' name='Char'/>
            </element-type>
          </array>
        </type>
      </parameter-decl>
      <parameter-decl name='start' id='GetString.start' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='LONGINT'/>
        </type>
      </parameter-decl>
      <parameter-decl name='end' id='GetString.end' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='LONGINT'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name name='String' href='#String'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='GetStringValue' id='GetStringValue' export='yes'>
    <formal-parameters>
      <parameter-decl name='string' id='GetStringValue.string' export='no' variable-parameter='no'>
        <type>
          <array>
            <element-type>
              <type-name module='#predef' name='Char'/>
            </element-type>
          </array>
        </type>
      </parameter-decl>
      <result-type>
        <type-name name='String' href='#String'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='GetStringURI' id='GetStringURI' export='yes'>
    <formal-parameters>
      <parameter-decl name='string' id='GetStringURI.string' export='no' variable-parameter='yes'>
        <type>
          <array>
            <element-type>
              <type-name module='#predef' name='CHAR'/>
            </element-type>
          </array>
        </type>
      </parameter-decl>
      <parameter-decl name='start' id='GetStringURI.start' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='LONGINT'/>
        </type>
      </parameter-decl>
      <parameter-decl name='end' id='GetStringURI.end' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='LONGINT'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name name='StringURI' href='#StringURI'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <import-decl name='-RT0' id='-RT0' export='no' module='RT0'/>
  <import-decl name='-Object' id='-Object' export='no' module='Object'/>
  <import-decl name='-Exception' id='-Exception' export='no' module='Exception'/>
  <class name='Builder'>
    <type-decl name='Builder' id='Builder' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='BuilderDesc' href='#BuilderDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='BuilderDesc' id='BuilderDesc' export='yes'>
      <type>
        <record>
          <field-decl name='rootName' id='BuilderDesc.rootName' export='read-only'>
            <oberon-doc>
              <summary>Name of the root name, as given in the DTD.</summary>
              <p pad-after='yes' no-indent='yes'>Name of the root name, as given in the DTD.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='geNamespace' id='BuilderDesc.geNamespace' export='read-only'>
            <oberon-doc>
              <summary>Namespace with general entity declarations.</summary>
              <p pad-after='yes' no-indent='yes'>Namespace with general entity declarations.</p>
            </oberon-doc>
            <type>
              <type-name name='Namespace' href='#Namespace'/>
            </type>
          </field-decl>
          <field-decl name='peNamespace' id='BuilderDesc.peNamespace' export='read-only'>
            <oberon-doc>
              <summary>Namespace with parameter entity declarations.</summary>
              <p pad-after='yes' no-indent='yes'>Namespace with parameter entity declarations.</p>
            </oberon-doc>
            <type>
              <type-name name='Namespace' href='#Namespace'/>
            </type>
          </field-decl>
          <field-decl name='elementNamespace' id='BuilderDesc.elementNamespace' export='read-only'>
            <oberon-doc>
              <summary>Namespace with element declarations.</summary>
              <p pad-after='yes' no-indent='yes'>Namespace with element declarations.</p>
            </oberon-doc>
            <type>
              <type-name name='Namespace' href='#Namespace'/>
            </type>
          </field-decl>
          <field-decl name='attributeList' id='BuilderDesc.attributeList' export='read-only'>
            <type>
              <type-name name='Declaration' href='#Declaration'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='NewCharacters' id='BuilderDesc.NewCharacters' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewCharacters.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='source' id='BuilderDesc.NewCharacters.source' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='start' id='BuilderDesc.NewCharacters.start' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CharPos'/>
          </type>
        </parameter-decl>
        <parameter-decl name='end' id='BuilderDesc.NewCharacters.end' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CharPos'/>
          </type>
        </parameter-decl>
        <parameter-decl name='createCopy' id='BuilderDesc.NewCharacters.createCopy' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Characters' href='#Characters'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewEntityRef' id='BuilderDesc.NewEntityRef' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewEntityRef.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='name' id='BuilderDesc.NewEntityRef.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='entity' id='BuilderDesc.NewEntityRef.entity' export='no' variable-parameter='no'>
          <type>
            <type-name name='Entity' href='#Entity'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='EntityRef' href='#EntityRef'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewAttValue' id='BuilderDesc.NewAttValue' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewAttValue.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='AttValue' href='#AttValue'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewEnumeration' id='BuilderDesc.NewEnumeration' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewEnumeration.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='Enumeration' href='#Enumeration'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewAttrDecl' id='BuilderDesc.NewAttrDecl' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewAttrDecl.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='elementName' id='BuilderDesc.NewAttrDecl.elementName' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='name' id='BuilderDesc.NewAttrDecl.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='type' id='BuilderDesc.NewAttrDecl.type' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='AttributeType'/>
          </type>
        </parameter-decl>
        <parameter-decl name='enum' id='BuilderDesc.NewAttrDecl.enum' export='no' variable-parameter='no'>
          <type>
            <type-name name='Enumeration' href='#Enumeration'/>
          </type>
        </parameter-decl>
        <parameter-decl name='default' id='BuilderDesc.NewAttrDecl.default' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='DefaultType'/>
          </type>
        </parameter-decl>
        <parameter-decl name='defaultValue' id='BuilderDesc.NewAttrDecl.defaultValue' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttValue' href='#AttValue'/>
          </type>
        </parameter-decl>
        <parameter-decl name='externalMarkupDecl' id='BuilderDesc.NewAttrDecl.externalMarkupDecl' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='AttrDecl' href='#AttrDecl'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='AddAttribute' id='BuilderDesc.AddAttribute' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.AddAttribute.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='attrDecl' id='BuilderDesc.AddAttribute.attrDecl' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttrDecl' href='#AttrDecl'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='AttachAttributes' id='BuilderDesc.AttachAttributes' export='yes'>
      <oberon-doc>
        <summary>Attaches all attribute declarations in the DTD to the declarations of their element.</summary>
        <p pad-after='yes' no-indent='yes'>Attaches all attribute declarations in the DTD to the declarations of their element.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.AttachAttributes.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
      </formal-parameters>
    </procedure>
    <procedure name='NewInternalEntity' id='BuilderDesc.NewInternalEntity' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewInternalEntity.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='name' id='BuilderDesc.NewInternalEntity.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='type' id='BuilderDesc.NewInternalEntity.type' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='EntityType'/>
          </type>
        </parameter-decl>
        <parameter-decl name='entityValue' id='BuilderDesc.NewInternalEntity.entityValue' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='externalMarkupDecl' id='BuilderDesc.NewInternalEntity.externalMarkupDecl' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='InternalEntity' href='#InternalEntity'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='IsValidEntityDecl' id='BuilderDesc.IsValidEntityDecl' export='yes'>
      <oberon-doc>
        <summary>Tests if the internal entity declaration is legal.</summary>
        <p pad-after='yes' no-indent='yes'>Tests if the internal entity declaration is legal.  If the name <oberon-param href='#BuilderDesc.IsValidEntityDecl.name'>name</oberon-param> refers to a predefined entity, but <oberon-param href='#BuilderDesc.IsValidEntityDecl.entityValue'>entityValue</oberon-param> is no legal replacement text for the entity, then this function returns <code>FALSE</code>.  Otherwise, it returns <code>TRUE</code>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.IsValidEntityDecl.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='name' id='BuilderDesc.IsValidEntityDecl.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='entityValue' id='BuilderDesc.IsValidEntityDecl.entityValue' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name module='#predef' name='BOOLEAN'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewExternalEntity' id='BuilderDesc.NewExternalEntity' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewExternalEntity.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='name' id='BuilderDesc.NewExternalEntity.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='type' id='BuilderDesc.NewExternalEntity.type' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='EntityType'/>
          </type>
        </parameter-decl>
        <parameter-decl name='public' id='BuilderDesc.NewExternalEntity.public' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='system' id='BuilderDesc.NewExternalEntity.system' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='ndata' id='BuilderDesc.NewExternalEntity.ndata' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='baseURI' id='BuilderDesc.NewExternalEntity.baseURI' export='no' variable-parameter='no'>
          <type>
            <type-name module='URI' name='URI' href='URI#URI'/>
          </type>
        </parameter-decl>
        <parameter-decl name='externalMarkupDecl' id='BuilderDesc.NewExternalEntity.externalMarkupDecl' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='ExternalEntity' href='#ExternalEntity'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewExternalDTD' id='BuilderDesc.NewExternalDTD' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewExternalDTD.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='public' id='BuilderDesc.NewExternalDTD.public' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='system' id='BuilderDesc.NewExternalDTD.system' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='baseURI' id='BuilderDesc.NewExternalDTD.baseURI' export='no' variable-parameter='no'>
          <type>
            <type-name module='URI' name='URI' href='URI#URI'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='ExternalEntity' href='#ExternalEntity'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewDocumentEntity' id='BuilderDesc.NewDocumentEntity' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewDocumentEntity.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='baseURI' id='BuilderDesc.NewDocumentEntity.baseURI' export='no' variable-parameter='no'>
          <type>
            <type-name module='URI' name='URI' href='URI#URI'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='ExternalEntity' href='#ExternalEntity'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewNotation' id='BuilderDesc.NewNotation' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewNotation.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='name' id='BuilderDesc.NewNotation.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='public' id='BuilderDesc.NewNotation.public' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='system' id='BuilderDesc.NewNotation.system' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='baseURI' id='BuilderDesc.NewNotation.baseURI' export='no' variable-parameter='no'>
          <type>
            <type-name module='URI' name='URI' href='URI#URI'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Notation' href='#Notation'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewChoiceCP' id='BuilderDesc.NewChoiceCP' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewChoiceCP.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='cpMode' id='BuilderDesc.NewChoiceCP.cpMode' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CPModeType'/>
          </type>
        </parameter-decl>
        <parameter-decl name='list' id='BuilderDesc.NewChoiceCP.list' export='no' variable-parameter='no'>
          <type>
            <type-name name='CP' href='#CP'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='ChoiceCP' href='#ChoiceCP'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewSeqCP' id='BuilderDesc.NewSeqCP' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewSeqCP.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='cpMode' id='BuilderDesc.NewSeqCP.cpMode' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CPModeType'/>
          </type>
        </parameter-decl>
        <parameter-decl name='list' id='BuilderDesc.NewSeqCP.list' export='no' variable-parameter='no'>
          <type>
            <type-name name='CP' href='#CP'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='SeqCP' href='#SeqCP'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewNameCP' id='BuilderDesc.NewNameCP' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewNameCP.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='cpMode' id='BuilderDesc.NewNameCP.cpMode' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CPModeType'/>
          </type>
        </parameter-decl>
        <parameter-decl name='name' id='BuilderDesc.NewNameCP.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='NameCP' href='#NameCP'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewElementDecl' id='BuilderDesc.NewElementDecl' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewElementDecl.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='name' id='BuilderDesc.NewElementDecl.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='contentModel' id='BuilderDesc.NewElementDecl.contentModel' export='no' variable-parameter='no'>
          <type>
            <type-name name='CP' href='#CP'/>
          </type>
        </parameter-decl>
        <parameter-decl name='externalMarkupDecl' id='BuilderDesc.NewElementDecl.externalMarkupDecl' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='ElementDecl' href='#ElementDecl'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='SetRootName' id='BuilderDesc.SetRootName' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.SetRootName.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='name' id='BuilderDesc.SetRootName.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Init' id='Init' export='yes'>
      <oberon-doc>
        <summary>Initializes the DTD builder.</summary>
        <p pad-after='yes' no-indent='yes'>Initializes the DTD builder.  Also registers the predefined general entities <samp>lt</samp>, <samp>gt</samp>, <samp>amp</samp>, <samp>apos</samp>, and <samp>quot</samp>.</p>
      </oberon-doc>
      <formal-parameters>
        <parameter-decl name='b' id='Init.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='New' id='New' export='yes'>
      <formal-parameters>
        <result-type>
          <type-name name='Builder' href='#Builder'/>
        </result-type>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Declaration'>
    <type-decl name='Declaration' id='Declaration' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='DeclarationDesc' href='#DeclarationDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='DeclarationDesc' id='DeclarationDesc' export='yes'>
      <type>
        <record>
          <field-decl name='next' id='DeclarationDesc.next' export='read-only'>
            <oberon-doc>
              <summary>Next declaration in namespace.</summary>
              <p pad-after='yes' no-indent='yes'>Next declaration in namespace.</p>
            </oberon-doc>
            <type>
              <type-name name='Declaration' href='#Declaration'/>
            </type>
          </field-decl>
          <field-decl name='name' id='DeclarationDesc.name' export='read-only'>
            <oberon-doc>
              <summary>Name of the declared object.</summary>
              <p pad-after='yes' no-indent='yes'>Name of the declared object.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitDeclaration' id='InitDeclaration' export='yes'>
      <formal-parameters>
        <parameter-decl name='decl' id='InitDeclaration.decl' export='no' variable-parameter='no'>
          <type>
            <type-name name='Declaration' href='#Declaration'/>
          </type>
        </parameter-decl>
        <parameter-decl name='name' id='InitDeclaration.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Namespace'>
    <type-decl name='Namespace' id='Namespace' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='NamespaceDesc' href='#NamespaceDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='NamespaceDesc' id='NamespaceDesc' export='no'>
      <type>
        <record>
          <field-decl name='declList' id='NamespaceDesc.declList' export='read-only'>
            <oberon-doc>
              <summary>Refers to the first element of the list of declarations.</summary>
              <p pad-after='yes' no-indent='yes'>Refers to the first element of the list of declarations.  The other declarations can be reached through <oberon-field href='#DeclarationDesc.next'>Declaration.next</oberon-field>.</p>
            </oberon-doc>
            <type>
              <type-name name='Declaration' href='#Declaration'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='NewNamespace' id='NewNamespace' export='yes'>
      <formal-parameters>
        <result-type>
          <type-name name='Namespace' href='#Namespace'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='Add' id='NamespaceDesc.Add' export='yes'>
      <oberon-doc>
        <summary>Adds the declaration <oberon-param href='#NamespaceDesc.Add.decl'>decl</oberon-param> to the namespace <oberon-param href='#NamespaceDesc.Add.ns'>ns</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Adds the declaration <oberon-param href='#NamespaceDesc.Add.decl'>decl</oberon-param> to the namespace <oberon-param href='#NamespaceDesc.Add.ns'>ns</oberon-param>.  Nothing is done if the namespace already contains a declaration of the same name.  In this case, the value <code>FALSE</code> is returned.  If the declaration was added to the namespace, then the result is <code>TRUE</code>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='ns' id='NamespaceDesc.Add.ns' export='no' variable-parameter='no'>
          <type>
            <type-name name='Namespace' href='#Namespace'/>
          </type>
        </receiver-decl>
        <parameter-decl name='decl' id='NamespaceDesc.Add.decl' export='no' variable-parameter='no'>
          <type>
            <type-name name='Declaration' href='#Declaration'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name module='#predef' name='BOOLEAN'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='Get' id='NamespaceDesc.Get' export='yes'>
      <formal-parameters>
        <receiver-decl name='ns' id='NamespaceDesc.Get.ns' export='no' variable-parameter='no'>
          <type>
            <type-name name='Namespace' href='#Namespace'/>
          </type>
        </receiver-decl>
        <parameter-decl name='name' id='NamespaceDesc.Get.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Declaration' href='#Declaration'/>
        </result-type>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Fragment'>
    <type-decl name='Fragment' id='Fragment' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='FragmentDesc' href='#FragmentDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='FragmentDesc' id='FragmentDesc' export='no'>
      <type>
        <record>
          <field-decl name='next' id='FragmentDesc.next' export='read-only'>
            <oberon-doc>
              <summary>Refers to the next fragment in the list <oberon-field href='#AttValueDesc.fragmentList'>AttValue.fragmentList</oberon-field>.</summary>
              <p pad-after='yes' no-indent='yes'>Refers to the next fragment in the list <oberon-field href='#AttValueDesc.fragmentList'>AttValue.fragmentList</oberon-field>.</p>
            </oberon-doc>
            <type>
              <type-name name='Fragment' href='#Fragment'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitFragment' id='InitFragment' export='yes'>
      <formal-parameters>
        <parameter-decl name='f' id='InitFragment.f' export='no' variable-parameter='no'>
          <type>
            <type-name name='Fragment' href='#Fragment'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Characters'>
    <type-decl name='Characters' id='Characters' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='CharactersDesc' href='#CharactersDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='CharactersDesc' id='CharactersDesc' export='no'>
      <type>
        <record>
          <field-decl name='source' id='CharactersDesc.source' export='read-only'>
            <oberon-doc>
              <summary>The array slice <samp><oberon-field href='#CharactersDesc.source'>source</oberon-field>[<oberon-field href='#CharactersDesc.sourceStart'>sourceStart</oberon-field>, <oberon-field href='#CharactersDesc.sourceEnd'>sourceEnd</oberon-field>[</samp> holds the fragment's character data.</summary>
              <p pad-after='yes' no-indent='yes'>The array slice <samp><oberon-field href='#CharactersDesc.source'>source</oberon-field>[<oberon-field href='#CharactersDesc.sourceStart'>sourceStart</oberon-field>, <oberon-field href='#CharactersDesc.sourceEnd'>sourceEnd</oberon-field>[</samp> holds the fragment's character data.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='sourceStart' id='CharactersDesc.sourceStart' export='read-only'>
            <type>
              <type-name module='#predef' name='CharPos'/>
            </type>
          </field-decl>
          <field-decl name='sourceEnd' id='CharactersDesc.sourceEnd' export='read-only'>
            <type>
              <type-name module='#predef' name='CharPos'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitCharacters' id='InitCharacters' export='yes'>
      <formal-parameters>
        <parameter-decl name='chars' id='InitCharacters.chars' export='no' variable-parameter='no'>
          <type>
            <type-name name='Characters' href='#Characters'/>
          </type>
        </parameter-decl>
        <parameter-decl name='source' id='InitCharacters.source' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='start' id='InitCharacters.start' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CharPos'/>
          </type>
        </parameter-decl>
        <parameter-decl name='end' id='InitCharacters.end' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CharPos'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <base-class module='XML:DTD' class='Fragment' href='#Fragment'>
      <inherited-field module='XML:DTD' name='next' class='Fragment' href='#FragmentDesc.next'/>
    </base-class>
  </class>
  <class name='EntityRef'>
    <type-decl name='EntityRef' id='EntityRef' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='EntityRefDesc' href='#EntityRefDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='EntityRefDesc' id='EntityRefDesc' export='no'>
      <type>
        <record>
          <field-decl name='name' id='EntityRefDesc.name' export='read-only'>
            <oberon-doc>
              <summary>The name of the reference.</summary>
              <p pad-after='yes' no-indent='yes'>The name of the reference.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='entity' id='EntityRefDesc.entity' export='yes'>
            <oberon-doc>
              <summary>After the name has been resolved successfully, this field refers to the internal entity declaration that is being referenced.</summary>
              <p pad-after='yes' no-indent='yes'>After the name has been resolved successfully, this field refers to the internal entity declaration that is being referenced.</p>
            </oberon-doc>
            <type>
              <type-name name='Entity' href='#Entity'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitEntityRef' id='InitEntityRef' export='yes'>
      <formal-parameters>
        <parameter-decl name='entRef' id='InitEntityRef.entRef' export='no' variable-parameter='no'>
          <type>
            <type-name name='EntityRef' href='#EntityRef'/>
          </type>
        </parameter-decl>
        <parameter-decl name='name' id='InitEntityRef.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='entity' id='InitEntityRef.entity' export='no' variable-parameter='no'>
          <type>
            <type-name name='Entity' href='#Entity'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <base-class module='XML:DTD' class='Fragment' href='#Fragment'>
      <inherited-field module='XML:DTD' name='next' class='Fragment' href='#FragmentDesc.next'/>
    </base-class>
  </class>
  <class name='AttValue'>
    <type-decl name='AttValue' id='AttValue' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='AttValueDesc' href='#AttValueDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='AttValueDesc' id='AttValueDesc' export='no'>
      <type>
        <record>
          <field-decl name='fragmentList' id='AttValueDesc.fragmentList' export='read-only'>
            <type>
              <type-name name='Fragment' href='#Fragment'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitAttValue' id='InitAttValue' export='yes'>
      <formal-parameters>
        <parameter-decl name='attValue' id='InitAttValue.attValue' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttValue' href='#AttValue'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Clear' id='AttValueDesc.Clear' export='yes'>
      <formal-parameters>
        <receiver-decl name='attValue' id='AttValueDesc.Clear.attValue' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttValue' href='#AttValue'/>
          </type>
        </receiver-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Append' id='AttValueDesc.Append' export='yes'>
      <formal-parameters>
        <receiver-decl name='attValue' id='AttValueDesc.Append.attValue' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttValue' href='#AttValue'/>
          </type>
        </receiver-decl>
        <parameter-decl name='fragment' id='AttValueDesc.Append.fragment' export='no' variable-parameter='no'>
          <type>
            <type-name name='Fragment' href='#Fragment'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Length' id='AttValueDesc.Length' export='yes'>
      <oberon-doc>
        <summary>Calculates the length of the attribute value, as if it were of type CDATA.</summary>
        <p pad-after='yes' no-indent='yes'>Calculates the length of the attribute value, as if it were of type CDATA.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='attValue' id='AttValueDesc.Length.attValue' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttValue' href='#AttValue'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='#predef' name='LONGINT'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='FlattenValue' id='AttValueDesc.FlattenValue' export='yes'>
      <oberon-doc>
        <summary>Returns the string representation of the attribute value <oberon-param href='#AttValueDesc.FlattenValue.attValue'>attValue</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Returns the string representation of the attribute value <oberon-param href='#AttValueDesc.FlattenValue.attValue'>attValue</oberon-param>.  If <oberon-param href='#AttValueDesc.FlattenValue.normalizeWhitespace'>normalizeWhitespace</oberon-param> is <code>TRUE</code>, then sequences of spaces are collapsed into a single space, and leading and trailing whitespace is removed from the string.  On completion, <oberon-param href='#AttValueDesc.FlattenValue.didNormalization'>didNormalization</oberon-param> is <code>TRUE</code> if, and only if, the value was modified by normalizing whitespace.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='attValue' id='AttValueDesc.FlattenValue.attValue' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttValue' href='#AttValue'/>
          </type>
        </receiver-decl>
        <parameter-decl name='normalizeWhitespace' id='AttValueDesc.FlattenValue.normalizeWhitespace' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <parameter-decl name='didNormalization' id='AttValueDesc.FlattenValue.didNormalization' export='no' variable-parameter='yes'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='String' href='#String'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='Flatten' id='AttValueDesc.Flatten' export='yes'>
      <oberon-doc>
        <summary>Returns the string representation of the attribute value <oberon-param href='#AttValueDesc.Flatten.attrDecl'>attrDecl</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Returns the string representation of the attribute value <oberon-param href='#AttValueDesc.Flatten.attrDecl'>attrDecl</oberon-param>.  If <oberon-param href='#AttValueDesc.Flatten.attrDecl'>attrDecl</oberon-param> is not <code>NIL</code>, and the attribute's type is not <oberon-const href='#attrCDATA'>attrCDATA</oberon-const>, then sequences of spaces are collapsed into a single space, and leading and trailing whitespace is removed from the string.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='attValue' id='AttValueDesc.Flatten.attValue' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttValue' href='#AttValue'/>
          </type>
        </receiver-decl>
        <parameter-decl name='attrDecl' id='AttValueDesc.Flatten.attrDecl' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttrDecl' href='#AttrDecl'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='String' href='#String'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='FlattenNorm' id='AttValueDesc.FlattenNorm' export='yes'>
      <oberon-doc>
        <summary>Like <oberon-proc href='#AttValueDesc.Flatten'>AttValue.Flatten</oberon-proc>, but reports if normalization has been done.</summary>
        <p pad-after='yes' no-indent='yes'>Like <oberon-proc href='#AttValueDesc.Flatten'>AttValue.Flatten</oberon-proc>, but reports if normalization has been done.  On completion, <oberon-param href='#AttValueDesc.FlattenNorm.didNormalization'>didNormalization</oberon-param> is <code>TRUE</code> if, and only if, the value was modified by normalizing whitespace.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='attValue' id='AttValueDesc.FlattenNorm.attValue' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttValue' href='#AttValue'/>
          </type>
        </receiver-decl>
        <parameter-decl name='attrDecl' id='AttValueDesc.FlattenNorm.attrDecl' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttrDecl' href='#AttrDecl'/>
          </type>
        </parameter-decl>
        <parameter-decl name='didNormalization' id='AttValueDesc.FlattenNorm.didNormalization' export='no' variable-parameter='yes'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='String' href='#String'/>
        </result-type>
      </formal-parameters>
    </procedure>
  </class>
  <class name='NameNode'>
    <type-decl name='NameNode' id='NameNode' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='NameNodeDesc' href='#NameNodeDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='NameNodeDesc' id='NameNodeDesc' export='no'>
      <type>
        <record>
          <field-decl name='next' id='NameNodeDesc.next' export='read-only'>
            <type>
              <type-name name='NameNode' href='#NameNode'/>
            </type>
          </field-decl>
          <field-decl name='name' id='NameNodeDesc.name' export='read-only'>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
  </class>
  <class name='Enumeration'>
    <type-decl name='Enumeration' id='Enumeration' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='EnumerationDesc' href='#EnumerationDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='EnumerationDesc' id='EnumerationDesc' export='no'>
      <type>
        <record>
          <field-decl name='nameList' id='EnumerationDesc.nameList' export='read-only'>
            <type>
              <type-name name='NameNode' href='#NameNode'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='Append' id='EnumerationDesc.Append' export='yes'>
      <formal-parameters>
        <receiver-decl name='enum' id='EnumerationDesc.Append.enum' export='no' variable-parameter='no'>
          <type>
            <type-name name='Enumeration' href='#Enumeration'/>
          </type>
        </receiver-decl>
        <parameter-decl name='name' id='EnumerationDesc.Append.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Matches' id='EnumerationDesc.Matches' export='yes'>
      <oberon-doc>
        <summary>Returns <code>TRUE</code>, if one of the names listed in the enumeration matches the string <oberon-param href='#EnumerationDesc.Matches.name'>name</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Returns <code>TRUE</code>, if one of the names listed in the enumeration matches the string <oberon-param href='#EnumerationDesc.Matches.name'>name</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='enum' id='EnumerationDesc.Matches.enum' export='no' variable-parameter='no'>
          <type>
            <type-name name='Enumeration' href='#Enumeration'/>
          </type>
        </receiver-decl>
        <parameter-decl name='name' id='EnumerationDesc.Matches.name' export='no' variable-parameter='yes'>
          <type>
            <type-name name='StringVar' href='#StringVar'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name module='#predef' name='BOOLEAN'/>
        </result-type>
      </formal-parameters>
    </procedure>
  </class>
  <class name='AttrDecl'>
    <type-decl name='AttrDecl' id='AttrDecl' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='AttrDeclDesc' href='#AttrDeclDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='AttrDeclDesc' id='AttrDeclDesc' export='no'>
      <type>
        <record>
          <field-decl name='elementName' id='AttrDeclDesc.elementName' export='read-only'>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='type' id='AttrDeclDesc.type' export='read-only'>
            <type>
              <type-name module='#predef' name='AttributeType'/>
            </type>
          </field-decl>
          <field-decl name='externalMarkupDecl' id='AttrDeclDesc.externalMarkupDecl' export='read-only'>
            <type>
              <type-name module='#predef' name='BOOLEAN'/>
            </type>
          </field-decl>
          <field-decl name='enumeration' id='AttrDeclDesc.enumeration' export='read-only'>
            <type>
              <type-name name='Enumeration' href='#Enumeration'/>
            </type>
          </field-decl>
          <field-decl name='default' id='AttrDeclDesc.default' export='read-only'>
            <type>
              <type-name module='#predef' name='DefaultType'/>
            </type>
          </field-decl>
          <field-decl name='defaultValue' id='AttrDeclDesc.defaultValue' export='read-only'>
            <type>
              <type-name name='AttValue' href='#AttValue'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitAttrDecl' id='InitAttrDecl' export='yes'>
      <formal-parameters>
        <parameter-decl name='attrDecl' id='InitAttrDecl.attrDecl' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttrDecl' href='#AttrDecl'/>
          </type>
        </parameter-decl>
        <parameter-decl name='elementName' id='InitAttrDecl.elementName' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='name' id='InitAttrDecl.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='type' id='InitAttrDecl.type' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='AttributeType'/>
          </type>
        </parameter-decl>
        <parameter-decl name='enum' id='InitAttrDecl.enum' export='no' variable-parameter='no'>
          <type>
            <type-name name='Enumeration' href='#Enumeration'/>
          </type>
        </parameter-decl>
        <parameter-decl name='default' id='InitAttrDecl.default' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='DefaultType'/>
          </type>
        </parameter-decl>
        <parameter-decl name='defaultValue' id='InitAttrDecl.defaultValue' export='no' variable-parameter='no'>
          <type>
            <type-name name='AttValue' href='#AttValue'/>
          </type>
        </parameter-decl>
        <parameter-decl name='externalMarkupDecl' id='InitAttrDecl.externalMarkupDecl' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <base-class module='XML:DTD' class='Declaration' href='#Declaration'>
      <inherited-field module='XML:DTD' name='name' class='Declaration' href='#DeclarationDesc.name'/>
      <inherited-field module='XML:DTD' name='next' class='Declaration' href='#DeclarationDesc.next'/>
    </base-class>
  </class>
  <class name='Entity'>
    <type-decl name='Entity' id='Entity' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='EntityDesc' href='#EntityDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='EntityDesc' id='EntityDesc' export='no'>
      <type>
        <record>
          <field-decl name='type' id='EntityDesc.type' export='read-only'>
            <oberon-doc>
              <summary>This field indicates the kind of entity.</summary>
              <p pad-after='yes' no-indent='yes'>This field indicates the kind of entity.  It distinguishes between general/parameter, internal/external, and parsed/unparsed.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='EntityType'/>
            </type>
          </field-decl>
          <field-decl name='entityValue' id='EntityDesc.entityValue' export='read-only'>
            <oberon-doc>
              <summary>This is either the value of an internal entity, or the internalized version of an external entity.</summary>
              <p pad-after='yes' no-indent='yes'>This is either the value of an internal entity, or the internalized version of an external entity.  For an internal entity, this field is never <code>NIL</code>.  This string is not terminated with an <code>0X</code>, use <oberon-proc href='#EntityDesc.LengthValue'>Entity.LengthValue</oberon-proc> to determine its length.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='externalMarkupDecl' id='EntityDesc.externalMarkupDecl' export='read-only'>
            <oberon-doc>
              <summary>Set if the entity is declared in an external markup declaration.</summary>
              <p pad-after='yes' no-indent='yes'>Set if the entity is declared in an external markup declaration.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='BOOLEAN'/>
            </type>
          </field-decl>
          <field-decl name='expanding' id='EntityDesc.expanding' export='yes'>
            <oberon-doc>
              <summary>This field is used internally by the parser.</summary>
              <p pad-after='yes' no-indent='yes'>This field is used internally by the parser.  While expanding the entity, it is set to <code>TRUE</code>.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='BOOLEAN'/>
            </type>
          </field-decl>
          <field-decl name='attValue' id='EntityDesc.attValue' export='yes'>
            <oberon-doc>
              <summary>This field is used internally by the parser.</summary>
              <p pad-after='yes' no-indent='yes'>This field is used internally by the parser.  If an entity is ever expanded within an attribute value, this field holds the expanded text before non-CDATA normalization.</p>
            </oberon-doc>
            <type>
              <type-name name='AttValue' href='#AttValue'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='SetEntityValue' id='EntityDesc.SetEntityValue' export='yes'>
      <formal-parameters>
        <receiver-decl name='entity' id='EntityDesc.SetEntityValue.entity' export='no' variable-parameter='no'>
          <type>
            <type-name name='Entity' href='#Entity'/>
          </type>
        </receiver-decl>
        <parameter-decl name='entityValue' id='EntityDesc.SetEntityValue.entityValue' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='LengthValue' id='EntityDesc.LengthValue' export='yes'>
      <oberon-doc>
        <summary>Returns the length of the entity's value.</summary>
        <p pad-after='yes' no-indent='yes'>Returns the length of the entity's value.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='entity' id='EntityDesc.LengthValue.entity' export='no' variable-parameter='no'>
          <type>
            <type-name name='Entity' href='#Entity'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='#predef' name='LONGINT'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='IsDocumentEntity' id='EntityDesc.IsDocumentEntity' export='yes'>
      <formal-parameters>
        <receiver-decl name='entity' id='EntityDesc.IsDocumentEntity.entity' export='no' variable-parameter='no'>
          <type>
            <type-name name='Entity' href='#Entity'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='#predef' name='BOOLEAN'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <base-class module='XML:DTD' class='Declaration' href='#Declaration'>
      <inherited-field module='XML:DTD' name='name' class='Declaration' href='#DeclarationDesc.name'/>
      <inherited-field module='XML:DTD' name='next' class='Declaration' href='#DeclarationDesc.next'/>
    </base-class>
  </class>
  <class name='InternalEntity'>
    <type-decl name='InternalEntity' id='InternalEntity' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='InternalEntityDesc' href='#InternalEntityDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='InternalEntityDesc' id='InternalEntityDesc' export='no'>
      <type>
        <record/>
      </type>
    </type-decl>
    <base-class module='XML:DTD' class='Entity' href='#Entity'>
      <inherited-method module='XML:DTD' name='IsDocumentEntity' class='Entity' href='#EntityDesc.IsDocumentEntity'/>
      <inherited-method module='XML:DTD' name='LengthValue' class='Entity' href='#EntityDesc.LengthValue'/>
      <inherited-method module='XML:DTD' name='SetEntityValue' class='Entity' href='#EntityDesc.SetEntityValue'/>
      <inherited-field module='XML:DTD' name='attValue' class='Entity' href='#EntityDesc.attValue'/>
      <inherited-field module='XML:DTD' name='entityValue' class='Entity' href='#EntityDesc.entityValue'/>
      <inherited-field module='XML:DTD' name='expanding' class='Entity' href='#EntityDesc.expanding'/>
      <inherited-field module='XML:DTD' name='externalMarkupDecl' class='Entity' href='#EntityDesc.externalMarkupDecl'/>
      <inherited-field module='XML:DTD' name='type' class='Entity' href='#EntityDesc.type'/>
      <base-class module='XML:DTD' class='Declaration' href='#Declaration'>
        <inherited-field module='XML:DTD' name='name' class='Declaration' href='#DeclarationDesc.name'/>
        <inherited-field module='XML:DTD' name='next' class='Declaration' href='#DeclarationDesc.next'/>
      </base-class>
    </base-class>
  </class>
  <class name='ExternalEntity'>
    <type-decl name='ExternalEntity' id='ExternalEntity' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='ExternalEntityDesc' href='#ExternalEntityDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='ExternalEntityDesc' id='ExternalEntityDesc' export='no'>
      <type>
        <record>
          <field-decl name='public' id='ExternalEntityDesc.public' export='read-only'>
            <oberon-doc>
              <summary>Public identifier of the external entity.</summary>
              <p pad-after='yes' no-indent='yes'>Public identifier of the external entity.  May be <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='system' id='ExternalEntityDesc.system' export='read-only'>
            <oberon-doc>
              <summary>System identifier of the external entity.</summary>
              <p pad-after='yes' no-indent='yes'>System identifier of the external entity.  This field is never <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='ndata' id='ExternalEntityDesc.ndata' export='read-only'>
            <oberon-doc>
              <summary>For a parsed entity declaration, this field is <code>NIL</code>.</summary>
              <p pad-after='yes' no-indent='yes'>For a parsed entity declaration, this field is <code>NIL</code>.  For an unparsed entity, it holds the name of the <code>NDATA</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='baseURI' id='ExternalEntityDesc.baseURI' export='read-only'>
            <oberon-doc>
              <summary>The base URI of the external entity.</summary>
              <p pad-after='yes' no-indent='yes'>The base URI of the external entity.  For a document entity, this is the URI passed to <oberon-proc href='XML:Parser#NewChannel'>XML:Parser.NewChannel</oberon-proc>, and therefore may be <code>NIL</code>.  For other entities, it is either derived from the public or system identifier, and always present.</p>
            </oberon-doc>
            <type>
              <type-name module='URI' name='URI' href='URI#URI'/>
            </type>
          </field-decl>
          <field-decl name='version' id='ExternalEntityDesc.version' export='read-only'>
            <oberon-doc>
              <summary>The version string from the XML or text declaration.</summary>
              <p pad-after='yes' no-indent='yes'>The version string from the XML or text declaration.  <code>NIL</code>, if the version is omitted.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='encoding' id='ExternalEntityDesc.encoding' export='read-only'>
            <oberon-doc>
              <summary>The encoding string from the XML or text declaration.</summary>
              <p pad-after='yes' no-indent='yes'>The encoding string from the XML or text declaration.  <code>NIL</code>, if no encoding is given.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='standalone' id='ExternalEntityDesc.standalone' export='read-only'>
            <oberon-doc>
              <summary>The standalone declaration.</summary>
              <p pad-after='yes' no-indent='yes'>The standalone declaration.  Only applicable to the document entity.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='StandaloneType'/>
            </type>
          </field-decl>
          <field-decl name='codecFactory' id='ExternalEntityDesc.codecFactory' export='read-only'>
            <oberon-doc>
              <summary>The factory object that produced the Unicode decoder that is used to access the files contents.</summary>
              <p pad-after='yes' no-indent='yes'>The factory object that produced the Unicode decoder that is used to access the files contents.  If <oberon-field href='#ExternalEntityDesc.encoding'>encoding</oberon-field> is <code>NIL</code>, the factory is derived by auto detection.  Otherwise, the encoding declaration <oberon-field href='#ExternalEntityDesc.encoding'>encoding</oberon-field> is used to retrieve it.</p>
            </oberon-doc>
            <type>
              <type-name module='UnicodeCodec' name='Factory' href='XML:UnicodeCodec#Factory'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='SetCodecFactory' id='ExternalEntityDesc.SetCodecFactory' export='yes'>
      <formal-parameters>
        <receiver-decl name='entity' id='ExternalEntityDesc.SetCodecFactory.entity' export='no' variable-parameter='no'>
          <type>
            <type-name name='ExternalEntity' href='#ExternalEntity'/>
          </type>
        </receiver-decl>
        <parameter-decl name='codecFactory' id='ExternalEntityDesc.SetCodecFactory.codecFactory' export='no' variable-parameter='no'>
          <type>
            <type-name module='UnicodeCodec' name='Factory' href='XML:UnicodeCodec#Factory'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='SetVersion' id='ExternalEntityDesc.SetVersion' export='yes'>
      <formal-parameters>
        <receiver-decl name='entity' id='ExternalEntityDesc.SetVersion.entity' export='no' variable-parameter='no'>
          <type>
            <type-name name='ExternalEntity' href='#ExternalEntity'/>
          </type>
        </receiver-decl>
        <parameter-decl name='version' id='ExternalEntityDesc.SetVersion.version' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='SetEncoding' id='ExternalEntityDesc.SetEncoding' export='yes'>
      <formal-parameters>
        <receiver-decl name='entity' id='ExternalEntityDesc.SetEncoding.entity' export='no' variable-parameter='no'>
          <type>
            <type-name name='ExternalEntity' href='#ExternalEntity'/>
          </type>
        </receiver-decl>
        <parameter-decl name='encoding' id='ExternalEntityDesc.SetEncoding.encoding' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='SetStandalone' id='ExternalEntityDesc.SetStandalone' export='yes'>
      <formal-parameters>
        <receiver-decl name='entity' id='ExternalEntityDesc.SetStandalone.entity' export='no' variable-parameter='no'>
          <type>
            <type-name name='ExternalEntity' href='#ExternalEntity'/>
          </type>
        </receiver-decl>
        <parameter-decl name='standalone' id='ExternalEntityDesc.SetStandalone.standalone' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='StandaloneType'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='IsDocumentEntity' id='ExternalEntityDesc.IsDocumentEntity' export='yes'>
      <formal-parameters>
        <receiver-decl name='entity' id='ExternalEntityDesc.IsDocumentEntity.entity' export='no' variable-parameter='no'>
          <type>
            <type-name name='ExternalEntity' href='#ExternalEntity'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='#predef' name='BOOLEAN'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='XML:DTD' name='IsDocumentEntity' class='Entity' href='#EntityDesc.IsDocumentEntity'/>
    </procedure>
    <base-class module='XML:DTD' class='Entity' href='#Entity'>
      <inherited-method module='XML:DTD' name='IsDocumentEntity' class='Entity' href='#EntityDesc.IsDocumentEntity'/>
      <inherited-method module='XML:DTD' name='LengthValue' class='Entity' href='#EntityDesc.LengthValue'/>
      <inherited-method module='XML:DTD' name='SetEntityValue' class='Entity' href='#EntityDesc.SetEntityValue'/>
      <inherited-field module='XML:DTD' name='attValue' class='Entity' href='#EntityDesc.attValue'/>
      <inherited-field module='XML:DTD' name='entityValue' class='Entity' href='#EntityDesc.entityValue'/>
      <inherited-field module='XML:DTD' name='expanding' class='Entity' href='#EntityDesc.expanding'/>
      <inherited-field module='XML:DTD' name='externalMarkupDecl' class='Entity' href='#EntityDesc.externalMarkupDecl'/>
      <inherited-field module='XML:DTD' name='type' class='Entity' href='#EntityDesc.type'/>
      <base-class module='XML:DTD' class='Declaration' href='#Declaration'>
        <inherited-field module='XML:DTD' name='name' class='Declaration' href='#DeclarationDesc.name'/>
        <inherited-field module='XML:DTD' name='next' class='Declaration' href='#DeclarationDesc.next'/>
      </base-class>
    </base-class>
  </class>
  <class name='Notation'>
    <type-decl name='Notation' id='Notation' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='NotationDesc' href='#NotationDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='NotationDesc' id='NotationDesc' export='no'>
      <type>
        <record>
          <field-decl name='public' id='NotationDesc.public' export='read-only'>
            <oberon-doc>
              <summary>Public identifier.</summary>
              <p pad-after='yes' no-indent='yes'>Public identifier.  May be <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='system' id='NotationDesc.system' export='read-only'>
            <oberon-doc>
              <summary>System identifier.</summary>
              <p pad-after='yes' no-indent='yes'>System identifier.  May be <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='baseURI' id='NotationDesc.baseURI' export='read-only'>
            <oberon-doc>
              <summary>The base URI of the external entity.</summary>
              <p pad-after='yes' no-indent='yes'>The base URI of the external entity.  For a document entity, this is the URI passed to <oberon-proc href='XML:Parser#NewChannel'>XML:Parser.NewChannel</oberon-proc>, and therefore may be <code>NIL</code>.  For other entities, it is either derived from the public or system identifier, and always present.</p>
            </oberon-doc>
            <type>
              <type-name module='URI' name='URI' href='URI#URI'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <base-class module='XML:DTD' class='Declaration' href='#Declaration'>
      <inherited-field module='XML:DTD' name='name' class='Declaration' href='#DeclarationDesc.name'/>
      <inherited-field module='XML:DTD' name='next' class='Declaration' href='#DeclarationDesc.next'/>
    </base-class>
  </class>
  <class name='CP'>
    <type-decl name='CP' id='CP' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='CPDesc' href='#CPDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='CPDesc' id='CPDesc' export='no'>
      <type>
        <record>
          <field-decl name='cpMode' id='CPDesc.cpMode' export='read-only'>
            <type>
              <type-name module='#predef' name='SHORTINT'/>
            </type>
          </field-decl>
          <field-decl name='next' id='CPDesc.next' export='read-only'>
            <type>
              <type-name name='CP' href='#CP'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='SetNext' id='CPDesc.SetNext' export='yes'>
      <formal-parameters>
        <receiver-decl name='cp' id='CPDesc.SetNext.cp' export='no' variable-parameter='no'>
          <type>
            <type-name name='CP' href='#CP'/>
          </type>
        </receiver-decl>
        <parameter-decl name='next' id='CPDesc.SetNext.next' export='no' variable-parameter='no'>
          <type>
            <type-name name='CP' href='#CP'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='SetMode' id='CPDesc.SetMode' export='yes'>
      <formal-parameters>
        <receiver-decl name='cp' id='CPDesc.SetMode.cp' export='no' variable-parameter='no'>
          <type>
            <type-name name='CP' href='#CP'/>
          </type>
        </receiver-decl>
        <parameter-decl name='cpMode' id='CPDesc.SetMode.cpMode' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='SHORTINT'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
  </class>
  <class name='ChoiceCP'>
    <type-decl name='ChoiceCP' id='ChoiceCP' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='ChoiceCPDesc' href='#ChoiceCPDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='ChoiceCPDesc' id='ChoiceCPDesc' export='no'>
      <type>
        <record>
          <field-decl name='list' id='ChoiceCPDesc.list' export='read-only'>
            <type>
              <type-name name='CP' href='#CP'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitChoiceCP' id='InitChoiceCP' export='yes'>
      <formal-parameters>
        <parameter-decl name='choiceCP' id='InitChoiceCP.choiceCP' export='no' variable-parameter='no'>
          <type>
            <type-name name='ChoiceCP' href='#ChoiceCP'/>
          </type>
        </parameter-decl>
        <parameter-decl name='cpMode' id='InitChoiceCP.cpMode' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CPModeType'/>
          </type>
        </parameter-decl>
        <parameter-decl name='list' id='InitChoiceCP.list' export='no' variable-parameter='no'>
          <type>
            <type-name name='CP' href='#CP'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <base-class module='XML:DTD' class='CP' href='#CP'>
      <inherited-method module='XML:DTD' name='SetMode' class='CP' href='#CPDesc.SetMode'/>
      <inherited-method module='XML:DTD' name='SetNext' class='CP' href='#CPDesc.SetNext'/>
      <inherited-field module='XML:DTD' name='cpMode' class='CP' href='#CPDesc.cpMode'/>
      <inherited-field module='XML:DTD' name='next' class='CP' href='#CPDesc.next'/>
    </base-class>
  </class>
  <class name='SeqCP'>
    <type-decl name='SeqCP' id='SeqCP' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='SeqCPDesc' href='#SeqCPDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='SeqCPDesc' id='SeqCPDesc' export='no'>
      <type>
        <record>
          <field-decl name='list' id='SeqCPDesc.list' export='read-only'>
            <type>
              <type-name name='CP' href='#CP'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitSeqCP' id='InitSeqCP' export='yes'>
      <formal-parameters>
        <parameter-decl name='seqCP' id='InitSeqCP.seqCP' export='no' variable-parameter='no'>
          <type>
            <type-name name='SeqCP' href='#SeqCP'/>
          </type>
        </parameter-decl>
        <parameter-decl name='cpMode' id='InitSeqCP.cpMode' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CPModeType'/>
          </type>
        </parameter-decl>
        <parameter-decl name='list' id='InitSeqCP.list' export='no' variable-parameter='no'>
          <type>
            <type-name name='CP' href='#CP'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <base-class module='XML:DTD' class='CP' href='#CP'>
      <inherited-method module='XML:DTD' name='SetMode' class='CP' href='#CPDesc.SetMode'/>
      <inherited-method module='XML:DTD' name='SetNext' class='CP' href='#CPDesc.SetNext'/>
      <inherited-field module='XML:DTD' name='cpMode' class='CP' href='#CPDesc.cpMode'/>
      <inherited-field module='XML:DTD' name='next' class='CP' href='#CPDesc.next'/>
    </base-class>
  </class>
  <class name='NameCP'>
    <type-decl name='NameCP' id='NameCP' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='NameCPDesc' href='#NameCPDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='NameCPDesc' id='NameCPDesc' export='no'>
      <type>
        <record>
          <field-decl name='name' id='NameCPDesc.name' export='read-only'>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitNameCP' id='InitNameCP' export='yes'>
      <formal-parameters>
        <parameter-decl name='nameCP' id='InitNameCP.nameCP' export='no' variable-parameter='no'>
          <type>
            <type-name name='NameCP' href='#NameCP'/>
          </type>
        </parameter-decl>
        <parameter-decl name='cpMode' id='InitNameCP.cpMode' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CPModeType'/>
          </type>
        </parameter-decl>
        <parameter-decl name='name' id='InitNameCP.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <base-class module='XML:DTD' class='CP' href='#CP'>
      <inherited-method module='XML:DTD' name='SetMode' class='CP' href='#CPDesc.SetMode'/>
      <inherited-method module='XML:DTD' name='SetNext' class='CP' href='#CPDesc.SetNext'/>
      <inherited-field module='XML:DTD' name='cpMode' class='CP' href='#CPDesc.cpMode'/>
      <inherited-field module='XML:DTD' name='next' class='CP' href='#CPDesc.next'/>
    </base-class>
  </class>
  <class name='RegexpInfo'>
    <type-decl name='RegexpInfo' id='RegexpInfo' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='RegexpInfoDesc' href='#RegexpInfoDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='RegexpInfoDesc' id='RegexpInfoDesc' export='yes'>
      <type>
        <record/>
      </type>
    </type-decl>
  </class>
  <class name='ElementDecl'>
    <type-decl name='ElementDecl' id='ElementDecl' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='ElementDeclDesc' href='#ElementDeclDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='ElementDeclDesc' id='ElementDeclDesc' export='no'>
      <type>
        <record>
          <field-decl name='contentModel' id='ElementDeclDesc.contentModel' export='read-only'>
            <oberon-doc>
              <summary>The content model of the element.</summary>
              <p pad-after='yes' no-indent='yes'>The content model of the element.</p>
            </oberon-doc>
            <type>
              <type-name name='CP' href='#CP'/>
            </type>
          </field-decl>
          <field-decl name='regexp' id='ElementDeclDesc.regexp' export='read-only'>
            <oberon-doc>
              <summary>Regular expression contructed for <samp>children</samp> element content.</summary>
              <p pad-after='yes' no-indent='yes'>Regular expression contructed for <samp>children</samp> element content.</p>
            </oberon-doc>
            <type>
              <type-name name='RegexpInfo' href='#RegexpInfo'/>
            </type>
          </field-decl>
          <field-decl name='contentType' id='ElementDeclDesc.contentType' export='read-only'>
            <oberon-doc>
              <summary>Type of the content model.</summary>
              <p pad-after='yes' no-indent='yes'>Type of the content model.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='ContentType'/>
            </type>
          </field-decl>
          <field-decl name='externalMarkupDecl' id='ElementDeclDesc.externalMarkupDecl' export='read-only'>
            <oberon-doc>
              <summary>Set if the entity is declared in an external markup declaration.</summary>
              <p pad-after='yes' no-indent='yes'>Set if the entity is declared in an external markup declaration.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='BOOLEAN'/>
            </type>
          </field-decl>
          <field-decl name='multipleDecl' id='ElementDeclDesc.multipleDecl' export='read-only'>
            <oberon-doc>
              <summary>Set to <code>TRUE</code>, if more than one declaration of this element type appears in the DTD.</summary>
              <p pad-after='yes' no-indent='yes'>Set to <code>TRUE</code>, if more than one declaration of this element type appears in the DTD.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='BOOLEAN'/>
            </type>
          </field-decl>
          <field-decl name='attrNamespace' id='ElementDeclDesc.attrNamespace' export='read-only'>
            <oberon-doc>
              <summary>The attribute namespace of the element.</summary>
              <p pad-after='yes' no-indent='yes'>The attribute namespace of the element.</p>
            </oberon-doc>
            <type>
              <type-name name='Namespace' href='#Namespace'/>
            </type>
          </field-decl>
          <field-decl name='idAttr' id='ElementDeclDesc.idAttr' export='read-only'>
            <oberon-doc>
              <summary>If the element has an ID attribute, then this field refers to its attribute declaration after <oberon-proc href='#BuilderDesc.AttachAttributes'>Builder.AttachAttributes</oberon-proc> has been called.</summary>
              <p pad-after='yes' no-indent='yes'>If the element has an ID attribute, then this field refers to its attribute declaration after <oberon-proc href='#BuilderDesc.AttachAttributes'>Builder.AttachAttributes</oberon-proc> has been called.  If the element has no ID attribute, then this field is <code>NIL</code>.  If it has multiple ID attributes, it has the value <oberon-var href='#undefAttr'>undefAttr</oberon-var>.</p>
            </oberon-doc>
            <type>
              <type-name name='AttrDecl' href='#AttrDecl'/>
            </type>
          </field-decl>
          <field-decl name='notationAttr' id='ElementDeclDesc.notationAttr' export='read-only'>
            <oberon-doc>
              <summary>If the element has a NOTATION attribute, then this field refers to its attribute declaration after <oberon-proc href='#BuilderDesc.AttachAttributes'>Builder.AttachAttributes</oberon-proc> has been called.</summary>
              <p pad-after='yes' no-indent='yes'>If the element has a NOTATION attribute, then this field refers to its attribute declaration after <oberon-proc href='#BuilderDesc.AttachAttributes'>Builder.AttachAttributes</oberon-proc> has been called.  If the element has no NOTATION attribute, then this field is <code>NIL</code>.  If it has multiple NOTATION attributes, it has the value <oberon-var href='#undefAttr'>undefAttr</oberon-var>.</p>
            </oberon-doc>
            <type>
              <type-name name='AttrDecl' href='#AttrDecl'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitElementDecl' id='InitElementDecl' export='yes'>
      <formal-parameters>
        <parameter-decl name='elemDecl' id='InitElementDecl.elemDecl' export='no' variable-parameter='no'>
          <type>
            <type-name name='ElementDecl' href='#ElementDecl'/>
          </type>
        </parameter-decl>
        <parameter-decl name='name' id='InitElementDecl.name' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='contentModel' id='InitElementDecl.contentModel' export='no' variable-parameter='no'>
          <type>
            <type-name name='CP' href='#CP'/>
          </type>
        </parameter-decl>
        <parameter-decl name='attrNamespace' id='InitElementDecl.attrNamespace' export='no' variable-parameter='no'>
          <type>
            <type-name name='Namespace' href='#Namespace'/>
          </type>
        </parameter-decl>
        <parameter-decl name='externalMarkupDecl' id='InitElementDecl.externalMarkupDecl' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='SetRegexp' id='ElementDeclDesc.SetRegexp' export='yes'>
      <formal-parameters>
        <receiver-decl name='elemDecl' id='ElementDeclDesc.SetRegexp.elemDecl' export='no' variable-parameter='no'>
          <type>
            <type-name name='ElementDecl' href='#ElementDecl'/>
          </type>
        </receiver-decl>
        <parameter-decl name='regexp' id='ElementDeclDesc.SetRegexp.regexp' export='no' variable-parameter='no'>
          <type>
            <type-name name='RegexpInfo' href='#RegexpInfo'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='SetMultipleDecl' id='ElementDeclDesc.SetMultipleDecl' export='yes'>
      <formal-parameters>
        <receiver-decl name='elemDecl' id='ElementDeclDesc.SetMultipleDecl.elemDecl' export='no' variable-parameter='no'>
          <type>
            <type-name name='ElementDecl' href='#ElementDecl'/>
          </type>
        </receiver-decl>
      </formal-parameters>
    </procedure>
    <procedure name='IsEmpty' id='ElementDeclDesc.IsEmpty' export='yes'>
      <formal-parameters>
        <receiver-decl name='elemDecl' id='ElementDeclDesc.IsEmpty.elemDecl' export='no' variable-parameter='no'>
          <type>
            <type-name name='ElementDecl' href='#ElementDecl'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='#predef' name='BOOLEAN'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='IsElementContent' id='ElementDeclDesc.IsElementContent' export='yes'>
      <formal-parameters>
        <receiver-decl name='elemDecl' id='ElementDeclDesc.IsElementContent.elemDecl' export='no' variable-parameter='no'>
          <type>
            <type-name name='ElementDecl' href='#ElementDecl'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='#predef' name='BOOLEAN'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <base-class module='XML:DTD' class='Declaration' href='#Declaration'>
      <inherited-field module='XML:DTD' name='name' class='Declaration' href='#DeclarationDesc.name'/>
      <inherited-field module='XML:DTD' name='next' class='Declaration' href='#DeclarationDesc.next'/>
    </base-class>
  </class>
  <class name='NamespaceDeclaration'>
    <type-decl name='NamespaceDeclaration' id='NamespaceDeclaration' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='NamespaceDeclarationDesc' href='#NamespaceDeclarationDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='NamespaceDeclarationDesc' id='NamespaceDeclarationDesc' export='no'>
      <type>
        <record>
          <field-decl name='prefix' id='NamespaceDeclarationDesc.prefix' export='read-only'>
            <oberon-doc>
              <summary>The prefix being declared.</summary>
              <p pad-after='yes' no-indent='yes'>The prefix being declared.  Syntactically, this is the part of the attribute name following the <code>xmlns:</code> prefix.  If the attribute name is simply <code>xmlns</code>, this field is <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='String' href='#String'/>
            </type>
          </field-decl>
          <field-decl name='uri' id='NamespaceDeclarationDesc.uri' export='read-only'>
            <oberon-doc>
              <summary>The absolute URI (plus optional fragment identifier) of the namespace being declared.</summary>
              <p pad-after='yes' no-indent='yes'>The absolute URI (plus optional fragment identifier) of the namespace being declared.  It may be <code>NIL</code> if the attribute name is <code>xmlns</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='StringURI' href='#StringURI'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='NewNamespaceDeclaration' id='NewNamespaceDeclaration' export='yes'>
      <formal-parameters>
        <parameter-decl name='prefix' id='NewNamespaceDeclaration.prefix' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
        <parameter-decl name='uri' id='NewNamespaceDeclaration.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='StringURI' href='#StringURI'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='NamespaceDeclaration' href='#NamespaceDeclaration'/>
        </result-type>
      </formal-parameters>
    </procedure>
  </class>
  <module-ref name='XML:Parser'>
    <ref-target type='html' relative-uri='Parser.html'/>
  </module-ref>
  <module-ref name='XML:UnicodeCodec'>
    <ref-target type='html' relative-uri='UnicodeCodec.html'/>
  </module-ref>
  <module-ref name='XML:Builder'>
    <ref-target type='html' relative-uri='Builder.html'/>
  </module-ref>
  <module-ref name='URI'>
    <ref-target type='html' relative-uri='../URI.html'/>
  </module-ref>
  <module-ref name='XML:UnicodeBuffer'>
    <ref-target type='html' relative-uri='UnicodeBuffer.html'/>
  </module-ref>
</interface-description>
