我们应该使用哪个DOCTYPE声明?

10

我已经阅读了一些关于DOCTYPE声明以及三种变体(strict, transitional和frameset)的书籍。

但是我仍然无法完全理解它们之间的区别,而且也不确定在创建网站时应该使用哪种变体。特别是我不理解strict和transitional之间的区别。

请问您能为我提供建议吗?

3个回答

8

框架集是为定义框架集的文档而设计的(非框架集文档将被加载到框架中)。框架通常是一个糟糕的设计选择,会导致更多问题。

过渡性HTML规范是严格模式加上一些不应该使用的东西(主要是因为它们已经被CSS替代了)。有一些例外,比如start属性,它有一些很好的理由支持使用它(但并不经常有用)。

严格模式是HTML的核心,通常是最好的选择。

HTML 4.01是HTML的最新版本。

XHTML 1.0是用XML表示的HTML 4.01。它在Internet Explorer中无法工作,除非你假装它是HTML(text/html规范允许这样做)。

XHTML 1.1是XHTML 1.0严格模式加上target属性、Ruby(不是编程语言)和其他一些微小的调整。没有规范允许假装XHTML 1.1是HTML。

(五年前:HTML 5是一个草案规范,可能会发生变化,并且在今天大多数使用的浏览器中,许多有趣的部分没有JavaScript的支持。它缺乏成熟的验证工具。

HTML 4.01通常是最好的选择,但如果您的出版系统中有XML工具链,则值得考虑使用XHTML 1.0,如果您需要其中添加的某些东西并且认为生活在前沿的风险是值得的,则值得考虑使用HTML 5。

简而言之:使用HTML 4.01严格模式,除非你知道为什么需要使用其他东西。

自此答案最初撰写以来,HTML 5已成为具有良好浏览器和工具链支持的标准。它是与浏览器实际工作方式最接近的规范。如果需要XML支持,则可用XML序列化。

简而言之:使用HTML 5:<!DOCTYPE html>


难道你的意思不是“XHTML 1.1 就是 XHTML 1.0 Strict 加上...”吗? - Alohci
说 HTML5 最有趣的部分在大多数浏览器中无法工作是相当不准确的。实际上,只有一种现代浏览器支持较差,即使那个浏览器也支持很多功能。HTML5 的许多内容只是将浏览器在现实世界中已经存在的功能进行编码。 - Chuck
取决于你如何衡量“大多数浏览器”,如果你认为这个短语的意思是“最新版本的主要浏览器,没有考虑市场渗透率”,那么这可能是正确的。(我不认为HTML 5的那些定义浏览器已经做过的事情很有趣)。 - Quentin

2
请使用HTML5的文档类型声明:
<!DOCTYPE HTML>

其他的都已经老掉牙了。

HTML5 > XHTML > HTML 4

注意:DOCTYPE 只有在验证文档和触发现代浏览器中最符合标准的模式时才有用。除此之外,它毫无价值。因此,您最好使用最现代化的版本(HTML5)。


1
非常好的答案。可能是页面上最好的答案。唯一需要更正的是 DOCTYPE 声明中的“html”部分必须是小写。讨论对 MIME 类型的影响也是必要的。 - Sean B. Durkin

-1
首先,您使用的是HTML还是XHTML?我建议使用HTML - XHTML已经过时了。HTML5是未来(尽管谁知道那个未来何时会到来),所以我会选择HTML 4 transitional:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

这是最接近HTML5的通用文档类型。您可以使用HTML5的功能,如<menu>标签,它仍然会验证


我会选择HTML5文档类型:<!doctype html>。它简短且兼容所有浏览器。您可以使用HTML 4元素,并且不需要担心Strict、Transitional或Frameset。 - Tae

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接