在disable-output-escaping
内使用该值时,我似乎遇到了保留xsl:copy-of
的问题。
这是我的代码:
<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">
将显示è
我想知道是否有办法解决这个问题?
答案 0 :(得分:3)
根据规范,disable-output-escaping
属性只能在<xsl:value-of>
和<xsl:text>
说明中指定。
您只需要在实际输出值的xslt指令上使用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转换的输出。
答案 1 :(得分:0)
disable-output-escaping在传递文本节点时控制序列化程序的操作。当文本节点没有被传递给序列化程序时,例如当它被添加到临时树时,它没有意义。