Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-22 10:41:50

0001 /*
0002  * Summary: implementation of the Relax-NG validation
0003  * Description: implementation of the Relax-NG validation
0004  *
0005  * Copy: See Copyright for the status of this software.
0006  *
0007  * Author: Daniel Veillard
0008  */
0009 
0010 #ifndef __XML_RELAX_NG__
0011 #define __XML_RELAX_NG__
0012 
0013 #include <libxml/xmlversion.h>
0014 #include <libxml/xmlerror.h>
0015 #include <libxml/xmlstring.h>
0016 #include <libxml/tree.h>
0017 
0018 #ifdef LIBXML_SCHEMAS_ENABLED
0019 
0020 #ifdef __cplusplus
0021 extern "C" {
0022 #endif
0023 
0024 typedef struct _xmlRelaxNG xmlRelaxNG;
0025 typedef xmlRelaxNG *xmlRelaxNGPtr;
0026 
0027 
0028 /**
0029  * xmlRelaxNGValidityErrorFunc:
0030  * @ctx: the validation context
0031  * @msg: the message
0032  * @...: extra arguments
0033  *
0034  * Signature of an error callback from a Relax-NG validation
0035  */
0036 typedef void (*xmlRelaxNGValidityErrorFunc) (void *ctx,
0037                               const char *msg,
0038                               ...) LIBXML_ATTR_FORMAT(2,3);
0039 
0040 /**
0041  * xmlRelaxNGValidityWarningFunc:
0042  * @ctx: the validation context
0043  * @msg: the message
0044  * @...: extra arguments
0045  *
0046  * Signature of a warning callback from a Relax-NG validation
0047  */
0048 typedef void (*xmlRelaxNGValidityWarningFunc) (void *ctx,
0049                             const char *msg,
0050                             ...) LIBXML_ATTR_FORMAT(2,3);
0051 
0052 /**
0053  * A schemas validation context
0054  */
0055 typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
0056 typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
0057 
0058 typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
0059 typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
0060 
0061 /*
0062  * xmlRelaxNGValidErr:
0063  *
0064  * List of possible Relax NG validation errors
0065  */
0066 typedef enum {
0067     XML_RELAXNG_OK = 0,
0068     XML_RELAXNG_ERR_MEMORY,
0069     XML_RELAXNG_ERR_TYPE,
0070     XML_RELAXNG_ERR_TYPEVAL,
0071     XML_RELAXNG_ERR_DUPID,
0072     XML_RELAXNG_ERR_TYPECMP,
0073     XML_RELAXNG_ERR_NOSTATE,
0074     XML_RELAXNG_ERR_NODEFINE,
0075     XML_RELAXNG_ERR_LISTEXTRA,
0076     XML_RELAXNG_ERR_LISTEMPTY,
0077     XML_RELAXNG_ERR_INTERNODATA,
0078     XML_RELAXNG_ERR_INTERSEQ,
0079     XML_RELAXNG_ERR_INTEREXTRA,
0080     XML_RELAXNG_ERR_ELEMNAME,
0081     XML_RELAXNG_ERR_ATTRNAME,
0082     XML_RELAXNG_ERR_ELEMNONS,
0083     XML_RELAXNG_ERR_ATTRNONS,
0084     XML_RELAXNG_ERR_ELEMWRONGNS,
0085     XML_RELAXNG_ERR_ATTRWRONGNS,
0086     XML_RELAXNG_ERR_ELEMEXTRANS,
0087     XML_RELAXNG_ERR_ATTREXTRANS,
0088     XML_RELAXNG_ERR_ELEMNOTEMPTY,
0089     XML_RELAXNG_ERR_NOELEM,
0090     XML_RELAXNG_ERR_NOTELEM,
0091     XML_RELAXNG_ERR_ATTRVALID,
0092     XML_RELAXNG_ERR_CONTENTVALID,
0093     XML_RELAXNG_ERR_EXTRACONTENT,
0094     XML_RELAXNG_ERR_INVALIDATTR,
0095     XML_RELAXNG_ERR_DATAELEM,
0096     XML_RELAXNG_ERR_VALELEM,
0097     XML_RELAXNG_ERR_LISTELEM,
0098     XML_RELAXNG_ERR_DATATYPE,
0099     XML_RELAXNG_ERR_VALUE,
0100     XML_RELAXNG_ERR_LIST,
0101     XML_RELAXNG_ERR_NOGRAMMAR,
0102     XML_RELAXNG_ERR_EXTRADATA,
0103     XML_RELAXNG_ERR_LACKDATA,
0104     XML_RELAXNG_ERR_INTERNAL,
0105     XML_RELAXNG_ERR_ELEMWRONG,
0106     XML_RELAXNG_ERR_TEXTWRONG
0107 } xmlRelaxNGValidErr;
0108 
0109 /*
0110  * xmlRelaxNGParserFlags:
0111  *
0112  * List of possible Relax NG Parser flags
0113  */
0114 typedef enum {
0115     XML_RELAXNGP_NONE = 0,
0116     XML_RELAXNGP_FREE_DOC = 1,
0117     XML_RELAXNGP_CRNG = 2
0118 } xmlRelaxNGParserFlag;
0119 
0120 XMLPUBFUN int
0121             xmlRelaxNGInitTypes     (void);
0122 XML_DEPRECATED
0123 XMLPUBFUN void
0124             xmlRelaxNGCleanupTypes  (void);
0125 
0126 /*
0127  * Interfaces for parsing.
0128  */
0129 XMLPUBFUN xmlRelaxNGParserCtxtPtr
0130             xmlRelaxNGNewParserCtxt (const char *URL);
0131 XMLPUBFUN xmlRelaxNGParserCtxtPtr
0132             xmlRelaxNGNewMemParserCtxt  (const char *buffer,
0133                          int size);
0134 XMLPUBFUN xmlRelaxNGParserCtxtPtr
0135             xmlRelaxNGNewDocParserCtxt  (xmlDocPtr doc);
0136 
0137 XMLPUBFUN int
0138             xmlRelaxParserSetFlag   (xmlRelaxNGParserCtxtPtr ctxt,
0139                          int flag);
0140 
0141 XMLPUBFUN void
0142             xmlRelaxNGFreeParserCtxt    (xmlRelaxNGParserCtxtPtr ctxt);
0143 XMLPUBFUN void
0144             xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
0145                      xmlRelaxNGValidityErrorFunc err,
0146                      xmlRelaxNGValidityWarningFunc warn,
0147                      void *ctx);
0148 XMLPUBFUN int
0149             xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
0150                      xmlRelaxNGValidityErrorFunc *err,
0151                      xmlRelaxNGValidityWarningFunc *warn,
0152                      void **ctx);
0153 XMLPUBFUN void
0154             xmlRelaxNGSetParserStructuredErrors(
0155                      xmlRelaxNGParserCtxtPtr ctxt,
0156                      xmlStructuredErrorFunc serror,
0157                      void *ctx);
0158 XMLPUBFUN xmlRelaxNGPtr
0159             xmlRelaxNGParse     (xmlRelaxNGParserCtxtPtr ctxt);
0160 XMLPUBFUN void
0161             xmlRelaxNGFree      (xmlRelaxNGPtr schema);
0162 #ifdef LIBXML_OUTPUT_ENABLED
0163 XMLPUBFUN void
0164             xmlRelaxNGDump      (FILE *output,
0165                      xmlRelaxNGPtr schema);
0166 XMLPUBFUN void
0167             xmlRelaxNGDumpTree  (FILE * output,
0168                      xmlRelaxNGPtr schema);
0169 #endif /* LIBXML_OUTPUT_ENABLED */
0170 /*
0171  * Interfaces for validating
0172  */
0173 XMLPUBFUN void
0174             xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
0175                      xmlRelaxNGValidityErrorFunc err,
0176                      xmlRelaxNGValidityWarningFunc warn,
0177                      void *ctx);
0178 XMLPUBFUN int
0179             xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
0180                      xmlRelaxNGValidityErrorFunc *err,
0181                      xmlRelaxNGValidityWarningFunc *warn,
0182                      void **ctx);
0183 XMLPUBFUN void
0184             xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
0185                       xmlStructuredErrorFunc serror, void *ctx);
0186 XMLPUBFUN xmlRelaxNGValidCtxtPtr
0187             xmlRelaxNGNewValidCtxt  (xmlRelaxNGPtr schema);
0188 XMLPUBFUN void
0189             xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
0190 XMLPUBFUN int
0191             xmlRelaxNGValidateDoc   (xmlRelaxNGValidCtxtPtr ctxt,
0192                          xmlDocPtr doc);
0193 /*
0194  * Interfaces for progressive validation when possible
0195  */
0196 XMLPUBFUN int
0197             xmlRelaxNGValidatePushElement   (xmlRelaxNGValidCtxtPtr ctxt,
0198                      xmlDocPtr doc,
0199                      xmlNodePtr elem);
0200 XMLPUBFUN int
0201             xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
0202                      const xmlChar *data,
0203                      int len);
0204 XMLPUBFUN int
0205             xmlRelaxNGValidatePopElement    (xmlRelaxNGValidCtxtPtr ctxt,
0206                      xmlDocPtr doc,
0207                      xmlNodePtr elem);
0208 XMLPUBFUN int
0209             xmlRelaxNGValidateFullElement   (xmlRelaxNGValidCtxtPtr ctxt,
0210                      xmlDocPtr doc,
0211                      xmlNodePtr elem);
0212 
0213 #ifdef __cplusplus
0214 }
0215 #endif
0216 
0217 #endif /* LIBXML_SCHEMAS_ENABLED */
0218 
0219 #endif /* __XML_RELAX_NG__ */