xmlns属性中名称空间的值

时间:2014-09-30 22:43:32

标签: xml namespaces

我使用2个命名空间

看到下面的文档

**

<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>
<f:table xmlns:f="http://www.w3schools.com/furniture">
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
</root>

**

问题: -

命名空间是否有任何命名约定,或者它是否只是一个有效的http地址?

例如: - 在下面的例子中,我给出了“test1”&amp; “test2”。它有效吗?

<root>
<h:table xmlns:h="http://test1.com">
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>
<f:table xmlns:f="http://test2.com">
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
</root>

2 个答案:

答案 0 :(得分:0)

解析器不使用命名空间URI来查找信息。

我认为你提到的h和f命名空间的URI只是唯一的有效URI就足够了。在大多数示例中,我已经看到http用作方案名称。

因此,一个完全有效的命名空间(不映射到有效的网站)可能是:

xmlns:foo="http://my.example.ns"

答案 1 :(得分:0)

根据the specification,&#34;命名空间名称&#34; 可以是任何有效的URI - 包括我们最熟悉的HTTP URL,以及以不同方式管理的其他形式,如URN(统一资源名称)。

因此,在您的示例中,http://test1.comhttp://test2.com是有效的URI,因此它们是有效的命名空间名称。

但是,此注释(来自this section of the spec)阐明了如何选择URI

  

命名空间名称,为了达到预期目的,应该具有唯一性和持久性的特征。它不是直接用于检索模式(如果存在)的目标。统一资源名称[RFC2141]是在设计时考虑到这些目标的语法示例。但是,应该注意的是,可以通过实现这些相同目标的方式管理普通URL。

创建URI的最明显的方法是(唯一 > 使用您的域名)自己的即可。只要您拥有该域的权限,其他人就不太可能选择相同的URL来具有不同的含义。此外,任何在该命名空间中寻找权限的人都会认为您作为域的控制者是该权限。

如果您拥有域user1050619.com,则可以使用命名空间名称http://user1050619.com/XMLNS/Test1http://user1050619.com/XMLNS/Test2

没有必要解析该URL导致任何有用的东西(或任何东西),但通常的做法是在那里托管某种形式的文档 - 或者像机器可读的文档一样DTD或模式定义,或解释该模式定义的元素的人类可读页面。或者,您可以将用户重定向到Rick Astley视频;)