schemasInternals.h revision 5f7f991ab7055c1a96aed0127cebfa22a180c181
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#if defined(WIN32) && defined(_MSC_VER) 154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#include <libxml/xmlwin32version.h> 164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#else 174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#include <libxml/xmlversion.h> 184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif 194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef LIBXML_SCHEMAS_ENABLED 204255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 214255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#include <libxml/xmlregexp.h> 224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef __cplusplus 244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardextern "C" { 254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif 264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/* 294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * XML Schemas defines multiple type of types. 304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef enum { 324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_BASIC = 1, 334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_ANY, 344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_FACET, 354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_SIMPLE, 364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_COMPLEX, 374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_SEQUENCE, 384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_CHOICE, 394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_ALL, 404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_SIMPLE_CONTENT, 414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_COMPLEX_CONTENT, 424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_UR, 434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_RESTRICTION, 444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_EXTENSION, 454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_ELEMENT, 464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_ATTRIBUTE, 4713e04c6c12007d30ae7e007e931e55e717a5a73fDaniel Veillard XML_SCHEMA_TYPE_ATTRIBUTEGROUP, 484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_GROUP, 494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_NOTATION, 504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_LIST, 514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_TYPE_UNION, 524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MININCLUSIVE = 1000, 534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MINEXCLUSIVE, 544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MAXINCLUSIVE, 554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MAXEXCLUSIVE, 564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_TOTALDIGITS, 574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_FRACTIONDIGITS, 584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_PATTERN, 594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_ENUMERATION, 604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_WHITESPACE, 614255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_LENGTH, 624255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MAXLENGTH, 634255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_FACET_MINLENGTH 644255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} xmlSchemaTypeType; 654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 664255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef enum { 674255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_UNKNOWN = 0, 684255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_EMPTY = 1, 694255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_ELEMENTS, 704255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_MIXED, 714255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_SIMPLE, 724255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, 7388c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard XML_SCHEMA_CONTENT_BASIC, 7488c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard XML_SCHEMA_CONTENT_ANY 754255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} xmlSchemaContentType; 764255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 774255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaVal xmlSchemaVal; 784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaVal *xmlSchemaValPtr; 794255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 804255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaType xmlSchemaType; 814255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaType *xmlSchemaTypePtr; 824255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 834255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaFacet xmlSchemaFacet; 844255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaFacet *xmlSchemaFacetPtr; 854255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 864255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 874255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * Annotation 884255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 894255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAnnot xmlSchemaAnnot; 904255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAnnot *xmlSchemaAnnotPtr; 914255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAnnot { 924255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaAnnot *next; 934255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr content; /* the annotation */ 944255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 954255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 964255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 974255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An attribute definition. 984255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 994255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1004255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ANYATTR_SKIP 1 1014255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ANYATTR_LAX 2 1024255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ANYATTR_STRICT 3 1034255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1044255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAttribute xmlSchemaAttribute; 1054255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAttribute *xmlSchemaAttributePtr; 1064255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAttribute { 1074255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 1084255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */ 1094255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 1104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 1114255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 1124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 1134255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *typeName; 1144255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *typeNs; 1154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 1164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr base; 1184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int occurs; 1194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *defValue; 1204255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr subtypes; 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; 1414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 1424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 1454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * Schemas type definition. 1464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 1474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_TYPE_MIXED 1 << 0 1484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaType { 1504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 1514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaType *next;/* the next type if in a sequence ... */ 1524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 1534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 1544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 1554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 1564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 1574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr subtypes; 1584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAttributePtr attributes; 1594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr node; 1604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int minOccurs; 1614255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int maxOccurs; 1624255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1634255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int flags; 1644255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaContentType contentType; 1654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *base; 1664255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *baseNs; 1674255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr baseType; 1684255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaFacetPtr facets; 1694255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 1704255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1714255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 1724255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An element definition. 1734255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 1744255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of 1754255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * structures must be kept similar 1764255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 1774255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_NILLABLE 1 << 0 1784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_GLOBAL 1 << 1 1794255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_DEFAULT 1 << 2 1804255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_FIXED 1 << 3 1814255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_ABSTRACT 1 << 4 1824255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_TOPLEVEL 1 << 5 1834255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_REF 1 << 6 1844255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1854255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaElement xmlSchemaElement; 1864255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaElement *xmlSchemaElementPtr; 1874255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaElement { 1884255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 1894255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaType *next;/* the next type if in a sequence ... */ 1904255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 1914255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 1924255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 1934255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 1944255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 1954255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr subtypes; 1964255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAttributePtr attributes; 1974255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr node; 1984255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int minOccurs; 1994255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int maxOccurs; 2004255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2014255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int flags; 2024255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *targetNamespace; 2034255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *namedType; 2044255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *namedTypeNs; 2054255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *substGroup; 2064255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *substGroupNs; 2074255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *scope; 2084255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *value; 2094255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaElement *refDecl; 2104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlRegexpPtr contModel; 21188c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard xmlSchemaContentType contentType; 2124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 2134255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2144255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 2154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An facet definition. 2164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 2174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 2184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_UNKNOWN 0 2194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_PRESERVE 1 2204255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_REPLACE 2 2214255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_COLLAPSE 3 2224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaFacet { 2244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 2254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */ 2264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *value; 2274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 2284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 2294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr node; 2304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int fixed; 2314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int whitespace; 2324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaValPtr val; 2334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlRegexpPtr regexp; 2344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 2354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 2374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * A notation definition. 2384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 2394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaNotation xmlSchemaNotation; 2404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaNotation *xmlSchemaNotationPtr; 2414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaNotation { 2424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 2434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 2444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 2454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *identifier; 2464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 2474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 2494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * A Schemas definition 2504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 2514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_QUALIF_ELEM 1 << 0 2524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_QUALIF_ATTR 1 << 1 2534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchema { 2544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; /* schema name */ 2554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *targetNamespace; /* the target namespace */ 2564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *version; 2574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 2584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlDocPtr doc; 2594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 2604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int flags; 2614255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2624255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr typeDecl; 2634255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr attrDecl; 2644255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr attrgrpDecl; 2654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr elemDecl; 2664255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr notaDecl; 26710b6da4aa5111bb420201d8286d22b1e9ce139c0Daniel Veillard 26810b6da4aa5111bb420201d8286d22b1e9ce139c0Daniel Veillard xmlHashTablePtr schemasImports; 2695f7f991ab7055c1a96aed0127cebfa22a180c181Daniel Veillard 2705f7f991ab7055c1a96aed0127cebfa22a180c181Daniel Veillard void *_private; /* unused by the library for users or bindings */ 2714255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 2724255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2734255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardvoid xmlSchemaFreeType (xmlSchemaTypePtr type); 2744255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2754255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef __cplusplus 2764255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} 2774255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif 2784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2794255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif /* LIBXML_SCHEMAS_ENABLED */ 2804255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif /* __XML_SCHEMA_INTERNALS_H__ */ 2814255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2824255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 283