在研究spring security的時候,裡面提到了乙個重要的感念就是命名空間,當時以為是spring的乙個什麼特殊功能,後來研究後才發現是xml的乙個知識點,順便又研究了一下這個知識,找到一篇文章感覺挺好,在此做個記錄。
關於命名空間有很多人迴避。認為太難。其實命名空間使用很普遍,在xml中也大量存在。初學as3者搞不清楚是因為關於這方面的教程少且as3幫助檔案中也沒有從基礎講起。而從一本厚厚的xml書籍中查詢或者看官方**的介紹又是一種非常苦的事情。這裡我把我學習和理解的過程總結下,盡量用通俗的語言寫出來。希望能夠幫助初學者過這個難關,利益他人。
什麼是xml的命名空間:
為了避免xml的標籤同名。xml也擁有命名空間。標籤可以放入命名空間中,不同的命名空間中的相同名稱標籤是不同的標籤。
在xml檔案中,命名空間的定義如下:
其中student 是命名空間的標籤。
是命名空間的標識。d
是命名空間的字首。
命名空間標籤:
由於命名空間採取元素屬性的定義方式,所以需要乙個標籤。
命名空間標識:
命名空間標識是命名空間最重要的屬性,重要到當輸出乙個命名空間時就直接轉換為它的標識。標識有個規範的稱呼:uri(統一資源定位符)。uri的最大特點是唯一性。如果不唯一就失去了辨識的意義。實際上相同uri不同的命名空間被看成同乙個命名空間。uri分為兩種型別:
url(統一資源定位器):
通俗的說url就是網頁位址。因為每個網頁在internat上都是唯一的。
urn(統一資源名稱):
urn:2007-12-9/workgrop/xin/projiectname
或 urn:e7f73b13-05fe-44ec-81ce-f898c4a6cdb4
這個編號是在系統中註冊的控制項編號,因此是唯一的。
字首:字首用於在xml中作為uri的簡化引用。因為uri太長了。如:
3235329
jeff smith
使用字首把標籤放入對應的命名空間中。
有了命名空間區分後相同標籤名可以不會被錯誤解析。實際上命名空間加上元素名叫做qname。qname有兩個屬性:uri和localname,分別獲取命名空間名和本地名稱。這個qname可以使用xml的name()方法得到。如上例子中的xml檔案可以使用如下**訪問:
var ns:namespace=xml.namespace();
var node:xmllist=xml.ns::id;
var qnamename=node.name();
trace(qname.uri);
trace(qname.localname);
命名空間不一點要定義在根節點。可以在任何標籤中定義,但只有定義了後才能使用。命名空間還可以巢狀或者被重定義。但這樣會增加複雜性。一般用的比較少。乙個xml檔案中可以擁有多個命名空間。使用命名空間字首可以輕鬆處理它們。如:
xmlns:d=」urn:dm:student」>
使用預設命名空間:
在xml文件中,可以使用以下語句定義預設命名空間:
xmlns=
使用預設命名空間後,如果不加字首則引用預設命名空間。使用預設命名空間會降低xml結構的清晰度。要慎用。
xml命名空間詳解
在研究spring security的時候,裡面提到了乙個重要的感念就是命名空間,當時以為是spring的乙個什麼特殊功能,後來研究後才發現是xml的乙個知識點,順便又研究了一下這個知識,找到一篇文章感覺挺好,在此做個記錄。關於命名空間有很多人迴避。認為太難。其實命名空間使用很普遍,在xml中也大量...
xml命名空間詳解
在研究spring security的時候,裡面提到了乙個重要的感念就是命名空間,當時以為是spring的乙個什麼特殊功能,後來研究後才發現是xml的乙個知識點,順便又研究了一下這個知識,找到一篇文章感覺挺好,在此做個記錄。關於命名空間有很多人迴避。認為太難。其實命名空間使用很普遍,在xml中也大量...
xml命名空間詳解
在研究spring security的時候,裡面提到了乙個重要的感念就是命名空間,當時以為是spring的乙個什麼特殊功能,後來研究後才發現是xml的乙個知識點,順便又研究了一下這個知識,找到一篇文章感覺挺好,在此做個記錄。關於命名空間有很多人迴避。認為太難。其實命名空間使用很普遍,在xml中也大量...