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