## schemasInternals

schemasInternals —

## Synopsis

    enum        xmlSchemaTypeType;
    enum        xmlSchemaContentType;
    struct      xmlSchemaVal;
    typedef     xmlSchemaValPtr;
    struct      xmlSchemaType;
    typedef     xmlSchemaTypePtr;
    struct      xmlSchemaFacet;
    typedef     xmlSchemaFacetPtr;
    struct      xmlSchemaAnnot;
    typedef     xmlSchemaAnnotPtr;
    #define     XML_SCHEMAS_ANYATTR_SKIP
    #define     XML_SCHEMAS_ANYATTR_LAX
    #define     XML_SCHEMAS_ANYATTR_STRICT
    struct      xmlSchemaAttribute;
    typedef     xmlSchemaAttributePtr;
    struct      xmlSchemaAttributeGroup;
    typedef     xmlSchemaAttributeGroupPtr;
    #define     XML_SCHEMAS_TYPE_MIXED
    #define     XML_SCHEMAS_ELEM_NILLABLE
    #define     XML_SCHEMAS_ELEM_GLOBAL
    #define     XML_SCHEMAS_ELEM_DEFAULT
    #define     XML_SCHEMAS_ELEM_FIXED
    #define     XML_SCHEMAS_ELEM_ABSTRACT
    #define     XML_SCHEMAS_ELEM_TOPLEVEL
    #define     XML_SCHEMAS_ELEM_REF
    struct      xmlSchemaElement;
    typedef     xmlSchemaElementPtr;
    #define     XML_SCHEMAS_FACET_UNKNOWN
    #define     XML_SCHEMAS_FACET_PRESERVE
    #define     XML_SCHEMAS_FACET_REPLACE
    #define     XML_SCHEMAS_FACET_COLLAPSE
    struct      xmlSchemaNotation;
    typedef     xmlSchemaNotationPtr;
    #define     XML_SCHEMAS_QUALIF_ELEM
    #define     XML_SCHEMAS_QUALIF_ATTR
    struct      xmlSchema;
    void        xmlSchemaFreeType               (xmlSchemaTypePtr type);

## Description

## Details

### enum xmlSchemaTypeType

    typedef enum {
        XML_SCHEMA_TYPE_BASIC = 1,
        XML_SCHEMA_TYPE_ANY,
        XML_SCHEMA_TYPE_FACET,
        XML_SCHEMA_TYPE_SIMPLE,
        XML_SCHEMA_TYPE_COMPLEX,
        XML_SCHEMA_TYPE_SEQUENCE,
        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_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
    } xmlSchemaTypeType;

### enum xmlSchemaContentType

    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,
        XML_SCHEMA_CONTENT_BASIC,
        XML_SCHEMA_CONTENT_ANY
    } xmlSchemaContentType;

### struct xmlSchemaVal

    struct xmlSchemaVal;

### xmlSchemaValPtr

    typedef xmlSchemaVal *xmlSchemaValPtr;

### struct xmlSchemaType

    struct xmlSchemaType {
        xmlSchemaTypeType type;	/* The kind of type */
        struct _xmlSchemaType *next;/* the next type if in a sequence ... */
        xmlChar *name;
        xmlChar *id;
        xmlChar *ref;
        xmlChar *refNs;
        xmlSchemaAnnotPtr annot;
        xmlSchemaTypePtr subtypes;
        xmlSchemaAttributePtr attributes;
        xmlNodePtr node;
        int minOccurs;
        int maxOccurs;

        int flags;
        xmlSchemaContentType contentType;
        xmlChar *base;
        xmlChar *baseNs;
        xmlSchemaTypePtr baseType;
        xmlSchemaFacetPtr facets;
    };

### xmlSchemaTypePtr

    typedef xmlSchemaType *xmlSchemaTypePtr;

### struct xmlSchemaFacet

    struct xmlSchemaFacet {
        xmlSchemaTypeType type;	/* The kind of type */
        struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */
        xmlChar *value;
        xmlChar *id;
        xmlSchemaAnnotPtr annot;
        xmlNodePtr node;
        int fixed;
        int whitespace;
        xmlSchemaValPtr val;
        xmlRegexpPtr    regexp;
    };

### xmlSchemaFacetPtr

    typedef xmlSchemaFacet *xmlSchemaFacetPtr;

### struct xmlSchemaAnnot

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

### xmlSchemaAnnotPtr

    typedef xmlSchemaAnnot *xmlSchemaAnnotPtr;

### XML_SCHEMAS_ANYATTR_SKIP

    #define XML_SCHEMAS_ANYATTR_SKIP	1

### XML_SCHEMAS_ANYATTR_LAX

    #define XML_SCHEMAS_ANYATTR_LAX		2

### XML_SCHEMAS_ANYATTR_STRICT

    #define XML_SCHEMAS_ANYATTR_STRICT	3

### struct xmlSchemaAttribute

    struct xmlSchemaAttribute {
        xmlSchemaTypeType type;	/* The kind of type */
        struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */
        xmlChar *name;
        xmlChar *id;
        xmlChar *ref;
        xmlChar *refNs;
        xmlChar *typeName;
        xmlChar *typeNs;
        xmlSchemaAnnotPtr annot;

        xmlSchemaTypePtr base;
        int occurs;
        xmlChar *defValue;
        xmlSchemaTypePtr subtypes;
        xmlNodePtr node;
    };

### xmlSchemaAttributePtr

    typedef xmlSchemaAttribute *xmlSchemaAttributePtr;

### struct xmlSchemaAttributeGroup

    struct xmlSchemaAttributeGroup {
        xmlSchemaTypeType type;	/* The kind of type */
        struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */
        xmlChar *name;
        xmlChar *id;
        xmlChar *ref;
        xmlChar *refNs;
        xmlSchemaAnnotPtr annot;

        xmlSchemaAttributePtr attributes;
        xmlNodePtr node;
    };

### xmlSchemaAttributeGroupPtr

    typedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr;

### XML_SCHEMAS_TYPE_MIXED

    #define XML_SCHEMAS_TYPE_MIXED		1 << 0

the element content type is mixed

### XML_SCHEMAS_ELEM_NILLABLE

    #define XML_SCHEMAS_ELEM_NILLABLE	1 << 0

the element is nillable

### XML_SCHEMAS_ELEM_GLOBAL

    #define XML_SCHEMAS_ELEM_GLOBAL		1 << 1

the element is global

### XML_SCHEMAS_ELEM_DEFAULT

    #define XML_SCHEMAS_ELEM_DEFAULT	1 << 2

the element has a default value

### XML_SCHEMAS_ELEM_FIXED

    #define XML_SCHEMAS_ELEM_FIXED		1 << 3

the element has a fixed value

### XML_SCHEMAS_ELEM_ABSTRACT

    #define XML_SCHEMAS_ELEM_ABSTRACT	1 << 4

the element is abstract

### XML_SCHEMAS_ELEM_TOPLEVEL

    #define XML_SCHEMAS_ELEM_TOPLEVEL	1 << 5

the element is top level

### XML_SCHEMAS_ELEM_REF

    #define XML_SCHEMAS_ELEM_REF		1 << 6

the element is a reference to a type

### struct xmlSchemaElement

    struct xmlSchemaElement {
        xmlSchemaTypeType type;	/* The kind of type */
        struct _xmlSchemaType *next;/* the next type if in a sequence ... */
        xmlChar *name;
        xmlChar *id;
        xmlChar *ref;
        xmlChar *refNs;
        xmlSchemaAnnotPtr annot;
        xmlSchemaTypePtr subtypes;
        xmlSchemaAttributePtr attributes;
        xmlNodePtr node;
        int minOccurs;
        int maxOccurs;

        int flags;
        xmlChar *targetNamespace;
        xmlChar *namedType;
        xmlChar *namedTypeNs;
        xmlChar *substGroup;
        xmlChar *substGroupNs;
        xmlChar *scope;
        xmlChar *value;
        struct _xmlSchemaElement *refDecl;
        xmlRegexpPtr contModel;
        xmlSchemaContentType contentType;
    };

xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of structures must be kept similar

### xmlSchemaElementPtr

    typedef xmlSchemaElement *xmlSchemaElementPtr;

### XML_SCHEMAS_FACET_UNKNOWN

    #define XML_SCHEMAS_FACET_UNKNOWN	0

### XML_SCHEMAS_FACET_PRESERVE

    #define XML_SCHEMAS_FACET_PRESERVE	1

### XML_SCHEMAS_FACET_REPLACE

    #define XML_SCHEMAS_FACET_REPLACE	2

### XML_SCHEMAS_FACET_COLLAPSE

    #define XML_SCHEMAS_FACET_COLLAPSE	3

### struct xmlSchemaNotation

    struct xmlSchemaNotation {
        xmlSchemaTypeType type;	/* The kind of type */
        xmlChar *name;
        xmlSchemaAnnotPtr annot;
        xmlChar *identifier;
    };

### xmlSchemaNotationPtr

    typedef xmlSchemaNotation *xmlSchemaNotationPtr;

### XML_SCHEMAS_QUALIF_ELEM

    #define XML_SCHEMAS_QUALIF_ELEM		1 << 0

the shemas requires qualified elements

### XML_SCHEMAS_QUALIF_ATTR

    #define XML_SCHEMAS_QUALIF_ATTR		1 << 1

the shemas requires qualified attributes

### struct xmlSchema

    struct xmlSchema {
        xmlChar *name;        /* schema name */
        xmlChar *targetNamespace;     /* the target namespace */
        xmlChar *version;
        xmlChar *id;
        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;
    };

### xmlSchemaFreeType ()

    void        xmlSchemaFreeType               (xmlSchemaTypePtr type);

Deallocate a Schema Type structure.

`type` : | a schema type structure