1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>relaxng: implementation of the Relax-NG validation</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-pattern.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-schemasInternals.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">relaxng</span></h2> 20<p>relaxng - implementation of the Relax-NG validation</p> 21<p>implementation of the Relax-NG validation </p> 22<p>Author(s): Daniel Veillard </p> 23<div class="refsynopsisdiv"> 24<h2>Synopsis</h2> 25<pre class="synopsis">typedef struct _xmlRelaxNG <a href="#xmlRelaxNG">xmlRelaxNG</a>; 26typedef struct _xmlRelaxNGParserCtxt <a href="#xmlRelaxNGParserCtxt">xmlRelaxNGParserCtxt</a>; 27typedef <a href="libxml2-relaxng.html#xmlRelaxNGParserCtxt">xmlRelaxNGParserCtxt</a> * <a href="#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a>; 28typedef enum <a href="#xmlRelaxNGParserFlag">xmlRelaxNGParserFlag</a>; 29typedef <a href="libxml2-relaxng.html#xmlRelaxNG">xmlRelaxNG</a> * <a href="#xmlRelaxNGPtr">xmlRelaxNGPtr</a>; 30typedef struct _xmlRelaxNGValidCtxt <a href="#xmlRelaxNGValidCtxt">xmlRelaxNGValidCtxt</a>; 31typedef <a href="libxml2-relaxng.html#xmlRelaxNGValidCtxt">xmlRelaxNGValidCtxt</a> * <a href="#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a>; 32typedef enum <a href="#xmlRelaxNGValidErr">xmlRelaxNGValidErr</a>; 33void <a href="#xmlRelaxNGCleanupTypes">xmlRelaxNGCleanupTypes</a> (void); 34void <a href="#xmlRelaxNGDump">xmlRelaxNGDump</a> (FILE * output, <br> <a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema); 35void <a href="#xmlRelaxNGDumpTree">xmlRelaxNGDumpTree</a> (FILE * output, <br> <a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema); 36void <a href="#xmlRelaxNGFree">xmlRelaxNGFree</a> (<a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema); 37void <a href="#xmlRelaxNGFreeParserCtxt">xmlRelaxNGFreeParserCtxt</a> (<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt); 38void <a href="#xmlRelaxNGFreeValidCtxt">xmlRelaxNGFreeValidCtxt</a> (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt); 39int <a href="#xmlRelaxNGGetParserErrors">xmlRelaxNGGetParserErrors</a> (<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> * err, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> * warn, <br> void ** ctx); 40int <a href="#xmlRelaxNGGetValidErrors">xmlRelaxNGGetValidErrors</a> (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> * err, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> * warn, <br> void ** ctx); 41int <a href="#xmlRelaxNGInitTypes">xmlRelaxNGInitTypes</a> (void); 42<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> <a href="#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc); 43<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> <a href="#xmlRelaxNGNewMemParserCtxt">xmlRelaxNGNewMemParserCtxt</a> (const char * buffer, <br> int size); 44<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> <a href="#xmlRelaxNGNewParserCtxt">xmlRelaxNGNewParserCtxt</a> (const char * URL); 45<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> <a href="#xmlRelaxNGNewValidCtxt">xmlRelaxNGNewValidCtxt</a> (<a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema); 46<a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> <a href="#xmlRelaxNGParse">xmlRelaxNGParse</a> (<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt); 47void <a href="#xmlRelaxNGSetParserErrors">xmlRelaxNGSetParserErrors</a> (<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> err, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> warn, <br> void * ctx); 48void <a href="#xmlRelaxNGSetParserStructuredErrors">xmlRelaxNGSetParserStructuredErrors</a> (<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br> <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br> void * ctx); 49void <a href="#xmlRelaxNGSetValidErrors">xmlRelaxNGSetValidErrors</a> (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> err, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> warn, <br> void * ctx); 50void <a href="#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a> (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br> void * ctx); 51int <a href="#xmlRelaxNGValidateDoc">xmlRelaxNGValidateDoc</a> (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc); 52int <a href="#xmlRelaxNGValidateFullElement">xmlRelaxNGValidateFullElement</a> (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem); 53int <a href="#xmlRelaxNGValidatePopElement">xmlRelaxNGValidatePopElement</a> (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem); 54int <a href="#xmlRelaxNGValidatePushCData">xmlRelaxNGValidatePushCData</a> (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data, <br> int len); 55int <a href="#xmlRelaxNGValidatePushElement">xmlRelaxNGValidatePushElement</a> (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem); 56typedef void <a href="#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> (void * ctx, <br> const char * msg, <br> ... ...); 57typedef void <a href="#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> (void * ctx, <br> const char * msg, <br> ... ...); 58int <a href="#xmlRelaxParserSetFlag">xmlRelaxParserSetFlag</a> (<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br> int flags); 59</pre> 60</div> 61<div class="refsect1" lang="en"><h2>Description</h2></div> 62<div class="refsect1" lang="en"> 63<h2>Details</h2> 64<div class="refsect2" lang="en"> 65<div class="refsect2" lang="en"> 66<h3> 67<a name="xmlRelaxNG">Structure </a>xmlRelaxNG</h3> 68<pre class="programlisting">struct _xmlRelaxNG { 69The content of this structure is not made public by the API. 70} xmlRelaxNG; 71</pre> 72<p></p> 73</div> 74<hr> 75<div class="refsect2" lang="en"> 76<h3> 77<a name="xmlRelaxNGParserCtxt">Structure </a>xmlRelaxNGParserCtxt</h3> 78<pre class="programlisting">struct _xmlRelaxNGParserCtxt { 79The content of this structure is not made public by the API. 80} xmlRelaxNGParserCtxt; 81</pre> 82<p></p> 83</div> 84<hr> 85<div class="refsect2" lang="en"> 86<h3> 87<a name="xmlRelaxNGParserCtxtPtr">Typedef </a>xmlRelaxNGParserCtxtPtr</h3> 88<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGParserCtxt">xmlRelaxNGParserCtxt</a> * xmlRelaxNGParserCtxtPtr; 89</pre> 90<p></p> 91</div> 92<hr> 93<div class="refsect2" lang="en"> 94<h3> 95<a name="xmlRelaxNGParserFlag">Enum </a>xmlRelaxNGParserFlag</h3> 96<pre class="programlisting">enum <a href="#xmlRelaxNGParserFlag">xmlRelaxNGParserFlag</a> { 97 <a name="XML_RELAXNGP_NONE">XML_RELAXNGP_NONE</a> = 0 98 <a name="XML_RELAXNGP_FREE_DOC">XML_RELAXNGP_FREE_DOC</a> = 1 99 <a name="XML_RELAXNGP_CRNG">XML_RELAXNGP_CRNG</a> = 2 100}; 101</pre> 102<p></p> 103</div> 104<hr> 105<div class="refsect2" lang="en"> 106<h3> 107<a name="xmlRelaxNGPtr">Typedef </a>xmlRelaxNGPtr</h3> 108<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNG">xmlRelaxNG</a> * xmlRelaxNGPtr; 109</pre> 110<p></p> 111</div> 112<hr> 113<div class="refsect2" lang="en"> 114<h3> 115<a name="xmlRelaxNGValidCtxt">Structure </a>xmlRelaxNGValidCtxt</h3> 116<pre class="programlisting">struct _xmlRelaxNGValidCtxt { 117The content of this structure is not made public by the API. 118} xmlRelaxNGValidCtxt; 119</pre> 120<p></p> 121</div> 122<hr> 123<div class="refsect2" lang="en"> 124<h3> 125<a name="xmlRelaxNGValidCtxtPtr">Typedef </a>xmlRelaxNGValidCtxtPtr</h3> 126<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGValidCtxt">xmlRelaxNGValidCtxt</a> * xmlRelaxNGValidCtxtPtr; 127</pre> 128<p></p> 129</div> 130<hr> 131<div class="refsect2" lang="en"> 132<h3> 133<a name="xmlRelaxNGValidErr">Enum </a>xmlRelaxNGValidErr</h3> 134<pre class="programlisting">enum <a href="#xmlRelaxNGValidErr">xmlRelaxNGValidErr</a> { 135 <a name="XML_RELAXNG_OK">XML_RELAXNG_OK</a> = 0 136 <a name="XML_RELAXNG_ERR_MEMORY">XML_RELAXNG_ERR_MEMORY</a> = 1 137 <a name="XML_RELAXNG_ERR_TYPE">XML_RELAXNG_ERR_TYPE</a> = 2 138 <a name="XML_RELAXNG_ERR_TYPEVAL">XML_RELAXNG_ERR_TYPEVAL</a> = 3 139 <a name="XML_RELAXNG_ERR_DUPID">XML_RELAXNG_ERR_DUPID</a> = 4 140 <a name="XML_RELAXNG_ERR_TYPECMP">XML_RELAXNG_ERR_TYPECMP</a> = 5 141 <a name="XML_RELAXNG_ERR_NOSTATE">XML_RELAXNG_ERR_NOSTATE</a> = 6 142 <a name="XML_RELAXNG_ERR_NODEFINE">XML_RELAXNG_ERR_NODEFINE</a> = 7 143 <a name="XML_RELAXNG_ERR_LISTEXTRA">XML_RELAXNG_ERR_LISTEXTRA</a> = 8 144 <a name="XML_RELAXNG_ERR_LISTEMPTY">XML_RELAXNG_ERR_LISTEMPTY</a> = 9 145 <a name="XML_RELAXNG_ERR_INTERNODATA">XML_RELAXNG_ERR_INTERNODATA</a> = 10 146 <a name="XML_RELAXNG_ERR_INTERSEQ">XML_RELAXNG_ERR_INTERSEQ</a> = 11 147 <a name="XML_RELAXNG_ERR_INTEREXTRA">XML_RELAXNG_ERR_INTEREXTRA</a> = 12 148 <a name="XML_RELAXNG_ERR_ELEMNAME">XML_RELAXNG_ERR_ELEMNAME</a> = 13 149 <a name="XML_RELAXNG_ERR_ATTRNAME">XML_RELAXNG_ERR_ATTRNAME</a> = 14 150 <a name="XML_RELAXNG_ERR_ELEMNONS">XML_RELAXNG_ERR_ELEMNONS</a> = 15 151 <a name="XML_RELAXNG_ERR_ATTRNONS">XML_RELAXNG_ERR_ATTRNONS</a> = 16 152 <a name="XML_RELAXNG_ERR_ELEMWRONGNS">XML_RELAXNG_ERR_ELEMWRONGNS</a> = 17 153 <a name="XML_RELAXNG_ERR_ATTRWRONGNS">XML_RELAXNG_ERR_ATTRWRONGNS</a> = 18 154 <a name="XML_RELAXNG_ERR_ELEMEXTRANS">XML_RELAXNG_ERR_ELEMEXTRANS</a> = 19 155 <a name="XML_RELAXNG_ERR_ATTREXTRANS">XML_RELAXNG_ERR_ATTREXTRANS</a> = 20 156 <a name="XML_RELAXNG_ERR_ELEMNOTEMPTY">XML_RELAXNG_ERR_ELEMNOTEMPTY</a> = 21 157 <a name="XML_RELAXNG_ERR_NOELEM">XML_RELAXNG_ERR_NOELEM</a> = 22 158 <a name="XML_RELAXNG_ERR_NOTELEM">XML_RELAXNG_ERR_NOTELEM</a> = 23 159 <a name="XML_RELAXNG_ERR_ATTRVALID">XML_RELAXNG_ERR_ATTRVALID</a> = 24 160 <a name="XML_RELAXNG_ERR_CONTENTVALID">XML_RELAXNG_ERR_CONTENTVALID</a> = 25 161 <a name="XML_RELAXNG_ERR_EXTRACONTENT">XML_RELAXNG_ERR_EXTRACONTENT</a> = 26 162 <a name="XML_RELAXNG_ERR_INVALIDATTR">XML_RELAXNG_ERR_INVALIDATTR</a> = 27 163 <a name="XML_RELAXNG_ERR_DATAELEM">XML_RELAXNG_ERR_DATAELEM</a> = 28 164 <a name="XML_RELAXNG_ERR_VALELEM">XML_RELAXNG_ERR_VALELEM</a> = 29 165 <a name="XML_RELAXNG_ERR_LISTELEM">XML_RELAXNG_ERR_LISTELEM</a> = 30 166 <a name="XML_RELAXNG_ERR_DATATYPE">XML_RELAXNG_ERR_DATATYPE</a> = 31 167 <a name="XML_RELAXNG_ERR_VALUE">XML_RELAXNG_ERR_VALUE</a> = 32 168 <a name="XML_RELAXNG_ERR_LIST">XML_RELAXNG_ERR_LIST</a> = 33 169 <a name="XML_RELAXNG_ERR_NOGRAMMAR">XML_RELAXNG_ERR_NOGRAMMAR</a> = 34 170 <a name="XML_RELAXNG_ERR_EXTRADATA">XML_RELAXNG_ERR_EXTRADATA</a> = 35 171 <a name="XML_RELAXNG_ERR_LACKDATA">XML_RELAXNG_ERR_LACKDATA</a> = 36 172 <a name="XML_RELAXNG_ERR_INTERNAL">XML_RELAXNG_ERR_INTERNAL</a> = 37 173 <a name="XML_RELAXNG_ERR_ELEMWRONG">XML_RELAXNG_ERR_ELEMWRONG</a> = 38 174 <a name="XML_RELAXNG_ERR_TEXTWRONG">XML_RELAXNG_ERR_TEXTWRONG</a> = 39 175}; 176</pre> 177<p></p> 178</div> 179<hr> 180<div class="refsect2" lang="en"> 181<h3> 182<a name="xmlRelaxNGValidityErrorFunc"></a>Function type xmlRelaxNGValidityErrorFunc</h3> 183<pre class="programlisting">void xmlRelaxNGValidityErrorFunc (void * ctx, <br> const char * msg, <br> ... ...)<br> 184</pre> 185<p>Signature of an error callback from a Relax-NG validation</p> 186<div class="variablelist"><table border="0"> 187<col align="left"> 188<tbody> 189<tr> 190<td><span class="term"><i><tt>ctx</tt></i>:</span></td> 191<td>the validation context</td> 192</tr> 193<tr> 194<td><span class="term"><i><tt>msg</tt></i>:</span></td> 195<td>the message</td> 196</tr> 197<tr> 198<td><span class="term"><i><tt>...</tt></i>:</span></td> 199<td>extra arguments</td> 200</tr> 201</tbody> 202</table></div> 203</div> 204<hr> 205<div class="refsect2" lang="en"> 206<h3> 207<a name="xmlRelaxNGValidityWarningFunc"></a>Function type xmlRelaxNGValidityWarningFunc</h3> 208<pre class="programlisting">void xmlRelaxNGValidityWarningFunc (void * ctx, <br> const char * msg, <br> ... ...)<br> 209</pre> 210<p>Signature of a warning callback from a Relax-NG validation</p> 211<div class="variablelist"><table border="0"> 212<col align="left"> 213<tbody> 214<tr> 215<td><span class="term"><i><tt>ctx</tt></i>:</span></td> 216<td>the validation context</td> 217</tr> 218<tr> 219<td><span class="term"><i><tt>msg</tt></i>:</span></td> 220<td>the message</td> 221</tr> 222<tr> 223<td><span class="term"><i><tt>...</tt></i>:</span></td> 224<td>extra arguments</td> 225</tr> 226</tbody> 227</table></div> 228</div> 229<hr> 230<div class="refsect2" lang="en"> 231<h3> 232<a name="xmlRelaxNGCleanupTypes"></a>xmlRelaxNGCleanupTypes ()</h3> 233<pre class="programlisting">void xmlRelaxNGCleanupTypes (void)<br> 234</pre> 235<p>DEPRECATED: This function will be made private. Call <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> to free global state but see the warnings there. <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> should be only called once at program exit. In most cases, you don't have call cleanup functions at all. Cleanup the default Schemas type library associated to RelaxNG</p> 236</div> 237<hr> 238<div class="refsect2" lang="en"> 239<h3> 240<a name="xmlRelaxNGDump"></a>xmlRelaxNGDump ()</h3> 241<pre class="programlisting">void xmlRelaxNGDump (FILE * output, <br> <a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema)<br> 242</pre> 243<p>Dump a RelaxNG structure back</p> 244<div class="variablelist"><table border="0"> 245<col align="left"> 246<tbody> 247<tr> 248<td><span class="term"><i><tt>output</tt></i>:</span></td> 249<td>the file output</td> 250</tr> 251<tr> 252<td><span class="term"><i><tt>schema</tt></i>:</span></td> 253<td>a schema structure</td> 254</tr> 255</tbody> 256</table></div> 257</div> 258<hr> 259<div class="refsect2" lang="en"> 260<h3> 261<a name="xmlRelaxNGDumpTree"></a>xmlRelaxNGDumpTree ()</h3> 262<pre class="programlisting">void xmlRelaxNGDumpTree (FILE * output, <br> <a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema)<br> 263</pre> 264<p>Dump the transformed RelaxNG tree.</p> 265<div class="variablelist"><table border="0"> 266<col align="left"> 267<tbody> 268<tr> 269<td><span class="term"><i><tt>output</tt></i>:</span></td> 270<td>the file output</td> 271</tr> 272<tr> 273<td><span class="term"><i><tt>schema</tt></i>:</span></td> 274<td>a schema structure</td> 275</tr> 276</tbody> 277</table></div> 278</div> 279<hr> 280<div class="refsect2" lang="en"> 281<h3> 282<a name="xmlRelaxNGFree"></a>xmlRelaxNGFree ()</h3> 283<pre class="programlisting">void xmlRelaxNGFree (<a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema)<br> 284</pre> 285<p>Deallocate a RelaxNG structure.</p> 286<div class="variablelist"><table border="0"> 287<col align="left"> 288<tbody><tr> 289<td><span class="term"><i><tt>schema</tt></i>:</span></td> 290<td>a schema structure</td> 291</tr></tbody> 292</table></div> 293</div> 294<hr> 295<div class="refsect2" lang="en"> 296<h3> 297<a name="xmlRelaxNGFreeParserCtxt"></a>xmlRelaxNGFreeParserCtxt ()</h3> 298<pre class="programlisting">void xmlRelaxNGFreeParserCtxt (<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt)<br> 299</pre> 300<p>Free the resources associated to the schema parser context</p> 301<div class="variablelist"><table border="0"> 302<col align="left"> 303<tbody><tr> 304<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 305<td>the schema parser context</td> 306</tr></tbody> 307</table></div> 308</div> 309<hr> 310<div class="refsect2" lang="en"> 311<h3> 312<a name="xmlRelaxNGFreeValidCtxt"></a>xmlRelaxNGFreeValidCtxt ()</h3> 313<pre class="programlisting">void xmlRelaxNGFreeValidCtxt (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt)<br> 314</pre> 315<p>Free the resources associated to the schema validation context</p> 316<div class="variablelist"><table border="0"> 317<col align="left"> 318<tbody><tr> 319<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 320<td>the schema validation context</td> 321</tr></tbody> 322</table></div> 323</div> 324<hr> 325<div class="refsect2" lang="en"> 326<h3> 327<a name="xmlRelaxNGGetParserErrors"></a>xmlRelaxNGGetParserErrors ()</h3> 328<pre class="programlisting">int xmlRelaxNGGetParserErrors (<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> * err, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> * warn, <br> void ** ctx)<br> 329</pre> 330<p>Get the callback information used to handle errors for a validation context</p> 331<div class="variablelist"><table border="0"> 332<col align="left"> 333<tbody> 334<tr> 335<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 336<td>a Relax-NG validation context</td> 337</tr> 338<tr> 339<td><span class="term"><i><tt>err</tt></i>:</span></td> 340<td>the error callback result</td> 341</tr> 342<tr> 343<td><span class="term"><i><tt>warn</tt></i>:</span></td> 344<td>the warning callback result</td> 345</tr> 346<tr> 347<td><span class="term"><i><tt>ctx</tt></i>:</span></td> 348<td>contextual data for the callbacks result</td> 349</tr> 350<tr> 351<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 352<td>-1 in case of failure, 0 otherwise.</td> 353</tr> 354</tbody> 355</table></div> 356</div> 357<hr> 358<div class="refsect2" lang="en"> 359<h3> 360<a name="xmlRelaxNGGetValidErrors"></a>xmlRelaxNGGetValidErrors ()</h3> 361<pre class="programlisting">int xmlRelaxNGGetValidErrors (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> * err, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> * warn, <br> void ** ctx)<br> 362</pre> 363<p>Get the error and warning callback information</p> 364<div class="variablelist"><table border="0"> 365<col align="left"> 366<tbody> 367<tr> 368<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 369<td>a Relax-NG validation context</td> 370</tr> 371<tr> 372<td><span class="term"><i><tt>err</tt></i>:</span></td> 373<td>the error function result</td> 374</tr> 375<tr> 376<td><span class="term"><i><tt>warn</tt></i>:</span></td> 377<td>the warning function result</td> 378</tr> 379<tr> 380<td><span class="term"><i><tt>ctx</tt></i>:</span></td> 381<td>the functions context result</td> 382</tr> 383<tr> 384<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 385<td>-1 in case of error and 0 otherwise</td> 386</tr> 387</tbody> 388</table></div> 389</div> 390<hr> 391<div class="refsect2" lang="en"> 392<h3> 393<a name="xmlRelaxNGInitTypes"></a>xmlRelaxNGInitTypes ()</h3> 394<pre class="programlisting">int xmlRelaxNGInitTypes (void)<br> 395</pre> 396<p>Initialize the default type libraries.</p> 397<div class="variablelist"><table border="0"> 398<col align="left"> 399<tbody><tr> 400<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 401<td>0 in case of success and -1 in case of error.</td> 402</tr></tbody> 403</table></div> 404</div> 405<hr> 406<div class="refsect2" lang="en"> 407<h3> 408<a name="xmlRelaxNGNewDocParserCtxt"></a>xmlRelaxNGNewDocParserCtxt ()</h3> 409<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> xmlRelaxNGNewDocParserCtxt (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br> 410</pre> 411<p>Create an XML RelaxNGs parser context for that document. Note: since the process of compiling a RelaxNG schemas modifies the document, the @doc parameter is duplicated internally.</p> 412<div class="variablelist"><table border="0"> 413<col align="left"> 414<tbody> 415<tr> 416<td><span class="term"><i><tt>doc</tt></i>:</span></td> 417<td>a preparsed document tree</td> 418</tr> 419<tr> 420<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 421<td>the parser context or NULL in case of error</td> 422</tr> 423</tbody> 424</table></div> 425</div> 426<hr> 427<div class="refsect2" lang="en"> 428<h3> 429<a name="xmlRelaxNGNewMemParserCtxt"></a>xmlRelaxNGNewMemParserCtxt ()</h3> 430<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> xmlRelaxNGNewMemParserCtxt (const char * buffer, <br> int size)<br> 431</pre> 432<p>Create an XML RelaxNGs parse context for that memory buffer expected to contain an XML RelaxNGs file.</p> 433<div class="variablelist"><table border="0"> 434<col align="left"> 435<tbody> 436<tr> 437<td><span class="term"><i><tt>buffer</tt></i>:</span></td> 438<td>a pointer to a char array containing the schemas</td> 439</tr> 440<tr> 441<td><span class="term"><i><tt>size</tt></i>:</span></td> 442<td>the size of the array</td> 443</tr> 444<tr> 445<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 446<td>the parser context or NULL in case of error</td> 447</tr> 448</tbody> 449</table></div> 450</div> 451<hr> 452<div class="refsect2" lang="en"> 453<h3> 454<a name="xmlRelaxNGNewParserCtxt"></a>xmlRelaxNGNewParserCtxt ()</h3> 455<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> xmlRelaxNGNewParserCtxt (const char * URL)<br> 456</pre> 457<p>Create an XML RelaxNGs parse context for that file/resource expected to contain an XML RelaxNGs file.</p> 458<div class="variablelist"><table border="0"> 459<col align="left"> 460<tbody> 461<tr> 462<td><span class="term"><i><tt>URL</tt></i>:</span></td> 463<td>the location of the schema</td> 464</tr> 465<tr> 466<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 467<td>the parser context or NULL in case of error</td> 468</tr> 469</tbody> 470</table></div> 471</div> 472<hr> 473<div class="refsect2" lang="en"> 474<h3> 475<a name="xmlRelaxNGNewValidCtxt"></a>xmlRelaxNGNewValidCtxt ()</h3> 476<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> xmlRelaxNGNewValidCtxt (<a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema)<br> 477</pre> 478<p>Create an XML RelaxNGs validation context based on the given schema</p> 479<div class="variablelist"><table border="0"> 480<col align="left"> 481<tbody> 482<tr> 483<td><span class="term"><i><tt>schema</tt></i>:</span></td> 484<td>a precompiled XML RelaxNGs</td> 485</tr> 486<tr> 487<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 488<td>the validation context or NULL in case of error</td> 489</tr> 490</tbody> 491</table></div> 492</div> 493<hr> 494<div class="refsect2" lang="en"> 495<h3> 496<a name="xmlRelaxNGParse"></a>xmlRelaxNGParse ()</h3> 497<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> xmlRelaxNGParse (<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt)<br> 498</pre> 499<p>parse a schema definition resource and build an internal XML Schema structure which can be used to validate instances.</p> 500<div class="variablelist"><table border="0"> 501<col align="left"> 502<tbody> 503<tr> 504<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 505<td>a Relax-NG parser context</td> 506</tr> 507<tr> 508<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 509<td>the internal XML RelaxNG structure built from the resource or NULL in case of error</td> 510</tr> 511</tbody> 512</table></div> 513</div> 514<hr> 515<div class="refsect2" lang="en"> 516<h3> 517<a name="xmlRelaxNGSetParserErrors"></a>xmlRelaxNGSetParserErrors ()</h3> 518<pre class="programlisting">void xmlRelaxNGSetParserErrors (<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> err, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> warn, <br> void * ctx)<br> 519</pre> 520<p>DEPRECATED: Use <a href="libxml2-relaxng.html#xmlRelaxNGSetParserStructuredErrors">xmlRelaxNGSetParserStructuredErrors</a>. Set the callback functions used to handle errors for a validation context</p> 521<div class="variablelist"><table border="0"> 522<col align="left"> 523<tbody> 524<tr> 525<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 526<td>a Relax-NG validation context</td> 527</tr> 528<tr> 529<td><span class="term"><i><tt>err</tt></i>:</span></td> 530<td>the error callback</td> 531</tr> 532<tr> 533<td><span class="term"><i><tt>warn</tt></i>:</span></td> 534<td>the warning callback</td> 535</tr> 536<tr> 537<td><span class="term"><i><tt>ctx</tt></i>:</span></td> 538<td>contextual data for the callbacks</td> 539</tr> 540</tbody> 541</table></div> 542</div> 543<hr> 544<div class="refsect2" lang="en"> 545<h3> 546<a name="xmlRelaxNGSetParserStructuredErrors"></a>xmlRelaxNGSetParserStructuredErrors ()</h3> 547<pre class="programlisting">void xmlRelaxNGSetParserStructuredErrors (<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br> <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br> void * ctx)<br> 548</pre> 549<p>Set the callback functions used to handle errors for a parsing context</p> 550<div class="variablelist"><table border="0"> 551<col align="left"> 552<tbody> 553<tr> 554<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 555<td>a Relax-NG parser context</td> 556</tr> 557<tr> 558<td><span class="term"><i><tt>serror</tt></i>:</span></td> 559<td>the error callback</td> 560</tr> 561<tr> 562<td><span class="term"><i><tt>ctx</tt></i>:</span></td> 563<td>contextual data for the callbacks</td> 564</tr> 565</tbody> 566</table></div> 567</div> 568<hr> 569<div class="refsect2" lang="en"> 570<h3> 571<a name="xmlRelaxNGSetValidErrors"></a>xmlRelaxNGSetValidErrors ()</h3> 572<pre class="programlisting">void xmlRelaxNGSetValidErrors (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> err, <br> <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> warn, <br> void * ctx)<br> 573</pre> 574<p>DEPRECATED: Use <a href="libxml2-relaxng.html#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a>. Set the error and warning callback information</p> 575<div class="variablelist"><table border="0"> 576<col align="left"> 577<tbody> 578<tr> 579<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 580<td>a Relax-NG validation context</td> 581</tr> 582<tr> 583<td><span class="term"><i><tt>err</tt></i>:</span></td> 584<td>the error function</td> 585</tr> 586<tr> 587<td><span class="term"><i><tt>warn</tt></i>:</span></td> 588<td>the warning function</td> 589</tr> 590<tr> 591<td><span class="term"><i><tt>ctx</tt></i>:</span></td> 592<td>the functions context</td> 593</tr> 594</tbody> 595</table></div> 596</div> 597<hr> 598<div class="refsect2" lang="en"> 599<h3> 600<a name="xmlRelaxNGSetValidStructuredErrors"></a>xmlRelaxNGSetValidStructuredErrors ()</h3> 601<pre class="programlisting">void xmlRelaxNGSetValidStructuredErrors (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br> void * ctx)<br> 602</pre> 603<p>Set the structured error callback</p> 604<div class="variablelist"><table border="0"> 605<col align="left"> 606<tbody> 607<tr> 608<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 609<td>a Relax-NG validation context</td> 610</tr> 611<tr> 612<td><span class="term"><i><tt>serror</tt></i>:</span></td> 613<td>the structured error function</td> 614</tr> 615<tr> 616<td><span class="term"><i><tt>ctx</tt></i>:</span></td> 617<td>the functions context</td> 618</tr> 619</tbody> 620</table></div> 621</div> 622<hr> 623<div class="refsect2" lang="en"> 624<h3> 625<a name="xmlRelaxNGValidateDoc"></a>xmlRelaxNGValidateDoc ()</h3> 626<pre class="programlisting">int xmlRelaxNGValidateDoc (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br> 627</pre> 628<p>Validate a document tree in memory.</p> 629<div class="variablelist"><table border="0"> 630<col align="left"> 631<tbody> 632<tr> 633<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 634<td>a Relax-NG validation context</td> 635</tr> 636<tr> 637<td><span class="term"><i><tt>doc</tt></i>:</span></td> 638<td>a parsed document tree</td> 639</tr> 640<tr> 641<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 642<td>0 if the document is valid, a positive error code number otherwise and -1 in case of internal or API error.</td> 643</tr> 644</tbody> 645</table></div> 646</div> 647<hr> 648<div class="refsect2" lang="en"> 649<h3> 650<a name="xmlRelaxNGValidateFullElement"></a>xmlRelaxNGValidateFullElement ()</h3> 651<pre class="programlisting">int xmlRelaxNGValidateFullElement (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br> 652</pre> 653<p>Validate a full subtree when xmlRelaxNGValidatePushElement() returned 0 and the content of the node has been expanded.</p> 654<div class="variablelist"><table border="0"> 655<col align="left"> 656<tbody> 657<tr> 658<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 659<td>the validation context</td> 660</tr> 661<tr> 662<td><span class="term"><i><tt>doc</tt></i>:</span></td> 663<td>a document instance</td> 664</tr> 665<tr> 666<td><span class="term"><i><tt>elem</tt></i>:</span></td> 667<td>an element instance</td> 668</tr> 669<tr> 670<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 671<td>1 if no validation problem was found or -1 in case of error.</td> 672</tr> 673</tbody> 674</table></div> 675</div> 676<hr> 677<div class="refsect2" lang="en"> 678<h3> 679<a name="xmlRelaxNGValidatePopElement"></a>xmlRelaxNGValidatePopElement ()</h3> 680<pre class="programlisting">int xmlRelaxNGValidatePopElement (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br> 681</pre> 682<p>Pop the element end from the RelaxNG validation stack.</p> 683<div class="variablelist"><table border="0"> 684<col align="left"> 685<tbody> 686<tr> 687<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 688<td>the RelaxNG validation context</td> 689</tr> 690<tr> 691<td><span class="term"><i><tt>doc</tt></i>:</span></td> 692<td>a document instance</td> 693</tr> 694<tr> 695<td><span class="term"><i><tt>elem</tt></i>:</span></td> 696<td>an element instance</td> 697</tr> 698<tr> 699<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 700<td>1 if no validation problem was found or 0 otherwise</td> 701</tr> 702</tbody> 703</table></div> 704</div> 705<hr> 706<div class="refsect2" lang="en"> 707<h3> 708<a name="xmlRelaxNGValidatePushCData"></a>xmlRelaxNGValidatePushCData ()</h3> 709<pre class="programlisting">int xmlRelaxNGValidatePushCData (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data, <br> int len)<br> 710</pre> 711<p>check the CData parsed for validation in the current stack</p> 712<div class="variablelist"><table border="0"> 713<col align="left"> 714<tbody> 715<tr> 716<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 717<td>the RelaxNG validation context</td> 718</tr> 719<tr> 720<td><span class="term"><i><tt>data</tt></i>:</span></td> 721<td>some character data read</td> 722</tr> 723<tr> 724<td><span class="term"><i><tt>len</tt></i>:</span></td> 725<td>the length of the data</td> 726</tr> 727<tr> 728<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 729<td>1 if no validation problem was found or -1 otherwise</td> 730</tr> 731</tbody> 732</table></div> 733</div> 734<hr> 735<div class="refsect2" lang="en"> 736<h3> 737<a name="xmlRelaxNGValidatePushElement"></a>xmlRelaxNGValidatePushElement ()</h3> 738<pre class="programlisting">int xmlRelaxNGValidatePushElement (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br> 739</pre> 740<p>Push a new element start on the RelaxNG validation stack.</p> 741<div class="variablelist"><table border="0"> 742<col align="left"> 743<tbody> 744<tr> 745<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 746<td>the validation context</td> 747</tr> 748<tr> 749<td><span class="term"><i><tt>doc</tt></i>:</span></td> 750<td>a document instance</td> 751</tr> 752<tr> 753<td><span class="term"><i><tt>elem</tt></i>:</span></td> 754<td>an element instance</td> 755</tr> 756<tr> 757<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 758<td>1 if no validation problem was found or 0 if validating the element requires a full node, and -1 in case of error.</td> 759</tr> 760</tbody> 761</table></div> 762</div> 763<hr> 764<div class="refsect2" lang="en"> 765<h3> 766<a name="xmlRelaxParserSetFlag"></a>xmlRelaxParserSetFlag ()</h3> 767<pre class="programlisting">int xmlRelaxParserSetFlag (<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br> int flags)<br> 768</pre> 769<p>Semi private function used to pass information to a parser context which are a combination of <a href="libxml2-relaxng.html#xmlRelaxNGParserFlag">xmlRelaxNGParserFlag</a> .</p> 770<div class="variablelist"><table border="0"> 771<col align="left"> 772<tbody> 773<tr> 774<td><span class="term"><i><tt>ctxt</tt></i>:</span></td> 775<td>a RelaxNG parser context</td> 776</tr> 777<tr> 778<td><span class="term"><i><tt>flags</tt></i>:</span></td> 779<td>a set of flags values</td> 780</tr> 781<tr> 782<td><span class="term"><i><tt>Returns</tt></i>:</span></td> 783<td>0 if success and -1 in case of error</td> 784</tr> 785</tbody> 786</table></div> 787</div> 788<hr> 789</div> 790</div> 791</body> 792</html> 793