xref: /aosp_15_r20/external/libxml2/include/libxml/xmlschemas.h (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1*7c568831SAndroid Build Coastguard Worker /*
2*7c568831SAndroid Build Coastguard Worker  * Summary: incomplete XML Schemas structure implementation
3*7c568831SAndroid Build Coastguard Worker  * Description: interface to the XML Schemas handling and schema validity
4*7c568831SAndroid Build Coastguard Worker  *              checking, it is incomplete right now.
5*7c568831SAndroid Build Coastguard Worker  *
6*7c568831SAndroid Build Coastguard Worker  * Copy: See Copyright for the status of this software.
7*7c568831SAndroid Build Coastguard Worker  *
8*7c568831SAndroid Build Coastguard Worker  * Author: Daniel Veillard
9*7c568831SAndroid Build Coastguard Worker  */
10*7c568831SAndroid Build Coastguard Worker 
11*7c568831SAndroid Build Coastguard Worker 
12*7c568831SAndroid Build Coastguard Worker #ifndef __XML_SCHEMA_H__
13*7c568831SAndroid Build Coastguard Worker #define __XML_SCHEMA_H__
14*7c568831SAndroid Build Coastguard Worker 
15*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlversion.h>
16*7c568831SAndroid Build Coastguard Worker 
17*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_SCHEMAS_ENABLED
18*7c568831SAndroid Build Coastguard Worker 
19*7c568831SAndroid Build Coastguard Worker #include <stdio.h>
20*7c568831SAndroid Build Coastguard Worker #include <libxml/encoding.h>
21*7c568831SAndroid Build Coastguard Worker #include <libxml/parser.h>
22*7c568831SAndroid Build Coastguard Worker #include <libxml/tree.h>
23*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlerror.h>
24*7c568831SAndroid Build Coastguard Worker 
25*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus
26*7c568831SAndroid Build Coastguard Worker extern "C" {
27*7c568831SAndroid Build Coastguard Worker #endif
28*7c568831SAndroid Build Coastguard Worker 
29*7c568831SAndroid Build Coastguard Worker /**
30*7c568831SAndroid Build Coastguard Worker  * This error codes are obsolete; not used any more.
31*7c568831SAndroid Build Coastguard Worker  */
32*7c568831SAndroid Build Coastguard Worker typedef enum {
33*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_OK		= 0,
34*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_NOROOT	= 1,
35*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_UNDECLAREDELEM,
36*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_NOTTOPLEVEL,
37*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_MISSING,
38*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_WRONGELEM,
39*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_NOTYPE,
40*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_NOROLLBACK,
41*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_ISABSTRACT,
42*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_NOTEMPTY,
43*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_ELEMCONT,
44*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_HAVEDEFAULT,
45*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_NOTNILLABLE,
46*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_EXTRACONTENT,
47*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_INVALIDATTR,
48*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_INVALIDELEM,
49*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_NOTDETERMINIST,
50*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_CONSTRUCT,
51*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_INTERNAL,
52*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_NOTSIMPLE,
53*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_ATTRUNKNOWN,
54*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_ATTRINVALID,
55*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_VALUE,
56*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_FACET,
57*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_,
58*7c568831SAndroid Build Coastguard Worker     XML_SCHEMAS_ERR_XXX
59*7c568831SAndroid Build Coastguard Worker } xmlSchemaValidError;
60*7c568831SAndroid Build Coastguard Worker 
61*7c568831SAndroid Build Coastguard Worker /*
62*7c568831SAndroid Build Coastguard Worker * ATTENTION: Change xmlSchemaSetValidOptions's check
63*7c568831SAndroid Build Coastguard Worker * for invalid values, if adding to the validation
64*7c568831SAndroid Build Coastguard Worker * options below.
65*7c568831SAndroid Build Coastguard Worker */
66*7c568831SAndroid Build Coastguard Worker /**
67*7c568831SAndroid Build Coastguard Worker  * xmlSchemaValidOption:
68*7c568831SAndroid Build Coastguard Worker  *
69*7c568831SAndroid Build Coastguard Worker  * This is the set of XML Schema validation options.
70*7c568831SAndroid Build Coastguard Worker  */
71*7c568831SAndroid Build Coastguard Worker typedef enum {
72*7c568831SAndroid Build Coastguard Worker     XML_SCHEMA_VAL_VC_I_CREATE			= 1<<0
73*7c568831SAndroid Build Coastguard Worker 	/* Default/fixed: create an attribute node
74*7c568831SAndroid Build Coastguard Worker 	* or an element's text node on the instance.
75*7c568831SAndroid Build Coastguard Worker 	*/
76*7c568831SAndroid Build Coastguard Worker } xmlSchemaValidOption;
77*7c568831SAndroid Build Coastguard Worker 
78*7c568831SAndroid Build Coastguard Worker /*
79*7c568831SAndroid Build Coastguard Worker     XML_SCHEMA_VAL_XSI_ASSEMBLE			= 1<<1,
80*7c568831SAndroid Build Coastguard Worker 	* assemble schemata using
81*7c568831SAndroid Build Coastguard Worker 	* xsi:schemaLocation and
82*7c568831SAndroid Build Coastguard Worker 	* xsi:noNamespaceSchemaLocation
83*7c568831SAndroid Build Coastguard Worker */
84*7c568831SAndroid Build Coastguard Worker 
85*7c568831SAndroid Build Coastguard Worker /**
86*7c568831SAndroid Build Coastguard Worker  * The schemas related types are kept internal
87*7c568831SAndroid Build Coastguard Worker  */
88*7c568831SAndroid Build Coastguard Worker typedef struct _xmlSchema xmlSchema;
89*7c568831SAndroid Build Coastguard Worker typedef xmlSchema *xmlSchemaPtr;
90*7c568831SAndroid Build Coastguard Worker 
91*7c568831SAndroid Build Coastguard Worker /**
92*7c568831SAndroid Build Coastguard Worker  * xmlSchemaValidityErrorFunc:
93*7c568831SAndroid Build Coastguard Worker  * @ctx: the validation context
94*7c568831SAndroid Build Coastguard Worker  * @msg: the message
95*7c568831SAndroid Build Coastguard Worker  * @...: extra arguments
96*7c568831SAndroid Build Coastguard Worker  *
97*7c568831SAndroid Build Coastguard Worker  * Signature of an error callback from an XSD validation
98*7c568831SAndroid Build Coastguard Worker  */
99*7c568831SAndroid Build Coastguard Worker typedef void (*xmlSchemaValidityErrorFunc)
100*7c568831SAndroid Build Coastguard Worker                  (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
101*7c568831SAndroid Build Coastguard Worker 
102*7c568831SAndroid Build Coastguard Worker /**
103*7c568831SAndroid Build Coastguard Worker  * xmlSchemaValidityWarningFunc:
104*7c568831SAndroid Build Coastguard Worker  * @ctx: the validation context
105*7c568831SAndroid Build Coastguard Worker  * @msg: the message
106*7c568831SAndroid Build Coastguard Worker  * @...: extra arguments
107*7c568831SAndroid Build Coastguard Worker  *
108*7c568831SAndroid Build Coastguard Worker  * Signature of a warning callback from an XSD validation
109*7c568831SAndroid Build Coastguard Worker  */
110*7c568831SAndroid Build Coastguard Worker typedef void (*xmlSchemaValidityWarningFunc)
111*7c568831SAndroid Build Coastguard Worker                  (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
112*7c568831SAndroid Build Coastguard Worker 
113*7c568831SAndroid Build Coastguard Worker /**
114*7c568831SAndroid Build Coastguard Worker  * A schemas validation context
115*7c568831SAndroid Build Coastguard Worker  */
116*7c568831SAndroid Build Coastguard Worker typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt;
117*7c568831SAndroid Build Coastguard Worker typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr;
118*7c568831SAndroid Build Coastguard Worker 
119*7c568831SAndroid Build Coastguard Worker typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt;
120*7c568831SAndroid Build Coastguard Worker typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr;
121*7c568831SAndroid Build Coastguard Worker 
122*7c568831SAndroid Build Coastguard Worker /**
123*7c568831SAndroid Build Coastguard Worker  * xmlSchemaValidityLocatorFunc:
124*7c568831SAndroid Build Coastguard Worker  * @ctx: user provided context
125*7c568831SAndroid Build Coastguard Worker  * @file: returned file information
126*7c568831SAndroid Build Coastguard Worker  * @line: returned line information
127*7c568831SAndroid Build Coastguard Worker  *
128*7c568831SAndroid Build Coastguard Worker  * A schemas validation locator, a callback called by the validator.
129*7c568831SAndroid Build Coastguard Worker  * This is used when file or node information are not available
130*7c568831SAndroid Build Coastguard Worker  * to find out what file and line number are affected
131*7c568831SAndroid Build Coastguard Worker  *
132*7c568831SAndroid Build Coastguard Worker  * Returns: 0 in case of success and -1 in case of error
133*7c568831SAndroid Build Coastguard Worker  */
134*7c568831SAndroid Build Coastguard Worker 
135*7c568831SAndroid Build Coastguard Worker typedef int (*xmlSchemaValidityLocatorFunc) (void *ctx,
136*7c568831SAndroid Build Coastguard Worker                            const char **file, unsigned long *line);
137*7c568831SAndroid Build Coastguard Worker 
138*7c568831SAndroid Build Coastguard Worker /*
139*7c568831SAndroid Build Coastguard Worker  * Interfaces for parsing.
140*7c568831SAndroid Build Coastguard Worker  */
141*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlSchemaParserCtxtPtr
142*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaNewParserCtxt	(const char *URL);
143*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlSchemaParserCtxtPtr
144*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaNewMemParserCtxt	(const char *buffer,
145*7c568831SAndroid Build Coastguard Worker 					 int size);
146*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlSchemaParserCtxtPtr
147*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaNewDocParserCtxt	(xmlDocPtr doc);
148*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
149*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaFreeParserCtxt	(xmlSchemaParserCtxtPtr ctxt);
150*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
151*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaSetParserErrors	(xmlSchemaParserCtxtPtr ctxt,
152*7c568831SAndroid Build Coastguard Worker 					 xmlSchemaValidityErrorFunc err,
153*7c568831SAndroid Build Coastguard Worker 					 xmlSchemaValidityWarningFunc warn,
154*7c568831SAndroid Build Coastguard Worker 					 void *ctx);
155*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
156*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt,
157*7c568831SAndroid Build Coastguard Worker 					 xmlStructuredErrorFunc serror,
158*7c568831SAndroid Build Coastguard Worker 					 void *ctx);
159*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
160*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaGetParserErrors	(xmlSchemaParserCtxtPtr ctxt,
161*7c568831SAndroid Build Coastguard Worker 					xmlSchemaValidityErrorFunc * err,
162*7c568831SAndroid Build Coastguard Worker 					xmlSchemaValidityWarningFunc * warn,
163*7c568831SAndroid Build Coastguard Worker 					void **ctx);
164*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
165*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaSetResourceLoader	(xmlSchemaParserCtxtPtr ctxt,
166*7c568831SAndroid Build Coastguard Worker 					 xmlResourceLoader loader,
167*7c568831SAndroid Build Coastguard Worker 					 void *data);
168*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
169*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaIsValid		(xmlSchemaValidCtxtPtr ctxt);
170*7c568831SAndroid Build Coastguard Worker 
171*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlSchemaPtr
172*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaParse		(xmlSchemaParserCtxtPtr ctxt);
173*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
174*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaFree		(xmlSchemaPtr schema);
175*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_OUTPUT_ENABLED
176*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
177*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaDump		(FILE *output,
178*7c568831SAndroid Build Coastguard Worker 					 xmlSchemaPtr schema);
179*7c568831SAndroid Build Coastguard Worker #endif /* LIBXML_OUTPUT_ENABLED */
180*7c568831SAndroid Build Coastguard Worker /*
181*7c568831SAndroid Build Coastguard Worker  * Interfaces for validating
182*7c568831SAndroid Build Coastguard Worker  */
183*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
184*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaSetValidErrors	(xmlSchemaValidCtxtPtr ctxt,
185*7c568831SAndroid Build Coastguard Worker 					 xmlSchemaValidityErrorFunc err,
186*7c568831SAndroid Build Coastguard Worker 					 xmlSchemaValidityWarningFunc warn,
187*7c568831SAndroid Build Coastguard Worker 					 void *ctx);
188*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
189*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt,
190*7c568831SAndroid Build Coastguard Worker 					 xmlStructuredErrorFunc serror,
191*7c568831SAndroid Build Coastguard Worker 					 void *ctx);
192*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
193*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaGetValidErrors	(xmlSchemaValidCtxtPtr ctxt,
194*7c568831SAndroid Build Coastguard Worker 					 xmlSchemaValidityErrorFunc *err,
195*7c568831SAndroid Build Coastguard Worker 					 xmlSchemaValidityWarningFunc *warn,
196*7c568831SAndroid Build Coastguard Worker 					 void **ctx);
197*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
198*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaSetValidOptions	(xmlSchemaValidCtxtPtr ctxt,
199*7c568831SAndroid Build Coastguard Worker 					 int options);
200*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
201*7c568831SAndroid Build Coastguard Worker             xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt,
202*7c568831SAndroid Build Coastguard Worker 	                                 const char *filename);
203*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
204*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt);
205*7c568831SAndroid Build Coastguard Worker 
206*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlSchemaValidCtxtPtr
207*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaNewValidCtxt	(xmlSchemaPtr schema);
208*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
209*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaFreeValidCtxt	(xmlSchemaValidCtxtPtr ctxt);
210*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
211*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaValidateDoc	(xmlSchemaValidCtxtPtr ctxt,
212*7c568831SAndroid Build Coastguard Worker 					 xmlDocPtr instance);
213*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
214*7c568831SAndroid Build Coastguard Worker             xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt,
215*7c568831SAndroid Build Coastguard Worker 			                 xmlNodePtr elem);
216*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
217*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaValidateStream	(xmlSchemaValidCtxtPtr ctxt,
218*7c568831SAndroid Build Coastguard Worker 					 xmlParserInputBufferPtr input,
219*7c568831SAndroid Build Coastguard Worker 					 xmlCharEncoding enc,
220*7c568831SAndroid Build Coastguard Worker 					 xmlSAXHandlerPtr sax,
221*7c568831SAndroid Build Coastguard Worker 					 void *user_data);
222*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
223*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaValidateFile	(xmlSchemaValidCtxtPtr ctxt,
224*7c568831SAndroid Build Coastguard Worker 					 const char * filename,
225*7c568831SAndroid Build Coastguard Worker 					 int options);
226*7c568831SAndroid Build Coastguard Worker 
227*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlParserCtxtPtr
228*7c568831SAndroid Build Coastguard Worker 	    xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt);
229*7c568831SAndroid Build Coastguard Worker 
230*7c568831SAndroid Build Coastguard Worker /*
231*7c568831SAndroid Build Coastguard Worker  * Interface to insert Schemas SAX validation in a SAX stream
232*7c568831SAndroid Build Coastguard Worker  */
233*7c568831SAndroid Build Coastguard Worker typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct;
234*7c568831SAndroid Build Coastguard Worker typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr;
235*7c568831SAndroid Build Coastguard Worker 
236*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlSchemaSAXPlugPtr
237*7c568831SAndroid Build Coastguard Worker             xmlSchemaSAXPlug		(xmlSchemaValidCtxtPtr ctxt,
238*7c568831SAndroid Build Coastguard Worker 					 xmlSAXHandlerPtr *sax,
239*7c568831SAndroid Build Coastguard Worker 					 void **user_data);
240*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
241*7c568831SAndroid Build Coastguard Worker             xmlSchemaSAXUnplug		(xmlSchemaSAXPlugPtr plug);
242*7c568831SAndroid Build Coastguard Worker 
243*7c568831SAndroid Build Coastguard Worker 
244*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
245*7c568831SAndroid Build Coastguard Worker             xmlSchemaValidateSetLocator	(xmlSchemaValidCtxtPtr vctxt,
246*7c568831SAndroid Build Coastguard Worker 					 xmlSchemaValidityLocatorFunc f,
247*7c568831SAndroid Build Coastguard Worker 					 void *ctxt);
248*7c568831SAndroid Build Coastguard Worker 
249*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus
250*7c568831SAndroid Build Coastguard Worker }
251*7c568831SAndroid Build Coastguard Worker #endif
252*7c568831SAndroid Build Coastguard Worker 
253*7c568831SAndroid Build Coastguard Worker #endif /* LIBXML_SCHEMAS_ENABLED */
254*7c568831SAndroid Build Coastguard Worker #endif /* __XML_SCHEMA_H__ */
255