38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Summary: XML Path Language implementation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Description: API for the XML Path Language implementation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * XML Path Language implementation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * XPath is a language for addressing parts of an XML document,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * designed to be used by both XSLT and XPointer
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * http://www.w3.org/TR/xpath
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Implements
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * W3C Recommendation 16 November 1999
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * http://www.w3.org/TR/1999/REC-xpath-19991116
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Copy: See Copyright for the status of this software.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Author: Daniel Veillard
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifndef __XML_XPATH_H__
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define __XML_XPATH_H__
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/xmlversion.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef LIBXML_XPATH_ENABLED
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/xmlerror.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/tree.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/hash.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* LIBXML_XPATH_ENABLED */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef __cplusplus
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncextern "C" {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef LIBXML_XPATH_ENABLED
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef struct _xmlXPathContext xmlXPathContext;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlXPathContext *xmlXPathContextPtr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef struct _xmlXPathParserContext xmlXPathParserContext;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlXPathParserContext *xmlXPathParserContextPtr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * The set of XPath error codes.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef enum {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_EXPRESSION_OK = 0,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_NUMBER_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_UNFINISHED_LITERAL_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_START_LITERAL_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_VARIABLE_REF_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_UNDEF_VARIABLE_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_INVALID_PREDICATE_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_EXPR_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_UNCLOSED_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_UNKNOWN_FUNC_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_INVALID_OPERAND,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_INVALID_TYPE,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_INVALID_ARITY,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_INVALID_CTXT_SIZE,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_INVALID_CTXT_POSITION,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_MEMORY_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPTR_SYNTAX_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPTR_RESOURCE_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPTR_SUB_RESOURCE_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_UNDEF_PREFIX_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_ENCODING_ERROR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_INVALID_CHAR_ERROR,
2ffab3589d8afc899993678567d1a7c339ac3f1avboxsync XPATH_INVALID_CTXT,
2ffab3589d8afc899993678567d1a7c339ac3f1avboxsync XPATH_STACK_ERROR
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync} xmlXPathError;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * A node-set (an unordered collection of nodes without duplicates).
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef struct _xmlNodeSet xmlNodeSet;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlNodeSet *xmlNodeSetPtr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstruct _xmlNodeSet {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int nodeNr; /* number of nodes in the set */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int nodeMax; /* size of the array as allocated */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodePtr *nodeTab; /* array of nodes in no particular order */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* @@ with_ns to check wether namespace nodes should be looked at @@ */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync};
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * An expression is evaluated to yield an object, which
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * has one of the following four basic types:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * - node-set
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * - boolean
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * - number
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * - string
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @@ XPointer will add more types !
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef enum {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_UNDEFINED = 0,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_NODESET = 1,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_BOOLEAN = 2,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_NUMBER = 3,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_STRING = 4,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_POINT = 5,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_RANGE = 6,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_LOCATIONSET = 7,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_USERS = 8,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XPATH_XSLT_TREE = 9 /* An XSLT value tree, non modifiable */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync} xmlXPathObjectType;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef struct _xmlXPathObject xmlXPathObject;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlXPathObject *xmlXPathObjectPtr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstruct _xmlXPathObject {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathObjectType type;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodeSetPtr nodesetval;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int boolval;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync double floatval;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlChar *stringval;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *user;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int index;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *user2;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int index2;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync};
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlXPathConvertFunc:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @obj: an XPath object
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @type: the number of the target type
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * A conversion function is associated to a type and used to cast
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * the new type to primitive values.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns -1 in case of error, 0 otherwise
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef int (*xmlXPathConvertFunc) (xmlXPathObjectPtr obj, int type);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Extra type: a name and a conversion function.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef struct _xmlXPathType xmlXPathType;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlXPathType *xmlXPathTypePtr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstruct _xmlXPathType {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *name; /* the type name */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathConvertFunc func; /* the conversion function */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync};
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Extra variable: a name and a value.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef struct _xmlXPathVariable xmlXPathVariable;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlXPathVariable *xmlXPathVariablePtr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstruct _xmlXPathVariable {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *name; /* the variable name */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathObjectPtr value; /* the value */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync};
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlXPathEvalFunc:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: an XPath parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @nargs: the number of arguments passed to the function
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * An XPath evaluation function, the parameters are on the XPath context stack.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int nargs);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Extra function: a name and a evaluation function.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef struct _xmlXPathFunct xmlXPathFunct;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlXPathFunct *xmlXPathFuncPtr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstruct _xmlXPathFunct {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *name; /* the function name */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathEvalFunc func; /* the evaluation function */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync};
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlXPathAxisFunc:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: the XPath interpreter context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @cur: the previous node being explored on that axis
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * An axis traversal function. To traverse an axis, the engine calls
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * the first time with cur == NULL and repeat until the function returns
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * NULL indicating the end of the axis traversal.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns the next node in that axis or NULL if at the end of the axis.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlXPathObjectPtr (*xmlXPathAxisFunc) (xmlXPathParserContextPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathObjectPtr cur);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Extra axis: a name and an axis function.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef struct _xmlXPathAxis xmlXPathAxis;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlXPathAxis *xmlXPathAxisPtr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstruct _xmlXPathAxis {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *name; /* the axis name */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathAxisFunc func; /* the search function */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync};
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlXPathFunction:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: the XPath interprestation context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @nargs: the number of arguments
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * An XPath function.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * The arguments (if any) are popped out from the context stack
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * and the result is pushed on the stack.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef void (*xmlXPathFunction) (xmlXPathParserContextPtr ctxt, int nargs);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Function and Variable Lookup.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlXPathVariableLookupFunc:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: an XPath context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: name of the variable
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ns_uri: the namespace name hosting this variable
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Prototype for callbacks used to plug variable lookup in the XPath
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * engine.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns the XPath object value or NULL if not found.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlXPathObjectPtr (*xmlXPathVariableLookupFunc) (void *ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *name,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *ns_uri);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlXPathFuncLookupFunc:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: an XPath context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: name of the function
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ns_uri: the namespace name hosting this function
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Prototype for callbacks used to plug function lookup in the XPath
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * engine.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns the XPath function or NULL if not found.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlXPathFunction (*xmlXPathFuncLookupFunc) (void *ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *name,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *ns_uri);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlXPathFlags:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Flags for XPath engine compilation and runtime
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * XML_XPATH_CHECKNS:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * check namespaces at compilation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define XML_XPATH_CHECKNS (1<<0)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * XML_XPATH_NOVAR:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * forbid variables in expression
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define XML_XPATH_NOVAR (1<<1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlXPathContext:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Expression evaluation occurs with respect to a context.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * he context consists of:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * - a node (the context node)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * - a node list (the context node list)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * - a set of variable bindings
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * - a function library
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * - the set of namespace declarations in scope for the expression
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Following the switch to hash tables, this need to be trimmed up at
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * the next binary incompatible release.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstruct _xmlXPathContext {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlDocPtr doc; /* The current document */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodePtr node; /* The current node */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int nb_variables_unused; /* unused (hash table) */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int max_variables_unused; /* unused (hash table) */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlHashTablePtr varHash; /* Hash table of defined variables */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int nb_types; /* number of defined types */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int max_types; /* max number of types */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathTypePtr types; /* Array of defined types */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int nb_funcs_unused; /* unused (hash table) */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int max_funcs_unused; /* unused (hash table) */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlHashTablePtr funcHash; /* Hash table of defined funcs */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int nb_axis; /* number of defined axis */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int max_axis; /* max number of axis */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathAxisPtr axis; /* Array of defined axis */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* the namespace nodes of the context node */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNsPtr *namespaces; /* Array of namespaces */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int nsNr; /* number of namespace in scope */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *user; /* function to free */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* extra variables */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int contextSize; /* the context size */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int proximityPosition; /* the proximity position */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* extra stuff for XPointer */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int xptr; /* is this an XPointer context? */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodePtr here; /* for here() */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodePtr origin; /* for origin() */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* the set of namespace declarations in scope for the expression */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlHashTablePtr nsHash; /* The namespaces hash table */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathVariableLookupFunc varLookupFunc;/* variable lookup func */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *varLookupData; /* variable lookup data */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* Possibility to link in an extra item */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *extra; /* needed for XSLT */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* The function name and URI when calling a function */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *function;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *functionURI;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* function lookup function and data */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathFuncLookupFunc funcLookupFunc;/* function lookup func */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *funcLookupData; /* function lookup data */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* temporary namespace lists kept for walking the namespace axis */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNsPtr *tmpNsList; /* Array of namespaces */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int tmpNsNr; /* number of namespaces in scope */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* error reporting mechanism */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *userData; /* user specific data block */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlStructuredErrorFunc error; /* the callback in case of errors */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlError lastError; /* the last error */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodePtr debugNode; /* the source node XSLT */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* dictionary */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlDictPtr dict; /* dictionary if any */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int flags; /* flags to control compilation */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* Cache for reusal of XPath objects */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *cache;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync};
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * The structure of a compiled expression form is not public.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef struct _xmlXPathCompExpr xmlXPathCompExpr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlXPathCompExpr *xmlXPathCompExprPtr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlXPathParserContext:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * An XPath parser context. It contains pure parsing informations,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * an xmlXPathContext, and the stack of objects.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstruct _xmlXPathParserContext {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *cur; /* the current char being parsed */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *base; /* the full expression */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int error; /* error code */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathContextPtr context; /* the evaluation context */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathObjectPtr value; /* the current value */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int valueNr; /* number of values stacked */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int valueMax; /* max number of values stacked */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathObjectPtr *valueTab; /* stack of values */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCompExprPtr comp; /* the precompiled expression */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int xptr; /* it this an XPointer expression */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodePtr ancestor; /* used for walking preceding axis */
2ffab3589d8afc899993678567d1a7c339ac3f1avboxsync
2ffab3589d8afc899993678567d1a7c339ac3f1avboxsync int valueFrame; /* used to limit Pop on the stack */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync};
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/************************************************************************
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Public API *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ************************************************************************/
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Objects and Nodesets handling
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBVAR double xmlXPathNAN;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBVAR double xmlXPathPINF;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBVAR double xmlXPathNINF;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/* These macros may later turn into functions */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlXPathNodeSetGetLength:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ns: a node-set
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Implement a functionality similar to the DOM NodeList.length.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns the number of nodes in the node-set.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define xmlXPathNodeSetGetLength(ns) ((ns) ? (ns)->nodeNr : 0)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlXPathNodeSetItem:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ns: a node-set
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @index: index of a node in the set
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Implements a functionality similar to the DOM NodeList.item().
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns the xmlNodePtr at the given @index in @ns or NULL if
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @index is out of range (0 to length-1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define xmlXPathNodeSetItem(ns, index) \
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ((((ns) != NULL) && \
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ((index) >= 0) && ((index) < (ns)->nodeNr)) ? \
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (ns)->nodeTab[(index)] \
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync : NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlXPathNodeSetIsEmpty:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ns: a node-set
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Checks whether @ns is empty or not.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns %TRUE if @ns is an empty node-set.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define xmlXPathNodeSetIsEmpty(ns) \
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (((ns) == NULL) || ((ns)->nodeNr == 0) || ((ns)->nodeTab == NULL))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathFreeObject (xmlXPathObjectPtr obj);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlNodeSetPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathNodeSetCreate (xmlNodePtr val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathFreeNodeSetList (xmlXPathObjectPtr obj);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathFreeNodeSet (xmlNodeSetPtr obj);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlXPathObjectPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathObjectCopy (xmlXPathObjectPtr val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCmpNodes (xmlNodePtr node1,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodePtr node2);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Conversion functions to basic types.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastNumberToBoolean (double val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastStringToBoolean (const xmlChar * val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastNodeSetToBoolean(xmlNodeSetPtr ns);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastToBoolean (xmlXPathObjectPtr val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN double XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastBooleanToNumber (int val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN double XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastStringToNumber (const xmlChar * val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN double XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastNodeToNumber (xmlNodePtr node);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN double XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastNodeSetToNumber (xmlNodeSetPtr ns);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN double XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastToNumber (xmlXPathObjectPtr val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlChar * XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastBooleanToString (int val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlChar * XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastNumberToString (double val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlChar * XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastNodeToString (xmlNodePtr node);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlChar * XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastNodeSetToString (xmlNodeSetPtr ns);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlChar * XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCastToString (xmlXPathObjectPtr val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlXPathObjectPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathConvertBoolean (xmlXPathObjectPtr val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlXPathObjectPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathConvertNumber (xmlXPathObjectPtr val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlXPathObjectPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathConvertString (xmlXPathObjectPtr val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Context handling.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlXPathContextPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathNewContext (xmlDocPtr doc);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathFreeContext (xmlXPathContextPtr ctxt);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathContextSetCache(xmlXPathContextPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int active,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int value,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int options);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Evaluation functions.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN long XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathOrderDocElems (xmlDocPtr doc);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlXPathObjectPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathEval (const xmlChar *str,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathContextPtr ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlXPathObjectPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathEvalExpression (const xmlChar *str,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathContextPtr ctxt);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathEvalPredicate (xmlXPathContextPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathObjectPtr res);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Separate compilation/evaluation entry points.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlXPathCompExprPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCompile (const xmlChar *str);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlXPathCompExprPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCtxtCompile (xmlXPathContextPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *str);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlXPathObjectPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCompiledEval (xmlXPathCompExprPtr comp,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathContextPtr ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathContextPtr ctxt);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathFreeCompExpr (xmlXPathCompExprPtr comp);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* LIBXML_XPATH_ENABLED */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathInit (void);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathIsNaN (double val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlXPathIsInf (double val);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef __cplusplus
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED*/
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* ! __XML_XPATH_H__ */