DOM和HTML如何相关?是另一个的子集,是一个比另一个更抽象的概念吗? HTML是DOM的扩展吗?或者它们是否描述了相当不相关的概念(仅与您可以从HTML转换为DOM相关)?如果你不得不如何在一张照片中画出这两张照片?
例如,这些差异规范的目的是什么。第一个和最后一个链接都包含有关HTMLElement ..
的信息我在这里找到了这个问题的可能答案: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。
答案 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 text
和is just a short paragraph
)。文本的其他位是各自<span>
标记的子项。
浏览器在其内部存储器中存储此信息(而不是仅存储非常难以处理的大量HTML流)。这样可以更容易使用层叠样式表(CSS)对其进行格式化,并使用JavaScript(创建和删除部件,将部件从一个父件移动到另一个部件等)对其进行更改。
所有版本的HTML(可能非常早期版本)都使用DOM。每个版本都有规则,例如哪些标签有效,哪些标签可以是每个元素的子项。这些规则在处理HTML并创建它的DOM表示时实现。