与撒克逊
问题描述:
转化,我试图将样式表适用于使用撒克逊的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中处理这些类型的“特殊”字符的最佳方式,这些字符的目的是有效的,但是在实际的解析/转换中会中断?
答
由于上述不是有效的XML,你将不得不做输入一些预处理(用FilterReader
说),因为几乎所有的XML解析器将指示错误(通常一个致命的错误,所以你不能处理错误并继续)。
如果特殊报价仅在XML,你可以做一个简单的替换普通引号的特殊引号(多一点的工作,如果你要检查的编码类型的序言)。如果你想在文档的其他地方保留特殊的引号,你将不得不做一些更复杂的事情(大部分都会跟踪你是否在标签中)。
答
麻烦的是那些“特殊”的报价是不是有效的XML。撒克逊或任何其他XML解析器将扔掉这些东西,而不是解析文档。
只有我可以建议的是搜索和替换那些与预期引号替换它们。
单词“特殊字符”是我的XML/XSLT编程存在的祸根。最好的办法是在发送到XML解析器之前清理文件。 – 2009-09-10 00:31:06