Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wine-mirror
GitHub Repository: wine-mirror/wine
Path: blob/master/libs/xml2/include/libxml/relaxng.h
4394 views
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/xmlerror.h>
15
#include <libxml/xmlstring.h>
16
#include <libxml/tree.h>
17
18
#ifdef LIBXML_SCHEMAS_ENABLED
19
20
#ifdef __cplusplus
21
extern "C" {
22
#endif
23
24
typedef struct _xmlRelaxNG xmlRelaxNG;
25
typedef xmlRelaxNG *xmlRelaxNGPtr;
26
27
28
/**
29
* xmlRelaxNGValidityErrorFunc:
30
* @ctx: the validation context
31
* @msg: the message
32
* @...: extra arguments
33
*
34
* Signature of an error callback from a Relax-NG validation
35
*/
36
typedef void (*xmlRelaxNGValidityErrorFunc) (void *ctx,
37
const char *msg,
38
...) LIBXML_ATTR_FORMAT(2,3);
39
40
/**
41
* xmlRelaxNGValidityWarningFunc:
42
* @ctx: the validation context
43
* @msg: the message
44
* @...: extra arguments
45
*
46
* Signature of a warning callback from a Relax-NG validation
47
*/
48
typedef void (*xmlRelaxNGValidityWarningFunc) (void *ctx,
49
const char *msg,
50
...) LIBXML_ATTR_FORMAT(2,3);
51
52
/**
53
* A schemas validation context
54
*/
55
typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
56
typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
57
58
typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
59
typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
60
61
/*
62
* xmlRelaxNGValidErr:
63
*
64
* List of possible Relax NG validation errors
65
*/
66
typedef enum {
67
XML_RELAXNG_OK = 0,
68
XML_RELAXNG_ERR_MEMORY,
69
XML_RELAXNG_ERR_TYPE,
70
XML_RELAXNG_ERR_TYPEVAL,
71
XML_RELAXNG_ERR_DUPID,
72
XML_RELAXNG_ERR_TYPECMP,
73
XML_RELAXNG_ERR_NOSTATE,
74
XML_RELAXNG_ERR_NODEFINE,
75
XML_RELAXNG_ERR_LISTEXTRA,
76
XML_RELAXNG_ERR_LISTEMPTY,
77
XML_RELAXNG_ERR_INTERNODATA,
78
XML_RELAXNG_ERR_INTERSEQ,
79
XML_RELAXNG_ERR_INTEREXTRA,
80
XML_RELAXNG_ERR_ELEMNAME,
81
XML_RELAXNG_ERR_ATTRNAME,
82
XML_RELAXNG_ERR_ELEMNONS,
83
XML_RELAXNG_ERR_ATTRNONS,
84
XML_RELAXNG_ERR_ELEMWRONGNS,
85
XML_RELAXNG_ERR_ATTRWRONGNS,
86
XML_RELAXNG_ERR_ELEMEXTRANS,
87
XML_RELAXNG_ERR_ATTREXTRANS,
88
XML_RELAXNG_ERR_ELEMNOTEMPTY,
89
XML_RELAXNG_ERR_NOELEM,
90
XML_RELAXNG_ERR_NOTELEM,
91
XML_RELAXNG_ERR_ATTRVALID,
92
XML_RELAXNG_ERR_CONTENTVALID,
93
XML_RELAXNG_ERR_EXTRACONTENT,
94
XML_RELAXNG_ERR_INVALIDATTR,
95
XML_RELAXNG_ERR_DATAELEM,
96
XML_RELAXNG_ERR_VALELEM,
97
XML_RELAXNG_ERR_LISTELEM,
98
XML_RELAXNG_ERR_DATATYPE,
99
XML_RELAXNG_ERR_VALUE,
100
XML_RELAXNG_ERR_LIST,
101
XML_RELAXNG_ERR_NOGRAMMAR,
102
XML_RELAXNG_ERR_EXTRADATA,
103
XML_RELAXNG_ERR_LACKDATA,
104
XML_RELAXNG_ERR_INTERNAL,
105
XML_RELAXNG_ERR_ELEMWRONG,
106
XML_RELAXNG_ERR_TEXTWRONG
107
} xmlRelaxNGValidErr;
108
109
/*
110
* xmlRelaxNGParserFlags:
111
*
112
* List of possible Relax NG Parser flags
113
*/
114
typedef enum {
115
XML_RELAXNGP_NONE = 0,
116
XML_RELAXNGP_FREE_DOC = 1,
117
XML_RELAXNGP_CRNG = 2
118
} xmlRelaxNGParserFlag;
119
120
XMLPUBFUN int
121
xmlRelaxNGInitTypes (void);
122
XML_DEPRECATED
123
XMLPUBFUN void
124
xmlRelaxNGCleanupTypes (void);
125
126
/*
127
* Interfaces for parsing.
128
*/
129
XMLPUBFUN xmlRelaxNGParserCtxtPtr
130
xmlRelaxNGNewParserCtxt (const char *URL);
131
XMLPUBFUN xmlRelaxNGParserCtxtPtr
132
xmlRelaxNGNewMemParserCtxt (const char *buffer,
133
int size);
134
XMLPUBFUN xmlRelaxNGParserCtxtPtr
135
xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc);
136
137
XMLPUBFUN int
138
xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt,
139
int flag);
140
141
XMLPUBFUN void
142
xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt);
143
XMLPUBFUN void
144
xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
145
xmlRelaxNGValidityErrorFunc err,
146
xmlRelaxNGValidityWarningFunc warn,
147
void *ctx);
148
XMLPUBFUN int
149
xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
150
xmlRelaxNGValidityErrorFunc *err,
151
xmlRelaxNGValidityWarningFunc *warn,
152
void **ctx);
153
XMLPUBFUN void
154
xmlRelaxNGSetParserStructuredErrors(
155
xmlRelaxNGParserCtxtPtr ctxt,
156
xmlStructuredErrorFunc serror,
157
void *ctx);
158
XMLPUBFUN xmlRelaxNGPtr
159
xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt);
160
XMLPUBFUN void
161
xmlRelaxNGFree (xmlRelaxNGPtr schema);
162
#ifdef LIBXML_OUTPUT_ENABLED
163
XMLPUBFUN void
164
xmlRelaxNGDump (FILE *output,
165
xmlRelaxNGPtr schema);
166
XMLPUBFUN void
167
xmlRelaxNGDumpTree (FILE * output,
168
xmlRelaxNGPtr schema);
169
#endif /* LIBXML_OUTPUT_ENABLED */
170
/*
171
* Interfaces for validating
172
*/
173
XMLPUBFUN void
174
xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
175
xmlRelaxNGValidityErrorFunc err,
176
xmlRelaxNGValidityWarningFunc warn,
177
void *ctx);
178
XMLPUBFUN int
179
xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
180
xmlRelaxNGValidityErrorFunc *err,
181
xmlRelaxNGValidityWarningFunc *warn,
182
void **ctx);
183
XMLPUBFUN void
184
xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
185
xmlStructuredErrorFunc serror, void *ctx);
186
XMLPUBFUN xmlRelaxNGValidCtxtPtr
187
xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema);
188
XMLPUBFUN void
189
xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
190
XMLPUBFUN int
191
xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt,
192
xmlDocPtr doc);
193
/*
194
* Interfaces for progressive validation when possible
195
*/
196
XMLPUBFUN int
197
xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt,
198
xmlDocPtr doc,
199
xmlNodePtr elem);
200
XMLPUBFUN int
201
xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
202
const xmlChar *data,
203
int len);
204
XMLPUBFUN int
205
xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt,
206
xmlDocPtr doc,
207
xmlNodePtr elem);
208
XMLPUBFUN int
209
xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt,
210
xmlDocPtr doc,
211
xmlNodePtr elem);
212
213
#ifdef __cplusplus
214
}
215
#endif
216
217
#endif /* LIBXML_SCHEMAS_ENABLED */
218
219
#endif /* __XML_RELAX_NG__ */
220
221