XML 命名空间,为什么前缀需要它们?

标签 xml namespaces xhtml prefixes

所以我一直在阅读 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/

相关文章:

android - intellij 在 android xml 文件中说 "cannot find declaration to go to"

xml - Xpath 获取当前节点的值

java - JAXB 更新 XML 元素

xhtml - xhtml在Html5中的作用是什么?

css - 即 8 : background-size fix

html - <p> 标签是 XHTML 中的 block 级元素?

android - 主体较小的 CardView 和漂浮在其外部的图像

namespaces - Clojure:函数的全限定名

c++ - 在 C++ 中使用命名空间

javascript - 在 jquery 中创建命名空间时出错