在研究spring security的時(shí)候,里面提到了一個(gè)重要的感念就是命名空間,當(dāng)時(shí)以為是spring的一個(gè)什么特殊功能,后來(lái)研究后才發(fā)現(xiàn)是xml的一個(gè)知識(shí)點(diǎn),順便又研究了一下這個(gè)知識(shí),找到一篇文章感覺(jué)挺好,在此做個(gè)記錄。
轉(zhuǎn)自:http://bbs.actionscript3.cn/thread-1556-1-1.html
關(guān)于命名空間有很多人回避。認(rèn)為太難。其實(shí)命名空間使用很普遍,在xml中也大量存在。初學(xué)as3者搞不清楚是因?yàn)殛P(guān)于這方面的教程少且as3幫助文件中也沒(méi)有從基礎(chǔ)講起。而從一本厚厚的xml書(shū)籍中查詢或者看官方網(wǎng)站的介紹又是一種非常苦的事情。這里我把我學(xué)習(xí)和理解的過(guò)程總結(jié)下,盡量用通俗的語(yǔ)言寫出來(lái)。希望能夠幫助初學(xué)者過(guò)這個(gè)難關(guān),利益他人。
什么是XML的命名空間:
為了避免XML的標(biāo)簽同名。XML也擁有命名空間。標(biāo)簽可以放入命名空間中,不同的命名空間中的相同名稱標(biāo)簽是不同的標(biāo)簽。
在xml文件中,命名空間的定義如下:
<d:student xmlns:d=”http://www.develop.com/student;
其中student 是命名空間的標(biāo)簽。http://www.develop.com是命名空間的標(biāo)識(shí)。d是命名空間的前綴。
命名空間標(biāo)簽:
由于命名空間采取元素屬性的定義方式,所以需要一個(gè)標(biāo)簽。
命名空間標(biāo)識(shí):
命名空間標(biāo)識(shí)是命名空間最重要的屬性,重要到當(dāng)輸出一個(gè)命名空間時(shí)就直接轉(zhuǎn)換為它的標(biāo)識(shí)。標(biāo)識(shí)有個(gè)規(guī)范的稱呼:URI(統(tǒng)一資源定位符)。URI的最大特點(diǎn)是唯一性。如果不唯一就失去了辨識(shí)的意義。實(shí)際上相同URI不同的命名空間被看成同一個(gè)命名空間。URI分為兩種類型:
URL(統(tǒng)一資源定位器):
通俗的說(shuō)URL就是網(wǎng)頁(yè)地址。因?yàn)槊總€(gè)網(wǎng)頁(yè)在internat上都是唯一的。
URN(統(tǒng)一資源名稱):
可以不使用網(wǎng)頁(yè)地址而使用唯一名稱來(lái)定義。如:
urn:2007-12-9/workgrop/xin/projiectname
或 urn:E7f73B13-05FE-44ec-81CE-F898C4A6CDB4
這個(gè)編號(hào)是在系統(tǒng)中注冊(cè)的控件編號(hào),因此是唯一的。
前綴:
前綴用于在XML中作為URI的簡(jiǎn)化引用。因?yàn)?/span>URI太長(zhǎng)了。如:
<d:student xmlns:d="http://www.develop.com/student">
<d:id>3235329</d:id>
<d:name>Jeff Smith</d:name>
</d:student>
使用前綴把標(biāo)簽放入對(duì)應(yīng)的命名空間中。
有了命名空間區(qū)分后相同標(biāo)簽名可以不會(huì)被錯(cuò)誤解析。實(shí)際上命名空間加上元素名叫做QName。QName有兩個(gè)屬性:uri和localName,分別獲取命名空間名和本地名稱。這個(gè)QName可以使用xml的name()方法得到。如上例子中的xml文件可以使用如下代碼訪問(wèn):
聯(lián)系客服