使用xsl,如何将实体以十六进制保存到输出中

时间:2013-09-20 18:27:38

标签: xml xslt saxon

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

我的输入包含十六进制的实体,例如:& 当我使用saxon处理这个xml时,我需要像输入一样保持这个实体。

我已经尝试过字符映射或更改de编码,但它总是在&或字符&中转换此实体。

任何人都知道如何解决这个问题?

这是一个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>

1 个答案:

答案 0 :(得分:0)

我们找到了解决方案,

使用xsl:character-map

但我们必须在字符串参数中添加实体&amp; amp之前的字符串参数,如下所示:

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

并且转换按预期工作。