LTKCPP-- LLRP Toolkit C Plus Plus Library
xmlschemas.h
1 /*
2  * Summary: incomplete XML Schemas structure implementation
3  * Description: interface to the XML Schemas handling and schema validity
4  * checking, it is incomplete right now.
5  *
6  * Copy: See Copyright for the status of this software.
7  *
8  * Author: Daniel Veillard
9  */
10 
11 
12 #ifndef __XML_SCHEMA_H__
13 #define __XML_SCHEMA_H__
14 
15 #include <libxml/xmlversion.h>
16 
17 #ifdef LIBXML_SCHEMAS_ENABLED
18 
19 #include <libxml/tree.h>
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
28 typedef enum {
29  XML_SCHEMAS_ERR_OK = 0,
30  XML_SCHEMAS_ERR_NOROOT = 1,
31  XML_SCHEMAS_ERR_UNDECLAREDELEM,
32  XML_SCHEMAS_ERR_NOTTOPLEVEL,
33  XML_SCHEMAS_ERR_MISSING,
34  XML_SCHEMAS_ERR_WRONGELEM,
35  XML_SCHEMAS_ERR_NOTYPE,
36  XML_SCHEMAS_ERR_NOROLLBACK,
37  XML_SCHEMAS_ERR_ISABSTRACT,
38  XML_SCHEMAS_ERR_NOTEMPTY,
39  XML_SCHEMAS_ERR_ELEMCONT,
40  XML_SCHEMAS_ERR_HAVEDEFAULT,
41  XML_SCHEMAS_ERR_NOTNILLABLE,
42  XML_SCHEMAS_ERR_EXTRACONTENT,
43  XML_SCHEMAS_ERR_INVALIDATTR,
44  XML_SCHEMAS_ERR_INVALIDELEM,
45  XML_SCHEMAS_ERR_NOTDETERMINIST,
46  XML_SCHEMAS_ERR_CONSTRUCT,
47  XML_SCHEMAS_ERR_INTERNAL,
48  XML_SCHEMAS_ERR_NOTSIMPLE,
49  XML_SCHEMAS_ERR_ATTRUNKNOWN,
50  XML_SCHEMAS_ERR_ATTRINVALID,
51  XML_SCHEMAS_ERR_VALUE,
52  XML_SCHEMAS_ERR_FACET,
53  XML_SCHEMAS_ERR_,
54  XML_SCHEMAS_ERR_XXX
55 } xmlSchemaValidError;
56 
57 /*
58 * ATTENTION: Change xmlSchemaSetValidOptions's check
59 * for invalid values, if adding to the validation
60 * options below.
61 */
67 typedef enum {
68  XML_SCHEMA_VAL_VC_I_CREATE = 1<<0
69  /* Default/fixed: create an attribute node
70  * or an element's text node on the instance.
71  */
72 } xmlSchemaValidOption;
73 
74 /*
75  XML_SCHEMA_VAL_XSI_ASSEMBLE = 1<<1,
76  * assemble schemata using
77  * xsi:schemaLocation and
78  * xsi:noNamespaceSchemaLocation
79 */
80 
84 typedef struct _xmlSchema xmlSchema;
85 typedef xmlSchema *xmlSchemaPtr;
86 
95 typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
96 
105 typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
106 
110 typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt;
111 typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr;
112 
113 typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt;
114 typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr;
115 
116 /*
117  * Interfaces for parsing.
118  */
119 XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
120  xmlSchemaNewParserCtxt (const char *URL);
121 XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
122  xmlSchemaNewMemParserCtxt (const char *buffer,
123  int size);
124 XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
125  xmlSchemaNewDocParserCtxt (xmlDocPtr doc);
126 XMLPUBFUN void XMLCALL
127  xmlSchemaFreeParserCtxt (xmlSchemaParserCtxtPtr ctxt);
128 XMLPUBFUN void XMLCALL
129  xmlSchemaSetParserErrors (xmlSchemaParserCtxtPtr ctxt,
130  xmlSchemaValidityErrorFunc err,
131  xmlSchemaValidityWarningFunc warn,
132  void *ctx);
133 XMLPUBFUN void XMLCALL
134  xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt,
135  xmlStructuredErrorFunc serror,
136  void *ctx);
137 XMLPUBFUN int XMLCALL
138  xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt,
139  xmlSchemaValidityErrorFunc * err,
140  xmlSchemaValidityWarningFunc * warn,
141  void **ctx);
142 XMLPUBFUN int XMLCALL
143  xmlSchemaIsValid (xmlSchemaValidCtxtPtr ctxt);
144 
145 XMLPUBFUN xmlSchemaPtr XMLCALL
146  xmlSchemaParse (xmlSchemaParserCtxtPtr ctxt);
147 XMLPUBFUN void XMLCALL
148  xmlSchemaFree (xmlSchemaPtr schema);
149 #ifdef LIBXML_OUTPUT_ENABLED
150 XMLPUBFUN void XMLCALL
151  xmlSchemaDump (FILE *output,
152  xmlSchemaPtr schema);
153 #endif /* LIBXML_OUTPUT_ENABLED */
154 /*
155  * Interfaces for validating
156  */
157 XMLPUBFUN void XMLCALL
158  xmlSchemaSetValidErrors (xmlSchemaValidCtxtPtr ctxt,
159  xmlSchemaValidityErrorFunc err,
160  xmlSchemaValidityWarningFunc warn,
161  void *ctx);
162 XMLPUBFUN void XMLCALL
163  xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt,
164  xmlStructuredErrorFunc serror,
165  void *ctx);
166 XMLPUBFUN int XMLCALL
167  xmlSchemaGetValidErrors (xmlSchemaValidCtxtPtr ctxt,
168  xmlSchemaValidityErrorFunc *err,
169  xmlSchemaValidityWarningFunc *warn,
170  void **ctx);
171 XMLPUBFUN int XMLCALL
172  xmlSchemaSetValidOptions (xmlSchemaValidCtxtPtr ctxt,
173  int options);
174 XMLPUBFUN int XMLCALL
175  xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt);
176 
177 XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL
178  xmlSchemaNewValidCtxt (xmlSchemaPtr schema);
179 XMLPUBFUN void XMLCALL
180  xmlSchemaFreeValidCtxt (xmlSchemaValidCtxtPtr ctxt);
181 XMLPUBFUN int XMLCALL
182  xmlSchemaValidateDoc (xmlSchemaValidCtxtPtr ctxt,
183  xmlDocPtr instance);
184 XMLPUBFUN int XMLCALL
185  xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt,
186  xmlNodePtr elem);
187 XMLPUBFUN int XMLCALL
188  xmlSchemaValidateStream (xmlSchemaValidCtxtPtr ctxt,
189  xmlParserInputBufferPtr input,
190  xmlCharEncoding enc,
191  xmlSAXHandlerPtr sax,
192  void *user_data);
193 XMLPUBFUN int XMLCALL
194  xmlSchemaValidateFile (xmlSchemaValidCtxtPtr ctxt,
195  const char * filename,
196  int options);
197 
198 XMLPUBFUN xmlParserCtxtPtr XMLCALL
199  xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt);
200 
201 /*
202  * Interface to insert Schemas SAX validation in a SAX stream
203  */
204 typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct;
205 typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr;
206 
207 XMLPUBFUN xmlSchemaSAXPlugPtr XMLCALL
208  xmlSchemaSAXPlug (xmlSchemaValidCtxtPtr ctxt,
209  xmlSAXHandlerPtr *sax,
210  void **user_data);
211 XMLPUBFUN int XMLCALL
212  xmlSchemaSAXUnplug (xmlSchemaSAXPlugPtr plug);
213 #ifdef __cplusplus
214 }
215 #endif
216 
217 #endif /* LIBXML_SCHEMAS_ENABLED */
218 #endif /* __XML_SCHEMA_H__ */