XML名称空间的含义

时间:2016-04-03 20:58:20

标签: xhtml xml-namespaces

我想知道以下句子的含义:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">

这些句子到底在做什么?

显然,他们将相关的html标记库绑定到前缀h: jsf/htmlf: jsf/core或默认xhtml。 据说这些标记库是“名称空间” - 这意味着一组元素和属性定义了我们可以通过给定前缀访问的这些html标记 - 或者不是?

这是否意味着上面的URI会将我重定向到某种DTD,其中定义了标记元素?

1 个答案:

答案 0 :(得分:2)

是:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=xml%20namespaces

  

命名空间名称是统一资源标识符(URI)。通常,为给定XML词汇表的命名空间选择的URI描述在定义词汇表的作者或组织的控制下的资源,例如作者的Web服务器的URL。但是,命名空间规范不要求也不建议使用命名空间URI来检索信息;它被XML解析器简单地视为字符串。例如,http://www.w3.org/1999/xhtml本身的文档不包含任何代码。它简单地向人类读者描述了XHTML命名空间。使用URI(例如“http://www.w3.org/1999/xhtml”)来标识命名空间而不是简单的字符串(例如“xhtml”),可以降低使用重复标识符的不同命名空间的概率。

     

尽管术语命名空间URI很普遍,但W3C建议书将其称为命名空间名称。规范并不完全规定命名空间名称的精确规则(它没有明确说明解析器必须拒绝命名空间名称不是有效统一资源标识符的文档),并且许多XML解析器允许使用任何字符串。在推荐的1.1版本中,命名空间名称成为国际化资源标识符,它授权使用非ASCII字符,实际上几乎所有XML软件都已接受这些字符。然而,术语命名空间URI仍然存在,不仅在流行的使用中,而且在W3C和其他地方的许多其他规范中也是如此。

     

在发布了命名空间的建议之后,关于如何处理相对URI的问题进行了激烈的争论,一些人强烈主张它应该被简单地视为一个字符串,而其他人则坚信它应该变成一个字符串。通过将其与文档的基URI进行解析来获得绝对URI。[3]争论的结果是来自W3C的一项裁决,即相对URI被弃用。[4]

     

尽管与HTTP协议没有任何正式关系,但在http方案中使用URL形式的URI(例如http://www.w3.org/1999/xhtml)很常见。命名空间规范没有说明如果取消引用这样的URL(即,如果软件试图从该位置检索文档)会发生什么。一些用户采用的一种惯例是在该位置放置RDDL文档。[5]但是,一般来说,用户应该假设命名空间URI只是一个名称,而不是Web上文档的地址。