LTKCPP-- LLRP Toolkit C Plus Plus Library
relaxng.h
1 /*
2  * Summary: implementation of the Relax-NG validation
3  * Description: implementation of the Relax-NG validation
4  *
5  * Copy: See Copyright for the status of this software.
6  *
7  * Author: Daniel Veillard
8  */
9 
10 #ifndef __XML_RELAX_NG__
11 #define __XML_RELAX_NG__
12 
13 #include <libxml/xmlversion.h>
14 #include <libxml/hash.h>
15 #include <libxml/xmlstring.h>
16 
17 #ifdef LIBXML_SCHEMAS_ENABLED
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 typedef struct _xmlRelaxNG xmlRelaxNG;
24 typedef xmlRelaxNG *xmlRelaxNGPtr;
25 
26 
35 typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
36 
45 typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
46 
50 typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
51 typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
52 
53 typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
54 typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
55 
56 /*
57  * xmlRelaxNGValidErr:
58  *
59  * List of possible Relax NG validation errors
60  */
61 typedef enum {
62  XML_RELAXNG_OK = 0,
63  XML_RELAXNG_ERR_MEMORY,
64  XML_RELAXNG_ERR_TYPE,
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,
95  XML_RELAXNG_ERR_LIST,
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;
103 
104 /*
105  * xmlRelaxNGParserFlags:
106  *
107  * List of possible Relax NG Parser flags
108  */
109 typedef enum {
110  XML_RELAXNGP_NONE = 0,
111  XML_RELAXNGP_FREE_DOC = 1,
112  XML_RELAXNGP_CRNG = 2
113 } xmlRelaxNGParserFlag;
114 
115 XMLPUBFUN int XMLCALL
116  xmlRelaxNGInitTypes (void);
117 XMLPUBFUN void XMLCALL
118  xmlRelaxNGCleanupTypes (void);
119 
120 /*
121  * Interfaces for parsing.
122  */
123 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
124  xmlRelaxNGNewParserCtxt (const char *URL);
125 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
126  xmlRelaxNGNewMemParserCtxt (const char *buffer,
127  int size);
128 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
129  xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc);
130 
131 XMLPUBFUN int XMLCALL
132  xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt,
133  int flag);
134 
135 XMLPUBFUN void XMLCALL
136  xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt);
137 XMLPUBFUN void XMLCALL
138  xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
139  xmlRelaxNGValidityErrorFunc err,
140  xmlRelaxNGValidityWarningFunc warn,
141  void *ctx);
142 XMLPUBFUN int XMLCALL
143  xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
144  xmlRelaxNGValidityErrorFunc *err,
145  xmlRelaxNGValidityWarningFunc *warn,
146  void **ctx);
147 XMLPUBFUN void XMLCALL
148  xmlRelaxNGSetParserStructuredErrors(
149  xmlRelaxNGParserCtxtPtr ctxt,
150  xmlStructuredErrorFunc serror,
151  void *ctx);
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 */
164 /*
165  * Interfaces for validating
166  */
167 XMLPUBFUN void XMLCALL
168  xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
169  xmlRelaxNGValidityErrorFunc err,
170  xmlRelaxNGValidityWarningFunc warn,
171  void *ctx);
172 XMLPUBFUN int XMLCALL
173  xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
174  xmlRelaxNGValidityErrorFunc *err,
175  xmlRelaxNGValidityWarningFunc *warn,
176  void **ctx);
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,
186  xmlDocPtr doc);
187 /*
188  * Interfaces for progressive validation when possible
189  */
190 XMLPUBFUN int XMLCALL
191  xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt,
192  xmlDocPtr doc,
193  xmlNodePtr elem);
194 XMLPUBFUN int XMLCALL
195  xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
196  const xmlChar *data,
197  int len);
198 XMLPUBFUN int XMLCALL
199  xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt,
200  xmlDocPtr doc,
201  xmlNodePtr elem);
202 XMLPUBFUN int XMLCALL
203  xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt,
204  xmlDocPtr doc,
205  xmlNodePtr elem);
206 
207 #ifdef __cplusplus
208 }
209 #endif
210 
211 #endif /* LIBXML_SCHEMAS_ENABLED */
212 
213 #endif /* __XML_RELAX_NG__ */