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