XML 命名空間

2021-04-13 22:07:13 字數 2736 閱讀 5367

xml 命名空間

xml 命名空間提供了一種避免元素命名衝突的方法。

命名衝突

因為xml文件中使用的元素不是固定的,那麼兩個不同的xml文件使用同乙個名字來描述不同型別的元素的情況就可能發生。而這種情況又往往會導致命名衝突。請看下面兩個例子:

這個 xml 文件在table元素中攜帶了水果的資訊:

bananas
這個 xml 文件在table元素中攜帶了桌子的資訊(家具,不能吃的哦):

african coffee table
80
120
如果上面兩個xml文件片斷碰巧在一起使用的話,那麼將會出現命名衝突的情況。因為這兩個片斷都包含了元素,而這兩個table元素的定義與所包含的內容又各不相同。 

使用字首解決命名衝突問題

下面的xml文件在table元素中攜帶了資訊:

bananas
下面的xml文件攜帶了家具table的資訊:

african coffee table
80
120
現在已經沒有元素命名衝突的問題了,因為這兩個文件對各自的table元素使用了不同的字首,table元素在兩個文件中分別是(和)。

通過使用字首,我們建立了兩個不同的table元素。

使用命名空間

下面的xml文件在table元素中攜帶了資訊:

bananas
下面的xml文件攜帶了家具table的資訊:

african coffee table
80
120
在上面兩個例子中除了使用字首外,兩個table元素都使用了xmlns屬性,使元素和不同的命名空間關聯到一起。 

命名空間屬性

命名空間屬性一般放置在元素的開始標記處,其使用語法如下所示:

xmlns:namespace-prefix="namespace"

xmlns:f="http://www.w3schools.com/furniture"
w3c 命名規範宣告命名空間本身就是乙個統一資源標示符,uniform resource identifier (uri)

當我們在元素的開始標記處使用命名空間時,該元素所有的子元素都將通過乙個字首與同乙個命名空間相互關聯。

注意:用來標識命名空間的網路位址並不被xml解析器呼叫,xml解析器不需要從這個網路位址中查詢資訊,該網路位址的作用僅僅是給命名空間乙個唯一的名字,因此這個網路位址也可以是虛擬的,然而又很多公司經常把這個網路位址值象乙個真實的web頁面,這個位址包含了關於當前命名空間更詳細的資訊。

可以訪問

統一資源識別符號

通用資源識別符號(auniform resource identifier,uri)是乙個標識網路資源的字串。

統一資源定位符(uniform resource locator,url),通用資源名字(universal resource name,urn)。

在我們的例子中,一般使用的是urls。既然前面的例子使用的url位址來標識命名空間,我們可以確信這個命名空間是唯一的。

預設的命名空間

定義乙個預設的xml命名空間使得我們在子元素的開始標記中不需要使用字首。他的語法如下所示:

下面的xml文件在table元素中包含了水果的資訊:

bananas

下面的xml文件包含了家具table的資訊:

african coffee table

80

120

使用命名空間

檔開始使用xsl的時候,就會發現命名空間使用的是如此頻繁。xsl樣式單主要用於將xml文件轉換成類似於html檔案的格式。

如果看一下下面的xsl文件,就會發現有很多標記都是html標記。那些標記並不是html標記,是加了字首的xsl,這個xsl字首由命名空間"

http://www.w3.org/tr/xsl"所標識:

<?xml version="1.0" encoding="iso-8859-1"?>
title
artist

XML 命名空間

xml 命名空間提供了一種避免元素命名衝突的方法。因為xml文件中使用的元素不是固定的,那麼兩個不同的xml文件使用同乙個名字來描述不同型別的元素的情況就可能發生。而這種情況又往往會導致命名衝突。請看下面兩個例子 這個 xml 文件在table元素中攜帶了水果的資訊 bananas 這個 xml 文...

xml命名空間

xml命名空間 這個理解起來總感覺有些抽象,不太好懂,自己學的也是一知半解,但是感覺它的存在卻是很不同凡響的,在xml的應用中,給我們帶來了很多方便,也讓xml的功能得到了很大的提公升,自己感覺的,呵呵,有說的不對的地方,不要見笑喲 在進入正題之前,我們先引用乙個例子 bananas 在上面這個xm...

xml命名空間

xml名字空間是為了防止代表不同含義的元素名稱在相同檔案裡的衝突而定義的。如 m zhang代表乙個人,再看下面的例子 120m zhang 代表長度,如果把上面的兩個檔案合到一塊,那麼就不知道zhang代表什麼意思了。於是給他們個名字空間,名字空間不代表任何含義,只說明他們是唯一的,在全球範圍內,...