/ libxml2 / include / libxml / relaxng.h
relaxng.h
  1  /*
  2   * Summary: implementation of the Relax-NG validation
  3   * Description: implementation of the Relax-NG validation
  4   *
  5   * Copy: See Copyright for the status of this software.
  6   *
  7   * Author: Daniel Veillard
  8   */
  9  
 10  #ifndef __XML_RELAX_NG__
 11  #define __XML_RELAX_NG__
 12  
 13  #include <libxml/xmlversion.h>
 14  #include <libxml/hash.h>
 15  #include <libxml/xmlstring.h>
 16  
 17  #ifdef LIBXML_SCHEMAS_ENABLED
 18  
 19  #ifdef __cplusplus
 20  extern "C" {
 21  #endif
 22  
 23  typedef struct _xmlRelaxNG xmlRelaxNG;
 24  typedef xmlRelaxNG *xmlRelaxNGPtr;
 25  
 26  
 27  /**
 28   * xmlRelaxNGValidityErrorFunc:
 29   * @ctx: the validation context
 30   * @msg: the message
 31   * @...: extra arguments
 32   *
 33   * Signature of an error callback from a Relax-NG validation
 34   */
 35  typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx,
 36  						      const char *msg,
 37  						      ...) LIBXML_ATTR_FORMAT(2,3);
 38  
 39  /**
 40   * xmlRelaxNGValidityWarningFunc:
 41   * @ctx: the validation context
 42   * @msg: the message
 43   * @...: extra arguments
 44   *
 45   * Signature of a warning callback from a Relax-NG validation
 46   */
 47  typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx,
 48  							const char *msg,
 49  							...) LIBXML_ATTR_FORMAT(2,3);
 50  
 51  /**
 52   * A schemas validation context
 53   */
 54  typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
 55  typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
 56  
 57  typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
 58  typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
 59  
 60  /*
 61   * xmlRelaxNGValidErr:
 62   *
 63   * List of possible Relax NG validation errors
 64   */
 65  typedef enum {
 66      XML_RELAXNG_OK = 0,
 67      XML_RELAXNG_ERR_MEMORY,
 68      XML_RELAXNG_ERR_TYPE,
 69      XML_RELAXNG_ERR_TYPEVAL,
 70      XML_RELAXNG_ERR_DUPID,
 71      XML_RELAXNG_ERR_TYPECMP,
 72      XML_RELAXNG_ERR_NOSTATE,
 73      XML_RELAXNG_ERR_NODEFINE,
 74      XML_RELAXNG_ERR_LISTEXTRA,
 75      XML_RELAXNG_ERR_LISTEMPTY,
 76      XML_RELAXNG_ERR_INTERNODATA,
 77      XML_RELAXNG_ERR_INTERSEQ,
 78      XML_RELAXNG_ERR_INTEREXTRA,
 79      XML_RELAXNG_ERR_ELEMNAME,
 80      XML_RELAXNG_ERR_ATTRNAME,
 81      XML_RELAXNG_ERR_ELEMNONS,
 82      XML_RELAXNG_ERR_ATTRNONS,
 83      XML_RELAXNG_ERR_ELEMWRONGNS,
 84      XML_RELAXNG_ERR_ATTRWRONGNS,
 85      XML_RELAXNG_ERR_ELEMEXTRANS,
 86      XML_RELAXNG_ERR_ATTREXTRANS,
 87      XML_RELAXNG_ERR_ELEMNOTEMPTY,
 88      XML_RELAXNG_ERR_NOELEM,
 89      XML_RELAXNG_ERR_NOTELEM,
 90      XML_RELAXNG_ERR_ATTRVALID,
 91      XML_RELAXNG_ERR_CONTENTVALID,
 92      XML_RELAXNG_ERR_EXTRACONTENT,
 93      XML_RELAXNG_ERR_INVALIDATTR,
 94      XML_RELAXNG_ERR_DATAELEM,
 95      XML_RELAXNG_ERR_VALELEM,
 96      XML_RELAXNG_ERR_LISTELEM,
 97      XML_RELAXNG_ERR_DATATYPE,
 98      XML_RELAXNG_ERR_VALUE,
 99      XML_RELAXNG_ERR_LIST,
100      XML_RELAXNG_ERR_NOGRAMMAR,
101      XML_RELAXNG_ERR_EXTRADATA,
102      XML_RELAXNG_ERR_LACKDATA,
103      XML_RELAXNG_ERR_INTERNAL,
104      XML_RELAXNG_ERR_ELEMWRONG,
105      XML_RELAXNG_ERR_TEXTWRONG
106  } xmlRelaxNGValidErr;
107  
108  /*
109   * xmlRelaxNGParserFlags:
110   *
111   * List of possible Relax NG Parser flags
112   */
113  typedef enum {
114      XML_RELAXNGP_NONE = 0,
115      XML_RELAXNGP_FREE_DOC = 1,
116      XML_RELAXNGP_CRNG = 2
117  } xmlRelaxNGParserFlag;
118  
119  XMLPUBFUN int XMLCALL
120  		    xmlRelaxNGInitTypes		(void);
121  XMLPUBFUN void XMLCALL
122  		    xmlRelaxNGCleanupTypes	(void);
123  
124  /*
125   * Interfaces for parsing.
126   */
127  XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
128  		    xmlRelaxNGNewParserCtxt	(const char *URL);
129  XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
130  		    xmlRelaxNGNewMemParserCtxt	(const char *buffer,
131  						 int size);
132  XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
133  		    xmlRelaxNGNewDocParserCtxt	(xmlDocPtr doc);
134  
135  XMLPUBFUN int XMLCALL
136  		    xmlRelaxParserSetFlag	(xmlRelaxNGParserCtxtPtr ctxt,
137  						 int flag);
138  
139  XMLPUBFUN void XMLCALL
140  		    xmlRelaxNGFreeParserCtxt	(xmlRelaxNGParserCtxtPtr ctxt);
141  XMLPUBFUN void XMLCALL
142  		    xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
143  					 xmlRelaxNGValidityErrorFunc err,
144  					 xmlRelaxNGValidityWarningFunc warn,
145  					 void *ctx);
146  XMLPUBFUN int XMLCALL
147  		    xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
148  					 xmlRelaxNGValidityErrorFunc *err,
149  					 xmlRelaxNGValidityWarningFunc *warn,
150  					 void **ctx);
151  XMLPUBFUN void XMLCALL
152  		    xmlRelaxNGSetParserStructuredErrors(
153  					 xmlRelaxNGParserCtxtPtr ctxt,
154  					 xmlStructuredErrorFunc serror,
155  					 void *ctx);
156  XMLPUBFUN xmlRelaxNGPtr XMLCALL
157  		    xmlRelaxNGParse		(xmlRelaxNGParserCtxtPtr ctxt);
158  XMLPUBFUN void XMLCALL
159  		    xmlRelaxNGFree		(xmlRelaxNGPtr schema);
160  #ifdef LIBXML_OUTPUT_ENABLED
161  XMLPUBFUN void XMLCALL
162  		    xmlRelaxNGDump		(FILE *output,
163  					 xmlRelaxNGPtr schema);
164  XMLPUBFUN void XMLCALL
165  		    xmlRelaxNGDumpTree	(FILE * output,
166  					 xmlRelaxNGPtr schema);
167  #endif /* LIBXML_OUTPUT_ENABLED */
168  /*
169   * Interfaces for validating
170   */
171  XMLPUBFUN void XMLCALL
172  		    xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
173  					 xmlRelaxNGValidityErrorFunc err,
174  					 xmlRelaxNGValidityWarningFunc warn,
175  					 void *ctx);
176  XMLPUBFUN int XMLCALL
177  		    xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
178  					 xmlRelaxNGValidityErrorFunc *err,
179  					 xmlRelaxNGValidityWarningFunc *warn,
180  					 void **ctx);
181  XMLPUBFUN void XMLCALL
182  			xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
183  					  xmlStructuredErrorFunc serror, void *ctx);
184  XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
185  		    xmlRelaxNGNewValidCtxt	(xmlRelaxNGPtr schema);
186  XMLPUBFUN void XMLCALL
187  		    xmlRelaxNGFreeValidCtxt	(xmlRelaxNGValidCtxtPtr ctxt);
188  XMLPUBFUN int XMLCALL
189  		    xmlRelaxNGValidateDoc	(xmlRelaxNGValidCtxtPtr ctxt,
190  						 xmlDocPtr doc);
191  /*
192   * Interfaces for progressive validation when possible
193   */
194  XMLPUBFUN int XMLCALL
195  		    xmlRelaxNGValidatePushElement	(xmlRelaxNGValidCtxtPtr ctxt,
196  					 xmlDocPtr doc,
197  					 xmlNodePtr elem);
198  XMLPUBFUN int XMLCALL
199  		    xmlRelaxNGValidatePushCData	(xmlRelaxNGValidCtxtPtr ctxt,
200  					 const xmlChar *data,
201  					 int len);
202  XMLPUBFUN int XMLCALL
203  		    xmlRelaxNGValidatePopElement	(xmlRelaxNGValidCtxtPtr ctxt,
204  					 xmlDocPtr doc,
205  					 xmlNodePtr elem);
206  XMLPUBFUN int XMLCALL
207  		    xmlRelaxNGValidateFullElement	(xmlRelaxNGValidCtxtPtr ctxt,
208  					 xmlDocPtr doc,
209  					 xmlNodePtr elem);
210  
211  #ifdef __cplusplus
212  }
213  #endif
214  
215  #endif /* LIBXML_SCHEMAS_ENABLED */
216  
217  #endif /* __XML_RELAX_NG__ */