【问题标题】:How does namespace affect the DOM tree building?命名空间如何影响 DOM 树的构建?
【发布时间】:2012-09-07 22:37:49
【问题描述】:

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

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

问题 2:从树结构上看,命名空间如何影响 DOM 树的构建?

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

【问题讨论】:

    标签: xml html dom xml-parsing


    【解决方案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 命名空间元素的标签没有影响。使用/&gt; 结束void HTML 元素的标签是允许的,但与使用&gt; 结束标签没有区别。

    【讨论】:

      猜你喜欢
      • 2012-02-11
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      相关资源
      最近更新 更多