所以我一直在阅读 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 不是唯一标识不同元素类型的吗?
谢谢你的帮助。我真的不明白为什么命名空间存在。
最佳答案
为什么?
与其他语言一样,命名空间允许您整理全局命名空间。这允许多个具有相同名称的元素或属性,前提是它位于不同的命名空间中。
您是否总是需要限定元素的命名空间?
如果你有一个包含大部分元素的“主导”命名空间(例如 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 移回全局命名空间以使其与原始文档相同。
关于XML 命名空间,为什么前缀需要它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17185589/