XML命名空間提供避免元素命名衝突的方法。
名稱衝突
在XML中,元素名稱是由開發人員定義。 此嘗試混合來自不同的XML應用程序的XML文檔時通常導致的衝突。
這個XML進行HTML表的信息:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
這個XML中攜帶了表信息(a piece of furniture) :
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
如果這些XML片段加在一起,就不會有名稱衝突。 兩者都包含一個<table>元素,但是元素有不同的內容和意義。
用戶或XML應用程序將不知道如何處理這些分歧。
解決衝突的名稱使用前綴
在XML名稱衝突可以很容易地使用名稱的前綴是可以避免的。
此XML攜帶關於HTML表,一件家具的信息:
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
在上面的例子中,將不會有衝突,因為兩個<table>元件具有不同的名稱。
XML命名空間-中xmlns屬性
當使用以XML前綴,一個namespace的前綴必須被定義。
命名空間可以由限定xmlns中一個元素的開始標籤屬性。
該命名空間聲明的語法如下。 xmlns: prefix =" URI "
<root>
<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>
<f:table xmlns:f="http://www.w3ii.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
在上面的例子:
該xmlns第一屬性<table>元素給出了H:前綴合格的命名空間。
該xmlns在第二個屬性<table>元素給出了F:前綴合格的命名空間。
當命名空間為元素定義,與同一前綴的所有子元素都具有相同的命名空間相關聯。
命名空間,也可以在XML根元素聲明:
<root
xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3ii.com/furniture">
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
Note:該命名空間URI不使用分析器來查找信息。
使用URI的目的是給命名空間一個唯一的名稱。
然而,公司經常使用的命名空間作為一個指向包含命名空間信息的網頁。
統一資源標識符(URI)
一個Uniform Resource Identifier (URI)是字符的字符串,用於標識互聯網資源。
最常見的URI是Uniform Resource Locator (URL)標識的互聯網域名地址。 URI的另一個,不那麼常見的類型是Universal Resource Name (URN)
默認命名空間
定義一個默認命名空間的元素在所有的子元素使用前綴拯救我們。 它的語法如下:
xmlns="namespaceURI"
這個XML進行HTML表的信息:
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
這個XML中攜帶了一件家具的信息:
<table xmlns="http://www.w3ii.com/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
在實際使用的命名空間
XSLT是可用於將XML文檔轉換成其他格式的語言。
下面的XML文檔,是用於XML轉換為HTML文檔。
命名空間"http://www.w3.org/1999/XSL/Transform"標識一個HTML文檔中的XSLT元素:
<?xml version="1.0" encoding="UTF-8 " ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr>
<th style="text-align:left">Title</th>
<th style="text-align:left">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>
如果您想了解更多有關XSLT,請閱讀我們的XSLT教程 。