HTML\XHTML\XML 中的文档类型(!DOCTYPE)是用来干什么的?

总结:

HTML\XHTML\XML 中的文档类型(!DOCTYPE)是用来干什么的?

答:告诉浏览器 使用那种约束框架模式。

 XHTML的模式有四种:

XHTML 1.0 Strict
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 Frameset
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

 

HTML4模式有3种,不在一 一列举了。

HTML5只有一种标准模式,HTML5不在基于SGML 所以没有其他框架模式。但是为了兼容之前浏览器 尤其是IE9之前的浏览器,所以必须先。现代浏览器对于各种版本的html代码兼容性很好,基本已经不再根据不同的doctype类型来决定不同的渲染模式了。在HTML5<--!DOCTYPE--> 唯一的作用是告诉浏览器启用标准模式。更早期的 HTML 标准中,DOCTYPE 会附加其他意义,但没有任何浏览器会将 DOCTYPE 用于怪异模式和标准模式之间互换以外的用途。

所谓的HTML5 DOCTYPE(即<!DOCTYPE HTML>),只是一种推荐的写法,并不是html5的一部分,doctype会影响浏览器的渲染模式,尤其是早期的浏览器。

XML 如果基于DTD框架约束,也需要告诉浏览器采用框架约束。

XML Schema:采用的是命名空间,所以不需要<--!DOCTYPE-->。

正文

<!DOCTYPE html>
  • HTML 文件第一行必写内容

为什么要写文档类型?

  • 不写可能会使用怪异模式来展示内容
  • 浏览器并不只支持 HTML,还支持 XML 类型的文档
  • 浏览器对不同文档类型有不同的展示方式

所以,为了保证展示不出错,必须声明文档的类型

怪异模式

在很久以前的网络上,页面通常有两种版本:为网景的 Navigator 准备的版本,以及为微软的 Internet Explorer 准备的版本。当 W3C 创立网络标准后,为了不破坏当时既有的网站,浏览器不能直接弃用这些标准。因此,浏览器采用了两种模式,用以把能符合新规范的网站和老旧网站区分开。

目前浏览器的排版引擎使用三种模式:怪异模式(Quirks mode)、接近标准模式(Almost standards mode)、以及标准模式(Standards mode)。在怪异模式下,排版会模拟 Navigator 4 与 Internet Explorer 5 的非标准行为。为了支持在网络标准被广泛采用前,就已经建好的网站,这么做是必要的。在标准模式下,行为即由 HTML 与 CSS 的规范描述的行为。在接近标准模式下,只有少数的怪异行为被实现。

浏览器如何决定使用哪个模式?

对 HTML 文件来说,浏览器使用文件开头的 DOCTYPE 来决定用怪异模式处理或标准模式处理。

<!DOCTYPE html>

<!DOCTYPE html>,是所有可用的 DOCTYPE 之中最简单的,也是 HTML5 所推荐的。HTML 的早期变种也属于推荐标准,不过,当今的浏览器都会对这个 DOCTYPE 使用标准模式,就算是早已过时的 Internet Explorer 6 也一样。目前,并没有正当的理由,去使用其他更复杂的 DOCTYPE。如果你使用其他的 DOCTYPE,你可能会面临触发接近标准模式或者怪异模式的风险。

请确定你把 DOCTYPE 正确地置于 HTML 文件的顶端。如果有任何其他字符位于 DOCTYPE 之前,比如注释或 XML 声明,会导致 Internet Explorer 9 或更早期的浏览器触发怪异模式。

在 HTML5 中,DOCTYPE 唯一的作用是启用标准模式。更早期的 HTML 标准中,DOCTYPE 会附加其他意义,但没有任何浏览器会将 DOCTYPE 用于怪异模式和标准模式之间互换以外的用途。

posted @ 2022-03-27 02:05  小林野夫  阅读(432)  评论(0编辑  收藏  举报
原文链接:https://www.cnblogs.com/cdaniu/