W3C

HTML5 Differences from HTML4(HTML4からのHTML5の差分)

W3C Working Group Note 9 December 2014

This Version:
http://www.w3.org/TR/2014/NOTE-html5-diff-20141209/
Latest Version:
http://www.w3.org/TR/html5-diff/
Participate:
File a bug (open bugs)
Version History:
https://github.com/whatwg/html-differences/commits
Previous Versions:
http://www.w3.org/TR/2014/WD-html5-diff-20140918/
http://www.w3.org/TR/2013/WD-html5-diff-20130528/
http://www.w3.org/TR/2012/WD-html5-diff-20121025/
http://www.w3.org/TR/2012/WD-html5-diff-20120329/
http://www.w3.org/TR/2011/WD-html5-diff-20110525/
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/
Editor:
Simon Pieters (Opera Software ASA) <simonp@opera.com>
Previous Editor:
Anne van Kesteren <annevk@annevk.nl>

概要

"HTML5 Differences from HTML4"(HTML4からのHTML5の差分)は、HTML4とHTML5仕様の違いについて説明します。

この文書の位置付け

この節は、公開時点におけるこの文書のステータスについて説明する。他の文書がこの文書に取って代わるかもしれない。現在のW3C発行物のリストとテクニカルレポートの最新版は、W3C technical reports index at http://www.w3.org/TR/で見つけることができる。

これは、HTMLアクティビティの一部であるHTMLワーキンググループによって製作された2014年12月9日のWorking Group Noteである。HTMLワーキンググループは、Working Group Noteとしてこの文書を発行することを意図する。コメントのための適切なフォーラムは、W3C Bugzillaである。(public-html-comments@w3.org公開アーカイブメーリングリストは、もはやコメントを追跡するために使用されない。)

W3C Working Group Noteとしての公開はW3Cメンバーによる支持を意味するものではない。この文書は草案であり、いつでも更新、他の文書による置き換えや廃止扱いにされうる。進行中の作業以外のものとしてこの文書を引用することは不適切である。

この文書は2004年2月6日のW3C特許ポリシーの下で活動するグループによって作成された。W3Cは、グループの成果物に関するあらゆる開示特許の公開リストを管理する。ここには、特許開示にあたっての指示も含まれている。特許について十分に知識のある人物が、仕様にEssential Claim(s)が認められると判断した場合は、W3C特許ポリシーの第6章に従い情報を開示する必要がある。

この文書は、2005年10月14日のW3Cプロセス文書によって管理される。

目次

1 はじめに

1.1 この文書の範囲

この文書は、W3C HTML5仕様を取り扱います。この文書は、W3C HTML5.1仕様、またはWHATWG HTML標準を取り扱いません。[HTML5] [HTML5NIGHTLY] [HTML]

1.2 HTMLの歴史

HTMLは1990年代はじめにインターネットに発表されてから、今日まで進化し続けてきました。ある機能は仕様で取り込まれ、またある機能はソフトウェアリリースで取り込まれました。いくつかの点で、実装とウェブ開発の慣習は仕様や標準に落ち着きましたが、一方で、まとまることはありませんでした。

HTML4は、1997年にW3C勧告になりました。HTML4はHTMLの多くの核となる機能の大まかな指針として役立ち続けていますが、ウェブコンテンツとともに、相互運用実装を構築するための十分で重要な情報を提供していません。同じことが、HTML4にXMLシリアライズとして定義するXHTML1や、HTMLとXHTMLの両方にJavaScript APIを定義するDOM Level 2 HTMLにも当てはまります。HTMLはこれらの文書を置き換えます。[DOM2HTML] [HTML4] [XHTML1]

HTML仕様は2004年に開始され、現代的なHTML実装とウェブコンテンツを研究する試みを反映しています。仕様は、

  1. HTMLと呼ばれる、HTML構文またはXML構文で記述される1つの言語仕様を定義します。

  2. 相互運用可能な実装を促すために、詳細な処理モデルを定義します。

  3. 文書のマークアップを改良します。

  4. ウェブアプリケーションのような、新しい表現に対してマークアップとAPIを取り入れます。

1.3 未解決の問題

HTML5仕様の"この文書の状態"の節を参照してください。

1.4 下位互換性

HTMLは、ユーザーエージェントがコンテンツを処理する方法について下位互換性のある方法で定義されています。ウェブ開発者に対して比較的単純な言語を維持するために、この文書の別の節で説明されるような、たとえばCSSを使用して処理するほうがよい表現に関する要素など、複数の古い要素と属性は含まれていません。

しかし、ユーザーエージェントは常に古い要素と属性をサポートする必要があります。これは、HTML仕様が明確にウェブ開発者(仕様では「著者」と呼ばれます)とユーザーエージェントに対する要件を切り離す理由です。たとえば、これはウェブ開発者がisindexplaintext要素を使用できないことを意味しますが、ユーザーエージェントは、どのようにこれら要素がウェブコンテンツの互換性のために振る舞う必要があるかについて互換性のある方法でそれら要素をサポートする必要があります。

HTMLはウェブ開発者とユーザーエージェントに個別の適合性要件を持っているので、機能を「非推奨」(deprecated)としてマークする必要がなくなりました。

2 構文

HTMLは、ウェブ上で公開されたHTML4やXHTML1文書とほぼ互換性のある「HTML構文」と呼ばれる構文を定義します。しかし、この構文は処理命令短縮マークアップなどの難解なSGML機能と互換性がありません。これはほとんどのユーザーエージェントでサポートされていないためです。HTML構文を使用する文書は、text/htmlメディアタイプで提供されています。

HTMLはまた、この構文に対して(「エラー処理」を含む)詳細な構文解析規則を定義しています。この構文は、HTML4時代の実装と大部分は互換性をもつものです。ユーザーエージェントは、text/htmlメディアタイプを持つリソースに対して、この規則を使用する必要があります。HTML構文に適合する文書の例は、次のようになります:

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

HTMLで使用できるもうひとつの構文はXMLです。この構文はXHTML1文書および、その実装と互換性をもちます。この構文を使用する文書は、(たとえばapplication/xhtml+xmlapplication/xmlのような)XMLメディアタイプで提供される必要があり、要素はXML仕様で定められた規則に従って、http://www.w3.org/1999/xhtml名前空間に置かれる必要があります。[XML] [XMLNS]

次の例は、HTMLのXML構文に適合する文書の例です。


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Example document</title>
  </head>
  <body>
    <p>Example paragraph</p>
  </body>
</html>

2.1 文字エンコーディング

HTML構文に対して、ウェブ開発者は文字エンコーディングを宣言する必要があります。次の3つの方法があります:

XML構文に対して、ウェブ開発者は文字エンコーディングを指定するためにXML仕様に記載された規則を使用する必要があります。

2.2 Doctype

HTML構文は、ブラウザーにページを標準モードで表示させるよう、DOCTYPEを必須としています。DOCTYPEは、それ以外の目的を持ちません。[DOCTYPE]

HTML構文に対するDOCTYPE宣言は<!DOCTYPE html>になります。これは大文字と小文字を区別しません。HTML言語はSGMLベースであり、DTDへの参照を必要としたので、HTMLの以前のバージョンからのDOCTYPEは長くなっていました。これはもはや問題ではなく、DOCTYPEはHTML構文で記述された文書に対して標準モードを有効にするためだけに必要とされています。ブラウザーはすでに<!DOCTYPE html>を標準モードのトリガーとして解釈しています。

推奨される短いDOCTYPEを生成できないレガシーなマークアップジェネレータをサポートするために、DOCTYPE <!DOCTYPE html SYSTEM "about:legacy-compat">がHTML構文で許可されます。

HTML構文で、HTML4.0、HTML4.01、XHTML1.0、XHTML1.1の厳密な(Strict)DOCTYPEも許可されています(しかし、お勧めしません)。

XML構文で、どのDOCTYPE宣言を使用してもよく、または完全に省略してもよいです。これは、XMLのメディアタイプをもつ文書は常に標準モードで表示されるためです。

2.3 MathMLとSVG

HTML構文は、文書内部でのMathMLやSVGの使用を許可します。mathsvg開始タグは、HTMLパーサーに適切な名前空間で要素と属性を置く特殊な挿入モードへ切り替えさせ、大文字と小文字が混在する要素と属性の文字を修正し、そしてXMLのように空要素構文をサポートします。構文は依然として大文字と小文字を区別しないで、属性はHTML要素の場合と同じ構文を許可します。名前空間宣言を省略してもよいです。CDATAセクションはこの挿入モードでサポートされます。

HTML要素や新しいmathsvg要素を使用できるようするために、たとえばmtextforeignObjectなど、一部のMathMLとSVG要素は、パーサーに「HTMLモード」へ切り替えをさせます。

たとえば、最低限の文法機能の一部を使用するとても単純な文書では、次のようになります:

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

2.4 雑則

触れておく価値のあるHTML構文におけるいくつかの変更点があります:

3 言語

より明確にHTML4との違いを説明するために、このセクションは複数のサブセクションに分かれています。

3.1 新しい要素

次の要素が、より良い構造のために導入されました:

他にも新しい要素があります:

input要素のtype属性には、以下の新しい値があります:

これらの新しい属性値は、たとえばカレンダーの日付選択やユーザーのアドレスブックとの統合のような、ユーザーインターフェイスをユーザーエージェントが提供し、定義済みのフォーマットでサーバーに送信できます。これらの属性によって、より少ない時間でサーバーに送信する前にユーザーの入力をチェックできます。これにより、ユーザーにより良いエクスペリエンスを提供します。

3.2 新しい属性

すでにHTML4の一部である要素に、複数の属性が導入されています:

HTML4由来の複数の属性は現在、すべての要素に適用されます。これはaccesskeyclassdiridlangstyletabindextitle属性であり、グローバル属性と呼ばれます。また、XHTML 1.0はxml:space属性はいくつかの要素にしか許可されませんでしたが、XHTML構文では現在すべての要素に許可されます。

新しいグローバル属性も複数あります:

HTMLはまた、フォームのoneventを含む、HTML4からすべてのイベントハンドラをグローバル属性にして、HTMLが新たに定義するイベント用の新規イベントハンドラ属性、たとえば、メディア要素(video要素とaudio要素)のためのAPIで使用されるplayイベント属性、onplayイベントハンドラ属性などを追加します。仕様は、すべてのイベントの索引を持ちます。

3.3 変更された要素

以下の要素は、HTMLで意味をわずかに変更しているものです。これはウェブの使われ方を反映したり、より有用にするため行われています:

3.4 変更された属性

複数の属性がさまざまに変更されています。

3.5 時代遅れの(Obsolete)要素

このセクションにある要素は、ウェブ開発者が使用するべきではないものです。ユーザーエージェントは、まだそれらをサポートする必要がありますし、HTMLにおける様々なセクションでは、どのように扱うかを定義します。たとえば、時代遅れのisindex要素はパーサーのセクションによって処理されます。

以下の要素の効果は純粋な表現に関するものであって、CSSによってより良い処理がされるため、以下の要素はHTMLに含みません。

以下の要素を使用すると、ユーザービリティーとアクセシビリティーを損なうため、HTMLに含まれません。

以下の要素は頻繁に使用されない、混乱を生じる、または要素の機能が他の要素で扱うことができるために含みません:

最後に、noscript要素はHTML構文でのみ適合します。XML構文で使用できません。これは、視覚的に隠すだけでなく、スクリプトを実行するコンテンツを防ぎ、スタイルシートを適用し、送信可能なフォームコントロールを持ち、リソースを読み込むためなど、HTMLパーサーは、プレーンテキストとしてnoscript要素の内容を解析しているためです。同じことは、XMLパーサーで不可能です。

3.6 時代遅れの(Obsolete)属性

HTML4由来のいくつかの属性は、もはやHTMLで許可されません。仕様は、ユーザーエージェントがレガシー文書でそれら属性を処理する方法を定義していますが、ウェブ開発者は、それら属性を使用する許可がされませんし、検証されません。

HTMLは、何が代わりに使用できるかについての助言をします

さらに、CSSによってより良い処理がされるため、HTMLはHTML4にあった表現を表す属性を一切持ちません。

以下の属性が許可されますが、ウェブ開発者はこれらの使用は勧められず、代わりに代替手段を使用することを強く勧めます。

4 コンテンツモデル

コンテンツモデルは、ある要素の子(または子孫)として許可されているもの―どのように要素を入れ子にできるかを定義するものです。

高レベルで、HTML4は要素の2つの主要なカテゴリ、「インライン」(spanimg、テキストなど)と「ブロックレベル」(divhrtableなど)を持っていました。一部の要素は、カテゴリーのどちらにも適合しません。

ある要素は「インライン」要素を許可し(たとえばpなど)、ある要素は「ブロックレベル」要素を許可し(たとえばbodyなど)、一部の要素はその両方を許可しました(たとえばdivなど)。その一方である要素はどちらのカテゴリーも許可しませんが、特定の要素のみを許可する(たとえばdltableなど)、またはどの子も許可しませんでした(たとえばlinkimghrなど)。

要素自身が特定のカテゴリーにあることと、特定のカテゴリーのコンテンツモデルを持つこととの違いに注意してください。たとえば、p要素は「ブロックレベル」要素そのものですが、「インライン」のコンテンツモデルを持っています。

コンテンツモデルをさらに混乱させるように、HTML4はStrict(厳格)、Transitional(移行)とFrameset(フレームセット)の種類があり、異なるコンテンツモデルのルールを持っていました。たとえば、Strictで、body要素は「ブロックレベル」の要素のみを持てましたが、Transitionalでは、「インライン」と「ブロックレベル」の両方を持てました。

依然として物事をさらに混乱させるように、CSSは、視覚整形モデルのための用語「ブロックレベル要素」と「インラインレベル要素」を使用します。これは、CSSの'display'プロパティに関係するもので、HTMLのコンテンツモデルのルールとは何の関係もありません。

CSSとの混乱を減らすために、HTMLはコンテンツモデルのルールの一部として用語「ブロックレベル」または「インライン」を使用しません。しかしながら、コンテンツモデルはHTML4より多くのカテゴリーを持ち、要素はそれらのいずれでもないか、いずれか、またはそれらの複数であってもよいです。

HTML4から一目でわかる変更点として、HTMLは、HTML4が「ブロックレベル」要素と呼ばれるもののみを受け入れる要素をもはや一切持ちません。たとえば、body要素は現在、フローコンテンツを許可します。したがって、これはHTML4 StrictよりむしろHTML4 Transitionalにより近いものです。

さらに変更点を含みます:

5 API

HTMLは、多くの新しいAPIを導入し、拡張し、いくつかの既存のAPIを変更または廃止しました。

5.1 新しいAPI

HTMLは、ウェブアプリケーションを製作する上で手助けとなる多数のAPIを提供します。これらのAPIは新しくアプリケーションに導入された要素と一緒に使用できます。

5.2 変更されたAPI

DOM Level 2 HTML由来の以下の機能は、さまざまに変更されています。

5.3 Documentへの拡張

DOMLevel 2 HTMLは、Documentから継承し、文書のHTML固有のメンバーを提供するHTMLDocumentインターフェイスを持っていました。HTMLは、Documentインターフェイスにこれらのメンバーを移動しており、多くの方法で拡張しました。すべての文書は、Documentインターフェイスを使用するので、HTML固有のメンバーは、すべての文書で使用可能です。その結果、たとえばSVG文書などでも同様に使用できます。また、複数の新しいメンバを持ちます:

window.HTMLDocumentは現在、Documentインターフェイスオブジェクトを返すので、HTMLDocumentのプロトタイプを変更した既存のスクリプトは、動作を継続する必要があります。

5.4 HTMLElementの拡張

HTMLElementインターフェイスもまた、HTMLで複数の拡張されています:

一部のメンバーは、以前はHTMLElementで定義されていましたが、DOM標準でElementインターフェイスに移動されます:[DOM]

5.5 他のインターフェイスへの拡張

DOM Level 2 HTMLのいくつかのインターフェイスが拡張されています。

さらに、ほとんどの新しいコンテンツもまた、要素のインターフェイスで対応するIDL属性を持ちます。たとえば、sizesコンテンツ属性を反映するHTMLLinkElementsizesIDL属性など。

5.6 旧式の(Obsolete)API

一部のAPIは現在、完全に削除されるか、旧式としてマークされるかのいずれかです。

すべてのIDL属性は、それ自身が旧式であるコンテンツ属性を反映し、現在もまた旧式です。たとえば、旧式のbgcolorコンテンツ属性を反映するHTMLBodyElement上のbgColorIDL属性は、現在旧式です。

要素が旧式であるので、次のインターフェイスは旧式とマークされます:HTMLAppletElementHTMLFrameSetElementHTMLFrameElementHTMLDirectoryElementおよびHTMLFontElement

HTMLパーサが他の要素にisindexタグを拡張しているためにHTMLIsIndexElementインターフェイスが完全に削除されます。要素は効果がありませんので、HTMLIsIndexElementインターフェイスと一緒に削除されます。要素が影響を持たないので、HTMLBaseFontElementインターフェイスも削除されます。

(現在Documentに移動した)HTMLDocumentインターフェイスの以下のメンバーは現在旧式です:anchorsおよびapplets

謝辞

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 O. Meiert, Jeremy Keith, Jukka K. Korpela, Jürgen Jeka, Krijn Hoetmer, Leif Halvard Silli, Maciej Stachowiak, Mallory van Achterberg, Marcos Caceres, Mark Pilgrim, Martijn Wargers, Martin Leese, Martyn Haigh, Masataka Yakura, Michael Smith, Mike Taylor, Ms2ger, Olivier Gendrin, Øistein E. Andersen, Philip Jägenstedt, Philip Taylor, Randy Peterman, Robin Berjon, Steve Faulkner, Toby Inkster, Xaxio Brandish, Yngve Spjeld Landro and Zhong Yu for their contributions to this document as well as to all the people who have contributed to HTML over the years for improving the Web!

参考文献

[CSSOM]
CSS Object Model (CSSOM), Simon Pieters and Glenn Adams. W3C.
[DOCTYPE]
Activating Browser Modes with Doctype, Henri Sivonen.
[DOM]
DOM, Anne van Kesteren, Aryeh Gregor and Ms2ger. WHATWG.
[DOM2HTML]
Document Object Model (DOM) Level 2 HTML Specification, Johnny Stenback, Philippe Le Hégaret and Arnaud Le Hors. W3C.
[HTML]
HTML, Ian Hickson. WHATWG.
[HTML4]
HTML 4.01 Specification, Dave Raggett, Arnaud Le Hors and Ian Jacobs. W3C.
[HTML5]
HTML5, Ian Hickson, Robin Berjon, Steve Faulkner, Travis Leithead et al.. W3C.
[HTML5NIGHTLY]
HTML 5.1 Nightly, Robin Berjon, Steve Faulkner, Travis Leithead et al.. W3C.
[XHTML1]
XHTML™ 1.1 - Module-based XHTML - Second Edition, Murray Altheim and Shane McCarron.
[XML]
Extensible Markup Language, Tim Bray, Jean Paoli, C. M. Sperberg-McQueen et al.. W3C.
[XMLNS]
Namespaces in XML, Tim Bray, Dave Hollander, Andrew Layman et al.. W3C.