XSLT 2.0 introduced a host of new features:
- Strong typing and all XSD types
- The ability to define and write own functions
- node-set() - replaces XSLT's 1.0 Result Tree Fragment, creating fully functional tree
- New functions and operators:
- - XPath 2.0
- - String processing and regular expressions
- - Grouping (for-each-group function)
- - String processing
- - Sequence type
XSLT 3.0 further improved the formula:
- Streaming tranformations (previously file had to be loaded to memory to be processed)
- Packages - improve the modularity of large stylesheets
- Improved error handling (for example <xsl:try>)
- Support for maps and arrays, enabling XSLT to handle JSON as well as XML
- Functions can now be arguments to other (higher-order) functions