如何使用没有前缀的XML命名空间标记?

时间:2014-12-09 02:21:11

标签: xml xml-namespaces

我见过如下文件

的XML文件示例
<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3schools.com/furniture">
<h:table>
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>
<f:table>
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
</root>

此外,我还看到了以下XML文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

       <bean id="test" />

</beans>

我很困惑为什么第一个需要前缀而第二个不需要前缀。只有在含糊不清的情况下才需要前缀吗?在2nd中的根标签声明中是否有某些内容导致前缀是可选的?

1 个答案:

答案 0 :(得分:1)

这是非常基本的。

在第一种情况下,root元素位于默认命名空间中。这两个table元素位于两个不同的名称空间中,因此它们具有fh前缀。

在第二种情况下,beans元素位于http://www.springframework.org/schema/beans命名空间中。可以使用类似

的前缀指定它
<b:beans xmlns:b="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

       <b:bean id="test" />

</b:beans>

但是,由于只有一个命名空间,因此将xmlns="http://www.springframework.org/schema/beans指定为所有元素的命名空间会更简单。