大写或小写doctype?

jos*_*hnh 170 html html5 doctype

在编写HTML5 doctype时,正确的方法是什么?

<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)

要么

<!doctype html>
Run Code Online (Sandbox Code Playgroud)

Mat*_*ens 170

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

<!doctype html>
<!DOCTYPE html>
<!DOCTYPE HTML>
<!DoCtYpE hTmL>
Run Code Online (Sandbox Code Playgroud)

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

<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)

请参阅HTML5的XML序列化,即'XHTML5':

请注意,如果DOCTYPE在XHTML文档中没有大写,则XML解析器将返回语法错误.

第二部分可以用小写(html),大写(HTML)或甚至混合大小写(hTmL)编写- 它仍然可以工作.但是,为了符合HTML兼容的XHTML文档Polyglot标记指南,它应该用小写字母书写.

  • @Ichiro我说的是HTML,而不是SGML.没有浏览器实现过SGML.如果他们这样做,`<title/foo /`将等同于`<title> foo </ title>`.只有少数HTML*验证器*使用SGML.HTML5规范是第一个澄清这一点的规范:http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#parsing (20认同)
  • @IchiroFurusato你可能想[阅读HTML5](http://blog.whatwg.org/html-vs-xhtml).引用:"但是,与以前版本的HTML不同,HTML [5]序列化不再被视为SGML的应用程序,而是定义了自己的语法.虽然语法受到SGML的启发,但它的定义方式更接近于浏览器在现实世界中实际处理HTML的方式,特别是在错误处理方面. (15认同)
  • 不,这是不正确的.在SGML中,*文档类型声明*是生产110,在XML中它是生产28.在两种情况下,它被声明为固定字符串"DOCTYPE"(它不是*标签*,它是*关键字*).因此,在各自的SGML和XML标准中的规范定义中,**总是**大写.如果您发现软件允许使用小写"doctype"软件不符合标准.浏览器被设计为"他们接受的自由",但是兼容的XML处理器应将此标记为验证错误. (9认同)
  • ......我应该指出X/HTML5也是错误的.根据规定,XHTML5根本不是有效的XML标记,也不是.X/HTML5规范中存在许多错误.我不认真对待它.事实上,他们必须创建一个"*多语言标记*"(一个全新的概念)清楚地表明他们已经受到了惩罚. (5认同)
  • @ TestSubject528491该段落是关于DOCTYPE(`html`)的第二部分.这是完整的句子:"第二部分可以写成小写(`html`),大写(`HTML`)或甚至是大小写混合(`hTmL`) - 它仍然有效.但是,为了符合HTML兼容的XHTML文档的Polyglot标记指南,它应该用小写字母书写." (2认同)

ucs*_*rge 37

如果有人在2014年仍在疑惑,请咨询:

HTML5

W3 HTML5规范 - Doctype

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

1. A string that is an ASCII case-insensitive match for the string "<!DOCTYPE".
...
Run Code Online (Sandbox Code Playgroud)

注意:尽管显示在所有大写字母中,但规范表明它不敏感

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

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.
Run Code Online (Sandbox Code Playgroud)

查看XML规范,它列出了大写的DOCTYPE,但是我找不到任何声明需要"全部大写"的内容(为了比较,在上面列出的HTML5规范中,它显示在所有大写的示例中,但是规范明确规定是不区分大小写的.

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

多语言标记

W3 Polyglot Markup - 简介

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

W3 Polyglot Markup - Doctype

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

* The string DOCTYPE is in uppercase letters.
Run Code Online (Sandbox Code Playgroud)

因此,请注意Ployglot Markup使用常规HTML5文档类型,但添加/更改.对于我们的讨论,最值得注意的是DOCTYPE 以全部大写形式声明.

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

合计

查看W3的HTML与XHTML部分

[意见]除非您特别考虑对其进行考虑,否则我不会过分担心满足XML合规性.对于大多数基于客户端和JS的服务器开发,JSON已经取代了XML.

因此,如果您尝试更新现有的基于xhtml/xml的遗留系统以与新的HTML5功能共存,我只能看到这种情况.如果是这种情况,那么请查看多语言标记规范.


Joh*_*lor 17

根据最新的规范,你应该使用不区分大小写的东西<!DOCTYPE html>.因此,虽然浏览器需要支持您喜欢的任何情况,但从此推断这<!DOCTYPE html>是规范的情况是合理的.

  • 规范始终将其写为"<!DOCTYPE html>",因此推断规范的作者对该特定大小写略有偏好是合理的.我将使用与规范相同的大小写,因为这些东西保持一致很好,但是如果你更喜欢`<!dOcTyPe`那么我的客人:) (9认同)
  • 正如我所说,规范要求浏览器支持任何情况,所以任何情况都可以.但是提问者显然正在寻找一种标准的,规范的形式,所以在没有强有力的理由选择其中一种的情况下,你也可以使用规范中的示例案例...... (6认同)
  • 规范非常清楚地指出 doctype 必须包含一个不区分大小写的字符串,它与 '&lt;!DOCTYPE' 等价,因此暗示 '&lt;!dOcTyPe' 同样正确。 (3认同)
  • @joshnh我不明白你的困惑.1)DOCTYPE声明必须不区分大小写.2)HTML5规范在其示例中使用大写"DOCTYPE html".所有这些答案似乎都说是一个大写与文献一致,即使一切都是有效的.为什么这么离谱? (3认同)
  • 我认为@joshnh误解了John试图说的话.FWIW,我同意John的观点,即在没有任何特定理由格式化某种方式的情况下,遵循规范要求浏览器检查的内容是可取的.约翰从来没有试图暗示它更正确,只是因为它取决于你的偏好 - 否则它是一个完全随意的选择,对吧? (2认同)

Ste*_*hen 6

HTML5的标准是标签不区分大小写.

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

技术上更多:(http://www.w3.org/TR/html5/syntax.html)

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

  1. 字符串,它是字符串的ASCII不区分大小写的匹配项<!DOCTYPE.

  • 我不相信W3Schools 100%他们不隶属于W3C,尽管他们的大多数信息都很好,但有些信息不是. (35认同)
  • @MrLister:我认为称愚人是公平的,因为他们认为名为"W3Schools"的东西和名为"W3C"的东西之间存在联系.这两者在名称和领域上相似,足以引起混淆,并假设前者在某种程度上得到后者的支持或与之相关.这显然是W3Schools的意图,这是他们激怒那么多了解这个问题的人的原因之一.他们的许多信息不准确的事实使问题更加复杂(即,如果他们实际提供了合理的服务,它可能会稍微*可以原谅) (8认同)
  • W3Schools没有比其他网站更多或更少的错误.([完全随机的例子](http://webdesign.about.com/od/html5tutorials/a/build-your-first-html5-document.htm))获取有关盐的信息,请访问w3.org有疑问的页面,你会没事的.真正的傻瓜是那些认为W3Schools是官方机构或者他们的证书意味着什么的人. (4认同)

jpw*_*jpw 6

大写或小写都是"正确的".但是,如果你使用网络字体并关心IE7,我建议使用<!DOCTYPE html>因为IE7中的一个错误,如果使用网页字体有时会失败<!doctype html>(例如在这个答案中).

这就是为什么我总是大写doctype.