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, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
38 * xmlRelaxNGValidityWarningFunc:
39 * @ctx: the validation context
41 * @...: extra arguments
43 * Signature of a warning callback from a Relax-NG validation
45 typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
48 * A schemas validation context
50 typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
51 typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
53 typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
54 typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
59 * List of possible Relax NG validation errors
63 XML_RELAXNG_ERR_MEMORY,
65 XML_RELAXNG_ERR_TYPEVAL,
66 XML_RELAXNG_ERR_DUPID,
67 XML_RELAXNG_ERR_TYPECMP,
68 XML_RELAXNG_ERR_NOSTATE,
69 XML_RELAXNG_ERR_NODEFINE,
70 XML_RELAXNG_ERR_LISTEXTRA,
71 XML_RELAXNG_ERR_LISTEMPTY,
72 XML_RELAXNG_ERR_INTERNODATA,
73 XML_RELAXNG_ERR_INTERSEQ,
74 XML_RELAXNG_ERR_INTEREXTRA,
75 XML_RELAXNG_ERR_ELEMNAME,
76 XML_RELAXNG_ERR_ATTRNAME,
77 XML_RELAXNG_ERR_ELEMNONS,
78 XML_RELAXNG_ERR_ATTRNONS,
79 XML_RELAXNG_ERR_ELEMWRONGNS,
80 XML_RELAXNG_ERR_ATTRWRONGNS,
81 XML_RELAXNG_ERR_ELEMEXTRANS,
82 XML_RELAXNG_ERR_ATTREXTRANS,
83 XML_RELAXNG_ERR_ELEMNOTEMPTY,
84 XML_RELAXNG_ERR_NOELEM,
85 XML_RELAXNG_ERR_NOTELEM,
86 XML_RELAXNG_ERR_ATTRVALID,
87 XML_RELAXNG_ERR_CONTENTVALID,
88 XML_RELAXNG_ERR_EXTRACONTENT,
89 XML_RELAXNG_ERR_INVALIDATTR,
90 XML_RELAXNG_ERR_DATAELEM,
91 XML_RELAXNG_ERR_VALELEM,
92 XML_RELAXNG_ERR_LISTELEM,
93 XML_RELAXNG_ERR_DATATYPE,
94 XML_RELAXNG_ERR_VALUE,
96 XML_RELAXNG_ERR_NOGRAMMAR,
97 XML_RELAXNG_ERR_EXTRADATA,
98 XML_RELAXNG_ERR_LACKDATA,
99 XML_RELAXNG_ERR_INTERNAL,
100 XML_RELAXNG_ERR_ELEMWRONG,
101 XML_RELAXNG_ERR_TEXTWRONG
102 } xmlRelaxNGValidErr;
105 * xmlRelaxNGParserFlags:
107 * List of possible Relax NG Parser flags
110 XML_RELAXNGP_NONE = 0,
111 XML_RELAXNGP_FREE_DOC = 1,
112 XML_RELAXNGP_CRNG = 2
113 } xmlRelaxNGParserFlag;
115 XMLPUBFUN int XMLCALL
116 xmlRelaxNGInitTypes (void);
117 XMLPUBFUN void XMLCALL
118 xmlRelaxNGCleanupTypes (void);
121 * Interfaces for parsing.
123 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
124 xmlRelaxNGNewParserCtxt (const char *URL);
125 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
126 xmlRelaxNGNewMemParserCtxt (const char *buffer,
128 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
129 xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc);
131 XMLPUBFUN int XMLCALL
132 xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt,
135 XMLPUBFUN void XMLCALL
136 xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt);
137 XMLPUBFUN void XMLCALL
138 xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
139 xmlRelaxNGValidityErrorFunc err,
140 xmlRelaxNGValidityWarningFunc warn,
142 XMLPUBFUN int XMLCALL
143 xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
144 xmlRelaxNGValidityErrorFunc *err,
145 xmlRelaxNGValidityWarningFunc *warn,
147 XMLPUBFUN void XMLCALL
148 xmlRelaxNGSetParserStructuredErrors(
149 xmlRelaxNGParserCtxtPtr ctxt,
150 xmlStructuredErrorFunc serror,
152 XMLPUBFUN xmlRelaxNGPtr XMLCALL
153 xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt);
154 XMLPUBFUN void XMLCALL
155 xmlRelaxNGFree (xmlRelaxNGPtr schema);
156 #ifdef LIBXML_OUTPUT_ENABLED
157 XMLPUBFUN void XMLCALL
158 xmlRelaxNGDump (FILE *output,
159 xmlRelaxNGPtr schema);
160 XMLPUBFUN void XMLCALL
161 xmlRelaxNGDumpTree (FILE * output,
162 xmlRelaxNGPtr schema);
163 #endif /* LIBXML_OUTPUT_ENABLED */
165 * Interfaces for validating
167 XMLPUBFUN void XMLCALL
168 xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
169 xmlRelaxNGValidityErrorFunc err,
170 xmlRelaxNGValidityWarningFunc warn,
172 XMLPUBFUN int XMLCALL
173 xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
174 xmlRelaxNGValidityErrorFunc *err,
175 xmlRelaxNGValidityWarningFunc *warn,
177 XMLPUBFUN void XMLCALL
178 xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
179 xmlStructuredErrorFunc serror, void *ctx);
180 XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
181 xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema);
182 XMLPUBFUN void XMLCALL
183 xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
184 XMLPUBFUN int XMLCALL
185 xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt,
188 * Interfaces for progressive validation when possible
190 XMLPUBFUN int XMLCALL
191 xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt,
194 XMLPUBFUN int XMLCALL
195 xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
198 XMLPUBFUN int XMLCALL
199 xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt,
202 XMLPUBFUN int XMLCALL
203 xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt,
211 #endif /* LIBXML_SCHEMAS_ENABLED */
213 #endif /* __XML_RELAX_NG__ */