与撒克逊

问题描述:

转化,我试图将样式表适用于使用撒克逊的XML文档时处理XML中的特殊字符。鉴于在Microsoft Word生成的,并且具有微软的Word式报价,如围绕以下文件与撒克逊

<?xml version="1.0" encoding="UTF-8"?> 
<doc> 
    <act> 
     <performer typeCode=“FOO“ /> 
     <performer typeCode="BAR" /> 
    </act> 
</doc> 

撒克逊引发以下错误FOO的XML文件:

SXXP0003: Error reported by XML parser: Invalid byte 1 of 1-byte UTF-8 sequence. 

什么在XML中处理这些类型的“特殊”字符的最佳方式,这些字符的目的是有效的,但是在实际的解析/转换中会中断?

+0

单词“特殊字符”是我的XML/XSLT编程存在的祸根。最好的办法是在发送到XML解析器之前清理文件。 – 2009-09-10 00:31:06

由于上述不是有效的XML,你将不得不做输入一些预处理(用FilterReader说),因为几乎所有的XML解析器将指示错误(通常一个致命的错误,所以你不能处理错误并继续)。

如果特殊报价仅在XML,你可以做一个简单的替换普通引号的特殊引号(多一点的工作,如果你要检查的编码类型的序言)。如果你想在文档的其他地方保留特殊的引号,你将不得不做一些更复杂的事情(大部分都会跟踪你是否在标签中)。

麻烦的是那些“特殊”的报价是不是有效的XML。撒克逊或任何其他XML解析器将扔掉这些东西,而不是解析文档。

只有我可以建议的是搜索和替换那些与预期引号替换它们。