我有以下代码
<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 ~<!@#$%^&*()_~!@#$%^&*()_+</value>
</note>
</any_0>
</db:P_RECEIVED_XML>
虽然我使用了disable-output-escaping =&#34; yes&#34; <{>},但&
转换为&
。
请帮助。
答案 0 :(得分:1)
您已将问题标记为XSLT。在XSLT中,使用:
<xsl:value-of select="your-node-here" disable-output-escaping="yes" />
会禁用转义,不输出&
为&
。
如果您看到不同的结果,可能是您使用扩展程序oraext:get-content-as-string()
的结果。尝试删除它,看看你得到了什么。
答案 1 :(得分:1)
disable-output-escaping仅在XSLT处理器生成的结果树被立即序列化,并且序列化在XSLT处理器的控制下时才有效。这意味着,例如,如果将结果写入DOM树,则它不起作用,然后使用DOM序列化生成词法XML。
允许XSLT处理器完全忽略disable-output-escaping。
所以它基本上取决于您使用的是什么XSLT处理器以及如何运行它。