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