XML認證教程:名稱空間

名稱空間是中的各種語言使用的一種代碼組織的形式。下面小編為大家整理了關於名稱空間的XML認證教程,一起來看看吧:

XML認證教程:名稱空間

  為何引入名稱空間?

XML的用途不是單一的。雖然讀者可能看到編寫只使用一個標記符號集的文檔是相當 有用的。

但是,問題是,當混雜和匹配不同的XML應用程序的標記時,可能會發現同一個標記 已用於兩個不同對象。TITLE是指頁標題還是書的標題?ADDRESS是指公司的郵件地 址還是Web站點管理人員的電子郵件地址?名稱空間(namespace)可以解決這些諸 如此類的問題,它是將URI與各標記集相關聯,並在每個元素前加上一個前綴,以表 示它屬於哪個標記集。於是,就可以有BOOK:TITLE和HTML:TITLE兩個元素或 POSTAL:ADDRESS和HTML:ADDRESS元素,而不只一類TITLE或ADDRESS。

名稱空間允許文檔中的每個元素和特性放在不同的命名域中。

  URI和URL

XML文檔可用於Web,正如HTML和其他文檔一樣。使用時,也如HTML文檔一樣, 被統一資源定位符(Uniform Resource Locator,簡寫為URL)所引用。雖 然URL已被人們廣泛理解並被廣泛支持,但XML規範使用的是更為通用的統一資 源標識符(Uniform Resource Identifier,簡寫為URI)。URI對於定位 Internet上的資源是更為通用的架構,更為注重資源而不太注重位置。理論上 説,URI可找出鏡像文檔的最為近似的副本或是找出已經從一個站點移動到另一 站點的文檔。實際上,URI仍然處於進一步的研究之中,被當前的軟件所唯一支 持的一種URI正是URL。

  用xmlns聲明名稱空間

這個一個聲明名稱空間的例子

xmlns:xsl=""

""是一個URI引用。

URI為統一資源標識符(Uniform Resource Identifier,簡寫為URI)。 URI對於定位Internet上的資源是更為通用的架構,更為注重資源而不太注重 位置。不過當前的軟件所唯一支持的一種URI正是URL。要注意的是這裏用URI 只是為了聲明一個唯一的名稱空間,並不是真的上的網站去尋找 這個鏈接。

xsl表明以後如果用到以xsl為前綴的名字,那麼它所表示的規則是在名稱空間裏 預先定義好的,如“xsl:value-of”在""這 個名稱空間預置的,它的意義是求值。

  合法名稱

合法名稱的形式應該是:前綴部分:本地部分

其中,“前綴部分”和“本地部分”都要求是一個合法的XML名稱。前綴部分必須 是一個已經經過聲明的名稱空間前綴,語法分析器將把它與名稱空間聲明中的 URI引用相聯繫;本地部分則是在DTD或Schema中定義的元素和屬性名。下面 給出一個合法名稱的.例子:

企業經理:姓名

此外,由於名稱空間的聲明方式有直接方式和缺省方式兩種,合法名稱也稍有 變化。缺省的聲明方式為 xmlns=URI。

由於缺省方式聲明的名稱空間就是作用域內的缺省名稱空間,因此,在這個作 用域內使用該名稱空間的元素、屬性的合法名稱無須再寫前綴部分。這樣一來, 元素的合法名稱看上去和我們前面常用的元素名是一致的。由此可見,我們一直 在使用“合法名稱”,只不過沒有意識到罷了。

  名稱空間作用於元素

合法名稱可以用於起始元素標記、結束元素標記和空元素標記。合法名稱中的前綴 部分必須是一個已經聲明過的名稱空間前綴,聲明的位置,既可以在使用該前綴的 起始元素的標記處,也可以是引用處的父輩元素標記處。名稱空間聲明是作用到説 明它的元素和該元素的所有子元素的,除非被其它名稱空間聲明所覆蓋

例如:

<聯繫人:聯繫人列表 xmlns:聯繫人 ="聯繫人列表">

<聯繫人:聯繫人>

<聯繫人:姓名>張三

<聯繫人:ID>001

<聯繫人:公司>A公司

<聯繫人:

<聯繫人:電話>(010)62345678

<聯繫人:地址>

<聯繫人:街道>五街1234號

<聯繫人:城市>北京市

<聯繫人:省份>北京

<聯繫人:直接上級 xmlns:企業經理 ="企業經理">

<企業經理:姓名>王五

<企業經理:電話>

<企業經理:祕書電話>(010)62345678

<企業經理:手機>13601234567

名稱空間"聯繫人列表"的作用域,在除"直接上級"元素範圍以外的任何地方; 而名稱空間"企業經理"的作用域在"直接上級"的各個子元素中。 同樣,缺省的名稱空間是作用到聲明它的元素和該元素的子元素的。當然,這裏所 説的元素都是那些沒有名稱空間前綴的元素,有了前綴的元素仍然遵照前綴所指示 的名稱空間。

  名稱空間作用於屬性

同樣,合法名稱也可用於屬性。除了XML預留的屬性(如我們反覆用到的聲明命名 空間的屬性)外,其它屬性都應該使用"合法名稱"。

一個具體的例子如下:

<聯繫人 xmlns:企業經理 = "聯繫人列表">

<姓名 企業經理:文種 = "中文">李華

<電話 企業經理:城市 = "北京">62348765