XML.com

How to Evaluate Your XSLT Editor

December 31, 2025

Gerben Abbink

Gerben Abbink gives us some tips on evaluating XSLT 3 editors.

“XSLT (Extensible Stylesheet Language Transformations) remains one of the most capable—and most underestimated—technologies for transforming structured content.” (Vasu Chakkera, 2025).

So it is understandable that XSLT is an important technology in fields such as in publishing and governmental data exchange. Fortunately, it is still getting more and more powerful. Especially the latest version of XSLT (XSLT 3.0) combined with XPath 3.1 is extremely powerful. It overcomes several issues of the earlier versions: you can now also transform Json files, it is far less verbose, you can use text value templates, XPaths can be evaluated dynamically, functions and types are added, the function set is extended with Sequences, Arrays and Maps and finally streaming is supported (for more explanation, I recommend reading: Why You Should Be Using XSLT 3.0).

But all these capabilities come with a cost: XSLT and XPath are not trivial: they have a steep learning curve, and are so extensive, it is practically impossible to know and use all features by heart. Having an editor that helps you write correct XSLT 3.0 and XPath 3.1 quickly can make a significant difference in both productivity and correctness.

Many XSLT editors are available, and you may be using one already for years. Switching is not an easy step: e.g. how do you determine whether a new tool would be worth the learning process? This article outlines criteria you can use to assess whether an editor truly supports modern XSLT development.

I have based the criteria on the W3C specifications for XSLT and XPath —after all, the primary task of an editor is to help you produce code that conforms to those standards.

Next to the general criterion of supporting the latest standards, I distinguish three main use cases your editor should support: viewing, editing, and running. Below I elaborate on the criteria and I provide several test cases you can use to evaluate your tool.

Support for the Latest Standards

The older standards (XSLT 1.0 and 2.0) are no longer maintained and Chromium has even planned to fully remove support for XSLT 1.0 from the Chrome browser. Luckily, XSLT 3.0 and XPath 3.1 are very much alive-and-kicking in the world of publishing, finances and governments. Editors that support XSLT 3.0 and XPath 3.1 are OxygenXML, XMLSpy, XMLBlueprint and VSCode (with the XSLT/XPath extension).

Viewing your XSLT

Even before editing or executing a transformation, an editor has several ways to help you understand your code.

Syntax Coloring

Good syntax coloring improves readability by distinguishing the structural components of XSLT and XPath.

Is the coloring correct according to the XSLT and XPath grammar?
To test correctness, try expressions that mix names and operators:

<xsl:value-of select="and and and and and"/>

Correct coloring should distinguish and as a name from and as a boolean operator (see XPath AndExpr and NameTest). So the correct coloring would be:

<xsl:value-of select="and and and and and”/>

Other examples to test:

  • <xsl:value-of select="gt gt gt gt gt gt gt gt gt"/>
  • <xsl:value-of select="123 treat as xs:integer + + + 3"/>

Tooltips

Tooltips help you understand XPath expressions quickly by showing inline documentation—ideally with syntax coloring and hyperlinks.

Tooltip from Oxygen
Example tooltip on a function from Oxygen

Evaluate:

  • Are the tooltips clear and readable?
  • Do they include syntax coloring?
  • Are there links to documentation?
  • Do they appear for all XPath components?
Pi function operator
Example tooltip on an operator from XMLBlueprint

Jump-to-Definition

To save time navigating larger stylesheets and (large) sets of stylesheets, a good editor lets you jump directly to definitions. Check:

  • Jumping to functions (including user-defined functions), templates and variables.
  • And because these functions, templates and variables can be defined outside the current file, i.e. in a ‘main’ file that includes other files, the editor should also be able to jump to these definitions, thus opening the appropriate file.

Precise XPath Error Locations

Accurate error reporting is crucial—especially for XPath, where small mistakes can be hard to spot.

Check whether the editor:

  • Jumps to errors in included/imported stylesheets
  • Highlights the exact position of XPath errors

You can test this latest feature with this example file containing XPath errors. These are the exact error locations, underlined in red:

Error locations underlined in red
Exact error locations

Editing your XSLT

Editing support determines how quickly you can write correct XSLT and XPath. Code completion is central: the editor should present only the valid options at any point.

XSLT Syntax

The basic support for code completion of XSLT 3.0 provides completion for all elements and attributes. An editor can help you by:

  • Including the semantics (i.e what it is used for).
  • Including code completion for both named and matched templates

XPath Functions

XPath 3.1 has over 200 built in functions for string manipulation, mathematics, arrays, maps, etc. Remembering the correct name and spelling can be hard and the function names can be very long.

State of the art completion for functions, contains:

  • Completion for all XPath 3.1 functions, especially the 30 functions added within the latest 3.1 version. Try for instance the math function pi:
  • Function completion
    Function completion
  • Completion for user-defined XSLT functions, even when declared in included files.

XSLT Variables

The scope of XSLT variables is important for correct interpretation of your code. Editors, however, can easily present either too many options or too few, thus making it unnecessarily difficult to write your code:

  • Does the code completion account for the difference in scope of global vs local variables, static vs non-static variables?
Variable completion
Variable completion

Notice that ccc is not presented in the code completion.

  • Does it suggest variables declared in included and or imported files?

XPath 3.1 Syntax

XPath is the most powerful part of XSLT—and the most error-prone. Quality XPath completion dramatically improves correctness.

Verify that the editor provides completion for:

  • cast as expressions
  • arrays ([ ])
  • maps (map{…})
  • built-in types such as xs:integer
  • operators, such as and, or

XPath Expressions vs XPath Patterns

XPath expressions (xsl:template/@match) and XPath patterns (xsl:value/@select) may look alike, but the syntax is actually different.

Examples you can test:

  • <xsl:template match="node-name() and node-name()"/>
    and is not allowed here and must not appear in completion.
  • <xsl:value-of select="node-name() and node-name()"/>
    Here and is allowed and should appear in completion.

Running your XSLT

Running your stylesheet—executing the transformation—is the end goal of your XSLT. A good editor streamlines this process by being easy to use and supporting specific XSLT features.

Ease of Use

Check whether the editor:

  • Runs your XSLT when pressing a shortcut key.
  • Runs on unsaved files.
  • Is fast, even on large files and file sets
  • Does not flicker during transformations.
  • Supports using URLs as input sources (besides Windows path)
  • Offers multiple output options (in a browser, editor)
  • Offers multiple output formats (text, XML, HTML)
  • With included files, the editor should be able to run the top most stylesheet.

XSLT Parameters

Your editor should have a way to recognize which parameters are mandatory and easily set these parameters before running a transformation.

Initial Template

XSLT 3.0 allows running a stylesheet without an input document using xsl:initial-template.

So your editor should support this XSLT:

<xsl:template name="xsl:initial-template">

<xsl:value-of select="'HELLO WORLD!'"/>

</xsl:template>

Current XSLT Editors Compared

I hope I have given you a way to test whether your XSLT editor meets your needs—and perhaps I have even shown you features you didn’t know existed.

If you're interested in how the four XSLT 3.0 editors (OxygenXML, XMLSpy, XMLBlueprint, VSCode) perform against the presented criteria, please see the results of my comparison.

Please let me know if you have additional features that would make your XSLT editing faster, easier or more correct.