XML 命名空間提供了一種避免元素命名沖突的方法。
因為XML文檔中使用的元素不是固定的,那麼兩個不同的XML文檔使用同一個名字來描述不同類型的元素的情況就可能發生。而這種情況又往往會導緻命名沖突。請看下面兩個例子
這個 XML 文檔在table元素中攜帶了水果的資訊:
這個 XML 文檔在table元素中攜帶了桌子的資訊(家具,不能吃的哦):
如果上面兩個XML文檔片斷碰巧在一起使用的話,那麼将會出現命名沖突的情況。因為這兩個片斷都包含了<table>元素,而這兩個table元素的定義與所包含的内容又各不相同。
下面的XML文檔在table元素中攜帶了資訊:
下面的XML文檔攜帶了家具table的資訊:
現在已經沒有元素命名沖突的問題了,因為這兩個文檔對各自的table元素使用了不同的字首,table元素在兩個文檔中分别是(<h:table> 和<f:table>)。
通過使用字首,我們建立了兩個不同的table元素。
在上面兩個例子中除了使用字首外,兩個table元素都使用了<b>xmlns</b>屬性,使元素和不同的命名空間關聯到一起。
命名空間屬性一般放置在元素的開始标記處,其使用文法如下所示:
在上面的例子中,命名空間定義了一個Internet 位址:
W3C 命名規範聲明命名空間本身就是一個統一資源标示符,<b>Uniform Resource Identifier (URI)</b>。
當我們在元素的開始标記處使用命名空間時,該元素所有的子元素都将通過一個字首與同一個命名空間互相關聯。
注意:用來辨別命名空間的網絡位址并不被XML解析器調用,XML解析器不需要從這個網絡位址中查找資訊,該網絡位址的作用僅僅是給命名空間一個唯一的名字,是以這個網絡位址也可以是虛拟的,然而又很多公司經常把這個網絡位址值象一個真實的Web頁面,這個位址包含了關于目前命名空間更詳細的資訊。
可以通路http://www.w3.org/TR/html4/.
通用資源辨別符(A <b>Uniform Resource Identifier</b> (URI))是一個辨別網絡資源的字元串。最普通的URI應該是統一資源定位符<b>Uniform Resource Locator</b> (URL)。URL用于辨別網絡主機的位址。另一方面,另一個不常用的URI是通用資源名字<b>Universal Resource Name</b> (URN)。在我們的例子中,一般使用的是URLs。
既然前面的例子使用的URL位址來辨別命名空間,我們可以确信這個命名空間是唯一的。
定義一個預設的XML命名空間使得我們在子元素的開始标記中不需要使用字首。他的文法如下所示:
下面的XML文檔在table元素中包含了水果的資訊:
下面的XML文檔包含了家具table的資訊:
檔開始使用XSL的時候,就會發現命名空間使用的是如此頻繁。XSL樣式單主要用于将XML文檔轉換成類似于HTML檔案的格式。
如果看一下下面的XSL文檔,就會發現有很多标記都是HTML标記。那些标記并不是HTML标記,是加了字首的XSL,這個XSL字首由命名空間"http://www.w3.org/TR/xsl"所辨別: