schemasInternals.h revision 4255d504151db75c17f85192ce74f45dd2d65533
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, 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, 724255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard XML_SCHEMA_CONTENT_BASIC 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/** 1434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * Schemas type definition. 1444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 1454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_TYPE_MIXED 1 << 0 1464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaType { 1484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 1494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaType *next;/* the next type if in a sequence ... */ 1504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 1514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 1524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 1534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 1544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 1554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr subtypes; 1564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAttributePtr attributes; 1574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr node; 1584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int minOccurs; 1594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int maxOccurs; 1604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1614255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int flags; 1624255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaContentType contentType; 1634255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *base; 1644255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *baseNs; 1654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr baseType; 1664255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaFacetPtr facets; 1674255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 1684255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1694255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 1704255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An element definition. 1714255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 1724255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of 1734255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * structures must be kept similar 1744255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 1754255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_NILLABLE 1 << 0 1764255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_GLOBAL 1 << 1 1774255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_DEFAULT 1 << 2 1784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_FIXED 1 << 3 1794255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_ABSTRACT 1 << 4 1804255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_TOPLEVEL 1 << 5 1814255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_ELEM_REF 1 << 6 1824255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1834255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaElement xmlSchemaElement; 1844255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaElement *xmlSchemaElementPtr; 1854255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaElement { 1864255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 1874255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaType *next;/* the next type if in a sequence ... */ 1884255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 1894255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 1904255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *ref; 1914255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *refNs; 1924255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 1934255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypePtr subtypes; 1944255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAttributePtr attributes; 1954255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr node; 1964255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int minOccurs; 1974255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int maxOccurs; 1984255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 1994255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int flags; 2004255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *targetNamespace; 2014255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *namedType; 2024255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *namedTypeNs; 2034255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *substGroup; 2044255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *substGroupNs; 2054255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *scope; 2064255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *value; 2074255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaElement *refDecl; 2084255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlRegexpPtr contModel; 2094255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 2104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2114255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 2124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An facet definition. 2134255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * 2144255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 2154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_UNKNOWN 0 2164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_PRESERVE 1 2174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_REPLACE 2 2184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_FACET_COLLAPSE 3 2194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2204255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaFacet { 2214255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 2224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */ 2234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *value; 2244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 2254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 2264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlNodePtr node; 2274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int fixed; 2284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int whitespace; 2294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaValPtr val; 2304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlRegexpPtr regexp; 2314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 2324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 2344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * A notation definition. 2354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 2364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaNotation xmlSchemaNotation; 2374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaNotation *xmlSchemaNotationPtr; 2384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaNotation { 2394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaTypeType type; /* The kind of type */ 2404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; 2414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 2424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *identifier; 2434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 2444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/** 2464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * A Schemas definition 2474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */ 2484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_QUALIF_ELEM 1 << 0 2494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define XML_SCHEMAS_QUALIF_ATTR 1 << 1 2504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchema { 2514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *name; /* schema name */ 2524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *targetNamespace; /* the target namespace */ 2534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *version; 2544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlChar *id; 2554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlDocPtr doc; 2564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlSchemaAnnotPtr annot; 2574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard int flags; 2584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr typeDecl; 2604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr attrDecl; 2614255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr attrgrpDecl; 2624255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr elemDecl; 2634255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard xmlHashTablePtr notaDecl; 2644255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}; 2654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2664255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardvoid xmlSchemaFreeType (xmlSchemaTypePtr type); 2674255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2684255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef __cplusplus 2694255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} 2704255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif 2714255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2724255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif /* LIBXML_SCHEMAS_ENABLED */ 2734255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif /* __XML_SCHEMA_INTERNALS_H__ */ 2744255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 2754255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard 276