遇到Ampersand符号时,XSLT崩溃

Cob*_*bus 1 ampersand

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

更具体的是,当我尝试输出以下标签时.我收到一个错误

<fullname>Ben & Jerry</fullname>
Run Code Online (Sandbox Code Playgroud)

然而,使用以下标记可以正常运行

<fullname>Ben and Jerry</fullname>
Run Code Online (Sandbox Code Playgroud)

我用以下代码尝试过它

<xsl:template match="fullname">
    <xsl:apply-templates/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

我也尝试过

<xsl:template match="fullname">
    <xsl:value-of-select="." disable-output-escaping="Yes"/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

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

<fullname><![CDATA[Ben & Jerry]]></fullname>
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

ant*_*oft 5

Ampersand不能在格式良好的XML中出现.你的榜样应该是

<fullname>Ben &amp; Jerry</fullname>
Run Code Online (Sandbox Code Playgroud)

我不认为你能用任何XSLT处理器解决这个问题.您需要修复生成XML的任何内容,以便格式良好.