### ----------------------------------------------------
### -- LibXML
### -- Licenses: Artistic-2.0
### -- Authors: David Warring
### -- File: etc/libxml2-api.xml
### ----------------------------------------------------
### -- Chunk 35 of 44
Shell' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the XML shell This allow to load, validate, view, modify and save a document using a environment similar to a UNIX commandline.</info>
      <return type='void'/>
      <arg name='doc' type='xmlDocPtr' info='the initial document'/>
      <arg name='filename' type='char *' info='the output buffer'/>
      <arg name='input' type='xmlShellReadlineFunc' info='the line reading function'/>
      <arg name='output' type='FILE *' info='the output FILE*, defaults to stdout if NULL'/>
    </function>
    <function name='xmlShellBase' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the XML shell function &quot;base&quot; dumps the current XML base of the node</info>
      <return type='int' info='0'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='arg' type='char *' info='unused'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellCat' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Implements the XML shell function &quot;cat&quot; dumps the serialization node content (XML or HTML).</info>
      <return type='int' info='0'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='arg' type='char *' info='unused'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <functype name='xmlShellCmd' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
      <info>This is a generic signature for the XML shell functions.</info>
      <return type='int' info='an int, negative returns indicating errors.'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='a shell context'/>
      <arg name='arg' type='char *' info='a string argument'/>
      <arg name='node' type='xmlNodePtr' info='a first node'/>
      <arg name='node2' type='xmlNodePtr' info='a second node'/>
    </functype>
    <function name='xmlShellDir' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the XML shell function &quot;dir&quot; dumps informations about the node (namespace, attributes, content).</info>
      <return type='int' info='0'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='arg' type='char *' info='unused'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellDu' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the XML shell function &quot;du&quot; show the structure of the subtree under node @tree If @tree is null, the command works on the current node.</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='arg' type='char *' info='unused'/>
      <arg name='tree' type='xmlNodePtr' info='a node defining a subtree'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellList' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the XML shell function &quot;ls&quot; Does an Unix like listing of the given node (like a directory)</info>
      <return type='int' info='0'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='arg' type='char *' info='unused'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellLoad' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the XML shell function &quot;load&quot; loads a new document specified by the filename</info>
      <return type='int' info='0 or -1 if loading failed'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='filename' type='char *' info='the file name'/>
      <arg name='node' type='xmlNodePtr' info='unused'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellPrintNode' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Print node to the output FILE</info>
      <return type='void'/>
      <arg name='node' type='xmlNodePtr' info='a non-null node to print to the output FILE'/>
    </function>
    <function name='xmlShellPrintXPathError' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Print the xpath error to libxml default error channel</info>
      <return type='void'/>
      <arg name='errorType' type='int' info='valid xpath error id'/>
      <arg name='arg' type='const char *' info='the argument that cause xpath to fail'/>
    </function>
    <function name='xmlShellPrintXPathResult' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Prints result to the output FILE</info>
      <return type='void'/>
      <arg name='list' type='xmlXPathObjectPtr' info='a valid result generated by an xpath evaluation'/>
    </function>
    <function name='xmlShellPwd' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the XML shell function &quot;pwd&quot; Show the full path from the root to the node, if needed building thumblers when similar elements exists at a given ancestor level. The output is compatible with XPath commands.</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='buffer' type='char *' info='the output buffer'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <functype name='xmlShellReadlineFunc' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
      <info>This is a generic signature for the XML shell input function.</info>
      <return type='char *' info='a string which will be freed by the Shell.'/>
      <arg name='prompt' type='char *' info='a string prompt'/>
    </functype>
    <function name='xmlShellSave' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Implements the XML shell function &quot;save&quot; Write the current document to the filename, or it&apos;s original name</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='filename' type='char *' info='the file name (optional)'/>
      <arg name='node' type='xmlNodePtr' info='unused'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellValidate' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_VALID_ENABLED)</cond>
      <info>Implements the XML shell function &quot;validate&quot; Validate the document, if a DTD path is provided, then the validation is done against the given DTD.</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='dtd' type='char *' info='the DTD URI (optional)'/>
      <arg name='node' type='xmlNodePtr' info='unused'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellWrite' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Implements the XML shell function &quot;write&quot; Write the current node to the filename, it saves the serialization of the subtree under the @node specified</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='filename' type='char *' info='the file name'/>
      <arg name='node' type='xmlNodePtr' info='a node in the tree'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlSkipBlankChars' file='parserInternals' module='parser'>
      <info>skip all blanks character found at that point in the input streams. It pops up finished entities in the process if allowable at that point.</info>
      <return type='int' info='the number of space chars skipped'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
    </function>
    <function name='xmlSnprintfElementContent' file='valid' module='valid'>
      <info>This will dump the content of the element content definition Intended just for the debug routine</info>
      <return type='void'/>
      <arg name='buf' type='char *' info='an output buffer'/>
      <arg name='size' type='int' info='the buffer size'/>
      <arg name='content' type='xmlElementContentPtr' info='An element table'/>
      <arg name='englob' type='int' info='1 if one must print the englobing parenthesis, 0 otherwise'/>
    </function>
    <function name='xmlSplitQName' file='parserInternals' module='parser'>
      <info>parse an UTF8 encoded XML qualified name string  [NS 5] QName ::= (Prefix &apos;:&apos;)? LocalPart  [NS 6] Prefix ::= NCName  [NS 7] LocalPart ::= NCName</info>
      <return type='xmlChar *' info='the local part, and prefix is updated to get the Prefix if any.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='name' type='const xmlChar *' info='an XML parser context'/>
      <arg name='prefix' type='xmlChar **' info='a xmlChar **'/>
    </function>
    <function name='xmlSplitQName2' file='tree' module='tree'>
      <info>parse an XML qualified name string  [NS 5] QName ::= (Prefix &apos;:&apos;)? LocalPart  [NS 6] Prefix ::= NCName  [NS 7] LocalPart ::= NCName</info>
      <return type='xmlChar *' info='NULL if the name doesn&apos;t have a prefix. Otherwise, returns the local part, and prefix is updated to get the Prefix. Both the return value and the prefix must be freed by the caller.'/>
      <arg name='name' type='const xmlChar *' info='the full QName'/>
      <arg name='prefix' type='xmlChar **' info='a xmlChar **'/>
    </function>
    <function name='xmlSplitQName3' file='tree' module='tree'>
      <info>parse an XML qualified name string,i</info>
      <return type='const xmlChar *' info='NULL if it is not a Qualified Name, otherwise, update len with the length in byte of the prefix and return a pointer to the start of the name without the prefix'/>
      <arg name='name' type='const xmlChar *' info='the full QName'/>
      <arg name='len' type='int *' info='an int *'/>
    </function>
    <function name='xmlSprintfElementContent' file='valid' module='valid'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>Deprecated, unsafe, use xmlSnprintfElementContent</info>
      <return type='void'/>
      <arg name='buf' type='char *' info='an output buffer'/>
      <arg name='content' type='xmlElementContentPtr' info='An element table'/>
      <arg name='englob' type='int' info='1 if one must print the englobing parenthesis, 0 otherwise'/>
    </function>
    <function name='xmlStopParser' file='parser' module='parser'>
      <info>Blocks further parser processing</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlStrEqual' file='xmlstring' module='xmlstring'>
      <info>Check if both strings are equal of have same content. Should be a bit more readable and faster than xmlStrcmp()</info>
      <return type='int' info='1 if they are equal, 0 if they are different'/>
      <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
      <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
    </function>
    <function name='xmlStrPrintf' file='xmlstring' module='xmlstring'>
      <info>Formats @msg and places result into @buf.</info>
      <return type='int' info='the number of characters written to @buf or -1 if an error occurs.'/>
      <arg name='buf' type='xmlChar *' info='the result buffer.'/>
      <arg name='len' type='int' info='the result buffer length.'/>
      <arg name='msg' type='const char *' info='the message with printf formatting.'/>
      <arg name='...' type='...' info='extra parameters for the message.'/>
    </function>
    <function name='xmlStrQEqual' file='xmlstring' module='xmlstring'>
      <info>Check if a QName is Equal to a given string</info>
      <return type='int' info='1 if they are equal, 0 if they are different'/>
      <arg name='pref' type='const xmlChar *' info='the prefix of the QName'/>
      <arg name='name' type='const xmlChar *' info='the localname of the QName'/>
      <arg name='str' type='const xmlChar *' info='the second xmlChar *'/>
    </function>
    <function name='xmlStrVPrintf' file='xmlstring' module='xmlstring'>
      <info>Formats @msg and places result into @buf.</info>
      <return type='int' info='the number of characters written to @buf or -1 if an error occurs.'/>
      <arg name='buf' type='xmlChar *' info='the result buffer.'/>
      <arg name='len' type='int' info='the result buffer length.'/>
      <arg name='msg' type='const char *' info='the message with printf formatting.'/>
      <arg name='ap' type='va_list' info='extra parameters for the message.'/>
    </function>
    <function name='xmlStrcasecmp' file='xmlstring' module='xmlstring'>
      <info>a strcasecmp for xmlChar&apos;s</info>
      <return type='int' info='the integer result of the comparison'/>
      <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
      <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
    </function>
    <function name='xmlStrcasestr' file='xmlstring' module='xmlstring'>
      <info>a case-ignoring strstr for xmlChar&apos;s</info>
      <return type='const xmlChar *' info='the xmlChar * for the first occurrence or NULL.'/>
      <arg name='str' type='const xmlChar *' info='the xmlChar * array (haystack)'/>
      <arg name='val' type='const xmlChar *' info='the xmlChar to search (needle)'/>
    </function>
    <function name='xmlStrcat' file='xmlstring' module='xmlstring'>
      <info>a strcat for array of xmlChar&apos;s. Since they are supposed to be encoded in UTF-8 or an encoding with 8bit based chars, we assume a termination mark of &apos;0&apos;.</info>
      <return type='xmlChar *' info='a new xmlChar * containing the concatenated string. The original @cur is reallocated and should not be freed.'/>
      <arg name='cur' type='xmlChar *' info='the original xmlChar * array'/>
      <arg name='add' type='const xmlChar *' info='the xmlChar * array added'/>
    </function>
    <function name='xmlStrchr' file='xmlstring' module='xmlstring'>
      <info>a strchr for xmlChar&apos;s</info>
      <return type='const xmlChar *' info='the xmlChar * for the first occurrence or NULL.'/>
      <arg name='str' type='const xmlChar *' info='the xmlChar * array'/>
      <arg name='val' type='xmlChar' info='the xmlChar to search'/>
    </function>
    <function name='xmlStrcmp' file='xmlstring' module='xmlstring'>
      <info>a strcmp for xmlChar&apos;s</info>
      <return type='int' info='the integer result of the comparison'/>
      <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
      <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
    </function>
    <function name='xmlStrdup' file='xmlstring' module='xmlstring'>
      <info>a strdup for array of xmlChar&apos;s. Since they are supposed to be encoded in UTF-8 or an encoding with 8bit based chars, we assume a termination mark of &apos;0&apos;.</info>
      <return type='xmlChar *' info='a new xmlChar * or NULL'/>
      <arg name='cur' type='const xmlChar *' info='the input xmlChar *'/>
    </function>
    <functype name='xmlStrdupFunc' file='xmlmemory' module='xmlmemory'>
      <info>Signature for an strdup() implementation.</info>
      <return type='char *' info='the copy of the string or NULL in case of error.'/>
      <arg name='str' type='const char *' info='a zero terminated string'/>
    </functype>
    <function name='xmlStreamPop' file='pattern' module='pattern'>
      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
      <info>push one level from the stream.</info>
      <return type='int' info='-1 in case of error, 0 otherwise.'/>
      <arg name='stream' type='xmlStreamCtxtPtr' info='the stream context'/>
    </function>
    <function name='xmlStreamPush' file='pattern' module='pattern'>
      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
      <info>Push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset. Otherwise the function will act as if it has been given an element-node.</info>
      <return type='int' info='-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.'/>
      <arg name='stream' type='xmlStreamCtxtPtr' info='the stream context'/>
      <arg name='name' type='const xmlChar *' info='the current name'/>
      <arg name='ns' type='const xmlChar *' info='the namespace name'/>
    </function>
    <function name='xmlStreamPushAttr' file='pattern' module='pattern'>
      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
      <info>Push new attribute data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset. Otherwise the function will act as if it has been given an attribute-node.</info>
      <return type='int' info='-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.'/>
      <arg name='stream' type='xmlStreamCtxtPtr' info='the stream context'/>
      <arg name='name' type='const xmlChar *' info='the current name'/>
      <arg name='ns' type='const xmlChar *' info='the namespace name'/>
    </function>
    <function name='xmlStreamPushNode' file='pattern' module='pattern'>
      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
      <info>Push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset. Different from xmlStreamPush() this function can be fed with nodes of type: element-, attribute-, text-, cdata-section-, comment- and processing-instruction-node.</info>
      <return type='int' info='-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.'/>
      <arg name='stream' type='xmlStreamCtxtPtr' info='the stream context'/>
      <arg name='name' type='const xmlChar *' info='the current name'/>
      <arg name='ns' type='const xmlChar *' info='the namespace name'/>
      <arg name='nodeType' type='int' info='the type of the node being pushed'/>
    </function>
    <function name='xmlStreamWantsAnyNode' file='pattern' module='pattern'>
      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
      <info>Query if the streaming pattern additionally needs to be fed with text-, cdata-section-, comment- and processing-instruction-nodes. If the result is 0 then only element-nodes and attribute-nodes need to be pushed.</info>
      <return type='int' info='1 in case of need of nodes of the above described types, 0 otherwise. -1 on API errors.'/>
      <arg name='streamCtxt' type='xmlStreamCtxtPtr' info='the stream context'/>
    </function>
    <function name='xmlStringCurrentChar' file='parserInternals' module='parserInternals'>
      <info>The current char value, if using UTF-8 this may actually span multiple bytes in the input buffer.</info>
      <return type='int' info='the current char value and its length'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
      <arg name='cur' type='const xmlChar *' info='pointer to the beginning of the char'/>
      <arg name='len' type='int *' info='pointer to the length of the char read'/>
    </function>
    <function name='xmlStringDecodeEntities' file='parserInternals' module='parser'>
      <info>Takes a entity string content and process to do the adequate substitutions.  [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='str' type='const xmlChar *' info='the input string'/>
      <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='xmlStringGetNodeList' file='tree' module='tree'>
      <info>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</info>
      <return type='xmlNodePtr' info='a pointer to the first child'/>
      <arg name='doc' type='const xmlDoc *' info='the document'/>
      <arg name='value' type='const xmlChar *' info='the value of the attribute'/>
    </function>
    <function name='xmlStringLenDecodeEntities' file='parserInternals' module='parser'>
      <info>Takes a entity string content and process to do the adequate substitutions.  [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='str' type='const xmlChar *' info='the input string'/>
      <arg name='len' type='int' info='the string length'/>
      <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='xmlStringLenGetNodeList' file='tree' module='tree'>
      <info>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</info>
      <return type='xmlNodePtr' info='a pointer to the first child'/>
      <arg name='doc' type='const xmlDoc *' info='the document'/>
      <arg name='value' type='const xmlChar *' info='the value of the text'/>
      <arg name='len' type='int' info='the length of the string value'/>
    </function>
    <function name='xmlStrlen' file='xmlstring' module='xmlstring'>
      <info>length of a xmlChar&apos;s string</info>
      <return type='int' info='the number of xmlChar contained in the ARRAY.'/>
      <arg name='str' type='const xmlChar *' info='the xmlChar * array'/>
    </function>
    <function name='xmlStrncasecmp' file='xmlstring' module='xmlstring'>
      <info>a strncasecmp for xmlChar&apos;s</info>
      <return type='int' info='the integer result of the comparison'/>
      <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
      <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
      <arg name='len' type='int' info='the max comparison length'/>
    </function>
    <function name='xmlStrncat' file='xmlstring' module='xmlstring'>
      <info>a strncat for array of xmlChar&apos;s, it will extend @cur with the len first bytes of @add. Note that if @len &lt; 0 then this is an API error and NULL will be returned.</info>
      <return type='xmlChar *' info='a new xmlChar *, the original @cur is reallocated and should not be freed.'/>
      <arg name='cur' type='xmlChar *' info='the original xmlChar * array'/>
      <arg name='add' type='const xmlChar *' info='the xmlChar * array added'/>
      <arg name='len' type='int' info='the length of @add'/>
    </function>
    <function name='xmlStrncatNew' file='xmlstring' module='xmlstring'>
      <info>same as xmlStrncat, but creates a new string.  The original two strings are not freed. If @len is &lt; 0 then the length will be calculated automatically.</info>
      <return type='xmlChar *' info='a new xmlChar * or NULL'/>
      <arg name='str1' type='const xmlChar *' info='first xmlChar string'/>
      <arg name='str2' type='const xmlChar *' info='second xmlChar string'/>
      <arg name='len' type='int' info='the len of @str2 or &lt; 0'/>
    </function>
    <function name='xmlStrncmp' file='xmlstring' module='xmlstring'>
      <info>a strncmp for xmlChar&apos;s</info>
      <return type='int' info='the integer result of the comparison'/>
      <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
      <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
      <arg name='len' type='int' info='the max comparison length'/>
    </function>
    <function name='xmlStrndup' file='xmlstring' module='xmlstring'>
      <info>a strndup for array of xmlChar&apos;s</info>
      <return type='xmlChar *' info='a new xmlChar * or NULL'/>
      <arg name='cur' type='const xmlChar *' info='the input xmlChar *'/>
      <arg name='len' type='int' info='the len of @cur'/>
    </function>
    <function name='xmlStrstr' file='xmlstring' module='xmlstring'>
      <info>a strstr for xmlChar&apos;s</info>
      <return type='const xmlChar *' info='the xmlChar * for the first occurrence or NULL.'/>
      <arg name='str' type='const xmlChar *' info='the xmlChar * array (haystack)'/>
      <arg name='val' type='const xmlChar *' info='the xmlChar to search (needle)'/>
    </function>
    <function name='xmlStrsub' file='xmlstring' module='xmlstring'>
      <info>Extract a substring of a given string</info>
      <return type='xmlChar *' info='the xmlChar * for the first occurrence or NULL.'/>
      <arg name='str' type='const xmlChar *' info='the xmlChar * array (haystack)'/>
      <arg name='start' type='int' info='the index of the first char (zero based)'/>
      <arg name='len' type='int' info='the length of the substring'/>
    </function>
    <functype name='xmlStructuredErrorFunc' file='xmlerror' module='xmlerror'>
      <info>Signature of the function to use when there is an error and the module handles the new error reporting mechanism.</info>
      <return type='void'/>
      <arg name='userData' type='void *' info='user provided data for the error callback'/>
      <arg name='error' type='xmlErrorPtr' info='the error being raised.'/>
    </functype>
    <function name='xmlSubstituteEntitiesDefault' file='parser' module='parserInternals'>
      <info>Set and return the previous value for default entity support. Initially the parser always keep entity references instead of substituting entity values in the output. This function has to be used to change the default parser behavior SAX::substituteEntities() has to be used for changing that on a file by file basis.</info>
      <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
      <arg name='val' type='int' info='int 0 or 1'/>
    </function>
    <function name='xmlSwitchEncoding' file='parserInternals' module='parserInternals'>
      <info>change the input functions when discovering the character encoding of a given entity.</info>
      <return type='int' info='0 in case of success, -1 otherwise'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='enc' type='xmlCharEncoding' info='the encoding value (number)'/>
    </function>
    <function name='xmlSwitchInputEncoding' file='parserInternals' module='parserInternals'>
      <info>change the input functions when discovering the character encoding of a given entity.</info>
      <return type='int' info='0 in case of success, -1 otherwise'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='input' type='xmlParserInputPtr' info='the input stream'/>
      <arg name='handler' type='xmlCharEncodingHandlerPtr' info='the encoding handler'/>
    </function>
    <function name='xmlSwitchToEncoding' file='parserInternals' module='parserInternals'>
      <info>change the input functions when discovering the character encoding of a given entity.</info>
      <return type='int' info='0 in case of success, -1 otherwise'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='handler' type='xmlCharEncodingHandlerPtr' info='the encoding handler'/>
    </function>
    <function name='xmlTextConcat' file='tree' module='tree'>
      <info>