XSLT:输入字符串中有&符号,如何转义它

时间:2014-11-24 06:22:51

标签: java xslt xslt-2.0

我有一个XSLT模板。它被调用,params从Java程序发送给它。

问题是,其中一个变量包含'&'

<xsl:value-of select="customerName" />

customerName可能包含'&'。无论我做什么,我都无法让它呈现。我试过了

replace(customerName, '&', '&amp;')

有什么方法可以让它渲染吗?

4 个答案:

答案 0 :(得分:1)

因此输入java参数集包含&,输出需要&amp;也可能是XML。

然后使用顶部的output元素来实现此目的。

<xsl:output method="xml"/>

<强> 替代

您也可以尝试在 java 方面进行更正。如果不在&上工作,则应该使用替换&amp;

customerName = customerName.replace(, "&", "&amp;");

在XSLT中,以下可能有效。

replace($customerName, '&amp;', '&amp;amp;')

答案 1 :(得分:0)

试试这个,

  <xsl:if test="contains($customerName,'&amp;')">
    <xsl:value-of select="concat(substring-before($customerName,'&amp;'),substring-after($customerName,'&amp;'))"/>
  </xsl:if>

答案 2 :(得分:0)

要在XSLT环境中运行XML,XML应该具有标准实体,即仅允许ISO实体,Unicode实体等。

如果&#39;&amp;&#39;发现那些字符串应该以&#39;;&#39; (实体表示是&amp; ....;,即实体应以分号结尾,以及那些应该是定义的实体)

这里&#39;&amp;&#39;不是一个实体,&#39;&amp; amp;&#39;或&#39;&amp;#x0026;&#39; 是一个实体。

答案 3 :(得分:0)

我能够解决这个问题。 基本上由于输入参数有&#39;&amp;&#39;,因此它是无效的xml。我不得不对它进行xml编码。