0

我有以下 XML:

<item>
    <description><![CDATA[Euro sign: €]]></description>
</item>

当我针对这个 XSL 运行它时:

<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" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">

    <xsl:output method="xml" name="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="yes" />

    <xsl:template match="item">
        <xsl:result-document href="test.xml" format="xml">        
            <feed>
                <xsl:value-of select="description" />
            </feed>
        </xsl:result-document>
    </xsl:template>
</xsl:stylesheet>

“test.xml”等于:

<feed>
    <description>Euro sign: €&lt;/description>
</feed>

这是完美的。但是,当<xsl:result-document>删除时,如下所示:

<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" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">

    <xsl:output method="xml" name="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="yes" />

    <xsl:template match="item">
        <feed>
            <xsl:value-of select="description" />
        </feed>
    </xsl:template>     
</xsl:stylesheet>

输出等于:

<feed>
    <description>Euro sign: €&lt;/description>
</feed>

这是不正确的,因为欧元符号似乎已被转义。

使用普通输出时,有什么方法可以保持欧元符号不变?

提前致谢。

4

2 回答 2

2

我们在 Eclipse 的控制台窗口中显示数据,该窗口不是为 UTF-8 设置的。一旦我们将控制台的设置更改为以 UTF-8 输出,输出就被修复了。

于 2013-05-10T09:09:46.640 回答
1

尝试从 xsl:output 元素中删除 name 属性:

<xsl:output method="xml" version="1.0" encoding="UTF-8"
        indent="yes" omit-xml-declaration="yes" />

通过使其成为未命名的 xsl:output 元素,它应该适用于当前运行。

于 2013-04-20T12:16:36.737 回答