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

本文概述

  • XML命名空间声明
  • 如何摆脱名称冲突?
  • 统一资源标识符(URI)
  • 默认命名空间
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.srcmini.com/java-tutorial"> < tutorial> < title> Java-tutorial< /title> < author> Sonoo Jaiswal< /author> < /tutorial> ... < /tutorials>

【XML命名空间介绍和用法示例】你可以看到在此示例中未使用前缀, 因此它是默认名称空间。
注意:如果定义不带前缀的名称空间, 则所有后代元素均被视为属于该名称空间。

    推荐阅读