HTML4,HTML5,XHTML 之间有什么区别?

我来从HTML的历史谈谈他们3者的区别。

在HTML的早期发展中,W3C成立之前,很多标准的制定都是在浏览器的开发者们互相讨论的情况下完成的,比如HTML 2.0, 3.2直到4.0, 4.01,这些标准大部分都是所谓的retro-spec,即先有实现后有标准。在这种情况下,HTML标准不是很规范,浏览器也对HTML页面中的错误相当宽容。这反过来又导致了HTML作者写出了大量的含有错误的HTML页面。据说,时至今日web上99%的页面都含有HTML错误。

W3C随后意识到了这个问题,并认为这是互联网的一个基础性问题,应该加以解决。为了规范HTML,W3C结合XML制定了XHTML 1.0标准,这个标准没有增加任何新的tag,只是按照XML的要求来规范HTML,并定义了一个新的MIME type,application/xhtml+xml。W3C的初衷是对这个MIME type浏览器要实行强错误检查,既如果页面有HTML错误,就要显示错误信息。但是由于已有的web页面中已经有了大量的错误,很多开发者拒绝使用新的MIME type。W3C不得已,在XHTML 1.0的标准之后加了一个附录C,允许开发者使用XHTML语法来写页面,同时使用旧的MIME type,application/html,来分发页面。这个旧的MIME type不会触发浏览器的强错误检查。这就是我们今天看到的情况,很多网站宣称自己遵守XHTML 1.0标准,那只不过是说,他的页面中用了XHTML语法,但并不能保证完全没有错误。要验证XHTML有没有真正起效,需要查看web服务器使用哪种MIME type来分发页面的。

W3C随后在XHTML 1.1中取消了附录C,即使用XHTML 1.1标准的页面必须用新的MIME type来分发。于是这个标准并没有很多人采用。这种情况同样发生在尚未完成的XHTML 2.0身上,它要求强错误检查,于是没有人采用。XHTML的故事也告诉我们,有时候先有标准再来实现,是行不通的。

当XHTML 1.0和XHTML 1.1取得比较大的成功时,W3C自信心爆棚,整个业界都认为W3C联盟战胜了IE,IE受到越来越多浏览器的挑战,如Chrome、Firefox、Webkit,终于,内容提供商开始倾向于提供非IE兼容的内容,IE浏览器的绝对市场垄断地位被打破了。人们都以为这是民众的胜利,标准的胜利,W3C的胜利。
同时,XML的成功也冲昏了W3C HTML工作小组的头脑,越来越多的协议选择XML作为底层接口。让我们全部都使用XML吧,W3C就这么愉快的决定了。但很显然的,W3C真是图样图森破。标准,永远是掌握在浏览器厂家手里的。事实上,IE的市场份额只是被WebKit核心蚕食了而已。市场标准只是从一个寡头手里到了另一个寡头手里。一意孤行的XHTML 2.0竟然大胆的与原先的HTML不再兼容,浏览器厂商终于怒了,Mozilla和苹果牵头,WHATWG小组成立。失去了厂商支持的W3C的XHTML2标准很快就成为了一个笑话。

有了XHTML的教训,WHAT Working Group和W3C在制定下一代HTML标准,也就是HTML5的时候,就将向后兼容作为了一个很重要的原则。HTML5确实引入了许多新的特性,但是它最重要的一个特性是,不会break已有的网页。你可以将任何已有的网页的第一行改成<!DOCTYPE html>,它就成也一个HTML5页面,并且可以照样在浏览器里正常的展示。

关于XHTML失势的原因其实很简单,因为网页开发比起学术与严谨性来说,更看重的是功能性与健壮性。
XHTML是学术派的w3c开发的,并未给HTML带来新功能,只是用XML来规范HTML,试图用XML来抹平HTML设计的一些缺陷(最重要的就是浏览器的不同解释——而导致浏览器解释不同的原因是HTML4并未规定对于不合法的HTML页面统一的容错体系,这导致了不同浏览器各自采用了自己的容错机制,间接导致了同一个页面在不同浏览器上的不同渲染),这对于网页设计师来说,除了自己以前写的一些不大规范的HTML页面无法工作外,不能带来任何正面意义(对于整个业界的正面意义倒是有——就是让HTML更加规范和严谨——不过显然这样的“意义”太过空泛而无法被大多数设计人员接受)。
HTML5则是直接由站在HTML应用第一线的网络公司(Google, Adobe)和浏览器厂商(Moz, Opera, Apple)开发的,比起规范限制,采用了更容易被接受的做法:对HTML的容错方法做出统一定义,这样无论是什么浏览器,只要根据标准实现容错方法,即使网页出现缺陷,其渲染结果也是完全一样的。换句话说,网页设计师在迁移到HTML5的时候,基本可以不做任何事情。以前即使存在一定缺陷的非标准网页也能正常而且同一地被渲染出来。在这之上,HTML5增加了非常多的应用特性,包括新tags, CSS3, 更多系统JS API等等,极大增强了网页app的功能,能被广泛接受和推广也是情理之中的事情。
说到这里再解释预测失误就很容易理解了,赞同XHTML的人是被HTML4标准缺陷深受其害,觉得业界会向一个更标准更完备的方向前进;然后HTML5不仅解决了标准缺陷的问题,还带来了更多更好的特性,当然就胜出了。

HTML4,HTML5,XHTML 之间有什么区别?

时间: 2024-10-16 20:38:06

HTML4,HTML5,XHTML 之间有什么区别?的相关文章

好程序员web前端分享HTML5与HTML之间有什么区别?

好程序员web前端分享HTML5与HTML之间有什么区别?很多没有学过HTML5大前端的同学,对HTML5并不了解,经常会提出疑问:HTML5与传统HTML有什么区别?今天,就为大家讲一下两者比较明显几个区别.首先,HTML5已经远远超越了标记语言的范畴,它的设计目的是在移动设备上支持多媒体,和HTML比起来,深度和广度上都做了进一步提升. 接着,我们来看一下两者的声明文件类型: HTML:1.<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN"

HTML4 和 HTML5 的10个关键区别

1. HTML5 标准还在制定中首先要注意的是,HTML5虽然现在很火,但是HTML5标准还在制定中,标准仍在改变.HTML4已经10多年了,不会有任何改变了. 2. 简化的语法HTML5简化了很多细微的语法,例如doctype的声明,你只需要写<!doctype html>就行了.HTML5与HTML5,XHTML1兼容,但是与SGML不兼容. 3. <canvas>标签替代FlashFlash给很多Web开发者带来了麻烦,要在网页上播放Flash需要一堆代码和插件.<ca

atitit.html5 vs 原生 app的区别与选择

atitit.html5  vs 原生 app的区别与选择 1. html5的优点 1 1.1. 最大优势::在跨平台(ios苹果,android安卓等) 1 1.2. 开放性 1 1.3. 快速的更新,热更新 2 1.4. 开发成本上 2 1.5. 碎片化 2 2. 原生app 应用的优点 2 2.1. 对游戏等要求性能的app更好 2 2.2. 原生应用最大的优势就是可以访问设备中的所有功能 2 2.3. 对摄像头.电话本,相机,游戏等操作支持的好,对语音,联系人和日历,也支持比较好. 2

php中mysql_fetch_row() 和mysql_fetch_array之间有什么区别

mysql_fetch_row是从结果集取出1行数组,作为枚举 mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得eg:$sql="select abc,def from a";$res=mysql_query($sql); 那么:$row=mysql_fetch_row($res);$row结果是两个:$row[0]和$row[1]那么:$row=mysql_fetch_array($res);$row结果是4个:$row[0].$row[1]

关系型数据库和非关系型数据库之间的那些区别(一)

说说关系型数据库和非关系型数据库之间的那些区别 第一弹 就拿现在最流行的两种数据库来说吧:mysql和mongodb(介于关系型和非关系型之间的一种产品,在这里面我们就当做非关系型数据库用来和mysql比较一下) 举个实际好理解的的例子:学生选课的系统(简化来说举出系统里面的两个:学生,课程) 首先说在mysql里面建立的模型是 学生表(student): S Sid name gender age address email college class 1 张三 女 19 a 111 外语 1

请查资料了解这些术语:/dev/hda, /dev/hdb, /dev/sda, /dev/sdb, 他们之间有什么区别?

1. 请查资料了解这些术语:/dev/hda, /dev/hdb, /dev/sda, /dev/sdb, 他们之间有什么区别? 答:hda一般是指IDE接口的硬盘,hda指第一块硬盘,hdb指第二块硬盘,等等:sda一般是指SATA接口的硬盘,sda指第一块硬盘,sdb指第二块硬盘,等等. 2. 为什么 du -b /etc/passwd  和 du -k  /etc/passwd  所得到的结果不一致呢?按道理讲1024b 等于 1k 阿铭的 /etc/passwd 为 1181b 而 使用

Exception和IOException之间的使用区别

Exception和IOException之间的使用区别 先看一段代码.这段代码来自<深入剖析tomcat>   1 public void await() { 2 // 创建ServerSocket对象 3 InetAddress add = null; 4 ServerSocket ss = null; 5 try { 6 add = InetAddress.getByName(LOCAL); 7 ss = new ServerSocket(port, blocklog, add); 8

各种 CD 和 DVD 光盘之间有什么区别

各种 CD 和 DVD 光盘之间有什么区别? 光盘 常规信息 容量 兼容性 CD-ROM 称为"只读"光盘,通常用于存储商业程序和数据.不能在 CD-ROM 上添加或删除信息. 650 MB 与大多数计算机和设备高度兼容. CD-R 可以多次将文件刻录到 CD-R(每次称为一个"会话"),但是无法从 Mastered 光盘中删除文件.每次刻录都是永久性的. 650 MB 700 MB 要在不同的计算机中读取该光盘,您必须先关闭会话.与大多数计算机和设备高度兼容. C

微信企业号、订阅号、服务号之间有什么区别和不同

微信企业号.订阅号.服务号之间有什么区别和不同 随着微信推出企业号后,很多人开始对微信公众平台的订阅号.服务号和企业号犯迷糊,搞不清楚这三个号的区别了: 订阅号: 面向人群: 面向媒体和个人提供一种信息传播方式. 消息显示方式: 折叠在订阅号目录中. 消息次数限制: 每天群发一条. 验证关注者身份: 任何微信用户扫码即可关注. 消息保密: 消息可转发.分享. 高级接口权限: 不支持 定制应用: 不支持,新增服务号需要重新关注. 服务号: 面向人群: 面向企业,政府或组织,用以对用户进行服务. 消