### ----------------------------------------------------
### -- LibXML
### -- Licenses: Artistic-2.0
### -- Authors: David Warring
### -- File: etc/libxml2-api.xml
### ----------------------------------------------------
### -- Chunk 27 of 44
threads'>
      <info>xmlMutexLock() is used to lock a libxml2 token.</info>
      <return type='void'/>
      <arg name='tok' type='xmlMutexPtr' info='the simple mutex'/>
    </function>
    <function name='xmlMutexUnlock' file='threads' module='threads'>
      <info>xmlMutexUnlock() is used to unlock a libxml2 token.</info>
      <return type='void'/>
      <arg name='tok' type='xmlMutexPtr' info='the simple mutex'/>
    </function>
    <function name='xmlNamespaceParseNCName' file='parserInternals' module='legacy'>
      <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
      <info>parse an XML namespace name.  TODO: this seems not in use anymore, the namespace handling is done on top of the SAX interfaces, i.e. not on raw input.  [NS 3] NCName ::= (Letter | &apos;_&apos;) (NCNameChar)*  [NS 4] NCNameChar ::= Letter | Digit | &apos;.&apos; | &apos;-&apos; | &apos;_&apos; | CombiningChar | Extender</info>
      <return type='xmlChar *' info='the namespace name or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlNamespaceParseNSDef' file='parserInternals' module='legacy'>
      <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
      <info>parse a namespace prefix declaration  TODO: this seems not in use anymore, the namespace handling is done on top of the SAX interfaces, i.e. not on raw input.  [NS 1] NSDef ::= PrefixDef Eq SystemLiteral  [NS 2] PrefixDef ::= &apos;xmlns&apos; (&apos;:&apos; NCName)?</info>
      <return type='xmlChar *' info='the namespace name'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlNamespaceParseQName' file='parserInternals' module='legacy'>
      <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
      <info>TODO: this seems not in use anymore, the namespace handling is done on top of the SAX interfaces, i.e. not on raw input.  parse an XML qualified name  [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='prefix' type='xmlChar **' info='a xmlChar **'/>
    </function>
    <function name='xmlNanoFTPCheckResponse' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Check if there is a response from the FTP server after a command.</info>
      <return type='int' info='the code number, or 0'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPCleanup' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Cleanup the FTP protocol layer. This cleanup proxy informations.</info>
      <return type='void'/>
    </function>
    <function name='xmlNanoFTPClose' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Close the connection and both control and transport</info>
      <return type='int' info='-1 incase of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPCloseConnection' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Close the data connection from the server</info>
      <return type='int' info='-1 incase of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPConnect' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Tries to open a control connection</info>
      <return type='int' info='-1 in case of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPConnectTo' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Tries to open a control connection to the given server/port</info>
      <return type='void *' info='an fTP context or NULL if it failed'/>
      <arg name='server' type='const char *' info='an FTP server name'/>
      <arg name='port' type='int' info='the port (use 21 if 0)'/>
    </function>
    <function name='xmlNanoFTPCwd' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Tries to change the remote directory</info>
      <return type='int' info='-1 incase of error, 1 if CWD worked, 0 if it failed'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
      <arg name='directory' type='const char *' info='a directory on the server'/>
    </function>
    <function name='xmlNanoFTPDele' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Tries to delete an item (file or directory) from server</info>
      <return type='int' info='-1 incase of error, 1 if DELE worked, 0 if it failed'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
      <arg name='file' type='const char *' info='a file or directory on the server'/>
    </function>
    <function name='xmlNanoFTPFreeCtxt' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Frees the context after closing the connection.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPGet' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Fetch the given file from the server. All data are passed back in the callbacks. The last callback has a size of 0 block.</info>
      <return type='int' info='-1 incase of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
      <arg name='callback' type='ftpDataCallback' info='the user callback'/>
      <arg name='userData' type='void *' info='the user callback data'/>
      <arg name='filename' type='const char *' info='the file to retrieve'/>
    </function>
    <function name='xmlNanoFTPGetConnection' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Try to open a data connection to the server. Currently only passive mode is supported.</info>
      <return type='SOCKET' info='-1 incase of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPGetResponse' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Get the response from the FTP server after a command.</info>
      <return type='int' info='the code number'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPGetSocket' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Initiate fetch of the given file from the server.</info>
      <return type='SOCKET' info='the socket for the data connection, or &lt;0 in case of error'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
      <arg name='filename' type='const char *' info='the file to retrieve (or NULL if path is in context).'/>
    </function>
    <function name='xmlNanoFTPInit' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Initialize the FTP protocol layer. Currently it just checks for proxy informations, and get the hostname</info>
      <return type='void'/>
    </function>
    <function name='xmlNanoFTPList' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Do a listing on the server. All files info are passed back in the callbacks.</info>
      <return type='int' info='-1 incase of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
      <arg name='callback' type='ftpListCallback' info='the user callback'/>
      <arg name='userData' type='void *' info='the user callback data'/>
      <arg name='filename' type='const char *' info='optional files to list'/>
    </function>
    <function name='xmlNanoFTPNewCtxt' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Allocate and initialize a new FTP context.</info>
      <return type='void *' info='an FTP context or NULL in case of error.'/>
      <arg name='URL' type='const char *' info='The URL used to initialize the context'/>
    </function>
    <function name='xmlNanoFTPOpen' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Start to fetch the given ftp:// resource</info>
      <return type='void *' info='an FTP context, or NULL'/>
      <arg name='URL' type='const char *' info='the URL to the resource'/>
    </function>
    <function name='xmlNanoFTPProxy' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Setup the FTP proxy informations. This can also be done by using ftp_proxy ftp_proxy_user and ftp_proxy_password environment variables.</info>
      <return type='void'/>
      <arg name='host' type='const char *' info='the proxy host name'/>
      <arg name='port' type='int' info='the proxy port'/>
      <arg name='user' type='const char *' info='the proxy user name'/>
      <arg name='passwd' type='const char *' info='the proxy password'/>
      <arg name='type' type='int' info='the type of proxy 1 for using SITE, 2 for USER a@b'/>
    </function>
    <function name='xmlNanoFTPQuit' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Send a QUIT command to the server</info>
      <return type='int' info='-1 in case of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPRead' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>This function tries to read @len bytes from the existing FTP connection and saves them in @dest. This is a blocking call.</info>
      <return type='int' info='the number of byte read. 0 is an indication of an end of connection. -1 indicates a parameter error.'/>
      <arg name='ctx' type='void *' info='the FTP context'/>
      <arg name='dest' type='void *' info='a buffer'/>
      <arg name='len' type='int' info='the buffer length'/>
    </function>
    <function name='xmlNanoFTPScanProxy' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>(Re)Initialize the FTP Proxy context by parsing the URL and finding the protocol host port it indicates. Should be like ftp://myproxy/ or ftp://myproxy:3128/ A NULL URL cleans up proxy informations.</info>
      <return type='void'/>
      <arg name='URL' type='const char *' info='The proxy URL used to initialize the proxy context'/>
    </function>
    <function name='xmlNanoFTPUpdateURL' file='nanoftp' module='nanoftp'>
      <cond>defined(LIBXML_FTP_ENABLED)</cond>
      <info>Update an FTP context by parsing the URL and finding new path it indicates. If there is an error in the protocol, hostname, port or other information, the error is raised. It indicates a new connection has to be established.</info>
      <return type='int' info='0 if Ok, -1 in case of error (other host).'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
      <arg name='URL' type='const char *' info='The URL used to update the context'/>
    </function>
    <function name='xmlNanoHTTPAuthHeader' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>Get the authentication header of an HTTP context</info>
      <return type='const char *' info='the stashed value of the WWW-Authenticate or Proxy-Authenticate header.'/>
      <arg name='ctx' type='void *' info='the HTTP context'/>
    </function>
    <function name='xmlNanoHTTPCleanup' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>Cleanup the HTTP protocol layer.</info>
      <return type='void'/>
    </function>
    <function name='xmlNanoHTTPClose' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>This function closes an HTTP context, it ends up the connection and free all data related to it.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the HTTP context'/>
    </function>
    <function name='xmlNanoHTTPContentLength' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>Provides the specified content length from the HTTP header.</info>
      <return type='int' info='the specified content length from the HTTP header.  Note that a value of -1 indicates that the content length element was not included in the response header.'/>
      <arg name='ctx' type='void *' info='the HTTP context'/>
    </function>
    <function name='xmlNanoHTTPEncoding' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>Provides the specified encoding if specified in the HTTP headers.</info>
      <return type='const char *' info='the specified encoding or NULL if not available'/>
      <arg name='ctx' type='void *' info='the HTTP context'/>
    </function>
    <function name='xmlNanoHTTPFetch' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>This function try to fetch the indicated resource via HTTP GET and save it&apos;s content in the file.</info>
      <return type='int' info='-1 in case of failure, 0 incase of success. The contentType, if provided must be freed by the caller'/>
      <arg name='URL' type='const char *' info='The URL to load'/>
      <arg name='filename' type='const char *' info='the filename where the content should be saved'/>
      <arg name='contentType' type='char **' info='if available the Content-Type information will be returned at that location'/>
    </function>
    <function name='xmlNanoHTTPInit' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>Initialize the HTTP protocol layer. Currently it just checks for proxy informations</info>
      <return type='void'/>
    </function>
    <function name='xmlNanoHTTPMethod' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>This function try to open a connection to the indicated resource via HTTP using the given @method, adding the given extra headers and the input buffer for the request content.</info>
      <return type='void *' info='NULL in case of failure, otherwise a request handler. The contentType, if provided must be freed by the caller'/>
      <arg name='URL' type='const char *' info='The URL to load'/>
      <arg name='method' type='const char *' info='the HTTP method to use'/>
      <arg name='input' type='const char *' info='the input string if any'/>
      <arg name='contentType' type='char **' info='the Content-Type information IN and OUT'/>
      <arg name='headers' type='const char *' info='the extra headers'/>
      <arg name='ilen' type='int' info='input length'/>
    </function>
    <function name='xmlNanoHTTPMethodRedir' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>This function try to open a connection to the indicated resource via HTTP using the given @method, adding the given extra headers and the input buffer for the request content.</info>
      <return type='void *' info='NULL in case of failure, otherwise a request handler. The contentType, or redir, if provided must be freed by the caller'/>
      <arg name='URL' type='const char *' info='The URL to load'/>
      <arg name='method' type='const char *' info='the HTTP method to use'/>
      <arg name='input' type='const char *' info='the input string if any'/>
      <arg name='contentType' type='char **' info='the Content-Type information IN and OUT'/>
      <arg name='redir' type='char **' info='the redirected URL OUT'/>
      <arg name='headers' type='const char *' info='the extra headers'/>
      <arg name='ilen' type='int' info='input length'/>
    </function>
    <function name='xmlNanoHTTPMimeType' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>Provides the specified Mime-Type if specified in the HTTP headers.</info>
      <return type='const char *' info='the specified Mime-Type or NULL if not available'/>
      <arg name='ctx' type='void *' info='the HTTP context'/>
    </function>
    <function name='xmlNanoHTTPOpen' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>This function try to open a connection to the indicated resource via HTTP GET.</info>
      <return type='void *' info='NULL in case of failure, otherwise a request handler. The contentType, if provided must be freed by the caller'/>
      <arg name='URL' type='const char *' info='The URL to load'/>
      <arg name='contentType' type='char **' info='if available the Content-Type information will be returned at that location'/>
    </function>
    <function name='xmlNanoHTTPOpenRedir' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>This function try to open a connection to the indicated resource via HTTP GET.</info>
      <return type='void *' info='NULL in case of failure, otherwise a request handler. The contentType, if provided must be freed by the caller'/>
      <arg name='URL' type='const char *' info='The URL to load'/>
      <arg name='contentType' type='char **' info='if available the Content-Type information will be returned at that location'/>
      <arg name='redir' type='char **' info='if available the redirected URL will be returned'/>
    </function>
    <function name='xmlNanoHTTPRead' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>This function tries to read @len bytes from the existing HTTP connection and saves them in @dest. This is a blocking call.</info>
      <return type='int' info='the number of byte read. 0 is an indication of an end of connection. -1 indicates a parameter error.'/>
      <arg name='ctx' type='void *' info='the HTTP context'/>
      <arg name='dest' type='void *' info='a buffer'/>
      <arg name='len' type='int' info='the buffer length'/>
    </function>
    <function name='xmlNanoHTTPRedir' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>Provides the specified redirection URL if available from the HTTP header.</info>
      <return type='const char *' info='the specified redirection URL or NULL if not redirected.'/>
      <arg name='ctx' type='void *' info='the HTTP context'/>
    </function>
    <function name='xmlNanoHTTPReturnCode' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>Get the latest HTTP return code received</info>
      <return type='int' info='the HTTP return code for the request.'/>
      <arg name='ctx' type='void *' info='the HTTP context'/>
    </function>
    <function name='xmlNanoHTTPSave' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>This function saves the output of the HTTP transaction to a file It closes and free the context at the end</info>
      <return type='int' info='-1 in case of failure, 0 incase of success.'/>
      <arg name='ctxt' type='void *' info='the HTTP context'/>
      <arg name='filename' type='const char *' info='the filename where the content should be saved'/>
    </function>
    <function name='xmlNanoHTTPScanProxy' file='nanohttp' module='nanohttp'>
      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
      <info>(Re)Initialize the HTTP Proxy context by parsing the URL and finding the protocol host port it indicates. Should be like http://myproxy/ or http://myproxy:3128/ A NULL URL cleans up proxy informations.</info>
      <return type='void'/>
      <arg name='URL' type='const char *' info='The proxy URL used to initialize the proxy context'/>
    </function>
    <function name='xmlNewAutomata' file='xmlautomata' module='xmlregexp'>
      <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
      <info>Create a new automata</info>
      <return type='xmlAutomataPtr' info='the new object or NULL in case of failure'/>
    </function>
    <function name='xmlNewCDataBlock' file='tree' module='tree'>
      <info>Creation of a new node containing a CDATA block.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='content' type='const xmlChar *' info='the CDATA block content content'/>
      <arg name='len' type='int' info='the length of the block'/>
    </function>
    <function name='xmlNewCatalog' file='catalog' module='catalog'>
      <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
      <info>create a new Catalog.</info>
      <return type='xmlCatalogPtr' info='the xmlCatalogPtr or NULL in case of error'/>
      <arg name='sgml' type='int' info='should this create an SGML catalog'/>
    </function>
    <function name='xmlNewCharEncodingHandler' file='encoding' module='encoding'>
      <info>Create and registers an xmlCharEncodingHandler.</info>
      <return type='xmlCharEncodingHandlerPtr' info='the xmlCharEncodingHandlerPtr created (or NULL in case of error).'/>
      <arg name='name' type='const char *' info='the encoding name, in UTF-8 format (ASCII actually)'/>
      <arg name='input' type='xmlCharEncodingInputFunc' info='the xmlCharEncodingInputFunc to read that encoding'/>
      <arg name='output' type='xmlCharEncodingOutputFunc' info='the xmlCharEncodingOutputFunc to write that encoding'/>
    </function>
    <function name='xmlNewCharRef' file='tree' module='tree'>
      <info>Creation of a new character reference node.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='name' type='const xmlChar *' info='the char ref string, starting with # or &quot;&amp;# ... ;&quot;'/>
    </function>
    <function name='xmlNewChild' file='tree' module='tree'>
      <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
      <info>Creation of a new child element, added at the end of @parent children list. @ns and @content parameters are optional (NULL). If @ns is NULL, the newly created element inherits the namespace of @parent. If @content is non NULL, a child list containing the TEXTs and ENTITY_REFs node will be created. NOTE: @content is supposed to be a piece of XML CDATA, so it allows entity references. XML special chars must be escaped first by using xmlEncodeEntitiesReentrant(), or xmlNewTextChild() should be used.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
      <arg name='ns' type='xmlNsPtr' info='a namespace if any'/>
      <arg name='name' type='const xmlChar *' info='the name of the child'/>
      <arg name='content' type='const xmlChar *' info='the XML content of the child if any.'/>
    </function>
    <function name='xmlNewComment' file='tree' module='tree'>
      <info>Creation of a new node containing a comment.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='content' type='const xmlChar *' info='the comment content'/>
    </function>
    <function name='xmlNewDoc' file='tree' module='tree'>
      <info>Creates a new XML document</info>
      <return type='xmlDocPtr' info='a new document'/>
      <arg name='version' type='const xmlChar *' info='xmlChar string giving the version of XML &quot;1.0&quot;'/>
    </function>
    <function name='xmlNewDocComment' file='tree' module='tree'>
      <info>Creation of a new node containing a comment within a document.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='content' type='const xmlChar *' info='the comment content'/>
    </function>
    <function name='xmlNewDocElementContent' file='valid' module='valid'>
      <info>Allocate an element content structure for the document.</info>
      <return type='xmlElementContentPtr' info='NULL if not, otherwise the new element content structure'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='name' type='const xmlChar *' info='the subelement name or NULL'/>
      <arg name='type' type='xmlElementContentType' info='the type of element content decl'/>
    </function>
    <function name='xmlNewDocFragment' file='tree' module='tree'>
      <cond>defined(LIBXML_TREE_ENABLED)</cond>
      <info>Creation of a new Fragment node.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document owning the fragment'/>
    </function>
    <function name='xmlNewDocNode' file='tree' module='tree'>
      <info>Creation of a new node element within a document. @ns and @content are optional (NULL). NOTE: @content is supposed to be a piece of XML CDATA, so it allow entities references, but XML special chars need to be escaped first by using xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you don&apos;t need entities support.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='ns' type='xmlNsPtr' info='namespace if any'/>
      <arg name='name' type='const xmlChar *' info='the node name'/>
      <arg name='content' type='const xmlChar *' info='the XML text content if any'/>
    </function>
    <function name='xmlNewDocNodeEatName' file='tree' module='tree'>
      <info>Creation of a new node element within a document. @ns and @content are optional (NULL). NOTE: @content is supposed to be a piece of XML CDATA, so it allow entities references, but XML special chars need to be escaped first by using xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you don&apos;t need entities support.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='ns' type='xmlNsPtr' info='namespace if any'/>
      <arg name='name' type='xmlChar *' info='the node name'/>
      <arg name='content' type='const xmlChar *' info='the XML text content if any'/>
    </function>
    <function name='xmlNewDocPI' file='tree' module='tree'>
      <info>Creation of a processing instruction element.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the target document'/>
      <arg name='name' type='const xmlChar *' info='the processing instruction name'/>
      <arg name='content' type='const xmlChar *' info='the PI content'/>
    </function>
    <function name='xmlNewDocProp' file='tree' module='tree'>
      <info>Create a new property carried by a document.</info>
      <return type='xmlAttrPtr' info='a pointer to the attribute'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='name' type='const xmlChar *' info='the name of the attribute'/>
      <arg name='value' type='const xmlChar *' info='the value of the attribute'/>
    </function>
    <function name='xmlNewDocRawNode' file='tree' module='tree'>
      <cond>defined(LIBXML_TREE_ENABLED)</cond>
      <info>Creation of a new node element within a document. @ns and @content are optional (NULL).</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='ns' type='xmlNsPtr' info='namespace if any'/>
      <arg name='name' type='const xmlChar *' info='the node name'/>
      <arg name='content' type='const xmlChar *' info='the text content if any'/>
    </function>
    <function name='xmlNewDocText' file='tree' module='tree'>
      <info>Creation of a new text node within a document.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='const xmlDoc *' info='the document'/>
      <arg name='content' type='const xmlChar *' info='the text content'/>
    </function>
    <function name='xmlNewDocTextLen' file='tree' module='tree'>
      <info>Creation of a new text node with an extra content length parameter. The text node pertain to a given document.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='content' type='const xmlChar *' info='the text content'/>
      <arg name='len' type='int' info='the text len.'/>
    </function>
    <function name='xmlNewDtd' file='tree' module='tree'>
      <info>Creation of a new DTD for the external subset. To create an internal subset, use xmlCreateIntSubset().</info>
      <return type='xmlDtdPtr' info='a pointer to the new DTD structure'/>
      <arg name='doc' type='xmlDocPtr' info='the document pointer'/>
      <arg name='name' type='const xmlChar *' info='the DTD name'/>
      <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
      <arg name='SystemID' type='const xmlChar *' info='the system ID'/>
    </function>
    <function name='xmlNewElementContent' file='valid' module='valid'>
      <info>Allocate an element content structure. Deprecated in favor of xmlNewDocElementContent</info>
      <return type='xmlElementContentPtr' info='NULL if not, otherwise the new element content structure'/>
      <arg name='name' type='const xmlChar *' info='the subelement name or NULL'/>
      <arg name='type' type='xmlElementContentType' info='the type of element content decl'/>
    </function>
    <function name='xmlNewEntity' file='entities' module='entities'>
      <info>Create a new entity, this differs from xmlAddDocEntity() that if the document is NULL or has no internal subset defined, then an unlinked entity structure will be returned, it is then the responsability of the caller to link it to the document later or free it when not needed anymore.</info>
      <return type='xmlEntityPtr' info='a pointer to the entity or NULL in case of error'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='name' type='const xmlChar *' info='the entity name'/>
      <arg name='type' type='int' info='the entity type XML_xxx_yyy_ENTITY'/>
      <arg name='ExternalID' type='const xmlChar *' info='the entity external ID if available'/>
      <arg name='SystemID' type='const xmlChar *' info='the entity system ID if available'/>
      <arg name='content' type='const xmlChar *' info='the entity content'/>
    </function>
    <function name='xmlNewEntityInputStream' file='parserInternals' module='parserInternals'>
