Skip to content
Phil Fearon edited this page May 18, 2014 · 29 revisions

The XMLSpectrum project was started with the primary goal of providing syntax-highlighting for XPath-family source code (XSLT, XQuery etc.) and leave the formatting exactly as in the source. However, when testing XMLSpectrum against many XSLT samples in the public domain, a significant number of formatting issues were found in the original source.

Issues in code formatting can severely impact the readability of the code - to the extent where syntax-highlighting becomes largely irrelevant. This is why a significant number of XML/XSLT formatting features are included in XMLSpectrum - along with the option to preserve the original formatting 'as-is'.

This page summarises the XSLT parameters used to control formatting of XML/XSLT by highlight-file.xsl.

auto-trim off

XSLT Parameter: auto-trim=no (default) no formatting The above screenshot shows the highlighted result with auto-trim set to 'no'. Note that to ensure the original formatting is kept intact, the following settings are required - these are the defaults:

  • XSLT Parameter: format-mixed-content=no
  • XSLT Parameter: indent=-1
  • XSLT Parameter: force-newline=no

The following settings are also required if the XSLT is not well formed (e.g. namespace declarations are missing).

  • XSLT Parameter: document-type=xslt
  • XSLT Parameter: document-type-prefix=xsl (in this case it is inferred because it is on the first element)

auto-trim on

XSLT Parameter: auto-trim=yes no formatting

Here we can see that all indentation proportional to the XML nesting level has been identified and removed. Note that the indentation of both the select attribute name and the XPath expression value is still intact, this is a key feature in any tool that attempts to reformat XSLT.

indent 3

XSLT Parameter: indent=3 no formatting In this screenshot, the XML formatting of 2 spaces per nesting-level has been removed (because auto-trim is 'on') and then replaced with 3 spaces per nesting level - as specified by the indent=3 parameter value.

indent 2 (applied with no previous formatting)

XSLT Parameter: indent=3 no formatting

In this example, there's no indentation at all in the original source, so all indentation must be inferred from the XML nesting level and the position of linefeeds before attribute names and inside attribute values. The formatting of the XPath could be improved manually, but XMLSpectrum still manages to align the elements, attributes namespace declarations and multi-line attribute values fairly neatly.

color-theme css-inline css-path document-type document-type-prefix font-name format-mixed-content indent link-names output-method output-path sourcepath w3c-xpath-functions-uri

Clone this wiki locally