在正式介绍文档类型(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 滑动冲突

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 通过move事件的 拦截. 在滑动组件中,重写 在拦截触摸事件的时候  这个方法, 然后 ...

  2. tarjan算法讲解

    tarjan算法,一个关于 图的联通性的神奇算法.基于DFS算法,深度优先搜索一张有向图.!注意!是有向图.根据树,堆栈,打标记等种种神奇方法来完成剖析一个图的工作.而图的联通性,就是任督二脉通不通. ...

  3. hdu 1116 敌兵布阵(树状数组区间求和)

    题意: 给出一行数字,然后可以修改其中第i个数字,并且可以询问第i至第j个数字的和(i <= j). 输入: 首行输入一个t,表示共有t组数据. 接下来每行首行输入一个整数n,表示共有n个数字. ...

  4. [原创] 浅谈ETL系统架构如何测试?

    [原创] 浅谈ETL系统架构如何测试? 来新公司已入职3个月时间,由于公司所处于互联网基金行业,基金天然固有特点,基金业务复杂,基金数据信息众多,基金经理众多等,所以大家可想一下,基民要想赚钱真不容易 ...

  5. Java 线程第三版 第四章 Thread Notification 读书笔记

    一.等待与通知 public final void wait() throws InterruptedException      等待条件的发生. public final void wait(lo ...

  6. AN2820 Driving bipolar stepper motors using a medium-density STM32F103xx microcontroller

    AN2820 Driving bipolar stepper motors using a medium-density STM32F103xx microcontroller Introductio ...

  7. AE开发中关于 “无法嵌入互操作类型.........请改用适用的接口”问题的解决方法

    最近开始使用VS2010,在引用COM组件的时候,出现了“无法嵌入互操作类型……,请改用适用的接口”的错误提示. 查阅资料,找到解决方案,记录如下: 选中项目中引入的dll,鼠标右键,选择属性,把“嵌 ...

  8. [翻译] 10 个实用的 Git 高级命令

    1. 输出最后一次提交的改变 这个命令,我经常使用它 来发送其他没有使用 git 的人来检查或者集成所修改的.它会输出最近提交的修改内容到一个 zip 文件中. git archive -o ../u ...

  9. linux socket编程示例

    #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include &l ...

  10. AutoMapper在MVC中的运用01-配置、使用、单元测试、举例

    MVC中,如果想在Domain Model和View Model之间建立映射,用AutoMapper是一个不错的选择.不仅如此,AutoMapper能在不同对象之间建立映射,比如string与int类 ...