Return to schemasInternals.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / include / libxml |
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__ */