据我所知,XML 支持命名空间来解决不同规范中元素名称之间的冲突。
问题 1:HMTL 是否支持命名空间?
问题2:从树结构上看,namespace 是如何影响 DOM 树的构建的?
一个简单的例子是最好的。
据我所知,XML 支持命名空间来解决不同规范中元素名称之间的冲突。
问题 1:HMTL 是否支持命名空间?
问题2:从树结构上看,namespace 是如何影响 DOM 树的构建的?
一个简单的例子是最好的。
以下适用于 HTML5 解析。它不一定适用于遗留的独立 HTML 解析器。
问题 1:HTML 是否支持命名空间?
在 text/html 语法中,您无法控制。解析器将元素添加到 DOM 时,根据它们的名称和祖先元素将元素放置在不同的命名空间中。
您可以使用 document.createElementNS 控制通过 javascript 添加的新元素的命名空间。
命名空间可以在 application/xhtml+xml 语法中使用,但是没有新的符合 HTML5 的元素可用,而不是 text/html 语法中不可用的元素。
问题 2:namespace 如何影响 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 命名空间元素的标签没有影响。使用/>
to 结束void HTML 元素的标签是允许的,但与使用 to 结束标签没有区别>
。