relaxng.h

00001 /*
00002 
00003  * Summary: implementation of the Relax-NG validation
00004 
00005  * Description: implementation of the Relax-NG validation
00006 
00007  *
00008 
00009  * Copy: See Copyright for the status of this software.
00010 
00011  *
00012 
00013  * Author: Daniel Veillard
00014 
00015  */
00016 
00017 
00018 
00019 #ifndef __XML_RELAX_NG__
00020 
00021 #define __XML_RELAX_NG__
00022 
00023 
00024 
00025 #include <libxml/xmlversion.h>
00026 
00027 #include <libxml/hash.h>
00028 
00029 #include <libxml/xmlstring.h>
00030 
00031 
00032 
00033 #ifdef LIBXML_SCHEMAS_ENABLED
00034 
00035 
00036 
00037 #ifdef __cplusplus
00038 
00039 extern "C" {
00040 
00041 #endif
00042 
00043 
00044 
00045 typedef struct _xmlRelaxNG xmlRelaxNG;
00046 
00047 typedef xmlRelaxNG *xmlRelaxNGPtr;
00048 
00049 
00050 
00051 
00052 
00059 typedef void (*xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...);
00060 
00061 typedef void (*xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...);
00062 
00063 
00064 
00065 typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
00066 
00067 typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
00068 
00069 
00070 
00071 typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
00072 
00073 typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
00074 
00075 
00076 
00077 /*
00078 
00079  * xmlRelaxNGValidErr:
00080 
00081  *
00082 
00083  * List of possible Relax NG validation errors
00084 
00085  */
00086 
00087 typedef enum {
00088 
00089     XML_RELAXNG_OK = 0,
00090 
00091     XML_RELAXNG_ERR_MEMORY,
00092 
00093     XML_RELAXNG_ERR_TYPE,
00094 
00095     XML_RELAXNG_ERR_TYPEVAL,
00096 
00097     XML_RELAXNG_ERR_DUPID,
00098 
00099     XML_RELAXNG_ERR_TYPECMP,
00100 
00101     XML_RELAXNG_ERR_NOSTATE,
00102 
00103     XML_RELAXNG_ERR_NODEFINE,
00104 
00105     XML_RELAXNG_ERR_LISTEXTRA,
00106 
00107     XML_RELAXNG_ERR_LISTEMPTY,
00108 
00109     XML_RELAXNG_ERR_INTERNODATA,
00110 
00111     XML_RELAXNG_ERR_INTERSEQ,
00112 
00113     XML_RELAXNG_ERR_INTEREXTRA,
00114 
00115     XML_RELAXNG_ERR_ELEMNAME,
00116 
00117     XML_RELAXNG_ERR_ATTRNAME,
00118 
00119     XML_RELAXNG_ERR_ELEMNONS,
00120 
00121     XML_RELAXNG_ERR_ATTRNONS,
00122 
00123     XML_RELAXNG_ERR_ELEMWRONGNS,
00124 
00125     XML_RELAXNG_ERR_ATTRWRONGNS,
00126 
00127     XML_RELAXNG_ERR_ELEMEXTRANS,
00128 
00129     XML_RELAXNG_ERR_ATTREXTRANS,
00130 
00131     XML_RELAXNG_ERR_ELEMNOTEMPTY,
00132 
00133     XML_RELAXNG_ERR_NOELEM,
00134 
00135     XML_RELAXNG_ERR_NOTELEM,
00136 
00137     XML_RELAXNG_ERR_ATTRVALID,
00138 
00139     XML_RELAXNG_ERR_CONTENTVALID,
00140 
00141     XML_RELAXNG_ERR_EXTRACONTENT,
00142 
00143     XML_RELAXNG_ERR_INVALIDATTR,
00144 
00145     XML_RELAXNG_ERR_DATAELEM,
00146 
00147     XML_RELAXNG_ERR_VALELEM,
00148 
00149     XML_RELAXNG_ERR_LISTELEM,
00150 
00151     XML_RELAXNG_ERR_DATATYPE,
00152 
00153     XML_RELAXNG_ERR_VALUE,
00154 
00155     XML_RELAXNG_ERR_LIST,
00156 
00157     XML_RELAXNG_ERR_NOGRAMMAR,
00158 
00159     XML_RELAXNG_ERR_EXTRADATA,
00160 
00161     XML_RELAXNG_ERR_LACKDATA,
00162 
00163     XML_RELAXNG_ERR_INTERNAL,
00164 
00165     XML_RELAXNG_ERR_ELEMWRONG,
00166 
00167     XML_RELAXNG_ERR_TEXTWRONG
00168 
00169 } xmlRelaxNGValidErr;
00170 
00171 
00172 
00173 /*
00174 
00175  * xmlRelaxNGParserFlags:
00176 
00177  *
00178 
00179  * List of possible Relax NG Parser flags
00180 
00181  */
00182 
00183 typedef enum {
00184 
00185     XML_RELAXNGP_NONE = 0,
00186 
00187     XML_RELAXNGP_FREE_DOC = 1,
00188 
00189     XML_RELAXNGP_CRNG = 2
00190 
00191 } xmlRelaxNGParserFlag;
00192 
00193 
00194 
00195 XMLPUBFUN int XMLCALL
00196 
00197                     xmlRelaxNGInitTypes         (void);
00198 
00199 XMLPUBFUN void XMLCALL                  
00200 
00201                     xmlRelaxNGCleanupTypes      (void);
00202 
00203 
00204 
00205 /*
00206 
00207  * Interfaces for parsing.
00208 
00209  */
00210 
00211 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL 
00212 
00213                     xmlRelaxNGNewParserCtxt     (const char *URL);
00214 
00215 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL 
00216 
00217                     xmlRelaxNGNewMemParserCtxt  (const char *buffer,
00218 
00219                                                  int size);
00220 
00221 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL   
00222 
00223                     xmlRelaxNGNewDocParserCtxt  (xmlDocPtr doc);
00224 
00225 
00226 
00227 XMLPUBFUN int XMLCALL
00228 
00229                     xmlRelaxParserSetFlag       (xmlRelaxNGParserCtxtPtr ctxt,
00230 
00231                                                  int flag);
00232 
00233 
00234 
00235 XMLPUBFUN void XMLCALL          
00236 
00237                     xmlRelaxNGFreeParserCtxt    (xmlRelaxNGParserCtxtPtr ctxt);
00238 
00239 XMLPUBFUN void XMLCALL                  
00240 
00241                     xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
00242 
00243                                          xmlRelaxNGValidityErrorFunc err,
00244 
00245                                          xmlRelaxNGValidityWarningFunc warn,
00246 
00247                                          void *ctx);
00248 
00249 XMLPUBFUN int XMLCALL
00250 
00251                     xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
00252 
00253                                          xmlRelaxNGValidityErrorFunc *err,
00254 
00255                                          xmlRelaxNGValidityWarningFunc *warn,
00256 
00257                                          void **ctx);
00258 
00259 XMLPUBFUN xmlRelaxNGPtr XMLCALL 
00260 
00261                     xmlRelaxNGParse             (xmlRelaxNGParserCtxtPtr ctxt);
00262 
00263 XMLPUBFUN void XMLCALL          
00264 
00265                     xmlRelaxNGFree              (xmlRelaxNGPtr schema);
00266 
00267 #ifdef LIBXML_OUTPUT_ENABLED
00268 
00269 XMLPUBFUN void XMLCALL          
00270 
00271                     xmlRelaxNGDump              (FILE *output,
00272 
00273                                          xmlRelaxNGPtr schema);
00274 
00275 XMLPUBFUN void XMLCALL
00276 
00277                     xmlRelaxNGDumpTree  (FILE * output,
00278 
00279                                          xmlRelaxNGPtr schema);
00280 
00281 #endif /* LIBXML_OUTPUT_ENABLED */
00282 
00283 /*
00284 
00285  * Interfaces for validating
00286 
00287  */
00288 
00289 XMLPUBFUN void XMLCALL          
00290 
00291                     xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
00292 
00293                                          xmlRelaxNGValidityErrorFunc err,
00294 
00295                                          xmlRelaxNGValidityWarningFunc warn,
00296 
00297                                          void *ctx);
00298 
00299 XMLPUBFUN int XMLCALL   
00300 
00301                     xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
00302 
00303                                          xmlRelaxNGValidityErrorFunc *err,
00304 
00305                                          xmlRelaxNGValidityWarningFunc *warn,
00306 
00307                                          void **ctx);
00308 
00309 XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL        
00310 
00311                     xmlRelaxNGNewValidCtxt      (xmlRelaxNGPtr schema);
00312 
00313 XMLPUBFUN void XMLCALL                  
00314 
00315                     xmlRelaxNGFreeValidCtxt     (xmlRelaxNGValidCtxtPtr ctxt);
00316 
00317 XMLPUBFUN int XMLCALL                   
00318 
00319                     xmlRelaxNGValidateDoc       (xmlRelaxNGValidCtxtPtr ctxt,
00320 
00321                                                  xmlDocPtr doc);
00322 
00323 /*
00324 
00325  * Interfaces for progressive validation when possible
00326 
00327  */
00328 
00329 XMLPUBFUN int XMLCALL   
00330 
00331                     xmlRelaxNGValidatePushElement       (xmlRelaxNGValidCtxtPtr ctxt,
00332 
00333                                          xmlDocPtr doc,
00334 
00335                                          xmlNodePtr elem);
00336 
00337 XMLPUBFUN int XMLCALL   
00338 
00339                     xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
00340 
00341                                          const xmlChar *data,
00342 
00343                                          int len);
00344 
00345 XMLPUBFUN int XMLCALL   
00346 
00347                     xmlRelaxNGValidatePopElement        (xmlRelaxNGValidCtxtPtr ctxt,
00348 
00349                                          xmlDocPtr doc,
00350 
00351                                          xmlNodePtr elem);
00352 
00353 XMLPUBFUN int XMLCALL   
00354 
00355                     xmlRelaxNGValidateFullElement       (xmlRelaxNGValidCtxtPtr ctxt,
00356 
00357                                          xmlDocPtr doc,
00358 
00359                                          xmlNodePtr elem);
00360 
00361 
00362 
00363 #ifdef __cplusplus
00364 
00365 }
00366 
00367 #endif
00368 
00369 
00370 
00371 #endif /* LIBXML_SCHEMAS_ENABLED */
00372 
00373 
00374 
00375 #endif /* __XML_RELAX_NG__ */
00376 

Generated on Wed Jul 26 13:30:46 2006 for XSB by  doxygen 1.4.5