Paul Cercueil / libxml2

Dependents:   libiio

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers relaxng.h Source File

relaxng.h

00001 /*
00002  * Summary: implementation of the Relax-NG validation
00003  * Description: implementation of the Relax-NG validation
00004  *
00005  * Copy: See Copyright for the status of this software.
00006  *
00007  * Author: Daniel Veillard
00008  */
00009 
00010 #ifndef __XML_RELAX_NG__
00011 #define __XML_RELAX_NG__
00012 
00013 #include <libxml/xmlversion.h>
00014 #include <libxml/hash.h>
00015 #include <libxml/xmlstring.h>
00016 
00017 #ifdef LIBXML_SCHEMAS_ENABLED
00018 
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif
00022 
00023 typedef struct _xmlRelaxNG xmlRelaxNG;
00024 typedef xmlRelaxNG *xmlRelaxNGPtr;
00025 
00026 
00027 /**
00028  * xmlRelaxNGValidityErrorFunc:
00029  * @ctx: the validation context
00030  * @msg: the message
00031  * @...: extra arguments
00032  *
00033  * Signature of an error callback from a Relax-NG validation
00034  */
00035 typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx,
00036                               const char *msg,
00037                               ...) LIBXML_ATTR_FORMAT(2,3);
00038 
00039 /**
00040  * xmlRelaxNGValidityWarningFunc:
00041  * @ctx: the validation context
00042  * @msg: the message
00043  * @...: extra arguments
00044  *
00045  * Signature of a warning callback from a Relax-NG validation
00046  */
00047 typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx,
00048                             const char *msg,
00049                             ...) LIBXML_ATTR_FORMAT(2,3);
00050 
00051 /**
00052  * A schemas validation context
00053  */
00054 typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
00055 typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
00056 
00057 typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
00058 typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
00059 
00060 /*
00061  * xmlRelaxNGValidErr:
00062  *
00063  * List of possible Relax NG validation errors
00064  */
00065 typedef enum {
00066     XML_RELAXNG_OK = 0,
00067     XML_RELAXNG_ERR_MEMORY,
00068     XML_RELAXNG_ERR_TYPE,
00069     XML_RELAXNG_ERR_TYPEVAL,
00070     XML_RELAXNG_ERR_DUPID,
00071     XML_RELAXNG_ERR_TYPECMP,
00072     XML_RELAXNG_ERR_NOSTATE,
00073     XML_RELAXNG_ERR_NODEFINE,
00074     XML_RELAXNG_ERR_LISTEXTRA,
00075     XML_RELAXNG_ERR_LISTEMPTY,
00076     XML_RELAXNG_ERR_INTERNODATA,
00077     XML_RELAXNG_ERR_INTERSEQ,
00078     XML_RELAXNG_ERR_INTEREXTRA,
00079     XML_RELAXNG_ERR_ELEMNAME,
00080     XML_RELAXNG_ERR_ATTRNAME,
00081     XML_RELAXNG_ERR_ELEMNONS,
00082     XML_RELAXNG_ERR_ATTRNONS,
00083     XML_RELAXNG_ERR_ELEMWRONGNS,
00084     XML_RELAXNG_ERR_ATTRWRONGNS,
00085     XML_RELAXNG_ERR_ELEMEXTRANS,
00086     XML_RELAXNG_ERR_ATTREXTRANS,
00087     XML_RELAXNG_ERR_ELEMNOTEMPTY,
00088     XML_RELAXNG_ERR_NOELEM,
00089     XML_RELAXNG_ERR_NOTELEM,
00090     XML_RELAXNG_ERR_ATTRVALID,
00091     XML_RELAXNG_ERR_CONTENTVALID,
00092     XML_RELAXNG_ERR_EXTRACONTENT,
00093     XML_RELAXNG_ERR_INVALIDATTR,
00094     XML_RELAXNG_ERR_DATAELEM,
00095     XML_RELAXNG_ERR_VALELEM,
00096     XML_RELAXNG_ERR_LISTELEM,
00097     XML_RELAXNG_ERR_DATATYPE,
00098     XML_RELAXNG_ERR_VALUE,
00099     XML_RELAXNG_ERR_LIST,
00100     XML_RELAXNG_ERR_NOGRAMMAR,
00101     XML_RELAXNG_ERR_EXTRADATA,
00102     XML_RELAXNG_ERR_LACKDATA,
00103     XML_RELAXNG_ERR_INTERNAL,
00104     XML_RELAXNG_ERR_ELEMWRONG,
00105     XML_RELAXNG_ERR_TEXTWRONG
00106 } xmlRelaxNGValidErr;
00107 
00108 /*
00109  * xmlRelaxNGParserFlags:
00110  *
00111  * List of possible Relax NG Parser flags
00112  */
00113 typedef enum {
00114     XML_RELAXNGP_NONE = 0,
00115     XML_RELAXNGP_FREE_DOC = 1,
00116     XML_RELAXNGP_CRNG = 2
00117 } xmlRelaxNGParserFlag;
00118 
00119 XMLPUBFUN int XMLCALL
00120             xmlRelaxNGInitTypes     (void);
00121 XMLPUBFUN void XMLCALL
00122             xmlRelaxNGCleanupTypes  (void);
00123 
00124 /*
00125  * Interfaces for parsing.
00126  */
00127 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
00128             xmlRelaxNGNewParserCtxt (const char *URL);
00129 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
00130             xmlRelaxNGNewMemParserCtxt  (const char *buffer,
00131                          int size);
00132 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
00133             xmlRelaxNGNewDocParserCtxt  (xmlDocPtr doc);
00134 
00135 XMLPUBFUN int XMLCALL
00136             xmlRelaxParserSetFlag   (xmlRelaxNGParserCtxtPtr ctxt,
00137                          int flag);
00138 
00139 XMLPUBFUN void XMLCALL
00140             xmlRelaxNGFreeParserCtxt    (xmlRelaxNGParserCtxtPtr ctxt);
00141 XMLPUBFUN void XMLCALL
00142             xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
00143                      xmlRelaxNGValidityErrorFunc err,
00144                      xmlRelaxNGValidityWarningFunc warn,
00145                      void *ctx);
00146 XMLPUBFUN int XMLCALL
00147             xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
00148                      xmlRelaxNGValidityErrorFunc *err,
00149                      xmlRelaxNGValidityWarningFunc *warn,
00150                      void **ctx);
00151 XMLPUBFUN void XMLCALL
00152             xmlRelaxNGSetParserStructuredErrors(
00153                      xmlRelaxNGParserCtxtPtr ctxt,
00154                      xmlStructuredErrorFunc serror,
00155                      void *ctx);
00156 XMLPUBFUN xmlRelaxNGPtr XMLCALL
00157             xmlRelaxNGParse     (xmlRelaxNGParserCtxtPtr ctxt);
00158 XMLPUBFUN void XMLCALL
00159             xmlRelaxNGFree      (xmlRelaxNGPtr schema);
00160 #ifdef LIBXML_OUTPUT_ENABLED
00161 XMLPUBFUN void XMLCALL
00162             xmlRelaxNGDump      (FILE *output,
00163                      xmlRelaxNGPtr schema);
00164 XMLPUBFUN void XMLCALL
00165             xmlRelaxNGDumpTree  (FILE * output,
00166                      xmlRelaxNGPtr schema);
00167 #endif /* LIBXML_OUTPUT_ENABLED */
00168 /*
00169  * Interfaces for validating
00170  */
00171 XMLPUBFUN void XMLCALL
00172             xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
00173                      xmlRelaxNGValidityErrorFunc err,
00174                      xmlRelaxNGValidityWarningFunc warn,
00175                      void *ctx);
00176 XMLPUBFUN int XMLCALL
00177             xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
00178                      xmlRelaxNGValidityErrorFunc *err,
00179                      xmlRelaxNGValidityWarningFunc *warn,
00180                      void **ctx);
00181 XMLPUBFUN void XMLCALL
00182             xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
00183                       xmlStructuredErrorFunc serror, void *ctx);
00184 XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
00185             xmlRelaxNGNewValidCtxt  (xmlRelaxNGPtr schema);
00186 XMLPUBFUN void XMLCALL
00187             xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
00188 XMLPUBFUN int XMLCALL
00189             xmlRelaxNGValidateDoc   (xmlRelaxNGValidCtxtPtr ctxt,
00190                          xmlDocPtr doc);
00191 /*
00192  * Interfaces for progressive validation when possible
00193  */
00194 XMLPUBFUN int XMLCALL
00195             xmlRelaxNGValidatePushElement   (xmlRelaxNGValidCtxtPtr ctxt,
00196                      xmlDocPtr doc,
00197                      xmlNodePtr elem);
00198 XMLPUBFUN int XMLCALL
00199             xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
00200                      const xmlChar *data,
00201                      int len);
00202 XMLPUBFUN int XMLCALL
00203             xmlRelaxNGValidatePopElement    (xmlRelaxNGValidCtxtPtr ctxt,
00204                      xmlDocPtr doc,
00205                      xmlNodePtr elem);
00206 XMLPUBFUN int XMLCALL
00207             xmlRelaxNGValidateFullElement   (xmlRelaxNGValidCtxtPtr ctxt,
00208                      xmlDocPtr doc,
00209                      xmlNodePtr elem);
00210 
00211 #ifdef __cplusplus
00212 }
00213 #endif
00214 
00215 #endif /* LIBXML_SCHEMAS_ENABLED */
00216 
00217 #endif /* __XML_RELAX_NG__ */
00218