2 * relaxng.h: header for the implementation of the Relax-NG validation
4 * See Copyright for the status of this software.
9 #ifndef __XML_RELAX_NG__
10 #define __XML_RELAX_NG__
12 #include <libxml/hash.h>
14 typedef struct _xmlRelaxNG xmlRelaxNG;
15 typedef xmlRelaxNG *xmlRelaxNGPtr;
19 * A schemas validation context
21 typedef void (*xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...);
22 typedef void (*xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...);
24 typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
25 typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
27 typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
28 typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
33 * List of possible Relax NG validation errors
37 XML_RELAXNG_ERR_MEMORY,
39 XML_RELAXNG_ERR_TYPEVAL,
40 XML_RELAXNG_ERR_DUPID,
41 XML_RELAXNG_ERR_TYPECMP,
42 XML_RELAXNG_ERR_NOSTATE,
43 XML_RELAXNG_ERR_NODEFINE,
44 XML_RELAXNG_ERR_LISTEXTRA,
45 XML_RELAXNG_ERR_LISTEMPTY,
46 XML_RELAXNG_ERR_INTERNODATA,
47 XML_RELAXNG_ERR_INTERSEQ,
48 XML_RELAXNG_ERR_INTEREXTRA,
49 XML_RELAXNG_ERR_ELEMNAME,
50 XML_RELAXNG_ERR_ATTRNAME,
51 XML_RELAXNG_ERR_ELEMNONS,
52 XML_RELAXNG_ERR_ATTRNONS,
53 XML_RELAXNG_ERR_ELEMWRONGNS,
54 XML_RELAXNG_ERR_ATTRWRONGNS,
55 XML_RELAXNG_ERR_ELEMEXTRANS,
56 XML_RELAXNG_ERR_ATTREXTRANS,
57 XML_RELAXNG_ERR_ELEMNOTEMPTY,
58 XML_RELAXNG_ERR_NOELEM,
59 XML_RELAXNG_ERR_NOTELEM,
60 XML_RELAXNG_ERR_ATTRVALID,
61 XML_RELAXNG_ERR_CONTENTVALID,
62 XML_RELAXNG_ERR_EXTRACONTENT,
63 XML_RELAXNG_ERR_INVALIDATTR,
64 XML_RELAXNG_ERR_DATAELEM,
65 XML_RELAXNG_ERR_VALELEM,
66 XML_RELAXNG_ERR_LISTELEM,
67 XML_RELAXNG_ERR_DATATYPE,
68 XML_RELAXNG_ERR_VALUE,
70 XML_RELAXNG_ERR_NOGRAMMAR,
71 XML_RELAXNG_ERR_EXTRADATA,
72 XML_RELAXNG_ERR_LACKDATA,
73 XML_RELAXNG_ERR_INTERNAL,
74 XML_RELAXNG_ERR_ELEMWRONG,
75 XML_RELAXNG_ERR_TEXTWRONG
79 * Interfaces for parsing.
81 xmlRelaxNGParserCtxtPtr xmlRelaxNGNewParserCtxt (const char *URL);
82 xmlRelaxNGParserCtxtPtr xmlRelaxNGNewMemParserCtxt(const char *buffer,
84 xmlRelaxNGParserCtxtPtr xmlRelaxNGNewDocParserCtxt(xmlDocPtr doc);
86 void xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt);
87 void xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
88 xmlRelaxNGValidityErrorFunc err,
89 xmlRelaxNGValidityWarningFunc warn,
91 int xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
92 xmlRelaxNGValidityErrorFunc *err,
93 xmlRelaxNGValidityWarningFunc *warn,
95 xmlRelaxNGPtr xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt);
96 void xmlRelaxNGFree (xmlRelaxNGPtr schema);
97 void xmlRelaxNGDump (FILE *output,
98 xmlRelaxNGPtr schema);
99 void xmlRelaxNGDumpTree (FILE * output,
100 xmlRelaxNGPtr schema);
102 * Interfaces for validating
104 void xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
105 xmlRelaxNGValidityErrorFunc err,
106 xmlRelaxNGValidityWarningFunc warn,
108 int xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
109 xmlRelaxNGValidityErrorFunc *err,
110 xmlRelaxNGValidityWarningFunc *warn,
112 xmlRelaxNGValidCtxtPtr xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema);
113 void xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
114 int xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt,
116 void xmlRelaxNGCleanupTypes (void);
118 * Interfaces for progressive validation when possible
120 int xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt,
123 int xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
126 int xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt,
129 int xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt,
132 #endif /* __XML_RELAX_NG__ */