Setting up the query language environment became more elaborate with new functionality
introduced with XSLT 2.0 and later 3.0. The 2016 specification addressed this new
functionality by allowing the xsl:function
declaration as an
additional top-level element and by restricting the use of the new
fn:error()
function. Following the elimination of the result tree
fragment data-type in favor of temporary trees it also made the value
attribute of the sch:let
expression optional,
allowing temporary trees as value.
The 2020 specification did not add anything in support of XSLT 3.0.