2011-11-23 36 views
2

RDF中的所有XML有效字符都是有效的嗎?RDF有效字符

我已經在XML有效字符發現這個維基百科:

U+0009, U+000A, U+000D: these are the only C0 controls accepted in XML 1.0; 
U+0020–U+D7FF, U+E000–U+FFFD: this excludes some (not all) non-characters in the BMP (all surrogates, U+FFFE and U+FFFF are forbidden); 
U+10000–U+10FFFF: this includes all code points in supplementary planes, including non-characters. 

回答

1

RDF文字然而,當你寫的這些文字下(編碼他們)在一些語法都是Unicode,那麼你必須照顧跟隨語法規則。 RDF/XML是一種XML語法(我在2004年編輯過),因此限制了Unicode字符並且有其自己的編碼規則,因此您可以轉義字符,如',<'和>

您還必須使用Unicode編碼將字符轉換爲字節序列,UTF-8和UTF-16是常見的。這些不會限制您可以寫下的字符。

答案是真的取決於你的意思。在實踐中,您不太可能想要使用Unicode或Unicode格式的字符,因爲它包含大量的Unicode,因此無法合法地用XML或RDF/XML編寫。

+0

謝謝你的回答。我的問題是當找到代碼值爲'66373(十六進制10345),136090(十六進制2139a),134123(十六進制20beb)'的字符時,三重存儲(AllegroGraph)在Sax解析器中遇到錯誤,但它們應該是公認。這是否意味着三重商店存在錯誤? – Dragos

+0

Unicode 6(2011)的範圍是U + 0 U + 10FFFF(十六進制),正如你在問題中所說的那樣,只有第一個有效。 U + 10345可能也是垃圾,因爲它來自「私人使用區域」,這不太可能是便攜式的。聽起來像是數據問題。 – dajobe

0

人們應該更好地參考只使用維基百科的原始規格。這套allowed characters in XML 1.0是:

Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] 
/* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */ 

的集XML標記名稱允許的字符是更受限制。

RDF文字中允許的字符序列集合是「defined as」,它是一個Unicode [UNICODE]字符串,應該使用正常形式C [NFC]。 Unicode字符集是代碼點U + 0000到U + 10FFFF(取決於您的觀點,minus 66 non-characters)。

無論如何,允許的Unicode字符集包括在XML中明確禁止的字符。另見SO問題Why are "control" characters illegal in XML 1.0?。在XML 1.1 set of characters was broadened

Char ::= [#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] 
/* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */ 

一個仍然儘管它是允許在RDF文字無法表達例如在XML字符(U + 0000)。