Xee: A Modern XPath and XSLT Engine in Rust
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.