命名空间如何影响DOM树构建?

时间:2012-09-14 18:27:50

标签: html xml html5 dom xml-parsing

据我所知,XML支持命名空间来解决不同规范中元素名称之间的冲突。

问题1:HMTL是否支持命名空间?

问题2:命名空间如何根据树结构影响DOM树构建?

一个简单的例子是最好的。

1 个答案:

答案 0 :(得分:1)

以下内容适用于HTML5解析。它不一定适用于传统的独立HTML解析器。

  

问题1:HTML是否支持命名空间?

在text / html语法中,您无法控制。元素根据其名称和祖先元素放置在不同的名称空间中,因为它们由解析器添加到DOM中。

您可以使用document.createElementNS。

控制通过javascript添加的新元素的命名空间

命名空间可以在application / xhtml + xml语法中使用,但是没有新的符合HTML5的元素可用,而不是text / html语法中没有。

  

问题2:命名空间如何影响DOM树的构建?一个简单的例子是最好的。

在text / html语法中

<div>
  <svg>
    <script ...></script>
  </svg>
  <script ...></script>
</div>  

已知div元素是一个HTML元素,因此放在http://www.w3.org/1999/xhtml命名空间中。

已知svg元素是一个SVG元素,因此放在http://www.w3.org/2000/svg命名空间中。

第一个script元素位于svg元素内,因此它位于http://www.w3.org/2000/svg命名空间中。

第二个script元素不在任何特殊元素内,因此它放在http://www.w3.org/1999/xhtml命名空间

在SVG或MathML名称空间中解析为元素的标记可以以XML的方式对所有这些元素使用自闭语法。自闭语法对形成HTML命名空间元素的标记没有影响。使用/>结束 void HTML元素的标记是允许的,但与使用>结束标记无关。