1

我目前在尝试输出包含与符号 (&) 的某个 XML 标记时遇到了一些麻烦。

更具体地说,当我尝试输出以下标签时。我收到一个错误

<fullname>Ben & Jerry</fullname>

但是使用以下标签运行得很好

<fullname>Ben and Jerry</fullname>

我已经用下面的代码试过了

<xsl:template match="fullname">
    <xsl:apply-templates/>
</xsl:template>

我也试过

<xsl:template match="fullname">
    <xsl:value-of-select="." disable-output-escaping="Yes"/>
</xsl:template>

两者都导致了错误。我让它工作的唯一方法是像这样使用 CDATA

<fullname><![CDATA[Ben & Jerry]]></fullname>

但是,我无法控制收到的 XML 文件,因此这不是一个可行的选择。我可以在 XSLT 中做些什么来规避/解决这个问题吗?

谢谢!

4

2 回答 2

5

&符号不能在格式良好的 XML 中显示为自身。你的例子应该是

<fullname>Ben &amp; Jerry</fullname>

我认为您无法使用任何 XSLT 处理器来解决这个问题。您需要修复生成 XML 的任何内容,使其格式正确。

于 2013-03-19T17:22:59.717 回答
1

更具体地说,当我尝试输出以下标签时。我收到一个错误

<fullname>Ben & Jerry</fullname>

实际上,这不是标签。它是一个开始标签,后跟一些无效内容,后跟一个结束标签。

您不能使用 XSLT 输出无效内容。如果必须输出非 XML 的内容,则需要使用非 XML 工具来完成。而且您更有可能在非 XML 论坛上获得建议。

你没有说清楚的是你的输入和输出到底是什么。你说你试图输出无效的 XML,但你没有说输入是什么。

于 2013-03-19T23:14:52.197 回答