Home | History | Annotate | Download | only in libxml
      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