<xsl:text> 元素
從樣式表產生文字節點。 在輸出中保留僅泛空白字元節點。
<xsl:text
disable-output-escaping = "yes" | "no">
</xsl:text>
屬性
disable-output-escaping
預設值為 "no"。 如果值為 "yes",則會輸出藉由具現化 <xsl:text> 項目所產生的文字節點,而不會包含任何逸出。 例如,下列程式碼將會產生單一字元 "<"。<xsl:text disable-output-escaping="yes"><</xsl:text>
注意事項
因為 disable-output-escaping="yes" 會產生格式不正確的文件,必須小心使用。格式不正確的輸出可能會在特定情況下產生錯誤。例如,對 XML 文件執行 transformNodeToObject 時,需要格式正確的結果,所以當 disable-output-escaping 已影響到文件的格式正確性時,就可能無法完成這個動作。請將 disable-output-escaping="yes" 視為進階功能,只有在充分瞭解可能的風險時,才能加以使用。
項目資訊
發生次數 |
無限制 |
父項目 |
xsl:attribute、xsl:comment、xsl:copy、xsl:element、xsl:fallback、xsl:for-each、xsl:if、xsl:otherwise、xsl:message、xsl:param、xsl:processing-instruction、xsl:template、xsl:variable、xsl:when、xsl:with-param、輸出項目 |
項目子系 |
(沒有項目子系) |
備註
在樣式表中,可以使用或不使用 <xsl:text> 來產生常值結果樹狀目錄的文字。 然而,您可以使用這個項目,對樣式表所建立的泛空白字元做一些控制。 例如,為了讓樣式表更有可讀性,您可能想在一個範本的每行撰寫一個項目,並縮排某些行。 這麼做會使得範本規則內含泛空白字元。 這可能是、也可能不是您所要的轉換效果。
您有時可能想要加入一個泛空白字元來隔開兩個資料值。 若是如此,則可以使用 <xsl:text> 項目來完成這個動作。 <xsl:text> 所內含的泛空白字元會輸出到結果樹狀目錄中。 因此,下列範本 -
<xsl:template match="a-node">
<xsl:text>
</xsl:text>
</xsl:template>
- 必定會在結果樹狀目錄中輸出新的文字節點行。 不過,結果樹狀目錄會刪除 <xsl:text> 未含括的僅泛空白字元節點。 下列範例說明如何使用空 <xsl:text/> 項目來執行這個動作。
範例
XML 檔 (text.xml)
<?xml version="1.0"?>
<topic>
<text>First line.</text>
<text>Second line.</text>
<text></text>
</topic>
XSLT 檔 (text.xsl)
下列樣式表會利用空 <xsl:text/> 項目,刪除所有可能會由範本規則產生的泛空白字元 (空格、新行和索引標籤)。 底下顯示了格式化輸出結果。
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="text">
<xsl:text/>"<xsl:value-of select="."/>"<xsl:text/>
</xsl:template>
</xsl:stylesheet>
HTML 檔 (text.htm)
下列 HTML 檔可用來嘗試 XSLT 轉換及查看結果。
<html>
<head>
<title></title>
</head>
<body onload="init()">
<div><input type="text" id="xmlName" value="text.xml"></div>
<div><input type="text" id="xslName" value="text.xsl"></div>
<div><input type=button value="transform" onclick="trans();"></div>
<div id="divErr"></div>
<pre id="preRes" style="background:blue;color:gold"></pre>
</body>
<script language="javascript">
function trans()
{
xmlFile=xmlName.value;
xslFile=xslName.value;
if (xmlFile == "" || xslFile == "")
{
divErr.innerHTML = "invalid xml/xsl file names.";
}
var xsl = new ActiveXObject("MSXML2.DOMDOCUMENT.6.0");
var xml = new ActiveXObject("MSXML2.DOMDocument.6.0");
xml.validateOnParse = false;
xml.async = false;
xml.load(xmlFile);
if (xml.parseError.errorCode != 0)
divErr.innerHTML = "XML Parse Error : " + xml.parseError.reason;
xsl.async = false;
xsl.load(xslFile);
if (xsl.parseError.errorCode != 0)
divErr.innerHTML = "XSL Parse Error : " + xsl.parseError.reason;
try
{
res = xml.transformNode(xsl.documentElement);
preRes.innerText = res;
}
catch(err)
{
divErr.innerHTML = "Transformation Error:"
+err.number+"*"+err.description;
}
}
</script>
</html>
請嘗試
將程式碼範例複製到適當的檔案,再將檔案儲存到本機磁碟機。
按兩下 HTML 檔 text.htm。
在出現的網頁上按一下 [轉換] 按鈕。
輸出
完全按照以上的格式使用 XSLT 樣式表時,就會從頭到尾將所有文字值結合成單一輸出行:
"First line.""Second line."""
如果從符合 text 項目的範本中,移除這兩個 <xsl:text/> 項目,則會看到下列輸出 (7 行):
"First line."
"Second line."
""
如果只從範本移除第一個 <xsl:text/> 項目,則會看到下列輸出 (4 行):
"First line."
"Second line."
""