added Info.plist
[TestXSLT.git] / libxml2 / include / libxml / relaxng.h
1 /*
2  * relaxng.h: header for the implementation of the Relax-NG validation
3  *
4  * See Copyright for the status of this software.
5  *
6  * daniel@veillard.com
7  */
8
9 #ifndef __XML_RELAX_NG__
10 #define __XML_RELAX_NG__
11
12 #include <libxml/hash.h>
13
14 typedef struct _xmlRelaxNG xmlRelaxNG;
15 typedef xmlRelaxNG *xmlRelaxNGPtr;
16
17
18 /**
19  * A schemas validation context
20  */
21 typedef void (*xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...);
22 typedef void (*xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...);
23
24 typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
25 typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
26
27 typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
28 typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
29
30 /*
31  * xmlRelaxNGValidErr:
32  *
33  * List of possible Relax NG validation errors
34  */
35 typedef enum {
36     XML_RELAXNG_OK = 0,
37     XML_RELAXNG_ERR_MEMORY,
38     XML_RELAXNG_ERR_TYPE,
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,
69     XML_RELAXNG_ERR_LIST,
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
76 } xmlRelaxNGValidErr;
77
78 /*
79  * Interfaces for parsing.
80  */
81 xmlRelaxNGParserCtxtPtr xmlRelaxNGNewParserCtxt (const char *URL);
82 xmlRelaxNGParserCtxtPtr xmlRelaxNGNewMemParserCtxt(const char *buffer,
83                                                  int size);
84 xmlRelaxNGParserCtxtPtr xmlRelaxNGNewDocParserCtxt(xmlDocPtr doc);
85
86 void            xmlRelaxNGFreeParserCtxt        (xmlRelaxNGParserCtxtPtr ctxt);
87 void            xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
88                                          xmlRelaxNGValidityErrorFunc err,
89                                          xmlRelaxNGValidityWarningFunc warn,
90                                          void *ctx);
91 int             xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
92                                          xmlRelaxNGValidityErrorFunc *err,
93                                          xmlRelaxNGValidityWarningFunc *warn,
94                                          void **ctx);
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);
101 /*
102  * Interfaces for validating
103  */
104 void            xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
105                                          xmlRelaxNGValidityErrorFunc err,
106                                          xmlRelaxNGValidityWarningFunc warn,
107                                          void *ctx);
108 int             xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
109                                          xmlRelaxNGValidityErrorFunc *err,
110                                          xmlRelaxNGValidityWarningFunc *warn,
111                                          void **ctx);
112 xmlRelaxNGValidCtxtPtr  xmlRelaxNGNewValidCtxt  (xmlRelaxNGPtr schema);
113 void                    xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
114 int                     xmlRelaxNGValidateDoc   (xmlRelaxNGValidCtxtPtr ctxt,
115                                                  xmlDocPtr doc);
116 void                    xmlRelaxNGCleanupTypes  (void);
117 /*
118  * Interfaces for progressive validation when possible
119  */
120 int     xmlRelaxNGValidatePushElement   (xmlRelaxNGValidCtxtPtr ctxt,
121                                          xmlDocPtr doc,
122                                          xmlNodePtr elem);
123 int     xmlRelaxNGValidatePushCData     (xmlRelaxNGValidCtxtPtr ctxt,
124                                          const xmlChar *data,
125                                          int len);
126 int     xmlRelaxNGValidatePopElement    (xmlRelaxNGValidCtxtPtr ctxt,
127                                          xmlDocPtr doc,
128                                          xmlNodePtr elem);
129 int     xmlRelaxNGValidateFullElement   (xmlRelaxNGValidCtxtPtr ctxt,
130                                          xmlDocPtr doc,
131                                          xmlNodePtr elem);
132 #endif /* __XML_RELAX_NG__ */