2011-11-23 59 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)。