HTML DTD - 有什么意义?

时间:2008-11-05 20:37:27

标签: html dtd doctype

  

可能重复:
  What are the different doctypes in html and what do they mean?

对网络开发的某些方面缺乏经验(我总是更多地集中在后端而不是前端),任何人都可以告诉我他是否应该担心在网络开始时做出的DOCTYPE声明网页?

是最常见的HTML 4.01,我应该构建我的网络应用程序以符合此标准吗?

4 个答案:

答案 0 :(得分:4)

John Resig(jQuery)has a say就此事而言。此外,DocType有助于制作MSIE6 use the right box model,它还可以减轻验证网站的痛苦(这是开发的事情;可以将其视为调试)。

答案 1 :(得分:3)

您绝对应该将DOCTYPE作为页面中的第一个语句包含在内,因为它会将Web浏览器切换到标准模式。这意味着他们至少会尝试使用W3C和IETF标准来渲染您的页面,而不是遵循称为怪癖模式的向后兼容模型。

根据我自己的观察,现在更多地使用XHTML 1.0 Transitiona l而不是HTML 4.01。 XHTML 1.0 Transitional是一种半途而废,可以为您提供XHTML的一些好处,而不会过于繁琐。

答案 2 :(得分:2)

DTD用于验证和实体定义。他们粗略地指定某种标记语言和版本的语法要求。

可以使用验证程序对DTD进行验证。或者,它可以在解析期间由用户代理完成(如某些验证 HTML / XML解析器的情况)。如果用户代理支持,则可以使DTD中定义的实体可用。

DOCTYPE声明是标记语言的方式(至少在HTML和XML中),用于引用文档中的内联/外部DTD。

现在,就浏览器的HTML(text / html)解析器而言,DOCTYPE声明只控制渲染模式(DOCTYPE切换)。模式将是标准,几乎标准或Quirks,具体取决于引用的HTML版本以及是否指定了DTD URI。实际的dtd没有使用。

例如,带有DTD URI的XHTML 1.0 Transitional doctype可能只会将浏览器置于Almost Standards模式,其中带有DTD URI的XHTML 1.0 Strict doctype应将浏览器置于标准模式。此外,HTML5的doctype<!DOCTYPE html>将所有浏览器置于标准模式并将IE8 +置于超级标准模式(因此在渲染时它的行为更像现代浏览器)。通常,doctype对Javascript和DOM支持几乎没有影响(但也有例外,特别是对于IE8)。

对于浏览器,由于您几乎总是需要完全标准模式,所以您真正需要的是<!DOCTYPE html>。任何更多的东西都无法帮助浏览器。但是,该doctype适用于HTML5。如果要符合HTML 4.01 DTD或XHTML 1.0 DTD,则必须使用HTML 4.01 strict或XHTML 1.0 strict和正确的DTD URI才能获得完整的标准模式。

如果您想要符合HTML5,可以在http://validator.nu/测试语法。它不会对DTD进行验证,并且比DTD验证更先进。它还反映了HTML 5比DTD更好,因为HTML5更能反映出浏览器真正支持的内容,它的语法检查更符合浏览器世界。

如果要符合HTML 4.01或XHTML 1.0 DTD ,请使用W3C验证程序。请注意,这些DTD并不反映浏览器支持的内容,只是大致反映了它们的规格。这些DTD更多用于捕获粗略的语法错误以及充分利用它们的非浏览器用户代理。他们也不知道浏览器在text / html和application / xhtml + xml之间的行为方式如何。

阅读浏览器 Doctype Switching:

http://www.mozilla.org/docs/web-developer/quirks/doctypes.html

http://www.opera.com/docs/specs/doctype/

http://hsivonen.iki.fi/doctype/

答案 3 :(得分:0)

无视所有良好实践,人们使用DOCTYPE(例如XHTML 1.0 Transitional)的最大原因是将IE中的CSS框模型切换为与其他浏览器相同。这避免了CSS布局的挫败感。这里将更详细地解释:http://css.maxdesign.com.au/listamatic/about-boxmodel.htm