schemasInternals.h revision 8326e73bc163e15fd7b5264c0cc6cf2480723869
14255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/* 24255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * schemasInternals.h : internal interfaces for the XML Schemas handling 34255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * and schema validity checking 44255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 54255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * See Copyright for the status of this software. 64255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 74255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * Daniel.Veillard@w3.org 84255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 94255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 114255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifndef __XML_SCHEMA_INTERNALS_H__ 124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define __XML_SCHEMA_INTERNALS_H__ 134255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 144255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#include <libxml/xmlversion.h> 157ae91bcd9e94946a7be41290cb67ffc9c2cf0a9fIgor Zlatkovic 164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef LIBXML_SCHEMAS_ENABLED 174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#include <libxml/xmlregexp.h> 198326e73bc163e15fd7b5264c0cc6cf2480723869Daniel Veillard#include <libxml/hash.h> 204255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 214255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef __cplusplus 224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardextern "C" { 234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif 244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/* 274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * XML Schemas defines multiple type of types. 284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef enum { 304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_BASIC = 1, 314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_ANY, 324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_FACET, 334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_SIMPLE, 344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_COMPLEX, 354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_SEQUENCE, 364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_CHOICE, 374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_ALL, 384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_SIMPLE_CONTENT, 394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_COMPLEX_CONTENT, 404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_UR, 414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_RESTRICTION, 424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_EXTENSION, 434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_ELEMENT, 444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_ATTRIBUTE, 4513e04c6c12007d30ae7e007e931e55e717a5a73fDaniel Veillard XML_SCHEMA_TYPE_ATTRIBUTEGROUP, 464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_GROUP, 474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_NOTATION, 484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_LIST, 494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_UNION, 504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MININCLUSIVE = 1000, 514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MINEXCLUSIVE, 524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MAXINCLUSIVE, 534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MAXEXCLUSIVE, 544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_TOTALDIGITS, 554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_FRACTIONDIGITS, 564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_PATTERN, 574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_ENUMERATION, 584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_WHITESPACE, 594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_LENGTH, 604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MAXLENGTH, 614255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MINLENGTH 624255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} xmlSchemaTypeType; 634255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 644255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef enum { 654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_UNKNOWN = 0, 664255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_EMPTY = 1, 674255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_ELEMENTS, 684255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_MIXED, 694255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_SIMPLE, 704255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, 7188c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard XML_SCHEMA_CONTENT_BASIC, 7288c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard XML_SCHEMA_CONTENT_ANY 734255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} xmlSchemaContentType; 744255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 754255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaVal xmlSchemaVal; 764255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaVal *xmlSchemaValPtr; 774255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaType xmlSchemaType; 794255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaType *xmlSchemaTypePtr; 804255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 814255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaFacet xmlSchemaFacet; 824255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaFacet *xmlSchemaFacetPtr; 834255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 844255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 854255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * Annotation 864255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 874255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAnnot xmlSchemaAnnot; 884255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAnnot *xmlSchemaAnnotPtr; 894255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAnnot { 904255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaAnnot *next; 914255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr content; /* the annotation */ 924255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 934255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 944255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 954255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An attribute definition. 964255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 974255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 984255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ANYATTR_SKIP 1 994255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ANYATTR_LAX 2 1004255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ANYATTR_STRICT 3 1014255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1024255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAttribute xmlSchemaAttribute; 1034255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAttribute *xmlSchemaAttributePtr; 1044255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAttribute { 1054255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 1064255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */ 1074255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 1084255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 1094255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 1104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 1114255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *typeName; 1124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *typeNs; 1134255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 1144255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr base; 1164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int occurs; 1174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *defValue; 1184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr subtypes; 1194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 1204255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1214255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 1224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An attribute group definition. 1234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 1244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures 1254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * must be kept similar 1264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 1274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup; 1284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr; 1294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAttributeGroup { 1304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 1314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */ 1324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 1334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 1344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 1354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 1364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 1374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAttributePtr attributes; 1394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 1404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 143a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_TYPE_MIXED: 144a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 145a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element content type is mixed 1464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 1474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_TYPE_MIXED 1 << 0 1484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 149a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 150a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * _xmlSchemaType: 151a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 152a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * Schemas type definition. 153a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 1544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaType { 1554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 1564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaType *next;/* the next type if in a sequence ... */ 1574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 1584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 1594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 1604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 1614255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 1624255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr subtypes; 1634255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAttributePtr attributes; 1644255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr node; 1654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int minOccurs; 1664255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int maxOccurs; 1674255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1684255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int flags; 1694255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaContentType contentType; 1704255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *base; 1714255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *baseNs; 1724255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr baseType; 1734255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaFacetPtr facets; 1744255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 1754255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1764255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 177a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * xmlSchemaElement: 1784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An element definition. 1794255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 1804255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of 1814255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * structures must be kept similar 1824255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 183a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 184a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_NILLABLE: 185a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 186a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is nillable 187a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 1884255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_NILLABLE 1 << 0 189a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 190a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_GLOBAL: 191a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 192a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is global 193a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 1944255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_GLOBAL 1 << 1 195a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 196a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_DEFAULT: 197a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 198a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element has a default value 199a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2004255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_DEFAULT 1 << 2 201a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 202a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_FIXED: 203a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 204a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element has a fixed value 205a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2064255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_FIXED 1 << 3 207a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 208a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_ABSTRACT: 209a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 210a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is abstract 211a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_ABSTRACT 1 << 4 213a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 214a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_TOPLEVEL: 215a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 216a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is top level 217a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_TOPLEVEL 1 << 5 219a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 220a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_REF: 221a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 222a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is a reference to a type 223a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_REF 1 << 6 2254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaElement xmlSchemaElement; 2274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaElement *xmlSchemaElementPtr; 2284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaElement { 2294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 2304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaType *next;/* the next type if in a sequence ... */ 2314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 2324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 2334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 2344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 2354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 2364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr subtypes; 2374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAttributePtr attributes; 2384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr node; 2394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int minOccurs; 2404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int maxOccurs; 2414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int flags; 2434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *targetNamespace; 2444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *namedType; 2454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *namedTypeNs; 2464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *substGroup; 2474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *substGroupNs; 2484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *scope; 2494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *value; 2504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaElement *refDecl; 2514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlRegexpPtr contModel; 25288c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard xmlSchemaContentType contentType; 2534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 2544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 255a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/* 256a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_UNKNOWN: 2574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 258a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * unknown facet handling 2594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 2604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_UNKNOWN 0 261a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/* 262a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_PRESERVE: 263a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 264a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * preserve the type of the facet 265a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2664255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_PRESERVE 1 267a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/* 268a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_REPLACE: 269a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 270a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * replace the type of the facet 271a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2724255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_REPLACE 2 273a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/* 274a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_COLLAPSE: 275a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 276a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * collapse the types of the facet 277a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_COLLAPSE 3 2794255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 280a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 281a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * A facet definition. 282a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 2834255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaFacet { 2844255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 2854255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */ 2864255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *value; 2874255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 2884255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 2894255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr node; 2904255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int fixed; 2914255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int whitespace; 2924255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaValPtr val; 2934255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlRegexpPtr regexp; 2944255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 2954255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2964255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 2974255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * A notation definition. 2984255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 2994255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaNotation xmlSchemaNotation; 3004255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaNotation *xmlSchemaNotationPtr; 3014255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaNotation { 3024255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 3034255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 3044255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 3054255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *identifier; 3064255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 3074255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 3084255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 309a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_QUALIF_ELEM: 310a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 311a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the shemas requires qualified elements 3124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 3134255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_QUALIF_ELEM 1 << 0 314a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 315a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_QUALIF_ATTR: 316a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 317a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the shemas requires qualified attributes 318a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 3194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_QUALIF_ATTR 1 << 1 320a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/** 321a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * _xmlSchema: 322a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * 323a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * A Schemas definition 324a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */ 3254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchema { 3264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; /* schema name */ 3274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *targetNamespace; /* the target namespace */ 3284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *version; 3294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 3304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlDocPtr doc; 3314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 3324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int flags; 3334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 3344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr typeDecl; 3354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr attrDecl; 3364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr attrgrpDecl; 3374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr elemDecl; 3384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr notaDecl; 33910b6da4aa5111bb420201d8286d22b1e9ce139c0Daniel Veillard 34010b6da4aa5111bb420201d8286d22b1e9ce139c0Daniel Veillard xmlHashTablePtr schemasImports; 3415f7f991ab7055c1a96aed0127cebfa22a180c181Daniel Veillard 3425f7f991ab7055c1a96aed0127cebfa22a180c181Daniel Veillard void *_private; /* unused by the library for users or bindings */ 3434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 3444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 3454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardvoid xmlSchemaFreeType (xmlSchemaTypePtr type); 3464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 3474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef __cplusplus 3484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} 3494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif 3504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 3514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif /* LIBXML_SCHEMAS_ENABLED */ 3524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif /* __XML_SCHEMA_INTERNALS_H__ */ 3534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 3544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 355