如何在xsl中接收原始数据

时间:2016-02-05 09:12:34

标签: xml xslt

我有一个jsp页面,它将xml字符串参数传递给xsl中的模板。

我在jsp中的代码是这样的:

<x:transform doc="${transactions}" xslt="${xslTransaction}">
    <x:param name="xmlCategory" value="${xmlCategory}"/>
</x:transform>

但是当我打印xmlCategory的值并查看页面来源时。它给了我这样的:

&lt;categories&gt;&lt;category&gt;&lt;id&gt;1&lt;/id&gt;&lt;type&gt;true&lt;/type&gt;&lt;name&gt;Salary&lt;/name&gt;&lt;userId&gt;1&lt;/userId&gt;&lt;/category&gt;&lt;/categories&gt;

而不是:

<categories><category><id>1</id><type>true</type><name>Salary</name><userId>1</userId></category></categories>

我认为正因为如此,我无法将xmlCategory转换为node-set to iterate。

有人可以向我解释这个案例以及如何解决它吗?

2 个答案:

答案 0 :(得分:1)

我不确定在您的设置环境中是否可以这样做,但您可以尝试在XSLT中使用disable-output-escaping="yes"

<xsl:value-of disable-output-escaping="yes" select="..." />

这样可以防止所选字符串中的字符被转义。

答案 1 :(得分:0)

您的问题似乎是您的服务器正在转义XML特殊字符。 我建议使用类似Apache Commons StringEscapeUtils.unescapeHTML4的方法将它们解码回实际的UTF-8字符,或编写自己的代码来获取转义字符并适当地替换它们(如“&amp; lt”到“&lt; “)