XML命名空间

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

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

一个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只是一个简单的名称,而非万维网上文档的地址。

转载于:https://www.cnblogs.com/mengheyun/archive/2011/02/17/1956948.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值