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__ */