【问题标题】:Values for namespace in xmlns attributexmlns 属性中命名空间的值
【发布时间】:2014-09-30 22:43:32
【问题描述】:

我看到下面的文档使用了 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”和“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>

【问题讨论】:

    标签: xml namespaces


    【解决方案1】:

    根据the specification,“命名空间名称”可以是任何有效的 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 视频;)

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2018-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多