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 22 extern "C" { 23 #endif 24 25 /** 26 * This error codes are obsolete; not used any more. 27 */ 28 typedef 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 */ 67 typedef 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 */ 84 typedef struct _xmlSchema xmlSchema; 85 typedef xmlSchema *xmlSchemaPtr; 86 87 /** 88 * A schemas validation context 89 */ 90 typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...); 91 typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...); 92 93 typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt; 94 typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr; 95 96 typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt; 97 typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr; 98 99 /* 100 * Interfaces for parsing. 101 */ 102 XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL 103 xmlSchemaNewParserCtxt (const char *URL); 104 XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL 105 xmlSchemaNewMemParserCtxt (const char *buffer, 106 int size); 107 XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL 108 xmlSchemaNewDocParserCtxt (xmlDocPtr doc); 109 XMLPUBFUN void XMLCALL 110 xmlSchemaFreeParserCtxt (xmlSchemaParserCtxtPtr ctxt); 111 XMLPUBFUN void XMLCALL 112 xmlSchemaSetParserErrors (xmlSchemaParserCtxtPtr ctxt, 113 xmlSchemaValidityErrorFunc err, 114 xmlSchemaValidityWarningFunc warn, 115 void *ctx); 116 XMLPUBFUN void XMLCALL 117 xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt, 118 xmlStructuredErrorFunc serror, 119 void *ctx); 120 XMLPUBFUN int XMLCALL 121 xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt, 122 xmlSchemaValidityErrorFunc * err, 123 xmlSchemaValidityWarningFunc * warn, 124 void **ctx); 125 XMLPUBFUN int XMLCALL 126 xmlSchemaIsValid (xmlSchemaValidCtxtPtr ctxt); 127 128 XMLPUBFUN xmlSchemaPtr XMLCALL 129 xmlSchemaParse (xmlSchemaParserCtxtPtr ctxt); 130 XMLPUBFUN void XMLCALL 131 xmlSchemaFree (xmlSchemaPtr schema); 132 #ifdef LIBXML_OUTPUT_ENABLED 133 XMLPUBFUN void XMLCALL 134 xmlSchemaDump (FILE *output, 135 xmlSchemaPtr schema); 136 #endif /* LIBXML_OUTPUT_ENABLED */ 137 /* 138 * Interfaces for validating 139 */ 140 XMLPUBFUN void XMLCALL 141 xmlSchemaSetValidErrors (xmlSchemaValidCtxtPtr ctxt, 142 xmlSchemaValidityErrorFunc err, 143 xmlSchemaValidityWarningFunc warn, 144 void *ctx); 145 XMLPUBFUN void XMLCALL 146 xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt, 147 xmlStructuredErrorFunc serror, 148 void *ctx); 149 XMLPUBFUN int XMLCALL 150 xmlSchemaGetValidErrors (xmlSchemaValidCtxtPtr ctxt, 151 xmlSchemaValidityErrorFunc *err, 152 xmlSchemaValidityWarningFunc *warn, 153 void **ctx); 154 XMLPUBFUN int XMLCALL 155 xmlSchemaSetValidOptions (xmlSchemaValidCtxtPtr ctxt, 156 int options); 157 XMLPUBFUN int XMLCALL 158 xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt); 159 160 XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL 161 xmlSchemaNewValidCtxt (xmlSchemaPtr schema); 162 XMLPUBFUN void XMLCALL 163 xmlSchemaFreeValidCtxt (xmlSchemaValidCtxtPtr ctxt); 164 XMLPUBFUN int XMLCALL 165 xmlSchemaValidateDoc (xmlSchemaValidCtxtPtr ctxt, 166 xmlDocPtr instance); 167 XMLPUBFUN int XMLCALL 168 xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt, 169 xmlNodePtr elem); 170 XMLPUBFUN int XMLCALL 171 xmlSchemaValidateStream (xmlSchemaValidCtxtPtr ctxt, 172 xmlParserInputBufferPtr input, 173 xmlCharEncoding enc, 174 xmlSAXHandlerPtr sax, 175 void *user_data); 176 XMLPUBFUN 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 */ 184 typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct; 185 typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr; 186 187 XMLPUBFUN xmlSchemaSAXPlugPtr XMLCALL 188 xmlSchemaSAXPlug (xmlSchemaValidCtxtPtr ctxt, 189 xmlSAXHandlerPtr *sax, 190 void **user_data); 191 XMLPUBFUN int XMLCALL 192 xmlSchemaSAXUnplug (xmlSchemaSAXPlugPtr plug); 193 #ifdef __cplusplus 194 } 195 #endif 196 197 #endif /* LIBXML_SCHEMAS_ENABLED */ 198 #endif /* __XML_SCHEMA_H__ */ 199