xml命名空間詳解

2021-08-11 06:53:51 字數 1565 閱讀 5854

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