目录

XML 命名空间


XML 命名空间提供了一种避免元素名称冲突的方法。


名称冲突

在 XML 中,元素名称由开发人员定义。当尝试混合来自不同 XML 应用程序的 XML 文档时,这通常会导致冲突。

此 XML 携带 HTML 表信息:

<table>
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

此 XML 携带有关表格(一件家具)的信息:

<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 中使用前缀时,名称空间必须定义前缀。

命名空间可以由xmlns元素的开始标记中的属性。

命名空间声明具有以下语法。 xmlns:字首= =统一资源标识符”。

<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="https://www.91xjr.com/furniture">
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>

</root>

在上面的例子中:

第一个 <table> 元素中的 xmlns 属性为 h: 前缀提供了限定的命名空间。

第二个 <table> 元素中的 xmlns 属性为 f: 前缀提供了限定的命名空间。

当为元素定义命名空间时,具有相同前缀的所有子元素都与相同的命名空间关联。

命名空间也可以在 XML 根元素中声明:

<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="https://www.91xjr.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>

笔记:解析器不使用名称空间 URI 来查找信息。

使用 URI 的目的是为命名空间提供唯一的名称。

然而,公司经常使用命名空间作为指向包含命名空间信息的网页的指针。


统一资源标识符 (URI)

统一资源标识符(URI) 是标识 Internet 资源的字符串。

最常见的 URI 是统一资源定位器(URL) 标识互联网域地址。另一种不太常见的 URI 类型是统一资源名称(瓮)。


默认命名空间

为元素定义默认命名空间可以使我们免于在所有子元素中使用前缀。它具有以下语法:

xmlns=" namespaceURI"

此 XML 携带 HTML 表信息:

<table xmlns="http://www.w3.org/TR/html4/">
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

此 XML 包含有关一件家具的信息:

<table xmlns="https://www.91xjr.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 教程