个性化阅读
专注于IT技术分析

XML命名空间介绍和用法示例

本文概述

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

XML命名空间声明

使用保留的XML属性声明XML名称空间。该属性名称必须以” xmlns”开头。

让我们看一下XML名称空间语法:

<element xmlns:name = "URL">

在这里, 名称空间以关键字” xmlns”开头。单词名称是名称空间前缀。 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>

立即测试

命名空间前缀:cont

命名空间标识符: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是URL(统一资源定位符), 用于标识Internet域名地址。

还有一个URI名称URN(通用资源名称), 但并不常见。在所有示例中, 我们仅使用了URL。


默认命名空间

XML文档中使用了默认名称空间, 以免你在所有子元素中使用前缀。

默认名称空间和简单名称空间之间的唯一区别是:无需在默认名称空间中使用前缀。

你也可以在同一文档中使用多个名称空间, 只需针对子节点定义一个名称空间。

默认命名空间示例:

<tutorials xmlns="http://www.srcmini02.com/java-tutorial">
  <tutorial>
    <title>Java-tutorial</title>
    <author>Sonoo Jaiswal</author>
  </tutorial>
  ...
</tutorials>

你可以看到在此示例中未使用前缀, 因此它是默认名称空间。

注意:如果定义不带前缀的名称空间, 则所有后代元素均被视为属于该名称空间。

赞(0)
未经允许不得转载:srcmini » XML命名空间介绍和用法示例

评论 抢沙发

评论前必须登录!