DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> XML認證教程,第 3 部分: 名稱空間
XML認證教程,第 3 部分: 名稱空間
編輯: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="http://www.w3.org/TR/WD-xsl"

  "http://www.w3.org/TR/WD-xsl"是一個URI引用。

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

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

  合法名稱

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

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

企業經理:姓名

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

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

  名稱空間作用於元素

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

  例如:

<聯系人:聯系人列表 XMLns:聯系人 ="聯系人列表.dtd">
   <聯系人:聯系人>
    <聯系人:姓名>張三</聯系人:姓名>
    <聯系人:ID>001</聯系人:ID>
    <聯系人:公司>A公司</聯系人:公司>
    <聯系人:EMAIL>zhang@aaa.com</聯系人:EMAIL>
    <聯系人:電話>(010)62345678</聯系人:電話>
    <聯系人:地址>
     <聯系人:街道>五街1234號</聯系人:街道>
     <聯系人:城市>北京市</聯系人:城市>
     <聯系人:省份>北京</聯系人:省份>
    </聯系人:地址>
    <聯系人:直接上級 XMLns:企業經理 ="企業經理.dtd">
     <企業經理:姓名>王五</企業經理:姓名>
     <企業經理:電話>
      <企業經理:秘書電話>(010)62345678</企業經理:秘書電話>
      <企業經理:手機>13601234567</企業經理:手機>
     </企業經理:電話>
    </聯系人:直接上級>
   </聯系人:聯系人>
  </聯系人:聯系人列表>

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

  名稱空間作用於屬性

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

  一個具體的例子如下:

<聯系人 xmlns:企業經理 = "http://www.XML.Net.cn/聯系人列表.dtd">
   <姓名 企業經理:文種 = "中文">李華</姓名>
   <電話 企業經理:城市 = "北京">62348765</電話>
</聯系人>


 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved