1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/epoc32/include/stdapis/libxml2/libxml2_schemasinternals.h Wed Mar 31 12:33:34 2010 +0100
1.3 @@ -0,0 +1,558 @@
1.4 +/*
1.5 + * Summary: internal interfaces for XML Schemas
1.6 + * Description: internal interfaces for the XML Schemas handling
1.7 + * and schema validity checking
1.8 + *
1.9 + * Copy: See Copyright for the status of this software.
1.10 + *
1.11 + * Author: Daniel Veillard
1.12 + * Portion Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
1.13 + */
1.14 +
1.15 +/** @file
1.16 +@publishedAll
1.17 +@released
1.18 +*/
1.19 +
1.20 +
1.21 +#ifndef XML_SCHEMA_INTERNALS_H
1.22 +#define XML_SCHEMA_INTERNALS_H
1.23 +
1.24 +#include <stdapis/libxml2/libxml2_xmlversion.h>
1.25 +
1.26 +#if defined(LIBXML_SCHEMAS_ENABLED) || defined(XMLENGINE_XMLSCHEMA_DATATYPES)
1.27 +
1.28 +#ifdef LIBXML_REGEXP_ENABLED
1.29 +#include "libxml2_xmlregexp.h"
1.30 +#endif
1.31 +
1.32 +#include <stdapis/libxml2/libxml2_hash.h>
1.33 +#include <stdapis/libxml2/libxml2_dict.h>
1.34 +
1.35 +#ifdef __cplusplus
1.36 +extern "C" {
1.37 +#endif
1.38 +
1.39 +
1.40 +#define XML_SCHEMAS_NAMESPACE_NAME \
1.41 + (const xmlChar*) "http://www.w3.org/2001/XMLSchema"
1.42 +
1.43 +
1.44 +/*
1.45 + * XML Schemas defines multiple type of types.
1.46 + */
1.47 +typedef enum {
1.48 + XML_SCHEMA_TYPE_BASIC = 1,
1.49 + XML_SCHEMA_TYPE_ANY,
1.50 + XML_SCHEMA_TYPE_FACET,
1.51 + XML_SCHEMA_TYPE_SIMPLE,
1.52 + XML_SCHEMA_TYPE_COMPLEX,
1.53 + XML_SCHEMA_TYPE_SEQUENCE,
1.54 + XML_SCHEMA_TYPE_CHOICE,
1.55 + XML_SCHEMA_TYPE_ALL,
1.56 + XML_SCHEMA_TYPE_SIMPLE_CONTENT,
1.57 + XML_SCHEMA_TYPE_COMPLEX_CONTENT,
1.58 + XML_SCHEMA_TYPE_UR,
1.59 + XML_SCHEMA_TYPE_RESTRICTION,
1.60 + XML_SCHEMA_TYPE_EXTENSION,
1.61 + XML_SCHEMA_TYPE_ELEMENT,
1.62 + XML_SCHEMA_TYPE_ATTRIBUTE,
1.63 + XML_SCHEMA_TYPE_ATTRIBUTEGROUP,
1.64 + XML_SCHEMA_TYPE_GROUP,
1.65 + XML_SCHEMA_TYPE_NOTATION,
1.66 + XML_SCHEMA_TYPE_LIST,
1.67 + XML_SCHEMA_TYPE_UNION,
1.68 + XML_SCHEMA_TYPE_ANY_ATTRIBUTE,
1.69 + XML_SCHEMA_FACET_MININCLUSIVE = 1000,
1.70 + XML_SCHEMA_FACET_MINEXCLUSIVE,
1.71 + XML_SCHEMA_FACET_MAXINCLUSIVE,
1.72 + XML_SCHEMA_FACET_MAXEXCLUSIVE,
1.73 + XML_SCHEMA_FACET_TOTALDIGITS,
1.74 + XML_SCHEMA_FACET_FRACTIONDIGITS,
1.75 + XML_SCHEMA_FACET_PATTERN,
1.76 + XML_SCHEMA_FACET_ENUMERATION,
1.77 + XML_SCHEMA_FACET_WHITESPACE,
1.78 + XML_SCHEMA_FACET_LENGTH,
1.79 + XML_SCHEMA_FACET_MAXLENGTH,
1.80 + XML_SCHEMA_FACET_MINLENGTH
1.81 +} xmlSchemaTypeType;
1.82 +
1.83 +typedef enum {
1.84 + XML_SCHEMA_CONTENT_UNKNOWN = 0,
1.85 + XML_SCHEMA_CONTENT_EMPTY = 1,
1.86 + XML_SCHEMA_CONTENT_ELEMENTS,
1.87 + XML_SCHEMA_CONTENT_MIXED,
1.88 + XML_SCHEMA_CONTENT_SIMPLE,
1.89 + XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS,
1.90 + XML_SCHEMA_CONTENT_BASIC,
1.91 + XML_SCHEMA_CONTENT_ANY
1.92 +} xmlSchemaContentType;
1.93 +
1.94 +typedef enum {
1.95 + XML_SCHEMAS_UNKNOWN = 0,
1.96 + XML_SCHEMAS_STRING,
1.97 + XML_SCHEMAS_NORMSTRING,
1.98 + XML_SCHEMAS_DECIMAL,
1.99 + XML_SCHEMAS_TIME,
1.100 + XML_SCHEMAS_GDAY,
1.101 + XML_SCHEMAS_GMONTH,
1.102 + XML_SCHEMAS_GMONTHDAY,
1.103 + XML_SCHEMAS_GYEAR,
1.104 + XML_SCHEMAS_GYEARMONTH,
1.105 + XML_SCHEMAS_DATE,
1.106 + XML_SCHEMAS_DATETIME,
1.107 + XML_SCHEMAS_DURATION,
1.108 + XML_SCHEMAS_FLOAT,
1.109 + XML_SCHEMAS_DOUBLE,
1.110 + XML_SCHEMAS_BOOLEAN,
1.111 + XML_SCHEMAS_TOKEN,
1.112 + XML_SCHEMAS_LANGUAGE,
1.113 + XML_SCHEMAS_NMTOKEN,
1.114 + XML_SCHEMAS_NMTOKENS,
1.115 + XML_SCHEMAS_NAME,
1.116 + XML_SCHEMAS_QNAME,
1.117 + XML_SCHEMAS_NCNAME,
1.118 + XML_SCHEMAS_ID,
1.119 + XML_SCHEMAS_IDREF,
1.120 + XML_SCHEMAS_IDREFS,
1.121 + XML_SCHEMAS_ENTITY,
1.122 + XML_SCHEMAS_ENTITIES,
1.123 + XML_SCHEMAS_NOTATION,
1.124 + XML_SCHEMAS_ANYURI,
1.125 + XML_SCHEMAS_INTEGER,
1.126 + XML_SCHEMAS_NPINTEGER,
1.127 + XML_SCHEMAS_NINTEGER,
1.128 + XML_SCHEMAS_NNINTEGER,
1.129 + XML_SCHEMAS_PINTEGER,
1.130 + XML_SCHEMAS_INT,
1.131 + XML_SCHEMAS_UINT,
1.132 + XML_SCHEMAS_LONG,
1.133 + XML_SCHEMAS_ULONG,
1.134 + XML_SCHEMAS_SHORT,
1.135 + XML_SCHEMAS_USHORT,
1.136 + XML_SCHEMAS_BYTE,
1.137 + XML_SCHEMAS_UBYTE,
1.138 + XML_SCHEMAS_HEXBINARY,
1.139 + XML_SCHEMAS_BASE64BINARY
1.140 +} xmlSchemaValType;
1.141 +
1.142 +
1.143 +/* Date value */
1.144 +struct _xmlSchemaValDate {
1.145 + long year;
1.146 + unsigned int mon :4; /* 1 <= mon <= 12 */
1.147 + unsigned int day :5; /* 1 <= day <= 31 */
1.148 + unsigned int hour:5; /* 0 <= hour <= 23 */
1.149 + unsigned int min :6; /* 0 <= min <= 59 */
1.150 + double sec;
1.151 + unsigned int tz_flag :1; /* is tzo explicitely set? */
1.152 + int tzo :11; /* -1440 <= tzo <= 1440 */
1.153 +};
1.154 +
1.155 +/* Duration value */
1.156 +typedef struct _xmlSchemaValDuration xmlSchemaValDuration;
1.157 +typedef xmlSchemaValDuration *xmlSchemaValDurationPtr;
1.158 +struct _xmlSchemaValDuration {
1.159 + long mon; /* mon stores years also */
1.160 + long day;
1.161 + double sec; /* sec stores min and hour also */
1.162 +};
1.163 +
1.164 +typedef struct _xmlSchemaValDecimal xmlSchemaValDecimal;
1.165 +typedef xmlSchemaValDecimal *xmlSchemaValDecimalPtr;
1.166 +struct _xmlSchemaValDecimal {
1.167 + /* would use long long but not portable */
1.168 + unsigned long lo;
1.169 + unsigned long mi;
1.170 + unsigned long hi;
1.171 + unsigned int extra;
1.172 + unsigned int sign:1;
1.173 + unsigned int frac:7;
1.174 + unsigned int total:8;
1.175 +};
1.176 +
1.177 +typedef struct _xmlSchemaValQName xmlSchemaValQName;
1.178 +typedef xmlSchemaValQName *xmlSchemaValQNamePtr;
1.179 +struct _xmlSchemaValQName {
1.180 + xmlChar *name;
1.181 + xmlChar *uri;
1.182 +};
1.183 +
1.184 +typedef struct _xmlSchemaValHex xmlSchemaValHex;
1.185 +typedef xmlSchemaValHex *xmlSchemaValHexPtr;
1.186 +struct _xmlSchemaValHex {
1.187 + xmlChar *str;
1.188 + unsigned int total;
1.189 +};
1.190 +
1.191 +typedef struct _xmlSchemaValBase64 xmlSchemaValBase64;
1.192 +typedef xmlSchemaValBase64 *xmlSchemaValBase64Ptr;
1.193 +struct _xmlSchemaValBase64 {
1.194 + xmlChar *str;
1.195 + unsigned int total;
1.196 +};
1.197 +
1.198 +typedef struct _xmlSchemaValDate xmlSchemaValDate;
1.199 +typedef xmlSchemaValDate *xmlSchemaValDatePtr;
1.200 +
1.201 +struct _xmlSchemaVal {
1.202 + xmlSchemaValType type;
1.203 + union {
1.204 + xmlSchemaValDecimal decimal;
1.205 + xmlSchemaValDate date;
1.206 + xmlSchemaValDuration dur;
1.207 + xmlSchemaValQName qname;
1.208 + xmlSchemaValHex hex;
1.209 + xmlSchemaValBase64 base64;
1.210 + float f;
1.211 + double d;
1.212 + int b;
1.213 + xmlChar* str;
1.214 + } value;
1.215 +};
1.216 +
1.217 +typedef struct _xmlSchemaVal xmlSchemaVal;
1.218 +typedef xmlSchemaVal *xmlSchemaValPtr;
1.219 +
1.220 +typedef struct _xmlSchemaType xmlSchemaType;
1.221 +typedef xmlSchemaType *xmlSchemaTypePtr;
1.222 +
1.223 +typedef struct _xmlSchemaFacet xmlSchemaFacet;
1.224 +typedef xmlSchemaFacet *xmlSchemaFacetPtr;
1.225 +
1.226 +/**
1.227 + * Annotation
1.228 + */
1.229 +typedef struct _xmlSchemaAnnot xmlSchemaAnnot;
1.230 +typedef xmlSchemaAnnot *xmlSchemaAnnotPtr;
1.231 +struct _xmlSchemaAnnot {
1.232 + struct _xmlSchemaAnnot *next;
1.233 + xmlNodePtr content; /* the annotation */
1.234 +};
1.235 +
1.236 +/**
1.237 + * XML_SCHEMAS_ANYATTR_SKIP:
1.238 + *
1.239 + * Skip unknown attribute from validation
1.240 + */
1.241 +#define XML_SCHEMAS_ANYATTR_SKIP 1
1.242 +/**
1.243 + * XML_SCHEMAS_ANYATTR_LAX:
1.244 + *
1.245 + * Ignore validation non definition on attributes
1.246 + */
1.247 +#define XML_SCHEMAS_ANYATTR_LAX 2
1.248 +/**
1.249 + * XML_SCHEMAS_ANYATTR_STRICT:
1.250 + *
1.251 + * Apply strict validation rules on attributes
1.252 + */
1.253 +#define XML_SCHEMAS_ANYATTR_STRICT 3
1.254 +
1.255 +/**
1.256 + * XML_SCHEMAS_ATTR_USE_PROHIBITED:
1.257 + *
1.258 + * The attribute is prohibited.
1.259 + */
1.260 +#define XML_SCHEMAS_ATTR_USE_PROHIBITED 0
1.261 +
1.262 +/**
1.263 + * XML_SCHEMAS_ATTR_USE_REQUIRED:
1.264 + *
1.265 + * The attribute is required.
1.266 + */
1.267 +#define XML_SCHEMAS_ATTR_USE_REQUIRED 1
1.268 +
1.269 +/**
1.270 + * XML_SCHEMAS_ATTR_USE_OPTIONAL:
1.271 + *
1.272 + * The attribute is optional.
1.273 + */
1.274 +#define XML_SCHEMAS_ATTR_USE_OPTIONAL 2
1.275 +
1.276 +/**
1.277 + * XML_SCHEMAS_ATTR_NSDEFAULT:
1.278 + *
1.279 + * allow elements in no namespace
1.280 + */
1.281 +#define XML_SCHEMAS_ATTR_NSDEFAULT 1 << 7
1.282 +
1.283 +/**
1.284 + * xmlSchemaAttribute:
1.285 + * An attribute definition.
1.286 + */
1.287 +
1.288 +typedef struct _xmlSchemaAttribute xmlSchemaAttribute;
1.289 +typedef xmlSchemaAttribute *xmlSchemaAttributePtr;
1.290 +struct _xmlSchemaAttribute {
1.291 + xmlSchemaTypeType type; /* The kind of type */
1.292 + struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */
1.293 + const xmlChar *name;
1.294 + const xmlChar *id;
1.295 + const xmlChar *ref;
1.296 + const xmlChar *refNs;
1.297 + const xmlChar *typeName;
1.298 + const xmlChar *typeNs;
1.299 + xmlSchemaAnnotPtr annot;
1.300 +
1.301 + xmlSchemaTypePtr base;
1.302 + int occurs;
1.303 + const xmlChar *defValue;
1.304 + xmlSchemaTypePtr subtypes;
1.305 + xmlNodePtr node;
1.306 + const xmlChar *targetNamespace;
1.307 + int flags;
1.308 +};
1.309 +
1.310 +/**
1.311 + * An attribute group definition.
1.312 + *
1.313 + * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures
1.314 + * must be kept similar
1.315 + */
1.316 +typedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup;
1.317 +typedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr;
1.318 +struct _xmlSchemaAttributeGroup {
1.319 + xmlSchemaTypeType type; /* The kind of type */
1.320 + struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */
1.321 + const xmlChar *name;
1.322 + const xmlChar *id;
1.323 + const xmlChar *ref;
1.324 + const xmlChar *refNs;
1.325 + xmlSchemaAnnotPtr annot;
1.326 +
1.327 + xmlSchemaAttributePtr attributes;
1.328 + xmlNodePtr node;
1.329 +};
1.330 +
1.331 +
1.332 +/**
1.333 + * XML_SCHEMAS_TYPE_MIXED:
1.334 + *
1.335 + * the element content type is mixed
1.336 + */
1.337 +#define XML_SCHEMAS_TYPE_MIXED 1 << 0
1.338 +
1.339 +/**
1.340 + * _xmlSchemaType:
1.341 + *
1.342 + * Schemas type definition.
1.343 + */
1.344 +struct _xmlSchemaType {
1.345 + xmlSchemaTypeType type; /* The kind of type */
1.346 + struct _xmlSchemaType *next;/* the next type if in a sequence ... */
1.347 + const xmlChar *name;
1.348 + const xmlChar *id;
1.349 + const xmlChar *ref;
1.350 + const xmlChar *refNs;
1.351 + xmlSchemaAnnotPtr annot;
1.352 + xmlSchemaTypePtr subtypes;
1.353 + xmlSchemaAttributePtr attributes;
1.354 + xmlNodePtr node;
1.355 + int minOccurs;
1.356 + int maxOccurs;
1.357 +
1.358 + int flags;
1.359 + xmlSchemaContentType contentType;
1.360 + const xmlChar *base;
1.361 + const xmlChar *baseNs;
1.362 + xmlSchemaTypePtr baseType;
1.363 + xmlSchemaFacetPtr facets;
1.364 + struct _xmlSchemaType *redef;/* possible redefinitions for the type */
1.365 + int recurse;
1.366 +};
1.367 +
1.368 +/*
1.369 + * xmlSchemaElement:
1.370 + * An element definition.
1.371 + *
1.372 + * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of
1.373 + * structures must be kept similar
1.374 + */
1.375 +/**
1.376 + * XML_SCHEMAS_ELEM_NILLABLE:
1.377 + *
1.378 + * the element is nillable
1.379 + */
1.380 +#define XML_SCHEMAS_ELEM_NILLABLE 1 << 0
1.381 +/**
1.382 + * XML_SCHEMAS_ELEM_GLOBAL:
1.383 + *
1.384 + * the element is global
1.385 + */
1.386 +#define XML_SCHEMAS_ELEM_GLOBAL 1 << 1
1.387 +/**
1.388 + * XML_SCHEMAS_ELEM_DEFAULT:
1.389 + *
1.390 + * the element has a default value
1.391 + */
1.392 +#define XML_SCHEMAS_ELEM_DEFAULT 1 << 2
1.393 +/**
1.394 + * XML_SCHEMAS_ELEM_FIXED:
1.395 + *
1.396 + * the element has a fixed value
1.397 + */
1.398 +#define XML_SCHEMAS_ELEM_FIXED 1 << 3
1.399 +/**
1.400 + * XML_SCHEMAS_ELEM_ABSTRACT:
1.401 + *
1.402 + * the element is abstract
1.403 + */
1.404 +#define XML_SCHEMAS_ELEM_ABSTRACT 1 << 4
1.405 +/**
1.406 + * XML_SCHEMAS_ELEM_TOPLEVEL:
1.407 + *
1.408 + * the element is top level
1.409 + */
1.410 +#define XML_SCHEMAS_ELEM_TOPLEVEL 1 << 5
1.411 +/**
1.412 + * XML_SCHEMAS_ELEM_REF:
1.413 + *
1.414 + * the element is a reference to a type
1.415 + */
1.416 +#define XML_SCHEMAS_ELEM_REF 1 << 6
1.417 +/**
1.418 + * XML_SCHEMAS_ELEM_NSDEFAULT:
1.419 + *
1.420 + * allow elements in no namespace
1.421 + */
1.422 +#define XML_SCHEMAS_ELEM_NSDEFAULT 1 << 7
1.423 +
1.424 +typedef struct _xmlSchemaElement xmlSchemaElement;
1.425 +typedef xmlSchemaElement *xmlSchemaElementPtr;
1.426 +struct _xmlSchemaElement {
1.427 + xmlSchemaTypeType type; /* The kind of type */
1.428 + struct _xmlSchemaType *next;/* the next type if in a sequence ... */
1.429 + const xmlChar *name;
1.430 + const xmlChar *id;
1.431 + const xmlChar *ref;
1.432 + const xmlChar *refNs;
1.433 + xmlSchemaAnnotPtr annot;
1.434 + xmlSchemaTypePtr subtypes;
1.435 + xmlSchemaAttributePtr attributes;
1.436 + xmlNodePtr node;
1.437 + int minOccurs;
1.438 + int maxOccurs;
1.439 +
1.440 + int flags;
1.441 + const xmlChar *targetNamespace;
1.442 + const xmlChar *namedType;
1.443 + const xmlChar *namedTypeNs;
1.444 + const xmlChar *substGroup;
1.445 + const xmlChar *substGroupNs;
1.446 + const xmlChar *scope;
1.447 + const xmlChar *value;
1.448 + struct _xmlSchemaElement *refDecl;
1.449 +#ifdef LIBXML_REGEXP_ENABLED
1.450 + xmlRegexpPtr contModel;
1.451 +#endif
1.452 + xmlSchemaContentType contentType;
1.453 +};
1.454 +
1.455 +/*
1.456 + * XML_SCHEMAS_FACET_UNKNOWN:
1.457 + *
1.458 + * unknown facet handling
1.459 + */
1.460 +#define XML_SCHEMAS_FACET_UNKNOWN 0
1.461 +/*
1.462 + * XML_SCHEMAS_FACET_PRESERVE:
1.463 + *
1.464 + * preserve the type of the facet
1.465 + */
1.466 +#define XML_SCHEMAS_FACET_PRESERVE 1
1.467 +/*
1.468 + * XML_SCHEMAS_FACET_REPLACE:
1.469 + *
1.470 + * replace the type of the facet
1.471 + */
1.472 +#define XML_SCHEMAS_FACET_REPLACE 2
1.473 +/*
1.474 + * XML_SCHEMAS_FACET_COLLAPSE:
1.475 + *
1.476 + * collapse the types of the facet
1.477 + */
1.478 +#define XML_SCHEMAS_FACET_COLLAPSE 3
1.479 +
1.480 +/**
1.481 + * A facet definition.
1.482 + */
1.483 +struct _xmlSchemaFacet {
1.484 + xmlSchemaTypeType type; /* The kind of type */
1.485 + struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */
1.486 + const xmlChar *value;
1.487 + const xmlChar *id;
1.488 + xmlSchemaAnnotPtr annot;
1.489 + xmlNodePtr node;
1.490 + int fixed;
1.491 + int whitespace;
1.492 + xmlSchemaValPtr val;
1.493 +#ifdef LIBXML_REGEXP_ENABLED
1.494 + xmlRegexpPtr regexp;
1.495 +#endif
1.496 +};
1.497 +
1.498 +/**
1.499 + * A notation definition.
1.500 + */
1.501 +typedef struct _xmlSchemaNotation xmlSchemaNotation;
1.502 +typedef xmlSchemaNotation *xmlSchemaNotationPtr;
1.503 +struct _xmlSchemaNotation {
1.504 + xmlSchemaTypeType type; /* The kind of type */
1.505 + const xmlChar *name;
1.506 + xmlSchemaAnnotPtr annot;
1.507 + const xmlChar *identifier;
1.508 +};
1.509 +
1.510 +/**
1.511 + * XML_SCHEMAS_QUALIF_ELEM:
1.512 + *
1.513 + * the shemas requires qualified elements
1.514 + */
1.515 +#define XML_SCHEMAS_QUALIF_ELEM 1 << 0
1.516 +/**
1.517 + * XML_SCHEMAS_QUALIF_ATTR:
1.518 + *
1.519 + * the shemas requires qualified attributes
1.520 + */
1.521 +#define XML_SCHEMAS_QUALIF_ATTR 1 << 1
1.522 +/**
1.523 + * _xmlSchema:
1.524 + *
1.525 + * A Schemas definition
1.526 + */
1.527 +struct _xmlSchema {
1.528 + const xmlChar *name; /* schema name */
1.529 + const xmlChar *targetNamespace; /* the target namespace */
1.530 + const xmlChar *version;
1.531 + const xmlChar *id;
1.532 + xmlDocPtr doc;
1.533 + xmlSchemaAnnotPtr annot;
1.534 + int flags;
1.535 +
1.536 + xmlHashTablePtr typeDecl;
1.537 + xmlHashTablePtr attrDecl;
1.538 + xmlHashTablePtr attrgrpDecl;
1.539 + xmlHashTablePtr elemDecl;
1.540 + xmlHashTablePtr notaDecl;
1.541 +
1.542 + xmlHashTablePtr schemasImports;
1.543 +
1.544 + void *_private; /* unused by the library for users or bindings */
1.545 + xmlHashTablePtr groupDecl;
1.546 + xmlDictPtr dict;
1.547 + void *includes; /* the includes, this is opaque for now */
1.548 + int preserve; /* whether to free the document */
1.549 +};
1.550 +
1.551 +XMLPUBFUN void XMLCALL xmlSchemaFreeType (xmlSchemaTypePtr type);
1.552 +
1.553 +#ifdef __cplusplus
1.554 +}
1.555 +#endif
1.556 +
1.557 +#endif /* #if defined(LIBXML_SCHEMAS_ENABLED) || defined(XMLENGINE_XMLSCHEMA_DATATYPES) */
1.558 +#endif /* XML_SCHEMA_INTERNALS_H */
1.559 +
1.560 +
1.561 +