正如我所知,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元素的标记是允许的,但与使用>
结束标记没有什么不同。