disable-output-escaping =“yes”无效

时间:2015-03-23 07:28:56

标签: xslt

我有以下代码

<db:P_RECEIVED_XML>
        <xsl:value-of disable-output-escaping="yes" select="oraext:get-content-as-string(/ns0:ReceivedMessage/MessageContent/*)"/>
      </db:P_RECEIVED_XML>

当我测试此转换时,将值设为

<MessageContent xmlns="">
      <any_0 xmlns="##any">
         <note>
         <name>GENERAL</name>
         <value><![CDATA[test ~<!@#$%^&*()_~!@#$%^&*()_+]]></value>
      </note>
      </any_0>
   </MessageContent>

呈现的输出是

<db:P_RECEIVED_XML><any_0 xmlns="##any">
         <note>
         <name>GENERAL</name>
         <value>test ~&lt;!@#$%^&amp;*()_~!@#$%^&amp;*()_+</value>
      </note>
      </any_0>
</db:P_RECEIVED_XML>

虽然我使用了disable-output-escaping =&#34; yes&#34; <{>},但&转换为&amp;

请帮助。

2 个答案:

答案 0 :(得分:1)

您已将问题标记为XSLT。在XSLT中,使用:

<xsl:value-of select="your-node-here" disable-output-escaping="yes" />

会禁用转义,输出&&amp;

如果您看到不同的结果,可能是您使用扩展程序oraext:get-content-as-string()的结果。尝试删除它,看看你得到了什么。

答案 1 :(得分:1)

disable-output-escaping仅在XSLT处理器生成的结果树被立即序列化,并且序列化在XSLT处理器的控制下时才有效。这意味着,例如,如果将结果写入DOM树,则它不起作用,然后使用DOM序列化生成词法XML。

允许XSLT处理器完全忽略disable-output-escaping。

所以它基本上取决于您使用的是什么XSLT处理器以及如何运行它。