1 | /* |
2 | * Summary: XML Schemastron implementation |
3 | * Description: interface to the XML Schematron validity checking. |
4 | * |
5 | * Copy: See Copyright for the status of this software. |
6 | * |
7 | * Author: Daniel Veillard |
8 | */ |
9 | |
10 | |
11 | #ifndef __XML_SCHEMATRON_H__ |
12 | #define __XML_SCHEMATRON_H__ |
13 | |
14 | #include <libxml/xmlversion.h> |
15 | |
16 | #ifdef LIBXML_SCHEMATRON_ENABLED |
17 | |
18 | #include <libxml/tree.h> |
19 | |
20 | #ifdef __cplusplus |
21 | extern "C" { |
22 | #endif |
23 | |
24 | typedef enum { |
25 | XML_SCHEMATRON_OUT_QUIET = 1 << 0, /* quiet no report */ |
26 | XML_SCHEMATRON_OUT_TEXT = 1 << 1, /* build a textual report */ |
27 | XML_SCHEMATRON_OUT_XML = 1 << 2, /* output SVRL */ |
28 | XML_SCHEMATRON_OUT_ERROR = 1 << 3, /* output via xmlStructuredErrorFunc */ |
29 | XML_SCHEMATRON_OUT_FILE = 1 << 8, /* output to a file descriptor */ |
30 | XML_SCHEMATRON_OUT_BUFFER = 1 << 9, /* output to a buffer */ |
31 | XML_SCHEMATRON_OUT_IO = 1 << 10 /* output to I/O mechanism */ |
32 | } xmlSchematronValidOptions; |
33 | |
34 | /** |
35 | * The schemas related types are kept internal |
36 | */ |
37 | typedef struct _xmlSchematron xmlSchematron; |
38 | typedef xmlSchematron *xmlSchematronPtr; |
39 | |
40 | /** |
41 | * xmlSchematronValidityErrorFunc: |
42 | * @ctx: the validation context |
43 | * @msg: the message |
44 | * @...: extra arguments |
45 | * |
46 | * Signature of an error callback from a Schematron validation |
47 | */ |
48 | typedef void (*xmlSchematronValidityErrorFunc) (void *ctx, const char *msg, ...); |
49 | |
50 | /** |
51 | * xmlSchematronValidityWarningFunc: |
52 | * @ctx: the validation context |
53 | * @msg: the message |
54 | * @...: extra arguments |
55 | * |
56 | * Signature of a warning callback from a Schematron validation |
57 | */ |
58 | typedef void (*xmlSchematronValidityWarningFunc) (void *ctx, const char *msg, ...); |
59 | |
60 | /** |
61 | * A schemas validation context |
62 | */ |
63 | typedef struct _xmlSchematronParserCtxt xmlSchematronParserCtxt; |
64 | typedef xmlSchematronParserCtxt *xmlSchematronParserCtxtPtr; |
65 | |
66 | typedef struct _xmlSchematronValidCtxt xmlSchematronValidCtxt; |
67 | typedef xmlSchematronValidCtxt *xmlSchematronValidCtxtPtr; |
68 | |
69 | /* |
70 | * Interfaces for parsing. |
71 | */ |
72 | XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL |
73 | xmlSchematronNewParserCtxt (const char *URL); |
74 | XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL |
75 | xmlSchematronNewMemParserCtxt(const char *buffer, |
76 | int size); |
77 | XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL |
78 | xmlSchematronNewDocParserCtxt(xmlDocPtr doc); |
79 | XMLPUBFUN void XMLCALL |
80 | xmlSchematronFreeParserCtxt (xmlSchematronParserCtxtPtr ctxt); |
81 | /***** |
82 | XMLPUBFUN void XMLCALL |
83 | xmlSchematronSetParserErrors(xmlSchematronParserCtxtPtr ctxt, |
84 | xmlSchematronValidityErrorFunc err, |
85 | xmlSchematronValidityWarningFunc warn, |
86 | void *ctx); |
87 | XMLPUBFUN int XMLCALL |
88 | xmlSchematronGetParserErrors(xmlSchematronParserCtxtPtr ctxt, |
89 | xmlSchematronValidityErrorFunc * err, |
90 | xmlSchematronValidityWarningFunc * warn, |
91 | void **ctx); |
92 | XMLPUBFUN int XMLCALL |
93 | xmlSchematronIsValid (xmlSchematronValidCtxtPtr ctxt); |
94 | *****/ |
95 | XMLPUBFUN xmlSchematronPtr XMLCALL |
96 | xmlSchematronParse (xmlSchematronParserCtxtPtr ctxt); |
97 | XMLPUBFUN void XMLCALL |
98 | xmlSchematronFree (xmlSchematronPtr schema); |
99 | /* |
100 | * Interfaces for validating |
101 | */ |
102 | XMLPUBFUN void XMLCALL |
103 | xmlSchematronSetValidStructuredErrors( |
104 | xmlSchematronValidCtxtPtr ctxt, |
105 | xmlStructuredErrorFunc serror, |
106 | void *ctx); |
107 | /****** |
108 | XMLPUBFUN void XMLCALL |
109 | xmlSchematronSetValidErrors (xmlSchematronValidCtxtPtr ctxt, |
110 | xmlSchematronValidityErrorFunc err, |
111 | xmlSchematronValidityWarningFunc warn, |
112 | void *ctx); |
113 | XMLPUBFUN int XMLCALL |
114 | xmlSchematronGetValidErrors (xmlSchematronValidCtxtPtr ctxt, |
115 | xmlSchematronValidityErrorFunc *err, |
116 | xmlSchematronValidityWarningFunc *warn, |
117 | void **ctx); |
118 | XMLPUBFUN int XMLCALL |
119 | xmlSchematronSetValidOptions(xmlSchematronValidCtxtPtr ctxt, |
120 | int options); |
121 | XMLPUBFUN int XMLCALL |
122 | xmlSchematronValidCtxtGetOptions(xmlSchematronValidCtxtPtr ctxt); |
123 | XMLPUBFUN int XMLCALL |
124 | xmlSchematronValidateOneElement (xmlSchematronValidCtxtPtr ctxt, |
125 | xmlNodePtr elem); |
126 | *******/ |
127 | |
128 | XMLPUBFUN xmlSchematronValidCtxtPtr XMLCALL |
129 | xmlSchematronNewValidCtxt (xmlSchematronPtr schema, |
130 | int options); |
131 | XMLPUBFUN void XMLCALL |
132 | xmlSchematronFreeValidCtxt (xmlSchematronValidCtxtPtr ctxt); |
133 | XMLPUBFUN int XMLCALL |
134 | xmlSchematronValidateDoc (xmlSchematronValidCtxtPtr ctxt, |
135 | xmlDocPtr instance); |
136 | |
137 | #ifdef __cplusplus |
138 | } |
139 | #endif |
140 | |
141 | #endif /* LIBXML_SCHEMATRON_ENABLED */ |
142 | #endif /* __XML_SCHEMATRON_H__ */ |
143 | |