<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="../make-menu.xsl" type="text/xsl"?><html>
   <head>
      <this-is section="sourcedocs" page="whitespace" subpage=""/>
      <!--
           Generated at 2011-12-09T20:47:22.916Z--><title>Saxonica: XSLT and XQuery Processing: Whitespace Stripping in Source Documents</title>
      <meta name="coverage" content="Worldwide"/>
      <meta name="copyright" content="Copyright Saxonica Ltd"/>
      <meta name="title"
            content="Saxonica: XSLT and XQuery Processing: Whitespace Stripping in Source Documents"/>
      <meta name="robots" content="noindex,nofollow"/>
      <link rel="stylesheet" href="../saxondocs.css" type="text/css"/>
   </head>
   <body class="main">
      <h1>Whitespace Stripping in Source Documents</h1>
      <p>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.</p>
      <p>By default, if there is a DTD or schema, then <i>ignorable whitespace</i> is stripped from any source
document loaded from a <code>StreamSource</code> or <code>SAXSource</code>. 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 <code>xml:space</code> attributes in the source document.</p>
      <p>It is possible to change this default behavior in several ways.</p>
      <ul>
         <li content="para">
            <p>From the Transform or Query command line, options are available: <code>-strip:all</code> strips all whitespace text nodes,
<code>-strip:none</code> strips no whitespace text nodes, and <code>-strip:ignorable</code> strips ignorable whitespace text nodes only
 (this is the default).</p>
         </li>
         <li content="para">
            <p>If the <code>-p</code> option is used on the command line, then query parameters are recognized in the URI passed to 
the <code>document()</code> or <code>doc()</code> function. The parameter <code>strip-space=yes</code> strips
all whitespace text nodes, <code>strip-space=no</code> strips
no whitespace text nodes, and <code>strip-space=ignorable</code> strips
ignorable whitespace text nodes only. This overrides anything specified on the command line.</p>
         </li>
         <li content="para">
            <p>Options corresponding to the above can also be set on the <code>TransformerFactory</code> object or on the
<a class="bodylink" href="../javadoc/net/sf/saxon/Configuration.html"><code>Configuration</code></a>. These settings are global.</p>
         </li>
      </ul>
      <p>Whitespace stripping that is specified in any of the above ways does not occur only if the source document is 
parsed under Saxon's control: that is, if it supplied as a JAXP <code>StreamSource</code> or <code>SAXSource</code>. It also applies where
      the input is supplied in the form of a tree (for example, a DOM). In this case Saxon wraps the supplied tree in a virtual tree that provides a view of
      the original tree with whitespace text nodes omitted.</p>
      <p>This whitespace stripping is additional (and prior) to any stripping carried out as a result of the
<code>xsl:strip-space</code> declaration in the stylesheet.</p>
      <table width="100%">
         <tr>
            <td>
               <p align="right"><a class="nav" href="streaming.xml">Next</a></p>
            </td>
         </tr>
      </table>
   </body>
</html>