← all checks

How xslint checks

The full list of checks with descriptions and examples is available at the check catalog.

xslint runs in two stages. Validators first establish that the input is valid; linters then run over the stylesheets that pass, catching stylistic, semantic, and logical problems. A stylesheet that does not parse is reported once and skipped, so one broken file never hides the feedback on the rest.

Validators:

Linters:

Every check that reads an expression reads it from an XPath or pattern attribute of an XSLT element (select, test, match, …) or from an attribute value template — <div class="{count(item) = 0}"/> is checked, and fixed, inside the braces. An attribute of your own output vocabulary that happens to share a name with an XSLT one, as in <widget test="count(item) = 0"/>, holds text destined for the result tree, so it is never read as XPath and never rewritten. And each of them is handed the expressions the validator kept, so a malformed one is reported once rather than nagged about its spacing, its axes and its count(...) calls on top of that.