Annotation of embedaddon/libxml2/include/libxml/schemasInternals.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  * Summary: internal interfaces for XML Schemas
        !             3:  * Description: internal interfaces for the XML Schemas handling
        !             4:  *              and schema validity checking
        !             5:  *             The Schemas development is a Work In Progress.
        !             6:  *              Some of those interfaces are not garanteed to be API or ABI stable !
        !             7:  *
        !             8:  * Copy: See Copyright for the status of this software.
        !             9:  *
        !            10:  * Author: Daniel Veillard
        !            11:  */
        !            12: 
        !            13: 
        !            14: #ifndef __XML_SCHEMA_INTERNALS_H__
        !            15: #define __XML_SCHEMA_INTERNALS_H__
        !            16: 
        !            17: #include <libxml/xmlversion.h>
        !            18: 
        !            19: #ifdef LIBXML_SCHEMAS_ENABLED
        !            20: 
        !            21: #include <libxml/xmlregexp.h>
        !            22: #include <libxml/hash.h>
        !            23: #include <libxml/dict.h>
        !            24: 
        !            25: #ifdef __cplusplus
        !            26: extern "C" {
        !            27: #endif
        !            28: 
        !            29: typedef enum {
        !            30:     XML_SCHEMAS_UNKNOWN = 0,
        !            31:     XML_SCHEMAS_STRING,
        !            32:     XML_SCHEMAS_NORMSTRING,
        !            33:     XML_SCHEMAS_DECIMAL,
        !            34:     XML_SCHEMAS_TIME,
        !            35:     XML_SCHEMAS_GDAY,
        !            36:     XML_SCHEMAS_GMONTH,
        !            37:     XML_SCHEMAS_GMONTHDAY,
        !            38:     XML_SCHEMAS_GYEAR,
        !            39:     XML_SCHEMAS_GYEARMONTH,
        !            40:     XML_SCHEMAS_DATE,
        !            41:     XML_SCHEMAS_DATETIME,
        !            42:     XML_SCHEMAS_DURATION,
        !            43:     XML_SCHEMAS_FLOAT,
        !            44:     XML_SCHEMAS_DOUBLE,
        !            45:     XML_SCHEMAS_BOOLEAN,
        !            46:     XML_SCHEMAS_TOKEN,
        !            47:     XML_SCHEMAS_LANGUAGE,
        !            48:     XML_SCHEMAS_NMTOKEN,
        !            49:     XML_SCHEMAS_NMTOKENS,
        !            50:     XML_SCHEMAS_NAME,
        !            51:     XML_SCHEMAS_QNAME,
        !            52:     XML_SCHEMAS_NCNAME,
        !            53:     XML_SCHEMAS_ID,
        !            54:     XML_SCHEMAS_IDREF,
        !            55:     XML_SCHEMAS_IDREFS,
        !            56:     XML_SCHEMAS_ENTITY,
        !            57:     XML_SCHEMAS_ENTITIES,
        !            58:     XML_SCHEMAS_NOTATION,
        !            59:     XML_SCHEMAS_ANYURI,
        !            60:     XML_SCHEMAS_INTEGER,
        !            61:     XML_SCHEMAS_NPINTEGER,
        !            62:     XML_SCHEMAS_NINTEGER,
        !            63:     XML_SCHEMAS_NNINTEGER,
        !            64:     XML_SCHEMAS_PINTEGER,
        !            65:     XML_SCHEMAS_INT,
        !            66:     XML_SCHEMAS_UINT,
        !            67:     XML_SCHEMAS_LONG,
        !            68:     XML_SCHEMAS_ULONG,
        !            69:     XML_SCHEMAS_SHORT,
        !            70:     XML_SCHEMAS_USHORT,
        !            71:     XML_SCHEMAS_BYTE,
        !            72:     XML_SCHEMAS_UBYTE,
        !            73:     XML_SCHEMAS_HEXBINARY,
        !            74:     XML_SCHEMAS_BASE64BINARY,
        !            75:     XML_SCHEMAS_ANYTYPE,
        !            76:     XML_SCHEMAS_ANYSIMPLETYPE
        !            77: } xmlSchemaValType;
        !            78: 
        !            79: /*
        !            80:  * XML Schemas defines multiple type of types.
        !            81:  */
        !            82: typedef enum {
        !            83:     XML_SCHEMA_TYPE_BASIC = 1, /* A built-in datatype */
        !            84:     XML_SCHEMA_TYPE_ANY,
        !            85:     XML_SCHEMA_TYPE_FACET,
        !            86:     XML_SCHEMA_TYPE_SIMPLE,
        !            87:     XML_SCHEMA_TYPE_COMPLEX,
        !            88:     XML_SCHEMA_TYPE_SEQUENCE = 6,
        !            89:     XML_SCHEMA_TYPE_CHOICE,
        !            90:     XML_SCHEMA_TYPE_ALL,
        !            91:     XML_SCHEMA_TYPE_SIMPLE_CONTENT,
        !            92:     XML_SCHEMA_TYPE_COMPLEX_CONTENT,
        !            93:     XML_SCHEMA_TYPE_UR,
        !            94:     XML_SCHEMA_TYPE_RESTRICTION,
        !            95:     XML_SCHEMA_TYPE_EXTENSION,
        !            96:     XML_SCHEMA_TYPE_ELEMENT,
        !            97:     XML_SCHEMA_TYPE_ATTRIBUTE,
        !            98:     XML_SCHEMA_TYPE_ATTRIBUTEGROUP,
        !            99:     XML_SCHEMA_TYPE_GROUP,
        !           100:     XML_SCHEMA_TYPE_NOTATION,
        !           101:     XML_SCHEMA_TYPE_LIST,
        !           102:     XML_SCHEMA_TYPE_UNION,
        !           103:     XML_SCHEMA_TYPE_ANY_ATTRIBUTE,
        !           104:     XML_SCHEMA_TYPE_IDC_UNIQUE,
        !           105:     XML_SCHEMA_TYPE_IDC_KEY,
        !           106:     XML_SCHEMA_TYPE_IDC_KEYREF,
        !           107:     XML_SCHEMA_TYPE_PARTICLE = 25, 
        !           108:     XML_SCHEMA_TYPE_ATTRIBUTE_USE, 
        !           109:     XML_SCHEMA_FACET_MININCLUSIVE = 1000,
        !           110:     XML_SCHEMA_FACET_MINEXCLUSIVE,
        !           111:     XML_SCHEMA_FACET_MAXINCLUSIVE,
        !           112:     XML_SCHEMA_FACET_MAXEXCLUSIVE,
        !           113:     XML_SCHEMA_FACET_TOTALDIGITS,
        !           114:     XML_SCHEMA_FACET_FRACTIONDIGITS,
        !           115:     XML_SCHEMA_FACET_PATTERN,
        !           116:     XML_SCHEMA_FACET_ENUMERATION,
        !           117:     XML_SCHEMA_FACET_WHITESPACE,
        !           118:     XML_SCHEMA_FACET_LENGTH,
        !           119:     XML_SCHEMA_FACET_MAXLENGTH,
        !           120:     XML_SCHEMA_FACET_MINLENGTH,
        !           121:     XML_SCHEMA_EXTRA_QNAMEREF = 2000,
        !           122:     XML_SCHEMA_EXTRA_ATTR_USE_PROHIB
        !           123: } xmlSchemaTypeType;
        !           124: 
        !           125: typedef enum {
        !           126:     XML_SCHEMA_CONTENT_UNKNOWN = 0,
        !           127:     XML_SCHEMA_CONTENT_EMPTY = 1,
        !           128:     XML_SCHEMA_CONTENT_ELEMENTS,
        !           129:     XML_SCHEMA_CONTENT_MIXED,
        !           130:     XML_SCHEMA_CONTENT_SIMPLE,
        !           131:     XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, /* Obsolete */
        !           132:     XML_SCHEMA_CONTENT_BASIC,
        !           133:     XML_SCHEMA_CONTENT_ANY
        !           134: } xmlSchemaContentType;
        !           135: 
        !           136: typedef struct _xmlSchemaVal xmlSchemaVal;
        !           137: typedef xmlSchemaVal *xmlSchemaValPtr;
        !           138: 
        !           139: typedef struct _xmlSchemaType xmlSchemaType;
        !           140: typedef xmlSchemaType *xmlSchemaTypePtr;
        !           141: 
        !           142: typedef struct _xmlSchemaFacet xmlSchemaFacet;
        !           143: typedef xmlSchemaFacet *xmlSchemaFacetPtr;
        !           144: 
        !           145: /**
        !           146:  * Annotation
        !           147:  */
        !           148: typedef struct _xmlSchemaAnnot xmlSchemaAnnot;
        !           149: typedef xmlSchemaAnnot *xmlSchemaAnnotPtr;
        !           150: struct _xmlSchemaAnnot {
        !           151:     struct _xmlSchemaAnnot *next;
        !           152:     xmlNodePtr content;         /* the annotation */
        !           153: };
        !           154: 
        !           155: /**
        !           156:  * XML_SCHEMAS_ANYATTR_SKIP:
        !           157:  *
        !           158:  * Skip unknown attribute from validation
        !           159:  * Obsolete, not used anymore.
        !           160:  */
        !           161: #define XML_SCHEMAS_ANYATTR_SKIP        1
        !           162: /**
        !           163:  * XML_SCHEMAS_ANYATTR_LAX:
        !           164:  *
        !           165:  * Ignore validation non definition on attributes
        !           166:  * Obsolete, not used anymore.
        !           167:  */
        !           168: #define XML_SCHEMAS_ANYATTR_LAX                2
        !           169: /**
        !           170:  * XML_SCHEMAS_ANYATTR_STRICT:
        !           171:  *
        !           172:  * Apply strict validation rules on attributes
        !           173:  * Obsolete, not used anymore.
        !           174:  */
        !           175: #define XML_SCHEMAS_ANYATTR_STRICT        3
        !           176: /**
        !           177:  * XML_SCHEMAS_ANY_SKIP:
        !           178:  *
        !           179:  * Skip unknown attribute from validation
        !           180:  */
        !           181: #define XML_SCHEMAS_ANY_SKIP        1
        !           182: /**
        !           183:  * XML_SCHEMAS_ANY_LAX:
        !           184:  *
        !           185:  * Used by wildcards.
        !           186:  * Validate if type found, don't worry if not found
        !           187:  */
        !           188: #define XML_SCHEMAS_ANY_LAX                2
        !           189: /**
        !           190:  * XML_SCHEMAS_ANY_STRICT:
        !           191:  *
        !           192:  * Used by wildcards.
        !           193:  * Apply strict validation rules
        !           194:  */
        !           195: #define XML_SCHEMAS_ANY_STRICT        3
        !           196: /**
        !           197:  * XML_SCHEMAS_ATTR_USE_PROHIBITED:
        !           198:  *
        !           199:  * Used by wildcards.
        !           200:  * The attribute is prohibited.
        !           201:  */
        !           202: #define XML_SCHEMAS_ATTR_USE_PROHIBITED 0
        !           203: /**
        !           204:  * XML_SCHEMAS_ATTR_USE_REQUIRED:
        !           205:  *
        !           206:  * The attribute is required.
        !           207:  */
        !           208: #define XML_SCHEMAS_ATTR_USE_REQUIRED 1
        !           209: /**
        !           210:  * XML_SCHEMAS_ATTR_USE_OPTIONAL:
        !           211:  *
        !           212:  * The attribute is optional.
        !           213:  */
        !           214: #define XML_SCHEMAS_ATTR_USE_OPTIONAL 2
        !           215: /**
        !           216:  * XML_SCHEMAS_ATTR_GLOBAL:
        !           217:  *
        !           218:  * allow elements in no namespace
        !           219:  */
        !           220: #define XML_SCHEMAS_ATTR_GLOBAL        1 << 0
        !           221: /**
        !           222:  * XML_SCHEMAS_ATTR_NSDEFAULT:
        !           223:  *
        !           224:  * allow elements in no namespace
        !           225:  */
        !           226: #define XML_SCHEMAS_ATTR_NSDEFAULT        1 << 7
        !           227: /**
        !           228:  * XML_SCHEMAS_ATTR_INTERNAL_RESOLVED:
        !           229:  *
        !           230:  * this is set when the "type" and "ref" references
        !           231:  * have been resolved.
        !           232:  */
        !           233: #define XML_SCHEMAS_ATTR_INTERNAL_RESOLVED        1 << 8
        !           234: /**
        !           235:  * XML_SCHEMAS_ATTR_FIXED:
        !           236:  *
        !           237:  * the attribute has a fixed value
        !           238:  */
        !           239: #define XML_SCHEMAS_ATTR_FIXED        1 << 9
        !           240: 
        !           241: /**
        !           242:  * xmlSchemaAttribute:
        !           243:  * An attribute definition.
        !           244:  */
        !           245: 
        !           246: typedef struct _xmlSchemaAttribute xmlSchemaAttribute;
        !           247: typedef xmlSchemaAttribute *xmlSchemaAttributePtr;
        !           248: struct _xmlSchemaAttribute {
        !           249:     xmlSchemaTypeType type;
        !           250:     struct _xmlSchemaAttribute *next; /* the next attribute (not used?) */
        !           251:     const xmlChar *name; /* the name of the declaration */
        !           252:     const xmlChar *id; /* Deprecated; not used */
        !           253:     const xmlChar *ref; /* Deprecated; not used */
        !           254:     const xmlChar *refNs; /* Deprecated; not used */
        !           255:     const xmlChar *typeName; /* the local name of the type definition */
        !           256:     const xmlChar *typeNs; /* the ns URI of the type definition */
        !           257:     xmlSchemaAnnotPtr annot;
        !           258: 
        !           259:     xmlSchemaTypePtr base; /* Deprecated; not used */
        !           260:     int occurs; /* Deprecated; not used */
        !           261:     const xmlChar *defValue; /* The initial value of the value constraint */
        !           262:     xmlSchemaTypePtr subtypes; /* the type definition */
        !           263:     xmlNodePtr node;
        !           264:     const xmlChar *targetNamespace;
        !           265:     int flags;
        !           266:     const xmlChar *refPrefix; /* Deprecated; not used */
        !           267:     xmlSchemaValPtr defVal; /* The compiled value constraint */
        !           268:     xmlSchemaAttributePtr refDecl; /* Deprecated; not used */
        !           269: };
        !           270: 
        !           271: /**
        !           272:  * xmlSchemaAttributeLink:
        !           273:  * Used to build a list of attribute uses on complexType definitions.
        !           274:  * WARNING: Deprecated; not used.
        !           275:  */
        !           276: typedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink;
        !           277: typedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr;
        !           278: struct _xmlSchemaAttributeLink {
        !           279:     struct _xmlSchemaAttributeLink *next;/* the next attribute link ... */
        !           280:     struct _xmlSchemaAttribute *attr;/* the linked attribute */
        !           281: };
        !           282: 
        !           283: /**
        !           284:  * XML_SCHEMAS_WILDCARD_COMPLETE:
        !           285:  *
        !           286:  * If the wildcard is complete.
        !           287:  */
        !           288: #define XML_SCHEMAS_WILDCARD_COMPLETE 1 << 0
        !           289: 
        !           290: /**
        !           291:  * xmlSchemaCharValueLink:
        !           292:  * Used to build a list of namespaces on wildcards.
        !           293:  */
        !           294: typedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs;
        !           295: typedef xmlSchemaWildcardNs *xmlSchemaWildcardNsPtr;
        !           296: struct _xmlSchemaWildcardNs {
        !           297:     struct _xmlSchemaWildcardNs *next;/* the next constraint link ... */
        !           298:     const xmlChar *value;/* the value */
        !           299: };
        !           300: 
        !           301: /**
        !           302:  * xmlSchemaWildcard.
        !           303:  * A wildcard.
        !           304:  */
        !           305: typedef struct _xmlSchemaWildcard xmlSchemaWildcard;
        !           306: typedef xmlSchemaWildcard *xmlSchemaWildcardPtr;
        !           307: struct _xmlSchemaWildcard {
        !           308:     xmlSchemaTypeType type;        /* The kind of type */
        !           309:     const xmlChar *id; /* Deprecated; not used */
        !           310:     xmlSchemaAnnotPtr annot;
        !           311:     xmlNodePtr node;
        !           312:     int minOccurs; /* Deprecated; not used */
        !           313:     int maxOccurs; /* Deprecated; not used */
        !           314:     int processContents;
        !           315:     int any; /* Indicates if the ns constraint is of ##any */
        !           316:     xmlSchemaWildcardNsPtr nsSet; /* The list of allowed namespaces */
        !           317:     xmlSchemaWildcardNsPtr negNsSet; /* The negated namespace */
        !           318:     int flags;
        !           319: };
        !           320: 
        !           321: /**
        !           322:  * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED:
        !           323:  *
        !           324:  * The attribute wildcard has been already builded.
        !           325:  */
        !           326: #define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED 1 << 0
        !           327: /**
        !           328:  * XML_SCHEMAS_ATTRGROUP_GLOBAL:
        !           329:  *
        !           330:  * The attribute wildcard has been already builded.
        !           331:  */
        !           332: #define XML_SCHEMAS_ATTRGROUP_GLOBAL 1 << 1
        !           333: /**
        !           334:  * XML_SCHEMAS_ATTRGROUP_MARKED:
        !           335:  *
        !           336:  * Marks the attr group as marked; used for circular checks.
        !           337:  */
        !           338: #define XML_SCHEMAS_ATTRGROUP_MARKED 1 << 2
        !           339: 
        !           340: /**
        !           341:  * XML_SCHEMAS_ATTRGROUP_REDEFINED:
        !           342:  *
        !           343:  * The attr group was redefined.
        !           344:  */
        !           345: #define XML_SCHEMAS_ATTRGROUP_REDEFINED 1 << 3
        !           346: /**
        !           347:  * XML_SCHEMAS_ATTRGROUP_HAS_REFS:
        !           348:  *
        !           349:  * Whether this attr. group contains attr. group references.
        !           350:  */
        !           351: #define XML_SCHEMAS_ATTRGROUP_HAS_REFS 1 << 4
        !           352: 
        !           353: /**
        !           354:  * An attribute group definition.
        !           355:  *
        !           356:  * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures
        !           357:  * must be kept similar
        !           358:  */
        !           359: typedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup;
        !           360: typedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr;
        !           361: struct _xmlSchemaAttributeGroup {
        !           362:     xmlSchemaTypeType type;        /* The kind of type */
        !           363:     struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */
        !           364:     const xmlChar *name;
        !           365:     const xmlChar *id;
        !           366:     const xmlChar *ref; /* Deprecated; not used */
        !           367:     const xmlChar *refNs; /* Deprecated; not used */
        !           368:     xmlSchemaAnnotPtr annot;
        !           369: 
        !           370:     xmlSchemaAttributePtr attributes; /* Deprecated; not used */
        !           371:     xmlNodePtr node;
        !           372:     int flags;
        !           373:     xmlSchemaWildcardPtr attributeWildcard;
        !           374:     const xmlChar *refPrefix; /* Deprecated; not used */
        !           375:     xmlSchemaAttributeGroupPtr refItem; /* Deprecated; not used */
        !           376:     const xmlChar *targetNamespace;
        !           377:     void *attrUses;
        !           378: };
        !           379: 
        !           380: /**
        !           381:  * xmlSchemaTypeLink:
        !           382:  * Used to build a list of types (e.g. member types of
        !           383:  * simpleType with variety "union").
        !           384:  */
        !           385: typedef struct _xmlSchemaTypeLink xmlSchemaTypeLink;
        !           386: typedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr;
        !           387: struct _xmlSchemaTypeLink {
        !           388:     struct _xmlSchemaTypeLink *next;/* the next type link ... */
        !           389:     xmlSchemaTypePtr type;/* the linked type */
        !           390: };
        !           391: 
        !           392: /**
        !           393:  * xmlSchemaFacetLink:
        !           394:  * Used to build a list of facets.
        !           395:  */
        !           396: typedef struct _xmlSchemaFacetLink xmlSchemaFacetLink;
        !           397: typedef xmlSchemaFacetLink *xmlSchemaFacetLinkPtr;
        !           398: struct _xmlSchemaFacetLink {
        !           399:     struct _xmlSchemaFacetLink *next;/* the next facet link ... */
        !           400:     xmlSchemaFacetPtr facet;/* the linked facet */
        !           401: };
        !           402: 
        !           403: /**
        !           404:  * XML_SCHEMAS_TYPE_MIXED:
        !           405:  *
        !           406:  * the element content type is mixed
        !           407:  */
        !           408: #define XML_SCHEMAS_TYPE_MIXED                1 << 0
        !           409: /**
        !           410:  * XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION:
        !           411:  *
        !           412:  * the simple or complex type has a derivation method of "extension".
        !           413:  */
        !           414: #define XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION                1 << 1
        !           415: /**
        !           416:  * XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION:
        !           417:  *
        !           418:  * the simple or complex type has a derivation method of "restriction".
        !           419:  */
        !           420: #define XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION                1 << 2
        !           421: /**
        !           422:  * XML_SCHEMAS_TYPE_GLOBAL:
        !           423:  *
        !           424:  * the type is global
        !           425:  */
        !           426: #define XML_SCHEMAS_TYPE_GLOBAL                1 << 3
        !           427: /**
        !           428:  * XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD:
        !           429:  *
        !           430:  * the complexType owns an attribute wildcard, i.e.
        !           431:  * it can be freed by the complexType
        !           432:  */
        !           433: #define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD    1 << 4 /* Obsolete. */
        !           434: /**
        !           435:  * XML_SCHEMAS_TYPE_VARIETY_ABSENT:
        !           436:  *
        !           437:  * the simpleType has a variety of "absent".
        !           438:  * TODO: Actually not necessary :-/, since if
        !           439:  * none of the variety flags occur then it's
        !           440:  * automatically absent.
        !           441:  */
        !           442: #define XML_SCHEMAS_TYPE_VARIETY_ABSENT    1 << 5
        !           443: /**
        !           444:  * XML_SCHEMAS_TYPE_VARIETY_LIST:
        !           445:  *
        !           446:  * the simpleType has a variety of "list".
        !           447:  */
        !           448: #define XML_SCHEMAS_TYPE_VARIETY_LIST    1 << 6
        !           449: /**
        !           450:  * XML_SCHEMAS_TYPE_VARIETY_UNION:
        !           451:  *
        !           452:  * the simpleType has a variety of "union".
        !           453:  */
        !           454: #define XML_SCHEMAS_TYPE_VARIETY_UNION    1 << 7
        !           455: /**
        !           456:  * XML_SCHEMAS_TYPE_VARIETY_ATOMIC:
        !           457:  *
        !           458:  * the simpleType has a variety of "union".
        !           459:  */
        !           460: #define XML_SCHEMAS_TYPE_VARIETY_ATOMIC    1 << 8
        !           461: /**
        !           462:  * XML_SCHEMAS_TYPE_FINAL_EXTENSION:
        !           463:  *
        !           464:  * the complexType has a final of "extension".
        !           465:  */
        !           466: #define XML_SCHEMAS_TYPE_FINAL_EXTENSION    1 << 9
        !           467: /**
        !           468:  * XML_SCHEMAS_TYPE_FINAL_RESTRICTION:
        !           469:  *
        !           470:  * the simpleType/complexType has a final of "restriction".
        !           471:  */
        !           472: #define XML_SCHEMAS_TYPE_FINAL_RESTRICTION    1 << 10
        !           473: /**
        !           474:  * XML_SCHEMAS_TYPE_FINAL_LIST:
        !           475:  *
        !           476:  * the simpleType has a final of "list".
        !           477:  */
        !           478: #define XML_SCHEMAS_TYPE_FINAL_LIST    1 << 11
        !           479: /**
        !           480:  * XML_SCHEMAS_TYPE_FINAL_UNION:
        !           481:  *
        !           482:  * the simpleType has a final of "union".
        !           483:  */
        !           484: #define XML_SCHEMAS_TYPE_FINAL_UNION    1 << 12
        !           485: /**
        !           486:  * XML_SCHEMAS_TYPE_FINAL_DEFAULT:
        !           487:  *
        !           488:  * the simpleType has a final of "default".
        !           489:  */
        !           490: #define XML_SCHEMAS_TYPE_FINAL_DEFAULT    1 << 13
        !           491: /**
        !           492:  * XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE:
        !           493:  *
        !           494:  * Marks the item as a builtin primitive.
        !           495:  */
        !           496: #define XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE    1 << 14
        !           497: /**
        !           498:  * XML_SCHEMAS_TYPE_MARKED:
        !           499:  *
        !           500:  * Marks the item as marked; used for circular checks.
        !           501:  */
        !           502: #define XML_SCHEMAS_TYPE_MARKED        1 << 16
        !           503: /**
        !           504:  * XML_SCHEMAS_TYPE_BLOCK_DEFAULT:
        !           505:  *
        !           506:  * the complexType did not specify 'block' so use the default of the
        !           507:  * <schema> item.
        !           508:  */
        !           509: #define XML_SCHEMAS_TYPE_BLOCK_DEFAULT    1 << 17
        !           510: /**
        !           511:  * XML_SCHEMAS_TYPE_BLOCK_EXTENSION:
        !           512:  *
        !           513:  * the complexType has a 'block' of "extension".
        !           514:  */
        !           515: #define XML_SCHEMAS_TYPE_BLOCK_EXTENSION    1 << 18
        !           516: /**
        !           517:  * XML_SCHEMAS_TYPE_BLOCK_RESTRICTION:
        !           518:  *
        !           519:  * the complexType has a 'block' of "restriction".
        !           520:  */
        !           521: #define XML_SCHEMAS_TYPE_BLOCK_RESTRICTION    1 << 19
        !           522: /**
        !           523:  * XML_SCHEMAS_TYPE_ABSTRACT:
        !           524:  *
        !           525:  * the simple/complexType is abstract.
        !           526:  */
        !           527: #define XML_SCHEMAS_TYPE_ABSTRACT    1 << 20
        !           528: /**
        !           529:  * XML_SCHEMAS_TYPE_FACETSNEEDVALUE:
        !           530:  *
        !           531:  * indicates if the facets need a computed value
        !           532:  */
        !           533: #define XML_SCHEMAS_TYPE_FACETSNEEDVALUE    1 << 21
        !           534: /**
        !           535:  * XML_SCHEMAS_TYPE_INTERNAL_RESOLVED:
        !           536:  *
        !           537:  * indicates that the type was typefixed
        !           538:  */
        !           539: #define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED    1 << 22
        !           540: /**
        !           541:  * XML_SCHEMAS_TYPE_INTERNAL_INVALID:
        !           542:  *
        !           543:  * indicates that the type is invalid
        !           544:  */
        !           545: #define XML_SCHEMAS_TYPE_INTERNAL_INVALID    1 << 23
        !           546: /**
        !           547:  * XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE:
        !           548:  *
        !           549:  * a whitespace-facet value of "preserve"
        !           550:  */
        !           551: #define XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE    1 << 24
        !           552: /**
        !           553:  * XML_SCHEMAS_TYPE_WHITESPACE_REPLACE:
        !           554:  *
        !           555:  * a whitespace-facet value of "replace"
        !           556:  */
        !           557: #define XML_SCHEMAS_TYPE_WHITESPACE_REPLACE    1 << 25
        !           558: /**
        !           559:  * XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE:
        !           560:  *
        !           561:  * a whitespace-facet value of "collapse"
        !           562:  */
        !           563: #define XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE    1 << 26
        !           564: /**
        !           565:  * XML_SCHEMAS_TYPE_HAS_FACETS:
        !           566:  *
        !           567:  * has facets
        !           568:  */
        !           569: #define XML_SCHEMAS_TYPE_HAS_FACETS    1 << 27
        !           570: /**
        !           571:  * XML_SCHEMAS_TYPE_NORMVALUENEEDED:
        !           572:  *
        !           573:  * indicates if the facets (pattern) need a normalized value
        !           574:  */
        !           575: #define XML_SCHEMAS_TYPE_NORMVALUENEEDED    1 << 28
        !           576: 
        !           577: /**
        !           578:  * XML_SCHEMAS_TYPE_FIXUP_1:
        !           579:  *
        !           580:  * First stage of fixup was done.
        !           581:  */
        !           582: #define XML_SCHEMAS_TYPE_FIXUP_1    1 << 29
        !           583: 
        !           584: /**
        !           585:  * XML_SCHEMAS_TYPE_REDEFINED:
        !           586:  *
        !           587:  * The type was redefined.
        !           588:  */
        !           589: #define XML_SCHEMAS_TYPE_REDEFINED    1 << 30
        !           590: /**
        !           591:  * XML_SCHEMAS_TYPE_REDEFINING:
        !           592:  *
        !           593:  * The type redefines an other type.
        !           594:  */
        !           595: /* #define XML_SCHEMAS_TYPE_REDEFINING    1 << 31 */
        !           596: 
        !           597: /**
        !           598:  * _xmlSchemaType:
        !           599:  *
        !           600:  * Schemas type definition.
        !           601:  */
        !           602: struct _xmlSchemaType {
        !           603:     xmlSchemaTypeType type; /* The kind of type */
        !           604:     struct _xmlSchemaType *next; /* the next type if in a sequence ... */
        !           605:     const xmlChar *name;
        !           606:     const xmlChar *id ; /* Deprecated; not used */
        !           607:     const xmlChar *ref; /* Deprecated; not used */
        !           608:     const xmlChar *refNs; /* Deprecated; not used */
        !           609:     xmlSchemaAnnotPtr annot;
        !           610:     xmlSchemaTypePtr subtypes;
        !           611:     xmlSchemaAttributePtr attributes; /* Deprecated; not used */
        !           612:     xmlNodePtr node;
        !           613:     int minOccurs; /* Deprecated; not used */
        !           614:     int maxOccurs; /* Deprecated; not used */
        !           615: 
        !           616:     int flags;
        !           617:     xmlSchemaContentType contentType;
        !           618:     const xmlChar *base; /* Base type's local name */
        !           619:     const xmlChar *baseNs; /* Base type's target namespace */
        !           620:     xmlSchemaTypePtr baseType; /* The base type component */
        !           621:     xmlSchemaFacetPtr facets; /* Local facets */
        !           622:     struct _xmlSchemaType *redef; /* Deprecated; not used */
        !           623:     int recurse; /* Obsolete */
        !           624:     xmlSchemaAttributeLinkPtr *attributeUses; /* Deprecated; not used */
        !           625:     xmlSchemaWildcardPtr attributeWildcard;
        !           626:     int builtInType; /* Type of built-in types. */
        !           627:     xmlSchemaTypeLinkPtr memberTypes; /* member-types if a union type. */
        !           628:     xmlSchemaFacetLinkPtr facetSet; /* All facets (incl. inherited) */
        !           629:     const xmlChar *refPrefix; /* Deprecated; not used */
        !           630:     xmlSchemaTypePtr contentTypeDef; /* Used for the simple content of complex types.
        !           631:                                         Could we use @subtypes for this? */
        !           632:     xmlRegexpPtr contModel; /* Holds the automaton of the content model */
        !           633:     const xmlChar *targetNamespace;
        !           634:     void *attrUses;
        !           635: };
        !           636: 
        !           637: /*
        !           638:  * xmlSchemaElement:
        !           639:  * An element definition.
        !           640:  *
        !           641:  * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of
        !           642:  * structures must be kept similar
        !           643:  */
        !           644: /**
        !           645:  * XML_SCHEMAS_ELEM_NILLABLE:
        !           646:  *
        !           647:  * the element is nillable
        !           648:  */
        !           649: #define XML_SCHEMAS_ELEM_NILLABLE        1 << 0
        !           650: /**
        !           651:  * XML_SCHEMAS_ELEM_GLOBAL:
        !           652:  *
        !           653:  * the element is global
        !           654:  */
        !           655: #define XML_SCHEMAS_ELEM_GLOBAL                1 << 1
        !           656: /**
        !           657:  * XML_SCHEMAS_ELEM_DEFAULT:
        !           658:  *
        !           659:  * the element has a default value
        !           660:  */
        !           661: #define XML_SCHEMAS_ELEM_DEFAULT        1 << 2
        !           662: /**
        !           663:  * XML_SCHEMAS_ELEM_FIXED:
        !           664:  *
        !           665:  * the element has a fixed value
        !           666:  */
        !           667: #define XML_SCHEMAS_ELEM_FIXED                1 << 3
        !           668: /**
        !           669:  * XML_SCHEMAS_ELEM_ABSTRACT:
        !           670:  *
        !           671:  * the element is abstract
        !           672:  */
        !           673: #define XML_SCHEMAS_ELEM_ABSTRACT        1 << 4
        !           674: /**
        !           675:  * XML_SCHEMAS_ELEM_TOPLEVEL:
        !           676:  *
        !           677:  * the element is top level
        !           678:  * obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead
        !           679:  */
        !           680: #define XML_SCHEMAS_ELEM_TOPLEVEL        1 << 5
        !           681: /**
        !           682:  * XML_SCHEMAS_ELEM_REF:
        !           683:  *
        !           684:  * the element is a reference to a type
        !           685:  */
        !           686: #define XML_SCHEMAS_ELEM_REF                1 << 6
        !           687: /**
        !           688:  * XML_SCHEMAS_ELEM_NSDEFAULT:
        !           689:  *
        !           690:  * allow elements in no namespace
        !           691:  * Obsolete, not used anymore.
        !           692:  */
        !           693: #define XML_SCHEMAS_ELEM_NSDEFAULT        1 << 7
        !           694: /**
        !           695:  * XML_SCHEMAS_ELEM_INTERNAL_RESOLVED:
        !           696:  *
        !           697:  * this is set when "type", "ref", "substitutionGroup"
        !           698:  * references have been resolved.
        !           699:  */
        !           700: #define XML_SCHEMAS_ELEM_INTERNAL_RESOLVED        1 << 8
        !           701:  /**
        !           702:  * XML_SCHEMAS_ELEM_CIRCULAR:
        !           703:  *
        !           704:  * a helper flag for the search of circular references.
        !           705:  */
        !           706: #define XML_SCHEMAS_ELEM_CIRCULAR        1 << 9
        !           707: /**
        !           708:  * XML_SCHEMAS_ELEM_BLOCK_ABSENT:
        !           709:  *
        !           710:  * the "block" attribute is absent
        !           711:  */
        !           712: #define XML_SCHEMAS_ELEM_BLOCK_ABSENT        1 << 10
        !           713: /**
        !           714:  * XML_SCHEMAS_ELEM_BLOCK_EXTENSION:
        !           715:  *
        !           716:  * disallowed substitutions are absent
        !           717:  */
        !           718: #define XML_SCHEMAS_ELEM_BLOCK_EXTENSION        1 << 11
        !           719: /**
        !           720:  * XML_SCHEMAS_ELEM_BLOCK_RESTRICTION:
        !           721:  *
        !           722:  * disallowed substitutions: "restriction"
        !           723:  */
        !           724: #define XML_SCHEMAS_ELEM_BLOCK_RESTRICTION        1 << 12
        !           725: /**
        !           726:  * XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION:
        !           727:  *
        !           728:  * disallowed substitutions: "substituion"
        !           729:  */
        !           730: #define XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION        1 << 13
        !           731: /**
        !           732:  * XML_SCHEMAS_ELEM_FINAL_ABSENT:
        !           733:  *
        !           734:  * substitution group exclusions are absent
        !           735:  */
        !           736: #define XML_SCHEMAS_ELEM_FINAL_ABSENT        1 << 14
        !           737: /**
        !           738:  * XML_SCHEMAS_ELEM_FINAL_EXTENSION:
        !           739:  *
        !           740:  * substitution group exclusions: "extension"
        !           741:  */
        !           742: #define XML_SCHEMAS_ELEM_FINAL_EXTENSION        1 << 15
        !           743: /**
        !           744:  * XML_SCHEMAS_ELEM_FINAL_RESTRICTION:
        !           745:  *
        !           746:  * substitution group exclusions: "restriction"
        !           747:  */
        !           748: #define XML_SCHEMAS_ELEM_FINAL_RESTRICTION        1 << 16
        !           749: /**
        !           750:  * XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD:
        !           751:  *
        !           752:  * the declaration is a substitution group head
        !           753:  */
        !           754: #define XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD        1 << 17
        !           755: /**
        !           756:  * XML_SCHEMAS_ELEM_INTERNAL_CHECKED:
        !           757:  *
        !           758:  * this is set when the elem decl has been checked against
        !           759:  * all constraints
        !           760:  */
        !           761: #define XML_SCHEMAS_ELEM_INTERNAL_CHECKED        1 << 18
        !           762: 
        !           763: typedef struct _xmlSchemaElement xmlSchemaElement;
        !           764: typedef xmlSchemaElement *xmlSchemaElementPtr;
        !           765: struct _xmlSchemaElement {
        !           766:     xmlSchemaTypeType type; /* The kind of type */
        !           767:     struct _xmlSchemaType *next; /* Not used? */
        !           768:     const xmlChar *name;
        !           769:     const xmlChar *id; /* Deprecated; not used */
        !           770:     const xmlChar *ref; /* Deprecated; not used */
        !           771:     const xmlChar *refNs; /* Deprecated; not used */
        !           772:     xmlSchemaAnnotPtr annot;
        !           773:     xmlSchemaTypePtr subtypes; /* the type definition */
        !           774:     xmlSchemaAttributePtr attributes;
        !           775:     xmlNodePtr node;
        !           776:     int minOccurs; /* Deprecated; not used */
        !           777:     int maxOccurs; /* Deprecated; not used */
        !           778: 
        !           779:     int flags;
        !           780:     const xmlChar *targetNamespace;
        !           781:     const xmlChar *namedType;
        !           782:     const xmlChar *namedTypeNs;
        !           783:     const xmlChar *substGroup;
        !           784:     const xmlChar *substGroupNs;
        !           785:     const xmlChar *scope;
        !           786:     const xmlChar *value; /* The original value of the value constraint. */
        !           787:     struct _xmlSchemaElement *refDecl; /* This will now be used for the
        !           788:                                           substitution group affiliation */
        !           789:     xmlRegexpPtr contModel; /* Obsolete for WXS, maybe used for RelaxNG */
        !           790:     xmlSchemaContentType contentType;
        !           791:     const xmlChar *refPrefix; /* Deprecated; not used */
        !           792:     xmlSchemaValPtr defVal; /* The compiled value contraint. */
        !           793:     void *idcs; /* The identity-constraint defs */
        !           794: };
        !           795: 
        !           796: /*
        !           797:  * XML_SCHEMAS_FACET_UNKNOWN:
        !           798:  *
        !           799:  * unknown facet handling
        !           800:  */
        !           801: #define XML_SCHEMAS_FACET_UNKNOWN        0
        !           802: /*
        !           803:  * XML_SCHEMAS_FACET_PRESERVE:
        !           804:  *
        !           805:  * preserve the type of the facet
        !           806:  */
        !           807: #define XML_SCHEMAS_FACET_PRESERVE        1
        !           808: /*
        !           809:  * XML_SCHEMAS_FACET_REPLACE:
        !           810:  *
        !           811:  * replace the type of the facet
        !           812:  */
        !           813: #define XML_SCHEMAS_FACET_REPLACE        2
        !           814: /*
        !           815:  * XML_SCHEMAS_FACET_COLLAPSE:
        !           816:  *
        !           817:  * collapse the types of the facet
        !           818:  */
        !           819: #define XML_SCHEMAS_FACET_COLLAPSE        3
        !           820: /**
        !           821:  * A facet definition.
        !           822:  */
        !           823: struct _xmlSchemaFacet {
        !           824:     xmlSchemaTypeType type;        /* The kind of type */
        !           825:     struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */
        !           826:     const xmlChar *value; /* The original value */
        !           827:     const xmlChar *id; /* Obsolete */
        !           828:     xmlSchemaAnnotPtr annot;
        !           829:     xmlNodePtr node;
        !           830:     int fixed; /* XML_SCHEMAS_FACET_PRESERVE, etc. */
        !           831:     int whitespace;
        !           832:     xmlSchemaValPtr val; /* The compiled value */
        !           833:     xmlRegexpPtr    regexp; /* The regex for patterns */
        !           834: };
        !           835: 
        !           836: /**
        !           837:  * A notation definition.
        !           838:  */
        !           839: typedef struct _xmlSchemaNotation xmlSchemaNotation;
        !           840: typedef xmlSchemaNotation *xmlSchemaNotationPtr;
        !           841: struct _xmlSchemaNotation {
        !           842:     xmlSchemaTypeType type; /* The kind of type */
        !           843:     const xmlChar *name;
        !           844:     xmlSchemaAnnotPtr annot;
        !           845:     const xmlChar *identifier;
        !           846:     const xmlChar *targetNamespace;
        !           847: };
        !           848: 
        !           849: /*
        !           850: * TODO: Actually all those flags used for the schema should sit
        !           851: * on the schema parser context, since they are used only
        !           852: * during parsing an XML schema document, and not available
        !           853: * on the component level as per spec.
        !           854: */
        !           855: /**
        !           856:  * XML_SCHEMAS_QUALIF_ELEM:
        !           857:  *
        !           858:  * Reflects elementFormDefault == qualified in
        !           859:  * an XML schema document.
        !           860:  */
        !           861: #define XML_SCHEMAS_QUALIF_ELEM                1 << 0
        !           862: /**
        !           863:  * XML_SCHEMAS_QUALIF_ATTR:
        !           864:  *
        !           865:  * Reflects attributeFormDefault == qualified in
        !           866:  * an XML schema document.
        !           867:  */
        !           868: #define XML_SCHEMAS_QUALIF_ATTR            1 << 1
        !           869: /**
        !           870:  * XML_SCHEMAS_FINAL_DEFAULT_EXTENSION:
        !           871:  *
        !           872:  * the schema has "extension" in the set of finalDefault.
        !           873:  */
        !           874: #define XML_SCHEMAS_FINAL_DEFAULT_EXTENSION        1 << 2
        !           875: /**
        !           876:  * XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION:
        !           877:  *
        !           878:  * the schema has "restriction" in the set of finalDefault.
        !           879:  */
        !           880: #define XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION            1 << 3
        !           881: /**
        !           882:  * XML_SCHEMAS_FINAL_DEFAULT_LIST:
        !           883:  *
        !           884:  * the cshema has "list" in the set of finalDefault.
        !           885:  */
        !           886: #define XML_SCHEMAS_FINAL_DEFAULT_LIST            1 << 4
        !           887: /**
        !           888:  * XML_SCHEMAS_FINAL_DEFAULT_UNION:
        !           889:  *
        !           890:  * the schema has "union" in the set of finalDefault.
        !           891:  */
        !           892: #define XML_SCHEMAS_FINAL_DEFAULT_UNION            1 << 5
        !           893: /**
        !           894:  * XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION:
        !           895:  *
        !           896:  * the schema has "extension" in the set of blockDefault.
        !           897:  */
        !           898: #define XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION            1 << 6
        !           899: /**
        !           900:  * XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION:
        !           901:  *
        !           902:  * the schema has "restriction" in the set of blockDefault.
        !           903:  */
        !           904: #define XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION            1 << 7
        !           905: /**
        !           906:  * XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION:
        !           907:  *
        !           908:  * the schema has "substitution" in the set of blockDefault.
        !           909:  */
        !           910: #define XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION            1 << 8
        !           911: /**
        !           912:  * XML_SCHEMAS_INCLUDING_CONVERT_NS:
        !           913:  *
        !           914:  * the schema is currently including an other schema with
        !           915:  * no target namespace.
        !           916:  */
        !           917: #define XML_SCHEMAS_INCLUDING_CONVERT_NS            1 << 9
        !           918: /**
        !           919:  * _xmlSchema:
        !           920:  *
        !           921:  * A Schemas definition
        !           922:  */
        !           923: struct _xmlSchema {
        !           924:     const xmlChar *name; /* schema name */
        !           925:     const xmlChar *targetNamespace; /* the target namespace */
        !           926:     const xmlChar *version;
        !           927:     const xmlChar *id; /* Obsolete */
        !           928:     xmlDocPtr doc;
        !           929:     xmlSchemaAnnotPtr annot;
        !           930:     int flags;
        !           931: 
        !           932:     xmlHashTablePtr typeDecl;
        !           933:     xmlHashTablePtr attrDecl;
        !           934:     xmlHashTablePtr attrgrpDecl;
        !           935:     xmlHashTablePtr elemDecl;
        !           936:     xmlHashTablePtr notaDecl;
        !           937: 
        !           938:     xmlHashTablePtr schemasImports;
        !           939: 
        !           940:     void *_private;        /* unused by the library for users or bindings */
        !           941:     xmlHashTablePtr groupDecl;
        !           942:     xmlDictPtr      dict;
        !           943:     void *includes;     /* the includes, this is opaque for now */
        !           944:     int preserve;        /* whether to free the document */
        !           945:     int counter; /* used to give ononymous components unique names */
        !           946:     xmlHashTablePtr idcDef; /* All identity-constraint defs. */
        !           947:     void *volatiles; /* Obsolete */
        !           948: };
        !           949: 
        !           950: XMLPUBFUN void XMLCALL         xmlSchemaFreeType        (xmlSchemaTypePtr type);
        !           951: XMLPUBFUN void XMLCALL         xmlSchemaFreeWildcard(xmlSchemaWildcardPtr wildcard);
        !           952: 
        !           953: #ifdef __cplusplus
        !           954: }
        !           955: #endif
        !           956: 
        !           957: #endif /* LIBXML_SCHEMAS_ENABLED */
        !           958: #endif /* __XML_SCHEMA_INTERNALS_H__ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>