据我所知,XML支持命名空间来解决不同规范中元素名称之间的冲突。
问题1:HMTL是否支持命名空间?
问题2:命名空间如何根据树结构影响DOM树构建?
一个简单的例子是最好的。
答案 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元素的标记是允许的,但与使用>
结束标记无关。