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.