哪种HTML文档类型?

6
今天一位资深开发人员问我,如果我要为开放网络编写一些个人/非商业内容,我会使用哪种doctype。 我回答说:“”,然后我被震惊、恐惧和惊讶的眼神所迎接,然后被要求解释自己的回答。在我看来,这是一个很好的选择,因为当前的浏览器(IE、FF、Opera、Safari)会查看它并将内容切换到标准模式——即使它们不实现HTML5。如果我想真正利用HTML5元素,我可以使用一些JavaScript来创建对那些未被识别的标签的引用,比如IE(例如document.createElement('article');),然后像处理DOM的本地部分一样使用它们。这真的是一个那么糟糕的答案吗?你会怎么回答,为什么?

我想可能有这样的论点,即HTML文档类型在[非实验性] W3C验证工具上无法正确验证? - Phil.Wheeler
2
谷歌在google.com上使用<!doctype html> - powtac
1
谷歌也使用无效的HTML。 - Quentin
我同意你的想法——它可行,它更简短,也更容易记忆。 - Paul D. Waite
7个回答

6
虽然 <!doctype html> 完全没有问题,但是 WHAT-WG 建议使用 <!DOCTYPE html>,以防您最终将文档作为 XHTML5 提供(在这种情况下,大写变得重要)。
@David Dorward(无法发表评论,因此…)我不同意您对 HTML5 的陈述。虽然新的东西(结构元素等)目前受到浏览器的支持很少,但 HTML5 是 90% 的 HTML4,并具有定义的错误处理(最后)。浏览器解析 HTML5 与 HTML4 相同,因此假设您不使用结构元素(div 仍然有效),差异是微小的。Validator.nu 比 W3 的 HTML4.1 Strict 验证器给出更好的结果,正在更快地开发,并基于更详细的规范。
我的建议是暂时忽略 HTML5 中的新内容,将其视为更精确的 HTML4 规范。没有缺点,有几个好处。

3
"

<!doctype html> 看起来很不错..

特别棒的是,这个新的 DOCTYPE 能被所有现代浏览器(IE、FF、Opera、Safari)所识别,并将内容切换到标准模式 - 即使它们不支持 HTML5。这意味着你可以从今天开始使用 HTML5 编写网页,并让它们长期保持有效。/ http://ejohn.org/blog/html5-doctype/

"

3

这真的是一个很糟糕的答案吗?

<!DOCTYPE html> 不是一个糟糕的答案。

你会怎么回答,为什么?

我会给出关于选择通用文档类型声明的标准回答,尽管我在我的新个人出版物中使用 <!DOCTYPE html>



2
HTML5 - 是实验性的、不成熟的QA工具,目标仍在不断变化。(如果你必须使用JavaScript(可能被关闭)来识别基本结构元素,那就“哎呦!”)
XHTML - 需要附录C的技巧才能与Internet Explorer兼容。DTD比HTML4不够表达力。
HTML4 - 成熟、经过充分测试、大多数浏览器支持,无需技巧。不能被XML工具解析(但很少有人在网页内部使用这些工具)。
Strict - 一个好的核心。
Transitional - Strict加上应该避免的东西(除了几个例外)。
因此,HTML 4.01 Strict可能是最好的选择。显然有例外,但我会把它作为起点。

这个问题纯粹是关于文档类型,而不是实际使用的元素。 - Ms2ger
使用不允许使用的元素的Doctype在验证时会产生“false”正面结果。使用允许大范围元素但你不打算使用的Doctype将阻止验证程序检测到您(或您团队中的另一个成员)的意外操作。Doctype与文档密切相关,将其视为独立对象是愚蠢的。 - Quentin
我不明白为什么这个被踩了。这是一个很好的列点总结,涵盖了每个文档类型的考虑因素。 - Phil.Wheeler
“HTML5 - 实验性的” - 铺设牛路几乎不是实验性的。问题只问了文档类型。 - Paul D. Waite
QA工具是实验性的且不够成熟。 - Quentin

1

我会和你一样回答,因为你是正确的,而且出于下面几个好链接给出的原因(包括Anne在下面的答案,因为他为Opera工作),我不再对任何新的网页使用其他文档类型。


1
首先,我要说的是,Doctype 本来就不应该被引入。你不能使用除 text/html mimetype 以外的任何东西来提供跨浏览器页面,更不用说 DTD 了。
Doctype 的唯一作用就是触发标准模式,只有因为许多网站不符合标准,更不用说 W3C 规范了,才需要它。如果 Doctype 只有一个目的,那就让它变得简单。HTML5 正是如此。开发人员不应该让我们觉得 Doctype 有任何其他意义,而只是切换标准模式的开关。
“资深”开发人员应该专注于自己的工作,停止纠缠于这种无聊的事情。

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