| /* |
| * 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 garanteed 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> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef enum { |
| XML_SCHEMAS_UNKNOWN = 0, |
| XML_SCHEMAS_STRING, |
| XML_SCHEMAS_NORMSTRING, |
| XML_SCHEMAS_DECIMAL, |
| XML_SCHEMAS_TIME, |
| XML_SCHEMAS_GDAY, |
| XML_SCHEMAS_GMONTH, |
| XML_SCHEMAS_GMONTHDAY, |
| XML_SCHEMAS_GYEAR, |
| XML_SCHEMAS_GYEARMONTH, |
| XML_SCHEMAS_DATE, |
| XML_SCHEMAS_DATETIME, |
| XML_SCHEMAS_DURATION, |
| XML_SCHEMAS_FLOAT, |
| XML_SCHEMAS_DOUBLE, |
| XML_SCHEMAS_BOOLEAN, |
| XML_SCHEMAS_TOKEN, |
| XML_SCHEMAS_LANGUAGE, |
| XML_SCHEMAS_NMTOKEN, |
| XML_SCHEMAS_NMTOKENS, |
| XML_SCHEMAS_NAME, |
| XML_SCHEMAS_QNAME, |
| XML_SCHEMAS_NCNAME, |
| XML_SCHEMAS_ID, |
| XML_SCHEMAS_IDREF, |
| XML_SCHEMAS_IDREFS, |
| XML_SCHEMAS_ENTITY, |
| XML_SCHEMAS_ENTITIES, |
| XML_SCHEMAS_NOTATION, |
| XML_SCHEMAS_ANYURI, |
| XML_SCHEMAS_INTEGER, |
| XML_SCHEMAS_NPINTEGER, |
| XML_SCHEMAS_NINTEGER, |
| XML_SCHEMAS_NNINTEGER, |
| XML_SCHEMAS_PINTEGER, |
| XML_SCHEMAS_INT, |
| XML_SCHEMAS_UINT, |
| XML_SCHEMAS_LONG, |
| XML_SCHEMAS_ULONG, |
| XML_SCHEMAS_SHORT, |
| XML_SCHEMAS_USHORT, |
| XML_SCHEMAS_BYTE, |
| XML_SCHEMAS_UBYTE, |
| XML_SCHEMAS_HEXBINARY, |
| XML_SCHEMAS_BASE64BINARY, |
| XML_SCHEMAS_ANYTYPE, |
| XML_SCHEMAS_ANYSIMPLETYPE |
| } 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 already builded. |
| */ |
| #define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED 1 << 0 |
| /** |
| * XML_SCHEMAS_ATTRGROUP_GLOBAL: |
| * |
| * The attribute wildcard has been already builded. |
| */ |
| #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: "substituion" |
| */ |
| #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 contraint. */ |
| 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 cshema 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 ononymous components unique names */ |
| xmlHashTablePtr idcDef; /* All identity-constraint defs. */ |
| void *volatiles; /* Obsolete */ |
| }; |
| |
| XMLPUBFUN void XMLCALL xmlSchemaFreeType (xmlSchemaTypePtr type); |
| XMLPUBFUN void XMLCALL xmlSchemaFreeWildcard(xmlSchemaWildcardPtr wildcard); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* LIBXML_SCHEMAS_ENABLED */ |
| #endif /* __XML_SCHEMA_INTERNALS_H__ */ |