00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 #ifndef __XML_SCHEMA_H__
00013 #define __XML_SCHEMA_H__
00014 
00015 #include <libxml/xmlversion.h>
00016 
00017 #ifdef LIBXML_SCHEMAS_ENABLED
00018 
00019 #include <libxml/tree.h>
00020 
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif
00024 
00028 typedef enum {
00029     XML_SCHEMAS_ERR_OK      = 0,
00030     XML_SCHEMAS_ERR_NOROOT  = 1,
00031     XML_SCHEMAS_ERR_UNDECLAREDELEM,
00032     XML_SCHEMAS_ERR_NOTTOPLEVEL,
00033     XML_SCHEMAS_ERR_MISSING,
00034     XML_SCHEMAS_ERR_WRONGELEM,
00035     XML_SCHEMAS_ERR_NOTYPE,
00036     XML_SCHEMAS_ERR_NOROLLBACK,
00037     XML_SCHEMAS_ERR_ISABSTRACT,
00038     XML_SCHEMAS_ERR_NOTEMPTY,
00039     XML_SCHEMAS_ERR_ELEMCONT,
00040     XML_SCHEMAS_ERR_HAVEDEFAULT,
00041     XML_SCHEMAS_ERR_NOTNILLABLE,
00042     XML_SCHEMAS_ERR_EXTRACONTENT,
00043     XML_SCHEMAS_ERR_INVALIDATTR,
00044     XML_SCHEMAS_ERR_INVALIDELEM,
00045     XML_SCHEMAS_ERR_NOTDETERMINIST,
00046     XML_SCHEMAS_ERR_CONSTRUCT,
00047     XML_SCHEMAS_ERR_INTERNAL,
00048     XML_SCHEMAS_ERR_NOTSIMPLE,
00049     XML_SCHEMAS_ERR_ATTRUNKNOWN,
00050     XML_SCHEMAS_ERR_ATTRINVALID,
00051     XML_SCHEMAS_ERR_VALUE,
00052     XML_SCHEMAS_ERR_FACET,
00053     XML_SCHEMAS_ERR_,
00054     XML_SCHEMAS_ERR_XXX
00055 } xmlSchemaValidError;
00056 
00057 
00058 
00059 
00060 
00061 
00067 typedef enum {
00068     XML_SCHEMA_VAL_VC_I_CREATE          = 1<<0
00069     
00070 
00071 
00072 } xmlSchemaValidOption;
00073 
00074 
00075 
00076 
00077 
00078 
00079 
00080 
00084 typedef struct _xmlSchema xmlSchema;
00085 typedef xmlSchema *xmlSchemaPtr;
00086 
00090 typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...);
00091 typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...);
00092 
00093 typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt;
00094 typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr;
00095 
00096 typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt;
00097 typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr;
00098 
00099 
00100 
00101 
00102 XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL 
00103         xmlSchemaNewParserCtxt  (const char *URL);
00104 XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL 
00105         xmlSchemaNewMemParserCtxt   (const char *buffer,
00106                      int size);
00107 XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
00108         xmlSchemaNewDocParserCtxt   (xmlDocPtr doc);
00109 XMLPUBFUN void XMLCALL      
00110         xmlSchemaFreeParserCtxt (xmlSchemaParserCtxtPtr ctxt);
00111 XMLPUBFUN void XMLCALL      
00112         xmlSchemaSetParserErrors    (xmlSchemaParserCtxtPtr ctxt,
00113                      xmlSchemaValidityErrorFunc err,
00114                      xmlSchemaValidityWarningFunc warn,
00115                      void *ctx);
00116 XMLPUBFUN void XMLCALL
00117         xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt,
00118                      xmlStructuredErrorFunc serror,
00119                      void *ctx);
00120 XMLPUBFUN int XMLCALL
00121         xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt,
00122                     xmlSchemaValidityErrorFunc * err,
00123                     xmlSchemaValidityWarningFunc * warn,
00124                     void **ctx);
00125 XMLPUBFUN int XMLCALL
00126         xmlSchemaIsValid    (xmlSchemaValidCtxtPtr ctxt);
00127 
00128 XMLPUBFUN xmlSchemaPtr XMLCALL  
00129         xmlSchemaParse      (xmlSchemaParserCtxtPtr ctxt);
00130 XMLPUBFUN void XMLCALL      
00131         xmlSchemaFree       (xmlSchemaPtr schema);
00132 #ifdef LIBXML_OUTPUT_ENABLED
00133 XMLPUBFUN void XMLCALL      
00134         xmlSchemaDump       (FILE *output,
00135                      xmlSchemaPtr schema);
00136 #endif 
00137 
00138 
00139 
00140 XMLPUBFUN void XMLCALL      
00141         xmlSchemaSetValidErrors (xmlSchemaValidCtxtPtr ctxt,
00142                      xmlSchemaValidityErrorFunc err,
00143                      xmlSchemaValidityWarningFunc warn,
00144                      void *ctx);
00145 XMLPUBFUN void XMLCALL
00146         xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt,
00147                      xmlStructuredErrorFunc serror,
00148                      void *ctx);
00149 XMLPUBFUN int XMLCALL
00150         xmlSchemaGetValidErrors (xmlSchemaValidCtxtPtr ctxt,
00151                      xmlSchemaValidityErrorFunc *err,
00152                      xmlSchemaValidityWarningFunc *warn,
00153                      void **ctx);
00154 XMLPUBFUN int XMLCALL
00155         xmlSchemaSetValidOptions    (xmlSchemaValidCtxtPtr ctxt,
00156                      int options);
00157 XMLPUBFUN int XMLCALL
00158         xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt);
00159 
00160 XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL 
00161         xmlSchemaNewValidCtxt   (xmlSchemaPtr schema);
00162 XMLPUBFUN void XMLCALL          
00163         xmlSchemaFreeValidCtxt  (xmlSchemaValidCtxtPtr ctxt);
00164 XMLPUBFUN int XMLCALL           
00165         xmlSchemaValidateDoc    (xmlSchemaValidCtxtPtr ctxt,
00166                      xmlDocPtr instance);
00167 XMLPUBFUN int XMLCALL
00168             xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt,
00169                              xmlNodePtr elem);
00170 XMLPUBFUN int XMLCALL
00171         xmlSchemaValidateStream (xmlSchemaValidCtxtPtr ctxt,
00172                      xmlParserInputBufferPtr input,
00173                      xmlCharEncoding enc,
00174                      xmlSAXHandlerPtr sax,
00175                      void *user_data);
00176 XMLPUBFUN int XMLCALL
00177         xmlSchemaValidateFile   (xmlSchemaValidCtxtPtr ctxt,
00178                      const char * filename,
00179                      int options);
00180 
00181 
00182 
00183 
00184 typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct;
00185 typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr;
00186 
00187 XMLPUBFUN xmlSchemaSAXPlugPtr XMLCALL
00188             xmlSchemaSAXPlug        (xmlSchemaValidCtxtPtr ctxt,
00189                      xmlSAXHandlerPtr *sax,
00190                      void **user_data);
00191 XMLPUBFUN int XMLCALL
00192             xmlSchemaSAXUnplug      (xmlSchemaSAXPlugPtr plug);
00193 #ifdef __cplusplus
00194 }
00195 #endif
00196 
00197 #endif 
00198 #endif