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