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 * xmlSchemaValidityErrorFunc: 89 * @ctx: the validation context 90 * @msg: the message 91 * @...: extra arguments 92 * 93 * Signature of an error callback from an XSD validation 94 */ 95typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...); 96 97/** 98 * xmlSchemaValidityWarningFunc: 99 * @ctx: the validation context 100 * @msg: the message 101 * @...: extra arguments 102 * 103 * Signature of a warning callback from an XSD validation 104 */ 105typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...); 106 107/** 108 * A schemas validation context 109 */ 110typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt; 111typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr; 112 113typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt; 114typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr; 115 116/* 117 * Interfaces for parsing. 118 */ 119XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL 120 xmlSchemaNewParserCtxt (const char *URL); 121XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL 122 xmlSchemaNewMemParserCtxt (const char *buffer, 123 int size); 124XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL 125 xmlSchemaNewDocParserCtxt (xmlDocPtr doc); 126XMLPUBFUN void XMLCALL 127 xmlSchemaFreeParserCtxt (xmlSchemaParserCtxtPtr ctxt); 128XMLPUBFUN void XMLCALL 129 xmlSchemaSetParserErrors (xmlSchemaParserCtxtPtr ctxt, 130 xmlSchemaValidityErrorFunc err, 131 xmlSchemaValidityWarningFunc warn, 132 void *ctx); 133XMLPUBFUN void XMLCALL 134 xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt, 135 xmlStructuredErrorFunc serror, 136 void *ctx); 137XMLPUBFUN int XMLCALL 138 xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt, 139 xmlSchemaValidityErrorFunc * err, 140 xmlSchemaValidityWarningFunc * warn, 141 void **ctx); 142XMLPUBFUN int XMLCALL 143 xmlSchemaIsValid (xmlSchemaValidCtxtPtr ctxt); 144 145XMLPUBFUN xmlSchemaPtr XMLCALL 146 xmlSchemaParse (xmlSchemaParserCtxtPtr ctxt); 147XMLPUBFUN void XMLCALL 148 xmlSchemaFree (xmlSchemaPtr schema); 149#ifdef LIBXML_OUTPUT_ENABLED 150XMLPUBFUN void XMLCALL 151 xmlSchemaDump (FILE *output, 152 xmlSchemaPtr schema); 153#endif /* LIBXML_OUTPUT_ENABLED */ 154/* 155 * Interfaces for validating 156 */ 157XMLPUBFUN void XMLCALL 158 xmlSchemaSetValidErrors (xmlSchemaValidCtxtPtr ctxt, 159 xmlSchemaValidityErrorFunc err, 160 xmlSchemaValidityWarningFunc warn, 161 void *ctx); 162XMLPUBFUN void XMLCALL 163 xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt, 164 xmlStructuredErrorFunc serror, 165 void *ctx); 166XMLPUBFUN int XMLCALL 167 xmlSchemaGetValidErrors (xmlSchemaValidCtxtPtr ctxt, 168 xmlSchemaValidityErrorFunc *err, 169 xmlSchemaValidityWarningFunc *warn, 170 void **ctx); 171XMLPUBFUN int XMLCALL 172 xmlSchemaSetValidOptions (xmlSchemaValidCtxtPtr ctxt, 173 int options); 174XMLPUBFUN int XMLCALL 175 xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt); 176 177XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL 178 xmlSchemaNewValidCtxt (xmlSchemaPtr schema); 179XMLPUBFUN void XMLCALL 180 xmlSchemaFreeValidCtxt (xmlSchemaValidCtxtPtr ctxt); 181XMLPUBFUN int XMLCALL 182 xmlSchemaValidateDoc (xmlSchemaValidCtxtPtr ctxt, 183 xmlDocPtr instance); 184XMLPUBFUN int XMLCALL 185 xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt, 186 xmlNodePtr elem); 187XMLPUBFUN int XMLCALL 188 xmlSchemaValidateStream (xmlSchemaValidCtxtPtr ctxt, 189 xmlParserInputBufferPtr input, 190 xmlCharEncoding enc, 191 xmlSAXHandlerPtr sax, 192 void *user_data); 193XMLPUBFUN int XMLCALL 194 xmlSchemaValidateFile (xmlSchemaValidCtxtPtr ctxt, 195 const char * filename, 196 int options); 197 198XMLPUBFUN xmlParserCtxtPtr XMLCALL 199 xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt); 200 201/* 202 * Interface to insert Schemas SAX validation in a SAX stream 203 */ 204typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct; 205typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr; 206 207XMLPUBFUN xmlSchemaSAXPlugPtr XMLCALL 208 xmlSchemaSAXPlug (xmlSchemaValidCtxtPtr ctxt, 209 xmlSAXHandlerPtr *sax, 210 void **user_data); 211XMLPUBFUN int XMLCALL 212 xmlSchemaSAXUnplug (xmlSchemaSAXPlugPtr plug); 213#ifdef __cplusplus 214} 215#endif 216 217#endif /* LIBXML_SCHEMAS_ENABLED */ 218#endif /* __XML_SCHEMA_H__ */ 219