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)
     96                  (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
     97 
     98 /**
     99  * xmlSchemaValidityWarningFunc:
    100  * @ctx: the validation context
    101  * @msg: the message
    102  * @...: extra arguments
    103  *
    104  * Signature of a warning callback from an XSD validation
    105  */
    106 typedef void (XMLCDECL *xmlSchemaValidityWarningFunc)
    107                  (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
    108 
    109 /**
    110  * A schemas validation context
    111  */
    112 typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt;
    113 typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr;
    114 
    115 typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt;
    116 typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr;
    117 
    118 /**
    119  * xmlSchemaValidityLocatorFunc:
    120  * @ctx: user provided context
    121  * @file: returned file information
    122  * @line: returned line information
    123  *
    124  * A schemas validation locator, a callback called by the validator.
    125  * This is used when file or node informations are not available
    126  * to find out what file and line number are affected
    127  *
    128  * Returns: 0 in case of success and -1 in case of error
    129  */
    130 
    131 typedef int (XMLCDECL *xmlSchemaValidityLocatorFunc) (void *ctx,
    132                            const char **file, unsigned long *line);
    133 
    134 /*
    135  * Interfaces for parsing.
    136  */
    137 XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
    138 	    xmlSchemaNewParserCtxt	(const char *URL);
    139 XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
    140 	    xmlSchemaNewMemParserCtxt	(const char *buffer,
    141 					 int size);
    142 XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
    143 	    xmlSchemaNewDocParserCtxt	(xmlDocPtr doc);
    144 XMLPUBFUN void XMLCALL
    145 	    xmlSchemaFreeParserCtxt	(xmlSchemaParserCtxtPtr ctxt);
    146 XMLPUBFUN void XMLCALL
    147 	    xmlSchemaSetParserErrors	(xmlSchemaParserCtxtPtr ctxt,
    148 					 xmlSchemaValidityErrorFunc err,
    149 					 xmlSchemaValidityWarningFunc warn,
    150 					 void *ctx);
    151 XMLPUBFUN void XMLCALL
    152 	    xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt,
    153 					 xmlStructuredErrorFunc serror,
    154 					 void *ctx);
    155 XMLPUBFUN int XMLCALL
    156 		xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt,
    157 					xmlSchemaValidityErrorFunc * err,
    158 					xmlSchemaValidityWarningFunc * warn,
    159 					void **ctx);
    160 XMLPUBFUN int XMLCALL
    161 		xmlSchemaIsValid	(xmlSchemaValidCtxtPtr ctxt);
    162 
    163 XMLPUBFUN xmlSchemaPtr XMLCALL
    164 	    xmlSchemaParse		(xmlSchemaParserCtxtPtr ctxt);
    165 XMLPUBFUN void XMLCALL
    166 	    xmlSchemaFree		(xmlSchemaPtr schema);
    167 #ifdef LIBXML_OUTPUT_ENABLED
    168 XMLPUBFUN void XMLCALL
    169 	    xmlSchemaDump		(FILE *output,
    170 					 xmlSchemaPtr schema);
    171 #endif /* LIBXML_OUTPUT_ENABLED */
    172 /*
    173  * Interfaces for validating
    174  */
    175 XMLPUBFUN void XMLCALL
    176 	    xmlSchemaSetValidErrors	(xmlSchemaValidCtxtPtr ctxt,
    177 					 xmlSchemaValidityErrorFunc err,
    178 					 xmlSchemaValidityWarningFunc warn,
    179 					 void *ctx);
    180 XMLPUBFUN void XMLCALL
    181 	    xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt,
    182 					 xmlStructuredErrorFunc serror,
    183 					 void *ctx);
    184 XMLPUBFUN int XMLCALL
    185 	    xmlSchemaGetValidErrors	(xmlSchemaValidCtxtPtr ctxt,
    186 					 xmlSchemaValidityErrorFunc *err,
    187 					 xmlSchemaValidityWarningFunc *warn,
    188 					 void **ctx);
    189 XMLPUBFUN int XMLCALL
    190 	    xmlSchemaSetValidOptions	(xmlSchemaValidCtxtPtr ctxt,
    191 					 int options);
    192 XMLPUBFUN void XMLCALL
    193             xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt,
    194 	                                 const char *filename);
    195 XMLPUBFUN int XMLCALL
    196 	    xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt);
    197 
    198 XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL
    199 	    xmlSchemaNewValidCtxt	(xmlSchemaPtr schema);
    200 XMLPUBFUN void XMLCALL
    201 	    xmlSchemaFreeValidCtxt	(xmlSchemaValidCtxtPtr ctxt);
    202 XMLPUBFUN int XMLCALL
    203 	    xmlSchemaValidateDoc	(xmlSchemaValidCtxtPtr ctxt,
    204 					 xmlDocPtr instance);
    205 XMLPUBFUN int XMLCALL
    206             xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt,
    207 			                 xmlNodePtr elem);
    208 XMLPUBFUN int XMLCALL
    209 	    xmlSchemaValidateStream	(xmlSchemaValidCtxtPtr ctxt,
    210 					 xmlParserInputBufferPtr input,
    211 					 xmlCharEncoding enc,
    212 					 xmlSAXHandlerPtr sax,
    213 					 void *user_data);
    214 XMLPUBFUN int XMLCALL
    215 	    xmlSchemaValidateFile	(xmlSchemaValidCtxtPtr ctxt,
    216 					 const char * filename,
    217 					 int options);
    218 
    219 XMLPUBFUN xmlParserCtxtPtr XMLCALL
    220 	    xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt);
    221 
    222 /*
    223  * Interface to insert Schemas SAX validation in a SAX stream
    224  */
    225 typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct;
    226 typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr;
    227 
    228 XMLPUBFUN xmlSchemaSAXPlugPtr XMLCALL
    229             xmlSchemaSAXPlug		(xmlSchemaValidCtxtPtr ctxt,
    230 					 xmlSAXHandlerPtr *sax,
    231 					 void **user_data);
    232 XMLPUBFUN int XMLCALL
    233             xmlSchemaSAXUnplug		(xmlSchemaSAXPlugPtr plug);
    234 
    235 
    236 XMLPUBFUN void XMLCALL
    237             xmlSchemaValidateSetLocator	(xmlSchemaValidCtxtPtr vctxt,
    238 					 xmlSchemaValidityLocatorFunc f,
    239 					 void *ctxt);
    240 
    241 #ifdef __cplusplus
    242 }
    243 #endif
    244 
    245 #endif /* LIBXML_SCHEMAS_ENABLED */
    246 #endif /* __XML_SCHEMA_H__ */
    247