2009-09-09 135 views
0

轉化,我試圖將樣式表適用於使用撒克遜的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

回答

2

由於上述不是有效的XML,你將不得不做輸入一些預處理(用FilterReader說),因爲幾乎所有的XML解析器將指示錯誤(通常一個致命的錯誤,所以你不能處理錯誤並繼續)。

如果特殊報價僅在XML,你可以做一個簡單的替換普通引號的特殊引號(多一點的工作,如果你要檢查的編碼類型的序言)。如果你想在文檔的其他地方保留特殊的引號,你將不得不做一些更復雜的事情(大部分都會跟蹤你是否在標籤中)。

1

麻煩的是那些「特殊」的報價是不是有效的XML。撒克遜或任何其他XML解析器將扔掉這些東西,而不是解析文檔。

只有我可以建議的是搜索和替換那些與預期引號替換它們。