1

所以我一直在阅读 w3schools 上的命名空间,我知道它们是为了唯一标识一个元素。但是,如果您必须在名称旁边加上前缀,那么拥有名称空间有什么意义。您是否总是需要有名称空间的前缀?如果不是,您是否总是需要有带前缀的命名空间?如果是,为什么?

例如:

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

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

f 和 h 不是唯一标识不同的元素类型吗?

谢谢你的帮助。我真的不知道为什么存在命名空间。

4

1 回答 1

1

为什么?

与其他语言一样,命名空间允许您整理全局命名空间。这允许多个具有相同名称的元素或属性,只要它位于不同的命名空间中。

你总是需要限定元素的命名空间吗?

如果您有一个包含大部分元素(例如http://www.w3.org/TR/html4/)的“主导”命名空间,那么您可以将默认命名空间更改为此主导命名空间,如下所示:

<z:root xmlns="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3schools.com/furniture" xmlns:z="">
 <table>
   <tr>
   <td>Apples</td>
   <td>Bananas</td>
 </tr>

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

请注意,我们需要将 root 移回全局命名空间以使其与原始文档等效。

于 2013-06-19T07:49:26.507 回答