Xml 中的名字空间

刚学 XML 的朋友经常会被名字空间搞糊涂,我来做一下简单的解释。

xml 节点的一般写法是 <名字空间前缀:节点名 名字空间前缀:属性> 如果名字空间前缀省略,就是使用默认名字空间。节点名相同,而属于不同名字空间的节点是不同的。

世界上有无数的 xml 文档,也就有无数的节点、属性,它们的名字很可能是相同的。名字空间,就是是为了区别名字相同,而意义不同的节点、属性。

比如文档 A 和 文档 B 中都有一个名叫 "car" 的节点,但是文档 A 和文档 B 中的 "car" 的意义是完全不同的(比如一个是火车一个是汽车),如果没有名字空间,这两个文档中的节点完全没有办法区分。

先看一个使用名字空间例子:

<menu_items xmlns="http://www.hz-sp.com/2005/XMLSchema-menu" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.hz-sp.com/2005/XMLSchema-menu
menu.xsd">
<menu_item>...</menu_item>

名字空间是使用 xmlns 关键字来定义的。在这个例子中,xmlns="http://www.hz-sp.com/2005/XMLSchema-menu" 定义了默认名字空间,所以 menu_items 就是属于 “http://www.hz-sp.com/2005/XMLSchema-menu”这个名字空间的。同样,menu_item 是menu_items 的子节点,而没有名字空间前缀,所以同样属于这个名字空间。menu_items 的子节点、属性,如果没有加名字空间前缀,都属于这个默认名字空间。也就是说,<menu_items> </menu_items> 中的节点、属性如果没有加名字空间前缀,都属于这个默认名字空间。

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
这句话定义了名字空间前缀 xsi ,下面有 xsi:schemaLocation=... 这样的写法,也就是说属性 schemaLocation 是属于名字空间 "http://www.w3.org/2001/XMLSchema-instance" 的。

另外,虽然这些名字空间都是url形势的,但是如果你点这个 url , 很可能会发现这是一个不存在的 url, W3C 推荐使用 url 来命名名字空间,是为了保证名字空间命名的唯一性,你完全可以用 "myName007" 这样的名字来命名你自己的名字空间,但这种做法不被推荐,因为这样的名字不能保证唯一性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值