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