加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML命名空间深度解析 —— 命名空间简介

发布时间:2020-12-15 22:44:40 所属栏目:百科 来源:网络整理
导读:相信很多朋友都在使用XML存储和传输数据,在试用XML的过程中可能会对命名空间产生疑惑,本文试图通过实际例子带大家了解命名空间。 XML文件中最多的是element 和 attribute,每一个element和attribute名字可以试用prefix来修饰,也可以不用prefix修饰。 例1

相信很多朋友都在使用XML存储和传输数据,在试用XML的过程中可能会对命名空间产生疑惑,本文试图通过实际例子带大家了解命名空间。


XML文件中最多的是element 和 attribute,每一个element和attribute名字可以试用prefix来修饰,也可以不用prefix修饰。


例1: 不带命名空间的element和attribute定义

<root attr="value"> </root>

在该例子中,root和att都没有prefix,所以他们不属于任何的命名空间


例2: 带命名空间的element和attribute定义

<pre:root pre:attr="value" xmlns:pre="namespace"> </pre:root>

在该例子中,root和att前面都有一个pre:修饰,表明这个element和attribute是属于pre这个prefix指定的命名空间的,而pre则是通过xmlns:pre="namespace"来定义的,即pre代表的是命名空间namespace

例3: 缺省的命名空间的element定义

<root attr="value" xmlns="namespace"> </root>

在该例子中,命名空间定义xmlns="namespace"中没有prefix,这就表明定义的是一个缺省的命名空间,表明从当前的element开始,包括所有的子element,只要他们前面没有prefix修饰,他们都属于缺省的命名空间namespace

可能有人会问,该例子的attribute attr是否属于缺省命名空间,答案是否定的,不属于,因为对attribute而言,不能用缺省命名空间修饰,所以在该例子中attr不属于任何命名空间。


例4: prefix的重定义

<pre:root pre:attr="value" xmlns:pre="namespace">

<pre:elem xmlns:pre="namespace1">

<pre:elem2/>

</pre:elem

</pre:root>

该例子中,在pre:root element里,prefix pre先是和命名空间namespace绑定在一起,但到了pre:elem element里,我们重新把pre和命名空间namespace1绑定,在其子element里试用了pre prefix,所以在该例子中element分别属于以下的命名空间:

root -> namespace

elem -> namespace1

elem2 -> namespace1


例5: 缺省空间的重定义

<root xmlns="namespace">

<elem xmlns="namespace1">

<elem2/>

</elem>

</root>

该例子和例子5相同element分别属于以下的命名空间:

elem2 -> namespace1


例6: 命名空间混合使用

<root xmlns="namespace" xmlns:pre="namespace1">

<elem xmlns="namespace1">

<pre:elem2/>

</elem>

</root>

elem -> namespace1

elem2 -> namespace1


例7: 相同命名空间绑定不同的prefix

<root xmlns="namespace" xmlns:pre="namespace">

<pre:elem xmlns:pre1="namespace">

<pre1:elem2/>

</elem>

</root>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读