schemasInternals.h revision ef3d07d8097c216c86fa76d6343a8be572d2860c
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
54255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard *
6be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Copy: See Copyright for the status of this software.
74255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard *
8be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Author: Daniel Veillard
94255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
114255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifndef __XML_SCHEMA_INTERNALS_H__
134255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#define __XML_SCHEMA_INTERNALS_H__
144255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#include <libxml/xmlversion.h>
167ae91bcd9e94946a7be41290cb67ffc9c2cf0a9fIgor Zlatkovic
174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef LIBXML_SCHEMAS_ENABLED
184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#include <libxml/xmlregexp.h>
208326e73bc163e15fd7b5264c0cc6cf2480723869Daniel Veillard#include <libxml/hash.h>
21be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard#include <libxml/dict.h>
224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef __cplusplus
244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardextern "C" {
254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif
264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
2701fa6156e51259229470f40619af93e915b4bc94Daniel Veillardtypedef enum {
2801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_UNKNOWN = 0,
2901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_STRING,
3001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_NORMSTRING,
3101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_DECIMAL,
3201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_TIME,
3301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_GDAY,
3401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_GMONTH,
3501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_GMONTHDAY,
3601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_GYEAR,
3701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_GYEARMONTH,
3801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_DATE,
3901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_DATETIME,
4001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_DURATION,
4101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_FLOAT,
4201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_DOUBLE,
4301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_BOOLEAN,
4401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_TOKEN,
4501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_LANGUAGE,
4601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_NMTOKEN,
47876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    XML_SCHEMAS_NMTOKENS,
4801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_NAME,
4901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_QNAME,
5001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_NCNAME,
5101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_ID,
5201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_IDREF,
53876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    XML_SCHEMAS_IDREFS,
5401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_ENTITY,
55876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    XML_SCHEMAS_ENTITIES,
5601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_NOTATION,
5701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_ANYURI,
5801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_INTEGER,
5901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_NPINTEGER,
6001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_NINTEGER,
6101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_NNINTEGER,
6201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_PINTEGER,
6301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_INT,
6401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_UINT,
6501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_LONG,
6601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_ULONG,
6701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_SHORT,
6801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_USHORT,
6901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_BYTE,
7001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_UBYTE,
7101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_HEXBINARY,
7201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_BASE64BINARY,
7301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMAS_ANYTYPE,
74876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    XML_SCHEMAS_ANYSIMPLETYPE
7501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard} xmlSchemaValType;
764255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
774255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/*
784255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * XML Schemas defines multiple type of types.
794255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
804255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef enum {
8101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    XML_SCHEMA_TYPE_BASIC = 1, /* A built-in datatype */
824255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_ANY,
834255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_FACET,
844255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_SIMPLE,
854255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_COMPLEX,
864efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik    XML_SCHEMA_TYPE_SEQUENCE = 6,
874255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_CHOICE,
884255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_ALL,
894255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_SIMPLE_CONTENT,
904255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_COMPLEX_CONTENT,
914255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_UR,
924255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_RESTRICTION,
934255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_EXTENSION,
944255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_ELEMENT,
954255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_ATTRIBUTE,
9613e04c6c12007d30ae7e007e931e55e717a5a73fDaniel Veillard    XML_SCHEMA_TYPE_ATTRIBUTEGROUP,
974255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_GROUP,
984255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_NOTATION,
994255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_LIST,
1004255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_TYPE_UNION,
101e709195e355fb88da62d31720dc5cbe7f0a77ecbWilliam M. Brack    XML_SCHEMA_TYPE_ANY_ATTRIBUTE,
102e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik    XML_SCHEMA_TYPE_IDC_UNIQUE,
103e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik    XML_SCHEMA_TYPE_IDC_KEY,
104e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik    XML_SCHEMA_TYPE_IDC_KEYREF,
1054efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik    XML_SCHEMA_TYPE_PARTICLE = 25,
1064255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_MININCLUSIVE = 1000,
1074255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_MINEXCLUSIVE,
1084255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_MAXINCLUSIVE,
1094255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_MAXEXCLUSIVE,
1104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_TOTALDIGITS,
1114255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_FRACTIONDIGITS,
1124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_PATTERN,
1134255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_ENUMERATION,
1144255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_WHITESPACE,
1154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_LENGTH,
1164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_FACET_MAXLENGTH,
117256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik    XML_SCHEMA_FACET_MINLENGTH,
118256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik    XML_SCHEMA_EXTRA_QNAMEREF = 2000
1194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} xmlSchemaTypeType;
1204255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
1214255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef enum {
1224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_CONTENT_UNKNOWN = 0,
1234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_CONTENT_EMPTY = 1,
1244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_CONTENT_ELEMENTS,
1254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_CONTENT_MIXED,
1264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    XML_SCHEMA_CONTENT_SIMPLE,
127ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, /* Obsolete */
12888c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard    XML_SCHEMA_CONTENT_BASIC,
12988c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard    XML_SCHEMA_CONTENT_ANY
1304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard} xmlSchemaContentType;
1314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
1324255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaVal xmlSchemaVal;
1334255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaVal *xmlSchemaValPtr;
1344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
1354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaType xmlSchemaType;
1364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaType *xmlSchemaTypePtr;
1374255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
1384255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaFacet xmlSchemaFacet;
1394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaFacet *xmlSchemaFacetPtr;
1404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
1414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/**
1424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * Annotation
1434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
1444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAnnot xmlSchemaAnnot;
1454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAnnot *xmlSchemaAnnotPtr;
1464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAnnot {
1474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    struct _xmlSchemaAnnot *next;
1484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlNodePtr content;         /* the annotation */
1494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
1504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
1514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/**
1521e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * XML_SCHEMAS_ANYATTR_SKIP:
1531e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard *
1541e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * Skip unknown attribute from validation
15501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Obsolete, not used anymore.
1564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
157876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ANYATTR_SKIP        1
1581e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard/**
1591e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * XML_SCHEMAS_ANYATTR_LAX:
1601e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard *
1611e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * Ignore validation non definition on attributes
16201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Obsolete, not used anymore.
1631e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard */
164876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ANYATTR_LAX                2
1651e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard/**
1661e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * XML_SCHEMAS_ANYATTR_STRICT:
1671e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard *
1681e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * Apply strict validation rules on attributes
16901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Obsolete, not used anymore.
1701e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard */
171876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ANYATTR_STRICT        3
1723646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
1733646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_ANY_SKIP:
1743646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
175876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik * Skip unknown attribute from validation
1763646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
1773646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_ANY_SKIP        1
1783646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
1793646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_ANY_LAX:
1803646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
18101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Used by wildcards.
18201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Validate if type found, don't worry if not found
1833646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
1843646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_ANY_LAX                2
1853646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
1863646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_ANY_STRICT:
1873646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
18801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Used by wildcards.
18901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Apply strict validation rules
1903646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
1913646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_ANY_STRICT        3
192be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard/**
193c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard * XML_SCHEMAS_ATTR_USE_PROHIBITED:
194c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard *
19501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Used by wildcards.
196c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard * The attribute is prohibited.
197c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard */
198c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard#define XML_SCHEMAS_ATTR_USE_PROHIBITED 0
199c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard/**
200c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard * XML_SCHEMAS_ATTR_USE_REQUIRED:
201c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard *
202c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard * The attribute is required.
203c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard */
204c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard#define XML_SCHEMAS_ATTR_USE_REQUIRED 1
205c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard/**
206c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard * XML_SCHEMAS_ATTR_USE_OPTIONAL:
207c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard *
208c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard * The attribute is optional.
209c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard */
210c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard#define XML_SCHEMAS_ATTR_USE_OPTIONAL 2
2113646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
21221e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_ATTR_GLOBAL:
2133646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
2143646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * allow elements in no namespace
2153646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
2163646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_ATTR_GLOBAL        1 << 0
217c85d0fec52dff78cdbf09d9ba26e00986d7e1e0eDaniel Veillard/**
218be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard * XML_SCHEMAS_ATTR_NSDEFAULT:
219be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard *
220be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard * allow elements in no namespace
221be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard */
222876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ATTR_NSDEFAULT        1 << 7
223c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
22487876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * XML_SCHEMAS_ATTR_INTERNAL_RESOLVED:
225c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
226876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik * this is set when the "type" and "ref" references
227c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * have been resolved.
228c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
229876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ATTR_INTERNAL_RESOLVED        1 << 8
230c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
231c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_ATTR_FIXED:
232c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
233c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the attribute has a fixed value
234c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
235876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ATTR_FIXED        1 << 9
236be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard
2371e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard/**
2381e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * xmlSchemaAttribute:
2391e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard * An attribute definition.
2401e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard */
2411e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard
2424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAttribute xmlSchemaAttribute;
2434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAttribute *xmlSchemaAttributePtr;
2444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAttribute {
245ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaTypeType type;
246ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    struct _xmlSchemaAttribute *next; /* the next attribute ... */
247c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard    const xmlChar *name; /* name of the declaration or empty if particle */
248be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *id;
249c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard    const xmlChar *ref; /* the local name of the attribute decl. if a particle */
250c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard    const xmlChar *refNs; /* the ns URI of the attribute decl. if a particle */
251c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard    const xmlChar *typeName; /* the local name of the type definition */
252c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard    const xmlChar *typeNs; /* the ns URI of the type definition */
2534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
2544255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
255ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaTypePtr base; /* Obsolete, */
2564255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    int occurs;
257ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *defValue; /* The original value of the value constraint */
258c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard    xmlSchemaTypePtr subtypes; /* the type definition */
25975bb3bbf25e5ddaf5e013978c3b001de02c959aaDaniel Veillard    xmlNodePtr node;
260876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    const xmlChar *targetNamespace;
261be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    int flags;
262ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *refPrefix; /* Obsolete */
263ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaValPtr defVal; /* The compiled value constraint */
26487876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik    xmlSchemaAttributePtr refDecl;
2654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
2664255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
2674255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/**
2683646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * xmlSchemaAttributeLink:
2693646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * Used to build a list of attribute uses on complexType definitions.
270ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * TODO: Extend this to work as an "attribute use".
2713646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
2723646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardtypedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink;
2733646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardtypedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr;
2743646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardstruct _xmlSchemaAttributeLink {
2753646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    struct _xmlSchemaAttributeLink *next;/* the next attribute link ... */
2763646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    struct _xmlSchemaAttribute *attr;/* the linked attribute */
2773646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard};
2783646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard
2793646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
2803646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_WILDCARD_COMPLETE:
2813646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
2823646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * If the wildcard is complete.
2833646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
2843646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_WILDCARD_COMPLETE 1 << 0
2853646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard
2863646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
2873646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * xmlSchemaCharValueLink:
2883646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * Used to build a list of namespaces on wildcards.
2893646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
2903646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardtypedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs;
2913646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardtypedef xmlSchemaWildcardNs *xmlSchemaWildcardNsPtr;
2923646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardstruct _xmlSchemaWildcardNs {
2933646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    struct _xmlSchemaWildcardNs *next;/* the next constraint link ... */
2943646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    const xmlChar *value;/* the value */
2953646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard};
2963646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard
2973646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
2983646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * xmlSchemaWildcard.
2993646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * A wildcard.
3003646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
3013646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardtypedef struct _xmlSchemaWildcard xmlSchemaWildcard;
3023646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardtypedef xmlSchemaWildcard *xmlSchemaWildcardPtr;
3033646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillardstruct _xmlSchemaWildcard {
3043646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlSchemaTypeType type;        /* The kind of type */
3053646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    const xmlChar *id;
3063646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlSchemaAnnotPtr annot;
3073646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlNodePtr node;
308ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    int minOccurs; /* Obsolete; this goes into particles */
309ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    int maxOccurs; /* Obsolete; this goes into particles */
3103646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    int processContents;
3113646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    int any; /* Indicates if the ns constraint is of ##any */
3123646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlSchemaWildcardNsPtr nsSet; /* The list of allowed namespaces */
3133646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlSchemaWildcardNsPtr negNsSet; /* The negated namespace */
3143646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    int flags;
3153646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard};
3163646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard
3173646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
3183646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED:
3193646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
3203646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * The attribute wildcard has been already builded.
3213646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
3223646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED 1 << 0
3233646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
3243646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_ATTRGROUP_GLOBAL:
3253646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
3263646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * The attribute wildcard has been already builded.
3273646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
3283646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_ATTRGROUP_GLOBAL 1 << 1
329383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik/**
330383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik * XML_SCHEMAS_ATTRGROUP_MARKED:
331383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik *
332383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik * Marks the attr group as marked; used for circular checks.
333383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik */
334383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik#define XML_SCHEMAS_ATTRGROUP_MARKED 1 << 2
3353646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard
3363646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
337ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * XML_SCHEMAS_ATTRGROUP_REDEFINED:
338ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik *
339ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * The attr group was redefined.
340ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik */
341ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik#define XML_SCHEMAS_ATTRGROUP_REDEFINED 1 << 3
342ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik
343ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik/**
3444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An attribute group definition.
3454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard *
3464255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures
3474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * must be kept similar
3484255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
3494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup;
3504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr;
3514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaAttributeGroup {
352876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    xmlSchemaTypeType type;        /* The kind of type */
3534255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */
354be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *name;
355be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *id;
356be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *ref;
357be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *refNs;
3584255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
3594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
3604255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAttributePtr attributes;
36175bb3bbf25e5ddaf5e013978c3b001de02c959aaDaniel Veillard    xmlNodePtr node;
3623646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    int flags;
3633646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlSchemaWildcardPtr attributeWildcard;
364ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *refPrefix; /* Obsolete */
365383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik    xmlSchemaAttributeGroupPtr refItem; /* The referenced attribute group */
36631113c7e86e39f3f5f0a84c235f2346f64746001Kasimier T. Buchcik    const xmlChar *targetNamespace;
3674255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
3684255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
36901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
37001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * xmlSchemaTypeLink:
37101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Used to build a list of types (e.g. member types of
37201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * simpleType with variety "union").
37301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
37401fa6156e51259229470f40619af93e915b4bc94Daniel Veillardtypedef struct _xmlSchemaTypeLink xmlSchemaTypeLink;
37501fa6156e51259229470f40619af93e915b4bc94Daniel Veillardtypedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr;
37601fa6156e51259229470f40619af93e915b4bc94Daniel Veillardstruct _xmlSchemaTypeLink {
37701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    struct _xmlSchemaTypeLink *next;/* the next type link ... */
378ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaTypePtr type;/* the linked type */
37901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard};
38001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard
38101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
38201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * xmlSchemaFacetLink:
38301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Used to build a list of facets.
38401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
38501fa6156e51259229470f40619af93e915b4bc94Daniel Veillardtypedef struct _xmlSchemaFacetLink xmlSchemaFacetLink;
38601fa6156e51259229470f40619af93e915b4bc94Daniel Veillardtypedef xmlSchemaFacetLink *xmlSchemaFacetLinkPtr;
38701fa6156e51259229470f40619af93e915b4bc94Daniel Veillardstruct _xmlSchemaFacetLink {
38801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    struct _xmlSchemaFacetLink *next;/* the next facet link ... */
38901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    xmlSchemaFacetPtr facet;/* the linked facet */
39001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard};
3914255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
3924255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/**
393a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_TYPE_MIXED:
394a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
395a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element content type is mixed
3964255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
397876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_MIXED                1 << 0
3983646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
3993646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION:
4003646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
4013646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * the simple or complex type has a derivation method of "extension".
4023646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
4033646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION                1 << 1
4043646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
4053646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION:
4063646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
4073646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * the simple or complex type has a derivation method of "restriction".
4083646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
4093646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION                1 << 2
4103646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
4113646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_TYPE_GLOBAL:
4123646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
4133646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * the type is global
4143646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
4153646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard#define XML_SCHEMAS_TYPE_GLOBAL                1 << 3
4163646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard/**
4173646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD:
4183646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard *
4193646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * the complexType owns an attribute wildcard, i.e.
4203646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * it can be freed by the complexType
4213646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard */
422256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD    1 << 4 /* Obsolete. */
42301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
42401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_VARIETY_ABSENT:
42501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
42601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType has a variety of "absent".
427ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * TODO: Actually not necessary :-/, since if
428ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * none of the variety flags occur then it's
429ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * automatically absent.
43001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
43101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_VARIETY_ABSENT    1 << 5
43201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
43301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_VARIETY_LIST:
43401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
43501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType has a variety of "list".
43601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
43701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_VARIETY_LIST    1 << 6
43801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
43901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_VARIETY_UNION:
44001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
44101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType has a variety of "union".
44201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
44301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_VARIETY_UNION    1 << 7
44401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
44501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_VARIETY_ATOMIC:
44601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
44701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType has a variety of "union".
44801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
44901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_VARIETY_ATOMIC    1 << 8
45001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
45101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_FINAL_EXTENSION:
45201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
45301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the complexType has a final of "extension".
45401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
45501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_FINAL_EXTENSION    1 << 9
45601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
45701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_FINAL_RESTRICTION:
45801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
45901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType/complexType has a final of "restriction".
46001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
46101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_FINAL_RESTRICTION    1 << 10
46201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
46301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_FINAL_LIST:
46401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
46501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType has a final of "list".
46601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
46701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_FINAL_LIST    1 << 11
46801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
46901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_TYPE_FINAL_UNION:
47001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
47101fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * the simpleType has a final of "union".
47201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
47301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_FINAL_UNION    1 << 12
47401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
47521e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_TYPE_FINAL_DEFAULT:
47601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
47721e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * the simpleType has a final of "default".
47801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
47901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_FINAL_DEFAULT    1 << 13
48001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
48121e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE:
48201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
48321e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * Marks the item as a builtin primitive.
48401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
48501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard#define XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE    1 << 14
486383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik/**
48721e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_TYPE_MARKED:
488383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik *
489383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik * Marks the item as marked; used for circular checks.
490383434b2f70423f49dfc95e562a7f3d53950ea4bKasimier T. Buchcik */
491876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_MARKED        1 << 16
49287876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik/**
49387876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * XML_SCHEMAS_TYPE_BLOCK_DEFAULT:
49487876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik *
49587876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * the complexType did not specify 'block' so use the default of the
49687876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * <schema> item.
49787876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik */
49887876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik#define XML_SCHEMAS_TYPE_BLOCK_DEFAULT    1 << 17
49987876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik/**
50087876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * XML_SCHEMAS_TYPE_BLOCK_EXTENSION:
50187876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik *
50287876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * the complexType has a 'block' of "extension".
50387876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik */
50487876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik#define XML_SCHEMAS_TYPE_BLOCK_EXTENSION    1 << 18
50587876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik/**
50621e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_TYPE_BLOCK_RESTRICTION:
50787876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik *
50887876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * the complexType has a 'block' of "restriction".
50987876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik */
51087876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik#define XML_SCHEMAS_TYPE_BLOCK_RESTRICTION    1 << 19
51187876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik/**
51287876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * XML_SCHEMAS_TYPE_ABSTRACT:
51387876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik *
51487876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik * the simple/complexType is abstract.
51587876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik */
51687876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik#define XML_SCHEMAS_TYPE_ABSTRACT    1 << 20
517e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik/**
518e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik * XML_SCHEMAS_TYPE_FACETSNEEDVALUE:
519e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik *
520e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik * indicates if the facets need a computed value
521e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik */
522e8a550b3928b35d5069a41df8776d10f340e4c34Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_FACETSNEEDVALUE    1 << 21
523256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik/**
524256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik * XML_SCHEMAS_TYPE_INTERNAL_RESOLVED:
525256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik *
526256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik * indicates that the type was typefixed
527256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik */
528256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED    1 << 22
529256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik/**
530256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik * XML_SCHEMAS_TYPE_INTERNAL_INVALID:
531256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik *
532256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik * indicates that the type is invalid
533256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik */
534256401b2bd89118c3fcfd218c881c13a4073e137Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_INTERNAL_INVALID    1 << 23
5354efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik/**
5364efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE:
5374efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik *
5384efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * a whitespace-facet value of "preserve"
5394efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik */
5404efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE    1 << 24
5414efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik/**
5424efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * XML_SCHEMAS_TYPE_WHITESPACE_REPLACE:
5434efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik *
5444efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * a whitespace-facet value of "replace"
5454efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik */
5464efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_WHITESPACE_REPLACE    1 << 25
5474efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik/**
5484efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE:
5494efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik *
5504efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * a whitespace-facet value of "collapse"
5514efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik */
5524efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE    1 << 26
5534efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik/**
5544efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * XML_SCHEMAS_TYPE_HAS_FACETS:
5554efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik *
5564efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * has facets
5574efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik */
5584efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_HAS_FACETS    1 << 27
5594efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik/**
5604efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * XML_SCHEMAS_TYPE_NORMVALUENEEDED:
5614efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik *
5624efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * indicates if the facets (pattern) need a normalized value
5634efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik */
5644efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_NORMVALUENEEDED    1 << 28
5654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
566a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
56722c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik * XML_SCHEMAS_TYPE_FIXUP_1:
56822c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik *
56922c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik * First stage of fixup was done.
57022c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik */
57122c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik#define XML_SCHEMAS_TYPE_FIXUP_1    1 << 29
57222c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik
57322c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik/**
574ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * XML_SCHEMAS_TYPE_REDEFINED:
575ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik *
576ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * The type was redefined.
577ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik */
578ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik#define XML_SCHEMAS_TYPE_REDEFINED    1 << 30
579ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik/**
580ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * XML_SCHEMAS_TYPE_REDEFINING:
581ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik *
582ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik * The type redefines an other type.
583ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik */
584ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik/* #define XML_SCHEMAS_TYPE_REDEFINING    1 << 31 */
585ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik
586ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik/**
587a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * _xmlSchemaType:
588a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
589a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * Schemas type definition.
590a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
5914255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaType {
592876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    xmlSchemaTypeType type;        /* The kind of type */
5934255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    struct _xmlSchemaType *next;/* the next type if in a sequence ... */
594be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *name;
595ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *id; /* Obsolete; the ID is not part of the component */
596ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *ref; /* TODO: Obsolete ? */
597ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *refNs; /* TODO: Obsolete ? */
5984255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
5994255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaTypePtr subtypes;
600ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaAttributePtr attributes; /* Explicitely declared attributes or refs */
6014255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlNodePtr node;
602ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    int minOccurs; /* Obsolete; this goes into particles */
603ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    int maxOccurs; /* Obsolete; this goes into particles */
6044255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
6054255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    int flags;
6064255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaContentType contentType;
607ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *base; /* Base type's local name */
608ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *baseNs; /* Base type's target namespace */
609ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaTypePtr baseType; /* The base type component */
610ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaFacetPtr facets; /* Local facets */
611ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    struct _xmlSchemaType *redef; /* Obsolete */
612ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    int recurse; /* Obsolete */
613ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaAttributeLinkPtr attributeUses; /* Attribute uses (incl. inherited) */
6143646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard    xmlSchemaWildcardPtr attributeWildcard;
61501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    int builtInType;
61601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard    xmlSchemaTypeLinkPtr memberTypes;
617ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaFacetLinkPtr facetSet; /* All facets (incl. inherited) */
618ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *refPrefix; /* Obsolete */
619c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard    xmlSchemaTypePtr contentTypeDef;
620876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    xmlRegexpPtr contModel;
62131113c7e86e39f3f5f0a84c235f2346f64746001Kasimier T. Buchcik    const xmlChar *targetNamespace;
6224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
6234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
62460f394e96df5022a6145505bfbeb99815f65e7daWilliam M. Brack/*
625a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * xmlSchemaElement:
6264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * An element definition.
6274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard *
6284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of
6294255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * structures must be kept similar
6304255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
631a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
632a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_NILLABLE:
633a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
634a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is nillable
635a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
636876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_NILLABLE        1 << 0
637a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
638a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_GLOBAL:
639a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
640a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is global
641a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
642876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_GLOBAL                1 << 1
643a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
644a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_DEFAULT:
645a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
646a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element has a default value
647a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
648876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_DEFAULT        1 << 2
649a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
650a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_FIXED:
651a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
652a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element has a fixed value
653a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
654876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_FIXED                1 << 3
655a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
656a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_ABSTRACT:
657a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
658a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is abstract
659a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
660876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_ABSTRACT        1 << 4
661a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
662a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_TOPLEVEL:
663a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
664a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is top level
6653646d6463d9977702c1112fd5552fb193f5b295fDaniel Veillard * obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead
666a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
667876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_TOPLEVEL        1 << 5
668a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
669a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_ELEM_REF:
670a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
671a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * the element is a reference to a type
672a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
673876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_REF                1 << 6
674be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard/**
675be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard * XML_SCHEMAS_ELEM_NSDEFAULT:
676be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard *
677be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard * allow elements in no namespace
67801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * Obsolete, not used anymore.
679be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard */
680876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_NSDEFAULT        1 << 7
681c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
68221e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_ELEM_INTERNAL_RESOLVED:
683c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
684c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * this is set when "type", "ref", "substitutionGroup"
685c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * references have been resolved.
686c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
687876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_INTERNAL_RESOLVED        1 << 8
688c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard /**
68921e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_ELEM_CIRCULAR:
690c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
691c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * a helper flag for the search of circular references.
692c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
693876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_CIRCULAR        1 << 9
694c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
695c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_ELEM_BLOCK_ABSENT:
696c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
697c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the "block" attribute is absent
698c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
699876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_BLOCK_ABSENT        1 << 10
700c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
701c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_ELEM_BLOCK_EXTENSION:
702c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
703c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * disallowed substitutions are absent
704c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
705876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_BLOCK_EXTENSION        1 << 11
706c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
707c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_ELEM_BLOCK_RESTRICTION:
708c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
709c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * disallowed substitutions: "restriction"
710c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
711876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_BLOCK_RESTRICTION        1 << 12
712c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
713c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION:
714c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
715c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * disallowed substitutions: "substituion"
716c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
717876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION        1 << 13
718c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
719c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_ELEM_FINAL_ABSENT:
720c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
721c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * substitution group exclusions are absent
722c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
723876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_FINAL_ABSENT        1 << 14
724c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
72521e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_ELEM_FINAL_EXTENSION:
726c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
727c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * substitution group exclusions: "extension"
728c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
729876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_FINAL_EXTENSION        1 << 15
730c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
73121e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * XML_SCHEMAS_ELEM_FINAL_RESTRICTION:
732c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
733c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * substitution group exclusions: "restriction"
734c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
735876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_FINAL_RESTRICTION        1 << 16
7361a99a39745c82d4ca1b5098efb5dc1066a2ddc15Kasimier T. Buchcik/**
7371a99a39745c82d4ca1b5098efb5dc1066a2ddc15Kasimier T. Buchcik * XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD:
7381a99a39745c82d4ca1b5098efb5dc1066a2ddc15Kasimier T. Buchcik *
7391a99a39745c82d4ca1b5098efb5dc1066a2ddc15Kasimier T. Buchcik * the declaration is a substitution group head
7401a99a39745c82d4ca1b5098efb5dc1066a2ddc15Kasimier T. Buchcik */
7411a99a39745c82d4ca1b5098efb5dc1066a2ddc15Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD        1 << 17
7424efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik/**
7434efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * XML_SCHEMAS_ELEM_INTERNAL_CHECKED:
7444efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik *
7454efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * this is set when the elem decl has been checked against
7464efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik * all constraints
7474efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik */
7484efd90d9c3629354fdf404a30f7fdd66f3d7af05Kasimier T. Buchcik#define XML_SCHEMAS_ELEM_INTERNAL_CHECKED        1 << 18
7494255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
7504255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaElement xmlSchemaElement;
7514255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaElement *xmlSchemaElementPtr;
7524255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaElement {
753ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaTypeType type; /* The kind of type */
754ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    struct _xmlSchemaType *next; /* Not used? */
755be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *name;
756ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *id; /* Obsolete */
757ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *ref; /* Obsolete */
758ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *refNs; /* Obsolete */
7594255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
760c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard    xmlSchemaTypePtr subtypes; /* the type definition */
7614255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAttributePtr attributes;
7624255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlNodePtr node;
763ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    int minOccurs; /* Obsolete; this goes into particles. */
764ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    int maxOccurs; /* Obsolete; this goes into particles. */
7654255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
7664255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    int flags;
767be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *targetNamespace;
768be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *namedType;
769be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *namedTypeNs;
770be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *substGroup;
771be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *substGroupNs;
772be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *scope;
773ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *value; /* The original value of the value constraint. */
774ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    struct _xmlSchemaElement *refDecl; /* This will now be used for the
775ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik                                          substitution group affiliation */
776ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlRegexpPtr contModel; /* Obsolete for WXS, maybe used for RelaxNG */
77788c5891a25c1151a89f021e915d9efb7e58bfbf7Daniel Veillard    xmlSchemaContentType contentType;
778ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *refPrefix; /* Obsolete */
779ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaValPtr defVal; /* The compiled value contraint. */
780ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    void *idcs; /* The identity-constraint defs */
7814255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
7824255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
783a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/*
784a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_UNKNOWN:
7854255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard *
786a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * unknown facet handling
7874255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
788876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FACET_UNKNOWN        0
789a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/*
790a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_PRESERVE:
791a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
792a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * preserve the type of the facet
793a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
794876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FACET_PRESERVE        1
795a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/*
796a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_REPLACE:
797a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
798a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * replace the type of the facet
799a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
800876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FACET_REPLACE        2
801a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/*
802a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_FACET_COLLAPSE:
803a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
804a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * collapse the types of the facet
805a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
806876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FACET_COLLAPSE        3
807a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
808a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * A facet definition.
809a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
8104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaFacet {
811876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    xmlSchemaTypeType type;        /* The kind of type */
8124255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */
813ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *value; /* The original value */
814ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *id; /* Obsolete */
8154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
8164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlNodePtr node;
817ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    int fixed; /* XML_SCHEMAS_FACET_PRESERVE, etc. */
8184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    int whitespace;
819ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlSchemaValPtr val; /* The compiled value */
820ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlRegexpPtr    regexp; /* The regex for patterns */
8214255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
8224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
8234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/**
8244255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard * A notation definition.
8254255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
8264255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef struct _xmlSchemaNotation xmlSchemaNotation;
8274255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardtypedef xmlSchemaNotation *xmlSchemaNotationPtr;
8284255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchemaNotation {
829876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    xmlSchemaTypeType type;        /* The kind of type */
830be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *name;
8314255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
832be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *identifier;
83331113c7e86e39f3f5f0a84c235f2346f64746001Kasimier T. Buchcik    const xmlChar *targetNamespace;
8344255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
8354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
83622c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik/*
837ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik* TODO: Actually all those flags used for the schema should sit
83822c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik* on the schema parser context, since they are used only
83922c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik* during parsing an XML schema document, and not available
84022c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik* on the component level as per spec.
84122c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik*/
8424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard/**
843a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_QUALIF_ELEM:
844a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
84522c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik * Reflects elementFormDefault == qualified in
84622c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik * an XML schema document.
8474255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard */
848876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_QUALIF_ELEM                1 << 0
849a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
850a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * XML_SCHEMAS_QUALIF_ATTR:
851a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
85222c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik * Reflects attributeFormDefault == qualified in
85322c0c4651581662c5744c1da33ac0f3a3024c909Kasimier T. Buchcik * an XML schema document.
854a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
855876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_QUALIF_ATTR            1 << 1
85601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
85701fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_FINAL_DEFAULT_EXTENSION:
85801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
859c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema has "extension" in the set of finalDefault.
86001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
861876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FINAL_DEFAULT_EXTENSION        1 << 2
86201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
86301fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION:
86401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
865c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema has "restriction" in the set of finalDefault.
86601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
867876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION            1 << 3
86801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
86901fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_FINAL_DEFAULT_LIST:
87001fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
871c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the cshema has "list" in the set of finalDefault.
87201fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
873876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FINAL_DEFAULT_LIST            1 << 4
87401fa6156e51259229470f40619af93e915b4bc94Daniel Veillard/**
87501fa6156e51259229470f40619af93e915b4bc94Daniel Veillard * XML_SCHEMAS_FINAL_DEFAULT_UNION:
87601fa6156e51259229470f40619af93e915b4bc94Daniel Veillard *
877c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema has "union" in the set of finalDefault.
87801fa6156e51259229470f40619af93e915b4bc94Daniel Veillard */
879876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_FINAL_DEFAULT_UNION            1 << 5
880a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard/**
881c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION:
882c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
883c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema has "extension" in the set of blockDefault.
884c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
885876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION            1 << 6
886c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
887c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION:
888c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
889c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema has "restriction" in the set of blockDefault.
890c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
891876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION            1 << 7
892c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
893c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION:
894c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
895c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema has "substitution" in the set of blockDefault.
896c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
897876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION            1 << 8
898c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
899c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * XML_SCHEMAS_INCLUDING_CONVERT_NS:
900c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard *
901c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * the schema is currently including an other schema with
902c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard * no target namespace.
903c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard */
904876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik#define XML_SCHEMAS_INCLUDING_CONVERT_NS            1 << 9
905c0826a7709eddbf10ade02f0ce80e5d077ac05f6Daniel Veillard/**
906a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * _xmlSchema:
907a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard *
908a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard * A Schemas definition
909a9b66d00b5fbae2381f59c0be4d8c7b8e3c16cf7Daniel Veillard */
9104255d504151db75c17f85192ce74f45dd2d65533Daniel Veillardstruct _xmlSchema {
911ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *name; /* schema name */
912ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *targetNamespace; /* the target namespace */
913be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    const xmlChar *version;
914ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    const xmlChar *id; /* Obsolete */
9154255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlDocPtr doc;
9164255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlSchemaAnnotPtr annot;
9174255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    int flags;
9184255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
9194255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlHashTablePtr typeDecl;
9204255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlHashTablePtr attrDecl;
9214255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlHashTablePtr attrgrpDecl;
9224255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlHashTablePtr elemDecl;
9234255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard    xmlHashTablePtr notaDecl;
92410b6da4aa5111bb420201d8286d22b1e9ce139c0Daniel Veillard
92510b6da4aa5111bb420201d8286d22b1e9ce139c0Daniel Veillard    xmlHashTablePtr schemasImports;
9265f7f991ab7055c1a96aed0127cebfa22a180c181Daniel Veillard
927876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    void *_private;        /* unused by the library for users or bindings */
928a84c0b30c411afe3b55e84ecce99ba0d42c39e3eDaniel Veillard    xmlHashTablePtr groupDecl;
929be9c6320d4ed8d5622322014310555bb88b02a85Daniel Veillard    xmlDictPtr      dict;
930bd2904b9c3ff584222f4995226c3007c815eea61Daniel Veillard    void *includes;     /* the includes, this is opaque for now */
931876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. Buchcik    int preserve;        /* whether to free the document */
93287876407ced312c9b2c8d8b03f988a7dd484a68eKasimier T. Buchcik    int counter; /* used to give ononymous components unique names */
933ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    xmlHashTablePtr idcDef; /* All identity-constraint defs. */
934ef3d07d8097c216c86fa76d6343a8be572d2860cKasimier T. Buchcik    void *volatiles; /* Obsolete */
9354255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard};
9364255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
937876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. BuchcikXMLPUBFUN void XMLCALL         xmlSchemaFreeType        (xmlSchemaTypePtr type);
938876a6db193661509baf40eb5e6f8955235ea9454Kasimier T. BuchcikXMLPUBFUN void XMLCALL         xmlSchemaFreeWildcard(xmlSchemaWildcardPtr wildcard);
9394255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
9404255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#ifdef __cplusplus
9414255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard}
9424255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif
9434255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard
9444255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif /* LIBXML_SCHEMAS_ENABLED */
9454255d504151db75c17f85192ce74f45dd2d65533Daniel Veillard#endif /* __XML_SCHEMA_INTERNALS_H__ */
946