relaxng.h

Go to the documentation of this file.
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 
00030 typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...);
00031 typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...);
00032 
00033 typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
00034 typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
00035 
00036 typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
00037 typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
00038 
00039 /*
00040  * xmlRelaxNGValidErr:
00041  *
00042  * List of possible Relax NG validation errors
00043  */
00044 typedef enum {
00045     XML_RELAXNG_OK = 0,
00046     XML_RELAXNG_ERR_MEMORY,
00047     XML_RELAXNG_ERR_TYPE,
00048     XML_RELAXNG_ERR_TYPEVAL,
00049     XML_RELAXNG_ERR_DUPID,
00050     XML_RELAXNG_ERR_TYPECMP,
00051     XML_RELAXNG_ERR_NOSTATE,
00052     XML_RELAXNG_ERR_NODEFINE,
00053     XML_RELAXNG_ERR_LISTEXTRA,
00054     XML_RELAXNG_ERR_LISTEMPTY,
00055     XML_RELAXNG_ERR_INTERNODATA,
00056     XML_RELAXNG_ERR_INTERSEQ,
00057     XML_RELAXNG_ERR_INTEREXTRA,
00058     XML_RELAXNG_ERR_ELEMNAME,
00059     XML_RELAXNG_ERR_ATTRNAME,
00060     XML_RELAXNG_ERR_ELEMNONS,
00061     XML_RELAXNG_ERR_ATTRNONS,
00062     XML_RELAXNG_ERR_ELEMWRONGNS,
00063     XML_RELAXNG_ERR_ATTRWRONGNS,
00064     XML_RELAXNG_ERR_ELEMEXTRANS,
00065     XML_RELAXNG_ERR_ATTREXTRANS,
00066     XML_RELAXNG_ERR_ELEMNOTEMPTY,
00067     XML_RELAXNG_ERR_NOELEM,
00068     XML_RELAXNG_ERR_NOTELEM,
00069     XML_RELAXNG_ERR_ATTRVALID,
00070     XML_RELAXNG_ERR_CONTENTVALID,
00071     XML_RELAXNG_ERR_EXTRACONTENT,
00072     XML_RELAXNG_ERR_INVALIDATTR,
00073     XML_RELAXNG_ERR_DATAELEM,
00074     XML_RELAXNG_ERR_VALELEM,
00075     XML_RELAXNG_ERR_LISTELEM,
00076     XML_RELAXNG_ERR_DATATYPE,
00077     XML_RELAXNG_ERR_VALUE,
00078     XML_RELAXNG_ERR_LIST,
00079     XML_RELAXNG_ERR_NOGRAMMAR,
00080     XML_RELAXNG_ERR_EXTRADATA,
00081     XML_RELAXNG_ERR_LACKDATA,
00082     XML_RELAXNG_ERR_INTERNAL,
00083     XML_RELAXNG_ERR_ELEMWRONG,
00084     XML_RELAXNG_ERR_TEXTWRONG
00085 } xmlRelaxNGValidErr;
00086 
00087 /*
00088  * xmlRelaxNGParserFlags:
00089  *
00090  * List of possible Relax NG Parser flags
00091  */
00092 typedef enum {
00093     XML_RELAXNGP_NONE = 0,
00094     XML_RELAXNGP_FREE_DOC = 1,
00095     XML_RELAXNGP_CRNG = 2
00096 } xmlRelaxNGParserFlag;
00097 
00098 XMLPUBFUN int XMLCALL
00099             xmlRelaxNGInitTypes     (void);
00100 XMLPUBFUN void XMLCALL          
00101             xmlRelaxNGCleanupTypes  (void);
00102 
00103 /*
00104  * Interfaces for parsing.
00105  */
00106 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL 
00107             xmlRelaxNGNewParserCtxt (const char *URL);
00108 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL 
00109             xmlRelaxNGNewMemParserCtxt  (const char *buffer,
00110                          int size);
00111 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL   
00112             xmlRelaxNGNewDocParserCtxt  (xmlDocPtr doc);
00113 
00114 XMLPUBFUN int XMLCALL
00115             xmlRelaxParserSetFlag   (xmlRelaxNGParserCtxtPtr ctxt,
00116                              int flag);
00117 
00118 XMLPUBFUN void XMLCALL      
00119             xmlRelaxNGFreeParserCtxt    (xmlRelaxNGParserCtxtPtr ctxt);
00120 XMLPUBFUN void XMLCALL          
00121             xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
00122                      xmlRelaxNGValidityErrorFunc err,
00123                      xmlRelaxNGValidityWarningFunc warn,
00124                      void *ctx);
00125 XMLPUBFUN int XMLCALL
00126             xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
00127                      xmlRelaxNGValidityErrorFunc *err,
00128                      xmlRelaxNGValidityWarningFunc *warn,
00129                      void **ctx);
00130 XMLPUBFUN void XMLCALL
00131             xmlRelaxNGSetParserStructuredErrors(
00132                      xmlRelaxNGParserCtxtPtr ctxt,
00133                      xmlStructuredErrorFunc serror,
00134                      void *ctx);
00135 XMLPUBFUN xmlRelaxNGPtr XMLCALL 
00136             xmlRelaxNGParse     (xmlRelaxNGParserCtxtPtr ctxt);
00137 XMLPUBFUN void XMLCALL      
00138             xmlRelaxNGFree      (xmlRelaxNGPtr schema);
00139 #ifdef LIBXML_OUTPUT_ENABLED
00140 XMLPUBFUN void XMLCALL      
00141             xmlRelaxNGDump      (FILE *output,
00142                      xmlRelaxNGPtr schema);
00143 XMLPUBFUN void XMLCALL
00144             xmlRelaxNGDumpTree  (FILE * output,
00145                      xmlRelaxNGPtr schema);
00146 #endif /* LIBXML_OUTPUT_ENABLED */
00147 /*
00148  * Interfaces for validating
00149  */
00150 XMLPUBFUN void XMLCALL      
00151             xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
00152                      xmlRelaxNGValidityErrorFunc err,
00153                      xmlRelaxNGValidityWarningFunc warn,
00154                      void *ctx);
00155 XMLPUBFUN int XMLCALL   
00156             xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
00157                      xmlRelaxNGValidityErrorFunc *err,
00158                      xmlRelaxNGValidityWarningFunc *warn,
00159                      void **ctx);
00160 XMLPUBFUN void XMLCALL
00161             xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
00162                       xmlStructuredErrorFunc serror, void *ctx);
00163 XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL    
00164             xmlRelaxNGNewValidCtxt  (xmlRelaxNGPtr schema);
00165 XMLPUBFUN void XMLCALL          
00166             xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
00167 XMLPUBFUN int XMLCALL           
00168             xmlRelaxNGValidateDoc   (xmlRelaxNGValidCtxtPtr ctxt,
00169                          xmlDocPtr doc);
00170 /*
00171  * Interfaces for progressive validation when possible
00172  */
00173 XMLPUBFUN int XMLCALL   
00174             xmlRelaxNGValidatePushElement   (xmlRelaxNGValidCtxtPtr ctxt,
00175                      xmlDocPtr doc,
00176                      xmlNodePtr elem);
00177 XMLPUBFUN int XMLCALL   
00178             xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
00179                      const xmlChar *data,
00180                      int len);
00181 XMLPUBFUN int XMLCALL   
00182             xmlRelaxNGValidatePopElement    (xmlRelaxNGValidCtxtPtr ctxt,
00183                      xmlDocPtr doc,
00184                      xmlNodePtr elem);
00185 XMLPUBFUN int XMLCALL   
00186             xmlRelaxNGValidateFullElement   (xmlRelaxNGValidCtxtPtr ctxt,
00187                      xmlDocPtr doc,
00188                      xmlNodePtr elem);
00189 
00190 #ifdef __cplusplus
00191 }
00192 #endif
00193 
00194 #endif /* LIBXML_SCHEMAS_ENABLED */
00195 
00196 #endif /* __XML_RELAX_NG__ */
footer
 SourceForge.net Logo