0

我在使用 xsl 处理 xml 并输出另一个 xml 时遇到问题。

我的输入有十六进制实体,例如:& 当我使用 saxon 处理这个 xml 时,我需要在输入中保留这个实体。

我已经尝试过字符映射或更改解码,但它总是将此实体转换&为字符 &。

有人知道如何解决这个问题吗?

这是一个 xml 示例:

<data><name>Pilot &#38; Co-pilot Seat</name></data>

这是一个xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                              xmlns:fo="http://www.w3.org/1999/XSL/Format"
                              xmlns:xs="http://www.w3.org/2001/XMLSchema"
                              xmlns:fn="http://www.w3.org/2005/xpath-functions">
    <xsl:template match="//name">
        <xsl:copy>
            <xsl:apply-templates/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>
4

1 回答 1

0

我们找到了解决方案,

使用 xsl:character-map

但是我们必须在字符串参数中的十六进制之前添加实体 &,如下所示:

<xsl:character-map name="isolat1">
    <xsl:output-character character="&#x0002F;" string="&amp;#x0002F;"/>
</xsl:character-map>

并且转换按预期工作。

于 2013-09-20T19:02:31.960 回答