一、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只是形式上的標識符,其唯一目的是爲了提供一個唯一的名字