XML名称空间小结

本文介绍了XML名称空间的概念及其重要性,详细解释了如何声明名称空间并应用到元素和属性上,帮助读者理解如何避免元素命名冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、xml名称空间
xml 文档可以包含许多标签以及属性,为了区分在不同文档中的相同标签,需要使用xml名称空间这个概念,就像java中相同名称的类,需要放在不同的包中一样。通过给元素或者属性加上名称空间用以唯一标识一个元素或者属性

  1.名称空间的声明:
 形式一   这种声明要求名称空间的名字不能够为空
        <元素名 xmlns:prefixname=”URI”>
 元素名指的是我们所需要给于名称空间的元素,该名称空间适用于此元素及其属性以及此元素的内容中所有元素及他们的 属性。
 xmlns:prefixname 为该元素的属性名 URI为该属性的属性值,prefixname既是名称空间的前缀名,用于将元素及其属性的 名字与URI进行关联,例如<prefixname:element_name> 表示element_name 元素属于prefixname代表的名称空间。
 来看一个例子:<mytag xmlns:my_namespace=”http://www.liming.com/namespace”> 这条声明了一个名称空间,名称空 间的名称就是
http://www.liming.com/namespace,
 名称空间前缀为my_namespace,在xml文档中使用的时候可以这样用:
 <my_namespace:tag>元素内容</my_namespace:tag>   my_namespace:tag组成一个元素限定名,tag被称为本地部分, my_namespace为名称空间的前缀。这个限定名表示tag是属于
http://www.liming.com/namespace空间中的。
 形式二  这种声明要求名称空间的名字可以为空
 <元素名 xmlns=”URI”>  在这种声明中没有指定名称空间的前缀名URI所标识的是默认名称空间
 <mytag xmlns:=”http://www.liming.com/namespace”>
 <start>内容</start>
 </my_tag>
 表示my_tag及其内容中所有没有前缀标识的元素均属于
http://www.liming.com/namespace中。
  2.默认名称空间
 为了避免在xml文档中给每个元素添加一个名称空间的前缀名,可以使用默认的名称空间

<?xml version="1.0" encoding="GB2312"?>
<books xmlns:p=”http://www.liming.com/namespace”
        xmlns=”http://www.liming.com”>
 	<book>
		 <title>JSP深入编程</title>
	 		<author>
				<p:name>张三</p:name>
				<p:title>作家</p:title>
			 </author>
 	</book>
 	<book>
		 <title>XML从入门到精通</title>
			 <author>
		 		<name>李四</name>
			</author>
</book>
</books>

 books本身没有名称前缀,包括其内容中没有前缀的元素都属于名称空间http://www.liming.com中,而<p:name>张三 </p:name>;<p:title>作家</p:title>指定了name、title元素及其内容属于http://www.liming.com/namespace

3.名称空间在元素以及属性中的运用

  •  在元素中  没有名称空间的:
<?xml version="1.0" encoding="GB2312"?>
<books>
 	<book>
		 <title>JSP深入编程</title>
	 		<author>
				<name>张三</name>
				<title>作家</title>
			 </author>
 	</book>
 	<book>
		 <title>XML从入门到精通</title>
			 <author>
		 		<name>李四</name>
		 		<title>教师</title>
			 </author>
 	</book>
</books>

               含有名称空间的:

<?xml version="1.0" encoding="GB2312"?>
<books xmlns:people="http://www.sunxin.org/people">
 	<book>
		<title>JSP深入编程</title>
			<author>
				<people:name>张三</people:name>
				<people:title>作家</people:title>
	 	        </author>
	 </book>
 	<book>
		<title>XML从入门到精通</title>
			<author>
				<people:name>李四</people:name>
				<people:title>教师</people:title>
			</author>
	 </book>
</books>
 

在需要使用姓名以及头衔的时候我们就可以容易的区分开了。需要注意的是,一个元素可以有多个名称空间的声明作为其属性

  •  在属性中使用

             因为属性是属于其对应的元素的,很容易区分开不同元素的相同属性名,如果需要对属性引入名称空间,看下面的例子:

注意:在声明名称空间的时候URI并不需要指向实际的内容,在URI所标识的位置上,可以不存在任何东西。在名称空间声明的URI只是形式上的标识符,其唯一目的是为了提供一个唯一的名字

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值