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