Whitespace Stripping in Source Documents
A number of factors combine to determine whether whitespace-only text nodes in the source document
are visible to the user-written XSLT or XQuery code.
By default, if there is a DTD or schema, then ignorable whitespace is stripped from any source
document loaded from a
SAXSource. Ignorable whitespace is defined
as the whitespace that appears separating the child elements in element declared to have element-only content.
This whitespace is removed regardless of any
xml:space attributes in the source document.
This represents an incompatible change in Saxon 8.6 relative to previous versions; the change has been made
because this is now the standard approach defined in the W3C data model document.
It is possible to change this default behavior in several ways.
From the Transform or Query command line, options are available: -sall strips all whitespace text nodes,
-snone strips no whitespace text nodes, and -signorable strips ignorable whitespace text nodes only
(this is the default).
If the -p option is used on the command line, then query parameters are recognized in the URI passed to
doc() function. The parameter
all whitespace text nodes,
no whitespace text nodes, and
ignorable whitespace text nodes only. This overrides anything specified on the command line.
Options corresponding to the above can also be set on the
TransformerFactory object or on the
Configuration. These settings are global.
Whitespace stripping that is specified in any of the above ways occurs only if the source document is
parsed: that is, if it supplied as a JAXP
This whitespace stripping is additional (and prior) to any stripping carried out as a result of the
xsl:strip-space declaration in the stylesheet.