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