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