首頁  >  文章  >  後端開發  >  詳細介紹XML中名字空間的程式碼案例

詳細介紹XML中名字空間的程式碼案例

黄舟
黄舟原創
2017-03-29 15:55:581553瀏覽

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文件片段碰巧在一起使用的話,那麼將會出現命名衝突的情況。與所包含的內容又各不相同。 ----------------------------------------------

#使用前綴解決命名衝突問題

下面的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元素在兩個文檔中分別是(fae077d51b591786197c1ce2523c9adb 和20e0d2c31ebbe4ee5491ba472c0918be)。

##透過使用前綴,我們創建了兩個不同的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頁面,這個位址包含了關於當前命名空間更詳細的資訊。 統一資源識別碼通用資源識別碼(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=" 
<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中名字空間的程式碼案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn