XSD 1.0 support
Supported means positive and negative behavior is covered by project
tests. Partial means only the documented subset is implemented.
Unsupported means zxsdc rejects the construct instead of ignoring it.
The API, ABI, and migration contract separately defines API/ABI epochs, generated format checks, memory configuration requirements, and migration rules. It does not change the supported XSD subset or promise full W3C conformance.
Schema structure and types
Feature |
Status |
Scope |
|---|---|---|
|
Supported |
Multiple roots, named, typed, anonymous, and global element references. |
|
Supported |
Named and anonymous definitions. |
|
Supported |
Nested particles and bounded or |
attributes |
Supported |
Optional, required, prohibited, form, default, fixed, and global references. |
attribute |
Supported |
References preserve the global declaration namespace, type, and value constraint. |
|
Supported |
Nested references, occurrences, namespace resolution, wildcard algebra, and legal self references in redefinitions; circular definitions are rejected. |
simple restriction and facets |
Supported |
Enumeration, lengths, bounds, decimal digit limits, whitespace, and inherited restrictions. |
|
Supported |
Named and anonymous item/member types. |
XSD 1.0 built-in simple datatypes |
Supported |
String/name, numeric, date/time, duration, binary, QName, URI, ID/IDREF, ENTITY, and lexical NOTATION families. |
|
Supported |
Public/system metadata and namespace-aware enumerated NOTATION values. |
type extension and restriction |
Supported |
|
abstract types |
Supported |
Direct use is rejected; valid derived runtime types are accepted. |
recursive type definitions |
Supported |
Direct and mutual named complex types plus guarded recursive global element
references, bounded at runtime by |
|
Supported |
Interleaved text, lax arbitrary content, implicit element types, and restrictions. |
Namespaces and composition
Feature |
Status |
Scope |
|---|---|---|
target namespaces and QName resolution |
Supported |
Qualified and unqualified local declarations. |
|
Supported |
Per-declaration |
|
Supported |
Explicit local resolution only; implicit network access is forbidden. |
|
Supported |
Type, model-group, and attribute-group redefinitions with original-component self references. |
resolver callback and schema registry |
Supported |
Search paths, namespace registry, and circular-dependency detection. |
substitution groups |
Supported |
Type derivation, abstract heads, |
annotations and foreign metadata |
Supported |
Validated while compiling, then omitted from generated descriptors. |
Instance validation
Streaming validation uses occurrence counters for eligible flat models and a
shared, bounded continuation pool for nested sequences/choices and complex
repetitions. Alternative occurrence partitions are retained and merged, not
chosen greedily. ZXSD_STREAM_MODEL_CAPACITY bounds this shared workspace;
exhaustion or excessive epsilon work reports ZXSD_ERR_STREAM_LIMIT.
Setting it to zero selects the old bounded-history matcher for non-flat
models. ZXSD_STREAM_CHILD_CAPACITY limits only that fallback’s child
history, not repetitions processed by an incremental model.
Feature |
Status |
Scope |
|---|---|---|
|
Supported |
Namespace constraints and strict, lax, or skip processing. |
|
Supported |
Bounded tuple storage suitable for embedded targets. |
identity XPath |
Supported |
XSD restricted child/descendant/attribute paths, wildcards, and unions; no general XPath engine. |
|
Supported |
Nil content and fixed/nillable rules are enforced. |
|
Supported |
Runtime QName resolution plus derivation and block checks. |
element and attribute defaults/fixed values |
Supported |
Atomic, list, union, simple-content, |
pattern facet |
Supported |
Bounded subset with grouping, alternation, repetition, class subtraction, implicit whole-value anchoring, standard name/multi-character escapes, and Unicode categories/blocks. Some accepted W3C expressions are rejected explicitly and are listed as unsupported in the W3C baseline. |
DTD and XML entities |
Unsupported |
Rejected deliberately by schema and embedded XML processing. |
event-driven validation |
Supported |
Bounded expanded-name events, namespace/QName values, recursive content models, substitution, wildcards, dynamic types, and identity constraints. Identity constraints require the optional scratch allocator. |
Mini-XML 4 adapter |
Supported |
Optional adapter selected when Mini-XML is available. |
XSD 1.1 |
Unsupported |
zxsd targets XSD 1.0. |
Typed bindings
zxsdc --bindings generates C structures with read and write functions for
global elements with a complex type. Bindings cover a subset of the constructs
above: wildcards, mixed content, xs:anyType, repeating model groups,
nillable and abstract elements, substitution-group heads, abstract types, and
QName or NOTATION values are rejected with a bindings: diagnostic.
They remain fully supported for validation. See Typed bindings.
This matrix is a feature contract, not a claim of complete XSD 1.0 implementation. See Conformance and test coverage for how these claims are tested.