名称空间如何影响DOM树的构建



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

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

问题2:从树结构的角度来看,名称空间如何影响DOM树的构建?

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

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

问题1:HTML支持名称空间吗?

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

您可以使用document.createElementNS.控制通过javascript添加的新元素的命名空间

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

问题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名称空间元素的标记没有影响。使用/>结束voidHTML元素的标记是允许的,但与使用>结束标记没有什么不同。

最新更新