blob: 982c9f174a3af82f968ab4d93d5e7286e40cc812 [file] [log] [blame]
Daniel Veillard6eadf632003-01-23 18:29:16 +00001/*
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
14typedef struct _xmlRelaxNG xmlRelaxNG;
15typedef xmlRelaxNG *xmlRelaxNGPtr;
16
17
18/**
19 * A schemas validation context
20 */
21typedef void (*xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...);
22typedef void (*xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...);
23
24typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
25typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
26
27typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
28typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
29
30/*
Daniel Veillard42f12e92003-03-07 18:32:59 +000031 * xmlRelaxNGValidErr:
32 *
33 * List of possible Relax NG validation errors
34 */
35typedef 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_TYPECMP,
41 XML_RELAXNG_ERR_NOSTATE,
42 XML_RELAXNG_ERR_NODEFINE,
43 XML_RELAXNG_ERR_LISTEXTRA,
Daniel Veillard1564e6e2003-03-15 21:30:25 +000044 XML_RELAXNG_ERR_LISTEMPTY,
Daniel Veillard42f12e92003-03-07 18:32:59 +000045 XML_RELAXNG_ERR_INTERNODATA,
46 XML_RELAXNG_ERR_INTERSEQ,
47 XML_RELAXNG_ERR_INTEREXTRA,
48 XML_RELAXNG_ERR_ELEMNAME,
Daniel Veillard1564e6e2003-03-15 21:30:25 +000049 XML_RELAXNG_ERR_ATTRNAME,
Daniel Veillard42f12e92003-03-07 18:32:59 +000050 XML_RELAXNG_ERR_ELEMNONS,
Daniel Veillard1564e6e2003-03-15 21:30:25 +000051 XML_RELAXNG_ERR_ATTRNONS,
Daniel Veillard42f12e92003-03-07 18:32:59 +000052 XML_RELAXNG_ERR_ELEMWRONGNS,
Daniel Veillard1564e6e2003-03-15 21:30:25 +000053 XML_RELAXNG_ERR_ATTRWRONGNS,
Daniel Veillard42f12e92003-03-07 18:32:59 +000054 XML_RELAXNG_ERR_ELEMEXTRANS,
Daniel Veillard1564e6e2003-03-15 21:30:25 +000055 XML_RELAXNG_ERR_ATTREXTRANS,
Daniel Veillard42f12e92003-03-07 18:32:59 +000056 XML_RELAXNG_ERR_ELEMNOTEMPTY,
57 XML_RELAXNG_ERR_NOELEM,
58 XML_RELAXNG_ERR_NOTELEM,
59 XML_RELAXNG_ERR_ATTRVALID,
60 XML_RELAXNG_ERR_CONTENTVALID,
61 XML_RELAXNG_ERR_EXTRACONTENT,
62 XML_RELAXNG_ERR_INVALIDATTR,
63 XML_RELAXNG_ERR_DATAELEM,
64 XML_RELAXNG_ERR_VALELEM,
65 XML_RELAXNG_ERR_LISTELEM,
66 XML_RELAXNG_ERR_DATATYPE,
67 XML_RELAXNG_ERR_VALUE,
68 XML_RELAXNG_ERR_LIST,
69 XML_RELAXNG_ERR_NOGRAMMAR,
Daniel Veillardfd573f12003-03-16 17:52:32 +000070 XML_RELAXNG_ERR_EXTRADATA,
Daniel Veillard952379b2003-03-17 15:37:12 +000071 XML_RELAXNG_ERR_LACKDATA,
72 XML_RELAXNG_ERR_INTERNAL
Daniel Veillard42f12e92003-03-07 18:32:59 +000073} xmlRelaxNGValidErr;
74
75/*
Daniel Veillard6eadf632003-01-23 18:29:16 +000076 * Interfaces for parsing.
77 */
78xmlRelaxNGParserCtxtPtr xmlRelaxNGNewParserCtxt (const char *URL);
79xmlRelaxNGParserCtxtPtr xmlRelaxNGNewMemParserCtxt(const char *buffer,
80 int size);
81void xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt);
82void xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
83 xmlRelaxNGValidityErrorFunc err,
84 xmlRelaxNGValidityWarningFunc warn,
85 void *ctx);
86xmlRelaxNGPtr xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt);
87void xmlRelaxNGFree (xmlRelaxNGPtr schema);
88void xmlRelaxNGDump (FILE *output,
89 xmlRelaxNGPtr schema);
Daniel Veillardfebcca42003-02-16 15:44:18 +000090void xmlRelaxNGDumpTree (FILE * output,
91 xmlRelaxNGPtr schema);
Daniel Veillard6eadf632003-01-23 18:29:16 +000092/*
93 * Interfaces for validating
94 */
95void xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
96 xmlRelaxNGValidityErrorFunc err,
97 xmlRelaxNGValidityWarningFunc warn,
98 void *ctx);
99xmlRelaxNGValidCtxtPtr xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema);
100void xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
101int xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt,
102 xmlDocPtr instance);
103int xmlRelaxNGValidateStream(xmlRelaxNGValidCtxtPtr ctxt,
104 xmlParserInputBufferPtr input,
105 xmlCharEncoding enc,
106 xmlSAXHandlerPtr sax,
107 void *user_data);
108void xmlRelaxNGCleanupTypes (void);
109#endif /* __XML_RELAX_NG__ */