XSLT is the transformation component of XSL, a formatting language for XML. When it was evident that a general facility for transforming between different XML vocabularies was of greater interest than formatting, a separate effort was undergone to develop it.

The transformation to be done is expressed declaratively, using pattern matching and a form of match precedence. There are also functions with parameters (evaluated eagerly) and named "modes" for both pattern matching and explicit computation. XSLT is an XML vocabulary, which obfuscates the fact that it is a full-blown functional language. For one thing, XSLT is side-effect free, and lacks assignment. All computation is done using recursion and name bindings, although there is some syntactic sugar for iteration.There are no higher order constructs in XSLT and it has no static typing. Some implementations of XSLT (such as James Clark's XT) use lazy evaluation.