Debugging XSLT has always been a challenge β especially when you're trying to understand why a transformation doesn't behave as expected. That's why I built XSLT Debugger, a .NET-based Visual Studio Code extension that brings real debugging support for XSLT stylesheets.
π What It Does
This extension lets you:
- Set breakpoints in
.xsltfiles - Step through transformations (step over, step into, continue)
- Auto-capture XSLT variables β All inline variables appear automatically in the Variables panel
- Watch nodes and variables β Add custom watches for XPath expressions and context nodes
- Capture and view
xsl:messageoutput - Debug with .NET engine (XSLT 1.0, matching Azure Logic Apps) or Saxon (XSLT 2.0/3.0)
- Support for
msxsl:scriptC# extensions (step-through skipped for embedded C#)
βοΈ Getting Started
- Install XSLT Debugger from VS Code Marketplace
- Update
.vscode/launch.jsonwith your XSLT and XML file paths - Open your
.xsltand.xmlfiles - Press F5 β Start Debugging
That's it β you can now set breakpoints, run step-by-step, and finally see what's happening in your transformations.
π¦ Sample files and launch configurations: GitHub Repository
π§© Why It Matters
This extension brings modern debugging to XSLT development β something that's been missing for years, especially for Azure Logic Apps developers.
Debugging XSLT 1.0 with .NET Engine β Matches Azure Logic Apps production runtime:

Debugging XSLT 2.0/3.0 with Saxon β Variable tracking in action with Debug console, Variables panel, and Watch panel showing inline XSLT variables:

Whether you're maintaining legacy integrations or building new Logic Apps workflows, this extension makes XSLT development finally debuggable.
β οΈ Current Limitations
The debugger is designed to stay simple and stable, without attempting to fully parse complex XSLT constructs:
- Breakpoint and step debugging β Limited to basic XSLT structures (templates, loops, expressions). Deep or dynamic template calls are intentionally not instrumented.
-
Variable inspection β Covers
@select-based variables; content-defined variables are skipped for now. -
Trace logging overhead β Minor runtime impact (~15% in
traceallmode). - Platform-specific builds β Separate downloads for Windows x64 and macOS ARM.
These tradeoffs ensure reliable debugging without overcomplicating the runtime.
π§© Note: This is a complementary developer tool for debugging and learning β not a production-grade runtime.
π VS Code Marketplace Windows x64
π VS Code Marketplace MacOS ARM
Built with β€οΈ to make XSLT development less mysterious and more productive.

Top comments (1)
This is really impressive! Making XSLT debugging approachable in VS Code is a game-changer, especially for people dealing with legacy XML workflows. I like that you highlighted both the capabilities and the current limitations clearly.