Namespace URI究竟意味着什么?

时间:2013-09-24 06:24:58

标签: xml xml-namespaces

让我们考虑一下这个xml数据

<root xmlns:h="http://www.w3.org/TR/html4/"
 xmlns:f="http://www.w3schools.com/furniture">

<h:table>
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>

<f:table>
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>

</root>

这里是NURI for h:&#34; http://www.w3.org/TR/html4/&#34;
NURI for f:&#34; http://www.w3schools.com/furniture&#34;
NURI(名称空间URI)究竟意味着什么?有必要吗?。它究竟包含什么?

1 个答案:

答案 0 :(得分:2)

在您的示例中使用XML命名空间是必要的,因为文档中有两个table元素具有不同的含义。他们不一样。一个来自XHTML,另一个来自W3学校词汇。由于绑定到h NS的本地前缀http://www.w3.org/TR/html4/和另一个NS中的第二个table,您可以通过“放置”XHTML NS中的第一个表来区分它们,这要归功于绑定到f NS的本地前缀http://www.w3schools.com/furniture。现在,通过构建扩展名称和比较URI,我们可以区分这两个元素。请注意,前缀是任意的。

命名空间URI允许我们唯一地标识命名空间。它也称为命名空间名称。如果您使用URL,您将利用域名系统(DNS)中域名的唯一性。

Namespaces in XML 1.0部分2.1中,我们可以读到:

  

XML名称空间由URI引用标识

在2.3节中:

  

在确定名称是否属于给定名称空间以及两个名称是否属于同一名称空间时,会比较标识名称空间的URI引用。 [定义:两个URI被视为字符串,当且仅当字符串相同时,它们是相同的,即,如果它们是相同的字符序列。 ]比较区分大小写,并且没有%-escaping完成或撤消。

这意味着当一个(程序)必须比较NS URI时,它只将其作为原始字符串比较。 URI不必是指向Internet上资源的URL(例如,可通过HTTP访问的网页)。

请注意,URI与本地名称(不带冒号的名称)一起使用以构建扩展名称,即您可以写为(URI, localName)的对{URI}localName(James Clark表示法)和该对单独使用而不是本地名称。这两种表示法都不是标准的,不能在XML文档中使用。它只是允许用来写下来。命名空间不存在,但建议解释了我们如何使用扩展名称以及如何使用名为xmlns的特殊属性来构建此类扩展名称。就是这样,不多也不少。

让我建议您阅读Ronald Bourret撰写的Namespace Myths Exploded

XML 1.1中的命名空间概括了URI对IRI的使用。