14255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/*
2be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Summary: internal interfaces for XML Schemas
3be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Description: internal interfaces for the XML Schemas handling
4be5869729a416032a4abb5a65430d25831828f75Daniel Veillard *              and schema validity checking
5567a45b5e931388acf850d56f937f1f66ff0f860Daniel Veillard *		The Schemas development is a Work In Progress.
6567a45b5e931388acf850d56f937f1f66ff0f860Daniel Veillard *              Some of those interfaces are not garanteed to be API or ABI stable !
74255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard *
8be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Copy: See Copyright for the status of this software.
94255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard *
10be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Author: Daniel Veillard
114255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
134255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
144255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifndef __XML_SCHEMA_INTERNALS_H__
154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define __XML_SCHEMA_INTERNALS_H__
164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#include <libxml/xmlversion.h>
187ae91bcd9e94946a7be41290cb67ffc9c2cf0a9fIgor Zlatkovic
194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef LIBXML_SCHEMAS_ENABLED
204255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
214255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#include <libxml/xmlregexp.h>
228326e73bc163e15fd7b5264c0cc6cf2480723869Daniel Veillard#include <libxml/hash.h>
23be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard#include <libxml/dict.h>
244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef __cplusplus
264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardextern "C" {
274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif
284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
2901fa6156e51259229470f40619af93e915b4bc94Daniel Veillardtypedef enum {
3001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_UNKNOWN = 0,
31cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_STRING = 1,
32cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_NORMSTRING = 2,
33cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_DECIMAL = 3,
34cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_TIME = 4,
35cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_GDAY = 5,
36cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_GMONTH = 6,
37cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_GMONTHDAY = 7,
38cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_GYEAR = 8,
39cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_GYEARMONTH = 9,
40cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_DATE = 10,
41cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_DATETIME = 11,
42cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_DURATION = 12,
43cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_FLOAT = 13,
44cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_DOUBLE = 14,
45cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_BOOLEAN = 15,
46cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_TOKEN = 16,
47cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_LANGUAGE = 17,
48cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_NMTOKEN = 18,
49cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_NMTOKENS = 19,
50cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_NAME = 20,
51cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_QNAME = 21,
52cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_NCNAME = 22,
53cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_ID = 23,
54cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_IDREF = 24,
55cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_IDREFS = 25,
56cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_ENTITY = 26,
57cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_ENTITIES = 27,
58cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_NOTATION = 28,
59cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_ANYURI = 29,
60cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_INTEGER = 30,
61cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_NPINTEGER = 31,
62cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_NINTEGER = 32,
63cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_NNINTEGER = 33,
64cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_PINTEGER = 34,
65cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_INT = 35,
66cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_UINT = 36,
67cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_LONG = 37,
68cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_ULONG = 38,
69cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_SHORT = 39,
70cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_USHORT = 40,
71cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_BYTE = 41,
72cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_UBYTE = 42,
73cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_HEXBINARY = 43,
74cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_BASE64BINARY = 44,
75cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_ANYTYPE = 45,
76cad102b861f74d56e3f6e710c466cf1a38a5db56Audric Schiltknecht    XML_SCHEMAS_ANYSIMPLETYPE = 46
7701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard} xmlSchemaValType;
784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
794255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/*
804255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * XML Schemas defines multiple type of types.
814255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
824255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef enum {
8301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMA_TYPE_BASIC = 1, /* A built-in datatype */
844255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_ANY,
854255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_FACET,
864255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_SIMPLE,
874255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_COMPLEX,
884efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik    XML_SCHEMA_TYPE_SEQUENCE = 6,
894255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_CHOICE,
904255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_ALL,
914255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_SIMPLE_CONTENT,
924255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_COMPLEX_CONTENT,
934255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_UR,
944255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_RESTRICTION,
954255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_EXTENSION,
964255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_ELEMENT,
974255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_ATTRIBUTE,
9813e04c6c12007d30ae7e007e931e55e717a5a73fDaniel Veillard    XML_SCHEMA_TYPE_ATTRIBUTEGROUP,
994255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_GROUP,
1004255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_NOTATION,
1014255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_LIST,
1024255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_UNION,
103e709195e355fb88da62d31720dc5cbe7f0a77ecbWilliam M. Brack    XML_SCHEMA_TYPE_ANY_ATTRIBUTE,
104e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik    XML_SCHEMA_TYPE_IDC_UNIQUE,
105e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik    XML_SCHEMA_TYPE_IDC_KEY,
106e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik    XML_SCHEMA_TYPE_IDC_KEYREF,
107f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard    XML_SCHEMA_TYPE_PARTICLE = 25,
108f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard    XML_SCHEMA_TYPE_ATTRIBUTE_USE,
1094255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_MININCLUSIVE = 1000,
1104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_MINEXCLUSIVE,
1114255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_MAXINCLUSIVE,
1124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_MAXEXCLUSIVE,
1134255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_TOTALDIGITS,
1144255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_FRACTIONDIGITS,
1154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_PATTERN,
1164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_ENUMERATION,
1174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_WHITESPACE,
1184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_LENGTH,
1194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_MAXLENGTH,
120256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik    XML_SCHEMA_FACET_MINLENGTH,
121570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    XML_SCHEMA_EXTRA_QNAMEREF = 2000,
122570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    XML_SCHEMA_EXTRA_ATTR_USE_PROHIB
1234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} xmlSchemaTypeType;
1244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
1254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef enum {
1264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_CONTENT_UNKNOWN = 0,
1274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_CONTENT_EMPTY = 1,
1284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_CONTENT_ELEMENTS,
1294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_CONTENT_MIXED,
1304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_CONTENT_SIMPLE,
131ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, /* Obsolete */
13288c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard    XML_SCHEMA_CONTENT_BASIC,
13388c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard    XML_SCHEMA_CONTENT_ANY
1344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} xmlSchemaContentType;
1354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
1364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaVal xmlSchemaVal;
1374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaVal *xmlSchemaValPtr;
1384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
1394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaType xmlSchemaType;
1404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaType *xmlSchemaTypePtr;
1414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
1424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaFacet xmlSchemaFacet;
1434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaFacet *xmlSchemaFacetPtr;
1444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
1454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/**
1464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * Annotation
1474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
1484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAnnot xmlSchemaAnnot;
1494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAnnot *xmlSchemaAnnotPtr;
1504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAnnot {
1514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    struct _xmlSchemaAnnot *next;
1524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlNodePtr content;         /* the annotation */
1534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
1544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
1554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/**
1561e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * XML_SCHEMAS_ANYATTR_SKIP:
1571e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard *
1581e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * Skip unknown attribute from validation
15901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Obsolete, not used anymore.
1604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
161876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ANYATTR_SKIP        1
1621e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard/**
1631e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * XML_SCHEMAS_ANYATTR_LAX:
1641e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard *
1651e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * Ignore validation non definition on attributes
16601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Obsolete, not used anymore.
1671e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard */
168876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ANYATTR_LAX                2
1691e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard/**
1701e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * XML_SCHEMAS_ANYATTR_STRICT:
1711e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard *
1721e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * Apply strict validation rules on attributes
17301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Obsolete, not used anymore.
1741e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard */
175876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ANYATTR_STRICT        3
1763646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
1773646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_ANY_SKIP:
1783646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
179876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik * Skip unknown attribute from validation
1803646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
1813646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_ANY_SKIP        1
1823646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
1833646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_ANY_LAX:
1843646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
18501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Used by wildcards.
18601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Validate if type found, don't worry if not found
1873646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
1883646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_ANY_LAX                2
1893646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
1903646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_ANY_STRICT:
1913646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
19201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Used by wildcards.
19301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Apply strict validation rules
1943646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
1953646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_ANY_STRICT        3
196be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard/**
197c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard * XML_SCHEMAS_ATTR_USE_PROHIBITED:
198c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard *
19901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Used by wildcards.
200c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard * The attribute is prohibited.
201c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard */
202c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard#define XML_SCHEMAS_ATTR_USE_PROHIBITED 0
203c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard/**
204c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard * XML_SCHEMAS_ATTR_USE_REQUIRED:
205c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard *
206c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard * The attribute is required.
207c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard */
208c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard#define XML_SCHEMAS_ATTR_USE_REQUIRED 1
209c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard/**
210c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard * XML_SCHEMAS_ATTR_USE_OPTIONAL:
211c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard *
212c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard * The attribute is optional.
213c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard */
214c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard#define XML_SCHEMAS_ATTR_USE_OPTIONAL 2
2153646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
21621e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_ATTR_GLOBAL:
2173646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
2183646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * allow elements in no namespace
2193646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
2203646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_ATTR_GLOBAL        1 << 0
221c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard/**
222be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard * XML_SCHEMAS_ATTR_NSDEFAULT:
223be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard *
224be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard * allow elements in no namespace
225be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard */
226876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ATTR_NSDEFAULT        1 << 7
227c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
22887876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * XML_SCHEMAS_ATTR_INTERNAL_RESOLVED:
229c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
230876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik * this is set when the "type" and "ref" references
231c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * have been resolved.
232c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
233876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ATTR_INTERNAL_RESOLVED        1 << 8
234c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
235c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_ATTR_FIXED:
236c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
237c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the attribute has a fixed value
238c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
239876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ATTR_FIXED        1 << 9
240be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard
2411e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard/**
2421e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * xmlSchemaAttribute:
2431e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * An attribute definition.
2441e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard */
2451e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard
2464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAttribute xmlSchemaAttribute;
2474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAttribute *xmlSchemaAttributePtr;
2484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAttribute {
249ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaTypeType type;
250570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    struct _xmlSchemaAttribute *next; /* the next attribute (not used?) */
251570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *name; /* the name of the declaration */
252570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *id; /* Deprecated; not used */
253570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *ref; /* Deprecated; not used */
254570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *refNs; /* Deprecated; not used */
255c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard    const xmlChar *typeName; /* the local name of the type definition */
256c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard    const xmlChar *typeNs; /* the ns URI of the type definition */
2574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
2584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
259570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    xmlSchemaTypePtr base; /* Deprecated; not used */
260570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    int occurs; /* Deprecated; not used */
261570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *defValue; /* The initial value of the value constraint */
262c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard    xmlSchemaTypePtr subtypes; /* the type definition */
26375bb3bbf25e5ddaf5e013978c3b001de02c959aaDaniel Veillard    xmlNodePtr node;
264876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    const xmlChar *targetNamespace;
265be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    int flags;
266570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *refPrefix; /* Deprecated; not used */
267ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaValPtr defVal; /* The compiled value constraint */
268570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    xmlSchemaAttributePtr refDecl; /* Deprecated; not used */
2694255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
2704255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
2714255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/**
2723646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * xmlSchemaAttributeLink:
2733646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * Used to build a list of attribute uses on complexType definitions.
274570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik * WARNING: Deprecated; not used.
2753646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
2763646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardtypedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink;
2773646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardtypedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr;
2783646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardstruct _xmlSchemaAttributeLink {
2793646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    struct _xmlSchemaAttributeLink *next;/* the next attribute link ... */
2803646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    struct _xmlSchemaAttribute *attr;/* the linked attribute */
2813646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard};
2823646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard
2833646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
2843646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_WILDCARD_COMPLETE:
2853646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
2863646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * If the wildcard is complete.
2873646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
2883646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_WILDCARD_COMPLETE 1 << 0
2893646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard
2903646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
2913646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * xmlSchemaCharValueLink:
2923646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * Used to build a list of namespaces on wildcards.
2933646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
2943646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardtypedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs;
2953646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardtypedef xmlSchemaWildcardNs *xmlSchemaWildcardNsPtr;
2963646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardstruct _xmlSchemaWildcardNs {
2973646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    struct _xmlSchemaWildcardNs *next;/* the next constraint link ... */
2983646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    const xmlChar *value;/* the value */
2993646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard};
3003646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard
3013646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
3023646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * xmlSchemaWildcard.
3033646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * A wildcard.
3043646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
3053646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardtypedef struct _xmlSchemaWildcard xmlSchemaWildcard;
3063646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardtypedef xmlSchemaWildcard *xmlSchemaWildcardPtr;
3073646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardstruct _xmlSchemaWildcard {
3083646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlSchemaTypeType type;        /* The kind of type */
309570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *id; /* Deprecated; not used */
3103646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlSchemaAnnotPtr annot;
3113646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlNodePtr node;
312570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    int minOccurs; /* Deprecated; not used */
313570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    int maxOccurs; /* Deprecated; not used */
3143646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    int processContents;
3153646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    int any; /* Indicates if the ns constraint is of ##any */
3163646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlSchemaWildcardNsPtr nsSet; /* The list of allowed namespaces */
3173646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlSchemaWildcardNsPtr negNsSet; /* The negated namespace */
3183646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    int flags;
3193646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard};
3203646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard
3213646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
3223646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED:
3233646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
3243646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * The attribute wildcard has been already builded.
3253646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
3263646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED 1 << 0
3273646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
3283646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_ATTRGROUP_GLOBAL:
3293646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
3303646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * The attribute wildcard has been already builded.
3313646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
3323646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_ATTRGROUP_GLOBAL 1 << 1
333383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik/**
334383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik * XML_SCHEMAS_ATTRGROUP_MARKED:
335383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik *
336383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik * Marks the attr group as marked; used for circular checks.
337383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik */
338383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik#define XML_SCHEMAS_ATTRGROUP_MARKED 1 << 2
3393646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard
3403646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
341ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * XML_SCHEMAS_ATTRGROUP_REDEFINED:
342ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik *
343ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * The attr group was redefined.
344ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik */
345ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik#define XML_SCHEMAS_ATTRGROUP_REDEFINED 1 << 3
346570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik/**
347570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik * XML_SCHEMAS_ATTRGROUP_HAS_REFS:
348570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik *
349570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik * Whether this attr. group contains attr. group references.
350570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik */
351570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik#define XML_SCHEMAS_ATTRGROUP_HAS_REFS 1 << 4
352ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik
353ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik/**
3544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An attribute group definition.
3554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard *
3564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures
3574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * must be kept similar
3584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
3594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup;
3604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr;
3614255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAttributeGroup {
362876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    xmlSchemaTypeType type;        /* The kind of type */
3634255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */
364be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *name;
365be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *id;
366570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *ref; /* Deprecated; not used */
367570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *refNs; /* Deprecated; not used */
3684255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
3694255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
370570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    xmlSchemaAttributePtr attributes; /* Deprecated; not used */
37175bb3bbf25e5ddaf5e013978c3b001de02c959aaDaniel Veillard    xmlNodePtr node;
3723646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    int flags;
3733646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlSchemaWildcardPtr attributeWildcard;
374570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *refPrefix; /* Deprecated; not used */
375570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    xmlSchemaAttributeGroupPtr refItem; /* Deprecated; not used */
37631113c7e86e39f3f5f0a84c235f2346f64746001Kasimier T. Buchcik    const xmlChar *targetNamespace;
377570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    void *attrUses;
3784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
3794255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
38001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
38101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * xmlSchemaTypeLink:
38201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Used to build a list of types (e.g. member types of
38301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * simpleType with variety "union").
38401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
38501fa6156e51259229470f40619af93e915b4bc94Daniel Veillardtypedef struct _xmlSchemaTypeLink xmlSchemaTypeLink;
38601fa6156e51259229470f40619af93e915b4bc94Daniel Veillardtypedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr;
38701fa6156e51259229470f40619af93e915b4bc94Daniel Veillardstruct _xmlSchemaTypeLink {
38801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    struct _xmlSchemaTypeLink *next;/* the next type link ... */
389ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaTypePtr type;/* the linked type */
39001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard};
39101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard
39201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
39301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * xmlSchemaFacetLink:
39401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Used to build a list of facets.
39501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
39601fa6156e51259229470f40619af93e915b4bc94Daniel Veillardtypedef struct _xmlSchemaFacetLink xmlSchemaFacetLink;
39701fa6156e51259229470f40619af93e915b4bc94Daniel Veillardtypedef xmlSchemaFacetLink *xmlSchemaFacetLinkPtr;
39801fa6156e51259229470f40619af93e915b4bc94Daniel Veillardstruct _xmlSchemaFacetLink {
39901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    struct _xmlSchemaFacetLink *next;/* the next facet link ... */
40001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    xmlSchemaFacetPtr facet;/* the linked facet */
40101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard};
4024255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
4034255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/**
404a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_TYPE_MIXED:
405a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
406a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element content type is mixed
4074255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
408876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_MIXED                1 << 0
4093646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
4103646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION:
4113646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
4123646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * the simple or complex type has a derivation method of "extension".
4133646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
4143646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION                1 << 1
4153646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
4163646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION:
4173646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
4183646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * the simple or complex type has a derivation method of "restriction".
4193646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
4203646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION                1 << 2
4213646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
4223646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_TYPE_GLOBAL:
4233646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
4243646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * the type is global
4253646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
4263646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_TYPE_GLOBAL                1 << 3
4273646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
4283646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD:
4293646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
4303646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * the complexType owns an attribute wildcard, i.e.
4313646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * it can be freed by the complexType
4323646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
433256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD    1 << 4 /* Obsolete. */
43401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
43501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_VARIETY_ABSENT:
43601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
43701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType has a variety of "absent".
438ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * TODO: Actually not necessary :-/, since if
439ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * none of the variety flags occur then it's
440ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * automatically absent.
44101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
44201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_VARIETY_ABSENT    1 << 5
44301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
44401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_VARIETY_LIST:
44501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
44601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType has a variety of "list".
44701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
44801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_VARIETY_LIST    1 << 6
44901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
45001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_VARIETY_UNION:
45101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
45201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType has a variety of "union".
45301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
45401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_VARIETY_UNION    1 << 7
45501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
45601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_VARIETY_ATOMIC:
45701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
45801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType has a variety of "union".
45901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
46001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_VARIETY_ATOMIC    1 << 8
46101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
46201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_FINAL_EXTENSION:
46301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
46401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the complexType has a final of "extension".
46501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
46601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_FINAL_EXTENSION    1 << 9
46701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
46801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_FINAL_RESTRICTION:
46901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
47001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType/complexType has a final of "restriction".
47101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
47201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_FINAL_RESTRICTION    1 << 10
47301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
47401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_FINAL_LIST:
47501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
47601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType has a final of "list".
47701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
47801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_FINAL_LIST    1 << 11
47901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
48001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_FINAL_UNION:
48101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
48201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType has a final of "union".
48301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
48401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_FINAL_UNION    1 << 12
48501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
48621e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_TYPE_FINAL_DEFAULT:
48701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
48821e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * the simpleType has a final of "default".
48901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
49001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_FINAL_DEFAULT    1 << 13
49101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
49221e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE:
49301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
49421e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * Marks the item as a builtin primitive.
49501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
49601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE    1 << 14
497383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik/**
49821e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_TYPE_MARKED:
499383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik *
500383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik * Marks the item as marked; used for circular checks.
501383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik */
502876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_MARKED        1 << 16
50387876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik/**
50487876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * XML_SCHEMAS_TYPE_BLOCK_DEFAULT:
50587876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik *
50687876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * the complexType did not specify 'block' so use the default of the
50787876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * <schema> item.
50887876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik */
50987876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik#define XML_SCHEMAS_TYPE_BLOCK_DEFAULT    1 << 17
51087876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik/**
51187876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * XML_SCHEMAS_TYPE_BLOCK_EXTENSION:
51287876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik *
51387876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * the complexType has a 'block' of "extension".
51487876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik */
51587876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik#define XML_SCHEMAS_TYPE_BLOCK_EXTENSION    1 << 18
51687876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik/**
51721e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_TYPE_BLOCK_RESTRICTION:
51887876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik *
51987876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * the complexType has a 'block' of "restriction".
52087876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik */
52187876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik#define XML_SCHEMAS_TYPE_BLOCK_RESTRICTION    1 << 19
52287876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik/**
52387876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * XML_SCHEMAS_TYPE_ABSTRACT:
52487876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik *
52587876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * the simple/complexType is abstract.
52687876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik */
52787876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik#define XML_SCHEMAS_TYPE_ABSTRACT    1 << 20
528e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik/**
529e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik * XML_SCHEMAS_TYPE_FACETSNEEDVALUE:
530e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik *
531e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik * indicates if the facets need a computed value
532e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik */
533e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_FACETSNEEDVALUE    1 << 21
534256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik/**
535256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik * XML_SCHEMAS_TYPE_INTERNAL_RESOLVED:
536256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik *
537256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik * indicates that the type was typefixed
538256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik */
539256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED    1 << 22
540256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik/**
541256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik * XML_SCHEMAS_TYPE_INTERNAL_INVALID:
542256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik *
543256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik * indicates that the type is invalid
544256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik */
545256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_INTERNAL_INVALID    1 << 23
5464efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik/**
5474efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE:
5484efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik *
5494efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * a whitespace-facet value of "preserve"
5504efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik */
5514efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE    1 << 24
5524efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik/**
5534efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * XML_SCHEMAS_TYPE_WHITESPACE_REPLACE:
5544efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik *
5554efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * a whitespace-facet value of "replace"
5564efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik */
5574efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_WHITESPACE_REPLACE    1 << 25
5584efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik/**
5594efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE:
5604efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik *
5614efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * a whitespace-facet value of "collapse"
5624efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik */
5634efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE    1 << 26
5644efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik/**
5654efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * XML_SCHEMAS_TYPE_HAS_FACETS:
5664efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik *
5674efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * has facets
5684efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik */
5694efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_HAS_FACETS    1 << 27
5704efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik/**
5714efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * XML_SCHEMAS_TYPE_NORMVALUENEEDED:
5724efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik *
5734efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * indicates if the facets (pattern) need a normalized value
5744efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik */
5754efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_NORMVALUENEEDED    1 << 28
5764255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
577a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
57822c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik * XML_SCHEMAS_TYPE_FIXUP_1:
57922c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik *
58022c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik * First stage of fixup was done.
58122c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik */
58222c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_FIXUP_1    1 << 29
58322c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik
58422c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik/**
585ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * XML_SCHEMAS_TYPE_REDEFINED:
586ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik *
587ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * The type was redefined.
588ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik */
589ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik#define XML_SCHEMAS_TYPE_REDEFINED    1 << 30
590ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik/**
591ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * XML_SCHEMAS_TYPE_REDEFINING:
592ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik *
593ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * The type redefines an other type.
594ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik */
595ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik/* #define XML_SCHEMAS_TYPE_REDEFINING    1 << 31 */
596ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik
597ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik/**
598a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * _xmlSchemaType:
599a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
600a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * Schemas type definition.
601a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
6024255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaType {
603570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    xmlSchemaTypeType type; /* The kind of type */
604570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    struct _xmlSchemaType *next; /* the next type if in a sequence ... */
605be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *name;
606570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *id ; /* Deprecated; not used */
607570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *ref; /* Deprecated; not used */
608570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *refNs; /* Deprecated; not used */
6094255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
6104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaTypePtr subtypes;
611570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    xmlSchemaAttributePtr attributes; /* Deprecated; not used */
6124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlNodePtr node;
613570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    int minOccurs; /* Deprecated; not used */
614570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    int maxOccurs; /* Deprecated; not used */
6154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
6164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    int flags;
6174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaContentType contentType;
618ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *base; /* Base type's local name */
619ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *baseNs; /* Base type's target namespace */
620ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaTypePtr baseType; /* The base type component */
621ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaFacetPtr facets; /* Local facets */
622570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    struct _xmlSchemaType *redef; /* Deprecated; not used */
623ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    int recurse; /* Obsolete */
624570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    xmlSchemaAttributeLinkPtr *attributeUses; /* Deprecated; not used */
6253646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlSchemaWildcardPtr attributeWildcard;
626570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    int builtInType; /* Type of built-in types. */
627570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    xmlSchemaTypeLinkPtr memberTypes; /* member-types if a union type. */
628ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaFacetLinkPtr facetSet; /* All facets (incl. inherited) */
629570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *refPrefix; /* Deprecated; not used */
630570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    xmlSchemaTypePtr contentTypeDef; /* Used for the simple content of complex types.
631570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik                                        Could we use @subtypes for this? */
632570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    xmlRegexpPtr contModel; /* Holds the automaton of the content model */
63331113c7e86e39f3f5f0a84c235f2346f64746001Kasimier T. Buchcik    const xmlChar *targetNamespace;
634570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    void *attrUses;
6354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
6364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
63760f394e96df5022a6145505bfbeb99815f65e7daWilliam M. Brack/*
638a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * xmlSchemaElement:
6394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An element definition.
6404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard *
6414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of
6424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * structures must be kept similar
6434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
644a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
645a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_NILLABLE:
646a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
647a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is nillable
648a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
649876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_NILLABLE        1 << 0
650a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
651a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_GLOBAL:
652a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
653a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is global
654a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
655876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_GLOBAL                1 << 1
656a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
657a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_DEFAULT:
658a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
659a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element has a default value
660a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
661876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_DEFAULT        1 << 2
662a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
663a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_FIXED:
664a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
665a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element has a fixed value
666a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
667876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_FIXED                1 << 3
668a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
669a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_ABSTRACT:
670a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
671a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is abstract
672a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
673876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_ABSTRACT        1 << 4
674a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
675a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_TOPLEVEL:
676a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
677a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is top level
6783646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead
679a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
680876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_TOPLEVEL        1 << 5
681a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
682a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_REF:
683a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
684a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is a reference to a type
685a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
686876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_REF                1 << 6
687be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard/**
688be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard * XML_SCHEMAS_ELEM_NSDEFAULT:
689be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard *
690be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard * allow elements in no namespace
69101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Obsolete, not used anymore.
692be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard */
693876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_NSDEFAULT        1 << 7
694c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
69521e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_ELEM_INTERNAL_RESOLVED:
696c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
697c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * this is set when "type", "ref", "substitutionGroup"
698c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * references have been resolved.
699c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
700876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_INTERNAL_RESOLVED        1 << 8
701c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard /**
70221e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_ELEM_CIRCULAR:
703c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
704c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * a helper flag for the search of circular references.
705c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
706876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_CIRCULAR        1 << 9
707c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
708c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_ELEM_BLOCK_ABSENT:
709c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
710c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the "block" attribute is absent
711c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
712876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_BLOCK_ABSENT        1 << 10
713c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
714c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_ELEM_BLOCK_EXTENSION:
715c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
716c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * disallowed substitutions are absent
717c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
718876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_BLOCK_EXTENSION        1 << 11
719c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
720c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_ELEM_BLOCK_RESTRICTION:
721c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
722c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * disallowed substitutions: "restriction"
723c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
724876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_BLOCK_RESTRICTION        1 << 12
725c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
726c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION:
727c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
728c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * disallowed substitutions: "substituion"
729c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
730876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION        1 << 13
731c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
732c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_ELEM_FINAL_ABSENT:
733c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
734c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * substitution group exclusions are absent
735c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
736876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_FINAL_ABSENT        1 << 14
737c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
73821e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_ELEM_FINAL_EXTENSION:
739c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
740c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * substitution group exclusions: "extension"
741c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
742876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_FINAL_EXTENSION        1 << 15
743c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
74421e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_ELEM_FINAL_RESTRICTION:
745c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
746c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * substitution group exclusions: "restriction"
747c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
748876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_FINAL_RESTRICTION        1 << 16
7491a99a39745c82d4ca1b5098efb5dc1066a2ddc15Kasimier T. Buchcik/**
7501a99a39745c82d4ca1b5098efb5dc1066a2ddc15Kasimier T. Buchcik * XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD:
7511a99a39745c82d4ca1b5098efb5dc1066a2ddc15Kasimier T. Buchcik *
7521a99a39745c82d4ca1b5098efb5dc1066a2ddc15Kasimier T. Buchcik * the declaration is a substitution group head
7531a99a39745c82d4ca1b5098efb5dc1066a2ddc15Kasimier T. Buchcik */
7541a99a39745c82d4ca1b5098efb5dc1066a2ddc15Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD        1 << 17
7554efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik/**
7564efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * XML_SCHEMAS_ELEM_INTERNAL_CHECKED:
7574efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik *
7584efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * this is set when the elem decl has been checked against
7594efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * all constraints
7604efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik */
7614efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_INTERNAL_CHECKED        1 << 18
7624255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
7634255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaElement xmlSchemaElement;
7644255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaElement *xmlSchemaElementPtr;
7654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaElement {
766ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaTypeType type; /* The kind of type */
767ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    struct _xmlSchemaType *next; /* Not used? */
768be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *name;
769570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *id; /* Deprecated; not used */
770570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *ref; /* Deprecated; not used */
771570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *refNs; /* Deprecated; not used */
7724255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
773c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard    xmlSchemaTypePtr subtypes; /* the type definition */
7744255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAttributePtr attributes;
7754255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlNodePtr node;
776570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    int minOccurs; /* Deprecated; not used */
777570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    int maxOccurs; /* Deprecated; not used */
7784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
7794255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    int flags;
780be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *targetNamespace;
781be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *namedType;
782be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *namedTypeNs;
783be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *substGroup;
784be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *substGroupNs;
785be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *scope;
786ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *value; /* The original value of the value constraint. */
787ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    struct _xmlSchemaElement *refDecl; /* This will now be used for the
788ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik                                          substitution group affiliation */
789ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlRegexpPtr contModel; /* Obsolete for WXS, maybe used for RelaxNG */
79088c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard    xmlSchemaContentType contentType;
791570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    const xmlChar *refPrefix; /* Deprecated; not used */
792ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaValPtr defVal; /* The compiled value contraint. */
793ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    void *idcs; /* The identity-constraint defs */
7944255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
7954255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
796a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/*
797a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_UNKNOWN:
7984255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard *
799a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * unknown facet handling
8004255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
801876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FACET_UNKNOWN        0
802a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/*
803a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_PRESERVE:
804a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
805a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * preserve the type of the facet
806a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
807876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FACET_PRESERVE        1
808a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/*
809a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_REPLACE:
810a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
811a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * replace the type of the facet
812a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
813876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FACET_REPLACE        2
814a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/*
815a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_COLLAPSE:
816a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
817a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * collapse the types of the facet
818a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
819876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FACET_COLLAPSE        3
820a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
821a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * A facet definition.
822a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
8234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaFacet {
824876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    xmlSchemaTypeType type;        /* The kind of type */
8254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */
826ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *value; /* The original value */
827ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *id; /* Obsolete */
8284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
8294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlNodePtr node;
830ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    int fixed; /* XML_SCHEMAS_FACET_PRESERVE, etc. */
8314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    int whitespace;
832ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaValPtr val; /* The compiled value */
833ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlRegexpPtr    regexp; /* The regex for patterns */
8344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
8354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
8364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/**
8374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * A notation definition.
8384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
8394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaNotation xmlSchemaNotation;
8404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaNotation *xmlSchemaNotationPtr;
8414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaNotation {
842570faa57c4df4d34d7f5773c301fa2d979aada9aKasimier T. Buchcik    xmlSchemaTypeType type; /* The kind of type */
843be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *name;
8444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
845be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *identifier;
84631113c7e86e39f3f5f0a84c235f2346f64746001Kasimier T. Buchcik    const xmlChar *targetNamespace;
8474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
8484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
84922c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik/*
850ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik* TODO: Actually all those flags used for the schema should sit
85122c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik* on the schema parser context, since they are used only
85222c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik* during parsing an XML schema document, and not available
85322c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik* on the component level as per spec.
85422c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik*/
8554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/**
856a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_QUALIF_ELEM:
857a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
85822c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik * Reflects elementFormDefault == qualified in
85922c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik * an XML schema document.
8604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
861876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_QUALIF_ELEM                1 << 0
862a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
863a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_QUALIF_ATTR:
864a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
86522c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik * Reflects attributeFormDefault == qualified in
86622c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik * an XML schema document.
867a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
868876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_QUALIF_ATTR            1 << 1
86901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
87001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_FINAL_DEFAULT_EXTENSION:
87101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
872c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema has "extension" in the set of finalDefault.
87301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
874876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FINAL_DEFAULT_EXTENSION        1 << 2
87501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
87601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION:
87701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
878c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema has "restriction" in the set of finalDefault.
87901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
880876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION            1 << 3
88101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
88201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_FINAL_DEFAULT_LIST:
88301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
884c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the cshema has "list" in the set of finalDefault.
88501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
886876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FINAL_DEFAULT_LIST            1 << 4
88701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
88801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_FINAL_DEFAULT_UNION:
88901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
890c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema has "union" in the set of finalDefault.
89101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
892876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FINAL_DEFAULT_UNION            1 << 5
893a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
894c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION:
895c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
896c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema has "extension" in the set of blockDefault.
897c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
898876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION            1 << 6
899c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
900c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION:
901c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
902c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema has "restriction" in the set of blockDefault.
903c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
904876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION            1 << 7
905c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
906c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION:
907c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
908c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema has "substitution" in the set of blockDefault.
909c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
910876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION            1 << 8
911c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
912c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_INCLUDING_CONVERT_NS:
913c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
914c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema is currently including an other schema with
915c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * no target namespace.
916c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
917876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_INCLUDING_CONVERT_NS            1 << 9
918c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
919a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * _xmlSchema:
920a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
921a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * A Schemas definition
922a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
9234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchema {
924ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *name; /* schema name */
925ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *targetNamespace; /* the target namespace */
926be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *version;
927ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *id; /* Obsolete */
9284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlDocPtr doc;
9294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
9304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    int flags;
9314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
9324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlHashTablePtr typeDecl;
9334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlHashTablePtr attrDecl;
9344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlHashTablePtr attrgrpDecl;
9354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlHashTablePtr elemDecl;
9364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlHashTablePtr notaDecl;
93710b6da4aa5111bb420201d8286d22b1e9ce139c0Daniel Veillard
93810b6da4aa5111bb420201d8286d22b1e9ce139c0Daniel Veillard    xmlHashTablePtr schemasImports;
9395f7f991ab7055c1a96aed0127cebfa22a180c181Daniel Veillard
940876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    void *_private;        /* unused by the library for users or bindings */
941a84c0b30c411afe3b55e84ecce99ba0d42c39e3eDaniel Veillard    xmlHashTablePtr groupDecl;
942be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    xmlDictPtr      dict;
943bd2904b9c3ff584222f4995226c3007c815eea61Daniel Veillard    void *includes;     /* the includes, this is opaque for now */
944876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    int preserve;        /* whether to free the document */
94587876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik    int counter; /* used to give ononymous components unique names */
946ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlHashTablePtr idcDef; /* All identity-constraint defs. */
947ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    void *volatiles; /* Obsolete */
9484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
9494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
950876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. BuchcikXMLPUBFUN void XMLCALL         xmlSchemaFreeType        (xmlSchemaTypePtr type);
951876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. BuchcikXMLPUBFUN void XMLCALL         xmlSchemaFreeWildcard(xmlSchemaWildcardPtr wildcard);
9524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
9534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef __cplusplus
9544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}
9554255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif
9564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
9574255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif /* LIBXML_SCHEMAS_ENABLED */
9584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif /* __XML_SCHEMA_INTERNALS_H__ */
959