xref: /aosp_15_r20/external/libxml2/include/libxml/relaxng.h (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1*7c568831SAndroid Build Coastguard Worker /*
2*7c568831SAndroid Build Coastguard Worker  * Summary: implementation of the Relax-NG validation
3*7c568831SAndroid Build Coastguard Worker  * Description: implementation of the Relax-NG validation
4*7c568831SAndroid Build Coastguard Worker  *
5*7c568831SAndroid Build Coastguard Worker  * Copy: See Copyright for the status of this software.
6*7c568831SAndroid Build Coastguard Worker  *
7*7c568831SAndroid Build Coastguard Worker  * Author: Daniel Veillard
8*7c568831SAndroid Build Coastguard Worker  */
9*7c568831SAndroid Build Coastguard Worker 
10*7c568831SAndroid Build Coastguard Worker #ifndef __XML_RELAX_NG__
11*7c568831SAndroid Build Coastguard Worker #define __XML_RELAX_NG__
12*7c568831SAndroid Build Coastguard Worker 
13*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlversion.h>
14*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlerror.h>
15*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlstring.h>
16*7c568831SAndroid Build Coastguard Worker #include <libxml/tree.h>
17*7c568831SAndroid Build Coastguard Worker #include <libxml/parser.h>
18*7c568831SAndroid Build Coastguard Worker 
19*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_SCHEMAS_ENABLED
20*7c568831SAndroid Build Coastguard Worker 
21*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus
22*7c568831SAndroid Build Coastguard Worker extern "C" {
23*7c568831SAndroid Build Coastguard Worker #endif
24*7c568831SAndroid Build Coastguard Worker 
25*7c568831SAndroid Build Coastguard Worker typedef struct _xmlRelaxNG xmlRelaxNG;
26*7c568831SAndroid Build Coastguard Worker typedef xmlRelaxNG *xmlRelaxNGPtr;
27*7c568831SAndroid Build Coastguard Worker 
28*7c568831SAndroid Build Coastguard Worker 
29*7c568831SAndroid Build Coastguard Worker /**
30*7c568831SAndroid Build Coastguard Worker  * xmlRelaxNGValidityErrorFunc:
31*7c568831SAndroid Build Coastguard Worker  * @ctx: the validation context
32*7c568831SAndroid Build Coastguard Worker  * @msg: the message
33*7c568831SAndroid Build Coastguard Worker  * @...: extra arguments
34*7c568831SAndroid Build Coastguard Worker  *
35*7c568831SAndroid Build Coastguard Worker  * Signature of an error callback from a Relax-NG validation
36*7c568831SAndroid Build Coastguard Worker  */
37*7c568831SAndroid Build Coastguard Worker typedef void (*xmlRelaxNGValidityErrorFunc) (void *ctx,
38*7c568831SAndroid Build Coastguard Worker 						      const char *msg,
39*7c568831SAndroid Build Coastguard Worker 						      ...) LIBXML_ATTR_FORMAT(2,3);
40*7c568831SAndroid Build Coastguard Worker 
41*7c568831SAndroid Build Coastguard Worker /**
42*7c568831SAndroid Build Coastguard Worker  * xmlRelaxNGValidityWarningFunc:
43*7c568831SAndroid Build Coastguard Worker  * @ctx: the validation context
44*7c568831SAndroid Build Coastguard Worker  * @msg: the message
45*7c568831SAndroid Build Coastguard Worker  * @...: extra arguments
46*7c568831SAndroid Build Coastguard Worker  *
47*7c568831SAndroid Build Coastguard Worker  * Signature of a warning callback from a Relax-NG validation
48*7c568831SAndroid Build Coastguard Worker  */
49*7c568831SAndroid Build Coastguard Worker typedef void (*xmlRelaxNGValidityWarningFunc) (void *ctx,
50*7c568831SAndroid Build Coastguard Worker 							const char *msg,
51*7c568831SAndroid Build Coastguard Worker 							...) LIBXML_ATTR_FORMAT(2,3);
52*7c568831SAndroid Build Coastguard Worker 
53*7c568831SAndroid Build Coastguard Worker /**
54*7c568831SAndroid Build Coastguard Worker  * A schemas validation context
55*7c568831SAndroid Build Coastguard Worker  */
56*7c568831SAndroid Build Coastguard Worker typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
57*7c568831SAndroid Build Coastguard Worker typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
58*7c568831SAndroid Build Coastguard Worker 
59*7c568831SAndroid Build Coastguard Worker typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
60*7c568831SAndroid Build Coastguard Worker typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
61*7c568831SAndroid Build Coastguard Worker 
62*7c568831SAndroid Build Coastguard Worker /*
63*7c568831SAndroid Build Coastguard Worker  * xmlRelaxNGValidErr:
64*7c568831SAndroid Build Coastguard Worker  *
65*7c568831SAndroid Build Coastguard Worker  * List of possible Relax NG validation errors
66*7c568831SAndroid Build Coastguard Worker  */
67*7c568831SAndroid Build Coastguard Worker typedef enum {
68*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_OK = 0,
69*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_MEMORY,
70*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_TYPE,
71*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_TYPEVAL,
72*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_DUPID,
73*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_TYPECMP,
74*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_NOSTATE,
75*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_NODEFINE,
76*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_LISTEXTRA,
77*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_LISTEMPTY,
78*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_INTERNODATA,
79*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_INTERSEQ,
80*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_INTEREXTRA,
81*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_ELEMNAME,
82*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_ATTRNAME,
83*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_ELEMNONS,
84*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_ATTRNONS,
85*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_ELEMWRONGNS,
86*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_ATTRWRONGNS,
87*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_ELEMEXTRANS,
88*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_ATTREXTRANS,
89*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_ELEMNOTEMPTY,
90*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_NOELEM,
91*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_NOTELEM,
92*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_ATTRVALID,
93*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_CONTENTVALID,
94*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_EXTRACONTENT,
95*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_INVALIDATTR,
96*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_DATAELEM,
97*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_VALELEM,
98*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_LISTELEM,
99*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_DATATYPE,
100*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_VALUE,
101*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_LIST,
102*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_NOGRAMMAR,
103*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_EXTRADATA,
104*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_LACKDATA,
105*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_INTERNAL,
106*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_ELEMWRONG,
107*7c568831SAndroid Build Coastguard Worker     XML_RELAXNG_ERR_TEXTWRONG
108*7c568831SAndroid Build Coastguard Worker } xmlRelaxNGValidErr;
109*7c568831SAndroid Build Coastguard Worker 
110*7c568831SAndroid Build Coastguard Worker /*
111*7c568831SAndroid Build Coastguard Worker  * xmlRelaxNGParserFlags:
112*7c568831SAndroid Build Coastguard Worker  *
113*7c568831SAndroid Build Coastguard Worker  * List of possible Relax NG Parser flags
114*7c568831SAndroid Build Coastguard Worker  */
115*7c568831SAndroid Build Coastguard Worker typedef enum {
116*7c568831SAndroid Build Coastguard Worker     XML_RELAXNGP_NONE = 0,
117*7c568831SAndroid Build Coastguard Worker     XML_RELAXNGP_FREE_DOC = 1,
118*7c568831SAndroid Build Coastguard Worker     XML_RELAXNGP_CRNG = 2
119*7c568831SAndroid Build Coastguard Worker } xmlRelaxNGParserFlag;
120*7c568831SAndroid Build Coastguard Worker 
121*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
122*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGInitTypes		(void);
123*7c568831SAndroid Build Coastguard Worker XML_DEPRECATED
124*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
125*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGCleanupTypes	(void);
126*7c568831SAndroid Build Coastguard Worker 
127*7c568831SAndroid Build Coastguard Worker /*
128*7c568831SAndroid Build Coastguard Worker  * Interfaces for parsing.
129*7c568831SAndroid Build Coastguard Worker  */
130*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRelaxNGParserCtxtPtr
131*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGNewParserCtxt	(const char *URL);
132*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRelaxNGParserCtxtPtr
133*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGNewMemParserCtxt	(const char *buffer,
134*7c568831SAndroid Build Coastguard Worker 						 int size);
135*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRelaxNGParserCtxtPtr
136*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGNewDocParserCtxt	(xmlDocPtr doc);
137*7c568831SAndroid Build Coastguard Worker 
138*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
139*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxParserSetFlag	(xmlRelaxNGParserCtxtPtr ctxt,
140*7c568831SAndroid Build Coastguard Worker 						 int flag);
141*7c568831SAndroid Build Coastguard Worker 
142*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
143*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGFreeParserCtxt	(xmlRelaxNGParserCtxtPtr ctxt);
144*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
145*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
146*7c568831SAndroid Build Coastguard Worker 					 xmlRelaxNGValidityErrorFunc err,
147*7c568831SAndroid Build Coastguard Worker 					 xmlRelaxNGValidityWarningFunc warn,
148*7c568831SAndroid Build Coastguard Worker 					 void *ctx);
149*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
150*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
151*7c568831SAndroid Build Coastguard Worker 					 xmlRelaxNGValidityErrorFunc *err,
152*7c568831SAndroid Build Coastguard Worker 					 xmlRelaxNGValidityWarningFunc *warn,
153*7c568831SAndroid Build Coastguard Worker 					 void **ctx);
154*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
155*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGSetParserStructuredErrors(
156*7c568831SAndroid Build Coastguard Worker 					 xmlRelaxNGParserCtxtPtr ctxt,
157*7c568831SAndroid Build Coastguard Worker 					 xmlStructuredErrorFunc serror,
158*7c568831SAndroid Build Coastguard Worker 					 void *ctx);
159*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
160*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGSetResourceLoader	(xmlRelaxNGParserCtxtPtr ctxt,
161*7c568831SAndroid Build Coastguard Worker 						 xmlResourceLoader loader,
162*7c568831SAndroid Build Coastguard Worker 						 void *vctxt);
163*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRelaxNGPtr
164*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGParse		(xmlRelaxNGParserCtxtPtr ctxt);
165*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
166*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGFree		(xmlRelaxNGPtr schema);
167*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_OUTPUT_ENABLED
168*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
169*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGDump		(FILE *output,
170*7c568831SAndroid Build Coastguard Worker 					 xmlRelaxNGPtr schema);
171*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
172*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGDumpTree	(FILE * output,
173*7c568831SAndroid Build Coastguard Worker 					 xmlRelaxNGPtr schema);
174*7c568831SAndroid Build Coastguard Worker #endif /* LIBXML_OUTPUT_ENABLED */
175*7c568831SAndroid Build Coastguard Worker /*
176*7c568831SAndroid Build Coastguard Worker  * Interfaces for validating
177*7c568831SAndroid Build Coastguard Worker  */
178*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
179*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
180*7c568831SAndroid Build Coastguard Worker 					 xmlRelaxNGValidityErrorFunc err,
181*7c568831SAndroid Build Coastguard Worker 					 xmlRelaxNGValidityWarningFunc warn,
182*7c568831SAndroid Build Coastguard Worker 					 void *ctx);
183*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
184*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
185*7c568831SAndroid Build Coastguard Worker 					 xmlRelaxNGValidityErrorFunc *err,
186*7c568831SAndroid Build Coastguard Worker 					 xmlRelaxNGValidityWarningFunc *warn,
187*7c568831SAndroid Build Coastguard Worker 					 void **ctx);
188*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
189*7c568831SAndroid Build Coastguard Worker 			xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
190*7c568831SAndroid Build Coastguard Worker 					  xmlStructuredErrorFunc serror, void *ctx);
191*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRelaxNGValidCtxtPtr
192*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGNewValidCtxt	(xmlRelaxNGPtr schema);
193*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
194*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGFreeValidCtxt	(xmlRelaxNGValidCtxtPtr ctxt);
195*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
196*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGValidateDoc	(xmlRelaxNGValidCtxtPtr ctxt,
197*7c568831SAndroid Build Coastguard Worker 						 xmlDocPtr doc);
198*7c568831SAndroid Build Coastguard Worker /*
199*7c568831SAndroid Build Coastguard Worker  * Interfaces for progressive validation when possible
200*7c568831SAndroid Build Coastguard Worker  */
201*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
202*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGValidatePushElement	(xmlRelaxNGValidCtxtPtr ctxt,
203*7c568831SAndroid Build Coastguard Worker 					 xmlDocPtr doc,
204*7c568831SAndroid Build Coastguard Worker 					 xmlNodePtr elem);
205*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
206*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGValidatePushCData	(xmlRelaxNGValidCtxtPtr ctxt,
207*7c568831SAndroid Build Coastguard Worker 					 const xmlChar *data,
208*7c568831SAndroid Build Coastguard Worker 					 int len);
209*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
210*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGValidatePopElement	(xmlRelaxNGValidCtxtPtr ctxt,
211*7c568831SAndroid Build Coastguard Worker 					 xmlDocPtr doc,
212*7c568831SAndroid Build Coastguard Worker 					 xmlNodePtr elem);
213*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
214*7c568831SAndroid Build Coastguard Worker 		    xmlRelaxNGValidateFullElement	(xmlRelaxNGValidCtxtPtr ctxt,
215*7c568831SAndroid Build Coastguard Worker 					 xmlDocPtr doc,
216*7c568831SAndroid Build Coastguard Worker 					 xmlNodePtr elem);
217*7c568831SAndroid Build Coastguard Worker 
218*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus
219*7c568831SAndroid Build Coastguard Worker }
220*7c568831SAndroid Build Coastguard Worker #endif
221*7c568831SAndroid Build Coastguard Worker 
222*7c568831SAndroid Build Coastguard Worker #endif /* LIBXML_SCHEMAS_ENABLED */
223*7c568831SAndroid Build Coastguard Worker 
224*7c568831SAndroid Build Coastguard Worker #endif /* __XML_RELAX_NG__ */
225