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