最新的Web開發教程
 

XML命名空間


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