2016-04-03 78 views
1

即时知道自己对下列句子的含义:含义XML命名空间的

<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,标签元素被定义在哪里?

回答

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版本中,名称空间名称成为国际化资源标识符,该标识符允许使用几乎所有XML软件都已接受的非ASCII字符。然而,名称空间URI一直存在,不仅在流行的用法中,而且在W3C和其他许多其他规范中也是如此。

继命名空间推荐发布之后,关于如何处理相对URI的问题引发了一场激烈的争论,一些人强烈主张应该简单地将其视为字符串,另一些人则坚信自己应该转向通过根据文档的基本URI解析绝对URI。[3]辩论的结果是来自W3C的一项裁决,即相对URI被弃用。[4]

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