我在尝试输出包含Ampersand符号(&)的某个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中做些什么来规避/解决这个问题吗?
谢谢!
答案 0 :(得分:5)
Ampersand不能在格式良好的XML中出现。你的例子应该是
<fullname>Ben & Jerry</fullname>
我认为你不能用任何XSLT处理器解决这个问题。您需要修复生成XML的任何内容,以便格式良好。
答案 1 :(得分:1)
更具体的是,当我尝试输出以下标签时。我得到了 错误
<fullname>Ben & Jerry</fullname>
实际上,这不是标签。它是一个开始标记,后跟一些无效内容,后跟一个结束标记。
您无法使用XSLT输出无效内容。如果必须输出非XML的东西,则需要使用非XML工具来执行此操作。而且您更有可能在非XML论坛上获得建议。
您尚未明确的是您的输入和输出。您说您正在尝试输出无效的XML,但您没有说输入是什么。