html4,xhtml,html5发展历史
SGML
SGML 的例子如下:
<QUOTE TYPE="example"> typically something like <ITALICS>this</ITALICS> </QUOTE>
SGML 最为强大和古老,XML 是 SGML 的一个子集,HTML 最初也试图成为 SGML 的一个子集。
实际上 W3C 下与网页(超文本)相关的标准有两个系列:HTML 系列和 XHTML 系列。前者从 HTML 第一版一直发展到 HTML 4.x、HTML5,而 XHTML 系列从 XHTML 1.0、1.1、2.0 跳跃到 HTML5 的一部分:所谓的“XHTML5”。HTML 系列的工作重点在于丰富与超文本相关的功能、标记,提供较好的兼容性,更加面向“人”;而 XHTML 系列的工作重点在于将 HTML 改为更加符合 XML 严格规范的格式,更加面向“机器”。 XML 的语法很严格,是 W3C 的宝贝,所以 W3C 试图把各种东西都变成 XML 的子集或应用,比如 MathML,SVG 等。可是其地位逐渐受到其他一些轻量标记语言的威胁。
从IETF到W3C:HTML 4之路
HTML 1并不曾存在,HTML的第一个官方版本就是由IETF(互联网工程任务组)推出的HTML 2.0。问世之前,这个版本中的很多细则已经被实现,比如,1994年的Mosaic浏览器已经实现了在文档中嵌入图片的方法,后来HTML 2.0便吸纳了img这个标签。
后来,W3C取代IETF的角色,成为HTML的标准组织,1990年代的后半页,HTML的版本被频繁修改,直到1999年的HTML 4.01, 至此,HTML到达了它的第一个拐点。
XHTML1.0:XML风格的HTML
浏览器的兼容性问题,有很大一部分的原因是,html标签书写的不规范,导致了各自解释的不同。xhtml的出现,就是要以xml的规范来重新改写html。
HTML在HTML 4.01之后的第一个修订版本就是XHTML 1.0。
XHTML 1.0是基于HTML 4.01的,并没有引入任何新标签或属性,唯一的区别是语法,HTML对语法比较随便,而 XHTML则要求XML般的严格语法。
使用严格的语法规范并非坏事,要求开发者使用单一的代码风格,比如,HTML4.01允许你使用大写或小写字母标识标记元素和属性,XHTML则只 允许小写字母。XHTML1.0的推出刚好碰上了CSS的崛起,Web开发设计者们开始意识到Web标准问题,基于XHTML的严格语法规范被视为编写 HTML代码的最佳实践。
W3C推出XHTML 1.1
如果说XHTML 1.0是XML风格的HTML,XHTML 1.1则是货真价实的XML。这意味着XHTML 1.1无法使用 text/htmlmime-type直接输出,然而,如果Web开发者使用XMLmime-type,则当时的主流浏览器,IE则压根不支持。看上去,W3C似乎正在与当时的Web脱节。
从WebApps1.0到HTML 5
从一开始,WHATWG就和W3C走不同的路线,W3C对问题的讨论是集体投票,而WHATWG则由主笔IanHickson定度。表面上看,W3C更民主,然而事实上,各种内部纷争会使一些决议限于泥潭,在WHATWG,事情的进展会更容易,不过,主笔的权力并非无限大,他们的委员会可以 对那些过于偏执的主笔进行弹劾。
一开始,WHATWG的主要工作包括两部分,Web Forms 2.0和Web Apps 1.0,它们都是HTML的扩展,后来,他们合并到一起成为现在的HTML 5规范。在WHATWG致力于HTML 5的同时,W3C继续他们的XHTML 2.0,然而,他们慢慢地陷入困境。
2006年10月,Web之父Tim Berners-Lee发表了一篇博客文章,表示,从HTML走向XML的路是行不通的,几个月后,W3C组建了一个新的HTML工作组,他们非常明智地 选择了WHATWG的成果作为基础。这一转变带来一些困惑,W3C同时进行这两套规范,XHTML2和HTML 5(注意,W3C的HTTML5在5之前有个空格,而WHATWG的HTML 5则没有空格),而WHATWG也在进行着同样的工作。
XHTML已死:XHTML语法永存
这一混乱局面到了2009年开始变得清晰,W3C宣布终止XHTML2的工作,这是一份关于XHTML2的迟到的讣告。这一消息被那些XML的反对 者视为珍宝,他们借此嘲笑那些使用XHTML1规范的人,然而他们似乎忘记了,XHTML1和XHTML2是截然不同的东西。于此同时,XHTML1规范的制定者担心,XHTML1中的严格语法规范会被HTML 5弃用,这种担心后来证明是多余的,HTML 5既支持松散语法,也支持XHTML1般的严格语 法。
<!DOCTYPE>
文档类型通常会出现在文档的第一行,它不是 HTML 标签;它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令。
如果文档头的文档类型没有书写或者书写错误,浏览器都会采用兼容模式来解析。兼容模式会 兼容一些老的浏览器的标准。quirks mode(怪异模式)
在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,因为 HTML 4.01 基于 SGML。DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。
HTML5 不基于 SGML,所以不需要引用 DTD。
常用的 DOCTYPE 声明:
HTML 5:
<!DOCTYPE html>
HTML 4.01 Strict:
该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
HTML 4.01 Transitional
该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
HTML 4.01 Frameset
该 DTD 等同于 HTML 4.01 Transitional,但允许框架集内容。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0 Strict
该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 Transitional
该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Frameset
该 DTD 等同于 XHTML 1.0 Transitional,但允许框架集内容。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1
该 DTD 等同于 XHTML 1.0 Strict,但允许添加模型(例如提供对东亚语系的 ruby 支持)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
下面的表格列出了所有的 HTML5/HTML 4.01/XHTML 元素,以及它们会出现在什么文档类型 (DTD) 中:
| 标签 | HTML5 | HTML 4.01 / XHTML 1.0 | XHTML 1.1 | ||
|---|---|---|---|---|---|
| Transitional | Strict | Frameset | |||
| <a> | Yes | Yes | Yes | Yes | Yes |
| <abbr> | Yes | Yes | Yes | Yes | Yes |
| <acronym> | No | Yes | Yes | Yes | Yes |
| <address> | Yes | Yes | Yes | Yes | Yes |
| <applet> | No | Yes | No | Yes | No |
| <area> | Yes | Yes | Yes | Yes | No |
| <article> | Yes | No | No | No | No |
| <aside> | Yes | No | No | No | No |
| <audio> | Yes | No | No | No | No |
| <b> | Yes | Yes | Yes | Yes | Yes |
| <base> | Yes | Yes | Yes | Yes | Yes |
| <basefont> | No | Yes | No | Yes | No |
| <bdi> | Yes | No | No | No | No |
| <bdo> | Yes | Yes | Yes | Yes | No |
| <big> | No | Yes | Yes | Yes | Yes |
| <blockquote> | Yes | Yes | Yes | Yes | Yes |
| <body> | Yes | Yes | Yes | Yes | Yes |
| <br> | Yes | Yes | Yes | Yes | Yes |
| <button> | Yes | Yes | Yes | Yes | Yes |
| <canvas> | Yes | No | No | No | No |
| <caption> | Yes | Yes | Yes | Yes | Yes |
| <center> | No | Yes | No | Yes | No |
| <cite> | Yes | Yes | Yes | Yes | Yes |
| <code> | Yes | Yes | Yes | Yes | Yes |
| <col> | Yes | Yes | Yes | Yes | No |
| <colgroup> | Yes | Yes | Yes | Yes | No |
| <command> | Yes | No | No | No | No |
| <datalist> | Yes | No | No | No | No |
| <dd> | Yes | Yes | Yes | Yes | Yes |
| <del> | Yes | Yes | Yes | Yes | No |
| <details> | Yes | No | No | No | No |
| <dfn> | Yes | Yes | Yes | Yes | Yes |
| <dir> | No | Yes | No | Yes | No |
| <div> | Yes | Yes | Yes | Yes | Yes |
| <dl> | Yes | Yes | Yes | Yes | Yes |
| <dt> | Yes | Yes | Yes | Yes | Yes |
| <em> | Yes | Yes | Yes | Yes | Yes |
| <embed> | Yes | No | No | No | No |
| <fieldset> | Yes | Yes | Yes | Yes | Yes |
| <figcaption> | Yes | No | No | No | No |
| <figure> | Yes | No | No | No | No |
| <font> | No | Yes | No | Yes | No |
| <footer> | Yes | No | No | No | No |
| <form> | Yes | Yes | Yes | Yes | Yes |
| <frame> | No | No | No | Yes | No |
| <frameset> | No | No | No | Yes | No |
| <head> | Yes | Yes | Yes | Yes | Yes |
| <header> | Yes | No | No | No | No |
| <h1> to <h6> | Yes | Yes | Yes | Yes | Yes |
| <hr> | Yes | Yes | Yes | Yes | Yes |
| <html> | Yes | Yes | Yes | Yes | Yes |
| <i> | Yes | Yes | Yes | Yes | Yes |
| <iframe> | Yes | Yes | No | Yes | No |
| <img> | Yes | Yes | Yes | Yes | Yes |
| <input> | Yes | Yes | Yes | Yes | Yes |
| <ins> | Yes | Yes | Yes | Yes | No |
| <keygen> | Yes | No | No | No | No |
| <kbd> | Yes | Yes | Yes | Yes | Yes |
| <label> | Yes | Yes | Yes | Yes | Yes |
| <legend> | Yes | Yes | Yes | Yes | Yes |
| <li> | Yes | Yes | Yes | Yes | Yes |
| <link> | Yes | Yes | Yes | Yes | Yes |
| <map> | Yes | Yes | Yes | Yes | No |
| <mark> | Yes | No | No | No | No |
| <menu> | Yes | Yes | No | Yes | No |
| <meta> | Yes | Yes | Yes | Yes | Yes |
| <meter> | Yes | No | No | No | No |
| <nav> | Yes | No | No | No | No |
| <noframes> | No | Yes | No | Yes | No |
| <noscript> | Yes | Yes | Yes | Yes | Yes |
| <object> | Yes | Yes | Yes | Yes | Yes |
| <ol> | Yes | Yes | Yes | Yes | Yes |
| <optgroup> | Yes | Yes | Yes | Yes | Yes |
| <option> | Yes | Yes | Yes | Yes | Yes |
| <output> | Yes | No | No | No | No |
| <p> | Yes | Yes | Yes | Yes | Yes |
| <param> | Yes | Yes | Yes | Yes | Yes |
| <pre> | Yes | Yes | Yes | Yes | Yes |
| <progress> | Yes | No | No | No | No |
| <q> | Yes | Yes | Yes | Yes | Yes |
| <rp> | Yes | No | No | No | No |
| <rt> | Yes | No | No | No | No |
| <ruby> | Yes | No | No | No | No |
| <s> | Yes | Yes | No | Yes | No |
| <samp> | Yes | Yes | Yes | Yes | Yes |
| <script> | Yes | Yes | Yes | Yes | Yes |
| <section> | Yes | No | No | No | No |
| <select> | Yes | Yes | Yes | Yes | Yes |
| <small> | Yes | Yes | Yes | Yes | Yes |
| <source> | Yes | No | No | No | No |
| <span> | Yes | Yes | Yes | Yes | Yes |
| <strike> | No | Yes | No | Yes | No |
| <strong> | Yes | Yes | Yes | Yes | Yes |
| <style> | Yes | Yes | Yes | Yes | Yes |
| <sub> | Yes | Yes | Yes | Yes | Yes |
| <summary> | Yes | No | No | No | No |
| <sup> | Yes | Yes | Yes | Yes | Yes |
| <table> | Yes | Yes | Yes | Yes | Yes |
| <tbody> | Yes | Yes | Yes | Yes | No |
| <td> | Yes | Yes | Yes | Yes | Yes |
| <textarea> | Yes | Yes | Yes | Yes | Yes |
| <tfoot> | Yes | Yes | Yes | Yes | No |
| <th> | Yes | Yes | Yes | Yes | Yes |
| <thead> | Yes | Yes | Yes | Yes | No |
| <time> | Yes | No | No | No | No |
| <title> | Yes | Yes | Yes | Yes | Yes |
| <tr> | Yes | Yes | Yes | Yes | Yes |
| <track> | Yes | No | No | No | No |
| <tt> | No | Yes | Yes | Yes | Yes |
| <u> | No | Yes | No | Yes | No |
| <ul> | Yes | Yes | Yes | Yes | Yes |
| <var> | Yes | Yes | Yes | Yes | Yes |
| <video> | Yes | No | No | No | No |
| <wbr> | Yes | No | No | No | No |
html4,xhtml,html5发展历史的更多相关文章
- 2016/2/24 1,dotctype有几种? 2,了解html的发展历史
1,dotctype有几种?DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本. 其中的DTD(例如上例中的xhtml1-transition ...
- HTML发展历史
概述 HTML从1993到如今的发展,同时针对其以后的发展进行评测. HTML 语言作为网络语言标准规范,在计算机的发展史中有着不可或缺的地位.在HTML 上的成就也决定着一个时代的发展. 1.HTM ...
- Erlang cowboy 入门参考之现代Web的发展历史
Erlang cowboy 入门参考之现代Web发展史 原文: http://ninenines.eu/docs/en/cowboy/1.0/guide/modern_web/ 让我回顾一下web技术 ...
- Web开发技术发展历史
Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...
- JavaScript 、ECMAScript、commonJS 发展历史 与标准化发展
本文介绍下JavaScript和 ECMAScript的诞生及发展历史,以及标准化过程. 一.JavaScript诞生 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版. ...
- 【转载】Web开发技术发展历史-版本1
原文在这里. Web开发技术发展历史 Web的诞生 提到Web,不得不提一个词就是“互联网”.Web是World Wide Web的简称,中文译为万维网.“万维网”和我们经常说的“互联网”是两个联系极 ...
- CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系
CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...
- .net版本发展历史
最近装上了VS2013,发现好多新特性.新功能,公司办公还在使用VS2005.VS2008,不过用着也很顺手,在最新版Visual Studio中,微软加入了git源码管理工具,和之前的TFS大体上类 ...
- 软件项目发展历史<人月神话>这本书好
几乎是计算机软件开发的发展历史 人月神话,增加人手并不一定能提高开发速度. 原因在于,有些任务是无法分解的,存在先后顺序.无法同步进行. 增加人手,增加的是沟通成本,相互牵制.可以分解的任务就 ...
随机推荐
- 通什翡翠商城大站协议邮件群发系统日发20-30万封不打码不换ip不需发件箱100%进收件箱
用一种新的技术思维去群发邮件一种不用换IP,不需要任何发件箱的邮件群发方式一种不需要验证码,不需要**代码变量的邮件群发方式即使需要验证码也能全自动识别验证码的超级智能软件教你最核心的邮件群发思维和软 ...
- 在windows通过visual studio远程调试linux mono程序
本文参考文章 https://github.com/techl/MonoRemoteDebugger 1.通过连接https://github.com/techl/MonoRemoteDebugger ...
- ES5和ES6中的继承 图解
Javascript中的继承一直是个比较麻烦的问题,prototype.constructor.__proto__在构造函数,实例和原型之间有的 复杂的关系,不仔细捋下很难记得牢固.ES6中又新增了c ...
- 【转载】Spring MVC 整合 Freemarker
前言 1.为什么要使用Spring MVC呢? 2.为什么要使用Freemarker呢? 3.为什么不使用Struts2呢? 此示例出现的原因就是发现了struts2的性能太差,所以学习Spring ...
- 指令的Link函数和Scope
指令生成出的模板其实没有太多意义,除非它在特定的scope下编译.默认情况下,指令并不会创建新的子scope.更多的,它使用父scope.也就是说,如果指令存在于一个controller下,它就会使用 ...
- VMware下centos6.3minimal搭建网络环境
VMware提供3钟连接网络的方式,参看http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/03/15/1985084.html 先确定VMw ...
- XMLPuLL解析
1 package com.bawei.day14_xmlpull; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 i ...
- spring 笔记1: mvn 中Controller方法的参数不能是嵌套类(内部类)。
最近做spring开发,个人认为,Controller和客户端js通讯时传递的参数类 只使用某几个方法,为了减少对其他功能的影响,想把参数类定义为Controller类的 嵌套类(内部类).但是实践发 ...
- Comparable和Comparator的区别
Comparable Comparable可以认为是一个内比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较 ...
- 【GO】GO语言学习笔记一
a.为何学习GO语言? 从个人角度来看,第一是被GO语言传说中的那样超高的开发效率和运行效率所吸引:第二是GO语言在语言层面支持并发,这在现在的编程业务中是很方便的:第三是由于前两点,我觉得以后GO会 ...