1/* 2 * Summary: incomplete XML Schemas structure implementation 3 * Description: interface to the XML Schemas handling and schema validity 4 * checking, it is incomplete right now. 5 * 6 * Copy: See Copyright for the status of this software. 7 * 8 * Author: Daniel Veillard 9 */ 10 11 12#ifndef __XML_SCHEMA_H__ 13#define __XML_SCHEMA_H__ 14 15#include <libxml/xmlversion.h> 16 17#ifdef LIBXML_SCHEMAS_ENABLED 18 19#include <libxml/tree.h> 20 21#ifdef __cplusplus 22extern "C" { 23#endif 24 25/** 26 * This error codes are obsolete; not used any more. 27 */ 28typedef enum { 29 XML_SCHEMAS_ERR_OK = 0, 30 XML_SCHEMAS_ERR_NOROOT = 1, 31 XML_SCHEMAS_ERR_UNDECLAREDELEM, 32 XML_SCHEMAS_ERR_NOTTOPLEVEL, 33 XML_SCHEMAS_ERR_MISSING, 34 XML_SCHEMAS_ERR_WRONGELEM, 35 XML_SCHEMAS_ERR_NOTYPE, 36 XML_SCHEMAS_ERR_NOROLLBACK, 37 XML_SCHEMAS_ERR_ISABSTRACT, 38 XML_SCHEMAS_ERR_NOTEMPTY, 39 XML_SCHEMAS_ERR_ELEMCONT, 40 XML_SCHEMAS_ERR_HAVEDEFAULT, 41 XML_SCHEMAS_ERR_NOTNILLABLE, 42 XML_SCHEMAS_ERR_EXTRACONTENT, 43 XML_SCHEMAS_ERR_INVALIDATTR, 44 XML_SCHEMAS_ERR_INVALIDELEM, 45 XML_SCHEMAS_ERR_NOTDETERMINIST, 46 XML_SCHEMAS_ERR_CONSTRUCT, 47 XML_SCHEMAS_ERR_INTERNAL, 48 XML_SCHEMAS_ERR_NOTSIMPLE, 49 XML_SCHEMAS_ERR_ATTRUNKNOWN, 50 XML_SCHEMAS_ERR_ATTRINVALID, 51 XML_SCHEMAS_ERR_VALUE, 52 XML_SCHEMAS_ERR_FACET, 53 XML_SCHEMAS_ERR_, 54 XML_SCHEMAS_ERR_XXX 55} xmlSchemaValidError; 56 57/* 58* ATTENTION: Change xmlSchemaSetValidOptions's check 59* for invalid values, if adding to the validation 60* options below. 61*/ 62/** 63 * xmlSchemaValidOption: 64 * 65 * This is the set of XML Schema validation options. 66 */ 67typedef enum { 68 XML_SCHEMA_VAL_VC_I_CREATE = 1<<0 69 /* Default/fixed: create an attribute node 70 * or an element's text node on the instance. 71 */ 72} xmlSchemaValidOption; 73 74/* 75 XML_SCHEMA_VAL_XSI_ASSEMBLE = 1<<1, 76 * assemble schemata using 77 * xsi:schemaLocation and 78 * xsi:noNamespaceSchemaLocation 79*/ 80 81/** 82 * The schemas related types are kept internal 83 */ 84typedef struct _xmlSchema xmlSchema; 85typedef xmlSchema *xmlSchemaPtr; 86 87/** 88 * A schemas validation context 89 */ 90typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...); 91typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...); 92 93typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt; 94typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr; 95 96typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt; 97typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr; 98 99/* 100 * Interfaces for parsing. 101 */ 102XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL 103 xmlSchemaNewParserCtxt (const char *URL); 104XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL 105 xmlSchemaNewMemParserCtxt (const char *buffer, 106 int size); 107XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL 108 xmlSchemaNewDocParserCtxt (xmlDocPtr doc); 109XMLPUBFUN void XMLCALL 110 xmlSchemaFreeParserCtxt (xmlSchemaParserCtxtPtr ctxt); 111XMLPUBFUN void XMLCALL 112 xmlSchemaSetParserErrors (xmlSchemaParserCtxtPtr ctxt, 113 xmlSchemaValidityErrorFunc err, 114 xmlSchemaValidityWarningFunc warn, 115 void *ctx); 116XMLPUBFUN void XMLCALL 117 xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt, 118 xmlStructuredErrorFunc serror, 119 void *ctx); 120XMLPUBFUN int XMLCALL 121 xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt, 122 xmlSchemaValidityErrorFunc * err, 123 xmlSchemaValidityWarningFunc * warn, 124 void **ctx); 125XMLPUBFUN int XMLCALL 126 xmlSchemaIsValid (xmlSchemaValidCtxtPtr ctxt); 127 128XMLPUBFUN xmlSchemaPtr XMLCALL 129 xmlSchemaParse (xmlSchemaParserCtxtPtr ctxt); 130XMLPUBFUN void XMLCALL 131 xmlSchemaFree (xmlSchemaPtr schema); 132#ifdef LIBXML_OUTPUT_ENABLED 133XMLPUBFUN void XMLCALL 134 xmlSchemaDump (FILE *output, 135 xmlSchemaPtr schema); 136#endif /* LIBXML_OUTPUT_ENABLED */ 137/* 138 * Interfaces for validating 139 */ 140XMLPUBFUN void XMLCALL 141 xmlSchemaSetValidErrors (xmlSchemaValidCtxtPtr ctxt, 142 xmlSchemaValidityErrorFunc err, 143 xmlSchemaValidityWarningFunc warn, 144 void *ctx); 145XMLPUBFUN void XMLCALL 146 xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt, 147 xmlStructuredErrorFunc serror, 148 void *ctx); 149XMLPUBFUN int XMLCALL 150 xmlSchemaGetValidErrors (xmlSchemaValidCtxtPtr ctxt, 151 xmlSchemaValidityErrorFunc *err, 152 xmlSchemaValidityWarningFunc *warn, 153 void **ctx); 154XMLPUBFUN int XMLCALL 155 xmlSchemaSetValidOptions (xmlSchemaValidCtxtPtr ctxt, 156 int options); 157XMLPUBFUN int XMLCALL 158 xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt); 159 160XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL 161 xmlSchemaNewValidCtxt (xmlSchemaPtr schema); 162XMLPUBFUN void XMLCALL 163 xmlSchemaFreeValidCtxt (xmlSchemaValidCtxtPtr ctxt); 164XMLPUBFUN int XMLCALL 165 xmlSchemaValidateDoc (xmlSchemaValidCtxtPtr ctxt, 166 xmlDocPtr instance); 167XMLPUBFUN int XMLCALL 168 xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt, 169 xmlNodePtr elem); 170XMLPUBFUN int XMLCALL 171 xmlSchemaValidateStream (xmlSchemaValidCtxtPtr ctxt, 172 xmlParserInputBufferPtr input, 173 xmlCharEncoding enc, 174 xmlSAXHandlerPtr sax, 175 void *user_data); 176XMLPUBFUN int XMLCALL 177 xmlSchemaValidateFile (xmlSchemaValidCtxtPtr ctxt, 178 const char * filename, 179 int options); 180 181/* 182 * Interface to insert Schemas SAX velidation in a SAX stream 183 */ 184typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct; 185typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr; 186 187XMLPUBFUN xmlSchemaSAXPlugPtr XMLCALL 188 xmlSchemaSAXPlug (xmlSchemaValidCtxtPtr ctxt, 189 xmlSAXHandlerPtr *sax, 190 void **user_data); 191XMLPUBFUN int XMLCALL 192 xmlSchemaSAXUnplug (xmlSchemaSAXPlugPtr plug); 193#ifdef __cplusplus 194} 195#endif 196 197#endif /* LIBXML_SCHEMAS_ENABLED */ 198#endif /* __XML_SCHEMA_H__ */ 199