0

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

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

问题2:从树结构上看,namespace 是如何影响 DOM 树的构建的?

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

4

1 回答 1

1

以下适用于 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 结束标签没有区别>

于 2012-09-14T18:56:39.760 回答