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@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