DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> XML入門指南(13)XML命名空間
XML入門指南(13)XML命名空間
編輯:XML詳解     

XML 命名空間提供了一種避免元素命名沖突的方法。


命名沖突

  因為XML文檔中使用的元素不是固定的,那麼兩個不同的XML文檔使用同一個名字來描述不同類型的元素的情況就可能發生。而這種情況又往往會導致命名沖突。請看下面兩個例子

  這個 XML 文檔在table元素中攜帶了水果的信息:

<table> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table>

  這個 XML 文檔在table元素中攜帶了桌子的信息(家具,不能吃的哦):

<table> <name>African Coffee Table</name> <width>80</width> <length>120</length> </table>

  如果上面兩個XML文檔片斷碰巧在一起使用的話,那麼將會出現命名沖突的情況。因為這兩個片斷都包含了<table>元素,而這兩個table元素的定義與所包含的內容又各不相同。


使用前綴解決命名沖突問題

  下面的XML文檔在table元素中攜帶了信息:

<h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table>

  下面的XML文檔攜帶了家具table的信息:

<f:table> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table>

  現在已經沒有元素命名沖突的問題了,因為這兩個文檔對各自的table元素使用了不同的前綴,table元素在兩個文檔中分別是(<h:table> 和<f:table>)。

  通過使用前綴,我們創建了兩個不同的table元素。

使用命名空間

  下面的XML文檔在table元素中攜帶了信息:

<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文檔攜帶了家具table的信息:

<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>

  在上面兩個例子中除了使用前綴外,兩個table元素都使用了XMLns屬性,使元素和不同的命名空間關聯到一起。


命名空間屬性

  命名空間屬性一般放置在元素的開始標記處,其使用語法如下所示:

XMLns:namespace-prefix="namespace"

  在上面的例子中,命名空間定義了一個Internet 地址:

XMLns:f="http://www.w3schools.com/furniture"

  W3C 命名規范聲明命名空間本身就是一個統一資源標示符,Uniform Resource IdentifIEr (URI)。

  當我們在元素的開始標記處使用命名空間時,該元素所有的子元素都將通過一個前綴與同一個命名空間相互關聯。

  注意:用來標識命名空間的網絡地址並不被XML解析器調用,XML解析器不需要從這個網絡地址中查找信息,該網絡地址的作用僅僅是給命名空間一個唯一的名字,因此這個網絡地址也可以是虛擬的,然而又很多公司經常把這個網絡地址值象一個真實的Web頁面,這個地址包含了關於當前命名空間更詳細的信息。
可以訪問http://www.w3.org/TR/html4/.

統一資源標識符

  通用資源標識符(A Uniform Resource IdentifIEr (URI))是一個標識網絡資源的字符串。最普通的URI應該是統一資源定位符Uniform Resource Locator (URL)。URL用於標識網絡主機的地址。另一方面,另一個不常用的URI是通用資源名字Universal Resource Name (URN)。在我們的例子中,一般使用的是URLs。

  既然前面的例子使用的URL地址來標識命名空間,我們可以確信這個命名空間是唯一的。


默認的命名空間

  定義一個默認的XML命名空間使得我們在子元素的開始標記中不需要使用前綴。他的語法如下所示:

<element XMLns="namespace">

  下面的XML文檔在table元素中包含了水果的信息:

<table XMLns="http://www.w3.org/TR/Html4/"> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table>

  下面的XML文檔包含了家具table的信息:

<table XMLns="http://www.w3schools.com/furniture"> <name>African Coffee Table</name> <width>80</width> <length>120</length> </table>

使用命名空間

  檔開始使用XSL的時候,就會發現命名空間使用的是如此頻繁。XSL樣式單主要用於將XML文檔轉換成類似於Html文件的格式。

  如果看一下下面的XSL文檔,就會發現有很多標記都是HTML標記。那些標記並不是Html標記,是加了前綴的XSL,這個XSL前綴由命名空間"http://www.w3.org/TR/xsl"所標識:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet XMLns:xsl="http://www.w3.org/TR/xsl"> <xsl:template match="/"> <html> <body> <table border="2" bgcolor="yellow"> <tr> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="CATALOG/CD"> <tr> <td><xsl:value-of select="TITLE"/></td> <td><xsl:value-of select="ARTIST"/></td> </tr> </xsl:for-each> </table> </body> </Html> </xsl:template> </xsl:stylesheet>


 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved