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