我有一个xslt样式表来处理旧系统提供的一些XML数据。 XML样本:
<variable id="taxId" value="123456789"/>
<variable id="name" value="STICKS & 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示例:
您尚未提供负责错误的代码部分。