在正式介绍文档类型(DTD)和DOCTYPE之前,我们需要先了解HTML和XHTML的之间的区别,现在Html5已经慢慢的成为主流,之前的数十年一直都是Html4.01的天下,Html4.01于1999年成为标准后一直成为大多数人使用的Html版本。2000年的时候W3C发布了HTML4.01的XML版命名为XHTML1.0。Html4.01和XHTML1.0之间主要的区别就是遵守XML编码约定,标签闭合就是XML基础规范。XHTML1.1作为后来者更接近XML,但是跟XHTML1.0相比,XHTML1.0可以作为Html文档,XHTML1.1页面是作为XML发送给浏览器,即使XHTML1.1中只含有一个错误(未编码的&的符号),web浏览器无法显示页面,因为XHTML1.1不受欢迎。

Html5和XHTML2

Html是一种基于标准通用标记语言(SGML)的应用,XHTML则基于可扩展标记语言(XML),HTML和XHTML其实是平行发展的两个标准。本质上说,XHTML是一个过渡技术,结合了部分XML的强大功能及大多数HTML的简单特性。建立XHTML的目的就是实现HTML向XML的过渡。XML设计用来传送及携带数据信息,不用来表现或展示数据,HTML语言则用来表现数据。

XHTML只是在内容结构上改进原有的HTML系统,XHTML2.0也仅仅在XHTML1.1的基础上更加注重页面规范和可用性,缺乏交互性。在Web App大行其道的年代,XHTML2就不合时宜了,于是就催生了HTML5。W3C无视Web设计人员的需求,仅从理论角度闭门造车,却扛着标准的大旗,引发了来自Opera、Apple以及Mozilla等浏览器厂商的反对声音。2004年,他们组建了一个以推动网络HTML5标准为目的的组织——网页超文本技术工作小组(Web Hypertext Application Technology Working Group,缩写为WHATWG)。
 
Html5目标是取代HTML4.01和XHTML1.0标准,旨在提高网页性能,增加页面交互。Html5吸取了XHTML2一些建议,包括一些用来改善文档结构的功能,比如,新的HTML标签header、footer、dialog、aside、figure等的使用,将使内容创作者更加语义地创建文档,之前的开发者在这些场合是一律使用div的。
 
W3C与WHATWG双方经过多年努力,终于在2006年达成妥协。2006年10月,Web之父、万维网联盟(W3C)主席、美国国家科学院院士蒂姆·伯纳斯-李(Tim Berners-Lee)发表了一篇博客文章表示,从HTML走向XML的路是行不通的(XHTML is dead)。2009年W3C明智的放弃了改进XHTML2.0标准的计划,选择了WHATWG的成果作为基础。事实上,XHTML在2002年更新之后的数年时间里,尽管发现了众多问题,但都没有去修改过。W3C在2014年10月29日,Html5标准规范终于制定完成。

文档类型(DTD)和DOCTYPE

文档类型定义(Document Type Definition)是一套关于标记符的语法规则,定义了XML或者HTML的特定版本中允许有什么,不允许有什么,在渲染解析页面的时候浏览器会根据这些规则检查页面的有效性并且采取相应的措施。关于DOCTYPE的三种风格,严格(strict),过渡(transitional)和框架集(frameset)。<!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前。

Html4.01 和XHTML1.0:

strict模式:

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

过渡(transitional)模式:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

框架集(frameset):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

框架集(frameset)用的情况比较少,strict风格的 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font),过渡(transitional)风格的DTD仍然使用已经废弃的元素,但是Html5中就不需要这么复杂了,只有一个DOCTYPE:

<!DOCTYPE html>

浏览器厂商创建与标准兼容的浏览器时,他们希望确定向后兼容性,为了实现这一点他们创建两种呈现模式,标准模式和混杂模式(quirks mode),在标准模式中,浏览器根据规范呈现页面,在混杂模式中,页面以一种比较宽松的向后兼容的方式显示。Html4.01中的如果包含DTD的DOCTYPE都是以标准模式呈现,如果DOCTYPE不存在或者形式不正确会HTML和XHTML文档以混杂模式呈现。

Html-文档类型(DTD)和DOCTYPE的更多相关文章

  1. 文档类型DTD,DOCTYPE和浏览器模式

    出处:http://blog.csdn.net/freshlover/article/details/11616563 浏览器从服务端获取网页后会根据文档的DOCTYPE定义显示网页,如果文档正确定义 ...

  2. HTML文档类型DTD与浏览器怪异模式

    虽然在兼容IE6时候经常会注意到两个模式的区别,但是系统的理解起来,还没有认真总结过.看了一些网上的资料.结合自己的理解汇总了一下,放在这里备忘并分享给大家. 浏览器从服务端获取网页后会根据文档的DO ...

  3. Doctype文档类型、作用及触发方式

    Doctype文档类型 1)  该标签可声明三种 DTD 类型,分别表示严格版本.过渡版本以及基于框架的 HTML 文档. 2)  HTML 4.01 规定了三种文档类型:Strict.Transit ...

  4. DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义

    DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义 今天看到一篇CSS应用的一个友好搜索,我按网页上的代码复制.粘贴后预览时总达不到效果,而直接拷贝他的实例却能达到效果, ...

  5. doctype(文档类型)的作用是什么?转载

    <!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前.此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范. Document Type ...

  6. 有效的XML: DTD(文档类型定义)介绍(转)

    文档类型定义和命名空间 有效(Valid)的XML文档: 首先,XML文档是个格式正规的(Well-formed)XML文档:(见格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节). ...

  7. !DOCTYPE html文档类型声明简写 HTML5 DOCTYPE缩写

    html5之!DOCTYPE html文档类型声明简写,在HTML5中DOCTYPE简写非常重要. 一.概述   -   TOP 让CSS样式表生效,DOCTYPE声明是必须的,以前TABLE布局的网 ...

  8. HTML DOCTYPE文档类型举例说明

    HTML DOCTYPE文档类型举例说明 HTML4.01文档过渡定义类型,此类型定义的文档可以使用HTML中的标签与元素包括一些不被W3C推荐的标签(例如:font.b等),不可以使用框架 < ...

  9. Doctype 文档类型,标准模式,混杂模式

    HTML4.01和XHTML1.0 基于 SGML,支持DTD声明,HTML5不是,但是需要 doctype 来规范浏览器的行为. 标准模式是指,DTD声明定义了标准文档的类型后,浏览器按W3C标准解 ...

随机推荐

  1. android activity 启动模式

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 1,标准的, 2,单个 顶部 3,单个 任务 4,单个 实例 标准的 就是 每启动一次这 ...

  2. BZOJ3956: Count

    Description   Input   Output   Sample Input 3 2 0 2 1 2 1 1 1 3 Sample Output 0 3 HINT M,N<=3*10^ ...

  3. 【转载】vc编译exe的体积最小优化

    原文地址:http://www.2cto.com/kf/200908/40970.html vc通过设置参数来自定义编译方式.主要用到的技巧有: 一,使用release版而不用debug版编译 使用d ...

  4. Xtreme8.0 - Kabloom 动态规划

    Xtreme8.0 - Kabloom 题目连接: https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/kablo ...

  5. Linux学习笔记02—磁盘分区

    下面介绍四种最常见的分区方式: (1)    最简单的分区方案. SWAP分区:即交换分区,建议大小是物理内存的1-2倍. /分区:建议大小在6GB以上. 使用以上的分区方案,所有的数据都在/分区上, ...

  6. CentOS 7下使用chkconfig添加的服务无法使用/etc/profile里面的环境变量

    经过分析/etc/profile为入口的,基本是登录后执行的变量,而使用chkconfig添加的服务多变以守护经常运行,没有登录. CentOS 7下使用chkconfig添加的服务无法使用/etc/ ...

  7. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札(一 ...

  8. 移植Python3到TQ2440(二)

    接着前一篇博文. 在上一篇博文中我们用NFS挂载根文件系统的方式启动了系统,接下来我们把移植了Python3的根文件系统固化到NandFlash中,但是由于linux-4.9目前不支持Yaffs2文件 ...

  9. Android Service总结03 之被启动的服务 -- Started Service

    Android Service总结03 之被启动的服务 -- Started Service 版本 版本说明 发布时间 发布人 V1.0 添加了Service的介绍和示例 2013-03-17 Sky ...

  10. C#编程(三十八)----------运算符

    原文链接: http://blog.csdn.net/shanyongxu/article/details/46877353 运算符 类别 运算符 算术运算符 + - * / 逻辑运算符 &  ...