| <xsl:text> | |
| Allows you to write literal text to the output document. | |
| Category | |
|
Instruction |
|
| Required Attributes | |
|
None. |
|
| Optional Attributes | |
|
|
| 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. <Have a great day!> |
|