所以我一直在阅读关于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不能唯一地标识不同的元素类型吗?
感谢您的帮助。我真的很难理解命名空间存在的原因。
答案 0 :(得分: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移回全局命名空间,以使其与原始文档保持等效。