2014-01-06 38 views
0

什麼是XSL文本和正常的字符串

<xsl:param name="abc">123</xsl:param> 
<xsl:param name="def"><xsl:text>123</xsl:text></xsl:param> 

之間的differnce他們都工作相同,但兩者之間有一定的差異。

回答

1

<的xsl:文本>將允許你處理的文字(逃逸以及空格):

<xsl:text disable-output-escaping="yes|no">

http://msdn.microsoft.com/en-us/library/ms256107(v=vs.110).aspx

在風格文本可以生成文字結果樹 有或沒​​有< xsl:text >。但是,使用此元素,您可以對樣式表創建的空白區域執行一些控制。對於 示例,爲了使樣式表更具可讀性,您可能希望 在模板中每行寫入一個元素,並縮進一些行。做 這樣就引入了空白作爲模板規則的一部分。這可能或可能不是期望的轉換效果。有時候你可能想要引入一個空格字符來分隔兩個數據值 。您可以使用< xsl:text >元素來完成此操作。白色 <中包含的空格xsl:將文本>輸出到結果樹。

0

的主要原因使用<xsl:text>是空白arount文本XSLT樣式表被正常丟棄/剝離(http://www.w3.org/TR/xslt#strip)。包含在<xsl:text>中的文字是該規則的例外。因此,如果您想明確輸出空格,製表符或換行符,您可能需要使用<xsl:text>

<xsl:text>還允許逐個輸出轉義模式的控制。這是不常用的;除非您生成非XML /非HTML輸出,否則禁用輸出轉義通常是錯誤的解決方案。

[抱歉,現在糾正上述混淆。我只注意到我確實在看XSLT 1.0的工作草案,而不是最終的RECcomendation。 Mega Culpa,Mea Culpa,Mea Maxima Culpa。]

+0

「自XSLT 2.0開始,也允許逐個輸出轉義模式的控制(在XSLT 1.0中只能在全局級別上設置,通過「。」)我不認爲這是正確的。 –

+0

再次檢查1.0建議書,我沒有看到它。隨意指出我錯過了它。 – keshlam

+0

我想你的意思是寫「控制*空白空間剝離*」,而不是*輸出轉義*?這也可能與你的第一段有關,現在我再讀一遍。 –

相關問題