XML名字空間提供了一種避免元素名沖突的方法。
b>名字沖突
由於XML中的元素名不是固定的,因此當兩個不同的文檔使用同樣的名字描述兩個不同類型的元素時就會發生名沖突。
下面這個XML文檔在一個表格中攜帶了信息:
< tr>
< td>Apples< /td>
< td>Bananas< /td>
< /tr>
下面這個XML文檔攜帶了關於一個表格的信息 (關於一件家具的信息):
< name>African Coffee Table< /name>
< width>80< /width>
< length>120< /length>
如果這兩個XML文檔被加在一起,就會發生一個元素名沖突,因為這兩個文檔都包含了一個元素,而這兩個元素的內容和定義都不同。
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>
現在就沒有元素名沖突的問題了,因為兩個文檔分別給他們的元素使用了不同的名字:(< h:table> 和 < f:table>)。 通過使用一個前綴,我們創建了兩個不同類型的 元素。
b>使用名字空間
下面這個XML文檔在一個表格中攜帶了信息 :
< h:table XMLns: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:table XMLns: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>
在這裡不是只使用前綴,在標記上還增加了一個 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地址去識別其名字空間,我們可以肯定我們的名字空間是唯一的。