XSLT

As of August 2022[update], the most recent stable version of the language is XSLT 3.0, which achieved Recommendation status in June 2017.

[4] Typically, input documents are XML files, but anything from which the processor can build an XQuery and XPath Data Model can be used, such as relational database tables or geographical information systems.

[19] Rather than listing an imperative sequence of actions to perform in a stateful environment, template rules only define how to handle a node matching a particular XPath-like pattern, if the processor should happen to encounter one, and the contents of the templates effectively comprise functional expressions that directly represent their evaluated form: the result tree, which is the basis of the processor's output.

First, assuming a stylesheet has already been read and prepared, the processor builds a source tree from the input XML document.

XSLT functionalities overlap with those of XQuery, which was initially conceived as a query language for large collections of XML documents.

With the release of the XSLT 2.0, the W3C recommended in 2007 the registration of the MIME media type application/xslt+xml[21] and it was later registered with the Internet Assigned Numbers Authority.

[22] Pre-1.0 working drafts of XSLT used text/xsl in their embedding examples, and this type was implemented and continued to be promoted by Microsoft in Internet Explorer[23] and MSXML circa 2012.

In practice, therefore, users wanting to control transformation in the browser using this processing instruction were obliged to use this unregistered media type.

However, even the interpretive products generally offer separate analysis and execution phases, allowing an optimized expression tree to be created in memory and reused to perform multiple transformations.

This gives substantial performance benefits in online publishing applications, where the same transformation is applied many times per second to different source documents.

In June 2014, Debbie Lockett and Michael Kay introduced an open-source benchmarking framework for XSLT processors called XT-Speedo.

Diagram of the basic elements and process flow of eXtensible Stylesheet Language Transformations.
Rendered XHTML generated from an XML input file and an XSLT transformation.