【发布时间】:2011-10-06 09:11:43
【问题描述】:
可能重复:
What's up, Doctype?
在 Netbeans IDE 中创建新文件时,我在文件开头得到 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">。
我删除它,我的 html 仍然有效。我想知道那是什么,有必要吗?
谢谢。
【问题讨论】:
可能重复:
What's up, Doctype?
在 Netbeans IDE 中创建新文件时,我在文件开头得到 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">。
我删除它,我的 html 仍然有效。我想知道那是什么,有必要吗?
谢谢。
【问题讨论】:
doctype 声明不是 HTML 标签;它是对 Web 浏览器的指示,说明页面是用什么版本的标记语言编写的。
doctype 声明是指文档类型定义 (DTD)。 DTD 指定标记语言的规则,以便浏览器正确呈现内容。
【讨论】:
文档类型声明或 DOCTYPE 是将特定 SGML 或 XML 文档(例如,网页)与文档类型定义 (DTD)(例如,特定HTML 版本)。
http://en.wikipedia.org/wiki/Document_Type_Declaration
另外,来自 W3C:
不只是一种 HTML,实际上还有很多:HTML 4.01 Strict、HTML 4.01 Transitional、XHTML 1.0 Strict 等等。所有这些类型的 HTML 都在其各自的 W3C 规范中定义,但它们也以机器可读的语言定义,指定一种 HTML 类型的合法结构、元素和属性。
【讨论】:
我相信如果你不指定文档类型,浏览器会添加一个默认的,这就是它起作用的原因。添加该行会覆盖默认值以指定您需要该特定标记语言。
【讨论】:
HTML 有许多变体,名称各异; XHTML、DHTML 等... 您的浏览器会尽力确定您的文档是用哪种变体编写的,但可能并不总是正确。特别是在 IE 中,如果您不声明经常导致大部分布局中断的 doctype,它将默认为“怪癖模式”。
声明文档类型意味着浏览器不必做出最佳猜测,而是根据与您声明的文档类型相关的规范呈现您的页面。
这里有一些关于一些 DTD 之间差异的有趣文章:
【讨论】:
明确一点:除非我们关心验证,否则使用 doctype 的唯一原因是触发标准模式(参见其他 cmets)。浏览器不区分 HTML 版本。这就是为什么建议选择尽可能简单的文档类型的原因:
<!doctype html>
【讨论】:
Doctype 告诉浏览器您正在编写哪个版本的 HTML 或 XHTML,因此它可以按应有的方式处理它。
没有 Doctype 也可以工作,但浏览器不会确切知道它是什么版本。
【讨论】: