XML 命名空間提供避免元素命名衝突的方法。html
在 XML 中,元素名稱是由開發者定義的,當兩個不一樣的文檔使用相同的元素名時,就會發生命名衝突。app
這個 XML 文檔攜帶着某個表格中的信息:spa
<tr> <td>Apples</td> <td>Bananas</td> </tr> <table></table>
這個 XML 文檔攜帶有關桌子的信息(一件傢俱):指針
<name>African Coffee Table</name> <width>80</width> <length>120</length> <table></table>
假如這兩個 XML 文檔被一塊兒使用,因爲兩個文檔都包含帶有不一樣內容和定義的 <table> 元素,就會發生命名衝突。code
XML 解析器沒法肯定如何處理這類衝突。orm
此文檔帶有某個表格中的信息:xml
<h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> <h:table></h:table>
此 XML 文檔攜帶着有關一件傢俱的信息:htm
<f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> <f:table></f:table>
如今,命名衝突不存在了,這是因爲兩個文檔都使用了不一樣的名稱來命名它們的 <table> 元素 (<h:table> 和 <f:table>)。資源
經過使用前綴,咱們建立了兩種不一樣類型的 <table> 元素。開發
這個 XML 文檔攜帶着某個表格中的信息:
<h:table > <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table>xmlns:h="http://www.w3.org/TR/html4/"
此 XML 文檔攜帶着有關一件傢俱的信息:
<f:table > <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table>xmlns:f="http://www.w3school.com.cn/furniture"
與僅僅使用前綴不一樣,咱們爲 <table> 標籤添加了一個 xmlns 屬性,這樣就爲前綴賦予了一個與某個命名空間相關聯的限定名稱。
XML 命名空間屬性被放置於元素的開始標籤之中,並使用如下的語法:
xmlns:namespace-prefix="namespaceURI"
當命名空間被定義在元素的開始標籤中時,全部帶有相同前綴的子元素都會與同一個命名空間相關聯。
註釋:用於標示命名空間的地址不會被解析器用於查找信息。其唯一的做用是賦予命名空間一個唯一的名稱。不過,不少公司經常會做爲指針來使用命名空間指向實際存在的網頁,這個網頁包含關於命名空間的信息。
請訪問 http://www.w3.org/TR/html4/。
統一資源標識符是一串能夠標識因特網資源的字符。最經常使用的 URI 是用來標示因特網域名地址的統一資源定位器(URL)。另外一個不那麼經常使用的 URI 是統一資源命名(URN)。在咱們的例子中,咱們僅使用 URL。
爲元素定義默認的命名空間可讓咱們省去在全部的子元素中使用前綴的工做。
請使用下面的語法:
xmlns="namespaceURI"
這個 XML 文檔攜帶着某個表格中的信息:
<table > <tr> <td>Apples</td> <td>Bananas</td> </tr> </table>xmlns="http://www.w3.org/TR/html4/"
此 XML 文檔攜帶着有關一件傢俱的信息:
<table > <name>African Coffee Table</name> <width>80</width> <length>120</length> </table>xmlns="http://www.w3school.com.cn/furniture"
當開始使用 XSL 時,您不久就會看到實際使用中的命名空間。XSL 樣式表用於將 XML 文檔轉換爲其餘格式,好比 HTML。
若是您仔細觀察下面的這個 XSL 文檔,就會看到大多數的標籤是HTML標籤。非 HTML 的標籤都有前綴 xsl,並由此命名空間標示:"http://www.w3.org/1999/XSL/Transform":
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" > <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr> <th align="left">Title</th> <th 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>xmlns:xsl="http://www.w3.org/1999/XSL/Transform"