Saxon问题与挪威字符

时间:2013-01-10 04:23:20

标签: xml encoding saxon

使用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文件中找不到〜的十进制数。

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

有人可以建议如何做对吗?

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分: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);