xref: /aosp_15_r20/external/libxml2/doc/devhelp/libxml2-pattern.html (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>pattern: pattern expression handling</title>
5<meta name="generator" content="Libxml2 devhelp stylesheet">
6<link rel="start" href="index.html" title="libxml2 Reference Manual">
7<link rel="up" href="general.html" title="API">
8<link rel="stylesheet" href="style.css" type="text/css">
9<link rel="chapter" href="general.html" title="API">
10</head>
11<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
12<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
13<td><a accesskey="p" href="libxml2-parserInternals.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
14<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
15<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
16<td><a accesskey="n" href="libxml2-relaxng.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
17<th width="100%" align="center">libxml2 Reference Manual</th>
18</tr></table>
19<h2><span class="refentrytitle">pattern</span></h2>
20<p>pattern - pattern expression handling</p>
21<p>allows to compile and test pattern expressions for nodes either in a tree or based on a parser state. </p>
22<p>Author(s): Daniel Veillard </p>
23<div class="refsynopsisdiv">
24<h2>Synopsis</h2>
25<pre class="synopsis">typedef struct _xmlPattern <a href="#xmlPattern">xmlPattern</a>;
26typedef enum <a href="#xmlPatternFlags">xmlPatternFlags</a>;
27typedef <a href="libxml2-pattern.html#xmlPattern">xmlPattern</a> * <a href="#xmlPatternPtr">xmlPatternPtr</a>;
28typedef struct _xmlStreamCtxt <a href="#xmlStreamCtxt">xmlStreamCtxt</a>;
29typedef <a href="libxml2-pattern.html#xmlStreamCtxt">xmlStreamCtxt</a> * <a href="#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a>;
30void	<a href="#xmlFreePattern">xmlFreePattern</a>			(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
31void	<a href="#xmlFreePatternList">xmlFreePatternList</a>		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
32void	<a href="#xmlFreeStreamCtxt">xmlFreeStreamCtxt</a>		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream);
33int	<a href="#xmlPatternCompileSafe">xmlPatternCompileSafe</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br>					 <a href="libxml2-dict.html#xmlDict">xmlDict</a> * dict, <br>					 int flags, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces, <br>					 <a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> * patternOut);
34int	<a href="#xmlPatternFromRoot">xmlPatternFromRoot</a>		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
35<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a>	<a href="#xmlPatternGetStreamCtxt">xmlPatternGetStreamCtxt</a>	(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
36int	<a href="#xmlPatternMatch">xmlPatternMatch</a>			(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
37int	<a href="#xmlPatternMaxDepth">xmlPatternMaxDepth</a>		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
38int	<a href="#xmlPatternMinDepth">xmlPatternMinDepth</a>		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
39int	<a href="#xmlPatternStreamable">xmlPatternStreamable</a>		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
40<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a>	<a href="#xmlPatterncompile">xmlPatterncompile</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br>					 <a href="libxml2-dict.html#xmlDict">xmlDict</a> * dict, <br>					 int flags, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces);
41int	<a href="#xmlStreamPop">xmlStreamPop</a>			(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream);
42int	<a href="#xmlStreamPush">xmlStreamPush</a>			(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns);
43int	<a href="#xmlStreamPushAttr">xmlStreamPushAttr</a>		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns);
44int	<a href="#xmlStreamPushNode">xmlStreamPushNode</a>		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns, <br>					 int nodeType);
45int	<a href="#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a>		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> streamCtxt);
46</pre>
47</div>
48<div class="refsect1" lang="en"><h2>Description</h2></div>
49<div class="refsect1" lang="en">
50<h2>Details</h2>
51<div class="refsect2" lang="en">
52<div class="refsect2" lang="en">
53<h3>
54<a name="xmlPattern">Structure </a>xmlPattern</h3>
55<pre class="programlisting">struct _xmlPattern {
56The content of this structure is not made public by the API.
57} xmlPattern;
58</pre>
59<p></p>
60</div>
61<hr>
62<div class="refsect2" lang="en">
63<h3>
64<a name="xmlPatternFlags">Enum </a>xmlPatternFlags</h3>
65<pre class="programlisting">enum <a href="#xmlPatternFlags">xmlPatternFlags</a> {
66    <a name="XML_PATTERN_DEFAULT">XML_PATTERN_DEFAULT</a> = 0 /* simple pattern match */
67    <a name="XML_PATTERN_XPATH">XML_PATTERN_XPATH</a> = 1 /* standard XPath pattern */
68    <a name="XML_PATTERN_XSSEL">XML_PATTERN_XSSEL</a> = 2 /* XPath subset for schema selector */
69    <a name="XML_PATTERN_XSFIELD">XML_PATTERN_XSFIELD</a> = 4 /*  XPath subset for schema field */
70};
71</pre>
72<p></p>
73</div>
74<hr>
75<div class="refsect2" lang="en">
76<h3>
77<a name="xmlPatternPtr">Typedef </a>xmlPatternPtr</h3>
78<pre class="programlisting"><a href="libxml2-pattern.html#xmlPattern">xmlPattern</a> * xmlPatternPtr;
79</pre>
80<p></p>
81</div>
82<hr>
83<div class="refsect2" lang="en">
84<h3>
85<a name="xmlStreamCtxt">Structure </a>xmlStreamCtxt</h3>
86<pre class="programlisting">struct _xmlStreamCtxt {
87The content of this structure is not made public by the API.
88} xmlStreamCtxt;
89</pre>
90<p></p>
91</div>
92<hr>
93<div class="refsect2" lang="en">
94<h3>
95<a name="xmlStreamCtxtPtr">Typedef </a>xmlStreamCtxtPtr</h3>
96<pre class="programlisting"><a href="libxml2-pattern.html#xmlStreamCtxt">xmlStreamCtxt</a> * xmlStreamCtxtPtr;
97</pre>
98<p></p>
99</div>
100<hr>
101<div class="refsect2" lang="en">
102<h3>
103<a name="xmlFreePattern"></a>xmlFreePattern ()</h3>
104<pre class="programlisting">void	xmlFreePattern			(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
105</pre>
106<p>Free up the memory allocated by @comp</p>
107<div class="variablelist"><table border="0">
108<col align="left">
109<tbody><tr>
110<td><span class="term"><i><tt>comp</tt></i>:</span></td>
111<td>an XSLT comp</td>
112</tr></tbody>
113</table></div>
114</div>
115<hr>
116<div class="refsect2" lang="en">
117<h3>
118<a name="xmlFreePatternList"></a>xmlFreePatternList ()</h3>
119<pre class="programlisting">void	xmlFreePatternList		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
120</pre>
121<p>Free up the memory allocated by all the elements of @comp</p>
122<div class="variablelist"><table border="0">
123<col align="left">
124<tbody><tr>
125<td><span class="term"><i><tt>comp</tt></i>:</span></td>
126<td>an XSLT comp list</td>
127</tr></tbody>
128</table></div>
129</div>
130<hr>
131<div class="refsect2" lang="en">
132<h3>
133<a name="xmlFreeStreamCtxt"></a>xmlFreeStreamCtxt ()</h3>
134<pre class="programlisting">void	xmlFreeStreamCtxt		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream)<br>
135</pre>
136<p>Free the stream context</p>
137<div class="variablelist"><table border="0">
138<col align="left">
139<tbody><tr>
140<td><span class="term"><i><tt>stream</tt></i>:</span></td>
141<td>the stream context</td>
142</tr></tbody>
143</table></div>
144</div>
145<hr>
146<div class="refsect2" lang="en">
147<h3>
148<a name="xmlPatternCompileSafe"></a>xmlPatternCompileSafe ()</h3>
149<pre class="programlisting">int	xmlPatternCompileSafe		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br>					 <a href="libxml2-dict.html#xmlDict">xmlDict</a> * dict, <br>					 int flags, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces, <br>					 <a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> * patternOut)<br>
150</pre>
151<p>Compile a pattern. Available since 2.13.0.</p>
152<div class="variablelist"><table border="0">
153<col align="left">
154<tbody>
155<tr>
156<td><span class="term"><i><tt>pattern</tt></i>:</span></td>
157<td>the pattern to compile</td>
158</tr>
159<tr>
160<td><span class="term"><i><tt>dict</tt></i>:</span></td>
161<td>an optional dictionary for interned strings</td>
162</tr>
163<tr>
164<td><span class="term"><i><tt>flags</tt></i>:</span></td>
165<td>compilation flags, see <a href="libxml2-pattern.html#xmlPatternFlags">xmlPatternFlags</a>
166</td>
167</tr>
168<tr>
169<td><span class="term"><i><tt>namespaces</tt></i>:</span></td>
170<td>the prefix definitions, array of [URI, prefix] or NULL</td>
171</tr>
172<tr>
173<td><span class="term"><i><tt>patternOut</tt></i>:</span></td>
174<td>output pattern</td>
175</tr>
176<tr>
177<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
178<td>0 on success, 1 on error, -1 if a memory allocation failed.</td>
179</tr>
180</tbody>
181</table></div>
182</div>
183<hr>
184<div class="refsect2" lang="en">
185<h3>
186<a name="xmlPatternFromRoot"></a>xmlPatternFromRoot ()</h3>
187<pre class="programlisting">int	xmlPatternFromRoot		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
188</pre>
189<p>Check if the pattern must be looked at from the root.</p>
190<div class="variablelist"><table border="0">
191<col align="left">
192<tbody>
193<tr>
194<td><span class="term"><i><tt>comp</tt></i>:</span></td>
195<td>the precompiled pattern</td>
196</tr>
197<tr>
198<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
199<td>1 if true, 0 if false and -1 in case of error</td>
200</tr>
201</tbody>
202</table></div>
203</div>
204<hr>
205<div class="refsect2" lang="en">
206<h3>
207<a name="xmlPatternGetStreamCtxt"></a>xmlPatternGetStreamCtxt ()</h3>
208<pre class="programlisting"><a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a>	xmlPatternGetStreamCtxt	(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
209</pre>
210<p>Get a streaming context for that pattern Use <a href="libxml2-pattern.html#xmlFreeStreamCtxt">xmlFreeStreamCtxt</a> to free the context.</p>
211<div class="variablelist"><table border="0">
212<col align="left">
213<tbody>
214<tr>
215<td><span class="term"><i><tt>comp</tt></i>:</span></td>
216<td>the precompiled pattern</td>
217</tr>
218<tr>
219<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
220<td>a pointer to the context or NULL in case of failure</td>
221</tr>
222</tbody>
223</table></div>
224</div>
225<hr>
226<div class="refsect2" lang="en">
227<h3>
228<a name="xmlPatternMatch"></a>xmlPatternMatch ()</h3>
229<pre class="programlisting">int	xmlPatternMatch			(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
230</pre>
231<p>Test whether the node matches the pattern</p>
232<div class="variablelist"><table border="0">
233<col align="left">
234<tbody>
235<tr>
236<td><span class="term"><i><tt>comp</tt></i>:</span></td>
237<td>the precompiled pattern</td>
238</tr>
239<tr>
240<td><span class="term"><i><tt>node</tt></i>:</span></td>
241<td>a node</td>
242</tr>
243<tr>
244<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
245<td>1 if it matches, 0 if it doesn't and -1 in case of failure</td>
246</tr>
247</tbody>
248</table></div>
249</div>
250<hr>
251<div class="refsect2" lang="en">
252<h3>
253<a name="xmlPatternMaxDepth"></a>xmlPatternMaxDepth ()</h3>
254<pre class="programlisting">int	xmlPatternMaxDepth		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
255</pre>
256<p>Check the maximum depth reachable by a pattern</p>
257<div class="variablelist"><table border="0">
258<col align="left">
259<tbody>
260<tr>
261<td><span class="term"><i><tt>comp</tt></i>:</span></td>
262<td>the precompiled pattern</td>
263</tr>
264<tr>
265<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
266<td>-2 if no limit (using //), otherwise the depth, and -1 in case of error</td>
267</tr>
268</tbody>
269</table></div>
270</div>
271<hr>
272<div class="refsect2" lang="en">
273<h3>
274<a name="xmlPatternMinDepth"></a>xmlPatternMinDepth ()</h3>
275<pre class="programlisting">int	xmlPatternMinDepth		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
276</pre>
277<p>Check the minimum depth reachable by a pattern, 0 mean the / or . are part of the set.</p>
278<div class="variablelist"><table border="0">
279<col align="left">
280<tbody>
281<tr>
282<td><span class="term"><i><tt>comp</tt></i>:</span></td>
283<td>the precompiled pattern</td>
284</tr>
285<tr>
286<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
287<td>-1 in case of error otherwise the depth,</td>
288</tr>
289</tbody>
290</table></div>
291</div>
292<hr>
293<div class="refsect2" lang="en">
294<h3>
295<a name="xmlPatternStreamable"></a>xmlPatternStreamable ()</h3>
296<pre class="programlisting">int	xmlPatternStreamable		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
297</pre>
298<p>Check if the pattern is streamable i.e. xmlPatternGetStreamCtxt() should work.</p>
299<div class="variablelist"><table border="0">
300<col align="left">
301<tbody>
302<tr>
303<td><span class="term"><i><tt>comp</tt></i>:</span></td>
304<td>the precompiled pattern</td>
305</tr>
306<tr>
307<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
308<td>1 if streamable, 0 if not and -1 in case of error.</td>
309</tr>
310</tbody>
311</table></div>
312</div>
313<hr>
314<div class="refsect2" lang="en">
315<h3>
316<a name="xmlPatterncompile"></a>xmlPatterncompile ()</h3>
317<pre class="programlisting"><a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a>	xmlPatterncompile	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br>					 <a href="libxml2-dict.html#xmlDict">xmlDict</a> * dict, <br>					 int flags, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces)<br>
318</pre>
319<p>Compile a pattern.</p>
320<div class="variablelist"><table border="0">
321<col align="left">
322<tbody>
323<tr>
324<td><span class="term"><i><tt>pattern</tt></i>:</span></td>
325<td>the pattern to compile</td>
326</tr>
327<tr>
328<td><span class="term"><i><tt>dict</tt></i>:</span></td>
329<td>an optional dictionary for interned strings</td>
330</tr>
331<tr>
332<td><span class="term"><i><tt>flags</tt></i>:</span></td>
333<td>compilation flags, see <a href="libxml2-pattern.html#xmlPatternFlags">xmlPatternFlags</a>
334</td>
335</tr>
336<tr>
337<td><span class="term"><i><tt>namespaces</tt></i>:</span></td>
338<td>the prefix definitions, array of [URI, prefix] or NULL</td>
339</tr>
340<tr>
341<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
342<td>the compiled form of the pattern or NULL in case of error</td>
343</tr>
344</tbody>
345</table></div>
346</div>
347<hr>
348<div class="refsect2" lang="en">
349<h3>
350<a name="xmlStreamPop"></a>xmlStreamPop ()</h3>
351<pre class="programlisting">int	xmlStreamPop			(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream)<br>
352</pre>
353<p>push one level from the stream.</p>
354<div class="variablelist"><table border="0">
355<col align="left">
356<tbody>
357<tr>
358<td><span class="term"><i><tt>stream</tt></i>:</span></td>
359<td>the stream context</td>
360</tr>
361<tr>
362<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
363<td>-1 in case of error, 0 otherwise.</td>
364</tr>
365</tbody>
366</table></div>
367</div>
368<hr>
369<div class="refsect2" lang="en">
370<h3>
371<a name="xmlStreamPush"></a>xmlStreamPush ()</h3>
372<pre class="programlisting">int	xmlStreamPush			(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns)<br>
373</pre>
374<p>Push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset. Otherwise the function will act as if it has been given an element-node.</p>
375<div class="variablelist"><table border="0">
376<col align="left">
377<tbody>
378<tr>
379<td><span class="term"><i><tt>stream</tt></i>:</span></td>
380<td>the stream context</td>
381</tr>
382<tr>
383<td><span class="term"><i><tt>name</tt></i>:</span></td>
384<td>the current name</td>
385</tr>
386<tr>
387<td><span class="term"><i><tt>ns</tt></i>:</span></td>
388<td>the namespace name</td>
389</tr>
390<tr>
391<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
392<td>-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.</td>
393</tr>
394</tbody>
395</table></div>
396</div>
397<hr>
398<div class="refsect2" lang="en">
399<h3>
400<a name="xmlStreamPushAttr"></a>xmlStreamPushAttr ()</h3>
401<pre class="programlisting">int	xmlStreamPushAttr		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns)<br>
402</pre>
403<p>Push new <a href="libxml2-SAX.html#attribute">attribute</a> data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset. Otherwise the function will act as if it has been given an attribute-node.</p>
404<div class="variablelist"><table border="0">
405<col align="left">
406<tbody>
407<tr>
408<td><span class="term"><i><tt>stream</tt></i>:</span></td>
409<td>the stream context</td>
410</tr>
411<tr>
412<td><span class="term"><i><tt>name</tt></i>:</span></td>
413<td>the current name</td>
414</tr>
415<tr>
416<td><span class="term"><i><tt>ns</tt></i>:</span></td>
417<td>the namespace name</td>
418</tr>
419<tr>
420<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
421<td>-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.</td>
422</tr>
423</tbody>
424</table></div>
425</div>
426<hr>
427<div class="refsect2" lang="en">
428<h3>
429<a name="xmlStreamPushNode"></a>xmlStreamPushNode ()</h3>
430<pre class="programlisting">int	xmlStreamPushNode		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns, <br>					 int nodeType)<br>
431</pre>
432<p>Push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset. Different from xmlStreamPush() this function can be fed with nodes of type: element-, attribute-, text-, cdata-section-, comment- and processing-instruction-node.</p>
433<div class="variablelist"><table border="0">
434<col align="left">
435<tbody>
436<tr>
437<td><span class="term"><i><tt>stream</tt></i>:</span></td>
438<td>the stream context</td>
439</tr>
440<tr>
441<td><span class="term"><i><tt>name</tt></i>:</span></td>
442<td>the current name</td>
443</tr>
444<tr>
445<td><span class="term"><i><tt>ns</tt></i>:</span></td>
446<td>the namespace name</td>
447</tr>
448<tr>
449<td><span class="term"><i><tt>nodeType</tt></i>:</span></td>
450<td>the type of the node being pushed</td>
451</tr>
452<tr>
453<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
454<td>-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.</td>
455</tr>
456</tbody>
457</table></div>
458</div>
459<hr>
460<div class="refsect2" lang="en">
461<h3>
462<a name="xmlStreamWantsAnyNode"></a>xmlStreamWantsAnyNode ()</h3>
463<pre class="programlisting">int	xmlStreamWantsAnyNode		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> streamCtxt)<br>
464</pre>
465<p>Query if the streaming pattern additionally needs to be fed with text-, cdata-section-, comment- and processing-instruction-nodes. If the result is 0 then only element-nodes and attribute-nodes need to be pushed.</p>
466<div class="variablelist"><table border="0">
467<col align="left">
468<tbody>
469<tr>
470<td><span class="term"><i><tt>streamCtxt</tt></i>:</span></td>
471<td>the stream context</td>
472</tr>
473<tr>
474<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
475<td>1 in case of need of nodes of the above described types, 0 otherwise. -1 on API errors.</td>
476</tr>
477</tbody>
478</table></div>
479</div>
480<hr>
481</div>
482</div>
483</body>
484</html>
485