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