<xsl:text> |
Allows you to write literal text to the output document.
Category
Instruction
Required Attributes
None.
Optional Attributes
disable-output-escaping Defines whether special characters are escaped when they are written to the output document. For example, if the literal text contains the character > , it is normally written to the output document as & gt; . If you code disable-output-escaping= " yes " , the character > is written instead. The XSLT processor uses this attribute only if you're using the html or xml output methods. If you're using < xsl:output method= " text " > , the attribute is ignored because output escaping is not done for the text output method.
Content
#PCDATA, literal text, and entity references.
Appears in
<xsl:text> appears inside a template.
Defined in
XSLT section 7.2, Creating Text.
Example
This sample stylesheet generates text with <xsl:text>. We intermingle <xsl:text> elements and <xsl:value-of> elements to create a coherent sentence. In this case, we simply generate a text document, but this technique works equally well to create the text of an HTML or XML element. Here is the stylesheet:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:output method="text"/>

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

      <xsl:template match="/">
        <xsl:text>Your document contains </xsl:text>
        <xsl:value-of select="count(//*)"/>
        <xsl:text> elements and </xsl:text>
        <xsl:value-of select="count(//@*)"/>
        <xsl:text> attributes. </xsl:text>
        <xsl:value-of select="$newline"/>
        <xsl:text disable-output-escaping="yes"><Have a great day!></xsl:text>
      </xsl:template>
    </xsl:stylesheet>
Also notice our use of <xsl:variable> to generate line breaks. The <xsl:text> element inside the <xsl:variable> element contains a line break, so writing the value of that variable to the result tree gives us the line break we want. Given this XML document:
    <?xml version="1.0"?>
    <list xml:lang="en">
      <title>Albums I've bought recently:</title>
      <listitem>The Sacred Art of Dub</listitem>
      <listitem>Only the Poor Man Feel It</listitem>
      <listitem>Excitable Boy</listitem>
      <listitem xml:lang="sw">Aki Special</listitem>
      <listitem xml:lang="en-gb">Combat Rock</listitem>
      <listitem xml:lang="zu">Talking Timbuktu</listitem>
      <listitem xml:lang="jz">The Birth of the Cool</listitem>
    </list>
Our stylesheet produces these results:
    Your document contains 9 elements and 5 attributes.
    <Have a great day!>
Since we use the text output method, the disable-output-escaping attribute has no effect. If you change the stylesheet to use <xsl:output method="html"/> or <xsl:output method="xml"/>, then disable-output-escaping is used. Here are the results for disable-output-escaping="yes":
    Your document contains 10 elements and 2 attributes.
    <Have a great day!>
And here are the results for disable-output-escaping="no", the default:
    Your document contains 10 elements and 2 attributes.
    &lt;Have a great day!&gt;