在研究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中也大量...