Xee: A Modern XPath and XSLT Engine in Rust
A new Rust-based engine for XPath and XSLT 3.0 is renewing interest in modern XML tooling, long dominated by Java-centric options like Saxon and limited to older standards in browsers. Commenters highlight how robust XML processing remains critical in domains such as digital humanities (TEI), finance, e‑invoicing, and Office document formats, while contrasting XML’s strengths in schemas, validation, and complex document modeling with JSON’s superior developer ergonomics. Many see projects like this as part of a broader “rehabilitation” of XML: less fashionable than JSON or YAML, but still a powerful, standardized foundation when the fit is right.
Browser support, WASM, and legacy XSLT
- Chrome previously considered dropping libxml/XSLT; having engines that can compile to WASM is seen as insurance.
- Browsers still ship XSLT, but only XSLT 1.0; XSLT 2.0/3.0 never made it into web engines.
- Some attribute continued Chrome XSLT usage to automated tests hitting browser APIs.
- People showcase neat browser-side uses like styling RSS/Atom feeds directly with XSLT so they render as readable HTML.
Need for modern, open XPath/XSLT engines
- Many projects are stuck on XPath/XSLT 1.0 because cross‑platform, non‑Java/.NET support for 2.0/3.0 is scarce.
- Saxon is widely praised but also criticized as a quasi‑monoculture and commercial, which conflicts with W3C’s “two implementations” ideal.
- Xee is welcomed as a true open-source XSLT 3/XPath 3 implementation in Rust; others mention Xidel, BaseX, and χrust as related efforts.
Where XML/XPath/XSLT still shine
- Strong use in digital humanities (TEI), scholarly editions, financial/business data, governmental/standards-based formats, electronic invoicing, and large enterprise APIs.
- XML is favored when the data is primarily text with annotations or mixed content and where schemas, validation, and precise datatypes matter.
- XPath is repeatedly praised as an excellent query language for tree/DOM data; many see it as “99% of the value” compared to full XSLT.
- XSLT is valued for safe, declarative server-side/user-defined transformations and for templating/report generation.
XML vs JSON/YAML and developer ergonomics
- Several argue JSON “won” largely on ergonomics: terseness, simpler mental model, direct mapping to in-memory objects.
- Others counter that XML brings crucial features JSON lacks: processing instructions, entities, comments, attributes, strong typing via XSD, canonical date formats, and mature tooling.
- YAML is widely disliked for whitespace fragility; some would “take angle brackets any day.”
- There’s ongoing debate over attributes vs elements, mixed content, namespaces, and readability; some call XML overcomplicated, others see verbosity as acceptable for clarity.
Technical challenges and Xee specifics
- Streaming XPath/XSLT is acknowledged as hard: the language allows arbitrary navigation, so you often must see the whole document.
- Discussions cover XSLT 3’s formal streaming subset and the idea of using succinct in-memory XML representations to reduce RAM instead.
- People ask about HTML frontends, multi-language bindings, and potential reuse in projects like Wine.
- Licensing is scrutinized; some dislike extra COPYRIGHT text, others see it as careful handling of vendored components.