zoukankan      html  css  js  c++  java
  • html4,xhtml,html5发展历史

    SGML

    SGML 是一种很强大但很复杂的标记语言,HTML、XML 就是从中衍生出来的。
    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) 中:

    标签HTML5HTML 4.01 / XHTML 1.0XHTML 1.1
    TransitionalStrictFrameset
    <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
  • 相关阅读:
    两句话的区别在于目录的不同。
    关于系统的操作全在这里了。这个看起来很重要。
    屏幕坐标的方法
    改变轴心的操作。
    关于旋转的变换处理方法。
    对其位置
    点边同事移除的办法处理。
    移动的坐标变换
    判断文件是否存在的函数。
    把节点归零处理
  • 原文地址:https://www.cnblogs.com/btgyoyo/p/6218506.html
Copyright © 2011-2022 走看看