text: /*
   * Summary: incomplete XML Schemas structure implementation
   * Description: interface to the XML Schemas handling and schema validity
   *              checking, it is incomplete right now.
   *
   * Copy: See Copyright for the status of this software.
   *
   * Author: Daniel Veillard
   */
  
  
  #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
  
  /**
   * This error codes are obsolete; not used any more.
   */
  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;
  
  /*
  * ATTENTION: Change xmlSchemaSetValidOptions's check
  * for invalid values, if adding to the validation
  * options below.
  */
  /**
   * xmlSchemaValidOption:
   *
   * This is the set of XML Schema validation options.
   */
  typedef enum {
      XML_SCHEMA_VAL_VC_I_CREATE			= 1<<0
  	/* Default/fixed: create an attribute node
  	* or an element's text node on the instance.
  	*/
  } xmlSchemaValidOption;
  
  /*
      XML_SCHEMA_VAL_XSI_ASSEMBLE			= 1<<1,
  	* assemble schemata using
  	* xsi:schemaLocation and
  	* xsi:noNamespaceSchemaLocation
  */
  
  /**
   * The schemas related types are kept internal
   */
  typedef struct _xmlSchema xmlSchema;
  typedef xmlSchema *xmlSchemaPtr;
  
  /**
   * xmlSchemaValidityErrorFunc:
   * @ctx: the validation context
   * @msg: the message
   * @...: extra arguments
   *
   * Signature of an error callback from an XSD validation
   */
  typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...);
  
  /**
   * xmlSchemaValidityWarningFunc:
   * @ctx: the validation context
   * @msg: the message
   * @...: extra arguments
   *
   * Signature of a warning callback from an XSD validation
   */
  typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...);
  
  /**
   * A schemas validation context
   */
  typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt;
  typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr;
  
  typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt;
  typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr;
  
  /*
   * Interfaces for parsing.
   */
  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 /* LIBXML_OUTPUT_ENABLED */
  /*
   * Interfaces for validating
   */
  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);
  
  /*
   * Interface to insert Schemas SAX validation in a SAX stream
   */
  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 /* LIBXML_SCHEMAS_ENABLED */
  #endif /* __XML_SCHEMA_H__ */
  