由DOM和HTML(API)之间的关系混淆

时间:2010-11-29 18:37:15

标签: html dom browser w3c

DOM和HTML如何相关?是另一个的子集,是一个比另一个更抽象的概念吗? HTML是DOM的扩展吗?或者它们是否描述了相当不相关的概念(仅与您可以从HTML转换为DOM相关)?如果你不得不如何在一张照片中画出这两张照片?

例如,这些差异规范的目的是什么。第一个和最后一个链接都包含有关HTMLElement ..

的信息
  1. http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/
  2. http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/
  3. http://www.w3.org/TR/html5/
  4. 我在这里找到了这个问题的可能答案:http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-1176245063-h2,即

      

    特定于HTML的DOM API的目标是:

         
        
    • 专门化并添加专门与HTML文档和元素相关的功能
    •   
    • ...
    •   
    • 为HTML文档的常见和频繁操作提供便利机制。
    •   

    这是否意味着上面列表中的第3个链接扩展了DOM Core,这在第1个链接中有描述?

    或者如果你实现了DOM Core,那么你可以操作简单的文档,但是如果你实现了HTML,那么你就像一个超级DOM,可以让你操作更复杂的对象?

    最后,假设你想要实现自己的浏览器,只能打开HTML5网站(渲染,以及支持JavaScript)。是否足以阅读第3个链接中的规范,或者您是否首先需要实现DOM中提供的所有内容然后实现HTML5特定的东西?

    更新
    我想我想知道DOM API与HTML API对比DOM HTML API与HTML DOM API。

4 个答案:

答案 0 :(得分:10)

HTML是文本,DOM是内存中的对象模型,用于表示HTML描述的树。

答案 1 :(得分:10)

HTML规范根据具有特定语法的文本文档描述HTML。另一方面,DOM在解析HTML文档时描述了浏览器生成的对象模型。但两种规格都描述了相同的抽象模型,即HTML的元素和属性。

DOM-core是具有元素和属性的所有XML文档(包括HTML)通用的对象模型。 HTML-DOM是核心DOM的扩展,具有针对各种HTML元素的更具体的接口。

答案 2 :(得分:9)

简而言之:

HTML标准定义了HTML语言 - 存在哪些标记/属性及其含义。

DOM标准定义了由浏览器中DOM对象树中的对象实现的接口。 (Web浏览器解析HTML源代码并基于它创建对象树。该树中的对象具有由DOM(和其他)标准定义的属性。)

HTML5标准还定义了之前未定义的东西的接口 - 如窗口对象,导航器和历史对象,全局函数,如警报和提示,超时功能等。

不同的标准不是彼此的子集 - 它们只是定义整个画面的一部分的不同标准。

答案 3 :(得分:5)

在其他地方回答,但显然我们应该embrace (some) duplication

文档对象模型是浏览器的HTML内部表示。它基于'儿童'的想法。因此,<p>标记可能包含多个文本节点和多个<span>标记,如下所示:

<p><span>Hello,</span> this is some text. <span>It</span> is just a short paragraph</p>

<p>代码包含4个子代:两个<span>个,以及两个文本节点(this is some textis just a short paragraph)。文本的其他位是各自<span>标记的子项。

浏览器在其内部存储器中存储此信息(而不是仅存储非常难以处理的大量HTML流)。这样可以更容易使用层叠样式表(CSS)对其进行格式化,并使用JavaScript(创建和删除部件,将部件从一个父件移动到另一个部件等)对其进行更改。

所有版本的HTML(可能非常早期版本)都使用DOM。每个版本都有规则,例如哪些标签有效,哪些标签可以是每个元素的子项。这些规则在处理HTML并创建它的DOM表示时实现。