<xsl:preserve-space> |
Defines the source document elements for which whitespace should be preserved.
Category
Top-level element
Required Attributes
elements This attribute defines the elements for which whitespace should be preserved. If you need to define more than one element, separate the element names with one or more whitespace characters.
Optional Attributes
None.
Content
None. <xsl:preserve-space> is an empty element.
Appears in
<preserve-space> is a top-level element and can only appear as a child of <xsl:stylesheet> .
Defined in
XSLT section 3.4, Whitespace Stripping.
Example
We'll illustrate how <preserve-space> works with the following stylesheet:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:output method="text"/>
      <xsl:preserve-space elements="listing"/>

      <xsl:variable name="newline">
    <xsl:text>
    </xsl:text>
      </xsl:variable>

      <xsl:template match="/">
        <xsl:value-of select="$newline"/>
        <xsl:value-of select="/code-sample/title"/>
        <xsl:value-of select="$newline"/>
        <xsl:for-each select="/code-sample/listing">
          <xsl:value-of select="."/>
        </xsl:for-each>
      </xsl:template>

    </xsl:stylesheet>
We'll use this stylesheet to process the following document:
    <?xml version="1.0"?>
    <code-sample>
      <title>Conditional variable initialization</title>
      <listing>
      <type>int</type> <variable>y</variable> = <constant>23</constant>;
      <type>int</type> <variable>x</variable>;
        <keyword>if</keyword> (<variable>y</variable> > <constant>10</constant>)
        <variable>x</variable> = <constant>5</constant>;
      <keyword>else</keyword>
        <keyword>if</keyword> (<variable>y</variable> > <constant>5</constant>)
          <variable>x</variable> = <constant>3</constant>;
      <keyword>else</keyword>
        <variable>x</variable> = <constant>1</constant>;
      </listing>
    </code-sample>
When we process this document with our stylesheet, we get these results:
    Conditional variable initialization

      int y = 23;
      int x;
        if (y > 10)
        x = 5;
      else
        if (y > 5)
          x = 3;
      else
        x = 1;
Compare this example to the one for the <strip-space> element.