[XML]学习笔记(四)——命名空间

一、 什么是XML命名空间(namespace):
命名空间是一组具有结构的名称的集合,是XML正式标准的补充部分,通过使用URI(统一资源标识)限定元素和属性。URI通常是以一个URL的形式出现,因为URL具有唯一标识的功能,但URI所指向的并非一定是可访问的网页。
二、 命名空间的声明和使用:
a) 声明:
<elementName xmlns:prefix=”URI”/>


e.g.

<book:items xmlns:book="7-2.dtd">


b) 使用:
i. 子元素及其属性中使用:
<book:item>
	<book:name>asp</book:name>
	<book:price>124.6</book:price>
</book:item>


ii. 自身属性中使用:
<book:items xmlns:book="7-2.dtd" book:hardback="true">


三、 命名空间的范围:
a) 该元素的属性;
b) 该元素的子元素及其属性;
c) 如果该元素的子元素中声明了相同命名空间,则使用最新的。
e.g.
<?xml version="1.0" encoding="UTF-8"?>
<store:items xmlns:store="dtd1.dtd">
	<store:item>		#dtd1作用范围
		<store:name>asp</store:name>
		<store:price>123</store:price>
	</store:item>
	<store:item xmlns:store="dtd2.dtd">	#dtd2作用范围
		<store:name>java</store:name>
		<store:price>456</store:price>
	</store:item>
	<store:item>		#dtd1作用范围
		<store:name>python</store:name>
		<store:price>789</store:price>
	</store:item>
</store:items>


四、 默认命名空间及多个命名空间共存:
XML文档中的标记在默认情况下都没有使用命名空间前缀来限制,没有使用的一概属于默认命名空间的控制范围。
e.g.
<?xml version="1.0" encoding="UTF-8"?>
<items xmlns="dtd1.dtd" xmlns:another="dtd3.dtd">		#将dtd1.dtd声明为默认命名空间
	<item>
		<name>asp</name>
		<price>123</price>
	</item>
	<item xmlns:store="dtd2.dtd">		#dtd2.dtd引入了新的命名空间
		<store:name>java</store:name>
		<store:price>456</store:price>
	</item>							#dtd2.dtd作用域结束
	<item>
		<name>python</name>
		<another:price>789</another:price>	#使用dtd3.dtd中的price
	</item>
</items>


五、 命名空间与元素:
XML文档的语法要求标记的属性也必须唯一,对标记的各个属性的顺序则没有任何限制,当属性名称完全相同时如下:
e.g.
<?xml version="1.0" encoding="UTF-8"?>
<items xmlns:a="dtd1.dtd" xmlsn:b="dtd2.dtd">
	<item>
		<name first="jason" first="cheng">zhen</name> #重复!
		<sex a:s1="man" b:s1="male">male</sex>		#重复!
	</item>
</items>
以下为合法使用:
<?xml version="1.0" encoding="UTF-8"?>
<items xmlns="dtd1.dtd" xmlsn:b="dtd2.dtd">
	<item>
		<name first="jason" second="cheng">zhen</name>
		<sex s1="man" b:s1="male">male</sex>
	</item>
</items>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值