XML指南——XML 命名空間

來源:互聯網
上載者:User

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"

在上面的例子中,命名空間定義了一個網際網路位址:

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>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.