大写还是小写doctype?


182

编写HTML5文档类型时,正确的方法是什么?

<!DOCTYPE html>

要么

<!doctype html>

它通常是第一个,尽管可以使用<!DOCTYPE html>
Shadow

设法回答了我自己的问题,但认为如果其他人有类似的想法,我会离开。我个人更喜欢小写;HTML5中没有其他的是大写的。
2011年

11
Google.com使用小写<!doctype html>
狮子座Galleguillos

3
@HelloWorld:那是因为小写字母更常见,因此压缩效果更好。对于每天获得数百万点击的网站,这可能会有所作为。
Zaz

SVG文件呢?
威廉·恩崔肯

Answers:


183

在HTML中,DOCTYPE不区分大小写。以下DOCTYPE均有效:

<!doctype html>
<!DOCTYPE html>
<!DOCTYPE HTML>
<!DoCtYpE hTmL>

在XML序列化(即XHTML)中,不需要DOCTYPE,但是如果使用它,DOCTYPE则应为大写:

<!DOCTYPE html>

请参阅HTML5的XML序列化,又名“ XHTML5”

请注意,如果您不在DOCTYPEXHTML文档中使用大写字母,则XML解析器将返回语法错误。

第二部分可以用小写(html),大写(HTML)或什至大小写混合(hTmL)书写-它仍然可以使用。但是,为了符合HTML兼容XHTML文档Polyglot标记指南,应使用小写形式。


9
不,这是不正确的。在SGML中,文档类型声明为生产110,在XML中为生产28。在两种情况下,都将其声明为固定字符串“ DOCTYPE”(这不是标签,而是关键字)。因此,在相应的SGML和XML标准的规范定义中,它始终是大写的。如果找到允许使用小写“ doctype”的软件,则该软件不符合标准。浏览器被设计为“接受的是自由的”,但是兼容的XML处理器应将此标记为验证错误。
Ichiro Furusato 2012年

5
...并且我应该指出,X / HTML5也是不正确的。按照规定,XHTML5根本不是有效的XML标记,也不是。X / HTML5规范中存在许多错误。我不太重视。他们必须创建一个“ polyglot标记 ”(一个全新的概念),这一事实清楚地表明,他们已经做到了。
Ichiro Furusato

20
@Ichiro我在说HTML,而不是SGML。没有浏览器实现SGML。如果他们这样做,<title/foo/将等同于<title>foo</title>。只有少数HTML 验证器使用SGML。HTML5规范是为了澄清这第一个:whatwg.org/specs/web-apps/current-work/multipage/...
马蒂亚斯Bynens

2
@ TestSubject528491该段落大约是DOCTYPE(html)的第二部分。这是完整的句子:“第二部分可以用小写(html),大写(HTML)或什至大小写混合(hTmL)书写-仍然可以使用。但是,为了符合HTML兼容XHTML文档的Polyglot标记准则,应使用小写形式。”
Mathias Bynens'2

15
@IchiroFurusato您可能想阅读HTML5。Quote:“但是,与以前的HTML版本不同,HTML [5]序列化不再被视为SGML的应用,而是定义了自己的语法。尽管该语法受SGML启发,但其定义方式与浏览器在现实世界中实际处理HTML的方式更加相似,特别是在错误处理方面。”
Mathias Bynens 2012年

40

如果有人在2014年仍有疑问,请咨询以下网址:

HTML5

W3 HTML5规范-Doctype

DOCTYPE必须按以下顺序包含以下组件:

1. A string that is an ASCII case-insensitive match for the string "<!DOCTYPE".
...

注意:尽管显示为全部大写,但规范指出它不敏感

-------------------------------------------------- --------------------

XHTML5

W3 HTML5-XHTML

This specification does not define any syntax-level requirements 
beyond those defined for XML proper.

XML documents may contain a DOCTYPE if desired, but this is not required 
to conform to this specification. This specification does not define 
a public or system identifier, nor provide a formal DTD.

查看XML规范,它在大写字母中列出了DOCTYPE,但我找不到任何表明需要“所有大写字母”的内容(为了进行比较,在上面列出的HTML5规范中,它在所有大写字母中都显示在示例中,但是规范明确指出不区分大小写)。

-------------------------------------------------- --------------------

多种语言标记

W3多语言标记-简介

有时能够提供格式良好的XML文档的HTML5文档也很有价值。

W3多语言标记-Doctype

多语言标记使用[HTML5]的8.1.1节指定的文档类型声明(DOCTYPE)。此外,DOCTYPE符合以下规则:

* The string DOCTYPE is in uppercase letters.

因此,请注意,Ployglot标记使用常规的HTML5文档类型,但具有附加内容/更改内容。对于我们的讨论,最值得注意的是DOCTYPE在所有caps中都声明了

-------------------------------------------------- --------------------

求和

查看W3的HTML与XHTML部分

[观点]除非您专门尝试考虑XML遵从性,否则我不会太担心。对于大多数基于客户端和基于JS的服务器开发,JSON取代了XML。

因此,只有当您尝试更新现有的基于xhtml / xml的旧系统以与新的HTML5功能共存时,我才能真正看到这种应用。如果是这种情况,请查看多语言标记规范。


18

根据最新规范,您应该使用与大小写无关的匹配项<!DOCTYPE html>。因此,尽管要求浏览器支持您喜欢的任何情况,但从这种<!DOCTYPE html>情况推断出这是规范的情况是合理的。


3
该规范非常清楚地指出doctype必须包含与'<!DOCTYPE'不区分大小写的字符串,因此暗示'<!dOcTyPe'同样正确。
2012年

6
正如我所说,该规范要求浏览器支持任何情况,因此任何情况下都可以使用。但是,提问者显然正在寻找一种标准的规范形式,因此,在没有足够的理由来选择另一个标准的情况下,您不妨使用规范中的示例案例...
John Mellor 2012年

9
规范始终将其写为<!DOCTYPE html>,因此可以合理地推断出规范的作者对该特定大写字母略有偏爱。我将使用与规范相同的大写字母,因为这样可以使这些内容保持一致,但是如果您愿意,<!dOcTyPe可以成为我的客人:)
John Mellor 2012年

3
@joshnh我不明白你的困惑。1)要求DOCTYPE声明不区分大小写。2)HTML5规范在其示例中使用大写的“ DOCTYPE html”。所有这些答案似乎都在说,即使全部有效,一个大写字母也与文献一致。为什么这么离谱?

2
我认为@joshnh误解了John想要说的话。FWIW,我同意John的观点,即在没有任何特定原因格式化某种格式的情况下,最好遵循规范要求浏览器进行检查的内容。约翰从来没有试图暗示,它更正确的,只是它的东西要立足于自己的喜好-否则它是一个完全任意选择,对不对?
瑞安·威廉姆斯

7

大写或小写均为“正确”。但是,如果您使用Web字体并且关心IE7,我建议您使用IE7,<!DOCTYPE html>因为IE7中的错误会导致Web字体有时会失败<!doctype html>(例如,在此答案中))。

这就是为什么我总是大写doctype的原因。


6

HTML5的标准是标记不区分大小写。

http://www.w3schools.com/html5/tag_doctype.asp

从技术上讲:(http://www.w3.org/TR/html5/syntax.html

DOCTYPE必须按以下顺序包含以下组件:

  1. 一个字符串,该字符串是ASCII的不区分大小写的字符串<!DOCTYPE

35
我不相信W3Schools 100%不隶属于W3C,尽管他们的大多数信息都是好的,但其中一些不是。
joshnh 2011年

这是众所周知的-这是w3.org链接:w3.org/TR/html5/syntax.html
Stephen

4
W3Schools没有比其他网站更多或更少的错误。(完全随机的示例)带着一粒盐获取信息,如有疑问,请查阅w3.org页面,您会没事的。真正的傻瓜是那些相信W3Schools是官方机构或他们的证书没有任何意义的人。
李斯特先生,2012年

8
@MrLister:我称呼人们为愚人是不公平的,因为他们认为“ W3Schools”和“ W3C”之间存在联系。两者在名称和域上都足够相似,以致引起混淆,并且假定前者以某种方式被后者认可或与其相关。这显然是W3Schools的意图,这是他们激怒那么多了解该问题的人的原因之一。事实上,有很多他们的信息是不正确的化合物的问题(例如,它可能会略微如果他们真的提供了一个合理的服务原谅)
鲍比·杰克

到的链接tag_doctype.asp无效(404),这个问题是关于doctype声明的,不是标签。...总之,结论是正确的:在HTML5中,关键字doctype可以为大写,小写或大小写混合。
亚伯

3

这个问题暗示着只有一个正确的答案,提供了两个的多项选择,并要求我们选择一个。我建议对于HTML5 <!DOCTYPE html>和两者均<!doctype html>有效。

因此,具有HTML5功能的浏览器将接受小写字母并正确处理html。

我听说,即使没有doctype,以前的浏览器也没有使用HTML5,它们将尝试尽最大努力处理html。而且,如果他们不认识小写doctype也会这样做。因此,将它们设为大写是没有意义的,因为这些浏览器将始终无法完全实现任何HTML5声明。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.