Overview
Design principles and a reading order.
The spec/ directory is normative, and written
to be read. If the code and the specification disagree, that is a defect in
one of them.
21 documents
Design principles and a reading order.
The XML parser and its data model.
The XPath 1.0 engine: axes, functions, conversions.
What is in, what is out, and where 1.0 semantics still apply.
Function items, =>, ||, !, let, and the higher-order sequence functions.
Every Schematron element and its Rust type.
The five schema compilation passes.
The validation algorithm, exactly.
The report format, read and written.
Keys, and why a cross-reference check needs one.
One repeating record at a time, in bounded memory, for schemas local to it.
Catching schemas that silently do nothing.
The library surface.
Every option, and every exit code.
The error taxonomy, and error versus finding.
Tests, fuzzing, benchmarks, lints.
Limits and divergences, stated up front.
Current stable minus two.
Why the agent documentation directory is lowercase.
Eighteen steps from one rule to a real schema.
Shipped, next, and not planned.
How it stays true
tests/docs.rs compiles every schema shown in the docs, resolves
every relative link, and ties duplicated facts — the MSRV, the CLI flags,
the XPath function list — back to their single source. A document that
drifts from the code fails the test suite.
cargo test --all-features
cargo clippy --all-targets --all-features -- -D warnings
cargo doc --no-deps --all-features
cargo +1.96 test --all-featuresThe conformance suite lives in tests/corpus/. Each case is a
directory holding schema.sch, input.xml, and expected.txt; adding a case means adding a directory, with no
Rust to change.