📄 schemasinternals.h
字号:
/* * 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 __cplusplusextern "C" {#endiftypedef 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:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -