1*7c568831SAndroid Build Coastguard Worker /* 2*7c568831SAndroid Build Coastguard Worker * Summary: implementation of the Relax-NG validation 3*7c568831SAndroid Build Coastguard Worker * Description: implementation of the Relax-NG validation 4*7c568831SAndroid Build Coastguard Worker * 5*7c568831SAndroid Build Coastguard Worker * Copy: See Copyright for the status of this software. 6*7c568831SAndroid Build Coastguard Worker * 7*7c568831SAndroid Build Coastguard Worker * Author: Daniel Veillard 8*7c568831SAndroid Build Coastguard Worker */ 9*7c568831SAndroid Build Coastguard Worker 10*7c568831SAndroid Build Coastguard Worker #ifndef __XML_RELAX_NG__ 11*7c568831SAndroid Build Coastguard Worker #define __XML_RELAX_NG__ 12*7c568831SAndroid Build Coastguard Worker 13*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlversion.h> 14*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlerror.h> 15*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlstring.h> 16*7c568831SAndroid Build Coastguard Worker #include <libxml/tree.h> 17*7c568831SAndroid Build Coastguard Worker #include <libxml/parser.h> 18*7c568831SAndroid Build Coastguard Worker 19*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_SCHEMAS_ENABLED 20*7c568831SAndroid Build Coastguard Worker 21*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus 22*7c568831SAndroid Build Coastguard Worker extern "C" { 23*7c568831SAndroid Build Coastguard Worker #endif 24*7c568831SAndroid Build Coastguard Worker 25*7c568831SAndroid Build Coastguard Worker typedef struct _xmlRelaxNG xmlRelaxNG; 26*7c568831SAndroid Build Coastguard Worker typedef xmlRelaxNG *xmlRelaxNGPtr; 27*7c568831SAndroid Build Coastguard Worker 28*7c568831SAndroid Build Coastguard Worker 29*7c568831SAndroid Build Coastguard Worker /** 30*7c568831SAndroid Build Coastguard Worker * xmlRelaxNGValidityErrorFunc: 31*7c568831SAndroid Build Coastguard Worker * @ctx: the validation context 32*7c568831SAndroid Build Coastguard Worker * @msg: the message 33*7c568831SAndroid Build Coastguard Worker * @...: extra arguments 34*7c568831SAndroid Build Coastguard Worker * 35*7c568831SAndroid Build Coastguard Worker * Signature of an error callback from a Relax-NG validation 36*7c568831SAndroid Build Coastguard Worker */ 37*7c568831SAndroid Build Coastguard Worker typedef void (*xmlRelaxNGValidityErrorFunc) (void *ctx, 38*7c568831SAndroid Build Coastguard Worker const char *msg, 39*7c568831SAndroid Build Coastguard Worker ...) LIBXML_ATTR_FORMAT(2,3); 40*7c568831SAndroid Build Coastguard Worker 41*7c568831SAndroid Build Coastguard Worker /** 42*7c568831SAndroid Build Coastguard Worker * xmlRelaxNGValidityWarningFunc: 43*7c568831SAndroid Build Coastguard Worker * @ctx: the validation context 44*7c568831SAndroid Build Coastguard Worker * @msg: the message 45*7c568831SAndroid Build Coastguard Worker * @...: extra arguments 46*7c568831SAndroid Build Coastguard Worker * 47*7c568831SAndroid Build Coastguard Worker * Signature of a warning callback from a Relax-NG validation 48*7c568831SAndroid Build Coastguard Worker */ 49*7c568831SAndroid Build Coastguard Worker typedef void (*xmlRelaxNGValidityWarningFunc) (void *ctx, 50*7c568831SAndroid Build Coastguard Worker const char *msg, 51*7c568831SAndroid Build Coastguard Worker ...) LIBXML_ATTR_FORMAT(2,3); 52*7c568831SAndroid Build Coastguard Worker 53*7c568831SAndroid Build Coastguard Worker /** 54*7c568831SAndroid Build Coastguard Worker * A schemas validation context 55*7c568831SAndroid Build Coastguard Worker */ 56*7c568831SAndroid Build Coastguard Worker typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt; 57*7c568831SAndroid Build Coastguard Worker typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr; 58*7c568831SAndroid Build Coastguard Worker 59*7c568831SAndroid Build Coastguard Worker typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt; 60*7c568831SAndroid Build Coastguard Worker typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr; 61*7c568831SAndroid Build Coastguard Worker 62*7c568831SAndroid Build Coastguard Worker /* 63*7c568831SAndroid Build Coastguard Worker * xmlRelaxNGValidErr: 64*7c568831SAndroid Build Coastguard Worker * 65*7c568831SAndroid Build Coastguard Worker * List of possible Relax NG validation errors 66*7c568831SAndroid Build Coastguard Worker */ 67*7c568831SAndroid Build Coastguard Worker typedef enum { 68*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_OK = 0, 69*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_MEMORY, 70*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_TYPE, 71*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_TYPEVAL, 72*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_DUPID, 73*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_TYPECMP, 74*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_NOSTATE, 75*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_NODEFINE, 76*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_LISTEXTRA, 77*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_LISTEMPTY, 78*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_INTERNODATA, 79*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_INTERSEQ, 80*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_INTEREXTRA, 81*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_ELEMNAME, 82*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_ATTRNAME, 83*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_ELEMNONS, 84*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_ATTRNONS, 85*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_ELEMWRONGNS, 86*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_ATTRWRONGNS, 87*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_ELEMEXTRANS, 88*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_ATTREXTRANS, 89*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_ELEMNOTEMPTY, 90*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_NOELEM, 91*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_NOTELEM, 92*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_ATTRVALID, 93*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_CONTENTVALID, 94*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_EXTRACONTENT, 95*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_INVALIDATTR, 96*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_DATAELEM, 97*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_VALELEM, 98*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_LISTELEM, 99*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_DATATYPE, 100*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_VALUE, 101*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_LIST, 102*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_NOGRAMMAR, 103*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_EXTRADATA, 104*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_LACKDATA, 105*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_INTERNAL, 106*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_ELEMWRONG, 107*7c568831SAndroid Build Coastguard Worker XML_RELAXNG_ERR_TEXTWRONG 108*7c568831SAndroid Build Coastguard Worker } xmlRelaxNGValidErr; 109*7c568831SAndroid Build Coastguard Worker 110*7c568831SAndroid Build Coastguard Worker /* 111*7c568831SAndroid Build Coastguard Worker * xmlRelaxNGParserFlags: 112*7c568831SAndroid Build Coastguard Worker * 113*7c568831SAndroid Build Coastguard Worker * List of possible Relax NG Parser flags 114*7c568831SAndroid Build Coastguard Worker */ 115*7c568831SAndroid Build Coastguard Worker typedef enum { 116*7c568831SAndroid Build Coastguard Worker XML_RELAXNGP_NONE = 0, 117*7c568831SAndroid Build Coastguard Worker XML_RELAXNGP_FREE_DOC = 1, 118*7c568831SAndroid Build Coastguard Worker XML_RELAXNGP_CRNG = 2 119*7c568831SAndroid Build Coastguard Worker } xmlRelaxNGParserFlag; 120*7c568831SAndroid Build Coastguard Worker 121*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 122*7c568831SAndroid Build Coastguard Worker xmlRelaxNGInitTypes (void); 123*7c568831SAndroid Build Coastguard Worker XML_DEPRECATED 124*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 125*7c568831SAndroid Build Coastguard Worker xmlRelaxNGCleanupTypes (void); 126*7c568831SAndroid Build Coastguard Worker 127*7c568831SAndroid Build Coastguard Worker /* 128*7c568831SAndroid Build Coastguard Worker * Interfaces for parsing. 129*7c568831SAndroid Build Coastguard Worker */ 130*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRelaxNGParserCtxtPtr 131*7c568831SAndroid Build Coastguard Worker xmlRelaxNGNewParserCtxt (const char *URL); 132*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRelaxNGParserCtxtPtr 133*7c568831SAndroid Build Coastguard Worker xmlRelaxNGNewMemParserCtxt (const char *buffer, 134*7c568831SAndroid Build Coastguard Worker int size); 135*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRelaxNGParserCtxtPtr 136*7c568831SAndroid Build Coastguard Worker xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc); 137*7c568831SAndroid Build Coastguard Worker 138*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 139*7c568831SAndroid Build Coastguard Worker xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt, 140*7c568831SAndroid Build Coastguard Worker int flag); 141*7c568831SAndroid Build Coastguard Worker 142*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 143*7c568831SAndroid Build Coastguard Worker xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt); 144*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 145*7c568831SAndroid Build Coastguard Worker xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt, 146*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidityErrorFunc err, 147*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidityWarningFunc warn, 148*7c568831SAndroid Build Coastguard Worker void *ctx); 149*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 150*7c568831SAndroid Build Coastguard Worker xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt, 151*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidityErrorFunc *err, 152*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidityWarningFunc *warn, 153*7c568831SAndroid Build Coastguard Worker void **ctx); 154*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 155*7c568831SAndroid Build Coastguard Worker xmlRelaxNGSetParserStructuredErrors( 156*7c568831SAndroid Build Coastguard Worker xmlRelaxNGParserCtxtPtr ctxt, 157*7c568831SAndroid Build Coastguard Worker xmlStructuredErrorFunc serror, 158*7c568831SAndroid Build Coastguard Worker void *ctx); 159*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 160*7c568831SAndroid Build Coastguard Worker xmlRelaxNGSetResourceLoader (xmlRelaxNGParserCtxtPtr ctxt, 161*7c568831SAndroid Build Coastguard Worker xmlResourceLoader loader, 162*7c568831SAndroid Build Coastguard Worker void *vctxt); 163*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRelaxNGPtr 164*7c568831SAndroid Build Coastguard Worker xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt); 165*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 166*7c568831SAndroid Build Coastguard Worker xmlRelaxNGFree (xmlRelaxNGPtr schema); 167*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_OUTPUT_ENABLED 168*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 169*7c568831SAndroid Build Coastguard Worker xmlRelaxNGDump (FILE *output, 170*7c568831SAndroid Build Coastguard Worker xmlRelaxNGPtr schema); 171*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 172*7c568831SAndroid Build Coastguard Worker xmlRelaxNGDumpTree (FILE * output, 173*7c568831SAndroid Build Coastguard Worker xmlRelaxNGPtr schema); 174*7c568831SAndroid Build Coastguard Worker #endif /* LIBXML_OUTPUT_ENABLED */ 175*7c568831SAndroid Build Coastguard Worker /* 176*7c568831SAndroid Build Coastguard Worker * Interfaces for validating 177*7c568831SAndroid Build Coastguard Worker */ 178*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 179*7c568831SAndroid Build Coastguard Worker xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt, 180*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidityErrorFunc err, 181*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidityWarningFunc warn, 182*7c568831SAndroid Build Coastguard Worker void *ctx); 183*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 184*7c568831SAndroid Build Coastguard Worker xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt, 185*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidityErrorFunc *err, 186*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidityWarningFunc *warn, 187*7c568831SAndroid Build Coastguard Worker void **ctx); 188*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 189*7c568831SAndroid Build Coastguard Worker xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt, 190*7c568831SAndroid Build Coastguard Worker xmlStructuredErrorFunc serror, void *ctx); 191*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRelaxNGValidCtxtPtr 192*7c568831SAndroid Build Coastguard Worker xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema); 193*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 194*7c568831SAndroid Build Coastguard Worker xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt); 195*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 196*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt, 197*7c568831SAndroid Build Coastguard Worker xmlDocPtr doc); 198*7c568831SAndroid Build Coastguard Worker /* 199*7c568831SAndroid Build Coastguard Worker * Interfaces for progressive validation when possible 200*7c568831SAndroid Build Coastguard Worker */ 201*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 202*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt, 203*7c568831SAndroid Build Coastguard Worker xmlDocPtr doc, 204*7c568831SAndroid Build Coastguard Worker xmlNodePtr elem); 205*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 206*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt, 207*7c568831SAndroid Build Coastguard Worker const xmlChar *data, 208*7c568831SAndroid Build Coastguard Worker int len); 209*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 210*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt, 211*7c568831SAndroid Build Coastguard Worker xmlDocPtr doc, 212*7c568831SAndroid Build Coastguard Worker xmlNodePtr elem); 213*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 214*7c568831SAndroid Build Coastguard Worker xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt, 215*7c568831SAndroid Build Coastguard Worker xmlDocPtr doc, 216*7c568831SAndroid Build Coastguard Worker xmlNodePtr elem); 217*7c568831SAndroid Build Coastguard Worker 218*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus 219*7c568831SAndroid Build Coastguard Worker } 220*7c568831SAndroid Build Coastguard Worker #endif 221*7c568831SAndroid Build Coastguard Worker 222*7c568831SAndroid Build Coastguard Worker #endif /* LIBXML_SCHEMAS_ENABLED */ 223*7c568831SAndroid Build Coastguard Worker 224*7c568831SAndroid Build Coastguard Worker #endif /* __XML_RELAX_NG__ */ 225