schemasInternals: internal interfaces for XML Schemas

## schemasInternals

schemasInternals - internal interfaces for XML Schemas

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 !

Author(s): Daniel Veillard

## Synopsis

    #define XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION;
    #define XML_SCHEMAS_FINAL_DEFAULT_EXTENSION;
    #define XML_SCHEMAS_TYPE_FIXUP_1;
    #define XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION;
    #define XML_SCHEMAS_ELEM_CIRCULAR;
    #define XML_SCHEMAS_QUALIF_ATTR;
    #define XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE;
    #define XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION;
    #define XML_SCHEMAS_ATTR_USE_REQUIRED;
    #define XML_SCHEMAS_FACET_COLLAPSE;
    #define XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE;
    #define XML_SCHEMAS_TYPE_VARIETY_UNION;
    #define XML_SCHEMAS_ANY_STRICT;
    #define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED;
    #define XML_SCHEMAS_QUALIF_ELEM;
    #define XML_SCHEMAS_TYPE_VARIETY_LIST;
    #define XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE;
    #define XML_SCHEMAS_ELEM_INTERNAL_CHECKED;
    #define XML_SCHEMAS_INCLUDING_CONVERT_NS;
    #define XML_SCHEMAS_ATTR_INTERNAL_RESOLVED;
    #define XML_SCHEMAS_ATTR_USE_PROHIBITED;
    #define XML_SCHEMAS_ELEM_NILLABLE;
    #define XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION;
    #define XML_SCHEMAS_ATTRGROUP_REDEFINED;
    #define XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD;
    #define XML_SCHEMAS_TYPE_BLOCK_DEFAULT;
    #define XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION;
    #define XML_SCHEMAS_TYPE_FINAL_EXTENSION;
    #define XML_SCHEMAS_TYPE_REDEFINED;
    #define XML_SCHEMAS_ELEM_FIXED;
    #define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD;
    #define XML_SCHEMAS_TYPE_VARIETY_ATOMIC;
    #define XML_SCHEMAS_TYPE_FINAL_LIST;
    #define XML_SCHEMAS_ATTR_USE_OPTIONAL;
    #define XML_SCHEMAS_ATTR_NSDEFAULT;
    #define XML_SCHEMAS_TYPE_WHITESPACE_REPLACE;
    #define XML_SCHEMAS_TYPE_BLOCK_RESTRICTION;
    #define XML_SCHEMAS_ANYATTR_STRICT;
    #define XML_SCHEMAS_FACET_UNKNOWN;
    #define XML_SCHEMAS_ATTRGROUP_MARKED;
    #define XML_SCHEMAS_FACET_PRESERVE;
    #define XML_SCHEMAS_ELEM_BLOCK_EXTENSION;
    #define XML_SCHEMAS_ATTR_GLOBAL;
    #define XML_SCHEMAS_ANYATTR_SKIP;
    #define XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION;
    #define XML_SCHEMAS_ANYATTR_LAX;
    #define XML_SCHEMAS_TYPE_GLOBAL;
    #define XML_SCHEMAS_TYPE_ABSTRACT;
    #define XML_SCHEMAS_TYPE_MIXED;
    #define XML_SCHEMAS_ATTR_FIXED;
    #define XML_SCHEMAS_ELEM_INTERNAL_RESOLVED;
    #define XML_SCHEMAS_ANY_SKIP;
    #define XML_SCHEMAS_FINAL_DEFAULT_LIST;
    #define XML_SCHEMAS_TYPE_VARIETY_ABSENT;
    #define XML_SCHEMAS_ELEM_FINAL_RESTRICTION;
    #define XML_SCHEMAS_WILDCARD_COMPLETE;
    #define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED;
    #define XML_SCHEMAS_ELEM_NSDEFAULT;
    #define XML_SCHEMAS_ELEM_GLOBAL;
    #define XML_SCHEMAS_ELEM_TOPLEVEL;
    #define XML_SCHEMAS_ANY_LAX;
    #define XML_SCHEMAS_TYPE_FINAL_RESTRICTION;
    #define XML_SCHEMAS_TYPE_HAS_FACETS;
    #define XML_SCHEMAS_ELEM_FINAL_EXTENSION;
    #define XML_SCHEMAS_TYPE_NORMVALUENEEDED;
    #define XML_SCHEMAS_ELEM_FINAL_ABSENT;
    #define XML_SCHEMAS_TYPE_BLOCK_EXTENSION;
    #define XML_SCHEMAS_TYPE_INTERNAL_INVALID;
    #define XML_SCHEMAS_ATTRGROUP_HAS_REFS;
    #define XML_SCHEMAS_ELEM_ABSTRACT;
    #define XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION;
    #define XML_SCHEMAS_TYPE_FINAL_UNION;
    #define XML_SCHEMAS_TYPE_FINAL_DEFAULT;
    #define XML_SCHEMAS_TYPE_FACETSNEEDVALUE;
    #define XML_SCHEMAS_FINAL_DEFAULT_UNION;
    #define XML_SCHEMAS_ELEM_BLOCK_RESTRICTION;
    #define XML_SCHEMAS_FACET_REPLACE;
    #define XML_SCHEMAS_ELEM_DEFAULT;
    #define XML_SCHEMAS_TYPE_MARKED;
    #define XML_SCHEMAS_ELEM_BLOCK_ABSENT;
    #define XML_SCHEMAS_ATTRGROUP_GLOBAL;
    #define XML_SCHEMAS_ELEM_REF;
    typedef xmlSchemaAttributeGroup * xmlSchemaAttributeGroupPtr;
    typedef xmlSchemaElement * xmlSchemaElementPtr;
    typedef xmlSchemaFacetLink * xmlSchemaFacetLinkPtr;
    typedef struct _xmlSchemaVal xmlSchemaVal;
    typedef xmlSchemaAttributeLink * xmlSchemaAttributeLinkPtr;
    typedef struct _xmlSchemaType xmlSchemaType;
    typedef struct _xmlSchemaAnnot xmlSchemaAnnot;
    typedef xmlSchemaAnnot * xmlSchemaAnnotPtr;
    typedef struct _xmlSchemaElement xmlSchemaElement;
    typedef struct _xmlSchemaWildcard xmlSchemaWildcard;
    typedef xmlSchemaWildcard * xmlSchemaWildcardPtr;
    typedef xmlSchemaFacet * xmlSchemaFacetPtr;
    typedef struct _xmlSchemaTypeLink xmlSchemaTypeLink;
    typedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink;
    typedef xmlSchemaVal * xmlSchemaValPtr;
    typedef struct _xmlSchemaFacetLink xmlSchemaFacetLink;
    typedef xmlSchemaWildcardNs * xmlSchemaWildcardNsPtr;
    typedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup;
    typedef xmlSchemaTypeLink * xmlSchemaTypeLinkPtr;
    typedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs;
    typedef xmlSchemaAttribute * xmlSchemaAttributePtr;
    typedef xmlSchemaNotation * xmlSchemaNotationPtr;
    typedef enum xmlSchemaValType;
    typedef xmlSchemaType * xmlSchemaTypePtr;
    typedef struct _xmlSchemaNotation xmlSchemaNotation;
    typedef struct _xmlSchemaFacet xmlSchemaFacet;
    typedef enum xmlSchemaContentType;
    typedef enum xmlSchemaTypeType;
    typedef struct _xmlSchemaAttribute xmlSchemaAttribute;
    void	xmlSchemaFreeType		(xmlSchemaTypePtr type);
    void	xmlSchemaFreeWildcard		(xmlSchemaWildcardPtr wildcard);

## Description

## Details

### Macro XML_SCHEMAS_ANYATTR_LAX

    #define XML_SCHEMAS_ANYATTR_LAX;

Ignore validation non definition on attributes Obsolete, not used anymore.

### Macro XML_SCHEMAS_ANYATTR_SKIP

    #define XML_SCHEMAS_ANYATTR_SKIP;

Skip unknown attribute from validation Obsolete, not used anymore.

### Macro XML_SCHEMAS_ANYATTR_STRICT

    #define XML_SCHEMAS_ANYATTR_STRICT;

Apply strict validation rules on attributes Obsolete, not used anymore.

### Macro XML_SCHEMAS_ANY_LAX

    #define XML_SCHEMAS_ANY_LAX;

Used by wildcards. Validate if type found, don't worry if not found

### Macro XML_SCHEMAS_ANY_SKIP

    #define XML_SCHEMAS_ANY_SKIP;

Skip unknown attribute from validation

### Macro XML_SCHEMAS_ANY_STRICT

    #define XML_SCHEMAS_ANY_STRICT;

Used by wildcards. Apply strict validation rules

### Macro XML_SCHEMAS_ATTRGROUP_GLOBAL

    #define XML_SCHEMAS_ATTRGROUP_GLOBAL;

The attribute group has been defined.

### Macro XML_SCHEMAS_ATTRGROUP_HAS_REFS

    #define XML_SCHEMAS_ATTRGROUP_HAS_REFS;

Whether this attr. group contains attr. group references.

### Macro XML_SCHEMAS_ATTRGROUP_MARKED

    #define XML_SCHEMAS_ATTRGROUP_MARKED;

Marks the attr group as marked; used for circular checks.

### Macro XML_SCHEMAS_ATTRGROUP_REDEFINED

    #define XML_SCHEMAS_ATTRGROUP_REDEFINED;

The attr group was redefined.

### Macro XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED

    #define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED;

The attribute wildcard has been built.

### Macro XML_SCHEMAS_ATTR_FIXED

    #define XML_SCHEMAS_ATTR_FIXED;

the attribute has a fixed value

### Macro XML_SCHEMAS_ATTR_GLOBAL

    #define XML_SCHEMAS_ATTR_GLOBAL;

allow elements in no namespace

### Macro XML_SCHEMAS_ATTR_INTERNAL_RESOLVED

    #define XML_SCHEMAS_ATTR_INTERNAL_RESOLVED;

this is set when the "type" and "ref" references have been resolved.

### Macro XML_SCHEMAS_ATTR_NSDEFAULT

    #define XML_SCHEMAS_ATTR_NSDEFAULT;

allow elements in no namespace

### Macro XML_SCHEMAS_ATTR_USE_OPTIONAL

    #define XML_SCHEMAS_ATTR_USE_OPTIONAL;

The attribute is optional.

### Macro XML_SCHEMAS_ATTR_USE_PROHIBITED

    #define XML_SCHEMAS_ATTR_USE_PROHIBITED;

Used by wildcards. The attribute is prohibited.

### Macro XML_SCHEMAS_ATTR_USE_REQUIRED

    #define XML_SCHEMAS_ATTR_USE_REQUIRED;

The attribute is required.

### Macro XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION

    #define XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION;

the schema has "extension" in the set of blockDefault.

### Macro XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION

    #define XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION;

the schema has "restriction" in the set of blockDefault.

### Macro XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION

    #define XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION;

the schema has "substitution" in the set of blockDefault.

### Macro XML_SCHEMAS_ELEM_ABSTRACT

    #define XML_SCHEMAS_ELEM_ABSTRACT;

the element is abstract

### Macro XML_SCHEMAS_ELEM_BLOCK_ABSENT

    #define XML_SCHEMAS_ELEM_BLOCK_ABSENT;

the "block" attribute is absent

### Macro XML_SCHEMAS_ELEM_BLOCK_EXTENSION

    #define XML_SCHEMAS_ELEM_BLOCK_EXTENSION;

disallowed substitutions are absent

### Macro XML_SCHEMAS_ELEM_BLOCK_RESTRICTION

    #define XML_SCHEMAS_ELEM_BLOCK_RESTRICTION;

disallowed substitutions: "restriction"

### Macro XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION

    #define XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION;

disallowed substitutions: "substitution"

### Macro XML_SCHEMAS_ELEM_CIRCULAR

    #define XML_SCHEMAS_ELEM_CIRCULAR;

a helper flag for the search of circular references.

### Macro XML_SCHEMAS_ELEM_DEFAULT

    #define XML_SCHEMAS_ELEM_DEFAULT;

the element has a default value

### Macro XML_SCHEMAS_ELEM_FINAL_ABSENT

    #define XML_SCHEMAS_ELEM_FINAL_ABSENT;

substitution group exclusions are absent

### Macro XML_SCHEMAS_ELEM_FINAL_EXTENSION

    #define XML_SCHEMAS_ELEM_FINAL_EXTENSION;

substitution group exclusions: "extension"

### Macro XML_SCHEMAS_ELEM_FINAL_RESTRICTION

    #define XML_SCHEMAS_ELEM_FINAL_RESTRICTION;

substitution group exclusions: "restriction"

### Macro XML_SCHEMAS_ELEM_FIXED

    #define XML_SCHEMAS_ELEM_FIXED;

the element has a fixed value

### Macro XML_SCHEMAS_ELEM_GLOBAL

    #define XML_SCHEMAS_ELEM_GLOBAL;

the element is global

### Macro XML_SCHEMAS_ELEM_INTERNAL_CHECKED

    #define XML_SCHEMAS_ELEM_INTERNAL_CHECKED;

this is set when the elem decl has been checked against all constraints

### Macro XML_SCHEMAS_ELEM_INTERNAL_RESOLVED

    #define XML_SCHEMAS_ELEM_INTERNAL_RESOLVED;

this is set when "type", "ref", "substitutionGroup" references have been resolved.

### Macro XML_SCHEMAS_ELEM_NILLABLE

    #define XML_SCHEMAS_ELEM_NILLABLE;

the element is nillable

### Macro XML_SCHEMAS_ELEM_NSDEFAULT

    #define XML_SCHEMAS_ELEM_NSDEFAULT;

allow elements in no namespace Obsolete, not used anymore.

### Macro XML_SCHEMAS_ELEM_REF

    #define XML_SCHEMAS_ELEM_REF;

the element is a reference to a type

### Macro XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD

    #define XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD;

the declaration is a substitution group head

### Macro XML_SCHEMAS_ELEM_TOPLEVEL

    #define XML_SCHEMAS_ELEM_TOPLEVEL;

the element is top level obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead

### Macro XML_SCHEMAS_FACET_COLLAPSE

    #define XML_SCHEMAS_FACET_COLLAPSE;

collapse the types of the facet

### Macro XML_SCHEMAS_FACET_PRESERVE

    #define XML_SCHEMAS_FACET_PRESERVE;

preserve the type of the facet

### Macro XML_SCHEMAS_FACET_REPLACE

    #define XML_SCHEMAS_FACET_REPLACE;

replace the type of the facet

### Macro XML_SCHEMAS_FACET_UNKNOWN

    #define XML_SCHEMAS_FACET_UNKNOWN;

unknown facet handling

### Macro XML_SCHEMAS_FINAL_DEFAULT_EXTENSION

    #define XML_SCHEMAS_FINAL_DEFAULT_EXTENSION;

the schema has "extension" in the set of finalDefault.

### Macro XML_SCHEMAS_FINAL_DEFAULT_LIST

    #define XML_SCHEMAS_FINAL_DEFAULT_LIST;

the schema has "list" in the set of finalDefault.

### Macro XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION

    #define XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION;

the schema has "restriction" in the set of finalDefault.

### Macro XML_SCHEMAS_FINAL_DEFAULT_UNION

    #define XML_SCHEMAS_FINAL_DEFAULT_UNION;

the schema has "union" in the set of finalDefault.

### Macro XML_SCHEMAS_INCLUDING_CONVERT_NS

    #define XML_SCHEMAS_INCLUDING_CONVERT_NS;

the schema is currently including an other schema with no target namespace.

### Macro XML_SCHEMAS_QUALIF_ATTR

    #define XML_SCHEMAS_QUALIF_ATTR;

Reflects attributeFormDefault == qualified in an XML schema document.

### Macro XML_SCHEMAS_QUALIF_ELEM

    #define XML_SCHEMAS_QUALIF_ELEM;

Reflects elementFormDefault == qualified in an XML schema document.

### Macro XML_SCHEMAS_TYPE_ABSTRACT

    #define XML_SCHEMAS_TYPE_ABSTRACT;

the simple/complexType is abstract.

### Macro XML_SCHEMAS_TYPE_BLOCK_DEFAULT

    #define XML_SCHEMAS_TYPE_BLOCK_DEFAULT;

the complexType did not specify 'block' so use the default of the <schema> item.

### Macro XML_SCHEMAS_TYPE_BLOCK_EXTENSION

    #define XML_SCHEMAS_TYPE_BLOCK_EXTENSION;

the complexType has a 'block' of "extension".

### Macro XML_SCHEMAS_TYPE_BLOCK_RESTRICTION

    #define XML_SCHEMAS_TYPE_BLOCK_RESTRICTION;

the complexType has a 'block' of "restriction".

### Macro XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE

    #define XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE;

Marks the item as a builtin primitive.

### Macro XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION

    #define XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION;

the simple or complex type has a derivation method of "extension".

### Macro XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION

    #define XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION;

the simple or complex type has a derivation method of "restriction".

### Macro XML_SCHEMAS_TYPE_FACETSNEEDVALUE

    #define XML_SCHEMAS_TYPE_FACETSNEEDVALUE;

indicates if the facets need a computed value

### Macro XML_SCHEMAS_TYPE_FINAL_DEFAULT

    #define XML_SCHEMAS_TYPE_FINAL_DEFAULT;

the simpleType has a final of "default".

### Macro XML_SCHEMAS_TYPE_FINAL_EXTENSION

    #define XML_SCHEMAS_TYPE_FINAL_EXTENSION;

the complexType has a final of "extension".

### Macro XML_SCHEMAS_TYPE_FINAL_LIST

    #define XML_SCHEMAS_TYPE_FINAL_LIST;

the simpleType has a final of "list".

### Macro XML_SCHEMAS_TYPE_FINAL_RESTRICTION

    #define XML_SCHEMAS_TYPE_FINAL_RESTRICTION;

the simpleType/complexType has a final of "restriction".

### Macro XML_SCHEMAS_TYPE_FINAL_UNION

    #define XML_SCHEMAS_TYPE_FINAL_UNION;

the simpleType has a final of "union".

### Macro XML_SCHEMAS_TYPE_FIXUP_1

    #define XML_SCHEMAS_TYPE_FIXUP_1;

First stage of fixup was done.

### Macro XML_SCHEMAS_TYPE_GLOBAL

    #define XML_SCHEMAS_TYPE_GLOBAL;

the type is global

### Macro XML_SCHEMAS_TYPE_HAS_FACETS

    #define XML_SCHEMAS_TYPE_HAS_FACETS;

has facets

### Macro XML_SCHEMAS_TYPE_INTERNAL_INVALID

    #define XML_SCHEMAS_TYPE_INTERNAL_INVALID;

indicates that the type is invalid

### Macro XML_SCHEMAS_TYPE_INTERNAL_RESOLVED

    #define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED;

indicates that the type was typefixed

### Macro XML_SCHEMAS_TYPE_MARKED

    #define XML_SCHEMAS_TYPE_MARKED;

Marks the item as marked; used for circular checks.

### Macro XML_SCHEMAS_TYPE_MIXED

    #define XML_SCHEMAS_TYPE_MIXED;

the element content type is mixed

### Macro XML_SCHEMAS_TYPE_NORMVALUENEEDED

    #define XML_SCHEMAS_TYPE_NORMVALUENEEDED;

indicates if the facets (pattern) need a normalized value

### Macro XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD

    #define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD;

the complexType owns an attribute wildcard, i.e. it can be freed by the complexType

### Macro XML_SCHEMAS_TYPE_REDEFINED

    #define XML_SCHEMAS_TYPE_REDEFINED;

The type was redefined.

### Macro XML_SCHEMAS_TYPE_VARIETY_ABSENT

    #define 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.

### Macro XML_SCHEMAS_TYPE_VARIETY_ATOMIC

    #define XML_SCHEMAS_TYPE_VARIETY_ATOMIC;

the simpleType has a variety of "union".

### Macro XML_SCHEMAS_TYPE_VARIETY_LIST

    #define XML_SCHEMAS_TYPE_VARIETY_LIST;

the simpleType has a variety of "list".

### Macro XML_SCHEMAS_TYPE_VARIETY_UNION

    #define XML_SCHEMAS_TYPE_VARIETY_UNION;

the simpleType has a variety of "union".

### Macro XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE

    #define XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE;

a whitespace-facet value of "collapse"

### Macro XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE

    #define XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE;

a whitespace-facet value of "preserve"

### Macro XML_SCHEMAS_TYPE_WHITESPACE_REPLACE

    #define XML_SCHEMAS_TYPE_WHITESPACE_REPLACE;

a whitespace-facet value of "replace"

### Macro XML_SCHEMAS_WILDCARD_COMPLETE

    #define XML_SCHEMAS_WILDCARD_COMPLETE;

If the wildcard is complete.

### Structure xmlSchemaAnnot

    struct _xmlSchemaAnnot {
        struct _xmlSchemaAnnot *	next
        xmlNodePtr	content	: the annotation
    } xmlSchemaAnnot;

### Typedef xmlSchemaAnnotPtr

    xmlSchemaAnnot * xmlSchemaAnnotPtr;

### Structure xmlSchemaAttribute

    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
    } xmlSchemaAttribute;

### Structure xmlSchemaAttributeGroup

    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
    } xmlSchemaAttributeGroup;

### Typedef xmlSchemaAttributeGroupPtr

    xmlSchemaAttributeGroup * xmlSchemaAttributeGroupPtr;

### Structure xmlSchemaAttributeLink

    struct _xmlSchemaAttributeLink {
        struct _xmlSchemaAttributeLink *	next	: the next attribute link ...
        struct _xmlSchemaAttribute *	attr	: the linked attribute
    } xmlSchemaAttributeLink;

### Typedef xmlSchemaAttributeLinkPtr

    xmlSchemaAttributeLink * xmlSchemaAttributeLinkPtr;

### Typedef xmlSchemaAttributePtr

    xmlSchemaAttribute * xmlSchemaAttributePtr;

### Enum xmlSchemaContentType

    enum xmlSchemaContentType {
        XML_SCHEMA_CONTENT_UNKNOWN = 0
        XML_SCHEMA_CONTENT_EMPTY = 1
        XML_SCHEMA_CONTENT_ELEMENTS = 2
        XML_SCHEMA_CONTENT_MIXED = 3
        XML_SCHEMA_CONTENT_SIMPLE = 4
        XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS = 5 /* Obsolete */
        XML_SCHEMA_CONTENT_BASIC = 6
        XML_SCHEMA_CONTENT_ANY = 7
    };

### Structure xmlSchemaElement

    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
    } xmlSchemaElement;

### Typedef xmlSchemaElementPtr

    xmlSchemaElement * xmlSchemaElementPtr;

### Structure xmlSchemaFacet

    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
    } xmlSchemaFacet;

### Structure xmlSchemaFacetLink

    struct _xmlSchemaFacetLink {
        struct _xmlSchemaFacetLink *	next	: the next facet link ...
        xmlSchemaFacetPtr	facet	: the linked facet
    } xmlSchemaFacetLink;

### Typedef xmlSchemaFacetLinkPtr

    xmlSchemaFacetLink * xmlSchemaFacetLinkPtr;

### Typedef xmlSchemaFacetPtr

    xmlSchemaFacet * xmlSchemaFacetPtr;

### Structure xmlSchemaNotation

    struct _xmlSchemaNotation {
        xmlSchemaTypeType	type	: The kind of type
        const xmlChar *	name
        xmlSchemaAnnotPtr	annot
        const xmlChar *	identifier
        const xmlChar *	targetNamespace
    } xmlSchemaNotation;

### Typedef xmlSchemaNotationPtr

    xmlSchemaNotation * xmlSchemaNotationPtr;

### Structure xmlSchemaType

    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
        xmlRegexpPtr	contModel	: Holds the automaton of the content model
        const xmlChar *	targetNamespace
        void *	attrUses
    } xmlSchemaType;

### Structure xmlSchemaTypeLink

    struct _xmlSchemaTypeLink {
        struct _xmlSchemaTypeLink *	next	: the next type link ...
        xmlSchemaTypePtr	type	: the linked type
    } xmlSchemaTypeLink;

### Typedef xmlSchemaTypeLinkPtr

    xmlSchemaTypeLink * xmlSchemaTypeLinkPtr;

### Typedef xmlSchemaTypePtr

    xmlSchemaType * xmlSchemaTypePtr;

### Enum xmlSchemaTypeType

    enum xmlSchemaTypeType {
        XML_SCHEMA_TYPE_BASIC = 1 /* A built-in datatype */
        XML_SCHEMA_TYPE_ANY = 2
        XML_SCHEMA_TYPE_FACET = 3
        XML_SCHEMA_TYPE_SIMPLE = 4
        XML_SCHEMA_TYPE_COMPLEX = 5
        XML_SCHEMA_TYPE_SEQUENCE = 6
        XML_SCHEMA_TYPE_CHOICE = 7
        XML_SCHEMA_TYPE_ALL = 8
        XML_SCHEMA_TYPE_SIMPLE_CONTENT = 9
        XML_SCHEMA_TYPE_COMPLEX_CONTENT = 10
        XML_SCHEMA_TYPE_UR = 11
        XML_SCHEMA_TYPE_RESTRICTION = 12
        XML_SCHEMA_TYPE_EXTENSION = 13
        XML_SCHEMA_TYPE_ELEMENT = 14
        XML_SCHEMA_TYPE_ATTRIBUTE = 15
        XML_SCHEMA_TYPE_ATTRIBUTEGROUP = 16
        XML_SCHEMA_TYPE_GROUP = 17
        XML_SCHEMA_TYPE_NOTATION = 18
        XML_SCHEMA_TYPE_LIST = 19
        XML_SCHEMA_TYPE_UNION = 20
        XML_SCHEMA_TYPE_ANY_ATTRIBUTE = 21
        XML_SCHEMA_TYPE_IDC_UNIQUE = 22
        XML_SCHEMA_TYPE_IDC_KEY = 23
        XML_SCHEMA_TYPE_IDC_KEYREF = 24
        XML_SCHEMA_TYPE_PARTICLE = 25
        XML_SCHEMA_TYPE_ATTRIBUTE_USE = 26
        XML_SCHEMA_FACET_MININCLUSIVE = 1000
        XML_SCHEMA_FACET_MINEXCLUSIVE = 1001
        XML_SCHEMA_FACET_MAXINCLUSIVE = 1002
        XML_SCHEMA_FACET_MAXEXCLUSIVE = 1003
        XML_SCHEMA_FACET_TOTALDIGITS = 1004
        XML_SCHEMA_FACET_FRACTIONDIGITS = 1005
        XML_SCHEMA_FACET_PATTERN = 1006
        XML_SCHEMA_FACET_ENUMERATION = 1007
        XML_SCHEMA_FACET_WHITESPACE = 1008
        XML_SCHEMA_FACET_LENGTH = 1009
        XML_SCHEMA_FACET_MAXLENGTH = 1010
        XML_SCHEMA_FACET_MINLENGTH = 1011
        XML_SCHEMA_EXTRA_QNAMEREF = 2000
        XML_SCHEMA_EXTRA_ATTR_USE_PROHIB = 2001
    };

### Structure xmlSchemaVal

    struct _xmlSchemaVal {
    The content of this structure is not made public by the API.
    } xmlSchemaVal;

### Typedef xmlSchemaValPtr

    xmlSchemaVal * xmlSchemaValPtr;

### Enum xmlSchemaValType

    enum xmlSchemaValType {
        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
    };

### Structure xmlSchemaWildcard

    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
    } xmlSchemaWildcard;

### Structure xmlSchemaWildcardNs

    struct _xmlSchemaWildcardNs {
        struct _xmlSchemaWildcardNs *	next	: the next constraint link ...
        const xmlChar *	value	: the value
    } xmlSchemaWildcardNs;

### Typedef xmlSchemaWildcardNsPtr

    xmlSchemaWildcardNs * xmlSchemaWildcardNsPtr;

### Typedef xmlSchemaWildcardPtr

    xmlSchemaWildcard * xmlSchemaWildcardPtr;

### xmlSchemaFreeType ()

    void	xmlSchemaFreeType		(xmlSchemaTypePtr type)

Deallocate a Schema Type structure.

`type`: | a schema type structure

### xmlSchemaFreeWildcard ()

    void	xmlSchemaFreeWildcard		(xmlSchemaWildcardPtr wildcard)

Deallocates a wildcard structure.

`wildcard`: | a wildcard structure