fbpx
维基百科

XML命名空间

XML命名空间XML namespace,也译作XML名称空间XML名字空间)用于在一个XML文档中提供名字唯一的元素和属性。XML命名空间在W3C推荐规范《Namespaces in XML》 (页面存档备份,存于互联网档案馆)中定义。XML命名空间于1999年1月14日成为W3C的推荐规范。

W3C将XML命名空间定义为以国际化资源标识符(Internationalized Resource Identifier,IRI)引用为标识的元素名和属性名的集合。

使用命名空间的动机 编辑

一个XML文档可能包括来自多个XML词汇表的元素或属性,如果每一个词汇表指派一个命名空间,那么相同名字的元素或属性之间的名称冲突就可以解决。举一个简单的例子来说,在一个订单的XML文档中需要引用到客户和所购买的产品,customer元素和product元素可能都有一个叫做id的子元素。这时候要引用id元素会造成名称冲突,但是如果将两个id元素放到不同的命名空间中就会解决这个问题。

声明和引用命名空间 编辑

命名空间使用元素的属性来声明,比如:

xmlns:xhtml="http://www.w3.org/1999/xhtml"

其中:

命名空间的声明就是将一个前缀与一个URI关联起来。

声明命名空间时,可以为命名空间定义前缀(见前例)。为命名空间定义前缀,而不直接使用命名空间的URI是因为URI为了唯一通常会很长,直接使用URI不但造成书写和阅读的不便,还会扰乱XML的语法。声明命名空间时,也可以不定义前缀。如:

xmlns="http://www.w3.org/1999/xhtml"

未定义前缀的命名空间將被用作缺省的命名空间。

命名空间的URI仅仅是唯一的标识符,推荐规范不要求,也不建议通过其获取信息。XML解析器处理命名空间URI时,也仅仅将其作为字符串。例如,地址为http://www.w3.org/1999/xhtml (页面存档备份,存于互联网档案馆) 的文档并不包含任何代码,它仅仅为人类阅读者描述了XHTML命名空间。之所以采用URI(如"http://www.w3.org/1999/xhtml")来标识命名空间是因与使用简单的字符串(如xhtml)相比,URI大大降低了命名空间重名的可能性。

XML文档中的元素名和属性名可以使用限定名或非限定名,限定名由命名空间的前缀和局部名组合而成,例如"xhtml:hr"。非限定名只有局部名,没有前缀。非限定名被认为属于缺省命名空间,如果缺省命名空间没有定义,则属于无命名空间

在一个元素中声明的命名空间,在所有子元素中也有效,一种通常的做法是在XML文档的根元素声明所有命名空间。在子元素中声明的命名空间的前缀可以覆盖父元素中声明的前缀。W3C推荐规范Namespaces in XML 1.1允许取消命名空间的声明,如:

xmlns:xhtml=""

命名空间的名称 编辑

虽然术语命名空间的URI被广泛使用,W3C推荐规范称之为命名空间的名称。规范并未强制规定命名空间的名称必须使用URI(即当解析器发现命名空间不是一个合法的URI时应该拒绝该文档),实际上许多XML的解析器允许使用任何字符串。在推荐规范的1.1版,命名空间的名称变成了国际化资源标识符(IRI),IRI允许使用非ASCII码的字符,实际上,非ASCII码字符已经被几乎所有的XML软件所接受。但是命名空间的URI一词还在持续使用,在W3C和其他地方的许多规范中也有使用。

随着命名空间推荐规范的发布,在如何处理相对的URI问题上产生了激烈的争论,一方认为相对的URI应当简单地当作字符串处理,而另一方认为应该根据文档的基准URI将其转换为绝对的URI。[1]。W3C对这一争论的裁定是不赞成使用相对的URI的。[2].

命名空间的URI与HTTP协议没有任何正式的关系,然而HTTP协议形式的URL(例如http://www.w3.org/1999/xhtml)还是被广泛的用作命名空间的URI。规范并未说明如果这样的URL被解引用(dereference,也就是说,如果软件试图从该位置获取一个文档)会发生什么。在这个问题上存在着不同的看法,有些人认为应该在该位置放置一个 (页面存档备份,存于互联网档案馆)RDDL文档[3]。但是总的来说,用户应该假定命名空间的URI只是一个简单的名称,而非万维网上文档的地址。

命名空间宣言 编辑

当一个元素带有属性xmlns="",该元素的默认命名空间和它的后代将恢复为“无命名空间”:那就是在任何命名空间里头都不被视为前缀名称。

参考文献 编辑

  1. ^ Leigh Dodds, , 24 May 2000 [2009-11-12], (原始内容存档于2021-06-14) 
  2. ^ Dan Connolly, W3C XML Plenary decision on relative URI references in namespace declarations, 11 Sep 2000 
  3. ^ Elliotte Rusty Harold, , 20 Feb 2001 [2009-11-12], (原始内容存档于2014-06-20) 

外部链接 编辑

参见 编辑

xml命名空间, namespace, 也译作xml名称空间, xml名字空间, 用于在一个xml文档中提供名字唯一的元素和属性, 在w3c推荐规范, namespaces, 页面存档备份, 存于互联网档案馆, 中定义, 于1999年1月14日成为w3c的推荐规范, w3c将定义为以国际化资源标识符, internationalized, resource, identifier, 引用为标识的元素名和属性名的集合, 目录, 使用命名空间的动机, 声明和引用命名空间, 命名空间的名称, 命名空间宣言, 参考文献, . XML命名空间 XML namespace 也译作XML名称空间 XML名字空间 用于在一个XML文档中提供名字唯一的元素和属性 XML命名空间在W3C推荐规范 Namespaces in XML 页面存档备份 存于互联网档案馆 中定义 XML命名空间于1999年1月14日成为W3C的推荐规范 W3C将XML命名空间定义为以国际化资源标识符 Internationalized Resource Identifier IRI 引用为标识的元素名和属性名的集合 目录 1 使用命名空间的动机 2 声明和引用命名空间 3 命名空间的名称 4 命名空间宣言 5 参考文献 6 外部链接 7 参见使用命名空间的动机 编辑一个XML文档可能包括来自多个XML词汇表的元素或属性 如果每一个词汇表指派一个命名空间 那么相同名字的元素或属性之间的名称冲突就可以解决 举一个简单的例子来说 在一个订单的XML文档中需要引用到客户和所购买的产品 customer元素和product元素可能都有一个叫做id的子元素 这时候要引用id元素会造成名称冲突 但是如果将两个id元素放到不同的命名空间中就会解决这个问题 声明和引用命名空间 编辑命名空间使用元素的属性来声明 比如 xmlns xhtml http www w3 org 1999 xhtml 其中 xmlns是使用专门用来声明命名空间的保留字 xhtml是命名空间的前缀 http www w3 org 1999 xhtml 页面存档备份 存于互联网档案馆 是命名空间的唯一标识符 是一个IRI引用 但通常是一个统一资源标志符 URI 引用 命名空间的声明就是将一个前缀与一个URI关联起来 声明命名空间时 可以为命名空间定义前缀 见前例 为命名空间定义前缀 而不直接使用命名空间的URI是因为URI为了唯一通常会很长 直接使用URI不但造成书写和阅读的不便 还会扰乱XML的语法 声明命名空间时 也可以不定义前缀 如 xmlns http www w3 org 1999 xhtml 未定义前缀的命名空间將被用作缺省的命名空间 命名空间的URI仅仅是唯一的标识符 推荐规范不要求 也不建议通过其获取信息 XML解析器处理命名空间URI时 也仅仅将其作为字符串 例如 地址为http www w3 org 1999 xhtml 页面存档备份 存于互联网档案馆 的文档并不包含任何代码 它仅仅为人类阅读者描述了XHTML命名空间 之所以采用URI 如 http www w3 org 1999 xhtml 来标识命名空间是因与使用简单的字符串 如xhtml 相比 URI大大降低了命名空间重名的可能性 XML文档中的元素名和属性名可以使用限定名或非限定名 限定名由命名空间的前缀和局部名组合而成 例如 xhtml hr 非限定名只有局部名 没有前缀 非限定名被认为属于缺省命名空间 如果缺省命名空间没有定义 则属于无命名空间 在一个元素中声明的命名空间 在所有子元素中也有效 一种通常的做法是在XML文档的根元素声明所有命名空间 在子元素中声明的命名空间的前缀可以覆盖父元素中声明的前缀 W3C推荐规范Namespaces in XML 1 1允许取消命名空间的声明 如 xmlns xhtml 命名空间的名称 编辑虽然术语命名空间的URI被广泛使用 W3C推荐规范称之为命名空间的名称 规范并未强制规定命名空间的名称必须使用URI 即当解析器发现命名空间不是一个合法的URI时应该拒绝该文档 实际上许多XML的解析器允许使用任何字符串 在推荐规范的1 1版 命名空间的名称变成了国际化资源标识符 IRI IRI允许使用非ASCII码的字符 实际上 非ASCII码字符已经被几乎所有的XML软件所接受 但是命名空间的URI一词还在持续使用 在W3C和其他地方的许多规范中也有使用 随着命名空间推荐规范的发布 在如何处理相对的URI问题上产生了激烈的争论 一方认为相对的URI应当简单地当作字符串处理 而另一方认为应该根据文档的基准URI将其转换为绝对的URI 1 W3C对这一争论的裁定是不赞成使用相对的URI的 2 命名空间的URI与HTTP协议没有任何正式的关系 然而HTTP协议形式的URL 例如http www w3 org 1999 xhtml 还是被广泛的用作命名空间的URI 规范并未说明如果这样的URL被解引用 dereference 也就是说 如果软件试图从该位置获取一个文档 会发生什么 在这个问题上存在着不同的看法 有些人认为应该在该位置放置一个 页面存档备份 存于互联网档案馆 RDDL文档 3 但是总的来说 用户应该假定命名空间的URI只是一个简单的名称 而非万维网上文档的地址 命名空间宣言 编辑当一个元素带有属性xmlns 该元素的默认命名空间和它的后代将恢复为 无命名空间 那就是在任何命名空间里头都不被视为前缀名称 参考文献 编辑 Leigh Dodds News from the trenches 24 May 2000 2009 11 12 原始内容存档于2021 06 14 Dan Connolly W3C XML Plenary decision on relative URI references in namespace declarations 11 Sep 2000 Elliotte Rusty Harold RDDL Me This What Does a Namespace URL Locate 20 Feb 2001 2009 11 12 原始内容存档于2014 06 20 外部链接 编辑 英文 Namespaces in XML 1 0 Second Edition 页面存档备份 存于互联网档案馆 英文 Namespaces in XML 1 1 Second Edition 页面存档备份 存于互联网档案馆 XML模式 了解命名空间 页面存档备份 存于互联网档案馆 计划使用XML名称空间 第1部分 页面存档备份 存于互联网档案馆 第2部分 永久失效連結 参见 编辑命名空间 XML 取自 https zh wikipedia org w index php title XML命名空间 amp oldid 71704321, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。