| Gnome XML Library Reference Manual | |||
|---|---|---|---|
| <<< Previous Page | Home | Up | Next Page >>> |
struct xmlXPathContext {
xmlDocPtr doc; /* The current document */
xmlNodePtr node; /* The current node */
int nb_variables_unused; /* unused (hash table) */
int max_variables_unused; /* unused (hash table) */
xmlHashTablePtr varHash; /* Hash table 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_unused; /* unused (hash table) */
int max_funcs_unused; /* unused (hash table) */
xmlHashTablePtr funcHash; /* Hash table of defined funcs */
int nb_axis; /* number of defined axis */
int max_axis; /* max number of axis */
xmlXPathAxisPtr axis; /* Array of defined axis */
/* the namespace nodes of the context node */
xmlNsPtr *namespaces; /* Array of namespaces */
int nsNr; /* number of namespace in scope */
void *user; /* function to free */
/* extra variables */
int contextSize; /* the context size */
int proximityPosition; /* the proximity position */
/* extra stuff for XPointer */
int xptr; /* it this an XPointer context */
xmlNodePtr here; /* for here() */
xmlNodePtr origin; /* for origin() */
/* the set of namespace declarations in scope for the expression */
xmlHashTablePtr nsHash; /* The namespaces hash table */
void *varLookupFunc; /* variable lookup func */
void *varLookupData; /* variable lookup data */
/* Possibility to link in an extra item */
void *extra; /* needed for XSLT */
}; |
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 */
}; |
typedef enum {
XPATH_EXPRESSION_OK = 0,
XPATH_NUMBER_ERROR,
XPATH_UNFINISHED_LITERAL_ERROR,
XPATH_START_LITERAL_ERROR,
XPATH_VARIABLE_REF_ERROR,
XPATH_UNDEF_VARIABLE_ERROR,
XPATH_INVALID_PREDICATE_ERROR,
XPATH_EXPR_ERROR,
XPATH_UNCLOSED_ERROR,
XPATH_UNKNOWN_FUNC_ERROR,
XPATH_INVALID_OPERAND,
XPATH_INVALID_TYPE,
XPATH_INVALID_ARITY,
XPATH_INVALID_CTXT_SIZE,
XPATH_INVALID_CTXT_POSITION,
XPATH_MEMORY_ERROR,
XPTR_SYNTAX_ERROR,
XPTR_RESOURCE_ERROR,
XPTR_SUB_RESOURCE_ERROR,
XPATH_UNDEF_PREFIX_ERROR
} xmlXPathError; |
Create a new xmlNodeSetPtr of type double and of value val
struct xmlNodeSet {
int nodeNr; /* number of nodes in the set */
int nodeMax; /* size of the array as allocated */
xmlNodePtr *nodeTab; /* array of nodes in no particular order */
}; |
typedef enum {
XPATH_UNDEFINED = 0,
XPATH_NODESET = 1,
XPATH_BOOLEAN = 2,
XPATH_NUMBER = 3,
XPATH_STRING = 4,
XPATH_POINT = 5,
XPATH_RANGE = 6,
XPATH_LOCATIONSET = 7,
XPATH_USERS = 8,
XPATH_XSLT_TREE = 9 /* An XSLT value tree, non modifiable */
} xmlXPathObjectType; |
struct xmlXPathObject {
xmlXPathObjectType type;
xmlNodeSetPtr nodesetval;
int boolval;
double floatval;
xmlChar *stringval;
void *user;
int index;
void *user2;
int index2;
}; |
int (*xmlXPathConvertFunc) (xmlXPathObjectPtr obj, int type); |
| obj : | |
| type : | |
| Returns : |
struct xmlXPathType {
const xmlChar *name; /* the type name */
xmlXPathConvertFunc func; /* the conversion function */
}; |
struct xmlXPathVariable {
const xmlChar *name; /* the variable name */
xmlXPathObjectPtr value; /* the value */
}; |
void (*xmlXPathEvalFunc) (xmlXPathParserContextPtr ctxt, int nargs); |
| ctxt : | |
| nargs : |
struct xmlXPathFunct {
const xmlChar *name; /* the function name */
xmlXPathEvalFunc func; /* the evaluation function */
}; |
xmlXPathObjectPtr (*xmlXPathAxisFunc) (xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr cur); |
| ctxt : | |
| cur : | |
| Returns : |
struct xmlXPathAxis {
const xmlChar *name; /* the axis name */
xmlXPathAxisFunc func; /* the search function */
}; |
void (*xmlXPathFunction) (xmlXPathParserContextPtr ctxt, int nargs); |
| ctxt : | |
| nargs : |
xmlXPathContextPtr xmlXPathNewContext (xmlDocPtr doc); |
Create a new xmlXPathContext
| doc : | the XML document |
| Returns : | the xmlXPathContext just allocated. |
void xmlXPathFreeContext (xmlXPathContextPtr ctxt); |
Free up an xmlXPathContext
| ctxt : | the context to free |
xmlXPathObjectPtr xmlXPathEval (const xmlChar *str, xmlXPathContextPtr ctxt); |
Evaluate the XPath Location Path in the given context.
| str : | the XPath expression |
| ctxt : | |
| Returns : | the xmlXPathObjectPtr resulting from the eveluation or NULL. the caller has to free the object. |
xmlXPathObjectPtr xmlXPathEvalXPtrExpr (const xmlChar *str, xmlXPathContextPtr ctxt); |
| str : | |
| ctxt : | |
| Returns : |
void xmlXPathFreeObject (xmlXPathObjectPtr obj); |
Free up an xmlXPathObjectPtr object.
| obj : | the object to free |
xmlXPathObjectPtr xmlXPathEvalExpression (const xmlChar *str, xmlXPathContextPtr ctxt); |
Evaluate the XPath expression in the given context.
| str : | the XPath expression |
| ctxt : | the XPath context |
| Returns : | the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object. |
xmlNodeSetPtr xmlXPathNodeSetCreate (xmlNodePtr val); |
Create a new xmlNodeSetPtr of type double and of value val
| val : | an initial xmlNodePtr, or NULL |
| Returns : | the newly created object. |
void xmlXPathFreeNodeSetList (xmlXPathObjectPtr obj); |
Free up the xmlXPathObjectPtr obj but don't deallocate the objects in the list contrary to xmlXPathFreeObject().
| obj : | an existing NodeSetList object |
void xmlXPathFreeNodeSet (xmlNodeSetPtr obj); |
Free the NodeSet compound (not the actual nodes !).
| obj : | the xmlNodeSetPtr to free |
xmlXPathObjectPtr xmlXPathObjectCopy (xmlXPathObjectPtr val); |
allocate a new copy of a given object
| val : | the original object |
| Returns : | the newly created object. |
int xmlXPathCmpNodes (xmlNodePtr node1, xmlNodePtr node2); |
Compare two nodes w.r.t document order
| node1 : | the first node |
| node2 : | the second node |
| Returns : | -2 in case of error 1 if first point < second point, 0 if that's the same node, -1 otherwise |