使用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)。
有人可以建议如何做对吗?
答案 0 :(得分:1)
使用角色地图。
<xsl:character-map name="meltwater_fix">
<xsl:output-character character="˜" 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);