2 * Summary: implementation of the Relax-NG validation
3 * Description: implementation of the Relax-NG validation
5 * Copy: See Copyright for the status of this software.
7 * Author: Daniel Veillard
10 #ifndef __XML_RELAX_NG__
11 #define __XML_RELAX_NG__
13 #include <libxml/xmlversion.h>
14 #include <libxml/hash.h>
15 #include <libxml/xmlstring.h>
17 #ifdef LIBXML_SCHEMAS_ENABLED
23 typedef struct _xmlRelaxNG xmlRelaxNG;
24 typedef xmlRelaxNG *xmlRelaxNGPtr;
28 * xmlRelaxNGValidityErrorFunc:
29 * @ctx: the validation context
31 * @...: extra arguments
33 * Signature of an error callback from a Relax-NG validation
35 typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx,
37 ...) LIBXML_ATTR_FORMAT(2,3);
40 * xmlRelaxNGValidityWarningFunc:
41 * @ctx: the validation context
43 * @...: extra arguments
45 * Signature of a warning callback from a Relax-NG validation
47 typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx,
49 ...) LIBXML_ATTR_FORMAT(2,3);
52 * A schemas validation context
54 typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
55 typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
57 typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
58 typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
63 * List of possible Relax NG validation errors
67 XML_RELAXNG_ERR_MEMORY,
69 XML_RELAXNG_ERR_TYPEVAL,
70 XML_RELAXNG_ERR_DUPID,
71 XML_RELAXNG_ERR_TYPECMP,
72 XML_RELAXNG_ERR_NOSTATE,
73 XML_RELAXNG_ERR_NODEFINE,
74 XML_RELAXNG_ERR_LISTEXTRA,
75 XML_RELAXNG_ERR_LISTEMPTY,
76 XML_RELAXNG_ERR_INTERNODATA,
77 XML_RELAXNG_ERR_INTERSEQ,
78 XML_RELAXNG_ERR_INTEREXTRA,
79 XML_RELAXNG_ERR_ELEMNAME,
80 XML_RELAXNG_ERR_ATTRNAME,
81 XML_RELAXNG_ERR_ELEMNONS,
82 XML_RELAXNG_ERR_ATTRNONS,
83 XML_RELAXNG_ERR_ELEMWRONGNS,
84 XML_RELAXNG_ERR_ATTRWRONGNS,
85 XML_RELAXNG_ERR_ELEMEXTRANS,
86 XML_RELAXNG_ERR_ATTREXTRANS,
87 XML_RELAXNG_ERR_ELEMNOTEMPTY,
88 XML_RELAXNG_ERR_NOELEM,
89 XML_RELAXNG_ERR_NOTELEM,
90 XML_RELAXNG_ERR_ATTRVALID,
91 XML_RELAXNG_ERR_CONTENTVALID,
92 XML_RELAXNG_ERR_EXTRACONTENT,
93 XML_RELAXNG_ERR_INVALIDATTR,
94 XML_RELAXNG_ERR_DATAELEM,
95 XML_RELAXNG_ERR_VALELEM,
96 XML_RELAXNG_ERR_LISTELEM,
97 XML_RELAXNG_ERR_DATATYPE,
98 XML_RELAXNG_ERR_VALUE,
100 XML_RELAXNG_ERR_NOGRAMMAR,
101 XML_RELAXNG_ERR_EXTRADATA,
102 XML_RELAXNG_ERR_LACKDATA,
103 XML_RELAXNG_ERR_INTERNAL,
104 XML_RELAXNG_ERR_ELEMWRONG,
105 XML_RELAXNG_ERR_TEXTWRONG
106 } xmlRelaxNGValidErr;
109 * xmlRelaxNGParserFlags:
111 * List of possible Relax NG Parser flags
114 XML_RELAXNGP_NONE = 0,
115 XML_RELAXNGP_FREE_DOC = 1,
116 XML_RELAXNGP_CRNG = 2
117 } xmlRelaxNGParserFlag;
119 XMLPUBFUN int XMLCALL
120 xmlRelaxNGInitTypes (void);
121 XMLPUBFUN void XMLCALL
122 xmlRelaxNGCleanupTypes (void);
125 * Interfaces for parsing.
127 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
128 xmlRelaxNGNewParserCtxt (const char *URL);
129 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
130 xmlRelaxNGNewMemParserCtxt (const char *buffer,
132 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
133 xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc);
135 XMLPUBFUN int XMLCALL
136 xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt,
139 XMLPUBFUN void XMLCALL
140 xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt);
141 XMLPUBFUN void XMLCALL
142 xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
143 xmlRelaxNGValidityErrorFunc err,
144 xmlRelaxNGValidityWarningFunc warn,
146 XMLPUBFUN int XMLCALL
147 xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
148 xmlRelaxNGValidityErrorFunc *err,
149 xmlRelaxNGValidityWarningFunc *warn,
151 XMLPUBFUN void XMLCALL
152 xmlRelaxNGSetParserStructuredErrors(
153 xmlRelaxNGParserCtxtPtr ctxt,
154 xmlStructuredErrorFunc serror,
156 XMLPUBFUN xmlRelaxNGPtr XMLCALL
157 xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt);
158 XMLPUBFUN void XMLCALL
159 xmlRelaxNGFree (xmlRelaxNGPtr schema);
160 #ifdef LIBXML_OUTPUT_ENABLED
161 XMLPUBFUN void XMLCALL
162 xmlRelaxNGDump (FILE *output,
163 xmlRelaxNGPtr schema);
164 XMLPUBFUN void XMLCALL
165 xmlRelaxNGDumpTree (FILE * output,
166 xmlRelaxNGPtr schema);
167 #endif /* LIBXML_OUTPUT_ENABLED */
169 * Interfaces for validating
171 XMLPUBFUN void XMLCALL
172 xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
173 xmlRelaxNGValidityErrorFunc err,
174 xmlRelaxNGValidityWarningFunc warn,
176 XMLPUBFUN int XMLCALL
177 xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
178 xmlRelaxNGValidityErrorFunc *err,
179 xmlRelaxNGValidityWarningFunc *warn,
181 XMLPUBFUN void XMLCALL
182 xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
183 xmlStructuredErrorFunc serror, void *ctx);
184 XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
185 xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema);
186 XMLPUBFUN void XMLCALL
187 xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
188 XMLPUBFUN int XMLCALL
189 xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt,
192 * Interfaces for progressive validation when possible
194 XMLPUBFUN int XMLCALL
195 xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt,
198 XMLPUBFUN int XMLCALL
199 xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
202 XMLPUBFUN int XMLCALL
203 xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt,
206 XMLPUBFUN int XMLCALL
207 xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt,
215 #endif /* LIBXML_SCHEMAS_ENABLED */
217 #endif /* __XML_RELAX_NG__ */