可以请别人告诉我为什么'disable-output-escaping'属性在下面的XSL模板中不起作用?
<INPUT type="text">
<xsl:attribute name="value" >
<xsl:value-of select="$query" disable-output-escaping = "yes" />
</xsl:attribute>
</INPUT>
我希望在'input'元素中看到未转义的值。
提前致谢
答案 0 :(得分:1)
为什么'disable-output-escaping'属性不起作用 下面的一块XSL模板?
<xsl:attribute name="value" > <xsl:value-of select="$query" disable-output-escaping = "yes"
/&GT;
D-O-E仅对文字节点有效 - 不对属性有效。
如果输出方法是xml
,那么XSLT处理器必须输出格式良好的XML文档,然后必须转义任何属性值中的特殊字符。
您可以尝试指定:
<xsl:output method="html"/>
但是,请记住,D-O-E根本不是XSLT的强制功能,而某些XSLT处理器不实现D-O-E。因此,您可能需要手动输入所需值(并且可能使用“text”输出方法)。
答案 1 :(得分:0)
您可以将输出方法更改为html,即:
<xsl:output method="html"/>
答案 2 :(得分:0)
我认为这是对局势的黑客攻击。通过创建文本节点然后将html放在那里,直到您需要转义的属性。该文件将正确逃脱。
<xsl:text disable-output-escaping><input type="text" SIZE="62" name="text1" value="</xsl:text>
<xsl:value-of select="$temp" disable-output-escaping="yes"/>
<xsl:text disable-output-escaping>" /></xsl:text>