2016-03-17 131 views
0

QNames/CURI的本地部分是否允许使用非拉丁字符? 我有以下前缀定义:@prefix namespace <http://example.org/namespace/> .国际化QNames/CURIs

而下面的URI:

<http://example.org/namespace/Sense_en_aircraft> 
<http://example.org/namespace/Sense_ru_аэроплан> 

都是正确的QName?:namespace:Sense_en_aircraftnamespace:Sense_ru_аэроплан

这对我来说并不很清楚。 可能的来源:https://www.w3.org/2001/tag/doc/qnameidshttps://www.w3.org/TR/xml/https://www.w3.org/TR/curie/和RFC3987

回答

1

为的QName和居里规则是相当相互无关的,所以这实际上是两个独立的问题。

术语QName具有几个不同的含义,具体取决于您所指的规范,但它本质上是一个包含前缀,本地部分和名称空间的三元组。前缀和本地部分都被定义为NCNames,并且可以绝对包含非拉丁字符;确切的字符集取决于您引用的XML规范的哪个版本/版本。

命名空间部分允许的内容有点含糊不清。在Namespaces 1.0规范中,名称空间名称被定义为URI引用(如RFC 3986中所定义);在命名空间1.1中被定义为IRI(如RFC 3987中定义的)。 IRI当然可以包含非拉丁字母,但URI不能。但是,这两份文件的一致性声明声明文档符合条件,并且这些条件不包括命名空间名称是有效的URI或IRI的要求。我明白这个疏忽是故意的。因此大多数处理QNames的软件都接受任何字符串作为合法的名称空间名称。