xslt 2.8.0

There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global xslt --version 2.8.0
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local xslt --version 2.8.0
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=xslt&version=2.8.0
                    
nuke :add-package xslt --version 2.8.0
                    

xslt

Command-line XSLT 3.0/4.0 processor for .NET. Transform XML documents from the terminal using the PhoenixmlDb XSLT engine.

Installation

dotnet tool install -g xslt

Usage

# Transform XML with a stylesheet
xslt stylesheet.xsl input.xml

# Write output to a file
xslt -o result.html report.xsl data.xml

# Start from a named template (no source needed)
xslt -it main generate.xsl

# Pass parameters
xslt -p year=2026 -p title="Report" style.xsl data.xml

# Read source from stdin
cat data.xml | xslt transform.xsl

# Show timing breakdown
xslt --timing style.xsl large-input.xml

# Validate a stylesheet without running
xslt --dry-run style.xsl

# Stream large files (lower memory)
xslt --stream style.xsl large-input.xml

Features

  • XSLT 3.0/4.0 — packages, streaming, maps/arrays, higher-order functions, JSON output
  • Multiple output methods — XML, HTML, XHTML, text, JSON, adaptive
  • Streaming — process large files without loading into memory
  • xsl:result-document — generate multiple output files in one transform
  • Parameters — pass values from the command line
  • Timing — built-in performance profiling
  • Tracing — log template matching, function calls, and built-in rules

Documentation

Full documentation at phoenixml.dev

License

Apache-2.0

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Requires PhoenixmlDb.XQuery 2.8.0 and PhoenixmlDb.Core 2.4.0. W3C XSLT 3.0: 131 failing.

### Security

Security fixes for hosts that compile or run stylesheets from untrusted parties. The advisory will
be linked here when it is published.

### Schemas

- **Constructor functions of imported schema types** can be called (`t:size('8')`, `t:size#1`),
 and `function-available` answers for them.
- **Schema types by prefix in XPath**: `cast as t:size` and `castable as t:size` work (#316).
- **An inline `xs:schema` in `xsl:import-schema`** is read, through the schema provider's
 interface; a relative `schemaLocation` in it is relative to the stylesheet.
- **`xsl:validation` on a literal result element** is applied (#316).
- From PhoenixmlDb.XQuery 2.8.0: schemas are read through the shared schema layer and cached across
 transformations, an atomic value keeps its schema type, and a schema that requires XSD 1.1 says so.

### Streaming

- **`StrictStreamability`** (opt-in; `XsltTransformer.StrictStreamability`,
 `XsltTransformOptions.StrictStreamability`, CLI `--strict-streaming`) reports `XTSE3430` for a
 template in a streamable mode that is not streamable (#295).
- **Two wrong results in streamed rules are fixed**: an element rule with two
 `xsl:apply-templates` gave truncated output, and a document-node rule lost its second result.

### Conformance

The harness now accepts an expected error code only when the engine raised it, not when the code
merely appears in the message text (#318). With that stricter rule, W3C XSLT 3.0 is 131 failing.