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