Ampersand“&”导致net.sf.saxon.s9api.SaxonApiException

问题描述 投票:0回答:1

我有一个xslt样式表来处理旧系统提供的一些XML数据。 XML样本:

<variable id="taxId" value="123456789"/>
<variable id="name" value="STICKS &amp; STONES"/>
<variable id="email" value="[email protected]"/>

正在使用的XSL样式表(简体):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:for-each select="/data/variable[@id = 'processData']/variable">
            <output>
                <variable id="processData">
                    <xsl:copy-of select="/contract/variable[@id = 'processData']/variable[@id = 'client'"/>
                    <xsl:copy-of select="/contract/variable[@id = 'processData']/variable[@id != 'client']"/>
                </variable>

                <xsl:copy-of select="/contract/variable[@id != 'processData']"/>
                <supplement>
                    <xsl:copy-of select="/contract/supplement/*[local-name() != 'contractData']"/>
                    <contractData>
                        <xsl:copy-of select="/contract/supplement/contractData/*[local-name() != 'provider']"/>
                        <xsl:for-each select="/contract/supplement/contractData/provider[taxIdNo = $taxId]">
                            <provider>
                                <xsl:copy-of select="/contract/supplement/contractData/provider/*"/>
                            </provider>
                        </xsl:for-each>
                    </contractData>
                </supplement>
            </output>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

应用样式表时,会有一个例外:

Caused by: net.sf.saxon.trans.XPathException: No closing ';' found for entity or character reference

我尝试处理相同的数据,将%&mp;更改为字母(假设E),所有操作均按预期进行。

我也尝试使用disable-output-escapeing,但没有运气,因为它似乎仅与xsl:value-of指令兼容,而不与xsl:copy-of] >说明。

我如何将&符保留在最终转换的xml中?

我有一个xslt样式表来处理旧系统提供的一些XML数据。 XML示例:

xml xslt escaping saxon ampersand
1个回答
0
投票

您尚未提供负责错误的代码部分。

© www.soinside.com 2019 - 2024. All rights reserved.