输入元素中的未转义值

时间:2011-10-04 11:46:47

标签: xml xslt xpath

可以请别人告诉我为什么'disable-output-escaping'属性在下面的XSL模板中不起作用?

<INPUT type="text">
  <xsl:attribute name="value" >
    <xsl:value-of select="$query"  disable-output-escaping = "yes" />
  </xsl:attribute>
</INPUT>

我希望在'input'元素中看到未转义的值。

提前致谢

3 个答案:

答案 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>&lt;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>

Where I discovered the hack...