Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960/* * Summary: internal interfaces for XML Schemas * Description: internal interfaces for the XML Schemas handling * and schema validity checking * The Schemas development is a Work In Progress. * Some of those interfaces are not guaranteed to be API or ABI stable ! * * Copy: See Copyright for the status of this software. * * Author: Daniel Veillard */
#ifndef __XML_SCHEMA_INTERNALS_H__#define __XML_SCHEMA_INTERNALS_H__
#include <libxml/xmlversion.h>
#ifdef LIBXML_SCHEMAS_ENABLED
#include <libxml/xmlregexp.h>#include <libxml/hash.h>#include <libxml/dict.h>#include <libxml/tree.h>
#ifdef __cplusplusextern "C" {#endif
typedef enum { XML_SCHEMAS_UNKNOWN = 0, XML_SCHEMAS_STRING = 1, XML_SCHEMAS_NORMSTRING = 2, XML_SCHEMAS_DECIMAL = 3, XML_SCHEMAS_TIME = 4, XML_SCHEMAS_GDAY = 5, XML_SCHEMAS_GMONTH = 6, XML_SCHEMAS_GMONTHDAY = 7, XML_SCHEMAS_GYEAR = 8, XML_SCHEMAS_GYEARMONTH = 9, XML_SCHEMAS_DATE = 10, XML_SCHEMAS_DATETIME = 11, XML_SCHEMAS_DURATION = 12, XML_SCHEMAS_FLOAT = 13, XML_SCHEMAS_DOUBLE = 14, XML_SCHEMAS_BOOLEAN = 15, XML_SCHEMAS_TOKEN = 16, XML_SCHEMAS_LANGUAGE = 17, XML_SCHEMAS_NMTOKEN = 18, XML_SCHEMAS_NMTOKENS = 19, XML_SCHEMAS_NAME = 20, XML_SCHEMAS_QNAME = 21, XML_SCHEMAS_NCNAME = 22, XML_SCHEMAS_ID = 23, XML_SCHEMAS_IDREF = 24, XML_SCHEMAS_IDREFS = 25, XML_SCHEMAS_ENTITY = 26, XML_SCHEMAS_ENTITIES = 27, XML_SCHEMAS_NOTATION = 28, XML_SCHEMAS_ANYURI = 29, XML_SCHEMAS_INTEGER = 30, XML_SCHEMAS_NPINTEGER = 31, XML_SCHEMAS_NINTEGER = 32, XML_SCHEMAS_NNINTEGER = 33, XML_SCHEMAS_PINTEGER = 34, XML_SCHEMAS_INT = 35, XML_SCHEMAS_UINT = 36, XML_SCHEMAS_LONG = 37, XML_SCHEMAS_ULONG = 38, XML_SCHEMAS_SHORT = 39, XML_SCHEMAS_USHORT = 40, XML_SCHEMAS_BYTE = 41, XML_SCHEMAS_UBYTE = 42, XML_SCHEMAS_HEXBINARY = 43, XML_SCHEMAS_BASE64BINARY = 44, XML_SCHEMAS_ANYTYPE = 45, XML_SCHEMAS_ANYSIMPLETYPE = 46} xmlSchemaValType;
/* * XML Schemas defines multiple type of types. */typedef enum { XML_SCHEMA_TYPE_BASIC = 1, /* A built-in datatype */ XML_SCHEMA_TYPE_ANY, XML_SCHEMA_TYPE_FACET, XML_SCHEMA_TYPE_SIMPLE, XML_SCHEMA_TYPE_COMPLEX, XML_SCHEMA_TYPE_SEQUENCE = 6, XML_SCHEMA_TYPE_CHOICE, XML_SCHEMA_TYPE_ALL, XML_SCHEMA_TYPE_SIMPLE_CONTENT, XML_SCHEMA_TYPE_COMPLEX_CONTENT, XML_SCHEMA_TYPE_UR, XML_SCHEMA_TYPE_RESTRICTION, XML_SCHEMA_TYPE_EXTENSION, XML_SCHEMA_TYPE_ELEMENT, XML_SCHEMA_TYPE_ATTRIBUTE, XML_SCHEMA_TYPE_ATTRIBUTEGROUP, XML_SCHEMA_TYPE_GROUP, XML_SCHEMA_TYPE_NOTATION, XML_SCHEMA_TYPE_LIST, XML_SCHEMA_TYPE_UNION, XML_SCHEMA_TYPE_ANY_ATTRIBUTE, XML_SCHEMA_TYPE_IDC_UNIQUE, XML_SCHEMA_TYPE_IDC_KEY, XML_SCHEMA_TYPE_IDC_KEYREF, XML_SCHEMA_TYPE_PARTICLE = 25, XML_SCHEMA_TYPE_ATTRIBUTE_USE, XML_SCHEMA_FACET_MININCLUSIVE = 1000, XML_SCHEMA_FACET_MINEXCLUSIVE, XML_SCHEMA_FACET_MAXINCLUSIVE, XML_SCHEMA_FACET_MAXEXCLUSIVE, XML_SCHEMA_FACET_TOTALDIGITS, XML_SCHEMA_FACET_FRACTIONDIGITS, XML_SCHEMA_FACET_PATTERN, XML_SCHEMA_FACET_ENUMERATION, XML_SCHEMA_FACET_WHITESPACE, XML_SCHEMA_FACET_LENGTH, XML_SCHEMA_FACET_MAXLENGTH, XML_SCHEMA_FACET_MINLENGTH, XML_SCHEMA_EXTRA_QNAMEREF = 2000, XML_SCHEMA_EXTRA_ATTR_USE_PROHIB} xmlSchemaTypeType;
typedef enum { XML_SCHEMA_CONTENT_UNKNOWN = 0, XML_SCHEMA_CONTENT_EMPTY = 1, XML_SCHEMA_CONTENT_ELEMENTS, XML_SCHEMA_CONTENT_MIXED, XML_SCHEMA_CONTENT_SIMPLE, XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, /* Obsolete */ XML_SCHEMA_CONTENT_BASIC, XML_SCHEMA_CONTENT_ANY} xmlSchemaContentType;
typedef struct _xmlSchemaVal xmlSchemaVal;typedef xmlSchemaVal *xmlSchemaValPtr;
typedef struct _xmlSchemaType xmlSchemaType;typedef xmlSchemaType *xmlSchemaTypePtr;
typedef struct _xmlSchemaFacet xmlSchemaFacet;typedef xmlSchemaFacet *xmlSchemaFacetPtr;
/** * Annotation */typedef struct _xmlSchemaAnnot xmlSchemaAnnot;typedef xmlSchemaAnnot *xmlSchemaAnnotPtr;struct _xmlSchemaAnnot { struct _xmlSchemaAnnot *next; xmlNodePtr content; /* the annotation */};
/** * XML_SCHEMAS_ANYATTR_SKIP: * * Skip unknown attribute from validation * Obsolete, not used anymore. */#define XML_SCHEMAS_ANYATTR_SKIP 1/** * XML_SCHEMAS_ANYATTR_LAX: * * Ignore validation non definition on attributes * Obsolete, not used anymore. */#define XML_SCHEMAS_ANYATTR_LAX 2/** * XML_SCHEMAS_ANYATTR_STRICT: * * Apply strict validation rules on attributes * Obsolete, not used anymore. */#define XML_SCHEMAS_ANYATTR_STRICT 3/** * XML_SCHEMAS_ANY_SKIP: * * Skip unknown attribute from validation */#define XML_SCHEMAS_ANY_SKIP 1/** * XML_SCHEMAS_ANY_LAX: * * Used by wildcards. * Validate if type found, don't worry if not found */#define XML_SCHEMAS_ANY_LAX 2/** * XML_SCHEMAS_ANY_STRICT: * * Used by wildcards. * Apply strict validation rules */#define XML_SCHEMAS_ANY_STRICT 3/** * XML_SCHEMAS_ATTR_USE_PROHIBITED: * * Used by wildcards. * The attribute is prohibited. */#define XML_SCHEMAS_ATTR_USE_PROHIBITED 0/** * XML_SCHEMAS_ATTR_USE_REQUIRED: * * The attribute is required. */#define XML_SCHEMAS_ATTR_USE_REQUIRED 1/** * XML_SCHEMAS_ATTR_USE_OPTIONAL: * * The attribute is optional. */#define XML_SCHEMAS_ATTR_USE_OPTIONAL 2/** * XML_SCHEMAS_ATTR_GLOBAL: * * allow elements in no namespace */#define XML_SCHEMAS_ATTR_GLOBAL 1 << 0/** * XML_SCHEMAS_ATTR_NSDEFAULT: * * allow elements in no namespace */#define XML_SCHEMAS_ATTR_NSDEFAULT 1 << 7/** * XML_SCHEMAS_ATTR_INTERNAL_RESOLVED: * * this is set when the "type" and "ref" references * have been resolved. */#define XML_SCHEMAS_ATTR_INTERNAL_RESOLVED 1 << 8/** * XML_SCHEMAS_ATTR_FIXED: * * the attribute has a fixed value */#define XML_SCHEMAS_ATTR_FIXED 1 << 9
/** * xmlSchemaAttribute: * An attribute definition. */
typedef struct _xmlSchemaAttribute xmlSchemaAttribute;typedef xmlSchemaAttribute *xmlSchemaAttributePtr;struct _xmlSchemaAttribute { xmlSchemaTypeType type; struct _xmlSchemaAttribute *next; /* the next attribute (not used?) */ const xmlChar *name; /* the name of the declaration */ const xmlChar *id; /* Deprecated; not used */ const xmlChar *ref; /* Deprecated; not used */ const xmlChar *refNs; /* Deprecated; not used */ const xmlChar *typeName; /* the local name of the type definition */ const xmlChar *typeNs; /* the ns URI of the type definition */ xmlSchemaAnnotPtr annot;
xmlSchemaTypePtr base; /* Deprecated; not used */ int occurs; /* Deprecated; not used */ const xmlChar *defValue; /* The initial value of the value constraint */ xmlSchemaTypePtr subtypes; /* the type definition */ xmlNodePtr node; const xmlChar *targetNamespace; int flags; const xmlChar *refPrefix; /* Deprecated; not used */ xmlSchemaValPtr defVal; /* The compiled value constraint */ xmlSchemaAttributePtr refDecl; /* Deprecated; not used */};
/** * xmlSchemaAttributeLink: * Used to build a list of attribute uses on complexType definitions. * WARNING: Deprecated; not used. */typedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink;typedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr;struct _xmlSchemaAttributeLink { struct _xmlSchemaAttributeLink *next;/* the next attribute link ... */ struct _xmlSchemaAttribute *attr;/* the linked attribute */};
/** * XML_SCHEMAS_WILDCARD_COMPLETE: * * If the wildcard is complete. */#define XML_SCHEMAS_WILDCARD_COMPLETE 1 << 0
/** * xmlSchemaCharValueLink: * Used to build a list of namespaces on wildcards. */typedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs;typedef xmlSchemaWildcardNs *xmlSchemaWildcardNsPtr;struct _xmlSchemaWildcardNs { struct _xmlSchemaWildcardNs *next;/* the next constraint link ... */ const xmlChar *value;/* the value */};
/** * xmlSchemaWildcard. * A wildcard. */typedef struct _xmlSchemaWildcard xmlSchemaWildcard;typedef xmlSchemaWildcard *xmlSchemaWildcardPtr;struct _xmlSchemaWildcard { xmlSchemaTypeType type; /* The kind of type */ const xmlChar *id; /* Deprecated; not used */ xmlSchemaAnnotPtr annot; xmlNodePtr node; int minOccurs; /* Deprecated; not used */ int maxOccurs; /* Deprecated; not used */ int processContents; int any; /* Indicates if the ns constraint is of ##any */ xmlSchemaWildcardNsPtr nsSet; /* The list of allowed namespaces */ xmlSchemaWildcardNsPtr negNsSet; /* The negated namespace */ int flags;};
/** * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED: * * The attribute wildcard has been built. */#define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED 1 << 0/** * XML_SCHEMAS_ATTRGROUP_GLOBAL: * * The attribute group has been defined. */#define XML_SCHEMAS_ATTRGROUP_GLOBAL 1 << 1/** * XML_SCHEMAS_ATTRGROUP_MARKED: * * Marks the attr group as marked; used for circular checks. */#define XML_SCHEMAS_ATTRGROUP_MARKED 1 << 2
/** * XML_SCHEMAS_ATTRGROUP_REDEFINED: * * The attr group was redefined. */#define XML_SCHEMAS_ATTRGROUP_REDEFINED 1 << 3/** * XML_SCHEMAS_ATTRGROUP_HAS_REFS: * * Whether this attr. group contains attr. group references. */#define XML_SCHEMAS_ATTRGROUP_HAS_REFS 1 << 4
/** * An attribute group definition. * * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures * must be kept similar */typedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup;typedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr;struct _xmlSchemaAttributeGroup { xmlSchemaTypeType type; /* The kind of type */ struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */ const xmlChar *name; const xmlChar *id; const xmlChar *ref; /* Deprecated; not used */ const xmlChar *refNs; /* Deprecated; not used */ xmlSchemaAnnotPtr annot;
xmlSchemaAttributePtr attributes; /* Deprecated; not used */ xmlNodePtr node; int flags; xmlSchemaWildcardPtr attributeWildcard; const xmlChar *refPrefix; /* Deprecated; not used */ xmlSchemaAttributeGroupPtr refItem; /* Deprecated; not used */ const xmlChar *targetNamespace; void *attrUses;};
/** * xmlSchemaTypeLink: * Used to build a list of types (e.g. member types of * simpleType with variety "union"). */typedef struct _xmlSchemaTypeLink xmlSchemaTypeLink;typedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr;struct _xmlSchemaTypeLink { struct _xmlSchemaTypeLink *next;/* the next type link ... */ xmlSchemaTypePtr type;/* the linked type */};
/** * xmlSchemaFacetLink: * Used to build a list of facets. */typedef struct _xmlSchemaFacetLink xmlSchemaFacetLink;typedef xmlSchemaFacetLink *xmlSchemaFacetLinkPtr;struct _xmlSchemaFacetLink { struct _xmlSchemaFacetLink *next;/* the next facet link ... */ xmlSchemaFacetPtr facet;/* the linked facet */};
/** * XML_SCHEMAS_TYPE_MIXED: * * the element content type is mixed */#define XML_SCHEMAS_TYPE_MIXED 1 << 0/** * XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION: * * the simple or complex type has a derivation method of "extension". */#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION 1 << 1/** * XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION: * * the simple or complex type has a derivation method of "restriction". */#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION 1 << 2/** * XML_SCHEMAS_TYPE_GLOBAL: * * the type is global */#define XML_SCHEMAS_TYPE_GLOBAL 1 << 3/** * XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD: * * the complexType owns an attribute wildcard, i.e. * it can be freed by the complexType */#define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD 1 << 4 /* Obsolete. *//** * XML_SCHEMAS_TYPE_VARIETY_ABSENT: * * the simpleType has a variety of "absent". * TODO: Actually not necessary :-/, since if * none of the variety flags occur then it's * automatically absent. */#define XML_SCHEMAS_TYPE_VARIETY_ABSENT 1 << 5/** * XML_SCHEMAS_TYPE_VARIETY_LIST: * * the simpleType has a variety of "list". */#define XML_SCHEMAS_TYPE_VARIETY_LIST 1 << 6/** * XML_SCHEMAS_TYPE_VARIETY_UNION: * * the simpleType has a variety of "union". */#define XML_SCHEMAS_TYPE_VARIETY_UNION 1 << 7/** * XML_SCHEMAS_TYPE_VARIETY_ATOMIC: * * the simpleType has a variety of "union". */#define XML_SCHEMAS_TYPE_VARIETY_ATOMIC 1 << 8/** * XML_SCHEMAS_TYPE_FINAL_EXTENSION: * * the complexType has a final of "extension". */#define XML_SCHEMAS_TYPE_FINAL_EXTENSION 1 << 9/** * XML_SCHEMAS_TYPE_FINAL_RESTRICTION: * * the simpleType/complexType has a final of "restriction". */#define XML_SCHEMAS_TYPE_FINAL_RESTRICTION 1 << 10/** * XML_SCHEMAS_TYPE_FINAL_LIST: * * the simpleType has a final of "list". */#define XML_SCHEMAS_TYPE_FINAL_LIST 1 << 11/** * XML_SCHEMAS_TYPE_FINAL_UNION: * * the simpleType has a final of "union". */#define XML_SCHEMAS_TYPE_FINAL_UNION 1 << 12/** * XML_SCHEMAS_TYPE_FINAL_DEFAULT: * * the simpleType has a final of "default". */#define XML_SCHEMAS_TYPE_FINAL_DEFAULT 1 << 13/** * XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE: * * Marks the item as a builtin primitive. */#define XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE 1 << 14/** * XML_SCHEMAS_TYPE_MARKED: * * Marks the item as marked; used for circular checks. */#define XML_SCHEMAS_TYPE_MARKED 1 << 16/** * XML_SCHEMAS_TYPE_BLOCK_DEFAULT: * * the complexType did not specify 'block' so use the default of the * <schema> item. */#define XML_SCHEMAS_TYPE_BLOCK_DEFAULT 1 << 17/** * XML_SCHEMAS_TYPE_BLOCK_EXTENSION: * * the complexType has a 'block' of "extension". */#define XML_SCHEMAS_TYPE_BLOCK_EXTENSION 1 << 18/** * XML_SCHEMAS_TYPE_BLOCK_RESTRICTION: * * the complexType has a 'block' of "restriction". */#define XML_SCHEMAS_TYPE_BLOCK_RESTRICTION 1 << 19/** * XML_SCHEMAS_TYPE_ABSTRACT: * * the simple/complexType is abstract. */#define XML_SCHEMAS_TYPE_ABSTRACT 1 << 20/** * XML_SCHEMAS_TYPE_FACETSNEEDVALUE: * * indicates if the facets need a computed value */#define XML_SCHEMAS_TYPE_FACETSNEEDVALUE 1 << 21/** * XML_SCHEMAS_TYPE_INTERNAL_RESOLVED: * * indicates that the type was typefixed */#define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED 1 << 22/** * XML_SCHEMAS_TYPE_INTERNAL_INVALID: * * indicates that the type is invalid */#define XML_SCHEMAS_TYPE_INTERNAL_INVALID 1 << 23/** * XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE: * * a whitespace-facet value of "preserve" */#define XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE 1 << 24/** * XML_SCHEMAS_TYPE_WHITESPACE_REPLACE: * * a whitespace-facet value of "replace" */#define XML_SCHEMAS_TYPE_WHITESPACE_REPLACE 1 << 25/** * XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE: * * a whitespace-facet value of "collapse" */#define XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE 1 << 26/** * XML_SCHEMAS_TYPE_HAS_FACETS: * * has facets */#define XML_SCHEMAS_TYPE_HAS_FACETS 1 << 27/** * XML_SCHEMAS_TYPE_NORMVALUENEEDED: * * indicates if the facets (pattern) need a normalized value */#define XML_SCHEMAS_TYPE_NORMVALUENEEDED 1 << 28
/** * XML_SCHEMAS_TYPE_FIXUP_1: * * First stage of fixup was done. */#define XML_SCHEMAS_TYPE_FIXUP_1 1 << 29
/** * XML_SCHEMAS_TYPE_REDEFINED: * * The type was redefined. */#define XML_SCHEMAS_TYPE_REDEFINED 1 << 30/** * XML_SCHEMAS_TYPE_REDEFINING: * * The type redefines an other type. *//* #define XML_SCHEMAS_TYPE_REDEFINING 1 << 31 */
/** * _xmlSchemaType: * * Schemas type definition. */struct _xmlSchemaType { xmlSchemaTypeType type; /* The kind of type */ struct _xmlSchemaType *next; /* the next type if in a sequence ... */ const xmlChar *name; const xmlChar *id ; /* Deprecated; not used */ const xmlChar *ref; /* Deprecated; not used */ const xmlChar *refNs; /* Deprecated; not used */ xmlSchemaAnnotPtr annot; xmlSchemaTypePtr subtypes; xmlSchemaAttributePtr attributes; /* Deprecated; not used */ xmlNodePtr node; int minOccurs; /* Deprecated; not used */ int maxOccurs; /* Deprecated; not used */
int flags; xmlSchemaContentType contentType; const xmlChar *base; /* Base type's local name */ const xmlChar *baseNs; /* Base type's target namespace */ xmlSchemaTypePtr baseType; /* The base type component */ xmlSchemaFacetPtr facets; /* Local facets */ struct _xmlSchemaType *redef; /* Deprecated; not used */ int recurse; /* Obsolete */ xmlSchemaAttributeLinkPtr *attributeUses; /* Deprecated; not used */ xmlSchemaWildcardPtr attributeWildcard; int builtInType; /* Type of built-in types. */ xmlSchemaTypeLinkPtr memberTypes; /* member-types if a union type. */ xmlSchemaFacetLinkPtr facetSet; /* All facets (incl. inherited) */ const xmlChar *refPrefix; /* Deprecated; not used */ xmlSchemaTypePtr contentTypeDef; /* Used for the simple content of complex types. Could we use @subtypes for this? */ xmlRegexpPtr contModel; /* Holds the automaton of the content model */ const xmlChar *targetNamespace; void *attrUses;};
/* * xmlSchemaElement: * An element definition. * * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of * structures must be kept similar *//** * XML_SCHEMAS_ELEM_NILLABLE: * * the element is nillable */#define XML_SCHEMAS_ELEM_NILLABLE 1 << 0/** * XML_SCHEMAS_ELEM_GLOBAL: * * the element is global */#define XML_SCHEMAS_ELEM_GLOBAL 1 << 1/** * XML_SCHEMAS_ELEM_DEFAULT: * * the element has a default value */#define XML_SCHEMAS_ELEM_DEFAULT 1 << 2/** * XML_SCHEMAS_ELEM_FIXED: * * the element has a fixed value */#define XML_SCHEMAS_ELEM_FIXED 1 << 3/** * XML_SCHEMAS_ELEM_ABSTRACT: * * the element is abstract */#define XML_SCHEMAS_ELEM_ABSTRACT 1 << 4/** * XML_SCHEMAS_ELEM_TOPLEVEL: * * the element is top level * obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead */#define XML_SCHEMAS_ELEM_TOPLEVEL 1 << 5/** * XML_SCHEMAS_ELEM_REF: * * the element is a reference to a type */#define XML_SCHEMAS_ELEM_REF 1 << 6/** * XML_SCHEMAS_ELEM_NSDEFAULT: * * allow elements in no namespace * Obsolete, not used anymore. */#define XML_SCHEMAS_ELEM_NSDEFAULT 1 << 7/** * XML_SCHEMAS_ELEM_INTERNAL_RESOLVED: * * this is set when "type", "ref", "substitutionGroup" * references have been resolved. */#define XML_SCHEMAS_ELEM_INTERNAL_RESOLVED 1 << 8 /** * XML_SCHEMAS_ELEM_CIRCULAR: * * a helper flag for the search of circular references. */#define XML_SCHEMAS_ELEM_CIRCULAR 1 << 9/** * XML_SCHEMAS_ELEM_BLOCK_ABSENT: * * the "block" attribute is absent */#define XML_SCHEMAS_ELEM_BLOCK_ABSENT 1 << 10/** * XML_SCHEMAS_ELEM_BLOCK_EXTENSION: * * disallowed substitutions are absent */#define XML_SCHEMAS_ELEM_BLOCK_EXTENSION 1 << 11/** * XML_SCHEMAS_ELEM_BLOCK_RESTRICTION: * * disallowed substitutions: "restriction" */#define XML_SCHEMAS_ELEM_BLOCK_RESTRICTION 1 << 12/** * XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION: * * disallowed substitutions: "substitution" */#define XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION 1 << 13/** * XML_SCHEMAS_ELEM_FINAL_ABSENT: * * substitution group exclusions are absent */#define XML_SCHEMAS_ELEM_FINAL_ABSENT 1 << 14/** * XML_SCHEMAS_ELEM_FINAL_EXTENSION: * * substitution group exclusions: "extension" */#define XML_SCHEMAS_ELEM_FINAL_EXTENSION 1 << 15/** * XML_SCHEMAS_ELEM_FINAL_RESTRICTION: * * substitution group exclusions: "restriction" */#define XML_SCHEMAS_ELEM_FINAL_RESTRICTION 1 << 16/** * XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD: * * the declaration is a substitution group head */#define XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD 1 << 17/** * XML_SCHEMAS_ELEM_INTERNAL_CHECKED: * * this is set when the elem decl has been checked against * all constraints */#define XML_SCHEMAS_ELEM_INTERNAL_CHECKED 1 << 18
typedef struct _xmlSchemaElement xmlSchemaElement;typedef xmlSchemaElement *xmlSchemaElementPtr;struct _xmlSchemaElement { xmlSchemaTypeType type; /* The kind of type */ struct _xmlSchemaType *next; /* Not used? */ const xmlChar *name; const xmlChar *id; /* Deprecated; not used */ const xmlChar *ref; /* Deprecated; not used */ const xmlChar *refNs; /* Deprecated; not used */ xmlSchemaAnnotPtr annot; xmlSchemaTypePtr subtypes; /* the type definition */ xmlSchemaAttributePtr attributes; xmlNodePtr node; int minOccurs; /* Deprecated; not used */ int maxOccurs; /* Deprecated; not used */
int flags; const xmlChar *targetNamespace; const xmlChar *namedType; const xmlChar *namedTypeNs; const xmlChar *substGroup; const xmlChar *substGroupNs; const xmlChar *scope; const xmlChar *value; /* The original value of the value constraint. */ struct _xmlSchemaElement *refDecl; /* This will now be used for the substitution group affiliation */ xmlRegexpPtr contModel; /* Obsolete for WXS, maybe used for RelaxNG */ xmlSchemaContentType contentType; const xmlChar *refPrefix; /* Deprecated; not used */ xmlSchemaValPtr defVal; /* The compiled value constraint. */ void *idcs; /* The identity-constraint defs */};
/* * XML_SCHEMAS_FACET_UNKNOWN: * * unknown facet handling */#define XML_SCHEMAS_FACET_UNKNOWN 0/* * XML_SCHEMAS_FACET_PRESERVE: * * preserve the type of the facet */#define XML_SCHEMAS_FACET_PRESERVE 1/* * XML_SCHEMAS_FACET_REPLACE: * * replace the type of the facet */#define XML_SCHEMAS_FACET_REPLACE 2/* * XML_SCHEMAS_FACET_COLLAPSE: * * collapse the types of the facet */#define XML_SCHEMAS_FACET_COLLAPSE 3/** * A facet definition. */struct _xmlSchemaFacet { xmlSchemaTypeType type; /* The kind of type */ struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */ const xmlChar *value; /* The original value */ const xmlChar *id; /* Obsolete */ xmlSchemaAnnotPtr annot; xmlNodePtr node; int fixed; /* XML_SCHEMAS_FACET_PRESERVE, etc. */ int whitespace; xmlSchemaValPtr val; /* The compiled value */ xmlRegexpPtr regexp; /* The regex for patterns */};
/** * A notation definition. */typedef struct _xmlSchemaNotation xmlSchemaNotation;typedef xmlSchemaNotation *xmlSchemaNotationPtr;struct _xmlSchemaNotation { xmlSchemaTypeType type; /* The kind of type */ const xmlChar *name; xmlSchemaAnnotPtr annot; const xmlChar *identifier; const xmlChar *targetNamespace;};
/** TODO: Actually all those flags used for the schema should sit* on the schema parser context, since they are used only* during parsing an XML schema document, and not available* on the component level as per spec.*//** * XML_SCHEMAS_QUALIF_ELEM: * * Reflects elementFormDefault == qualified in * an XML schema document. */#define XML_SCHEMAS_QUALIF_ELEM 1 << 0/** * XML_SCHEMAS_QUALIF_ATTR: * * Reflects attributeFormDefault == qualified in * an XML schema document. */#define XML_SCHEMAS_QUALIF_ATTR 1 << 1/** * XML_SCHEMAS_FINAL_DEFAULT_EXTENSION: * * the schema has "extension" in the set of finalDefault. */#define XML_SCHEMAS_FINAL_DEFAULT_EXTENSION 1 << 2/** * XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION: * * the schema has "restriction" in the set of finalDefault. */#define XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION 1 << 3/** * XML_SCHEMAS_FINAL_DEFAULT_LIST: * * the schema has "list" in the set of finalDefault. */#define XML_SCHEMAS_FINAL_DEFAULT_LIST 1 << 4/** * XML_SCHEMAS_FINAL_DEFAULT_UNION: * * the schema has "union" in the set of finalDefault. */#define XML_SCHEMAS_FINAL_DEFAULT_UNION 1 << 5/** * XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION: * * the schema has "extension" in the set of blockDefault. */#define XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION 1 << 6/** * XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION: * * the schema has "restriction" in the set of blockDefault. */#define XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION 1 << 7/** * XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION: * * the schema has "substitution" in the set of blockDefault. */#define XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION 1 << 8/** * XML_SCHEMAS_INCLUDING_CONVERT_NS: * * the schema is currently including an other schema with * no target namespace. */#define XML_SCHEMAS_INCLUDING_CONVERT_NS 1 << 9/** * _xmlSchema: * * A Schemas definition */struct _xmlSchema { const xmlChar *name; /* schema name */ const xmlChar *targetNamespace; /* the target namespace */ const xmlChar *version; const xmlChar *id; /* Obsolete */ xmlDocPtr doc; xmlSchemaAnnotPtr annot; int flags;
xmlHashTablePtr typeDecl; xmlHashTablePtr attrDecl; xmlHashTablePtr attrgrpDecl; xmlHashTablePtr elemDecl; xmlHashTablePtr notaDecl;
xmlHashTablePtr schemasImports;
void *_private; /* unused by the library for users or bindings */ xmlHashTablePtr groupDecl; xmlDictPtr dict; void *includes; /* the includes, this is opaque for now */ int preserve; /* whether to free the document */ int counter; /* used to give anonymous components unique names */ xmlHashTablePtr idcDef; /* All identity-constraint defs. */ void *volatiles; /* Obsolete */};
XMLPUBFUN void xmlSchemaFreeType (xmlSchemaTypePtr type);XMLPUBFUN void xmlSchemaFreeWildcard(xmlSchemaWildcardPtr wildcard);
#ifdef __cplusplus}#endif
#endif /* LIBXML_SCHEMAS_ENABLED */#endif /* __XML_SCHEMA_INTERNALS_H__ */