XML
名字空間提供了一種避免元素名沖突的方法。
b>
名字沖突
由于
XML
中的元素名不是固定的,因此當兩個不同的文檔使用同樣的名字描述兩個不同類型的元素時就會發生名沖突。
下面這個
XML
文檔在一個表格中攜帶了信息
:
< table>
< tr>
< td>Apples< /td>
< td>Bananas< /td>
< /tr>
< /table>
下面這個
XML
文檔攜帶了關于一個表格的信息
(
關于一件家具的信息
):
< table>
< name>African Coffee Table< /name>
< width>80< /width>
< length>120< /length>
< /table>
如果這兩個
XML
文檔被加在一起,就會發生一個元素名沖突,因為這兩個文檔都包含了一個
< table>
元素,而這兩個元素的內容和定義都不同。
b>
用一個前綴解決名沖突
下面這個
XML
文檔在一個表格中攜帶了信息:
< h:table>
< h:tr>
< h:td>Apples< /h:td>
< h:td>Bananas< /h:td>
< /h:tr>
< /h:table>
而這個
XML
文檔則攜帶了一件家具的信息:
< f:table>
< f:name>African Coffee Table< /f:name>
< f:width>80< /f:width>
< f:length>120< /f:length>
< /f:table>
現在就沒有元素名沖突的問題了,因為兩個文檔分別給他們的
< table>
元素使用了不同的名字:
(< h:table>
和
< f:table>)
。
通過使用一個前綴,我們創建了兩個不同類型的
< table>
元素。
b>
使用名字空間
下面這個
XML
文檔在一個表格中攜帶了信息
:
< h:tablexmlns:h="http://www.w3.org/TR/html4/">
< h:tr>
< h:td>Apples< /h:td>
< h:td>Bananas< /h:td>
< /h:tr>
< /h:table>
這個
XML
文檔攜帶了一件家具的信息
:
< f:tablexmlns:f="http://www.w3schools.com/furniture">
< f:name>African Coffee Table< /f:name>
< f:width>80< /f:width>
< f:length>120< /f:length>
< /f:table>
在這里不是只使用前綴,在
< table>
標記上還增加了一個
xmlns
屬性,這樣就給元素前綴一個與名字空間相聯系的有資格的名字。
b>
名字空間屬性
名字空間屬性放在一個元素的起始標記中,它的語法如下
:
xmlns:namespace-prefix="namespace"
在上面的例子中,名字空間本身是用一個
Internet
地址定義的:
xmlns:f="http://www.w3schools.com/furniture">
W3C
名字空間規范規定名字空間本身應該是一個統一資源識別號
(URI)
。當一個名字空間在一個元素的起始標記中被定義時,所有有相同前綴的子元素都與同樣的名字空間相關。
注意:分解器并不使用用來識別名字空間的地址去查找信息。這個地址唯一的目的就是給名字空間一個唯一的名字。但是,公司經常將名空間作為包含名空間信息的實際
Web
頁面的一個指針。訪問
http://www.w3.org/TR/html4/
試一試。
b>
統一資源識別號
一個統一資源識別號
(URI)
是識別一個
Internet
資源的字符串。通常
URI
就是識別一個
Internet
域地址的
URL
。另外,有少數一些類型的
URI
是通用資源名
(URN)
。在我們的例子中只使用
URL
。由于我們這個家具的例子中使用一個
Internet
地址去識別其名字空間,我們可以肯定我們的名字空間是唯一的。