### ----------------------------------------------------
### -- LibXML
### -- Licenses: Artistic-2.0
### -- Authors: David Warring
### -- File: etc/libxml2-api.xml
### ----------------------------------------------------
### -- Chunk 23 of 44
 of chars in the array'/>
      <arg name='filename' type='const char *' info='an optional file name or URI'/>
      <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
    </function>
    <function name='xmlCtxtUseOptions' file='parser' module='parser'>
      <info>Applies the options to the parser context</info>
      <return type='int' info='0 in case of success, the set of unknown or unimplemented options in case of error.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='options' type='int' info='a combination of xmlParserOption'/>
    </function>
    <function name='xmlCurrentChar' file='parserInternals' module='parserInternals'>
      <info>The current char value, if using UTF-8 this may actually span multiple bytes in the input buffer. Implement the end of line normalization: 2.11 End-of-Line Handling Wherever an external parsed entity or the literal entity value of an internal parsed entity contains either the literal two-character sequence &quot;#xD#xA&quot; or a standalone literal #xD, an XML processor must pass to the application the single character #xA. This behavior can conveniently be produced by normalizing all line breaks to #xA on input, before parsing.)</info>
      <return type='int' info='the current char value and its length'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
      <arg name='len' type='int *' info='pointer to the length of the char read'/>
    </function>
    <functype name='xmlDOMWrapAcquireNsFunction' file='tree' module='tree'>
      <info>A function called to acquire namespaces (xmlNs) from the wrapper.</info>
      <return type='xmlNsPtr' info='an xmlNsPtr or NULL in case of an error.'/>
      <arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='a DOM wrapper context'/>
      <arg name='node' type='xmlNodePtr' info='the context node (element or attribute)'/>
      <arg name='nsName' type='const xmlChar *' info='the requested namespace name'/>
      <arg name='nsPrefix' type='const xmlChar *' info='the requested namespace prefix'/>
    </functype>
    <function name='xmlDOMWrapAdoptNode' file='tree' module='tree'>
      <info>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used This is the case when you have an unlinked node and just want to move it to the context of  If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in attribute values or element content. NOTE: This function was not intensively tested.</info>
      <return type='int' info='0 if the operation succeeded, 1 if a node of unsupported type was given, 2 if a node of not yet supported type was given and -1 on API/internal errors.'/>
      <arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='the optional context for custom processing'/>
      <arg name='sourceDoc' type='xmlDocPtr' info='the optional sourceDoc'/>
      <arg name='node' type='xmlNodePtr' info='the node to start with'/>
      <arg name='destDoc' type='xmlDocPtr' info='the destination doc'/>
      <arg name='destParent' type='xmlNodePtr' info='the optional new parent of @node in @destDoc'/>
      <arg name='options' type='int' info='option flags'/>
    </function>
    <function name='xmlDOMWrapCloneNode' file='tree' module='tree'>
      <info>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used. This is the case when you don&apos;t know already where the cloned branch will be added to.  If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in attribute values or element content. TODO: 1) What to do with XInclude? Currently this returns an error for XInclude.</info>
      <return type='int' info='0 if the operation succeeded, 1 if a node of unsupported (or not yet supported) type was given, -1 on API/internal errors.'/>
      <arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='the optional context for custom processing'/>
      <arg name='sourceDoc' type='xmlDocPtr' info='the optional sourceDoc'/>
      <arg name='node' type='xmlNodePtr' info='the node to start with'/>
      <arg name='resNode' type='xmlNodePtr *' info='the clone of the given @node'/>
      <arg name='destDoc' type='xmlDocPtr' info='the destination doc'/>
      <arg name='destParent' type='xmlNodePtr' info='the optional new parent of @node in @destDoc'/>
      <arg name='deep' type='int' info='descend into child if set'/>
      <arg name='options' type='int' info='option flags'/>
    </function>
    <function name='xmlDOMWrapFreeCtxt' file='tree' module='tree'>
      <info>Frees the DOM-wrapper context.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='the DOM-wrapper context'/>
    </function>
    <function name='xmlDOMWrapNewCtxt' file='tree' module='tree'>
      <info>Allocates and initializes a new DOM-wrapper context.</info>
      <return type='xmlDOMWrapCtxtPtr' info='the xmlDOMWrapCtxtPtr or NULL in case of an internal error.'/>
    </function>
    <function name='xmlDOMWrapReconcileNamespaces' file='tree' module='tree'>
      <info>Ensures that ns-references point to ns-decls hold on element-nodes. Ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in attribute values or element content.  NOTE: This function was not intensively tested.</info>
      <return type='int' info='0 if succeeded, -1 otherwise and on API/internal errors.'/>
      <arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='DOM wrapper context, unused at the moment'/>
      <arg name='elem' type='xmlNodePtr' info='the element-node'/>
      <arg name='options' type='int' info='option flags'/>
    </function>
    <function name='xmlDOMWrapRemoveNode' file='tree' module='tree'>
      <info>Unlinks the given node from its owner. This will substitute ns-references to node-&gt;nsDef for ns-references to doc-&gt;oldNs, thus ensuring the removed branch to be autark wrt ns-references.  NOTE: This function was not intensively tested.</info>
      <return type='int' info='0 on success, 1 if the node is not supported, -1 on API and internal errors.'/>
      <arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='a DOM wrapper context'/>
      <arg name='doc' type='xmlDocPtr' info='the doc'/>
      <arg name='node' type='xmlNodePtr' info='the node to be removed.'/>
      <arg name='options' type='int' info='set of options, unused at the moment'/>
    </function>
    <function name='xmlDebugCheckDocument' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Check the document for potential content problems, and output the errors to @output</info>
      <return type='int' info='the number of errors found'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlDebugDumpAttr' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dumps debug information for the attribute</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
      <arg name='depth' type='int' info='the indentation level.'/>
    </function>
    <function name='xmlDebugDumpAttrList' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dumps debug information for the attribute list</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute list'/>
      <arg name='depth' type='int' info='the indentation level.'/>
    </function>
    <function name='xmlDebugDumpDTD' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dumps debug information for the DTD</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='dtd' type='xmlDtdPtr' info='the DTD'/>
    </function>
    <function name='xmlDebugDumpDocument' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dumps debug information for the document, it&apos;s recursive</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlDebugDumpDocumentHead' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dumps debug information cncerning the document, not recursive</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlDebugDumpEntities' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dumps debug information for all the entities in use by the document</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlDebugDumpNode' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dumps debug information for the element node, it is recursive</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='depth' type='int' info='the indentation level.'/>
    </function>
    <function name='xmlDebugDumpNodeList' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dumps debug information for the list of element node, it is recursive</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='node' type='xmlNodePtr' info='the node list'/>
      <arg name='depth' type='int' info='the indentation level.'/>
    </function>
    <function name='xmlDebugDumpOneNode' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dumps debug information for the element node, it is not recursive</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='depth' type='int' info='the indentation level.'/>
    </function>
    <function name='xmlDebugDumpString' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dumps informations about the string, shorten it if necessary</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='str' type='const xmlChar *' info='the string'/>
    </function>
    <function name='xmlDecodeEntities' file='parserInternals' module='legacy'>
      <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
      <info>This function is deprecated, we now always process entities content through xmlStringDecodeEntities  TODO: remove it in next major release.  [67] Reference ::= EntityRef | CharRef  [69] PEReference ::= &apos;%&apos; Name &apos;;&apos;</info>
      <return type='xmlChar *' info='A newly allocated string with the substitution done. The caller must deallocate it !'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='len' type='int' info='the len to decode (in bytes !), -1 for no size limit'/>
      <arg name='what' type='int' info='combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF'/>
      <arg name='end' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
      <arg name='end2' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
      <arg name='end3' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
    </function>
    <function name='xmlDefaultSAXHandlerInit' file='SAX2' module='SAX2'>
      <info>Initialize the default SAX2 handler</info>
      <return type='void'/>
    </function>
    <function name='xmlDelEncodingAlias' file='encoding' module='encoding'>
      <info>Unregisters an encoding alias @alias</info>
      <return type='int' info='0 in case of success, -1 in case of error'/>
      <arg name='alias' type='const char *' info='the alias name as parsed, in UTF-8 format (ASCII actually)'/>
    </function>
    <function name='xmlDeregisterNodeDefault' file='globals' module='globals'>
      <info>Registers a callback for node destruction</info>
      <return type='xmlDeregisterNodeFunc' info='the previous value of the deregistration function'/>
      <arg name='func' type='xmlDeregisterNodeFunc' info='function pointer to the new DeregisterNodeFunc'/>
    </function>
    <functype name='xmlDeregisterNodeFunc' file='globals' module='globals'>
      <info>Signature for the deregistration callback of a discarded node</info>
      <return type='void'/>
      <arg name='node' type='xmlNodePtr' info='the current node'/>
    </functype>
    <function name='xmlDetectCharEncoding' file='encoding' module='encoding'>
      <info>Guess the encoding of the entity using the first bytes of the entity content according to the non-normative appendix F of the XML-1.0 recommendation.</info>
      <return type='xmlCharEncoding' info='one of the XML_CHAR_ENCODING_... values.'/>
      <arg name='in' type='const unsigned char *' info='a pointer to the first bytes of the XML entity, must be at least 2 bytes long (at least 4 if encoding is UTF4 variant).'/>
      <arg name='len' type='int' info='pointer to the length of the buffer'/>
    </function>
    <function name='xmlDictCleanup' file='dict' module='dict'>
      <info>Free the dictionary mutex. Do not call unless sure the library is not in use anymore !</info>
      <return type='void'/>
    </function>
    <function name='xmlDictCreate' file='dict' module='dict'>
      <info>Create a new dictionary</info>
      <return type='xmlDictPtr' info='the newly created dictionary, or NULL if an error occurred.'/>
    </function>
    <function name='xmlDictCreateSub' file='dict' module='dict'>
      <info>Create a new dictionary, inheriting strings from the read-only dictionary @sub. On lookup, strings are first searched in the new dictionary, then in @sub, and if not found are created in the new dictionary.</info>
      <return type='xmlDictPtr' info='the newly created dictionary, or NULL if an error occurred.'/>
      <arg name='sub' type='xmlDictPtr' info='an existing dictionary'/>
    </function>
    <function name='xmlDictExists' file='dict' module='dict'>
      <info>Check if the @name exists in the dictionary @dict.</info>
      <return type='const xmlChar *' info='the internal copy of the name or NULL if not found.'/>
      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='len' type='int' info='the length of the name, if -1 it is recomputed'/>
    </function>
    <function name='xmlDictFree' file='dict' module='dict'>
      <info>Free the hash @dict and its contents. The userdata is deallocated with @f if provided.</info>
      <return type='void'/>
      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
    </function>
    <function name='xmlDictGetUsage' file='dict' module='dict'>
      <info>Get how much memory is used by a dictionary for strings Added in 2.9.0</info>
      <return type='size_t' info='the amount of strings allocated'/>
      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
    </function>
    <function name='xmlDictLookup' file='dict' module='dict'>
      <info>Add the @name to the dictionary @dict if not present.</info>
      <return type='const xmlChar *' info='the internal copy of the name or NULL in case of internal error'/>
      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='len' type='int' info='the length of the name, if -1 it is recomputed'/>
    </function>
    <function name='xmlDictOwns' file='dict' module='dict'>
      <info>check if a string is owned by the disctionary</info>
      <return type='int' info='1 if true, 0 if false and -1 in case of error -1 in case of error'/>
      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
      <arg name='str' type='const xmlChar *' info='the string'/>
    </function>
    <function name='xmlDictQLookup' file='dict' module='dict'>
      <info>Add the QName @prefix:@name to the hash @dict if not present.</info>
      <return type='const xmlChar *' info='the internal copy of the QName or NULL in case of internal error'/>
      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
      <arg name='prefix' type='const xmlChar *' info='the prefix'/>
      <arg name='name' type='const xmlChar *' info='the name'/>
    </function>
    <function name='xmlDictReference' file='dict' module='dict'>
      <info>Increment the reference counter of a dictionary</info>
      <return type='int' info='0 in case of success and -1 in case of error'/>
      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
    </function>
    <function name='xmlDictSetLimit' file='dict' module='dict'>
      <info>Set a size limit for the dictionary Added in 2.9.0</info>
      <return type='size_t' info='the previous limit of the dictionary or 0'/>
      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
      <arg name='limit' type='size_t' info='the limit in bytes'/>
    </function>
    <function name='xmlDictSize' file='dict' module='dict'>
      <info>Query the number of elements installed in the hash @dict.</info>
      <return type='int' info='the number of elements in the dictionary or -1 in case of error'/>
      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
    </function>
    <function name='xmlDllMain' file='threads' module='threads'>
      <info></info>
      <return type='int' info=''/>
      <arg name='hinstDLL' type='void *' info=''/>
      <arg name='fdwReason' type='unsigned long' info=''/>
      <arg name='lpvReserved' type='void *' info=''/>
    </function>
    <function name='xmlDocCopyNode' file='tree' module='tree'>
      <info>Do a copy of the node to a given document.</info>
      <return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='extended' type='int' info='if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)'/>
    </function>
    <function name='xmlDocCopyNodeList' file='tree' module='tree'>
      <info>Do a recursive copy of the node list.</info>
      <return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
      <arg name='doc' type='xmlDocPtr' info='the target document'/>
      <arg name='node' type='xmlNodePtr' info='the first node in the list.'/>
    </function>
    <function name='xmlDocDump' file='tree' module='xmlsave'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Dump an XML document to an open FILE.</info>
      <return type='int' info='the number of bytes written or -1 in case of failure.'/>
      <arg name='f' type='FILE *' info='the FILE*'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlDocDumpFormatMemory' file='tree' module='xmlsave'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Dump an XML document in memory and return the #xmlChar * and it&apos;s size. It&apos;s up to the caller to free the memory with xmlFree(). Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
      <return type='void'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='mem' type='xmlChar **' info='OUT: the memory pointer'/>
      <arg name='size' type='int *' info='OUT: the memory length'/>
      <arg name='format' type='int' info='should formatting spaces been added'/>
    </function>
    <function name='xmlDocDumpFormatMemoryEnc' file='tree' module='xmlsave'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Dump the current DOM tree into memory using the character encoding specified by the caller.  Note it is up to the caller of this function to free the allocated memory with xmlFree(). Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
      <return type='void'/>
      <arg name='out_doc' type='xmlDocPtr' info='Document to generate XML text from'/>
      <arg name='doc_txt_ptr' type='xmlChar **' info='Memory pointer for allocated XML text'/>
      <arg name='doc_txt_len' type='int *' info='Length of the generated XML text'/>
      <arg name='txt_encoding' type='const char *' info='Character encoding to use when generating XML text'/>
      <arg name='format' type='int' info='should formatting spaces been added'/>
    </function>
    <function name='xmlDocDumpMemory' file='tree' module='xmlsave'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Dump an XML document in memory and return the #xmlChar * and it&apos;s size in bytes. It&apos;s up to the caller to free the memory with xmlFree(). The resulting byte array is zero terminated, though the last 0 is not included in the returned size.</info>
      <return type='void'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='mem' type='xmlChar **' info='OUT: the memory pointer'/>
      <arg name='size' type='int *' info='OUT: the memory length'/>
    </function>
    <function name='xmlDocDumpMemoryEnc' file='tree' module='xmlsave'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Dump the current DOM tree into memory using the character encoding specified by the caller.  Note it is up to the caller of this function to free the allocated memory with xmlFree().</info>
      <return type='void'/>
      <arg name='out_doc' type='xmlDocPtr' info='Document to generate XML text from'/>
      <arg name='doc_txt_ptr' type='xmlChar **' info='Memory pointer for allocated XML text'/>
      <arg name='doc_txt_len' type='int *' info='Length of the generated XML text'/>
      <arg name='txt_encoding' type='const char *' info='Character encoding to use when generating XML text'/>
    </function>
    <function name='xmlDocFormatDump' file='tree' module='xmlsave'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Dump an XML document to an open FILE.</info>
      <return type='int' info='the number of bytes written or -1 in case of failure. Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called'/>
      <arg name='f' type='FILE *' info='the FILE*'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='format' type='int' info='should formatting spaces been added'/>
    </function>
    <function name='xmlDocGetRootElement' file='tree' module='tree'>
      <info>Get the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</info>
      <return type='xmlNodePtr' info='the #xmlNodePtr for the root or NULL'/>
      <arg name='doc' type='const xmlDoc *' info='the document'/>
    </function>
    <function name='xmlDocSetRootElement' file='tree' module='tree'>
      <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)</cond>
      <info>Set the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</info>
      <return type='xmlNodePtr' info='the old root element if any was found, NULL if root was NULL'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='root' type='xmlNodePtr' info='the new document root element, if root is NULL no action is taken, to remove a node from a document use xmlUnlinkNode(root) instead.'/>
    </function>
    <function name='xmlDumpAttributeDecl' file='valid' module='valid'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>This will dump the content of the attribute declaration as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='attr' type='xmlAttributePtr' info='An attribute declaration'/>
    </function>
    <function name='xmlDumpAttributeTable' file='valid' module='valid'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>This will dump the content of the attribute table as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='table' type='xmlAttributeTablePtr' info='An attribute table'/>
    </function>
    <function name='xmlDumpElementDecl' file='valid' module='valid'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>This will dump the content of the element declaration as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='elem' type='xmlElementPtr' info='An element table'/>
    </function>
    <function name='xmlDumpElementTable' file='valid' module='valid'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>This will dump the content of the element table as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='table' type='xmlElementTablePtr' info='An element table'/>
    </function>
    <function name='xmlDumpEntitiesTable' file='entities' module='entities'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>This will dump the content of the entity table as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='An XML buffer.'/>
      <arg name='table' type='xmlEntitiesTablePtr' info='An entity table'/>
    </function>
    <function name='xmlDumpEntityDecl' file='entities' module='entities'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>This will dump the content of the entity table as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='An XML buffer.'/>
      <arg name='ent' type='xmlEntityPtr' info='An entity table'/>
    </function>
    <function name='xmlDumpNotationDecl' file='valid' module='valid'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>This will dump the content the notation declaration as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='nota' type='xmlNotationPtr' info='A notation declaration'/>
    </function>
    <function name='xmlDumpNotationTable' file='valid' module='valid'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>This will dump the content of the notation table as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='table' type='xmlNotationTablePtr' info='A notation table'/>
    </function>
    <function name='xmlElemDump' file='tree' module='xmlsave'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Dump an XML/HTML node, recursive behaviour, children are printed too.</info>
      <return type='void'/>
      <arg name='f' type='FILE *' info='the FILE * for the output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='cur' type='xmlNodePtr' info='the current node'/>
    </function>
    <function name='xmlEncodeEntities' file='entities' module='legacy'>
      <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
      <info>TODO: remove xmlEncodeEntities, once we are not afraid of breaking binary compatibility  People must migrate their code to xmlEncodeEntitiesReentrant ! This routine will issue a warning when encountered.</info>
      <return type='const xmlChar *' info='NULL'/>
      <arg name='doc' type='xmlDocPtr' info='the document containing the string'/>
      <arg name='input' type='const xmlChar *' info='A string to convert to XML.'/>
    </function>
    <function name='xmlEncodeEntitiesReentrant' file='entities' module='entities'>
      <info>Do a global encoding of a string, replacing the predefined entities and non ASCII values with their entities and CharRef counterparts. Contrary to xmlEncodeEntities, this routine is reentrant, and result must be deallocated.</info>
      <return type='xmlChar *' info='A newly allocated string with the substitution done.'/>
      <arg name='doc' type='xmlDocPtr' info='the document containing the string'/>
      <arg name='input' type='const xmlChar *' info='A string to convert to XML.'/>
    </function>
    <function name='xmlEncodeSpecialChars' file='entities' module='entities'>
      <info>Do a global encoding of a string, replacing the predefined entities this routine is reentrant, and result must be deallocated.</info>
      <return type='xmlChar *' info='A newly allocated string with the substitution done.'/>
      <arg name='doc' type='const xmlDoc *' info='the document containing the string'/>
      <arg name='input' type='const xmlChar *' info='A string to convert to XML.'/>
    </function>
    <functype name='xmlEntityReferenceFunc' file='parserInternals' module='parserInternals'>
      <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
      <info>Callback function used when one needs to be able to track back the provenance of a chunk of nodes inherited from an entity replacement.</info>
      <return type='void'/>
      <arg name='ent' type='xmlEntityPtr' info='the entity'/>
      <arg name='firstNode' type='xmlNodePtr' info='the fist node in the chunk'/>
      <arg name='lastNode' type='xmlNodePtr' info='the last nod in the chunk'/>
    </functype>
    <function name='xmlErrMemory' file='parserInternals' module='parserInternals'>
      <info>Handle a redefinition of attribute error</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='extra' type='const char *' info='extra informations'/>
    </function>
    <function name='xmlExpCtxtNbCons' file='xmlregexp' module='xmlregexp'>
