schemasInternals.h revision be5869729a416032a4abb5a65430d25831828f75
14255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/* 2be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Summary: internal interfaces for XML Schemas 3be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Description: internal interfaces for the XML Schemas handling 4be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * and schema validity checking 54255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 6be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Copy: See Copyright for the status of this software. 74255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 8be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Author: Daniel Veillard 94255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 114255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifndef __XML_SCHEMA_INTERNALS_H__ 134255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define __XML_SCHEMA_INTERNALS_H__ 144255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#include <libxml/xmlversion.h> 167ae91bcd9e94946a7be41290cb67ffc9c2cf0a9fIgor Zlatkovic 174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef LIBXML_SCHEMAS_ENABLED 184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#include <libxml/xmlregexp.h> 208326e73bc163e15fd7b5264c0cc6cf2480723869Daniel Veillard#include <libxml/hash.h> 214255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef __cplusplus 234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardextern "C" { 244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif 254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/* 284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * XML Schemas defines multiple type of types. 294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef enum { 314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_BASIC = 1, 324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_ANY, 334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_FACET, 344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_SIMPLE, 354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_COMPLEX, 364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_SEQUENCE, 374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_CHOICE, 384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_ALL, 394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_SIMPLE_CONTENT, 404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_COMPLEX_CONTENT, 414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_UR, 424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_RESTRICTION, 434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_EXTENSION, 444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_ELEMENT, 454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_ATTRIBUTE, 4613e04c6c12007d30ae7e007e931e55e717a5a73fDaniel Veillard XML_SCHEMA_TYPE_ATTRIBUTEGROUP, 474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_GROUP, 484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_NOTATION, 494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_LIST, 504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_UNION, 514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MININCLUSIVE = 1000, 524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MINEXCLUSIVE, 534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MAXINCLUSIVE, 544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MAXEXCLUSIVE, 554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_TOTALDIGITS, 564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_FRACTIONDIGITS, 574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_PATTERN, 584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_ENUMERATION, 594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_WHITESPACE, 604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_LENGTH, 614255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MAXLENGTH, 624255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MINLENGTH 634255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} xmlSchemaTypeType; 644255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef enum { 664255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_UNKNOWN = 0, 674255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_EMPTY = 1, 684255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_ELEMENTS, 694255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_MIXED, 704255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_SIMPLE, 714255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, 7288c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard XML_SCHEMA_CONTENT_BASIC, 7388c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard XML_SCHEMA_CONTENT_ANY 744255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} xmlSchemaContentType; 754255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 764255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaVal xmlSchemaVal; 774255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaVal *xmlSchemaValPtr; 784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 794255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaType xmlSchemaType; 804255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaType *xmlSchemaTypePtr; 814255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 824255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaFacet xmlSchemaFacet; 834255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaFacet *xmlSchemaFacetPtr; 844255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 854255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 864255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * Annotation 874255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 884255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAnnot xmlSchemaAnnot; 894255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAnnot *xmlSchemaAnnotPtr; 904255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAnnot { 914255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaAnnot *next; 924255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr content; /* the annotation */ 934255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 944255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 954255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 964255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An attribute definition. 974255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 984255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 994255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ANYATTR_SKIP 1 1004255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ANYATTR_LAX 2 1014255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ANYATTR_STRICT 3 1024255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1034255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAttribute xmlSchemaAttribute; 1044255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAttribute *xmlSchemaAttributePtr; 1054255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAttribute { 1064255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 1074255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */ 1084255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 1094255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 1104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 1114255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 1124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *typeName; 1134255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *typeNs; 1144255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 1154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr base; 1174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int occurs; 1184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *defValue; 1194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr subtypes; 12075bb3bbf25e5ddaf5e013978c3b001de02c959aaDaniel Veillard xmlNodePtr node; 1214255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 1224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 1244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An attribute group definition. 1254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 1264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures 1274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * must be kept similar 1284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 1294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup; 1304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr; 1314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAttributeGroup { 1324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 1334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */ 1344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 1354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 1364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 1374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 1384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 1394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAttributePtr attributes; 14175bb3bbf25e5ddaf5e013978c3b001de02c959aaDaniel Veillard xmlNodePtr node; 1424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 1434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 146a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_TYPE_MIXED: 147a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 148a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element content type is mixed 1494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 1504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_TYPE_MIXED 1 << 0 1514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 152a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 153a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * _xmlSchemaType: 154a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 155a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * Schemas type definition. 156a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 1574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaType { 1584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 1594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaType *next;/* the next type if in a sequence ... */ 1604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 1614255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 1624255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 1634255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 1644255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 1654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr subtypes; 1664255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAttributePtr attributes; 1674255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr node; 1684255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int minOccurs; 1694255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int maxOccurs; 1704255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1714255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int flags; 1724255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaContentType contentType; 1734255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *base; 1744255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *baseNs; 1754255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr baseType; 1764255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaFacetPtr facets; 1774255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 1784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 17960f394e96df5022a6145505bfbeb99815f65e7daWilliam M. Brack/* 180a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * xmlSchemaElement: 1814255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An element definition. 1824255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 1834255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of 1844255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * structures must be kept similar 1854255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 186a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 187a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_NILLABLE: 188a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 189a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is nillable 190a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 1914255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_NILLABLE 1 << 0 192a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 193a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_GLOBAL: 194a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 195a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is global 196a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 1974255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_GLOBAL 1 << 1 198a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 199a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_DEFAULT: 200a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 201a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element has a default value 202a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2034255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_DEFAULT 1 << 2 204a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 205a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_FIXED: 206a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 207a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element has a fixed value 208a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2094255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_FIXED 1 << 3 210a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 211a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_ABSTRACT: 212a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 213a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is abstract 214a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_ABSTRACT 1 << 4 216a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 217a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_TOPLEVEL: 218a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 219a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is top level 220a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2214255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_TOPLEVEL 1 << 5 222a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 223a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_REF: 224a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 225a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is a reference to a type 226a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_REF 1 << 6 2284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaElement xmlSchemaElement; 2304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaElement *xmlSchemaElementPtr; 2314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaElement { 2324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 2334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaType *next;/* the next type if in a sequence ... */ 2344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 2354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 2364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 2374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 2384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 2394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr subtypes; 2404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAttributePtr attributes; 2414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr node; 2424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int minOccurs; 2434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int maxOccurs; 2444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int flags; 2464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *targetNamespace; 2474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *namedType; 2484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *namedTypeNs; 2494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *substGroup; 2504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *substGroupNs; 2514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *scope; 2524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *value; 2534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaElement *refDecl; 2544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlRegexpPtr contModel; 25588c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard xmlSchemaContentType contentType; 2564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 2574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 258a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/* 259a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_UNKNOWN: 2604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 261a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * unknown facet handling 2624255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 2634255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_UNKNOWN 0 264a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/* 265a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_PRESERVE: 266a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 267a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * preserve the type of the facet 268a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2694255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_PRESERVE 1 270a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/* 271a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_REPLACE: 272a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 273a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * replace the type of the facet 274a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2754255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_REPLACE 2 276a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/* 277a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_COLLAPSE: 278a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 279a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * collapse the types of the facet 280a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2814255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_COLLAPSE 3 2824255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 283a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 284a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * A facet definition. 285a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2864255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaFacet { 2874255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 2884255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */ 2894255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *value; 2904255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 2914255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 2924255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr node; 2934255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int fixed; 2944255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int whitespace; 2954255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaValPtr val; 2964255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlRegexpPtr regexp; 2974255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 2984255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2994255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 3004255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * A notation definition. 3014255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 3024255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaNotation xmlSchemaNotation; 3034255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaNotation *xmlSchemaNotationPtr; 3044255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaNotation { 3054255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 3064255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 3074255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 3084255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *identifier; 3094255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 3104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 3114255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 312a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_QUALIF_ELEM: 313a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 314a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the shemas requires qualified elements 3154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 3164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_QUALIF_ELEM 1 << 0 317a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 318a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_QUALIF_ATTR: 319a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 320a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the shemas requires qualified attributes 321a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 3224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_QUALIF_ATTR 1 << 1 323a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 324a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * _xmlSchema: 325a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 326a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * A Schemas definition 327a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 3284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchema { 3294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; /* schema name */ 3304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *targetNamespace; /* the target namespace */ 3314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *version; 3324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 3334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlDocPtr doc; 3344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 3354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int flags; 3364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 3374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr typeDecl; 3384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr attrDecl; 3394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr attrgrpDecl; 3404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr elemDecl; 3414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr notaDecl; 34210b6da4aa5111bb420201d8286d22b1e9ce139c0Daniel Veillard 34310b6da4aa5111bb420201d8286d22b1e9ce139c0Daniel Veillard xmlHashTablePtr schemasImports; 3445f7f991ab7055c1a96aed0127cebfa22a180c181Daniel Veillard 3455f7f991ab7055c1a96aed0127cebfa22a180c181Daniel Veillard void *_private; /* unused by the library for users or bindings */ 346a84c0b30c411afe3b55e84ecce99ba0d42c39e3eDaniel Veillard xmlHashTablePtr groupDecl; 3474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 3484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 34976874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN void XMLCALL xmlSchemaFreeType (xmlSchemaTypePtr type); 3504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 3514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef __cplusplus 3524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} 3534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif 3544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 3554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif /* LIBXML_SCHEMAS_ENABLED */ 3564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif /* __XML_SCHEMA_INTERNALS_H__ */ 3574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 3584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 359