Notes from the people who maintain @tradik/xslt-processor. Mostly about XSLT
in the browser, now that browsers are dropping it. Subscribe by
RSS or Atom.
@tradik/xslt3 1.0.0 is out: XSLT 3.0 and XPath 3.1 in JavaScript, 98.2% of the W3C XSLT tests, faster than our XSLT 1.0 engine on the same stylesheets. @tradik/xslt-processor 1.3.0 reaches it with xsltVersion: "auto".
Browsers only ever ran XSLT 1.0. Now that they are dropping it, a JavaScript library is free to go further. How we are building XSLT 2.0 and 3.0 as a separate engine, what already works (XPath 3.1 passes 95.4% of the W3C tests), and what comes next.
0.02% of page loads sounds like nothing. In practice it is styled RSS feeds and sitemaps, enterprise web apps, Android WebViews and a lot of XML that people open by hand. Who is affected, how the browsers differ, and the options with their trade-offs.
Chrome 158 stops running XSLT in November 2026, and the last escape hatches close in August 2027. The dates, the reasons (an unmaintained C library and tiny usage) and what still works.
What changed in @tradik/xslt-processor 1.2: every libxslt conformance test passing, deep recursion on an explicit stack, faster and leaner transformations, streaming, xmldom, standalone binaries, and the 1.2.1 fix that followed the same evening.
An empty xsl:param is not what you think, != on node-sets means something else, is not whitespace, and a template can never see its caller's variables. Ten XSLT 1.0 rules with examples, and the patterns that make stylesheets slow.