### ----------------------------------------------------
### -- LibXML
### -- Licenses: Artistic-2.0
### -- Authors: David Warring
### -- File: etc/libxml2-api.xml
### ----------------------------------------------------
### -- Chunk 29 of 44
='xmlIO'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Write the content of the string in the output I/O buffer This routine escapes the caracters and then handle the I18N transcoding from internal UTF-8 The buffer is lossless, i.e. will store in case of partial or delayed writes.</info>
      <return type='int' info='the number of chars immediately written, or -1 in case of error.'/>
      <arg name='out' type='xmlOutputBufferPtr' info='a buffered parser output'/>
      <arg name='str' type='const xmlChar *' info='a zero terminated UTF-8 string'/>
      <arg name='escaping' type='xmlCharEncodingOutputFunc' info='an optional escaping function (or NULL)'/>
    </function>
    <function name='xmlOutputBufferWriteString' file='xmlIO' module='xmlIO'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Write the content of the string in the output I/O buffer This routine handle the I18N transcoding from internal UTF-8 The buffer is lossless, i.e. will store in case of partial or delayed writes.</info>
      <return type='int' info='the number of chars immediately written, or -1 in case of error.'/>
      <arg name='out' type='xmlOutputBufferPtr' info='a buffered parser output'/>
      <arg name='str' type='const char *' info='a zero terminated C string'/>
    </function>
    <functype name='xmlOutputCloseCallback' file='xmlIO' module='xmlIO'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Callback used in the I/O Output API to close the resource</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='context' type='void *' info='an Output context'/>
    </functype>
    <functype name='xmlOutputMatchCallback' file='xmlIO' module='xmlIO'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Callback used in the I/O Output API to detect if the current handler can provide output fonctionnalities for this resource.</info>
      <return type='int' info='1 if yes and 0 if another Output module should be used'/>
      <arg name='filename' type='char const *' info='the filename or URI'/>
    </functype>
    <functype name='xmlOutputOpenCallback' file='xmlIO' module='xmlIO'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Callback used in the I/O Output API to open the resource</info>
      <return type='void *' info='an Output context or NULL in case or error'/>
      <arg name='filename' type='char const *' info='the filename or URI'/>
    </functype>
    <functype name='xmlOutputWriteCallback' file='xmlIO' module='xmlIO'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Callback used in the I/O Output API to write to the resource</info>
      <return type='int' info='the number of bytes written or -1 in case of error'/>
      <arg name='context' type='void *' info='an Output context'/>
      <arg name='buffer' type='const char *' info='the buffer of data to write'/>
      <arg name='len' type='int' info='the length of the buffer in bytes'/>
    </functype>
    <function name='xmlParseAttValue' file='parserInternals' module='parser'>
      <info>parse a value for an attribute Note: the parser won&apos;t do substitution of entities here, this will be handled later in xmlStringGetNodeList  [10] AttValue ::= &apos;&quot;&apos; ([^&lt;&amp;&quot;] | Reference)* &apos;&quot;&apos; | &quot;&apos;&quot; ([^&lt;&amp;&apos;] | Reference)* &quot;&apos;&quot;  3.3.3 Attribute-Value Normalization: Before the value of an attribute is passed to the application or checked for validity, the XML processor must normalize it as follows: - a character reference is processed by appending the referenced character to the attribute value - an entity reference is processed by recursively processing the replacement text of the entity - a whitespace character (#x20, #xD, #xA, #x9) is processed by appending #x20 to the normalized value, except that only a single #x20 is appended for a &quot;#xD#xA&quot; sequence that is part of an external parsed entity or the literal entity value of an internal parsed entity - other characters are processed by appending them to the normalized value If the declared value is not CDATA, then the XML processor must further process the normalized attribute value by discarding any leading and trailing space (#x20) characters, and by replacing sequences of space (#x20) characters by a single space (#x20) character. All attributes for which no declaration has been read should be treated by a non-validating parser as if declared CDATA.</info>
      <return type='xmlChar *' info='the AttValue parsed or NULL. The value has to be freed by the caller.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseAttribute' file='parserInternals' module='parser'>
      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
      <info>parse an attribute  [41] Attribute ::= Name Eq AttValue  [ WFC: No External Entity References ] Attribute values cannot contain direct or indirect entity references to external entities.  [ WFC: No &lt; in Attribute Values ] The replacement text of any entity referred to directly or indirectly in an attribute value (other than &quot;&amp;lt;&quot;) must not contain a &lt;.  [ VC: Attribute Value Type ] The attribute must have been declared; the value must be of the type declared for it.  [25] Eq ::= S? &apos;=&apos; S?  With namespace:  [NS 11] Attribute ::= QName Eq AttValue  Also the case QName == xmlns:??? is handled independently as a namespace definition.</info>
      <return type='const xmlChar *' info='the attribute name, and the value in *value.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='value' type='xmlChar **' info='a xmlChar ** used to store the value of the attribute'/>
    </function>
    <function name='xmlParseAttributeListDecl' file='parserInternals' module='parser'>
      <info>: parse the Attribute list def for an element  [52] AttlistDecl ::= &apos;&lt;!ATTLIST&apos; S Name AttDef* S? &apos;&gt;&apos;  [53] AttDef ::= S Name S AttType S DefaultDecl</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseAttributeType' file='parserInternals' module='parser'>
      <info>parse the Attribute list def for an element  [54] AttType ::= StringType | TokenizedType | EnumeratedType  [55] StringType ::= &apos;CDATA&apos;  [56] TokenizedType ::= &apos;ID&apos; | &apos;IDREF&apos; | &apos;IDREFS&apos; | &apos;ENTITY&apos; | &apos;ENTITIES&apos; | &apos;NMTOKEN&apos; | &apos;NMTOKENS&apos;  Validity constraints for attribute values syntax are checked in xmlValidateAttributeValue()  [ VC: ID ] Values of type ID must match the Name production. A name must not appear more than once in an XML document as a value of this type; i.e., ID values must uniquely identify the elements which bear them.  [ VC: One ID per Element Type ] No element type may have more than one ID attribute specified.  [ VC: ID Attribute Default ] An ID attribute must have a declared default of #IMPLIED or #REQUIRED.  [ VC: IDREF ] Values of type IDREF must match the Name production, and values of type IDREFS must match Names; each IDREF Name must match the value of an ID attribute on some element in the XML document; i.e. IDREF values must match the value of some ID attribute.  [ VC: Entity Name ] Values of type ENTITY must match the Name production, values of type ENTITIES must match Names; each Entity Name must match the name of an unparsed entity declared in the DTD.  [ VC: Name Token ] Values of type NMTOKEN must match the Nmtoken production; values of type NMTOKENS must match Nmtokens.</info>
      <return type='int' info='the attribute type'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='tree' type='xmlEnumerationPtr *' info='the enumeration tree built while parsing'/>
    </function>
    <function name='xmlParseBalancedChunkMemory' file='parser' module='parser'>
      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
      <info>Parse a well-balanced chunk of an XML document called by the parser The allowed sequence for the Well Balanced Chunk is the one defined by the content production in the XML grammar:  [43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*</info>
      <return type='int' info='0 if the chunk is well balanced, -1 in case of args problem and the parser error code otherwise'/>
      <arg name='doc' type='xmlDocPtr' info='the document the chunk pertains to'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler bloc (possibly NULL)'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks (possibly NULL)'/>
      <arg name='depth' type='int' info='Used for loop detection, use 0'/>
      <arg name='string' type='const xmlChar *' info='the input string in UTF8 or ISO-Latin (zero terminated)'/>
      <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
    </function>
    <function name='xmlParseBalancedChunkMemoryRecover' file='parser' module='parser'>
      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
      <info>Parse a well-balanced chunk of an XML document called by the parser The allowed sequence for the Well Balanced Chunk is the one defined by the content production in the XML grammar:  [43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*</info>
      <return type='int' info='0 if the chunk is well balanced, -1 in case of args problem and the parser error code otherwise  In case recover is set to 1, the nodelist will not be empty even if the parsed chunk is not well balanced, assuming the parsing succeeded to some extent.'/>
      <arg name='doc' type='xmlDocPtr' info='the document the chunk pertains to'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler bloc (possibly NULL)'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks (possibly NULL)'/>
      <arg name='depth' type='int' info='Used for loop detection, use 0'/>
      <arg name='string' type='const xmlChar *' info='the input string in UTF8 or ISO-Latin (zero terminated)'/>
      <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
      <arg name='recover' type='int' info='return nodes even if the data is broken (use 0)'/>
    </function>
    <function name='xmlParseCDSect' file='parserInternals' module='parser'>
      <info>Parse escaped pure raw content.  [18] CDSect ::= CDStart CData CDEnd  [19] CDStart ::= &apos;&lt;![CDATA[&apos;  [20] Data ::= (Char* - (Char* &apos;]]&gt;&apos; Char*))  [21] CDEnd ::= &apos;]]&gt;&apos;</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseCatalogFile' file='catalog' module='catalog'>
      <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
      <info>parse an XML file and build a tree. It&apos;s like xmlParseFile() except it bypass all catalog lookups.</info>
      <return type='xmlDocPtr' info='the resulting document tree or NULL in case of error'/>
      <arg name='filename' type='const char *' info='the filename'/>
    </function>
    <function name='xmlParseCharData' file='parserInternals' module='parser'>
      <info>parse a CharData section. if we are within a CDATA section &apos;]]&gt;&apos; marks an end of section.  The right angle bracket (&gt;) may be represented using the string &quot;&amp;gt;&quot;, and must, for compatibility, be escaped using &quot;&amp;gt;&quot; or a character reference when it appears in the string &quot;]]&gt;&quot; in content, when that string is not marking the end of a CDATA section.  [14] CharData ::= [^&lt;&amp;]* - ([^&lt;&amp;]* &apos;]]&gt;&apos; [^&lt;&amp;]*)</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='cdata' type='int' info='int indicating whether we are within a CDATA section'/>
    </function>
    <function name='xmlParseCharEncoding' file='encoding' module='encoding'>
      <info>Compare the string to the encoding schemes already known. Note that the comparison is case insensitive accordingly to the section [XML] 4.3.3 Character Encoding in Entities.</info>
      <return type='xmlCharEncoding' info='one of the XML_CHAR_ENCODING_... values or XML_CHAR_ENCODING_NONE if not recognized.'/>
      <arg name='name' type='const char *' info='the encoding name as parsed, in UTF-8 format (ASCII actually)'/>
    </function>
    <function name='xmlParseCharRef' file='parserInternals' module='parser'>
      <info>parse Reference declarations  [66] CharRef ::= &apos;&amp;#&apos; [0-9]+ &apos;;&apos; | &apos;&amp;#x&apos; [0-9a-fA-F]+ &apos;;&apos;  [ WFC: Legal Character ] Characters referred to using character references must match the production for Char.</info>
      <return type='int' info='the value parsed (as an int), 0 in case of error'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseChunk' file='parser' module='parser'>
      <cond>defined(LIBXML_PUSH_ENABLED)</cond>
      <info>Parse a Chunk of memory</info>
      <return type='int' info='zero if no error, the xmlParserErrors otherwise.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='chunk' type='const char *' info='an char array'/>
      <arg name='size' type='int' info='the size in byte of the chunk'/>
      <arg name='terminate' type='int' info='last chunk indicator'/>
    </function>
    <function name='xmlParseComment' file='parserInternals' module='parser'>
      <info>Skip an XML (SGML) comment &lt;!-- .... --&gt; The spec says that &quot;For compatibility, the string &quot;--&quot; (double-hyphen) must not occur within comments. &quot;  [15] Comment ::= &apos;&lt;!--&apos; ((Char - &apos;-&apos;) | (&apos;-&apos; (Char - &apos;-&apos;)))* &apos;--&gt;&apos;</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseContent' file='parserInternals' module='parser'>
      <info>Parse a content:  [43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseCtxtExternalEntity' file='parser' module='parser'>
      <info>Parse an external general entity within an existing parsing context An external general parsed entity is well-formed if it matches the production labeled extParsedEnt.  [78] extParsedEnt ::= TextDecl? content</info>
      <return type='int' info='0 if the entity is well formed, -1 in case of args problem and the parser error code otherwise'/>
      <arg name='ctx' type='xmlParserCtxtPtr' info='the existing parsing context'/>
      <arg name='URL' type='const xmlChar *' info='the URL for the entity to load'/>
      <arg name='ID' type='const xmlChar *' info='the System ID for the entity to load'/>
      <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
    </function>
    <function name='xmlParseDTD' file='parser' module='parser'>
      <cond>defined(LIBXML_VALID_ENABLED)</cond>
      <info>Load and parse an external subset.</info>
      <return type='xmlDtdPtr' info='the resulting xmlDtdPtr or NULL in case of error.'/>
      <arg name='ExternalID' type='const xmlChar *' info='a NAME* containing the External ID of the DTD'/>
      <arg name='SystemID' type='const xmlChar *' info='a NAME* containing the URL to the DTD'/>
    </function>
    <function name='xmlParseDefaultDecl' file='parserInternals' module='parser'>
      <info>Parse an attribute default declaration  [60] DefaultDecl ::= &apos;#REQUIRED&apos; | &apos;#IMPLIED&apos; | ((&apos;#FIXED&apos; S)? AttValue)  [ VC: Required Attribute ] if the default declaration is the keyword #REQUIRED, then the attribute must be specified for all elements of the type in the attribute-list declaration.  [ VC: Attribute Default Legal ] The declared default value must meet the lexical constraints of the declared attribute type c.f. xmlValidateAttributeDecl()  [ VC: Fixed Attribute Default ] if an attribute has a default value declared with the #FIXED keyword, instances of that attribute must match the default value.  [ WFC: No &lt; in Attribute Values ] handled in xmlParseAttValue()</info>
      <return type='int' info='XML_ATTRIBUTE_NONE, XML_ATTRIBUTE_REQUIRED, XML_ATTRIBUTE_IMPLIED or XML_ATTRIBUTE_FIXED.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='value' type='xmlChar **' info='Receive a possible fixed default value for the attribute'/>
    </function>
    <function name='xmlParseDoc' file='parser' module='parser'>
      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
      <info>parse an XML in-memory document and build a tree.</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='cur' type='const xmlChar *' info='a pointer to an array of xmlChar'/>
    </function>
    <function name='xmlParseDocTypeDecl' file='parserInternals' module='parser'>
      <info>parse a DOCTYPE declaration  [28] doctypedecl ::= &apos;&lt;!DOCTYPE&apos; S Name (S ExternalID)? S? (&apos;[&apos; (markupdecl | PEReference | S)* &apos;]&apos; S?)? &apos;&gt;&apos;  [ VC: Root Element Type ] The Name in the document type declaration must match the element type of the root element.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseDocument' file='parser' module='parser'>
      <info>parse an XML document (and build a tree if using the standard SAX interface).  [1] document ::= prolog element Misc*  [22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?</info>
      <return type='int' info='0, -1 in case of error. the parser context is augmented as a result of the parsing.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseElement' file='parserInternals' module='parser'>
      <info>parse an XML element, this is highly recursive  [39] element ::= EmptyElemTag | STag content ETag  [ WFC: Element Type Match ] The Name in an element&apos;s end-tag must match the element type in the start-tag.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseElementChildrenContentDecl' file='parserInternals' module='parser'>
      <info>parse the declaration for a Mixed Element content The leading &apos;(&apos; and spaces have been skipped in xmlParseElementContentDecl  [47] children ::= (choice | seq) (&apos;?&apos; | &apos;*&apos; | &apos;+&apos;)?  [48] cp ::= (Name | choice | seq) (&apos;?&apos; | &apos;*&apos; | &apos;+&apos;)?  [49] choice ::= &apos;(&apos; S? cp ( S? &apos;|&apos; S? cp )* S? &apos;)&apos;  [50] seq ::= &apos;(&apos; S? cp ( S? &apos;,&apos; S? cp )* S? &apos;)&apos;  [ VC: Proper Group/PE Nesting ] applies to [49] and [50] TODO Parameter-entity replacement text must be properly nested with parenthesized groups. That is to say, if either of the opening or closing parentheses in a choice, seq, or Mixed construct is contained in the replacement text for a parameter entity, both must be contained in the same replacement text. For interoperability, if a parameter-entity reference appears in a choice, seq, or Mixed construct, its replacement text should not be empty, and neither the first nor last non-blank character of the replacement text should be a connector (| or ,).</info>
      <return type='xmlElementContentPtr' info='the tree of xmlElementContentPtr describing the element hierarchy.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='inputchk' type='int' info='the input used for the current entity, needed for boundary checks'/>
    </function>
    <function name='xmlParseElementContentDecl' file='parserInternals' module='parser'>
      <info>parse the declaration for an Element content either Mixed or Children, the cases EMPTY and ANY are handled directly in xmlParseElementDecl  [46] contentspec ::= &apos;EMPTY&apos; | &apos;ANY&apos; | Mixed | children</info>
      <return type='int' info='the type of element content XML_ELEMENT_TYPE_xxx'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='name' type='const xmlChar *' info='the name of the element being defined.'/>
      <arg name='result' type='xmlElementContentPtr *' info='the Element Content pointer will be stored here if any'/>
    </function>
    <function name='xmlParseElementDecl' file='parserInternals' module='parser'>
      <info>parse an Element declaration.  [45] elementdecl ::= &apos;&lt;!ELEMENT&apos; S Name S contentspec S? &apos;&gt;&apos;  [ VC: Unique Element Type Declaration ] No element type may be declared more than once</info>
      <return type='int' info='the type of the element, or -1 in case of error'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseElementMixedContentDecl' file='parserInternals' module='parser'>
      <info>parse the declaration for a Mixed Element content The leading &apos;(&apos; and spaces have been skipped in xmlParseElementContentDecl  [51] Mixed ::= &apos;(&apos; S? &apos;#PCDATA&apos; (S? &apos;|&apos; S? Name)* S? &apos;)*&apos; | &apos;(&apos; S? &apos;#PCDATA&apos; S? &apos;)&apos;  [ VC: Proper Group/PE Nesting ] applies to [51] too (see [49])  [ VC: No Duplicate Types ] The same name must not appear more than once in a single mixed-content declaration.</info>
      <return type='xmlElementContentPtr' info='the list of the xmlElementContentPtr describing the element choices'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='inputchk' type='int' info='the input used for the current entity, needed for boundary checks'/>
    </function>
    <function name='xmlParseEncName' file='parserInternals' module='parser'>
      <info>parse the XML encoding name  [81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | &apos;-&apos;)*</info>
      <return type='xmlChar *' info='the encoding name value or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseEncodingDecl' file='parserInternals' module='parser'>
      <info>parse the XML encoding declaration  [80] EncodingDecl ::= S &apos;encoding&apos; Eq (&apos;&quot;&apos; EncName &apos;&quot;&apos; |  &quot;&apos;&quot; EncName &quot;&apos;&quot;)  this setups the conversion filters.</info>
      <return type='const xmlChar *' info='the encoding value or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseEndTag' file='parserInternals' module='parser'>
      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
      <info>parse an end of tag  [42] ETag ::= &apos;&lt;/&apos; Name S? &apos;&gt;&apos;  With namespace  [NS 9] ETag ::= &apos;&lt;/&apos; QName S? &apos;&gt;&apos;</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseEntity' file='parser' module='parser'>
      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
      <info>parse an XML external entity out of context and build a tree.  [78] extParsedEnt ::= TextDecl? content  This correspond to a &quot;Well Balanced&quot; chunk</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='filename' type='const char *' info='the filename'/>
    </function>
    <function name='xmlParseEntityDecl' file='parserInternals' module='parser'>
      <info>parse &lt;!ENTITY declarations  [70] EntityDecl ::= GEDecl | PEDecl  [71] GEDecl ::= &apos;&lt;!ENTITY&apos; S Name S EntityDef S? &apos;&gt;&apos;  [72] PEDecl ::= &apos;&lt;!ENTITY&apos; S &apos;%&apos; S Name S PEDef S? &apos;&gt;&apos;  [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)  [74] PEDef ::= EntityValue | ExternalID  [76] NDataDecl ::= S &apos;NDATA&apos; S Name  [ VC: Notation Declared ] The Name must match the declared name of a notation.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseEntityRef' file='parserInternals' module='parser'>
      <info>parse ENTITY references declarations  [68] EntityRef ::= &apos;&amp;&apos; Name &apos;;&apos;  [ WFC: Entity Declared ] In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, or a document with &quot;standalone=&apos;yes&apos;&quot;, the Name given in the entity reference must match that in an entity declaration, except that well-formed documents need not declare any of the following entities: amp, lt, gt, apos, quot.  The declaration of a parameter entity must precede any reference to it.  Similarly, the declaration of a general entity must precede any reference to it which appears in a default value in an attribute-list declaration. Note that if entities are declared in the external subset or in external parameter entities, a non-validating processor is not obligated to read and process their declarations; for such documents, the rule that an entity must be declared is a well-formedness constraint only if standalone=&apos;yes&apos;.  [ WFC: Parsed Entity ] An entity reference must not contain the name of an unparsed entity</info>
      <return type='xmlEntityPtr' info='the xmlEntityPtr if found, or NULL otherwise.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseEntityValue' file='parserInternals' module='parser'>
      <info>parse a value for ENTITY declarations  [9] EntityValue ::= &apos;&quot;&apos; ([^%&amp;&quot;] | PEReference | Reference)* &apos;&quot;&apos; | &quot;&apos;&quot; ([^%&amp;&apos;] | PEReference | Reference)* &quot;&apos;&quot;</info>
      <return type='xmlChar *' info='the EntityValue parsed with reference substituted or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='orig' type='xmlChar **' info='if non-NULL store a copy of the original entity value'/>
    </function>
    <function name='xmlParseEnumeratedType' file='parserInternals' module='parser'>
      <info>parse an Enumerated attribute type.  [57] EnumeratedType ::= NotationType | Enumeration  [58] NotationType ::= &apos;NOTATION&apos; S &apos;(&apos; S? Name (S? &apos;|&apos; S? Name)* S? &apos;)&apos;</info>
      <return type='int' info='XML_ATTRIBUTE_ENUMERATION or XML_ATTRIBUTE_NOTATION'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='tree' type='xmlEnumerationPtr *' info='the enumeration tree built while parsing'/>
    </function>
    <function name='xmlParseEnumerationType' file='parserInternals' module='parser'>
      <info>parse an Enumeration attribute type.  [59] Enumeration ::= &apos;(&apos; S? Nmtoken (S? &apos;|&apos; S? Nmtoken)* S? &apos;)&apos;  [ VC: Enumeration ] Values of this type must match one of the Nmtoken tokens in the declaration</info>
      <return type='xmlEnumerationPtr' info='the enumeration attribute tree built while parsing'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseExtParsedEnt' file='parser' module='parser'>
      <info>parse a general parsed entity An external general parsed entity is well-formed if it matches the production labeled extParsedEnt.  [78] extParsedEnt ::= TextDecl? content</info>
      <return type='int' info='0, -1 in case of error. the parser context is augmented as a result of the parsing.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseExternalEntity' file='parser' module='parser'>
      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
      <info>Parse an external general entity An external general parsed entity is well-formed if it matches the production labeled extParsedEnt.  [78] extParsedEnt ::= TextDecl? content</info>
      <return type='int' info='0 if the entity is well formed, -1 in case of args problem and the parser error code otherwise'/>
      <arg name='doc' type='xmlDocPtr' info='the document the chunk pertains to'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler bloc (possibly NULL)'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks (possibly NULL)'/>
      <arg name='depth' type='int' info='Used for loop detection, use 0'/>
      <arg name='URL' type='const xmlChar *' info='the URL for the entity to load'/>
      <arg name='ID' type='const xmlChar *' info='the System ID for the entity to load'/>
      <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
    </function>
    <function name='xmlParseExternalID' file='parserInternals' module='parser'>
      <info>Parse an External ID or a Public ID  NOTE: Productions [75] and [83] interact badly since [75] can generate &apos;PUBLIC&apos; S PubidLiteral S SystemLiteral  [75] ExternalID ::= &apos;SYSTEM&apos; S SystemLiteral | &apos;PUBLIC&apos; S PubidLiteral S SystemLiteral  [83] PublicID ::= &apos;PUBLIC&apos; S PubidLiteral</info>
      <return type='xmlChar *' info='the function returns SystemLiteral and in the second case publicID receives PubidLiteral, is strict is off it is possible to return NULL and have publicID set.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='publicID' type='xmlChar **' info='a xmlChar** receiving PubidLiteral'/>
      <arg name='strict' type='int' info='indicate whether we should restrict parsing to only production [75], see NOTE below'/>
    </function>
    <function name='xmlParseExternalSubset' file='parserInternals' module='parser'>
      <info>parse Markup declarations from an external subset  [30] extSubset ::= textDecl? extSubsetDecl  [31] extSubsetDecl ::= (markupdecl | conditionalSect | PEReference | S) *</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name