What is XSLT 3.0?
XSLT 3.0 is the latest version of the XSL Transformations language, published by the W3C in 2017. It represents a major evolution that makes XSLT a modern functional programming language, adding maps and arrays, streaming for large document processing, higher-order functions, and native JSON support.
XSLT 3.0 is used in demanding enterprise scenarios: processing large XML feeds without loading them in memory, building complex data pipelines, and integrating XML and JSON systems. Testing XSLT 3.0 stylesheets requires a full Saxon processor — XSLT Playground provides this for free.
Key Features of XSLT 3.0
Maps and Arrays
First-class key-value maps and arrays. Process JSON data, build lookup tables, and handle complex data structures natively in XSLT.
Streaming
Process multi-gigabyte XML documents without loading them in memory using xsl:stream and streaming modes.
Higher-Order Functions
fn:fold-left(), fn:for-each(), fn:filter() — pass and return functions as values for functional-style transformations.
JSON Support
Read JSON with json-doc(), output JSON with method="json". Bridge XML and JSON systems in a single stylesheet.
Error Handling
xsl:try / xsl:catch for robust error handling. xsl:on-empty / xsl:on-non-empty for conditional output.
xsl:merge
Merge multiple sorted input sequences efficiently — ideal for combining data from multiple sorted XML sources.
How to Test XSLT 3.0 Online
- Click Open XSLT 3.0 Editor — the tool opens with XSLT 3.0 pre-selected.
- Paste your XSLT 3.0 stylesheet. Declare
version="3.0"in the root element. - Add your XML (or JSON) input in the Data Pipeline panel.
- Results appear automatically. Switch to trace mode to debug template execution.
- Share your stylesheet with a single link — no account needed.
XSLT 3.0 vs XSLT 2.0 — What's New
- Maps & Arrays: XSLT 2.0 has no native map or array type. XSLT 3.0 adds
map{}andarray{}as first-class types. - Streaming: New in 3.0. Process documents larger than available memory without loading them fully.
- Higher-order functions: Functions as values — pass, store and return functions. Enables functional programming patterns.
- JSON: XSLT 2.0 has no JSON support. XSLT 3.0 has built-in JSON parsing and output.
- xsl:try/catch: Structured error handling, new in 3.0.
- Packages:
xsl:packagefor modular, reusable stylesheet libraries.
Frequently Asked Questions
- What is new in XSLT 3.0?
- XSLT 3.0 adds maps and arrays, streaming for large documents, higher-order functions, JSON input/output,
xsl:try/xsl:catcherror handling,xsl:on-empty/xsl:on-non-empty, andxsl:merge. - Is there a free online XSLT 3.0 tester?
- XSLT Playground is the only free online tool with full XSLT 3.0 support via Saxon HE 12.5. All other free online XSLT tools are limited to XSLT 1.0. No installation or account required.
- Can I process JSON with XSLT 3.0 online?
- Yes. XSLT 3.0 supports JSON via
json-doc()andmethod="json". XSLT Playground's Saxon HE backend fully supports these features. - Does XSLT 3.0 support higher-order functions?
- Yes. XSLT 3.0 has
fn:apply(),fn:fold-left(),fn:fold-right(),fn:for-each(), andfn:filter(). You can pass and return functions as values. - Do browsers support XSLT 3.0?
- No. Browsers only support XSLT 1.0 natively. XSLT 3.0 requires a dedicated processor like Saxon. XSLT Playground runs Saxon on the server so you can test XSLT 3.0 without installing anything.
Also Available
Need XSLT 2.0 with grouping and regular expressions? Try the XSLT 2.0 Online Tester →