该版本已经废弃,请查阅新的版本《HTML5与HTML4 的差异

W3C

HTML5 相对于 HTML4 的差异

W3C 工作草案 2011年5月25日

当前版本:
http://www.w3.org/TR/2011/WD-html5-diff-20110525/
最新的发布版本:
http://www.w3.org/TR/html5-diff/
最新的编者草稿:
http://dev.w3.org/html5/html4-differences/
旧版本:
http://www.w3.org/TR/2011/WD-html5-diff-20110405/
http://www.w3.org/TR/2011/WD-html5-diff-20110113/
http://www.w3.org/TR/2010/WD-html5-diff-20101019/
http://www.w3.org/TR/2010/WD-html5-diff-20100624/
http://www.w3.org/TR/2010/WD-html5-diff-20100304/
http://www.w3.org/TR/2009/WD-html5-diff-20090825/
http://www.w3.org/TR/2009/WD-html5-diff-20090423/
http://www.w3.org/TR/2009/WD-html5-diff-20090212/
http://www.w3.org/TR/2008/WD-html5-diff-20080610/
http://www.w3.org/TR/2008/WD-html5-diff-20080122/
编者:
Anne van Kesteren (Opera Software ASA) <annevk@opera.com>
Simon Pieters (Opera Softwarebug database ASA) <simonp@opera.com>

摘要

HTML5定义了万维网核心语言——HTML的第五次主要修订,“HTML5 相对于 HTML4 的差异”描述了HTML4与HTML5之间的差异并提供了一些如此更改的理由。本文档可能不能提供仍在积极发展中的HTML5规范的准确信息。如有疑问,始终以HTML5规范本身为准。[HTML5]

本文档的状态

本节描述了本文档在其出版时的状态。其他文档也可能取代本文档。当前W3C发布列表以及本技术报告的最新修订可以在W3C技术报告索引里找到,网址是http://www.w3.org/TR/.

这是一份由HTML活动的一部分——HTML工作组产生的2011年5月25日的工作草案。工作组计划发布此文档作为随同HTML5规范的一份工作组笔记。征求意见的对应论坛是W3C Bugzilla。另外,提交评论到 public-html-comments@w3.org (subscribearchives)会安排评论转到bug数据库。

作为一个工作草案公布并不意味着W3C成员的认可。这是一个草案文件,并随时可能会被其他文档更新、取代或者废弃。在进程中的工作外引用此文档是不恰当的。

本文档是由一个小组根据2004年2月5日W3C专利政策操作并生成。W3C维护了一个用于小组的交付的专利披露的公开名单。该页还包括披露专利的说明。有专利的实际知识的个人,如果个人相信此专利包含必要的申明,必须按照W3C专利政策的第6条披露信息。

内容表

1. 简介

HTML自从90年代初被引入到互联网以来一直在不断发展。某些特性被规范引入;其他则被软件的发布引入。在某些方面,实现以及作者实践不仅相互融合,也与规范与标准融合,但在其他方面它们也不断地偏离。

HTML4在1997年成为W3C推荐标准。虽然它继续作为一个许多HTML的核心功能的粗略指南,但它并没有提供足够的用以构建相互操作的实现信息,更重要的是,也没有提供大量用以操作的部署内容的实现信息。定义了HTML4的XML序列化的XHTML1,以及为HTML和XHTML定义了JavaScript API的DOM Level 2 HTML也是同样的情况,HTML5将会取代这些文档。[DOM2HTML] [HTML4] [XHTML1]

HTML5的草案反映了自2004年开始的研究当代HTML实现及部署内容的努力。草案:

  1. 定义了一种单一的语言叫做HTML5,它可以用HTML或者XML的语法书写。
  2. 定义详细的处理模式,以促进互操作的实现。
  3. 为文档改进标记。
  4. 为新兴词语引入标记和API,如Web应用程序。

1.1. 尚未解决的问题

HTML5仍然是一个草案。 HTML5的内容,以及依赖于HTML5的本文档的内容,仍还在HTML工作组和WHATWG邮件列表的讨论中,尚未解决的问题与HTML5草案是联系在一起的。

1.2. 向后兼容

HTML5被以一种与用户代理(译注,通常指浏览器,但浏览器只是其中之一)处理部署内容的方式向后兼容的方式定义。为了对作者保持创作语言的相对简单,几个元素和属性不再被包含在内,它们会在文档的其他小节列出。比如表示样式的元素用CSS来处理会更好。

用户代理,当然,将会总是支持这些老的元素和属性,并且这就是为什么HTML5规范清楚地分离对作者和用户代理的要求的原因。例如,这意味着作者不能再使用 isindex 或者 plaintext 元素,但是用户代理为了兼容已被部署的内容,而被要求以兼容这些元素如何表现的方式支持它们。

因为HTML5已经分离了对作者和用户代理的一致性要求,所以不再需要用“废弃(deprecated)”去标记一个已过时的功能。

1.3. 发展模式

在至少有两个规范的完整实现之前,HTML5规范都不会被完成。一个测试套件将被用于测量实现的完整性。这种方法与以往版本的HTML不同,之前的做法是最终的规范会在被实际实现之前就由委员会例行地通过。这一变化的目标是确保规范被实现,并且对作者来说一旦它完成就是可用的。

2. 语法

HTML5定义了一种HTML语法,并兼容在web上已发布的HTML4和XHTML1文档,但不兼容更为深奥的HTML4的SGML特性,比如处理指令(processing instructions)和速记标记(shorthand markup),因为大多数用户代理都不支持这些。使用HTML语法的文件几乎总是带以 text/html 媒体类型服务。

HTML5也为这个很大程度上与流行实现相兼容的语法定义了详细的解析规则(包括“错误处理”),用户代理必须对有text/html媒体类型的资源使用这些规则。这里是一个符合HTML语法的范例文件:

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Example document</title>
  </head>
  <body>
    <p>Example paragraph</p>
  </body>
</html>

HTML5也为使用HTML语法的文件定义了一种text/html-sandboxed媒体类型。可以被用在服务不受信任的内容的时候。

另一种可以被用作HTML5的语法是XML。此语法与XHTML1的文件和实现相兼容。使用这种语法的文件需使用XML媒体类型,并且元素需被放进 http://www.w3.org/1999/xhtml 命名空间并遵循XML规范中规定的规则。[XML]

下面是一个符合HTML5的XML语法的范例文件:注意XML文件必须使用XML媒体类型,比如application/xhtml+xml或者application/xml

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Example document</title>
  </head>
  <body>
    <p>Example paragraph</p>
  </body>
</html>

2.1. 字符编码

对于HTML5的HTML语法,作者有三种设置字符编码的方法:

对于XML语法而言,作者必须使用XML规范中规定的规则来设置字符编码。

2.2. DOCTYPE

HTML5的HTML语法要求定义一个DOCTYPE来确保浏览器使用标准模式渲染页面。DOCTYPE没有其他目的,因此,对XML而言是可选的。带有XML媒体类型的文档总是被以标准模式处理。[DOCTYPE]

DOCTYPE申明是 <!DOCTYPE html> 并且在HTML语法中大小写不敏感。之前版本的HTML的DOCTYPE要更长,那是因为HTML语言基于SGML,因此需要一个DTD的引用。HTML5不再是如此并且需要DOCTYPE只是为了确保标准模式应用于使用HTML语法撰写的文档。浏览器已经为 <!DOCTYPE html> 做到了这一点。

2.3. MathML和SVG

HTML5的HTML语法允许在文档中使用MathML和SVG元素。例如,一个简单的使用一些最少的语法特性的文档看起来像这样:

<!doctype html>
<title>SVG in text/html</title>
<p>
 A green circle:
 <svg> <circle r="50" cx="50" cy="50" fill="green"/> </svg>
</p>

也有可能是更复杂的组合。比如使用SVG foreignObject 元素,你能够容纳MathML, HTML, 或者同时包含本身就在HTML中的SVG片段。

2.4. 杂项

还有一些其他语法的变化值得一提:

3. 语言

为了更清楚的说明HTML4和HTML5之前的各种不同,这部分被分割成几个小节。

3.1. 新元素

为了更好的结构化,引入下面这些元素

还有其他一些新的元素:

input元素的type属性现在有了下面的新值:

这些新类型的想法是,用户代理可以提供用户界面,比如一个日历日期选择器或用户的地址簿的整合,并提交一个确定的格式到服务器。这给了用户更好的体验,因为他的输入在发送到服务器前被检查,这意味着更少的等待反馈的时间。

3.2. 新属性

HTML5为已经是HTML4一部分的各种元素引入了几个新属性:

一些HTML4的属性现在被应用到所有的元素。这些属性被称为全局属性(global attributes): accesskey, class, dir, id, lang, style, tabindextitle。此外,XHTML 1.0 只在一些元素上允许 xml:space,现在它被允许用在XHTML文档所有的元素上。

也有一些新的全局属性:

HTML5也使得所有来自HTML4的事件处理属性(那些形如 onevent-name 的属性)变成全局属性,并为其定义的新的事件添加了几个新的时间处理属性。比如,媒体元素(videoaudio)API所使用的 play 事件。

3.3. 变更的元素

这些元素在HTML5里被略微修改了含义,这是为了更好的反应它们如何被使用在Web上或者让它们变得更有用:

3.4. 变更的属性

li 元素的 value 属性不再被废弃(即可用),因为它不是样式性的属性。ol 元素的 start 属性也是一样的情况。

aarea 元素的 target 属性不再被废弃,因为它在Web应用中很有用,比如,在配合 iframe 时。

如果脚本语言和样式语言分别是ECMAScript和CSS,那么 scriptstyletype 属性不再是必须的。

tableborder 属性只允许值为"1"以及空字符。

下面这些元素被允许使用,但是不鼓励作者使用它们,而是强烈鼓励使用替代的解决方案:

3.5. 不包含的元素

作者不该再使用这个小节里的元素。但用户代理将仍然支持它们,HTML5的几个小节定义了如何支持它们。比如,废弃的 isindex 元素由解析器部分处理。

下面的元素不在HTML5内,因为它们的纯粹是表象(样式)作用,CSS能更好的处理它们的功能。

下面的元素不在HTML5内,因为使用它们会破坏可用性和可访问性。

不包含下面的元素是因为它们甚少被使用,造成混淆,或者它们的功能能被其他元素处理。

最后,noscript 元素只符合HTML语法。XML语法不包括它,它的用法依赖于HTML解析器。

3.6. 不包含的属性

一些来自HTML4的属性在HTML5中不再被允许使用。规范定义了用户代理应该如何在遗留文档里处理它们,但是它们并不是有效的,作者不能再使用它们。

HTML5对你使用什么来代替它们有些建议

此外,HTML5没有一个HTML4中的表象(样式)属性,因为CSS能更好的处理它们的功能。

4. APIs

HTML5引入了若干API,来帮助创建Web应用。这些API可以和为了应用而被引入的新元素一起使用:

4.1. HTMLDocument扩展

HTML5在许多方面从DOM Level 2 HTML扩展了 HTMLDocument 接口。该接口现在在所有实现文档接口的对象上实现,使其在一个复合文档的上下文中保持有意义。 它也有一些值得注意的新成员:

4.2. HTMLElement扩展

HTMLElement 接口在HTML5里也获得了几个扩展:

5. HTML5 Changelogs

The changelogs in this section indicate what has been changed between publications of the HTML5 drafts. Rationale for changes can be found in the public-html@w3.org and whatwg@whatwg.org mailing list archives, and the WHATWG Weekly series of blog posts. More fundamental rationale is being collected on the WHATWG Rationale wiki page. Many editorial and minor technical changes are not included in these changelogs. Implementors are strongly encouraged to follow the development of the main specification on a frequent basis so they become aware of all changes that affect them early on.

The changes in the changelogs are in rough chronological order.

5.1. Changes since 5 April 2011

5.2. Changes from 13 January 2011 to 5 April 2011

5.3. Changes from 19 October 2010 to 13 January 2011

The getSelection() API moved to a separate DOM Range draft. Similarly UndoManager has been removed from the W3C copy of HTML5 for now as it is not ready yet.

5.4. Changes from 24 June 2010 to 19 October 2010

Per usual, lots of other minor fixes have been made as well.

5.5. Changes from 4 March 2010 to 24 June 2010

In addition lots of minor changes, clarifications, and fixes have been made to the document.

5.6. Changes from 25 August 2009 to 4 March 2010

A whole lot of other smaller issues have also been resolved. The above list summarizes what is thought to be of primary interest to authors.

In addition to all of the above, Microdata, the 2D context API for canvas, and Web Messaging (postMessage() API) have been split into their own drafts at the W3C (the WHATWG still publishes a version of HTML5 that includes them):

Specific microdata vocabularies are gone altogether in the W3C draft of HTML5 and are not published as a separate draft. The WHATWG draft of HTML5 still includes them.

5.7. Changes from 23 April 2009 to 25 August 2009

On top of this list quite a few minor clarifications, typos, issues specific to implementors, and other small problems have been resolved.

In addition, the following parts of HTML5 have been taken out and will likely be further developed at the IETF:

5.8. Changes from 12 February 2009 to 23 April 2009

In addition, several parts of HTML5 have been taken out and will be further developed by the Web Applications Working Group as standalone specifications:

5.9. Changes from 10 June 2008 to 12 February 2009

Web Forms 2.0, previously a standalone specification, has been fully integrated into HTML5 since last publication. The following changes were made to the forms chapter:

5.10. Changes from 22 January 2008 to 10 June 2008

Acknowledgments

The editors would like to thank Ben Millard, Bruce Lawson, Cameron McCormack, Charles McCathieNevile, Dan Connolly, David H?s?ther, Dennis German, Frank Ellermann, Frank Palinkas, Futomi Hatano, Gordon P. Hemsley, Henri Sivonen, James Graham, Jens Meiert, Jeremy Keith, Jürgen Jeka, Krijn Hoetmer, Leif Halvard Silli, Maciej Stachowiak, Marcos Caceres, Mark Pilgrim, Martijn Wargers, Martyn Haigh, Masataka Yakura, Michael Smith, Ms2ger, Olivier Gendrin, ?istein E. Andersen, Philip J?genstedt, Philip Taylor, Randy Peterman, Toby Inkster, and Yngve Spjeld Landro for their contributions to this document as well as to all the people who have contributed to HTML5 over the years for improving the Web!

References

[CSS-UI]
CSS3 Basic User Interface Module, T. ?elik. W3C.
[DOCTYPE]
Activating Browser Modes with Doctype, H. Sivonen.
[DOM2HTML]
Document Object Model (DOM) Level 2 HTML Specification, J. Stenback, P. Le Hégaret, A. Le Hors. W3C.
[HTML4]
HTML 4.01 Specification, D. Raggett, A. Le Hors, I. Jacobs, editors. W3C.
[HTML5]
HTML5, I. Hickson. W3C.
HTML5 (editor's draft), I. Hickson. WHATWG.
HTML5 (editor's draft), I. Hickson. W3C.
[PSL]
Public Suffix List, Mozilla Foundation.
[SELECTORS]
Selectors, D. Glazman, T. ?elik, I. Hickson. W3C.
[XHTML1]
XHTML? 1.1 - Module-based XHTML (Second Edition), S. McCarron, M. Ishikawa. W3C.
[XML]
Extensible Markup Language (XML) 1.0 (Fifth Edition), T. Bray, J. Paoli, C. Sperberg-McQueen, E. Maler, F. Yergeau. W3C.
Namespaces in XML 1.0 (Third Edition), T. Bray, D. Hollander, A. Layman, R. Tobin, H. S. Thompson. W3C.