0

使用 Saxon 处理 xml 文件: http: //meltwaternews.com/magenta/xml/html/18/2/rss/v2_406837.rss2.XML 其中包括一些挪威字符,如 Æ、Ø、Å。xml编码为utf-8

但是,出现错误:非法 html 字符:十进制 152。 (http://meltwater.vacau.com/s2.png)

但是在原始 xml 文件中找不到十进制 152,即 ~。

如果我使用 windows-1252 用 Saxon 处理这个 xml 文件,我实际上可以看到 Æ、Ø、Å 被错误解析为 Ã~ Ã¥(你可以在这里看到小数点 152)(http://meltwater.vacau .com/s1.png)。

有人可以建议如何使它正确吗?

4

2 回答 2

1

使用字符映射。

<xsl:character-map name="meltwater_fix">
  <xsl:output-character character="&#152;" string="˜"/>
</xsl:character-map>

然后添加到输出元素:

<xsl:output> or <xsl:result-document>

以下属性:

use-character-maps="meltwater_fix"
于 2013-11-13T13:48:59.240 回答
0

我对挪威字符“Ø”也有同样的问题。该问题不是特定于撒克逊人的,该问题也存在于 apache xalan 中。Illegal HTML character: decimal 152

我通过确保 XML 和 XSL 文档都被正确编码(一些文本编辑器可能显示正确的文本但仍将文档保存为 UTF-8 或其他一些编码)来设法让它工作。我使用 vim 保存了所有测试文档:write ++enc=ISO-8859-1,以确保文档以正确的编码保存。

我还必须指定 XSL-Transformer 的输出编码:

String encoding = "ISO-8859-1";
Transformer transformer = transformerFactory.getTransformer(xsltDocumentSource);
transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
于 2016-02-02T13:31:21.360 回答