命名冲突
在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。
这个 XML 文档携带着某个表格中的信息:
<tr> <td>Apples</td> <td>Bananas</td> </tr> <table></table>
这个 XML 文档携带有关桌子的信息(一件家具):
<name>African Coffee Table</name> <width>80</width> <length>120</length> <table></table>
假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和定义的 <table> 元素,就会发生命名冲突。
XML 解析器无法确定如何处理这类冲突。
使用前缀来避免命名冲突
此文档带有某个表格中的信息:
<h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> <h:table></h:table>
此 XML 文档携带着有关一件家具的信息:
<f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> <f:table></f:table>
现在,命名冲突不存在了,这是由于两个文档都使用了不同的名称来命名它们的 <table> 元素 (<h:table> 和 <f:table>)。
通过使用前缀,我们创建了两种不同类型的 <table> 元素。
使用命名空间(Namespaces)
这个 XML 文档携带着某个表格中的信息:
<h:table > <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table>xmlns:h="http://www.w3.org/TR/html4/"
此 XML 文档携带着有关一件家具的信息:
<f:table > <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table>xmlns:f="http://www.w3school.com.cn/furniture"
与仅仅使用前缀不同,我们为 <table> 标签添加了一个 xmlns 属性,这样就为前缀赋予了一个与某个命名空间相关联的限定名称。