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