XML教程
XQuery教程
XSLT教程
XPath教程

XML 命名空间

XML命名空间

XML 命名空间用于以避免XML文档中元素名称冲突。

XML命名空间声明

使用保留的XML属性声明XML命名空间。此属性名称必须以" xmlns"开头。
让我们看看XML名称空间语法:
<element xmlns:name = "URL">
在这里,名称空间以关键字" xmlns" 开头。单词 name 是名称空间前缀。 URL 是名称空间标识符。
让我们看一下XML文件的示例。
<?xml version="1.0" encoding="UTF-8"?>
<cont:contact xmlns:cont="http://sssit.org/contact-us">
   <cont:name>Vimal Jaiswal</cont:name>
   <cont:company>SSSIT.org</cont:company>
   <cont:phone>(0120) 425-6464</cont:phone>
</cont:contact> 
命名空间前缀: 续
命名空间标识符: http://sssit.org/contact-us
它指定带有cont前缀的元素名称和属性名称属于http://sssit.org/contact-us命名空间。
在XML中,元素名称由开发人员定义,因此有机会在元素名称上发生冲突。为了避免这些类型的冲突,我们使用XML命名空间。我们可以说XML命名空间提供了一种避免元素名称冲突的方法。
通常,当我们尝试混合来自不同XML应用程序的XML文档时,就会发生这些冲突。两个表:
表1:
<table>
  <tr>
    <td>Aries</td>
    <td>Bingo</td>
  </tr>
</table> 
表2: : 该表包含有关计算机表的信息。
<table>
  <name>Computer table</name>
  <width>80</width>
  <length>120</length>
</table> 
如果将这两个XML片段加在一起,则会发生名称冲突,因为它们都具有<table>元素。尽管它们具有不同的名称和含义。

如何摆脱名称冲突?

1)使用前缀

您可以通过使用名称前缀轻松地避免使用XML名称空间。
<h:table>
  <h:tr>
    <h:td>Aries</h:td>
    <h:td>Bingo</h:td>
  </h:tr>
</h:table>
<f:table>
  <f:name>Computer table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table> 
注意: 在此示例中,因为两个表都有特定的名称,所以您不会发生冲突。

2)通过使用xmlns属性

您可以使用xmlns属性使用以下语法来定义名称空间:
<element xmlns:name = "URL">
让我们看一下示例:
<root>
<h:table xmlns:h="http://www.abc.com/TR/html4/">
  <h:tr>
    <h:td>Aries</h:td>
    <h:td>Bingo</h:td>
  </h:tr>
</h:table>
<f:table xmlns:f="http://www.xyz.com/furniture">
  <f:name>Computer table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
</root> 
在上面的示例中,<table>元素定义了一个名称空间,并且当为一个元素定义一个名称空间时,具有相同前缀的子元素将与相同的名称空间相关联。
<root xmlns:h="http://www.abc.com/TR/html4/"
xmlns:f="http://www.xyz.com/furniture">
<h:table>
  <h:tr>
    <h:td>Aries</h:td>
    <h:td>Bingo</h:td>
  </h:tr>
</h:table>
<f:table>
  <f:name>Computer table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
</root> 
注意: 上面的示例中使用的命名空间URI完全没有必要。解析器不使用它来查找信息。它仅用于为命名空间标识符提供唯一的名称。

统一资源标识符(URI)

统一资源标识符用于标识Internet资源。它是一个字符串。
最常见的URI是用于标识Internet域名地址的URL(统一资源定位符)。
还有一个URI名称URN(通用资源名称),但并不常见。在所有示例中,我们仅使用了URL。

默认命名空间

XML文档中使用了默认命名空间,以免您在所有子元素中使用前缀。
默认名称空间和简单名称空间之间的唯一区别是: 不需要在默认名称空间中使用前缀。
您还可以在同一文档中使用多个名称空间,只需针对子节点定义一个名称空间。
默认命名空间示例:
<tutorials xmlns="http://www.lidihuo.com/java-tutorial">
  <tutorial>
    <title>Java-tutorial</title>
    <author>Sonoo Jaiswal</author>
  </tutorial>
  ...
</tutorials> 
您可以看到在此示例中未使用前缀,因此它是默认的名称空间。
注意: 如果定义不带前缀的名称空间,则所有后代元素都将属于该名称空间。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4