### ----------------------------------------------------
### -- LibXML
### -- Licenses: Artistic-2.0
### -- Authors: David Warring
### -- File: etc/libxml2-api.xml
### ----------------------------------------------------
### -- Chunk 42 of 44
 <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='active' type='int' info='enables/disables (creates/frees) the cache'/>
      <arg name='value' type='int' info='a value with semantics dependant on @options'/>
      <arg name='options' type='int' info='options (currently only the value 0 is used)'/>
    </function>
    <function name='xmlXPathConvertBoolean' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Converts an existing object to its boolean() equivalent</info>
      <return type='xmlXPathObjectPtr' info='the new object, the old one is freed (or the operation is done directly on @val)'/>
      <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
    </function>
    <functype name='xmlXPathConvertFunc' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>A conversion function is associated to a type and used to cast the new type to primitive values.</info>
      <return type='int' info='-1 in case of error, 0 otherwise'/>
      <arg name='obj' type='xmlXPathObjectPtr' info='an XPath object'/>
      <arg name='type' type='int' info='the number of the target type'/>
    </functype>
    <function name='xmlXPathConvertNumber' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Converts an existing object to its number() equivalent</info>
      <return type='xmlXPathObjectPtr' info='the new object, the old one is freed (or the operation is done directly on @val)'/>
      <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
    </function>
    <function name='xmlXPathConvertString' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Converts an existing object to its string() equivalent</info>
      <return type='xmlXPathObjectPtr' info='the new object, the old one is freed (or the operation is done directly on @val)'/>
      <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
    </function>
    <function name='xmlXPathCountFunction' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implement the count() XPath function number count(node-set)</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathCtxtCompile' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Compile an XPath expression</info>
      <return type='xmlXPathCompExprPtr' info='the xmlXPathCompExprPtr resulting from the compilation or NULL. the caller has to free the object.'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='an XPath context'/>
      <arg name='str' type='const xmlChar *' info='the XPath expression'/>
    </function>
    <function name='xmlXPathDebugDumpCompExpr' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dumps the tree of the compiled XPath expression.</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='comp' type='xmlXPathCompExprPtr' info='the precompiled XPath expression'/>
      <arg name='depth' type='int' info='the indentation level.'/>
    </function>
    <function name='xmlXPathDebugDumpObject' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dump the content of the object for debugging purposes</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * to dump the output'/>
      <arg name='cur' type='xmlXPathObjectPtr' info='the object to inspect'/>
      <arg name='depth' type='int' info='indentation level'/>
    </function>
    <function name='xmlXPathDifference' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the EXSLT - Sets difference() function: node-set set:difference (node-set, node-set)</info>
      <return type='xmlNodeSetPtr' info='the difference between the two node sets, or nodes1 if nodes2 is empty'/>
      <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
      <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathDistinct' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the EXSLT - Sets distinct() function: node-set set:distinct (node-set) @nodes is sorted by document order, then #exslSetsDistinctSorted is called with the sorted node-set</info>
      <return type='xmlNodeSetPtr' info='a subset of the nodes contained in @nodes, or @nodes if it is empty'/>
      <arg name='nodes' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathDistinctSorted' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the EXSLT - Sets distinct() function: node-set set:distinct (node-set)</info>
      <return type='xmlNodeSetPtr' info='a subset of the nodes contained in @nodes, or @nodes if it is empty'/>
      <arg name='nodes' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
    </function>
    <function name='xmlXPathDivValues' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implement the div operation on XPath objects @arg1 / @arg2: The numeric operators convert their operands to numbers as if by calling the number function.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathEqualValues' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implement the equal operation on XPath objects content: @arg1 == @arg2</info>
      <return type='int' info='0 or 1 depending on the results of the test.'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathErr' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Handle an XPath error</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='a XPath parser context'/>
      <arg name='error' type='int' info='the error code'/>
    </function>
    <function name='xmlXPathEval' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Evaluate the XPath Location Path in the given context.</info>
      <return type='xmlXPathObjectPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
      <arg name='str' type='const xmlChar *' info='the XPath expression'/>
      <arg name='ctx' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathEvalExpr' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Parse and evaluate an XPath expression in the given context, then push the result on the context stack</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathEvalExpression' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Alias for xmlXPathEval().</info>
      <return type='xmlXPathObjectPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
      <arg name='str' type='const xmlChar *' info='the XPath expression'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <functype name='xmlXPathEvalFunc' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>An XPath evaluation function, the parameters are on the XPath context stack.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
      <arg name='nargs' type='int' info='the number of arguments passed to the function'/>
    </functype>
    <function name='xmlXPathEvalPredicate' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Evaluate a predicate result for the current node. A PredicateExpr is evaluated by evaluating the Expr and converting the result to a boolean. If the result is a number, the result will be converted to true if the number is equal to the position of the context node in the context node list (as returned by the position function) and will be converted to false otherwise; if the result is not a number, then the result will be converted as if by a call to the boolean function.</info>
      <return type='int' info='1 if predicate is true, 0 otherwise'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='res' type='xmlXPathObjectPtr' info='the Predicate Expression evaluation result'/>
    </function>
    <function name='xmlXPathEvaluatePredicateResult' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Evaluate a predicate result for the current node. A PredicateExpr is evaluated by evaluating the Expr and converting the result to a boolean. If the result is a number, the result will be converted to true if the number is equal to the position of the context node in the context node list (as returned by the position function) and will be converted to false otherwise; if the result is not a number, then the result will be converted as if by a call to the boolean function.</info>
      <return type='int' info='1 if predicate is true, 0 otherwise'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='res' type='xmlXPathObjectPtr' info='the Predicate Expression evaluation result'/>
    </function>
    <function name='xmlXPathFalseFunction' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implement the false() XPath function boolean false()</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathFloorFunction' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implement the floor() XPath function number floor(number) The floor function returns the largest (closest to positive infinity) number that is not greater than the argument and that is an integer.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathFreeCompExpr' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Free up the memory allocated by @comp</info>
      <return type='void'/>
      <arg name='comp' type='xmlXPathCompExprPtr' info='an XPATH comp'/>
    </function>
    <function name='xmlXPathFreeContext' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Free up an xmlXPathContext</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the context to free'/>
    </function>
    <function name='xmlXPathFreeNodeSet' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Free the NodeSet compound (not the actual nodes !).</info>
      <return type='void'/>
      <arg name='obj' type='xmlNodeSetPtr' info='the xmlNodeSetPtr to free'/>
    </function>
    <function name='xmlXPathFreeNodeSetList' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Free up the xmlXPathObjectPtr @obj but don&apos;t deallocate the objects in the list contrary to xmlXPathFreeObject().</info>
      <return type='void'/>
      <arg name='obj' type='xmlXPathObjectPtr' info='an existing NodeSetList object'/>
    </function>
    <function name='xmlXPathFreeObject' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Free up an xmlXPathObjectPtr object.</info>
      <return type='void'/>
      <arg name='obj' type='xmlXPathObjectPtr' info='the object to free'/>
    </function>
    <function name='xmlXPathFreeParserContext' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Free up an xmlXPathParserContext</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the context to free'/>
    </function>
    <functype name='xmlXPathFuncLookupFunc' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Prototype for callbacks used to plug function lookup in the XPath engine.</info>
      <return type='xmlXPathFunction' info='the XPath function or NULL if not found.'/>
      <arg name='ctxt' type='void *' info='an XPath context'/>
      <arg name='name' type='const xmlChar *' info='name of the function'/>
      <arg name='ns_uri' type='const xmlChar *' info='the namespace name hosting this function'/>
    </functype>
    <functype name='xmlXPathFunction' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>An XPath function. The arguments (if any) are popped out from the context stack and the result is pushed on the stack.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath interprestation context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </functype>
    <function name='xmlXPathFunctionLookup' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Search in the Function array of the context for the given function.</info>
      <return type='xmlXPathFunction' info='the xmlXPathFunction or NULL if not found'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='name' type='const xmlChar *' info='the function name'/>
    </function>
    <function name='xmlXPathFunctionLookupNS' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Search in the Function array of the context for the given function.</info>
      <return type='xmlXPathFunction' info='the xmlXPathFunction or NULL if not found'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='name' type='const xmlChar *' info='the function name'/>
      <arg name='ns_uri' type='const xmlChar *' info='the function namespace URI'/>
    </function>
    <function name='xmlXPathHasSameNodes' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the EXSLT - Sets has-same-nodes function: boolean set:has-same-node(node-set, node-set)</info>
      <return type='int' info='true (1) if @nodes1 shares any node with @nodes2, false (0) otherwise'/>
      <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
      <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathIdFunction' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implement the id() XPath function node-set id(object) The id function selects elements by their unique ID (see [5.2.1 Unique IDs]). When the argument to id is of type node-set, then the result is the union of the result of applying id to the string value of each of the nodes in the argument node-set. When the argument to id is of any other type, the argument is converted to a string as if by a call to the string function; the string is split into a whitespace-separated list of tokens (whitespace is any sequence of characters matching the production S); the result is a node-set containing the elements in the same document as the context node that have a unique ID equal to any of the tokens in the list.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathInit' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
      <info>Initialize the XPath environment  Does nothing but must be kept as public function.</info>
      <return type='void'/>
    </function>
    <function name='xmlXPathIntersection' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the EXSLT - Sets intersection() function: node-set set:intersection (node-set, node-set)</info>
      <return type='xmlNodeSetPtr' info='a node set comprising the nodes that are within both the node sets passed as arguments'/>
      <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
      <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathIsInf' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
      <info></info>
      <return type='int' info='1 if the value is +Infinite, -1 if -Infinite, 0 otherwise'/>
      <arg name='val' type='double' info='a double value'/>
    </function>
    <function name='xmlXPathIsNaN' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
      <info></info>
      <return type='int' info='1 if the value is a NaN, 0 otherwise'/>
      <arg name='val' type='double' info='a double value'/>
    </function>
    <function name='xmlXPathIsNodeType' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Is the name given a NodeType one.  [38]   NodeType ::=   &apos;comment&apos; | &apos;text&apos; | &apos;processing-instruction&apos; | &apos;node&apos;</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='name' type='const xmlChar *' info='a name string'/>
    </function>
    <function name='xmlXPathLangFunction' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implement the lang() XPath function boolean lang(string) The lang function returns true or false depending on whether the language of the context node as specified by xml:lang attributes is the same as or is a sublanguage of the language specified by the argument string. The language of the context node is determined by the value of the xml:lang attribute on the context node, or, if the context node has no xml:lang attribute, by the value of the xml:lang attribute on the nearest ancestor of the context node that has an xml:lang attribute. If there is no such attribute, then lang</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathLastFunction' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implement the last() XPath function number last() The last function returns the number of nodes in the context node list.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathLeading' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set) @nodes1 and @nodes2 are sorted by document order, then #exslSetsLeadingSorted is called.</info>
      <return type='xmlNodeSetPtr' info='the nodes in @nodes1 that precede the first node in @nodes2 in document order, @nodes1 if @nodes2 is NULL or empty or an empty node-set if @nodes1 doesn&apos;t contain @nodes2'/>
      <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
      <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathLeadingSorted' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set)</info>
      <return type='xmlNodeSetPtr' info='the nodes in @nodes1 that precede the first node in @nodes2 in document order, @nodes1 if @nodes2 is NULL or empty or an empty node-set if @nodes1 doesn&apos;t contain @nodes2'/>
      <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
      <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
    </function>
    <function name='xmlXPathLocalNameFunction' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implement the local-name() XPath function string local-name(node-set?) The local-name function returns a string containing the local part of the name of the node in the argument node-set that is first in document order. If the node-set is empty or the first node has no name, an empty string is returned. If the argument is omitted it defaults to the context node.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathModValues' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implement the mod operation on XPath objects: @arg1 / @arg2 The numeric operators convert their operands to numbers as if by calling the number function.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathMultValues' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implement the multiply operation on XPath objects: The numeric operators convert their operands to numbers as if by calling the number function.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathNamespaceURIFunction' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Implement the namespace-uri() XPath function string namespace-uri(node-set?) The namespace-uri function returns a string containing the namespace URI of the expanded name of the node in the argument node-set that is first in document order. If the node-set is empty, the first node has no name, or the expanded name has no namespace URI, an empty string is returned. If the argument is omitted it defaults to the context node.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathNewBoolean' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Create a new xmlXPathObjectPtr of type boolean and of value @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='int' info='the boolean value'/>
    </function>
    <function name='xmlXPathNewCString' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Create a new xmlXPathObjectPtr of type string and of value @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='const char *' info='the char * value'/>
    </function>
    <function name='xmlXPathNewContext' file='xpath' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Create a new xmlXPathContext</info>
      <return type='xmlXPathContextPtr' info='the xmlXPathContext just allocated. The caller will need to free it.'/>
      <arg name='doc' type='xmlDocPtr' info='the XML document'/>
    </function>
    <function name='xmlXPathNewFloat' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Create a new xmlXPathObjectPtr of type double and of value @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='double' info='the double value'/>
    </function>
    <function name='xmlXPathNewNodeSet' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Create a new xmlXPathObjectPtr of type NodeSet and initialize it with the single Node @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='xmlNodePtr' info='the NodePtr value'/>
    </function>
    <function name='xmlXPathNewNodeSetList' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Create a new xmlXPathObjectPtr of type NodeSet and initialize it with the Nodeset @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='xmlNodeSetPtr' info='an existing NodeSet'/>
    </function>
    <function name='xmlXPathNewParserContext' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Create a new xmlXPathParserContext</info>
      <return type='xmlXPathParserContextPtr' info='the xmlXPathParserContext just allocated.'/>
      <arg name='str' type='const xmlChar *' info='the XPath expression'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathNewString' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Create a new xmlXPathObjectPtr of type string and of value @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='const xmlChar *' info='the xmlChar * value'/>
    </function>
    <function name='xmlXPathNewValueTree' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Create a new xmlXPathObjectPtr of type Value Tree (XSLT) and initialize it with the tree root @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='xmlNodePtr' info='the NodePtr value'/>
    </function>
    <function name='xmlXPathNextAncestor' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Traversal function for the &quot;ancestor&quot; direction the ancestor axis contains the ancestors of the context node; the ancestors of the context node consist of the parent of context node and the parent&apos;s parent and so on; the nodes are ordered in reverse document order; thus the parent is the first node on the axis, and the parent&apos;s parent is the second node on the axis</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextAncestorOrSelf' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Traversal function for the &quot;ancestor-or-self&quot; direction he ancestor-or-self axis contains the context node and ancestors of the context node in reverse document order; thus the context node is the first node on the axis, and the context node&apos;s parent the second; parent here is defined the same as with the parent axis.</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextAttribute' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Traversal function for the &quot;attribute&quot; direction TODO: support DTD inherited default attributes</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current attribute in the traversal'/>
    </function>
    <function name='xmlXPathNextChild' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Traversal function for the &quot;child&quot; direction The child axis contains the children of the context node in document order.</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextDescendant' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Traversal function for the &quot;descendant&quot; direction the descendant axis contains the descendants of the context node in document order; a descendant is a child or a child of a child and so on.</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextDescendantOrSelf' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Traversal function for the &quot;descendant-or-self&quot; direction the descendant-or-self axis contains the context node and the descendants of the context node in document order; thus the context node is the first node on the axis, and the first child of the context node is the second node on the axis</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextFollowing' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Traversal function for the &quot;following&quot; direction The following axis contains all nodes in the same document as the context node that are after the context node in document order, excluding any descendants and excluding attribute nodes and namespace nodes; the nodes are ordered in document order</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextFollowingSibling' file='xpathInternals' module='xpath'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Traversal function for the &quot;following-sibling&quot; direction The following-sibling axis contains the following siblings of the context node in document order.</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </