b名字冲突
由于XML中的元素名不是固定的,因此当两个不同的文档使用同样的名字描述两个不同类型的元素时就会发生名冲突。
下面这个XML文档在一个表格中携带了信息:
table
tr
tdApples /td
tdBananas /td
/tr
/table
下面这个XML文档携带了关于一个表格的信息 (关于一件家具的信息):
table
nameAfrican Coffee Table /name
width80 /width
length120 /length
/table
如果这两个XML文档被加在一起,就会发生一个元素名冲突,因为这两个文档都包含了一个 table元素,而这两个元素的内容和定义都不同。
b用一个前缀解决名冲突
下面这个XML文档在一个表格中携带了信息:
h:table
h:tr
h:tdApples /h:td
h:tdBananas /h:td
/h:tr
/h:table
而这个XML文档则携带了一件家具的信息:
f:table
f:nameAfrican Coffee Table /f:name
f:width80 /f:width
f:length120 /f:length
/f:table
现在就没有元素名冲突的问题了,因为两个文档分别给他们的 table元素使用了不同的名字:( h:table 和 f:table)。 通过使用一个前缀,我们创建了两个不同类型的 table 元素。
b使用名字空间
下面这个XML文档在一个表格中携带了信息 :
h:table xmlns:h="http://www.w3.org/TR/html4/"
h:tr
h:tdApples /h:td
h:tdBananas /h:td
/h:tr
/h:table
这个XML文档携带了一件家具的信息:
f:table xmlns:f="http://www.w3schools.com/furniture"
f:nameAfrican Coffee Table /f:name
f:width80 /f:width
f:length120 /f:length
/f:table
在这里不是只使用前缀,在 table标记上还增加了一个 xmlns属性,这样就给元素前缀一个与名字空间相联系的有资格的名字。
b名字空间属性
名字空间属性放在一个元素的起始标记中,它的语法如下:
xmlns:namespace-prefix="namespace"
在上面的例子中,名字空间本身是用一个Internet 地址定义的:
&nbs