VirtualBox

source: vbox/trunk/src/libs/libxml2-2.13.2/include/libxml/schemasInternals.h@ 108403

最後變更 在這個檔案從108403是 105420,由 vboxsync 提交於 8 月 前

libxml2-2.12.6: Applied and adjusted our libxml2 changes to 2.12.6. bugref:10730

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

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette