2011-07-04 25 views
3

當在xsl:copy-of中使用該值時,我似乎遇到了保留disable-output-escaping的問題。XSLT - 在副本中保留禁用輸出轉義

這裏是我的代碼:

<xsl:call-template name="Display"> 
    <xsl:with-param name="text"> 
     <xsl:value-of select="content" disable-output-escaping="yes" /> 
    </xsl:with-param> 
</xsl:call-template> 

<xsl:template name="Display"> 
    <xsl:param name="text" /> 
    <span><xsl:copy-of select="$text" /></span> 
</xsl:template> 

是被保留的,是從xsl:value-of語句時,他們在xsl:copy-of聲明正在使用轉義任何特殊字符。

例如:

<xsl:value-of select="$text" disable-output-escaping="yes">將顯示此:è

<xsl:copy-of select="$text">將顯示&#232

我想知道是否有解決這個辦法?

回答

3

根據規範,disable-output-escaping屬性只能在<xsl:value-of><xsl:text>說明中指定。

您只需要在xslt指令中實際輸出值的DOE,而不是用於設置參數值的DOE。

解決方案

替換:

<span><xsl:copy-of select="$text"/></span> 

有:

<span><xsl:value-of select="$text" disable-output-escaping="yes"/></span> 

請注意:通常應避免使用DOE,因爲它打破了XSLT建築模型和通常不需要。此外,DOE功能不是強制性的,並非所有的XSLT 1.0處理器都支持它。

注2:你實際上並不需要DOE。如預期的那樣,XSLT轉換的輸出應該由瀏覽器顯示。

0

disable-output-escaping控制串行器在傳遞文本節點時的動作。當文本節點沒有交給序列化程序時,例如當它被添加到臨時樹時,這沒有意義。