4

让我们考虑这个 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>

这里 H 的 NURI :“ http://www.w3.org/TR/html4/
f 的 NURI :“ http://www.w3schools.com/furniture
NURI(命名空间 URI)到底是什么意思?有必要吗?。它实际上包含什么?

4

1 回答 1

3

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

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

XML 1.0 中的命名空间第 2.1 节中,我们可以读到:

XML 命名空间由 URI 引用标识

在第 2.3 节中:

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

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

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

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

XML 1.1 中的命名空间将 URI 的使用概括为 IRI。

于 2013-10-17T15:31:18.733 回答