blob: 44ad502633b5efcda82cc36c091ab06a61b1c799 [file] [log] [blame]
Daniel Veillardd4330462003-04-29 12:40:16 +00001<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>xpath</title><meta name="generator" content="DocBook XSL Stylesheets V1.58.1"><style xmlns="http://www.w3.org/TR/xhtml1/transitional" type="text/css">
3 .synopsis, .classsynopsis {
4 background: #eeeeee;
5 border: solid 1px #aaaaaa;
6 padding: 0.5em;
7 }
8 .programlisting {
9 background: #eeeeff;
10 border: solid 1px #aaaaff;
11 padding: 0.5em;
12 }
13 .variablelist {
14 padding: 4px;
15 margin-left: 3em;
16 }
17 .navigation {
18 background: #ffeeee;
19 border: solid 1px #ffaaaa;
20 margin-top: 0.5em;
21 margin-bottom: 0.5em;
22 }
23 .navigation a {
24 color: #770000;
25 }
26 .navigation a:visited {
27 color: #550000;
28 }
29 .navigation .title {
30 font-size: 200%;
31 }
32 </style><link rel="home" href="index.html" title="Gnome XML Library Reference Manual"><link rel="up" href="libxml-lib.html" title="Libxml Library Reference"><link rel="previous" href="libxml-HTMLtree.html" title="HTMLtree"><link rel="next" href="libxml-xpathInternals.html" title="xpathInternals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-HTMLtree.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></img></a></td><td><a accesskey="u" href="libxml-lib.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></img></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></img></a></td><th width="100%" align="center">Gnome XML Library Reference Manual</th><td><a accesskey="n" href="libxml-xpathInternals.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></img></a></td></tr></table><div class="refentry" lang="en"><a name="libxml-xpath"></a><div class="titlepage"></div><div class="refnamediv"><h2>xpath</h2><p>xpath &#8212; </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
Daniel Veillard1566d3a1999-07-15 14:24:29 +000033
Daniel Veillardd4330462003-04-29 12:40:16 +000034
35
36struct <a href="libxml-xpath.html#xmlXPathContext">xmlXPathContext</a>;
37typedef <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a>;
38struct <a href="libxml-xpath.html#xmlXPathParserContext">xmlXPathParserContext</a>;
39typedef <a href="libxml-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a>;
40enum <a href="libxml-xpath.html#xmlXPathError">xmlXPathError</a>;
41struct <a href="libxml-xpath.html#xmlNodeSet">xmlNodeSet</a>;
42typedef <a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>;
43enum <a href="libxml-xpath.html#xmlXPathObjectType">xmlXPathObjectType</a>;
44struct <a href="libxml-xpath.html#xmlXPathObject">xmlXPathObject</a>;
45typedef <a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>;
46int (<a href="libxml-xpath.html#xmlXPathConvertFunc">*xmlXPathConvertFunc</a>) (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj,
Daniel Veillard7f7d1111999-09-22 09:46:25 +000047 int type);
Daniel Veillardd4330462003-04-29 12:40:16 +000048struct <a href="libxml-xpath.html#xmlXPathType">xmlXPathType</a>;
49typedef <a href="libxml-xpath.html#xmlXPathTypePtr">xmlXPathTypePtr</a>;
50struct <a href="libxml-xpath.html#xmlXPathVariable">xmlXPathVariable</a>;
51typedef <a href="libxml-xpath.html#xmlXPathVariablePtr">xmlXPathVariablePtr</a>;
52void (<a href="libxml-xpath.html#xmlXPathEvalFunc">*xmlXPathEvalFunc</a>) (<a href="libxml-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt,
Daniel Veillard7f7d1111999-09-22 09:46:25 +000053 int nargs);
Daniel Veillardd4330462003-04-29 12:40:16 +000054struct <a href="libxml-xpath.html#xmlXPathFunct">xmlXPathFunct</a>;
55typedef <a href="libxml-xpath.html#xmlXPathFuncPtr">xmlXPathFuncPtr</a>;
56<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> (<a href="libxml-xpath.html#xmlXPathAxisFunc">*xmlXPathAxisFunc</a>) (<a href="libxml-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt,
57 <a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> cur);
58struct <a href="libxml-xpath.html#xmlXPathAxis">xmlXPathAxis</a>;
59typedef <a href="libxml-xpath.html#xmlXPathAxisPtr">xmlXPathAxisPtr</a>;
60struct <a href="libxml-xpath.html#xmlXPathCompExpr">xmlXPathCompExpr</a>;
61typedef <a href="libxml-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a>;
62void (<a href="libxml-xpath.html#xmlXPathFunction">*xmlXPathFunction</a>) (<a href="libxml-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt,
Daniel Veillard06622df2002-01-21 17:53:42 +000063 int nargs);
Daniel Veillardd4330462003-04-29 12:40:16 +000064int <a href="libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a> (<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> val);
65int <a href="libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a> (<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> val);
66#define <a href="libxml-xpath.html#xmlXPathNodeSetGetLength">xmlXPathNodeSetGetLength</a> (ns)
67#define <a href="libxml-xpath.html#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a> (ns, index)
68#define <a href="libxml-xpath.html#xmlXPathNodeSetIsEmpty">xmlXPathNodeSetIsEmpty</a> (ns)
69void <a href="libxml-xpath.html#xmlXPathFreeObject">xmlXPathFreeObject</a> (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj);
70<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> <a href="libxml-xpath.html#xmlXPathNodeSetCreate">xmlXPathNodeSetCreate</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val);
71void <a href="libxml-xpath.html#xmlXPathFreeNodeSetList">xmlXPathFreeNodeSetList</a> (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj);
72void <a href="libxml-xpath.html#xmlXPathFreeNodeSet">xmlXPathFreeNodeSet</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> obj);
73<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="libxml-xpath.html#xmlXPathObjectCopy">xmlXPathObjectCopy</a> (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
74int <a href="libxml-xpath.html#xmlXPathCmpNodes">xmlXPathCmpNodes</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node1,
75 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node2);
76int <a href="libxml-xpath.html#xmlXPathCastNumberToBoolean">xmlXPathCastNumberToBoolean</a> (<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> val);
77int <a href="libxml-xpath.html#xmlXPathCastStringToBoolean">xmlXPathCastStringToBoolean</a> (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *val);
78int <a href="libxml-xpath.html#xmlXPathCastNodeSetToBoolean">xmlXPathCastNodeSetToBoolean</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns);
79int <a href="libxml-xpath.html#xmlXPathCastToBoolean">xmlXPathCastToBoolean</a> (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
80<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> <a href="libxml-xpath.html#xmlXPathCastBooleanToNumber">xmlXPathCastBooleanToNumber</a> (int val);
81<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> <a href="libxml-xpath.html#xmlXPathCastStringToNumber">xmlXPathCastStringToNumber</a> (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *val);
82<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> <a href="libxml-xpath.html#xmlXPathCastNodeToNumber">xmlXPathCastNodeToNumber</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node);
83<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> <a href="libxml-xpath.html#xmlXPathCastNodeSetToNumber">xmlXPathCastNodeSetToNumber</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns);
84<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> <a href="libxml-xpath.html#xmlXPathCastToNumber">xmlXPathCastToNumber</a> (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
85<a href="libxml-tree.html#xmlChar">xmlChar</a>* <a href="libxml-xpath.html#xmlXPathCastBooleanToString">xmlXPathCastBooleanToString</a> (int val);
86<a href="libxml-tree.html#xmlChar">xmlChar</a>* <a href="libxml-xpath.html#xmlXPathCastNumberToString">xmlXPathCastNumberToString</a> (<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> val);
87<a href="libxml-tree.html#xmlChar">xmlChar</a>* <a href="libxml-xpath.html#xmlXPathCastNodeToString">xmlXPathCastNodeToString</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node);
88<a href="libxml-tree.html#xmlChar">xmlChar</a>* <a href="libxml-xpath.html#xmlXPathCastNodeSetToString">xmlXPathCastNodeSetToString</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns);
89<a href="libxml-tree.html#xmlChar">xmlChar</a>* <a href="libxml-xpath.html#xmlXPathCastToString">xmlXPathCastToString</a> (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
90<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="libxml-xpath.html#xmlXPathConvertBoolean">xmlXPathConvertBoolean</a> (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
91<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="libxml-xpath.html#xmlXPathConvertNumber">xmlXPathConvertNumber</a> (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
92<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="libxml-xpath.html#xmlXPathConvertString">xmlXPathConvertString</a> (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
93void <a href="libxml-xpath.html#xmlXPathInit">xmlXPathInit</a> (void);
94<a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> <a href="libxml-xpath.html#xmlXPathNewContext">xmlXPathNewContext</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
95void <a href="libxml-xpath.html#xmlXPathFreeContext">xmlXPathFreeContext</a> (<a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt);
96<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="long">long</GTKDOCLINK> <a href="libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
97<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="libxml-xpath.html#xmlXPathEval">xmlXPathEval</a> (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *str,
98 <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx);
99<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="libxml-xpath.html#xmlXPathEvalExpression">xmlXPathEvalExpression</a> (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *str,
100 <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt);
101int <a href="libxml-xpath.html#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a> (<a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt,
102 <a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> res);
103<a href="libxml-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> <a href="libxml-xpath.html#xmlXPathCompile">xmlXPathCompile</a> (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *str);
104<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="libxml-xpath.html#xmlXPathCompiledEval">xmlXPathCompiledEval</a> (<a href="libxml-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp,
105 <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx);
106void <a href="libxml-xpath.html#xmlXPathFreeCompExpr">xmlXPathFreeCompExpr</a> (<a href="libxml-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp);
107</pre></div><div class="refsect1" lang="en"><h2>Description</h2><p>
108
109</p></div><div class="refsect1" lang="en"><h2>Details</h2><div class="refsect2" lang="en"><h3><a name="xmlXPathContext"></a>struct xmlXPathContext</h3><pre class="programlisting">struct xmlXPathContext {
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000110 xmlDocPtr doc; /* The current document */
111 xmlNodePtr node; /* The current node */
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000112
Daniel Veillard29a11cc2000-10-25 13:32:39 +0000113 int nb_variables_unused; /* unused (hash table) */
114 int max_variables_unused; /* unused (hash table) */
115 xmlHashTablePtr varHash; /* Hash table of defined variables */
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000116
117 int nb_types; /* number of defined types */
118 int max_types; /* max number of types */
Daniel Veillardb732a0e2000-10-15 11:27:01 +0000119 xmlXPathTypePtr types; /* Array of defined types */
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000120
Daniel Veillard29a11cc2000-10-25 13:32:39 +0000121 int nb_funcs_unused; /* unused (hash table) */
122 int max_funcs_unused; /* unused (hash table) */
123 xmlHashTablePtr funcHash; /* Hash table of defined funcs */
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000124
125 int nb_axis; /* number of defined axis */
126 int max_axis; /* max number of axis */
Daniel Veillardb732a0e2000-10-15 11:27:01 +0000127 xmlXPathAxisPtr axis; /* Array of defined axis */
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000128
Daniel Veillard503b8932001-01-05 06:36:31 +0000129 /* the namespace nodes of the context node */
130 xmlNsPtr *namespaces; /* Array of namespaces */
131 int nsNr; /* number of namespace in scope */
132 void *user; /* function to free */
Daniel Veillard3bff2b02000-10-01 20:33:47 +0000133
134 /* extra variables */
135 int contextSize; /* the context size */
136 int proximityPosition; /* the proximity position */
Daniel Veillard7e99c632000-10-06 12:59:53 +0000137
138 /* extra stuff for XPointer */
139 int xptr; /* it this an XPointer context */
140 xmlNodePtr here; /* for here() */
141 xmlNodePtr origin; /* for origin() */
Daniel Veillard503b8932001-01-05 06:36:31 +0000142
143 /* the set of namespace declarations in scope for the expression */
144 xmlHashTablePtr nsHash; /* The namespaces hash table */
Daniel Veillard9cb5ff42001-01-29 08:22:21 +0000145 void *varLookupFunc; /* variable lookup func */
146 void *varLookupData; /* variable lookup data */
147
148 /* Possibility to link in an extra item */
149 void *extra; /* needed for XSLT */
Daniel Veillard4ec885a2001-06-17 10:31:07 +0000150
151 /* The function name and URI when calling a function */
152 const xmlChar *function;
153 const xmlChar *functionURI;
Daniel Veillarde7ead2d2001-08-22 23:44:09 +0000154
155 /* function lookup function and data */
156 void *funcLookupFunc; /* function lookup func */
157 void *funcLookupData; /* function lookup data */
158
159 /* temporary namespace lists kept for walking the namespace axis */
160 xmlNsPtr *tmpNsList; /* Array of namespaces */
161 int tmpNsNr; /* number of namespace in scope */
Daniel Veillardd4330462003-04-29 12:40:16 +0000162};
163</pre><p>
164Expression evaluation occurs with respect to a context.
Daniel Veillarde7ead2d2001-08-22 23:44:09 +0000165he context consists of:
Daniel Veillardaec63562003-03-23 20:42:17 +0000166 - a node (the context node)
167 - a node list (the context node list)
168 - a set of variable bindings
169 - a function library
170 - the set of namespace declarations in scope for the expression
Daniel Veillarde7ead2d2001-08-22 23:44:09 +0000171Following the switch to hash tables, this need to be trimmed up at
Daniel Veillardd4330462003-04-29 12:40:16 +0000172the next binary incompatible release.</p><p>
173
174</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathContextPtr"></a>xmlXPathContextPtr</h3><pre class="programlisting">typedef xmlXPathContext *xmlXPathContextPtr;
175</pre><p>
176
177</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathParserContext"></a>struct xmlXPathParserContext</h3><pre class="programlisting">struct xmlXPathParserContext {
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000178 const xmlChar *cur; /* the current char being parsed */
179 const xmlChar *base; /* the full expression */
180
181 int error; /* error code */
182
183 xmlXPathContextPtr context; /* the evaluation context */
184 xmlXPathObjectPtr value; /* the current value */
185 int valueNr; /* number of values stacked */
186 int valueMax; /* max number of values stacked */
187 xmlXPathObjectPtr *valueTab; /* stack of values */
Daniel Veillardc7ad7ce2001-03-22 21:45:29 +0000188
189 xmlXPathCompExprPtr comp; /* the precompiled expression */
190 int xptr; /* it this an XPointer expression */
Daniel Veillard4b8328d2001-07-05 22:48:42 +0000191 xmlNodePtr ancestor; /* used for walking preceding axis */
Daniel Veillardd4330462003-04-29 12:40:16 +0000192};
193</pre><p>
194An XPath parser context. It contains pure parsing informations,
195an xmlXPathContext, and the stack of objects.</p><p>
196
197</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathParserContextPtr"></a>xmlXPathParserContextPtr</h3><pre class="programlisting">typedef xmlXPathParserContext *xmlXPathParserContextPtr;
198</pre><p>
199
200</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathError"></a>enum xmlXPathError</h3><pre class="programlisting">typedef enum {
Daniel Veillard7e99c632000-10-06 12:59:53 +0000201 XPATH_EXPRESSION_OK = 0,
202 XPATH_NUMBER_ERROR,
203 XPATH_UNFINISHED_LITERAL_ERROR,
204 XPATH_START_LITERAL_ERROR,
205 XPATH_VARIABLE_REF_ERROR,
206 XPATH_UNDEF_VARIABLE_ERROR,
207 XPATH_INVALID_PREDICATE_ERROR,
208 XPATH_EXPR_ERROR,
209 XPATH_UNCLOSED_ERROR,
210 XPATH_UNKNOWN_FUNC_ERROR,
211 XPATH_INVALID_OPERAND,
212 XPATH_INVALID_TYPE,
213 XPATH_INVALID_ARITY,
214 XPATH_INVALID_CTXT_SIZE,
Daniel Veillardb732a0e2000-10-15 11:27:01 +0000215 XPATH_INVALID_CTXT_POSITION,
216 XPATH_MEMORY_ERROR,
217 XPTR_SYNTAX_ERROR,
218 XPTR_RESOURCE_ERROR,
Daniel Veillard503b8932001-01-05 06:36:31 +0000219 XPTR_SUB_RESOURCE_ERROR,
Daniel Veillard3bbbe6f2001-05-03 11:15:37 +0000220 XPATH_UNDEF_PREFIX_ERROR,
221 XPATH_ENCODING_ERROR,
222 XPATH_INVALID_CHAR_ERROR
Daniel Veillardd4330462003-04-29 12:40:16 +0000223} xmlXPathError;
224</pre><p>
225
226</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNodeSet"></a>struct xmlNodeSet</h3><pre class="programlisting">struct xmlNodeSet {
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000227 int nodeNr; /* number of nodes in the set */
228 int nodeMax; /* size of the array as allocated */
229 xmlNodePtr *nodeTab; /* array of nodes in no particular order */
Daniel Veillardaf43f632002-03-08 15:05:20 +0000230 /* @@ with_ns to check wether namespace nodes should be looked at @@ */
Daniel Veillardd4330462003-04-29 12:40:16 +0000231};
232</pre><p>
233
234</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNodeSetPtr"></a>xmlNodeSetPtr</h3><pre class="programlisting">typedef xmlNodeSet *xmlNodeSetPtr;
235</pre><p>
236
237</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathObjectType"></a>enum xmlXPathObjectType</h3><pre class="programlisting">typedef enum {
Daniel Veillard3bff2b02000-10-01 20:33:47 +0000238 XPATH_UNDEFINED = 0,
239 XPATH_NODESET = 1,
240 XPATH_BOOLEAN = 2,
241 XPATH_NUMBER = 3,
242 XPATH_STRING = 4,
Daniel Veillard7e99c632000-10-06 12:59:53 +0000243 XPATH_POINT = 5,
244 XPATH_RANGE = 6,
245 XPATH_LOCATIONSET = 7,
Daniel Veillard9cb5ff42001-01-29 08:22:21 +0000246 XPATH_USERS = 8,
247 XPATH_XSLT_TREE = 9 /* An XSLT value tree, non modifiable */
Daniel Veillardd4330462003-04-29 12:40:16 +0000248} xmlXPathObjectType;
249</pre><p>
250
251</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathObject"></a>struct xmlXPathObject</h3><pre class="programlisting">struct xmlXPathObject {
Daniel Veillard3bff2b02000-10-01 20:33:47 +0000252 xmlXPathObjectType type;
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000253 xmlNodeSetPtr nodesetval;
254 int boolval;
255 double floatval;
256 xmlChar *stringval;
257 void *user;
Daniel Veillard7e99c632000-10-06 12:59:53 +0000258 int index;
259 void *user2;
260 int index2;
Daniel Veillardd4330462003-04-29 12:40:16 +0000261};
262</pre><p>
263
264</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathObjectPtr"></a>xmlXPathObjectPtr</h3><pre class="programlisting">typedef xmlXPathObject *xmlXPathObjectPtr;
265</pre><p>
266
267</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathConvertFunc"></a>xmlXPathConvertFunc ()</h3><pre class="programlisting">int (*xmlXPathConvertFunc) (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj,
268 int type);</pre><p>
269A conversion function is associated to a type and used to cast
270the new type to primitive values.</p><p>
271
272</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>obj</tt></i> :</span></td><td> an XPath object
273</td></tr><tr><td><span class="term"><i><tt>type</tt></i> :</span></td><td> the number of the target type
274</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>-1 in case of error, 0 otherwise
275</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathType"></a>struct xmlXPathType</h3><pre class="programlisting">struct xmlXPathType {
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000276 const xmlChar *name; /* the type name */
277 xmlXPathConvertFunc func; /* the conversion function */
Daniel Veillardd4330462003-04-29 12:40:16 +0000278};
279</pre><p>
280
281</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathTypePtr"></a>xmlXPathTypePtr</h3><pre class="programlisting">typedef xmlXPathType *xmlXPathTypePtr;
282</pre><p>
283
284</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathVariable"></a>struct xmlXPathVariable</h3><pre class="programlisting">struct xmlXPathVariable {
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000285 const xmlChar *name; /* the variable name */
286 xmlXPathObjectPtr value; /* the value */
Daniel Veillardd4330462003-04-29 12:40:16 +0000287};
288</pre><p>
289
290</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathVariablePtr"></a>xmlXPathVariablePtr</h3><pre class="programlisting">typedef xmlXPathVariable *xmlXPathVariablePtr;
291</pre><p>
292
293</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathEvalFunc"></a>xmlXPathEvalFunc ()</h3><pre class="programlisting">void (*xmlXPathEvalFunc) (<a href="libxml-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt,
294 int nargs);</pre><p>
295An XPath evaluation function, the parameters are on the XPath context stack.</p><p>
296
297</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i> :</span></td><td> an XPath parser context
298</td></tr><tr><td><span class="term"><i><tt>nargs</tt></i> :</span></td><td> the number of arguments passed to the function
299</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathFunct"></a>struct xmlXPathFunct</h3><pre class="programlisting">struct xmlXPathFunct {
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000300 const xmlChar *name; /* the function name */
301 xmlXPathEvalFunc func; /* the evaluation function */
Daniel Veillardd4330462003-04-29 12:40:16 +0000302};
303</pre><p>
304
305</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathFuncPtr"></a>xmlXPathFuncPtr</h3><pre class="programlisting">typedef xmlXPathFunct *xmlXPathFuncPtr;
306</pre><p>
307
308</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathAxisFunc"></a>xmlXPathAxisFunc ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> (*xmlXPathAxisFunc) (<a href="libxml-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt,
309 <a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> cur);</pre><p>
310An axis traversal function. To traverse an axis, the engine calls
Daniel Veillard5f4b5992002-02-20 10:22:49 +0000311the first time with cur == NULL and repeat until the function returns
Daniel Veillardd4330462003-04-29 12:40:16 +0000312NULL indicating the end of the axis traversal.</p><p>
313
314</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i> :</span></td><td> the XPath interpreter context
315</td></tr><tr><td><span class="term"><i><tt>cur</tt></i> :</span></td><td> the previous node being explored on that axis
316</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the next node in that axis or NULL if at the end of the axis.
317</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathAxis"></a>struct xmlXPathAxis</h3><pre class="programlisting">struct xmlXPathAxis {
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000318 const xmlChar *name; /* the axis name */
319 xmlXPathAxisFunc func; /* the search function */
Daniel Veillardd4330462003-04-29 12:40:16 +0000320};
321</pre><p>
322
323</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathAxisPtr"></a>xmlXPathAxisPtr</h3><pre class="programlisting">typedef xmlXPathAxis *xmlXPathAxisPtr;
324</pre><p>
325
326</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCompExpr"></a>struct xmlXPathCompExpr</h3><pre class="programlisting">struct xmlXPathCompExpr;</pre><p>
327
328</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCompExprPtr"></a>xmlXPathCompExprPtr</h3><pre class="programlisting">typedef xmlXPathCompExpr *xmlXPathCompExprPtr;
329</pre><p>
330
331</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathFunction"></a>xmlXPathFunction ()</h3><pre class="programlisting">void (*xmlXPathFunction) (<a href="libxml-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt,
332 int nargs);</pre><p>
333An XPath function.
Daniel Veillard5f4b5992002-02-20 10:22:49 +0000334The arguments (if any) are popped out from the context stack
Daniel Veillardd4330462003-04-29 12:40:16 +0000335and the result is pushed on the stack.</p><p>
336
337</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i> :</span></td><td> the XPath interprestation context
338</td></tr><tr><td><span class="term"><i><tt>nargs</tt></i> :</span></td><td> the number of arguments
339</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathIsNaN"></a>xmlXPathIsNaN ()</h3><pre class="programlisting">int xmlXPathIsNaN (<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> val);</pre><p>
340Provides a portable <GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="isnan">isnan</GTKDOCLINK>() function to detect whether a double
Daniel Veillarde7ead2d2001-08-22 23:44:09 +0000341is a NotaNumber. Based on trio code
Daniel Veillardd4330462003-04-29 12:40:16 +0000342http://sourceforge.net/projects/ctrio/</p><p>
343
344</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> a double value
345</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>1 if the value is a NaN, 0 otherwise
346</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathIsInf"></a>xmlXPathIsInf ()</h3><pre class="programlisting">int xmlXPathIsInf (<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> val);</pre><p>
347Provides a portable <GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="isinf">isinf</GTKDOCLINK>() function to detect whether a double
Daniel Veillarde7ead2d2001-08-22 23:44:09 +0000348is a +Infinite or -Infinite. Based on trio code
Daniel Veillardd4330462003-04-29 12:40:16 +0000349http://sourceforge.net/projects/ctrio/</p><p>
350
351</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> a double value
352</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>1 vi the value is +Infinite, -1 if -Infinite, 0 otherwise
353</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathNodeSetGetLength"></a>xmlXPathNodeSetGetLength()</h3><pre class="programlisting">#define xmlXPathNodeSetGetLength(ns) ((ns) ? (ns)-&gt;nodeNr : 0)
354</pre><p>
355Implement a functionality similar to the DOM NodeList.length.</p><p>
356
357</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ns</tt></i> :</span></td><td> a node-set
358</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathNodeSetItem"></a>xmlXPathNodeSetItem()</h3><pre class="programlisting">#define xmlXPathNodeSetItem(ns, index)</pre><p>
359Implements a functionality similar to the DOM NodeList.<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="item">item</GTKDOCLINK>().</p><p>
360
361</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ns</tt></i> :</span></td><td> a node-set
362</td></tr><tr><td><span class="term"><i><tt>index</tt></i> :</span></td><td> index of a node in the set
363</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathNodeSetIsEmpty"></a>xmlXPathNodeSetIsEmpty()</h3><pre class="programlisting">#define xmlXPathNodeSetIsEmpty(ns)</pre><p>
364Checks whether <i><tt>ns</tt></i> is empty or not.</p><p>
365
366</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ns</tt></i> :</span></td><td> a node-set
367</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathFreeObject"></a>xmlXPathFreeObject ()</h3><pre class="programlisting">void xmlXPathFreeObject (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj);</pre><p>
368Free up an xmlXPathObjectPtr object.</p><p>
369
370</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>obj</tt></i> :</span></td><td> the object to free
371</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathNodeSetCreate"></a>xmlXPathNodeSetCreate ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> xmlXPathNodeSetCreate (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val);</pre><p>
372Create a new xmlNodeSetPtr of type double and of value <i><tt>val</tt></i></p><p>
373
374</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> an initial xmlNodePtr, or NULL
375</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the newly created object.
376</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathFreeNodeSetList"></a>xmlXPathFreeNodeSetList ()</h3><pre class="programlisting">void xmlXPathFreeNodeSetList (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj);</pre><p>
377Free up the xmlXPathObjectPtr <i><tt>obj</tt></i> but don't deallocate the objects in
378the list contrary to <a href="libxml-xpath.html#xmlXPathFreeObject">xmlXPathFreeObject</a>().</p><p>
379
380</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>obj</tt></i> :</span></td><td> an existing NodeSetList object
381</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathFreeNodeSet"></a>xmlXPathFreeNodeSet ()</h3><pre class="programlisting">void xmlXPathFreeNodeSet (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> obj);</pre><p>
382Free the NodeSet compound (not the actual nodes !).</p><p>
383
384</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>obj</tt></i> :</span></td><td> the xmlNodeSetPtr to free
385</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathObjectCopy"></a>xmlXPathObjectCopy ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathObjectCopy (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);</pre><p>
386allocate a new copy of a given object</p><p>
387
388</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> the original object
389</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the newly created object.
390</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCmpNodes"></a>xmlXPathCmpNodes ()</h3><pre class="programlisting">int xmlXPathCmpNodes (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node1,
391 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node2);</pre><p>
392Compare two nodes w.r.t document order</p><p>
393
394</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>node1</tt></i> :</span></td><td> the first node
395</td></tr><tr><td><span class="term"><i><tt>node2</tt></i> :</span></td><td> the second node
396</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>-2 in case of error 1 if first point &lt; second point, 0 if
397 that's the same node, -1 otherwise
398</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastNumberToBoolean"></a>xmlXPathCastNumberToBoolean ()</h3><pre class="programlisting">int xmlXPathCastNumberToBoolean (<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> val);</pre><p>
399Converts a number to its boolean value</p><p>
400
401</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> a number
402</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the boolean value
403</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastStringToBoolean"></a>xmlXPathCastStringToBoolean ()</h3><pre class="programlisting">int xmlXPathCastStringToBoolean (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *val);</pre><p>
404Converts a string to its boolean value</p><p>
405
406</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> a string
407</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the boolean value
408</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastNodeSetToBoolean"></a>xmlXPathCastNodeSetToBoolean ()</h3><pre class="programlisting">int xmlXPathCastNodeSetToBoolean (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns);</pre><p>
409Converts a node-set to its boolean value</p><p>
410
411</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ns</tt></i> :</span></td><td> a node-set
412</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the boolean value
413</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastToBoolean"></a>xmlXPathCastToBoolean ()</h3><pre class="programlisting">int xmlXPathCastToBoolean (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);</pre><p>
414Converts an XPath object to its boolean value</p><p>
415
416</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> an XPath object
417</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the boolean value
418</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastBooleanToNumber"></a>xmlXPathCastBooleanToNumber ()</h3><pre class="programlisting"><GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> xmlXPathCastBooleanToNumber (int val);</pre><p>
419Converts a boolean to its number value</p><p>
420
421</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> a boolean
422</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number value
423</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastStringToNumber"></a>xmlXPathCastStringToNumber ()</h3><pre class="programlisting"><GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> xmlXPathCastStringToNumber (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *val);</pre><p>
424Converts a string to its number value</p><p>
425
426</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> a string
427</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number value
428</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastNodeToNumber"></a>xmlXPathCastNodeToNumber ()</h3><pre class="programlisting"><GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> xmlXPathCastNodeToNumber (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node);</pre><p>
429Converts a node to its number value</p><p>
430
431</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>node</tt></i> :</span></td><td> a node
432</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number value
433</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastNodeSetToNumber"></a>xmlXPathCastNodeSetToNumber ()</h3><pre class="programlisting"><GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> xmlXPathCastNodeSetToNumber (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns);</pre><p>
434Converts a node-set to its number value</p><p>
435
436</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ns</tt></i> :</span></td><td> a node-set
437</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number value
438</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastToNumber"></a>xmlXPathCastToNumber ()</h3><pre class="programlisting"><GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> xmlXPathCastToNumber (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);</pre><p>
439Converts an XPath object to its number value</p><p>
440
441</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> an XPath object
442</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number value
443</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastBooleanToString"></a>xmlXPathCastBooleanToString ()</h3><pre class="programlisting"><a href="libxml-tree.html#xmlChar">xmlChar</a>* xmlXPathCastBooleanToString (int val);</pre><p>
444Converts a boolean to its string value.</p><p>
445
446</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> a boolean
447</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>a newly allocated string.
448</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastNumberToString"></a>xmlXPathCastNumberToString ()</h3><pre class="programlisting"><a href="libxml-tree.html#xmlChar">xmlChar</a>* xmlXPathCastNumberToString (<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="double">double</GTKDOCLINK> val);</pre><p>
449Converts a number to its string value.</p><p>
450
451</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> a number
452</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>a newly allocated string.
453</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastNodeToString"></a>xmlXPathCastNodeToString ()</h3><pre class="programlisting"><a href="libxml-tree.html#xmlChar">xmlChar</a>* xmlXPathCastNodeToString (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node);</pre><p>
454Converts a node to its string value.</p><p>
455
456</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>node</tt></i> :</span></td><td> a node
457</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>a newly allocated string.
458</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastNodeSetToString"></a>xmlXPathCastNodeSetToString ()</h3><pre class="programlisting"><a href="libxml-tree.html#xmlChar">xmlChar</a>* xmlXPathCastNodeSetToString (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns);</pre><p>
459Converts a node-set to its string value.</p><p>
460
461</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ns</tt></i> :</span></td><td> a node-set
462</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>a newly allocated string.
463</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCastToString"></a>xmlXPathCastToString ()</h3><pre class="programlisting"><a href="libxml-tree.html#xmlChar">xmlChar</a>* xmlXPathCastToString (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);</pre><p>
464Converts an existing object to its <GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="string">string</GTKDOCLINK>() equivalent</p><p>
465
466</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> an XPath object
467</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the string value of the object, NULL in case of error.
468 A new string is allocated only if needed (<i><tt>val</tt></i> isn't a
469 string object).
470</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathConvertBoolean"></a>xmlXPathConvertBoolean ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathConvertBoolean (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);</pre><p>
471Converts an existing object to its <GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="boolean">boolean</GTKDOCLINK>() equivalent</p><p>
472
473</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> an XPath object
474</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the new object, the old one is freed (or the operation
475 is done directly on <i><tt>val</tt></i>)
476</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathConvertNumber"></a>xmlXPathConvertNumber ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathConvertNumber (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);</pre><p>
477Converts an existing object to its <GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="number">number</GTKDOCLINK>() equivalent</p><p>
478
479</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> an XPath object
480</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the new object, the old one is freed (or the operation
481 is done directly on <i><tt>val</tt></i>)
482</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathConvertString"></a>xmlXPathConvertString ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathConvertString (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);</pre><p>
483Converts an existing object to its <GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="string">string</GTKDOCLINK>() equivalent</p><p>
484
485</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>val</tt></i> :</span></td><td> an XPath object
486</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the new object, the old one is freed (or the operation
487 is done directly on <i><tt>val</tt></i>)
488</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathInit"></a>xmlXPathInit ()</h3><pre class="programlisting">void xmlXPathInit (void);</pre><p>
489Initialize the XPath environment</p><p>
490
491</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathNewContext"></a>xmlXPathNewContext ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> xmlXPathNewContext (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc);</pre><p>
492Create a new xmlXPathContext</p><p>
493
494</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>doc</tt></i> :</span></td><td> the XML document
495</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the xmlXPathContext just allocated. The caller will need to free it.
496</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathFreeContext"></a>xmlXPathFreeContext ()</h3><pre class="programlisting">void xmlXPathFreeContext (<a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt);</pre><p>
497Free up an xmlXPathContext</p><p>
498
499</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i> :</span></td><td> the context to free
500</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathOrderDocElems"></a>xmlXPathOrderDocElems ()</h3><pre class="programlisting"><GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="long">long</GTKDOCLINK> xmlXPathOrderDocElems (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc);</pre><p>
501Call this routine to speed up XPath computation on static documents.
Daniel Veillardc2d4a932003-04-01 11:13:05 +0000502This stamps all the element nodes with the document order
503Like for line information, the order is kept in the element-&gt;content
504field, the value stored is actually - the node number (startting at -1)
Daniel Veillardd4330462003-04-29 12:40:16 +0000505to be able to differenciate from line numbers.</p><p>
506
507</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>doc</tt></i> :</span></td><td> an input document
508</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number of element found in the document or -1 in case
509 of error.
510</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathEval"></a>xmlXPathEval ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathEval (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *str,
511 <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx);</pre><p>
512Evaluate the XPath Location Path in the given context.</p><p>
513
514</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>str</tt></i> :</span></td><td> the XPath expression
515</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> the XPath context
516</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the xmlXPathObjectPtr resulting from the evaluation or NULL.
517 the caller has to free the object.
518</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathEvalExpression"></a>xmlXPathEvalExpression ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathEvalExpression (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *str,
519 <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt);</pre><p>
520Evaluate the XPath expression in the given context.</p><p>
521
522</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>str</tt></i> :</span></td><td> the XPath expression
523</td></tr><tr><td><span class="term"><i><tt>ctxt</tt></i> :</span></td><td> the XPath context
524</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the xmlXPathObjectPtr resulting from the evaluation or NULL.
525 the caller has to free the object.
526</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathEvalPredicate"></a>xmlXPathEvalPredicate ()</h3><pre class="programlisting">int xmlXPathEvalPredicate (<a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt,
527 <a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> res);</pre><p>
528Evaluate a predicate result for the current node.
Daniel Veillardc7ad7ce2001-03-22 21:45:29 +0000529A PredicateExpr is evaluated by evaluating the Expr and converting
530the result to a boolean. If the result is a number, the result will
531be converted to true if the number is equal to the position of the
532context node in the context node list (as returned by the position
533function) and will be converted to false otherwise; if the result
534is not a number, then the result will be converted as if by a call
Daniel Veillardd4330462003-04-29 12:40:16 +0000535to the boolean function.</p><p>
536
537</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i> :</span></td><td> the XPath context
538</td></tr><tr><td><span class="term"><i><tt>res</tt></i> :</span></td><td> the Predicate Expression evaluation result
539</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>1 if predicate is true, 0 otherwise
540</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCompile"></a>xmlXPathCompile ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> xmlXPathCompile (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *str);</pre><p>
541Compile an XPath expression</p><p>
542
543</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>str</tt></i> :</span></td><td> the XPath expression
544</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the xmlXPathCompExprPtr resulting from the compilation or NULL.
545 the caller has to free the object.
546</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathCompiledEval"></a>xmlXPathCompiledEval ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathCompiledEval (<a href="libxml-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp,
547 <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx);</pre><p>
548Evaluate the Precompiled XPath expression in the given context.</p><p>
549
550</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>comp</tt></i> :</span></td><td> the compiled XPath expression
551</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> the XPath context
552</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the xmlXPathObjectPtr resulting from the evaluation or NULL.
553 the caller has to free the object.
554</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlXPathFreeCompExpr"></a>xmlXPathFreeCompExpr ()</h3><pre class="programlisting">void xmlXPathFreeCompExpr (<a href="libxml-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp);</pre><p>
555Free up the memory allocated by <i><tt>comp</tt></i></p><p>
556
557</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>comp</tt></i> :</span></td><td> an XPATH comp
558</td></tr></tbody></table></div></div></div></div><table xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="libxml-HTMLtree.html"><b>&lt;&lt; HTMLtree</b></a></td><td align="right"><a accesskey="n" href="libxml-xpathInternals.html"><b>xpathInternals &gt;&gt;</b></a></td></tr></table></body></html>