当前位置: 首页 > 图文教程 > 网页制作 > HTML/XHTML教程 > DTD文档类型声明doctype

HTML/XHTML教程
标记语言:为
将XHTML CSS页面转换为打印机页面
robots.txt详细介绍
HTML和CSS在Flash中的应用
html sub标记和sup标记
HTML 超级链接详细讲解
网页制作前先来看看这些所谓的规范
HTML iframe 用法总结收藏
HTML5 Canvas 起步(2) - 路径
XHTML1.0与HTML兼容指引16条 小结
有效网页表单的八条规则
html pre标记里内容自动换行
设计师 需要学习编写代码吗
使用整洁的HTML标记构建页面
img usemap属性 中国地图链接
HTML5 Canvas标签使用收录
HTML&CSS&JS兼容树(IE,Firefox,chrome)
用js互相调用iframe页面内的js函数
网页制作基础 声明文档类型描述(DTD
HTML5 CSS3新的WEB标准和浏览器支持

HTML/XHTML教程 中的 DTD文档类型声明doctype


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 67 ::
收藏到网摘: n/a

HTML是万维网上发布超文本的通用语言[1]。从1982年Tim Berners-Lee简化SGML建立HTML的原始定义到2001年发布XHTML1.1规范,HTML成为了有多个版本的国际标准[2]。各版本的规范都用一种机器可读的语言定义,它描述了法定结构、元素和属性,这就是文档类型定义(Document Type Definition),简称DTD。

相关文章:HTML代码学习:DOCTYPE的缩写

DTD描述了文档类型声明(DTD declaration,简称doctype[3])位于HTML文档最前面,它是联系文档和DTD指令。比如HTML4.01 Strict的doctype是:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

它指明了文档使用的HTML版本,这是诸如浏览器之类的工具解析文档时最需要的信息。比如W3C的验证工具可依据它来检查语法和指出错误。

早期浏览器对标准的错误实现、私有扩展的大量滋生和为了向前兼容以及早期标准本身的混乱等导致了那时的文档既没有doctype也没有对DTD的直接引用,也导致了新的标准难以得到应用和普及,因为浏览器无法区分它们。为了处理根据Web标准创作的网页和根据陈旧实践创作的网页,Todd Fahrner 在1998年提出了“came up with a toggle”方法[4]能允许浏览器提供两套渲染模式: 即有完整的doctype的文档使用W3C的标准进行解析,否则使用旧的方式解析。

这个方法符合实际且简单有效。两年后,Mac版IE上首次运用,很快的其他浏览器制造商纷纷采用, 这就诞生了doctype嗅探(doctype sniffing或doctype switching)。浏览器通过它来决定其引擎应该采用标准模式、准标准模式还是怪癖模式,这将对HTML和CSS的解析、CSS布局及JavaScript脚本产生非常大的影响[5] 。毫无疑问,我们应该尽可能的采用标准模式。

HTML5虽然还处于草案中,但最新浏览器Firefox3.5、Chrome2、Safari4和IE8已经开始支持部分特性,特别是Google Wave的发布掀起了推进HTML5实践的新高潮。HTML5并不基于SGML也没有DTD,但它为了向前兼容,接受了doctype嗅探这个事实,定义了在text/html中doctype是唯一的模式转换声明,除此外没有什么用处。其doctype如此简洁:<!doctype html>[6]

值得一提的是IE8为了解决向前兼容采用了X-UA-Compatible声明[7],导致在IE8中浏览器的渲染模式不仅仅取决于doctype嗅探还取决于X-UA-Compatible声明,这个不仅仅导致了模式判断更加复杂[8],也违背了web设计的逐渐增强(progressive enhancement)思想[9]

在web标准的道路上,我们不仅需要充满现实主义向前兼容,更需要充满理想主义的向后兼容,这是保证我们的web能在未来正常工作的希望。在标准、简单和逐渐增强的思想下,现在我们页面的最佳方案或许是:

<!doctype html>
…
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
…

注释: