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 StreamSource or 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.

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 StreamSource or SAXSource.

This whitespace stripping is additional (and prior) to any stripping carried out as a result of the xsl:strip-space declaration in the stylesheet.