struct xmlXPathContext {
xmlDocPtr doc; /* The current document */
xmlNodePtr node; /* The current node */
xmlNodeSetPtr nodelist; /* The current node list */
int nb_variables; /* number of defined variables */
int max_variables; /* max number of variables */
xmlXPathVariablePtr *variables; /* Array of defined variables */
int nb_types; /* number of defined types */
int max_types; /* max number of types */
xmlXPathTypePtr *types; /* Array of defined types */
int nb_funcs; /* number of defined funcs */
int max_funcs; /* max number of funcs */
xmlXPathFuncPtr *funcs; /* Array of defined funcs */
int nb_axis; /* number of defined axis */
int max_axis; /* max number of axis */
xmlXPathAxisPtr *axis; /* Array of defined axis */
/* Namespace traversal should be implemented with user */
xmlNsPtr *namespaces; /* The namespaces lookup */
int nsNr; /* the current Namespace index */
void *user; /* user defined extra info */
};
xmlXPathContextPtr
typedef xmlXPathContext *xmlXPathContextPtr;
struct xmlXPathParserContext
struct xmlXPathParserContext {
const xmlChar *cur; /* the current char being parsed */
const xmlChar *base; /* the full expression */
int error; /* error code */
xmlXPathContextPtr context; /* the evaluation context */
xmlXPathObjectPtr value; /* the current value */
int valueNr; /* number of values stacked */
int valueMax; /* max number of values stacked */
xmlXPathObjectPtr *valueTab; /* stack of values */
};
struct xmlNodeSet {
int nodeNr; /* # of node in the set */
int nodeMax; /* allocated space */
xmlNodePtr *nodeTab; /* array of nodes in no particular order */
};
xmlNodeSetPtr
typedef xmlNodeSet *xmlNodeSetPtr;
XPATH_UNDEFINED
#define XPATH_UNDEFINED 0
XPATH_NODESET
#define XPATH_NODESET 1
XPATH_BOOLEAN
#define XPATH_BOOLEAN 2
XPATH_NUMBER
#define XPATH_NUMBER 3
XPATH_STRING
#define XPATH_STRING 4
XPATH_USERS
#define XPATH_USERS 5
struct xmlXPathObject
struct xmlXPathObject {
int type;
xmlNodeSetPtr nodesetval;
int boolval;
double floatval;
xmlChar *stringval;
void *user;
};