xml命名空間詳解

2021-06-04 10:26:00 字數 1867 閱讀 3694

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