教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

XML的名稱空間指的是什么?怎樣聲明名稱空間?

更新時間:2021年06月22日18時18分 來源:傳智教育 瀏覽次數(shù):

傳智教育-一樣的教育,不一樣的品質(zhì)

一個XML文檔可以引入多個約束文檔,但是,由于約束文檔中的元素或?qū)傩远际亲远x的,因此,在XML文檔中,極有可能出現(xiàn)代表不同含義的同名元素或?qū)傩?,?dǎo)致名稱發(fā)生沖突。為此,在XML文檔中,提供了名稱空間,它可以唯一標(biāo)識一個元素或者屬性。這就好比打車去小營,由于北京有兩個地方叫小營,為了避免司機走錯,我們總會說去“去亞運村的小營”或者“去清河的小營”。這時的亞運村或者清河就相當(dāng)于一個名稱空間。

在使用名稱空間時,首先必須聲明名稱空間。名稱空間的聲明就是在XML實例文檔中為某個模式文檔的名稱空間指定一個臨時的簡寫名稱,它通過一系列的保留屬性來聲明,這種屬性的名字必須是以“xmlns”或者以“xmlns:”作為前綴。它與其它任何XML屬性一樣,都可以通過直接或者使用默認(rèn)的方式給出。名稱空間聲明的語法格式如下所示:

<元素名 xmlns:prefixname="URI">
在上述語法格式中,元素名指的是在哪一個元素上聲明名稱空間,在這個元素上聲明的名稱空間適用于聲明它的元素和屬性,以及該元素中嵌套的所有元素及其屬性。xmlns:prefixname指的是該元素的屬性名,它所對應(yīng)的值是一個URI引用,用來標(biāo)識該名稱空間的名稱。需要注意的是,如果有兩個URI并且其組成的字符完全相同,就可以認(rèn)為它們標(biāo)識的是同一個名稱空間。

了解了名稱空間的聲明方式,接下來,通過一個案例來學(xué)習(xí),如例1所示。

例1 book.xml

     <?xml version="1.0" encoding="UTF-8"?>
     <it315:書架 xmlns:it315="http://www.it315.org/xmlbook/schema">
         <it315:書>
             <it315:書名>JavaScript網(wǎng)頁開發(fā)</it315:書名>
             <it315:作者>張孝祥</it315:作者>
             <it315:售價>28.00元</it315:售價>
         </it315:書>
     </it315:書架>

在例1中,it315被作為多個元素名稱的前綴部分,必須通過名稱空間聲明將它關(guān)聯(lián)到唯一標(biāo)識某個名稱空間的URI上,xmlns:it315="http://www.it315.org/xmlbook/schema"語句就是將前綴名it315關(guān)聯(lián)到名稱空間"http://www.it315.org/xmlbook/schema"上。由此可見,名稱空間的應(yīng)用就是將一個前綴(如it315)綁定到代表某個名稱空間的URI(如http://www.it315.org/xmlbook/schema)上,然后將前綴添加到元素名稱的前面(例如,it315:書)來說明該元素屬于哪個模式文檔。

需要注意的是,在聲明名稱空間時,有兩個前綴是不允許使用的,它們是xml和xmlns。xml前綴被定義為與名稱空間名字http://www.w3.org/XML/1998/namespace綁定,只能用于XML1.0規(guī)范中定義的xml:space和xml:lang屬性。前綴xmlns僅僅用于聲明名稱空間的綁定,它被定義為與名稱空間名字http://www.w3.org/2000/xmlns綁定。

默認(rèn)名稱空間

如果一個文檔有很多元素,并且這些元素都在同一個名稱空間,這時,給每個元素名稱都添加一個前綴將是一件非常繁瑣的事情。這時可以使用默認(rèn)的名稱空間,默認(rèn)名稱空間聲明的語法格式如下所示:

<元素名 xmls="URI">

在上面的語法格式中,URI所標(biāo)識的是默認(rèn)的名稱空間。以這種方式聲明的空間名稱將作為其作用域內(nèi)所有元素的默認(rèn)名稱空間。接下來,對例1進(jìn)行修改,將book.xml改為默認(rèn)名稱空間的形式,如例2所示。

例2 book.xml

     <?xml version="1.0"encoding="UTF-8"?>
     <書架 xmlns="http://www.it315.org/xmlbook/schema">
         <書>
             <書名>JavaScript網(wǎng)頁開發(fā)</書名>
             <作者>張孝祥</作者>
             <售價>28.00元</售價>
         </書>
     </書架>

在例2中,雖然“書架”、“書”、“書名”、“作者”、“售價”等元素名稱前面沒有前綴,但是由于"http://www.it315.org/xmlbook/schema"被設(shè)置成了默認(rèn)的名稱空間,所以,它們?nèi)匀皇?quot;http://www.it315.org/xmlbook/schema"這個URI所標(biāo)識的名稱空間中的元素。雖然使用默認(rèn)名稱空間會減少一些書寫工作量,而使用帶前綴的非默認(rèn)名稱空間會增加一些書寫工作量,但合理地命名前綴卻可以為人們?yōu)g覽 XML文檔時提供便利,例如,book:title很容易讓人聯(lián)想到title是book 詞匯表中定義的元素。





猜你喜歡:

什么是DTD約束?怎樣書寫和操作DTD文檔?

Schema約束的優(yōu)勢是什么?

什么是繼承?Java中如何聲明一個類繼承另一個類?

什么是多態(tài)?多態(tài)的運行過程示例

傳智教育java開發(fā)培訓(xùn)

0 分享到:
和我們在線交談!