#ifndef __XML_SCHEMAS_INTERNALS_H__
#define __XML_SCHEMAS_INTERNALS_H__
#include <libxml/xmlversion.h>
#include <libxml/xmlregexp.h>
#include <libxml/hash.h>
#include <libxml/dict.h>
#include <libxml/tree.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _xmlSchemaType xmlSchemaType;
typedef xmlSchemaType *xmlSchemaTypePtr;
typedef struct _xmlSchemaFacet xmlSchemaFacet;
typedef xmlSchemaFacet *xmlSchemaFacetPtr;
typedef struct _xmlSchemaAnnot xmlSchemaAnnot;
typedef xmlSchemaAnnot *xmlSchemaAnnotPtr;
typedef struct _xmlSchemaAttribute xmlSchemaAttribute;
typedef xmlSchemaAttribute *xmlSchemaAttributePtr;
typedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup;
typedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr;
typedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink;
typedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr;
typedef struct _xmlSchemaElement xmlSchemaElement;
typedef xmlSchemaElement *xmlSchemaElementPtr;
typedef struct _xmlSchemaFacetLink xmlSchemaFacetLink;
typedef xmlSchemaFacetLink *xmlSchemaFacetLinkPtr;
typedef struct _xmlSchemaNotation xmlSchemaNotation;
typedef xmlSchemaNotation *xmlSchemaNotationPtr;
typedef struct _xmlSchemaTypeLink xmlSchemaTypeLink;
typedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr;
typedef struct _xmlSchemaVal xmlSchemaVal;
typedef struct _xmlSchemaWildcard xmlSchemaWildcard;
typedef xmlSchemaWildcard *xmlSchemaWildcardPtr;
typedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs;
typedef xmlSchemaWildcardNs *xmlSchemaWildcardNsPtr;
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;
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;
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 = 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;
struct _xmlSchema {
const xmlChar *name;
const xmlChar *targetNamespace;
const xmlChar *version;
const xmlChar *id;
xmlDoc *doc;
xmlSchemaAnnot *annot;
int flags;
xmlHashTable *typeDecl;
xmlHashTable *attrDecl;
xmlHashTable *attrgrpDecl;
xmlHashTable *elemDecl;
xmlHashTable *notaDecl;
xmlHashTable *schemasImports;
void *_private;
xmlHashTable *groupDecl;
xmlDict *dict;
void *includes;
int preserve;
int counter;
xmlHashTable *idcDef;
void *volatiles;
};
struct _xmlSchemaAnnot {
struct _xmlSchemaAnnot *next;
xmlNode *content;
};
struct _xmlSchemaAttribute {
xmlSchemaTypeType type;
struct _xmlSchemaAttribute *next;
const xmlChar *name;
const xmlChar *id;
const xmlChar *ref;
const xmlChar *refNs;
const xmlChar *typeName;
const xmlChar *typeNs;
xmlSchemaAnnot *annot;
xmlSchemaType *base;
int occurs;
const xmlChar *defValue;
xmlSchemaType *subtypes;
xmlNode *node;
const xmlChar *targetNamespace;
int flags;
const xmlChar *refPrefix;
xmlSchemaVal *defVal;
xmlSchemaAttribute *refDecl;
};
struct _xmlSchemaAttributeGroup {
xmlSchemaTypeType type;
struct _xmlSchemaAttribute *next;
const xmlChar *name;
const xmlChar *id;
const xmlChar *ref;
const xmlChar *refNs;
xmlSchemaAnnot *annot;
xmlSchemaAttribute *attributes;
xmlNode *node;
int flags;
xmlSchemaWildcard *attributeWildcard;
const xmlChar *refPrefix;
xmlSchemaAttributeGroup *refItem;
const xmlChar *targetNamespace;
void *attrUses;
};
struct _xmlSchemaAttributeLink {
struct _xmlSchemaAttributeLink *next;
struct _xmlSchemaAttribute *attr;
};
struct _xmlSchemaElement {
xmlSchemaTypeType type;
struct _xmlSchemaType *next;
const xmlChar *name;
const xmlChar *id;
const xmlChar *ref;
const xmlChar *refNs;
xmlSchemaAnnot *annot;
xmlSchemaType *subtypes;
xmlSchemaAttribute *attributes;
xmlNode *node;
int minOccurs;
int maxOccurs;
int flags;
const xmlChar *targetNamespace;
const xmlChar *namedType;
const xmlChar *namedTypeNs;
const xmlChar *substGroup;
const xmlChar *substGroupNs;
const xmlChar *scope;
const xmlChar *value;
struct _xmlSchemaElement *refDecl;
xmlRegexp *contModel;
xmlSchemaContentType contentType;
const xmlChar *refPrefix;
xmlSchemaVal *defVal;
void *idcs;
};
struct _xmlSchemaFacet {
xmlSchemaTypeType type;
struct _xmlSchemaFacet *next;
const xmlChar *value;
const xmlChar *id;
xmlSchemaAnnot *annot;
xmlNode *node;
int fixed;
int whitespace;
xmlSchemaVal *val;
xmlRegexp *regexp;
};
struct _xmlSchemaFacetLink {
struct _xmlSchemaFacetLink *next;
xmlSchemaFacet *facet;
};
struct _xmlSchemaNotation {
xmlSchemaTypeType type;
const xmlChar *name;
xmlSchemaAnnot *annot;
const xmlChar *identifier;
const xmlChar *targetNamespace;
};
struct _xmlSchemaType {
xmlSchemaTypeType type;
struct _xmlSchemaType *next;
const xmlChar *name;
const xmlChar *id ;
const xmlChar *ref;
const xmlChar *refNs;
xmlSchemaAnnot *annot;
xmlSchemaType *subtypes;
xmlSchemaAttribute *attributes;
xmlNode *node;
int minOccurs;
int maxOccurs;
int flags;
xmlSchemaContentType contentType;
const xmlChar *base;
const xmlChar *baseNs;
xmlSchemaType *baseType;
xmlSchemaFacet *facets;
struct _xmlSchemaType *redef;
int recurse;
xmlSchemaAttributeLink **attributeUses;
xmlSchemaWildcard *attributeWildcard;
int builtInType;
xmlSchemaTypeLink *memberTypes;
xmlSchemaFacetLink *facetSet;
const xmlChar *refPrefix;
xmlSchemaType *contentTypeDef;
xmlRegexp *contModel;
const xmlChar *targetNamespace;
void *attrUses;
};
struct _xmlSchemaTypeLink {
struct _xmlSchemaTypeLink *next;
xmlSchemaType *type;
};
struct _xmlSchemaWildcard {
xmlSchemaTypeType type;
const xmlChar *id;
xmlSchemaAnnot *annot;
xmlNode *node;
int minOccurs;
int maxOccurs;
int processContents;
int any;
xmlSchemaWildcardNs *nsSet;
xmlSchemaWildcardNs *negNsSet;
int flags;
};
struct _xmlSchemaWildcardNs {
struct _xmlSchemaWildcardNs *next;
const xmlChar *value;
};
#ifdef __cplusplus
}
#endif
#endif