#ifndef __XML_SCHEMA_H__
#define __XML_SCHEMA_H__
#include <libxml/xmlversion.h>
#ifdef LIBXML_SCHEMAS_ENABLED
#include <libxml/tree.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
    XML_SCHEMAS_ERR_OK          = 0,
    XML_SCHEMAS_ERR_NOROOT      = 1,
    XML_SCHEMAS_ERR_UNDECLAREDELEM,
    XML_SCHEMAS_ERR_NOTTOPLEVEL,
    XML_SCHEMAS_ERR_MISSING,
    XML_SCHEMAS_ERR_WRONGELEM,
    XML_SCHEMAS_ERR_NOTYPE,
    XML_SCHEMAS_ERR_NOROLLBACK,
    XML_SCHEMAS_ERR_ISABSTRACT,
    XML_SCHEMAS_ERR_NOTEMPTY,
    XML_SCHEMAS_ERR_ELEMCONT,
    XML_SCHEMAS_ERR_HAVEDEFAULT,
    XML_SCHEMAS_ERR_NOTNILLABLE,
    XML_SCHEMAS_ERR_EXTRACONTENT,
    XML_SCHEMAS_ERR_INVALIDATTR,
    XML_SCHEMAS_ERR_INVALIDELEM,
    XML_SCHEMAS_ERR_NOTDETERMINIST,
    XML_SCHEMAS_ERR_CONSTRUCT,
    XML_SCHEMAS_ERR_INTERNAL,
    XML_SCHEMAS_ERR_NOTSIMPLE,
    XML_SCHEMAS_ERR_ATTRUNKNOWN,
    XML_SCHEMAS_ERR_ATTRINVALID,
    XML_SCHEMAS_ERR_VALUE,
    XML_SCHEMAS_ERR_FACET,
    XML_SCHEMAS_ERR_,
    XML_SCHEMAS_ERR_XXX
} xmlSchemaValidError;
typedef enum {
    XML_SCHEMA_VAL_VC_I_CREATE                  = 1<<0
        
} xmlSchemaValidOption;
typedef struct _xmlSchema xmlSchema;
typedef xmlSchema *xmlSchemaPtr;
typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt;
typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr;
typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt;
typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr;
XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
            xmlSchemaNewParserCtxt      (const char *URL);
XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
            xmlSchemaNewMemParserCtxt   (const char *buffer,
                                         int size);
XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
            xmlSchemaNewDocParserCtxt   (xmlDocPtr doc);
XMLPUBFUN void XMLCALL
            xmlSchemaFreeParserCtxt     (xmlSchemaParserCtxtPtr ctxt);
XMLPUBFUN void XMLCALL
            xmlSchemaSetParserErrors    (xmlSchemaParserCtxtPtr ctxt,
                                         xmlSchemaValidityErrorFunc err,
                                         xmlSchemaValidityWarningFunc warn,
                                         void *ctx);
XMLPUBFUN void XMLCALL
            xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt,
                                         xmlStructuredErrorFunc serror,
                                         void *ctx);
XMLPUBFUN int XMLCALL
                xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt,
                                        xmlSchemaValidityErrorFunc * err,
                                        xmlSchemaValidityWarningFunc * warn,
                                        void **ctx);
XMLPUBFUN int XMLCALL
                xmlSchemaIsValid        (xmlSchemaValidCtxtPtr ctxt);
XMLPUBFUN xmlSchemaPtr XMLCALL
            xmlSchemaParse              (xmlSchemaParserCtxtPtr ctxt);
XMLPUBFUN void XMLCALL
            xmlSchemaFree               (xmlSchemaPtr schema);
#ifdef LIBXML_OUTPUT_ENABLED
XMLPUBFUN void XMLCALL
            xmlSchemaDump               (FILE *output,
                                         xmlSchemaPtr schema);
#endif 
XMLPUBFUN void XMLCALL
            xmlSchemaSetValidErrors     (xmlSchemaValidCtxtPtr ctxt,
                                         xmlSchemaValidityErrorFunc err,
                                         xmlSchemaValidityWarningFunc warn,
                                         void *ctx);
XMLPUBFUN void XMLCALL
            xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt,
                                         xmlStructuredErrorFunc serror,
                                         void *ctx);
XMLPUBFUN int XMLCALL
            xmlSchemaGetValidErrors     (xmlSchemaValidCtxtPtr ctxt,
                                         xmlSchemaValidityErrorFunc *err,
                                         xmlSchemaValidityWarningFunc *warn,
                                         void **ctx);
XMLPUBFUN int XMLCALL
            xmlSchemaSetValidOptions    (xmlSchemaValidCtxtPtr ctxt,
                                         int options);
XMLPUBFUN int XMLCALL
            xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt);
XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL
            xmlSchemaNewValidCtxt       (xmlSchemaPtr schema);
XMLPUBFUN void XMLCALL
            xmlSchemaFreeValidCtxt      (xmlSchemaValidCtxtPtr ctxt);
XMLPUBFUN int XMLCALL
            xmlSchemaValidateDoc        (xmlSchemaValidCtxtPtr ctxt,
                                         xmlDocPtr instance);
XMLPUBFUN int XMLCALL
            xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt,
                                         xmlNodePtr elem);
XMLPUBFUN int XMLCALL
            xmlSchemaValidateStream     (xmlSchemaValidCtxtPtr ctxt,
                                         xmlParserInputBufferPtr input,
                                         xmlCharEncoding enc,
                                         xmlSAXHandlerPtr sax,
                                         void *user_data);
XMLPUBFUN int XMLCALL
            xmlSchemaValidateFile       (xmlSchemaValidCtxtPtr ctxt,
                                         const char * filename,
                                         int options);
XMLPUBFUN xmlParserCtxtPtr XMLCALL
            xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt);
typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct;
typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr;
XMLPUBFUN xmlSchemaSAXPlugPtr XMLCALL
            xmlSchemaSAXPlug            (xmlSchemaValidCtxtPtr ctxt,
                                         xmlSAXHandlerPtr *sax,
                                         void **user_data);
XMLPUBFUN int XMLCALL
            xmlSchemaSAXUnplug          (xmlSchemaSAXPlugPtr plug);
#ifdef __cplusplus
}
#endif
#endif 
#endif