XML 学习笔记 4:命名空间

本文章内容转载自 W3school XML 命名空间(XML Namespaces)


命名冲突

在XML中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突

这个 XML 文档携带着某个表格中的信息:

<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 文档携带着某个表格中的信息:

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

这个 XML 文档携带有关桌子的信息:

<f:table>
	<f:name>African Coffee Table</f:name>
	<f:width>80</f:width>
	<f:length>120</f:length>
</f:table>

现在,命名冲突不存在了,这是由于两个文档都使用了不同的名称来命名它们的<table>元素(<h:table><f:table>)。

通过使用前缀,我们创建了两种不同类型的<table>元素。


使用命名空间来避免命名冲突

这个 XML 文档携带着某个表格中的信息:

<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>

这个 XML 文档携带有关桌子的信息:

<f:table xmlns:f="http://www.w3school.com.cn/furniture">
	<f:name>African Coffee Table</f:name>
	<f:width>80</f:width>
	<f:length>120</f:length>
</f:table>

与仅仅使用前缀不同,我们为<table>标签添加了一个xmlns属性,这样就为前缀赋予了一个与某个命名空间相关联的限定名称。

XML 命名空间属性被放置于元素的开始标签之中,并使用以下的语法:

xmlns:namespace-prefix="namespaceURI"

当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。

:用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。

为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。

XML 默认的命名空间属性使用以下的语法:

xmlns="namespaceURI"

这个 XML 文档携带着某个表格中的信息:

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

这个 XML 文档携带有关桌子的信息:

<table xmlns="http://www.w3school.com.cn/furniture">
	<name>African Coffee Table</name>
	<width>80</width>
	<length>120</length>
</table>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值