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