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

Kar*_*lis 14 html browser w3c dom

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/

我在这里找到了这个问题的可能答案: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 vs HTML API与DOM HTML API和HTML DOM API.

Lou*_*nco 11

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


Jac*_*esB 10

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

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


Šim*_*das 9

简而言之:

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

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

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

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


Nat*_*nes 5

在其他地方回答,但显然我们应该接受(某些)重复:

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

<p><span>Hello,</span> this is some text. <span>It</span> is just a short paragraph</p>
Run Code Online (Sandbox Code Playgroud)

这个<p>标签有4 <span>个子节点:两个s和两个文本节点(this is some textis just a short paragraph).文本的其他位是其各自<span>标签的子节点.

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

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