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
21extern "C" {
22#endif
23
24typedef 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 */
37typedef struct _xmlSchematron xmlSchematron;
38typedef 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 */
48typedef 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 */
58typedef void (*xmlSchematronValidityWarningFunc) (void *ctx, const char *msg, ...);
59
60/**
61 * A schemas validation context
62 */
63typedef struct _xmlSchematronParserCtxt xmlSchematronParserCtxt;
64typedef xmlSchematronParserCtxt *xmlSchematronParserCtxtPtr;
65
66typedef struct _xmlSchematronValidCtxt xmlSchematronValidCtxt;
67typedef xmlSchematronValidCtxt *xmlSchematronValidCtxtPtr;
68
69/*
70 * Interfaces for parsing.
71 */
72XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL
73	    xmlSchematronNewParserCtxt	(const char *URL);
74XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL
75	    xmlSchematronNewMemParserCtxt(const char *buffer,
76					 int size);
77XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL
78	    xmlSchematronNewDocParserCtxt(xmlDocPtr doc);
79XMLPUBFUN void XMLCALL
80	    xmlSchematronFreeParserCtxt	(xmlSchematronParserCtxtPtr ctxt);
81/*****
82XMLPUBFUN void XMLCALL
83	    xmlSchematronSetParserErrors(xmlSchematronParserCtxtPtr ctxt,
84					 xmlSchematronValidityErrorFunc err,
85					 xmlSchematronValidityWarningFunc warn,
86					 void *ctx);
87XMLPUBFUN int XMLCALL
88		xmlSchematronGetParserErrors(xmlSchematronParserCtxtPtr ctxt,
89					xmlSchematronValidityErrorFunc * err,
90					xmlSchematronValidityWarningFunc * warn,
91					void **ctx);
92XMLPUBFUN int XMLCALL
93		xmlSchematronIsValid	(xmlSchematronValidCtxtPtr ctxt);
94 *****/
95XMLPUBFUN xmlSchematronPtr XMLCALL
96	    xmlSchematronParse		(xmlSchematronParserCtxtPtr ctxt);
97XMLPUBFUN void XMLCALL
98	    xmlSchematronFree		(xmlSchematronPtr schema);
99/*
100 * Interfaces for validating
101 */
102XMLPUBFUN void XMLCALL
103	    xmlSchematronSetValidStructuredErrors(
104	                                  xmlSchematronValidCtxtPtr ctxt,
105					  xmlStructuredErrorFunc serror,
106					  void *ctx);
107/******
108XMLPUBFUN void XMLCALL
109	    xmlSchematronSetValidErrors	(xmlSchematronValidCtxtPtr ctxt,
110					 xmlSchematronValidityErrorFunc err,
111					 xmlSchematronValidityWarningFunc warn,
112					 void *ctx);
113XMLPUBFUN int XMLCALL
114	    xmlSchematronGetValidErrors	(xmlSchematronValidCtxtPtr ctxt,
115					 xmlSchematronValidityErrorFunc *err,
116					 xmlSchematronValidityWarningFunc *warn,
117					 void **ctx);
118XMLPUBFUN int XMLCALL
119	    xmlSchematronSetValidOptions(xmlSchematronValidCtxtPtr ctxt,
120					 int options);
121XMLPUBFUN int XMLCALL
122	    xmlSchematronValidCtxtGetOptions(xmlSchematronValidCtxtPtr ctxt);
123XMLPUBFUN int XMLCALL
124            xmlSchematronValidateOneElement (xmlSchematronValidCtxtPtr ctxt,
125			                 xmlNodePtr elem);
126 *******/
127
128XMLPUBFUN xmlSchematronValidCtxtPtr XMLCALL
129	    xmlSchematronNewValidCtxt	(xmlSchematronPtr schema,
130					 int options);
131XMLPUBFUN void XMLCALL
132	    xmlSchematronFreeValidCtxt	(xmlSchematronValidCtxtPtr ctxt);
133XMLPUBFUN 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