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__ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>