W3C - HTML 5 differences from HTML 4 日本語訳

一部、直訳ではなく意訳した部分がございます。原文と表現が異なることがございますので、ご了承ください。この日本語訳は、私が理解を深めるために、自分なりに日本語化したものです。本日本語訳には、翻訳上の誤りがある可能性があります。したがって、内容について一切保証をするものではありません。正確さを求める場合には、必ず原文を参照してください。当方は、この文書によって利用者が被るいかなる損害の責任を負いません。もし誤りなどを見つけたら、当サイトのお問い合わせより連絡いただければ幸いです。

概要

HTML5が、これまで利用されてきたHTML4とどのような違いがあるのかを、分かりやすく解説したものです。HTML5では、どんな要素・属性がなぜ追加・変更・削除されたかが、一通り説明されています。

HTML5では、要素からプレゼンテーション的な意味を取り除き、さらに、HTML4では定義されていなかった語義を新規の要素として追加しています。プレゼンテーションはCSSに任せ、HTML要素に明確なセマンティクスを与えることで、タグスープを避けようとう考え方がはっきりと表れています。

なお、HTML5そのものがまだ策定中でどんどん変更・改良が行われていますので、このドキュメントも時とともに情報が古くなり、最新のHTML5を正確に表さなくなってしまう点にご注意ください。


要約

HTML5 はワールド・ワイド・ウェブの中核言語である HTML の第 5 番目のメジャー・リビジョンを規定するものです。"HTML 5 differences from HTML 4"は HTML4 と HTML5 との違いを説明し、変更の根拠を提示します。HTML5 の仕様はまだ策定中のため、本文書の情報は正確ではないかもしれません。疑わしい時は、HTML5 仕様を必ずチェックしてください。[HTML5]

本文書の状態

このセクションでは、発行時における本文書の状態を説明します。本文書は他の文書によって置き換えられるかもしれません。を現在のW3Cの発行と最新リビジョンの技術レポートの一覧は、http://www.w3.org/TR/ の W3C technical reports index でご覧いただけます。

本文書は、 HTML Activity の一部である HTML ワーキンググループが作成した 2011 年 5 月 25 日版の W3C 草案です。ワーキンググループは、本文書を HTML5 仕様に付随した Working Group Note として発行することを考えています。コメントがあれば、公開アーカイブ付きのメーリングリスト public-html-comments@w3.org までお願いします。

草案としての発行は、W3C 会員による承認を意味するものではありません。これは草案文書であり、変更されたり、他の文書に差し替えられたり廃止されるかもしれません。進行中の作業であることを前提とせずに本文書を引用するのは適切ではありません。

本文書は、 5 February 2004 W3C Patent Policy に基づき運営するグループによって作られました。W3C は、グループの成果物に関連して作られた public list of any patent disclosures を管理しています。そのページには、特許を開示する方法も掲載されています。自分の実知識に Essential Claim(s) が含まれるようであれば、W3C 特許ポリシーの第 6 章 に従って情報を開示しなければいけません。

目次

1. はじめに

HTML は、1990 年代はじめにインターネットに導入されてからどんどん進化してきました。仕様で導入された機能もあれば、ソフトウェアリリースで導入された機能もあります。実装がウェブ制作の現場でも使われるようになり、仕様と標準が近づいた面もありますが、離れてしまった面もあります。

HTML4 は 1997 年に W3C 勧告になりました。 HTML4 は多くの HTML の中核機能へのおおまかな指針として役立ち続けていますが、お互いに、そしてさらに重要なことに、広く使われているコンテンツの相互運用できる実装を構築するには十分な情報を提示しているとはいえません。XHTML1 や DOM Level 2 HTML についても同じことがいえます。XHTML1 は HTML4 の XML シリアライゼーションを規定し、DOM Lebel 2 HTML は HTML と XHTML 用の JavaScript API を規定していますが、HTML5は、これらの仕様に代わるものとなるでしょう。[DOM2HTML] [HTML4] [XHTML1]

最新の HTML 実装や、すでに広く使われているコンテンツの研究が 2004 年に開始されましたが、HTML5 草案は、その成果を反映しています。この草案は:

  1. HTML5 というひとつの言語を定義します。これは、HTML 構文と XML 構文で書くことができます。
  2. 相互運用可能な実装を促進するために、詳細な処理モデルを定義します。
  3. ドキュメントのマークアップを改善します。
  4. ウェブ・アプリケーションといった新興のイディオムに対応するマークアップと API を取り入れます。

1.1. 未解決の問題

HTML5 はまだ草案です。 HTML5 の内容は、HTML5 に依存している本文書の内容もしかりですが、今なお HTML Working Group と WHATWG のメーリングリストで議論されているところです。未解決の問題については、HTML5 草案からリンクされています。

1.2. 下位互換

HTML5は、すでに広く使われているコンテンツをユーザエージェントが取り扱う方法において下位互換性が保たれるように規定されています。オーサリング言語をコンテンツ製作者にとって比較的にシンプルに保つよう、いくつかの要素と属性は、本文書の他のセクションの説明の通り、含まれていません。例えば、CSS で扱った方が良いプレゼンテーショナルな要素です。

しかし、ユーザエージェントは、いつまでたってもこのような旧来の要素をサポートしなければいけないでしょう。そのため、この仕様では、ウェブ製作者とユーザエージェントそれぞれの要件をはっきりと区別しています。例えば、ウェブ製作者は isindexplaintext 要素を使うことはできないが、ユーザエージェントは、これらの要素の旧来の挙動の仕方と互換性を保つように、これらの要素をサポートしなければいけないことを意味します。

HTML5 は、ウェブ製作者とユーザエージェントの適合性要件を区別しているため、もう "非推奨(deprecated)" とマーキングする必要はないのです。

1.3. 開発モデル

HTML 5の仕様は、2 つ以上の完全な仕様実装が出てこないと、完了できないようになっています。実装の完成度を測るためには、テスト・スイートが使われます。これは、旧バージョンの HTML とは異なるアプローチです。旧バージョンでは、通常は、実際に実装される前に、委員会によって最終仕様が承認されていました。これは、完了した際には、確実にこの仕様がデザイナや開発者によって実装や利用が可能となることを目標とした変更です。

2. 構文

HTML5は、ウェブに掲載された HTML4 および XHTML1 ドキュメントと互換性がある HTML 構文を定義します。しかし、processing instructionsshorthand markup といった HTML4 の難解な SGML 機能との互換性はありません。これらの機能は、ほとんどのユーザーエージェントでサポートされていません。HTML 構文を使うドキュメントは、メディア・タイプを text/html としなければいけません。

HTML5は、 ポピュラーな実装と広く互換性があるこの構文に対して、詳細な構文解析規則("エラーハンドリング"も含みます)も規定しています。ユーザエージェントは、これらの text/html MIMEタイプを持ったリソースに対して、この規則を使わなければいけません。これは、HTML 構文に準拠したドキュメントの例です:

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>ドキュメントの例</title>
  </head>
  <body>
    <p>段落の例</p>
  </body>
</html>

HTML5 では、HTML 構文を使ったドキュメント用に text/html-sandboxed も定義しています。これは、信用できないコンテンツを組み込む場合に使うことができます。

HTML5では、このほかにも XML 構文を使うことができます。この構文は、XHTML1 の文書およびその実装と互換性があります。この構文を使ったドキュメントは、XML MIME タイプで提供する必要があります。また、すでに XML 仕様に記載されている規則に従って、要素を http://www.w3.org/1999/xhtml 名前空間に入れる必要があります。[XML]

下記の例は、HTML5 の XML 構文に準拠したドキュメントです。XML ドキュメントは、application/xhtml+xml または application/xml のような XML メディア・タイプを持たなければいけないことに注意してください。

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>ドキュメントの例</title>
  </head>
  <body>
    <p>段落の例</p>
  </body>
</html>

2.1. 文字エンコーディング

HTML5 でウェブ制作をする際、文字エンコーディングを指定する方法が3つ用意されています:

  • 転送段階で、例えば、HTTP Content-Type ヘッダを使う。
  • ファイルの先頭に Unicode Byte Order Mark (BOM) をセットする。この文字は、利用されているエンコードに対応した符号定数を提供するものです。
  • ファイルの 1024 バイト以内に、エンコーディングを特定する charset 属性を持った meta 要素を使う。例えば、<meta charset="UTF-8"> で、UTF-8 エンコーディングを指定することができます。これは、<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> に代わるものですが、どちらも認められています。

XML 構文では、XML 仕様に掲載された規則を使って、文字エンコーディングをセットしなければいけません。

2.2. DOCTYPE

HTML5 の HTML 構文は、確実にブラウザが標準モードでページをレンダリングするよう、DOCTYPE を必要とします。DOCTYPE は、それ以外の用途で使われることはないため、XML では必須ではありません。XML MIME タイプの文書は、常に標準モードで取り扱われます。 [DOCTYPE]

DOCTYPE 宣言は <!DOCTYPE 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>
 緑色の円:
 <svg> <circle r="50" cx="50" cy="50" fill="green"/> </svg>
</p>

もっと複雑な組み合わせも可能です。例えば、SVG フラグメントが HTML の中にあり、さらに、その SVG の foreignObject 要素を使って、MathML または HTML、またはその両方を、その SVG フラグメントの中にネストすることができるでしょう。

2.4. その他

言及すべき構文上の変更点が他にもいくつかあります:

  • HTML は IRI をネイティブでサポートしました。ただし、ドキュメントのエンコーディングが UTF-8 か UTF-16 でないと完全に使うことができません。
  • lang 属性は、まさに XML の xml:lang と同様に、妥当な言語識別子に加え、空の文字列とすることもできます。

3. 言語

このセクションでは、いくつかに区切って、HTML4 と HTML5 の間にある様々な違いをより分かりやすく解説します。

3.1. 新たな要素

構造を改善するために、次の要素が導入されました:

  • section は、一般的なドキュメント、または、アプリケーションのセクションを表します。h1, h2, h3, h4, h5, h6一緒に使うことで、ドキュメント構造を表すことができます。

  • article は、ブログエントリや新聞記事のような、ドキュメントの単独で成り立つコンテンツを表します。

  • aside は、そのページと関連性が薄いコンテンツを表します。

  • hgroup は、セクションのヘッダーを表します。

  • header は、前置きやナビゲーションの役割を担うグループを表します。

  • footer は、セクションのフッターを表し、ウェブ製作者、コピーライト情報などの情報を入れることができます。

  • nav は、その文書のナビゲーションに特化したセクションを表します。

  • figure は、自己完結するフロー・コンテンツを表します。通常は、その文書の本文から、ひとつの単位として参照されます。:

    <figure>
     <video src="ogg"></video>
     <figcaption>Example</figcaption>
    </figure>

    figcaption がキャプションに使えます(必須ではありません)。

そのほかにもいくつかの新しい要素があります:

  • videoaudio はマルチメディア・コンテンツ用です。いずれも、アプリケーション・コンテンツ製作者が自身のユーザ・インタフェースをスクリプトで作れるよう API を提供します。しかし、ユーザエージェントによって提供されるユーザ・インタフェースを起動する方法もあります。異なるタイプのストリームが複数利用可能であれば、これらの要素と一緒に source 要素を使います。

  • trackvideo 要素に対してテキスト・トラックを提供します。

  • embed はプラグイン・コンテンツに使います。

  • mark は、他の文脈での関連性に起因して、参照を目的として、ドキュメントの中の一連のテキストにマーク付けしたりハイライトしたりします。

  • progress は、タスクの完了度を表します。ダウンロードや、重い処理を実行する場合などに使います。

  • meter は、ディスク使用率のような計測結果を表します。

  • time は日時を表します。

  • ruby, rt, rp でルビ注記をマークアップできます。

  • bdi は、その前後のテキストにおける双方向テキスト書式制御から隔離したいテキストの範囲を表します。

  • wbr は改行の機会を表します。

  • canvas は、グラフやゲームなどのような、その場で動的なビット・マップグラフィックを描くために使います。

  • command は、ユーザが呼び出すことができるコマンドを表します。

  • details は、ユーザが要求に応じて得られる追加情報やコントロールを表します。summary 要素は、その概要や説明やキャプションを与えます。

  • datalist は、新たに追加された inputlist 属性と一緒に使うことで、コンボ・ボックスを作ることができます:

    <input list="browsers">
    <datalist id="browsers">
     <option value="Safari">
     <option value="Internet Explorer">
     <option value="Opera">
     <option value="Firefox">
    </datalist>
  • keygen は鍵ペア生成用のコントロールを表します。

  • output は、スクリプトを通して実行された計算結果のような出力を表します。

input 要素の type 属性には、次の値が加わりました:

これらの新しいタイプの狙いは、例えば、カレンダーから日付を選択したり、アドレス・ブックを統合したりして、サーバに所定のフォーマットで送信できるようなユーザー・インタフェースを提供するといった、ユーザー・インタフェースをユーザーエージェントが提供できるという点です。ユーザーの入力をサーバからのフィードバックを待たずにチェックすることができますので、ユーザーに、より良いエクスペリエンスを提供します。

3.2. 新たな属性

HTML5 は、すでに HTML4 に導入されている各種要素に、いくつか新たな属性を導入しました:

  • aarea 要素に、link 要素との整合性のため、 media 属性が加わりました。

  • area 要素にも、 alink 要素との整合性のため、hreflangrel 属性が加わりました。

  • base 要素にも target 属性を使うことができます。これは主に a 要素との整合性を取るためです(これはすでに広くサポートされています)。

  • meta 要素に charset 属性が加わりました。これはすでに広くサポートされておりますが、ドキュメントの文字エンコーディングを指定する良い方法を提供します。

  • 新たに加えられた autofocus 属性を、inputtype 属性が hidden の場合を除く)、selecttextareabutton 要素に指定することができます。この属性を使えば、ページのロード中にフォームコントロールにフォーカスを当てるための宣言的な方法を提供します。この機能を使えば、ユーザ・エクスペリエンスが向上するはずです。例えば、ユーザは嫌ならそれを無効にできます。

  • 新たに加えられた placeholder 属性は inputtextarea 要素で指定することができます。これは、ユーザーのデータ入力を助けるヒントを表します。

    <input type=email placeholder="a@b.com">
  • form 属性が、input, output, select, textarea, button, label, object, fieldset 要素用に新たに加わりました。この属性によって、コントロールをフォームと関連付けることができます。つまり、これらの要素を、ページのどこに配置しても良いのです。もう、form 要素に入れなくても良いのです。それでもなお、form 要素に関連づけられるのです。

    <label>Email:
     <input type=email form=foo name=email>
    </label>
    <form id=foo></form>
  • 新たに、required 属性が、input 要素(type 属性が hidden, image の場合や、submit のようなボタンの場合を除く)と selecttextarea 要素で使えるようになります。この属性によって、フォームを送信するためには値を入力しなければいけないことを示すことができます。select の場合、最初の option 要素が空の値を伴うプレースホルダーでなければいけません。

    <label>Color: <select name=color required>
     <option value="">Choose one
     <option>Red
     <option>Green
     <option>Blue
    </select></label>
  • fieldsetdisabled 属性が使えるようになりました。これを指定すれば、子孫となるすべてのコントロールを無効にすることができるようになります。そして、name 属性も使えるようになりました。これはスクリプトからのアクセスに使うことができます。

  • input 要素に、autocomplete, min, max, multiple, pattern, step 属性が加わりました。これらの属性では、入力の制約を指定することができます。前述のとおり、この要素には list 属性も加えられ、datalist 要素とともに使うことができます。type=image の場合は、widthheight 属性を使ってイメージの寸法を指定できるようになりました。

  • inputtextarea 要素に、dirname という属性が新たに追加されました。これによって、そのコントロールの書式方向が、ユーザーに指定されたものとして、一緒に送信されることになります。

  • textarea 要素に 2 つの新たな属性が加わりました。maxlengthwrap です。これらは、それぞれ、最大入力長と、送信時の行のラッピング挙動をコントロールします。

  • form 要素に novalidate 属性が加わりました。この属性を使えば、フォーム・バリデーション・サブミッションを無効にすることができます(つまり、そのフォームはいつでもサブミットできます)。

  • inputbutton 要素に formaction, formenctype, formmethod, formnovalidate, formtarget 属性が加わりました。それらの属性が存在すれば、form 要素の action, enctype, method, novalidate, target 属性より優先されます。

  • menu 要素に、typelabel の2つの属性が加わりました。これらの属性は、グローバルの contextmenu 属性と組み合わせることで、一般的なユーザー・インタフェースに見られるようなメニューになったり、コンテキスト・メニューを提供することができます。

  • style 要素に scoped 属性が加わりました。この属性は、スタイルシートの適用範囲を限定することができます。このような style 要素内にあるスタイルのルールはローカル・ツリーだけに適用されます。

  • script 要素に async と呼ばれる属性が加わりました。この属性は、スクリプトのロードと実行に作用します。

  • html 要素に manifest と呼ばれる属性が加わりました。この属性は、オフライン Web アプリケーション用の API と組み合わせて利用されるアプリケーション・キャッシュ・マニフェストを指し示します。

  • link 要素に sizes と呼ばれる属性が加わりました。この属性は、icon の関連性( rel 属性でセットされる)と組み合わせて使うことができ、参照アイコンのサイズを表します。そのため、異なるアイコンのサイズを指定することができるようになります。

  • ol 要素に reversed と呼ばれる属性が加わりました。この属性は、リストの順番が降順であることを表します。

  • iframe 要素に sandbox, seamless, srcdoc という 3 つの属性が加わりました。これらの属性は、ブログコメントのようなサンドボックス化したコンテンツを実現します。

HTML4 からあるいくつかの属性が、すべての要素に加えられました。このような属性をグローバル属性と呼びます。:accesskey, class, dir, id, lang, style, tabindex, title。加えて、XHTML 1.0 の一部の要素にのみに許可されていた xml:space です。これは、XHTML ドキュメントのすべての要素で使えるようになりました。

また新たに加えられたグローバル属性もいくつかあります:

  • contenteditable 属性は、該当の要素が編集可能な領域であることを指示します。ユーザは要素の内容を変更したり、マークアップを操作することができます。
  • contextmenu 属性は、コンテンツ製作者によって提供されるコンテキスト・メニューを指し示すために使われます。
  • data-* はコンテンツ制作者が定義する属性です。コンテンツ制作者は、data- から始まる名前にすれば、好きな属性を定義することができ、将来の HTML のバージョン機能との衝突を避けられます。これらの属性は、ユーザーエージェントが拡張機能として同じ名前の属性が使っていない限り、特に制約はありません。
  • draggabledropzone 属性は、新たに追加されたドラッグ&ドロップ API といっしょに使うことができます。
  • hidden 属性は、要素が、まだ関連性がない、または、もう関連性がないということを表します。
  • rolearia-* 属性は、支援テクノロジー向けに使うことができます。
  • spellcheck 属性は、コンテンツのスペルをチェックするかどうかを示すことができます。

HTML5 でも、HTML4 からある onevent-name という形式を取るすべてのイベント・ハンドラ属性を使うことができます。そして、新たに導入されたイベント向けに新たなイベント・ハンドラがいくつか加えられました。例えば、play イベントは、 videoaudio といったメディア要素向けの API で使われます。

3.3. 変更された要素

これらの要素は、ウェブ上での使われ方をよりよく反映するため、もしくは、さらに便利にするために、HTML5 上での意味が少しだけ変更されました:

  • href 属性がない a 要素は、 "プレースホルダー・リンク" を表わすことになります。つまり、本来なら、そこにはリンクがセットされるはずだったことを表します。これは、段落コンテンツに限定されているわけではなく、フロー・コンテンツも入れることができます。

  • address 要素は、新しく導入されたセクショニングという概念で適用範囲が限定されることになります。

  • b 要素は、特別な重要度を伝達はしないけれども、通常の文から文体的に区別したいテキストの範囲を表すことになります。例えば、文書の概要にあるキーワードや、レビューにある商品名や、一般的な印刷用表現で太字で表されるテキストの範囲です。

  • cite 要素は、これ単独で、作品のタイトルを表すようになりました(例:本、雑誌、エッセイ、詩、スコア、歌、台本、映画、テレビ番組、ゲーム、彫刻、絵画、演劇、芝居、オペラ、ミュージカル、展示会、訴訟事件報告など)。特に、HTML4 で使われていたような、人の名前をマークアップするといったことは、もう非準拠となります。

  • dl 要素は、名前と値のグループの関連リストを表すようになりました。もう会話に適していると言うことはできません。

  • head 要素にはもう object 要素を入れることができなくなりました。

  • hr 要素は、段落レベルのテーマの区切りを表すことになります。

  • i 要素は、声またはムードの中のテキストの範囲を表すことになります。そうでなければ、通常の文から区別したいテキストの範囲を表すようになります。例えば、分類上の意味、技術用語、別の言語ならではの言い回し、考え、船の名前、一般的な印刷表現がイタリック体となる文です。使い方は言語によって大きく異なります。

  • label 要素では、ブラウザは、そのプラットフォームのユーザー・インタフェース基準でない限り、そのラベルからコントロールにフォーカスを動かすべきではありません。

  • menu 要素は、ツールバーやコンテキスト・メニューに使えるよう再定義されました。

  • s 要素は、もう正確ではない、または、もう関係が無くなったコンテンツを表すようになりました。

  • small 要素は、細目(サイド・コメント、法文に使われる)を表すようになります。

  • strong 要素は、強調ではなく重要性を表すようになります。

  • u 要素は、はっきりしない曖昧な表現や、本来の名前とは違う名称などで、区別できるようにレンダリングしないと分かりにくいような表現のテキストの範囲を表します。たとえば、中国語のテキストにおける固有名詞や、間違ったスペルのテキストをラベル付けする時に使います。

3.4. 変更された属性

li 要素の value 属性は、プレゼンテーショナルではありませんので、廃止になることはありません。ol 要素の start 属性も同様です。

aarea 要素の target 属性はもう廃止ではありません。たとえば、iframe と組み合わせることで、ウェブ・アプリケーションにおいては有用だからです。

scriptstyletype 属性は、それぞれ、スクリプト言語が ECMAスクリプトで、スタイル言語が CSS なら、もう必須ではありません。

table 要素の border 属性には、"1" か空文字列しか指定することができません。

次の属性は認められますが、それらを使わずに代替の方法を使うことが強く推奨されます:

  • imgborder 属性。もし使うなら、その値は "0" でなければいけません。代わりに CSS を使うことができます。

  • scriptlanguage 属性。もし使うなら、その値は "JavaScript" (大文字・小文字は区別されません)でなければいけません。type 属性と不整合があってはいけません。これは全く役に立たない機能なので、単に省略することができます。

  • aname 属性。代わりに id 属性を使うことができます。

  • tablesummary 属性。HTML5 草案は、いくつかの代替の方法を定義しています。

  • img 要素などの widthheight 属性に、パーセンテージを入れることができないようになりました。

3.5. 削除された要素

ウェブ製作者は、このセクションの要素を使ってはいけません。しかし、ユーザエージェントは、これらの要素をサポートしなければいけないでしょうが、HTML5 の各種セクションでその方法を定義しています。例えば、廃止となった isindex 要素はパーサーのセクションで扱われています。

次の要素は HTML5 にはありません。なぜなら、それらの効果は純粋にプレゼンテーショナルなものであり、CSS で扱った方がよいからです:

  • basefont
  • big
  • center
  • font
  • strike
  • tt

次の要素は、HTML5 にはありません。なぜなら、それらの用途は、エンドユーザのユーザビリティとアクセシビリティに悪影響を及ぼすからです:

  • frame
  • frameset
  • noframes

次の要素は含まれておりません。なぜなら、それらはあまり使われておらず、混乱を招いており、他の要素で代用できるからです:

  • acronym は多くの混乱を招いたため含まれていません。ウェブ制作者は、略称には abbr を使うべきです。
  • applet は廃止され、object が推奨されました。
  • isindex の利用なら、フォームコントロールの利用に置き換えられます。
  • dir は廃止され、ul が推奨されました。

最後に、noscript は HTML 構文では準拠しています。その利用は HTML パーサに依存したものであるため、XML 構文には含まれておりません。

3.6. 削除された属性

HTML5 では、HTML4 からある属性のうち、いくつかがもう使えなくなりました。仕様では、古いドキュメントにあるそういった属性をブラウザーはどうやって扱うべきかについて規定していますが、ウェブ制作者は使ってはいけません。それらは妥当にならなくなります。

HTML5 では、代わりに何を使えば良いかについてアドバイスしています。

  • linkarevcharset 属性
  • ashapecoords 属性
  • imgiframelongdesc 属性
  • linktarget 属性
  • areanohref 属性
  • headprofile 属性
  • htmlversion 属性
  • imgname 属性(代わりに id を使う)
  • metascheme 属性
  • objectarchive, classid, codebase, codetype, declare, standby 属性
  • paramvaluetypetype 属性
  • tdthaxisabbr 属性
  • tdscope 属性
  • table 要素の summary 属性

さらに、HTML5では、HTML4 で規定されていたものの、CSS で扱った方がよいようなプレゼンテーショナルな属性は無くなりました:

  • caption, iframe, img, input, object, legend, table, hr, div, h1, h2, h3, h4, h5, h6, p, col, colgroup, tbody, td, tfoot, th, thead, tralign 属性
  • bodyalink, link, text, vlink 属性
  • bodybackground 属性
  • table, tr, td, th, bodybgcolor 属性
  • objectborder 属性
  • tablecellpaddingcellspacing 属性
  • col, colgroup, tbody, td, tfoot, th, thead, trcharcharoff 属性
  • brclear 属性
  • dl, menu, ol, ulcompact 属性
  • tableframe 属性
  • iframeframeborder 属性
  • tdthheight 属性
  • imgobjecthspacevspace 属性
  • iframemarginheightmarginwidth 属性
  • hrnoshade 属性
  • tdthnowrap 属性
  • tablerules 属性
  • iframescrolling 属性
  • hrsize 属性
  • li, ol, ultype 属性
  • col, colgroup, tbody, td, tfoot, th, thead, trvalign 属性
  • hr, table, td, th, col, colgroup, prewidth 属性

4. API

HTML5 では、ウェブ・アプリケーションを作成する際の助けとなるいくつかの API を導入しました。これらの API は、アプリケーション用に新たに導入された要素と一緒に使うことができます:

  • videoaudio 要素とともに使うビデオとオーディオを再生する API。
  • オフライン・ウェブ・アプリケーションを可能にする API。
  • ウェブ・アプリケーションを特定のプロトコルやメディアタイプ用に登録することができる API。
  • contenteditable グローバル属性と組み合わせて使うEditting API。
  • draggable 属性と組み合わせて使うドラッグ & ドロップ用の API。
  • 履歴を取り出し、back ボタンを壊すことがないよう、それにページを追加することができる API。

4.1. HTMLDocument の拡張

HTML5 は、さまざまな形で、DOM Level 2 HTML の HTMLDocument インタフェースを拡張しました。そのインタフェースは、Document インタフェースを実装するすべてのオブジェクトに組み込まれることになります。そのため、複合ドキュメントのコンテキストにおいて重要であることに変わりはありません。このインタフェースには、いくつか注目すべき新たな機能も加わりました:

  • getElementsByClassName() を使えば、class 名から要素を選択することができます。このメソッドは、class 属性がセットされたコンテンツ、および、SVG や MathML といった Document オブジェクトに対して機能するよう規定されます。

  • innerHTML は、HTML や XML ドキュメントを構文解析したりシリアル化する簡単な方法として利用できます。この属性は、以前は、ウェブ・ブラウザでは HTMLElement でのみ利用可能で、標準ではありませんでした。

  • activeElementhasFocus は、要素がいまフォーカスされているかを判定したり、個々に Document がフォーカスされたかを判定するために使います。

4.2. HTMLElement の拡張

HTML5では、HTMLElement インタフェースにもいくつかの拡張が加えられました:

  • getElementsByClassName() が追加されました。基本的に HTMLDocument にもある同メソッドの範囲限定バージョンです。

  • 今日のウェブ・ブラウザで使える innerHTML が追加されました。また、XML コンテキスト(XML ドキュメントで使われる場合)でも動作するよう定義されました。

  • classList は、className 用の便利なアクセサです。それが返すオブジェクトは、要素の class を操作するための contains(), add(), remove(), toggle() といったメソッドを提供します。 a, area, link 要素は、relList と呼ばれるよく似た属性を持ちますが、これは rel 属性に対して同じ機能を提供します。

5. HTML5 変更履歴

このセクションの変更履歴は、HTML5 草案の公開における変更点まとめたものです。変更の理由については public-html@w3.orgwhatwg@whatwg.org のメーリングリストアーカイブをご覧ください。This Week in HTML5 のブログ投稿にもある程度あります。より基本的な理由については、WHATWG Rationale wiki ページに集められています。多くの編集上の変更や小さなテクニカルな変更は、この変更履歴に含まれていません。つまり、実装者は、頻繁にメインの仕様の開発状況を追って、実装に影響を受ける変更点のすべてに気がつくようにすることが、強く推奨されます。

変更履歴の変更点は、このドキュメントを簡単に編集できるようにするため、大まかな年代順になっています。

5.1. 2011年4月5日版からの変更点

  • img, object, CSS などの javascript: スキームのサポートは廃止になりました。
  • canvastoBlob() メソッドが追加されました。
  • canvas 2d コンテキストの drawFocusRing() メソッドが、drawSystemFocusRing()drawCustomFocusRing() の 2 つに分離されました。
  • PropertyNodeListvalues 属性が、getValues() メソッドに置き換えられました。
  • select イベントが規定されました。
  • selectDirection IDL 属性が、inputtextarea に追加されました。
  • :enabled:disabled 疑似クラスは fieldset にも使えるようになりました。また、:indeterminate 疑似クラスは progress にも使えるようになりました。
  • getKind() メソッドが TrackList に追加されました。
  • MediaController API と mediagroup 属性がメディア要素の同期再生に追加されました。
  • ARIA のデフォルトがいくつか変更されました。そして、デフォルトに一致する ARIA 属性を指定してはいけなくなりました。
  • TrackListgetName() メソッドの名前が getLabel() に変更されました。
  • tableborder 属性が使えるようになりました。
  • u 要素が使えるようになりました。
  • tablesummary は、もう非準拠となりました。
  • videoaudio 属性が、論理属性である muted に変更されました。
  • Content-Language meta pragma はもう非準拠となりました。

5.2. 2011年1月13日版から2011年4月5日版までの変更点

  • pushState および replaceState の機能が、Firefox における実装のフィードバックに基づいて変更されました。また、history.state が導入されました。
  • メディア要素の tracks IDL 属性が textTracks に名前が変更されました。
  • イベント・ハンドラー・コンテンツ属性が、ECMAScript の strict モードをサポートするようになりました。
  • forminputformchange イベント、そして、dispatchFormInput()dispatchFormChange() メソッドが削除されました。
  • rel キーワードの archives, up, last, index, first、そして、それに関連した類似のキーワードが削除されました。
  • 同じスクリプトでメディア要素を DOM から削除し、再度、それを挿入しても、そのメディア要素を一時停止しないようになりました。
  • video のレターボックス規則が、CSS の 'object-fit' の観点から規定されました。
  • クロス・オリジンのフォントは、canvas に描画されるときは、そのフォントに関する情報を漏洩しないようになりました。
  • 文字エンコーディング宣言は、先頭から 512 バイト内に入れなければいけないという制限がありましたが、それが 1024 バイトまで許されるようになりました。
  • window オブジェクトの onerror イベント・ハンドラーは、ランタイム・エラーと同様に、コンパイル時のスクリプト・エラーに対して呼び出されるようになりました。
  • スクリプトから挿入された script 要素は、async がデフォルトでは true となりました。false をセットして、挿入順にスクリプトを実行させることも可能です。
  • atob()btoa() メソッドが規定されました。
  • アプリケーション・キャッシュ・マニフェスト・ファイルのファイル拡張子が、.manifest から .appcache に変更されました。
  • actionformaction 属性は、値に空文字列を許さないようになりました。

5.3. 2010年10月19日版から2011年1月13日版までの変更点

  • ドラッグ&ドロップのモデルが改良されました。
  • グローバル属性に dropzone 属性が追加されました。
  • bdi 要素が新たに追加されました。ユーザー生成コンテンツに bidi が含む可能性がある場合に役立ちます。
  • dir 属性の値として "auto" が追加されました。
  • dirname 属性が input 要素に追加されました。この属性が指定されると、ユーザーが指定した書式方向の情報もいっしょにサーバーに送信されます。

getSelection() API が DOM Range 草案に分離されました。また、UndoManager は、まだ出せる状態にないため、 差し当たり、HTML5 の W3C コピー版から削除されました。

5.4. 2010年6月24日版から2010年10月19日版までの変更点

  • 実装におけるフィードバックに基づいて、HTML 解析アルゴリズムに数多くの変更がありました。
  • hidden 属性がテーブル関連要素で使えるようになりました。
  • canvas getContext() メソッドが、複数のコンテキストをより扱いやすくできるように定義されました。
  • メディア要素の startTime 属性が initialTime に変更されました。そして、startOffsetTime が追加されました。
  • prefetch リンク・リレーションが a で使えるようになりました。
  • insdeldatetime 属性を使って時間を指定する必要がなくなりました。
  • form で HTTP メソッドとして PUT や DELETE の使うことは、もうサポートされなくなりました。
  • s 要素はもう非推奨ではありません。
  • video 要素に audio 属性が新たに追加されました。

いつものように、その他にも小さな修正も行われました。

5.5. 2010年3月4日版から2010年6月24日版までの変更点

  • iframe srcdoc ドキュメントや、電子メールを扱うようなケースなどタイトルがすでに取得可能なシナリオに対しては、title 要素は必須でなくなりました。
  • meta 要素の keywords が、標準メタデータ名になりました。
  • iframe 要素の sandbox 属性に、allow-top-navigation という値が追加されました。これが指定されると、組み込まれたコンテンツから、その親へナビゲートすることができるようになります。
  • wbr 要素が追加されました。
  • link 要素の rel 属性用の alternate キーワードが再びフィードを指し示すために使えるようになりました。そのフィードが、そのドキュメントの代替かどうかは問いません。
  • HTML から Atom へのマッピングが、HTML5 の W3C バージョンから削除されました。

さらに数多くのマイナーな変更や明確化や修正がなされました。

5.6. 2009年8月25日版から2010年3月4日版までの変更点

  • dialog 要素が削除されました。それに代わり、会話のマークアップ方法についてアドバイスするセクションが設けられました。
  • document.head が導入されました。スクリプトから head 要素に簡単にアクセスできるようになります。
  • リンク・タイプの feed が削除されました。代わりに、特定のメディア・タイプを伴った alternate が使われることになります。
  • createHTMLDocument() が導入されました。HTML ドキュメントを簡単に生成することができる API です。
  • meterprogress 要素のいずれからも、そのコンテンツのマジカルな処理が無くなりました。それは、国際的に対応できなかったからです。
  • meterprogress 要素が、output 要素と同様に、label 要素を使ってラベル付けできるようになりました。
  • text/html-sandboxed という新たなメディア・タイプが導入されました。有害となる可能性があるコンテンツを、害を受けることがないよう、組み込むことができるようになります。
  • iframe 要素に srcdoc 属性が導入されました。有害となる可能性があるコンテンツをインラインで組み込みことができるようになります。これは、sandboxseamless 属性と組み合わせて利用することを想定しています。
  • figure 要素には、legend ではなく、新たに導入された figcaption 要素を使うことになりました。これは、みんなが、W3C 勧告より早くから HTML5 を使えるようにしたかったからです。
  • details 要素には、まったく同じ理由で、新たに導入された summary 要素を使うことになりました。
  • メディア要素の autobuffer 属性が preload に変更されました。

他にも数多くのちょっとした問題が解決されました。 前述のリストは、ウェブ制作者に関心があると思われるものを要約したものです。

前述の項目に加え、Microdata、canvas の 2D context API、Web Messaging(postMessage() API)が、W3C で、それぞれ別々の草案に分割されました(WHATWG は、今でも、これらを含めた HTML5 のバージョンを公開しています):

microdata ボキャブラリーの仕様は、W3C の HTML5 草案においては、ひとつにまとめられ、分割された草案として公開されていません。WHATWG の HTML5 の草案は、今でも、それらを含んでいます。

5.7. 2009年4月23日版から2009年8月25日版までの変更点

  • time 要素が空のとき、ユーザーエージェントは時間を現地の習慣に合わせてレンダリングしなければいけない。
  • load イベントは Window で発出されることになった。しかし、そのターゲットは Document ではなくなった。
  • pushState()Referer(sic)ヘッダーに作用することとなった。
  • onundoonredoWindow 上のものとなった。
  • メディア要素は、現在のリソースがどこから開始するのかを表す startTime メンバーを持つこととなった。
  • headerhgroup に変更され、新たに header 要素が導入された。
  • createImageData()ImageData オブジェクトも引数に取るようになった。
  • createPattern()video 要素も引数として受け取ることができるようになった。
  • footer 要素は header の中に入れることができなくなった。そして、headeraddressfooter の中に入れることはできない。
  • 新たなコントロールが導入された: <input type="tel">
  • コマンドAPIがすべての要素で動作するようになった。
  • accesskey が適切に定義された。
  • sectionarticlecite 属性を取るようになった。
  • Microdata と呼ばれる新機能が導入され、HTMLドキュメントに独自データ構造を埋め込むことができるようになった。
  • Microdata モデルの3つの規定語彙の利用も加えられた:vCard, vEvent, ライセンシング向けモデル
  • ドラッグとドロップが Microdata モデルで動作するようアップデータとされた。
  • The last of the parsing quirks が定義された。
  • textLengthtextarea 要素のメンバーとして追加された。
  • rp 要素は、単一文字というよりフレージング・コンテンツを取るようになった。
  • location.reload() が定義された。
  • hashchange イベントが非同期に発出することとなった。
  • XPath 1.0 と XSLT 1.0 との互換性のための規則が追加された。
  • spellcheck DOM 属性が、DOMString にマッピングされることとなった。
  • hasFeature() サポートが最小限に縮小された。
  • Audio() コンストラクタが autobuffer 属性をセットすることとなった。
  • td 要素を thead に入れることができないようになった。
  • input 要素と DataTransfer オブジェクトは、files DOM 属性を持つこととなった。
  • datagridbb が、その設計において同意が得られなかったため、削除された。
  • キュー・レンジ API が、メディア要素から削除された。
  • WAI-ARIA のサポートが統合された。

このリストに加え、相当数の明確化不足、タイポ、実装固有の問題、その他、小さな問題が解決した。

さらに、HTML 5 から次の部分が取り出され、IETF で開発を進めることになった:

  • URL の定義
  • Content-Type スニッフィングの定義

5.8 2009年2月12日版から2009年4月23日版までの変更点

  • spellcheck と呼ばれるグローバル属性が新たに追加された。
  • グローバル・オブジェクトにおける ECMAScript の this は、Window オブジェクトではなく、WindowProxy オブジェクトを返すと定義された。
  • File Upload 状態にある input 要素の value DOM 属性が新たに定義された。
  • designMode の定義が旧来の実装にもっと沿うように変更された。
  • 2D 描画 API の drawImage() メソッドが、video 要素でも使えるようになった。
  • メディア要素がリソースをロードする方法が変更された。
  • document.domain が IPv6 互換となった。
  • video 要素に、ヒントとしての役割を担う autobuffer 論理属性が加えられた。
  • XML ドキュメントで charset 属性を伴った meta 要素を指定することができるようになった。ただし、その属性の値が、そのドキュメントのエンコーディングと一致する場合に限る。(これは値を指定するものではなく、単にお守りみたいなものに過ぎないことに注意すること)
  • メディア要素から、bufferingRatebufferingThrottled が削除された。
  • メディア要素リソース選択アルゴリズムが非同期となった。
  • postMessage() API は、MessagePort オブジェクト一つだけではなく、その配列を引数にとることとなった。
  • select 要素の add() メソッドと、select 要素の options が、オプショナルとなった。
  • inputbutton 要素の action, enctype, method, novalidate, target 属性が、formaction, formenctype, formmethod, formnovalidate, formtarget に命名変更された。
  • "ストレージ・ミューテックス" の概念に、別々のページからのストレージ・オブジェクト(document.cookielocalStorage)の同時変更の扱いが加えられた。Navigator に、明示的にリリースできる getStorageUpdates() メソッドが加えられた。
  • MathML に似た SVG 向けの構文が定義され、SVG を text/html リソースに入れることができるようになった。
  • placeholder 属性が textarea 要素に加えられた。
  • 鍵ペアー生成用に keygen 要素が追加された。
  • datagrid 要素が改訂され、API がさらに非同期となり、グリッドの未ロード部分を考慮するようになった。

さらに、HTML 5 からいくつかの部分が取り出され、単独の仕様として、Web Applications ワーキング・グループで開発が進められることとなった:

  • Web Sockets
  • Server-Sent Events
  • Web Storage (永続的ストレージとデータベース・ストレージ機能)

5.9 2008年6月10日版から2009年2月12日版までの変更点

  • ImageData オブジェクトの data メンバが、配列から CanvasPixelArray オブジェクトに変更された。
  • canvas 要素とそのAPIでシャドーが必須となった。
  • canvas のセキュリティ・モデルが明瞭になった。
  • 実装およびウェブ制作者のフィードバックに応えて、canvas の処理モデルにさまざまな変更が行われた。例えば、NaN や無限大が引き渡されたときに何が起こるのかが明確になり、arc() and arcTo() の定義がフィックスした。
  • XML での innerHTML に若干の変更が加えられ、ラウンド・トリッピングが改善した。
  • canvas 要素の toDataURL() メソッドで、メディアタイプの引数が image/jpeg のとき、品質レベルをセットできるようになった。
  • video 要素の poster 属性が、その固有の寸法に作用ようになった。
  • link 要素の type 属性のビヘイビアが明確化された。
  • 期待するタイプがイメージのとき、link 要素に対してスニッフィングが認められた。
  • URLに関するセクションが導入された。URLの値がどのように解釈されるべきか、そして、ウェブ制作者には正確に何が求められるのかについて扱う。仕様にあるURLを使うすべての機能が、この新しいURLのセクションを考慮に入れて、書き換えられた。
  • base 要素の href 属性が xml:base に依存しないという点が明確になった。
  • base URL が変わると、そのビヘイビアはどうあるべきかが定義された。
  • URL 分解 DOM 属性が、Internet Explorer とさらに協調することになった。
  • すべてのHTML要素で、値が http://www.w3.org/1999/xhtml となる xmlns 属性を使えるようになった。
  • embed 要素の data-* 属性と独自属性が、XML の Name 生成と一致しなければならず、コロンを入れることができなくなった。
  • サーバーとの双方向通信ができる Web Socket API が導入された。現在は、テキストメッセージに限定される。
  • メディア要素の volume のデフォルト値が、0.5から1.0になった。
  • event-sourceeventsource に命名変更された。ハイフンを使う要素が、HTMLでは他にないため。
  • postMessage()を加えたメッセージ・チャネル API が導入された。
  • bb という名前の新要素が追加された。この要素は、ユーザーが呼び出すことができるユーザーエージェントのコマンドを表す。
  • メディア要素の addCueRange() メソッドが、コールバックから取得可能な識別子を引数に取るよう変更された。
  • DOM を infoset に変化させる方法が定義された。
  • Window オブジェクトの parent 属性が定義された。
  • embed 要素が、 text/plain として Flash を配布するサーバーとの互換性のため、拡張スニッフィングをするよう定義された。(これは、仕様の中で、もっと良い方法ないかを見つけ出すため、課題としてマークされている)
  • embedsrc 属性なしで使えるようになった。
  • getElementsByClassName() が、CSS と整合性を取るため、quirks モードでは大文字・小文字を区別しないよう定義された。
  • HTML ドキュメントでは、もう localName は大文字でノード名を返さないようになった。
  • data-* 属性は常に小文字と定義された。
  • target="_blank"rel="noreferrer" となるリンクからページが開かれたときには、Window オブジェクトの opener 属性は存在するべきではないことになった。
  • Window オブジェクトの top 属性が定義された。
  • a 要素は、ネストしたフロー・コンテンツを認めることとなったが、ネストしたインタラクティブ・コンテンツは認められない。
  • header 要素がドキュメントやテーブルコンテンツにとってどんな意味を持つのかが定義された。
  • リソースをフェッチするとはどういう意味かが定義された。
  • canvas 要素ではパターンは必須となった。
  • autosubmit 属性が menu 要素から削除された。
  • outerHTMLinsertAdjacentHTML() のサポートが追加された。
  • xml:lang は、lang も同じ値で指定されれば、HTMLでも認められた。
  • Window オブジェクトの frameElement 属性が定義された。
  • イベント・ループとタスク・キューが、スクリプト実行とイベントについて詳細に定義された。すべての機能が、このメカニズムの観点からアップデートされた。
  • alt 属性が省略されたなら、title 属性が必須に、そして、該当の要素を包含するものとして、子孫に legend 要素を持つ figure 要素、もしくは、関連の見出しを持ったセクションが必須となった。
  • irrelevant 属性が hidden にリネームされた。
  • MathML の definitionURL 属性が厳密にサポートされることとなった。以前は、パース中にすべて小文字になってしまうようになっていた。
  • ユーザーエージェントは、互換性のため、US-ASCII を Windows-1252 として扱わなければいけない。
  • DOCTYPE 用の代替構文として、いくらかの XML ツールが認められた。
  • データ・テンプレートが削除された(datatemplate, rule, nest 要素で構成されていた)。
  • メディア要素に、ひとつだけ loop 属性がサポートされることとなった。
  • メディア要素の load() メソッドが非同期として再定義された。また、source 要素の type 属性を探すだけだったのが、順にファイルを実際に試してみるようになった。
  • canPlayType() と呼ばれる新メンバがメディア要素に追加された。
  • totalBytesbufferedBytes 属性がメディア要素から削除された。
  • Location オブジェクトに resolveURL() メソッドが加えられた。
  • q 要素が、再度、変更された。再び、引用符はユーザーエージェントから提供されることとなった。
  • ウェブサイトが求めるビヘイビアにもっと応えられるよう、HTMLパーサーのアルゴリズムに、さまざまな変更が加えられた。
  • unloadbeforeunload イベントが定義されることとなった。
  • 仕様の IDL ブロックが、来たる Web IDL 仕様に合うよう、修正された。
  • テーブル・ヘッダーはヘッダーを持つことができるようになった。ユーザーエージェントは、td 要素か th 要素を指し示す headers 属性をサポートすることが求められる。しかし、ウェブ制作者は、それらが th 要素しか指し示さないようにしなければいけない。
  • 関係者は、http-equiv に新規の値を登録できることとなった。
  • meta 要素が charset 属性を持つとき、それは最初の512バイト以内に現れないといけない。
  • StorageEvent オブジェクトに storageArea 属性が加えられることとなった。
  • SVG の foreignObject 要素の中で、HTML はどのように使われるべきかについて、定義された。
  • ノーティフィケーション API が落とされた。
  • どのようにしたら HTMLDocumentWindow オブジェクトの役に立つかについて、定義された。
  • Window オブジェクトに、ユーザーエージェントに関する情報を提供する locationbar, menubar, personalbar, scrollbars, statusbar, toolbar 属性が加えられた。
  • document.domain は Public Suffix List に依存することとなった。[PSL]
  • 非準拠のレンダリングのセクションが追加された。廃止となった要素と準拠要素の両方を扱うユーザーエージェント・レンダリング規則を説明する。
  • 非規定のセクションが追加された。Selectors や CSS ベーシック・ユーザーインタフェース・モジュールで定義されているようなセレクタが、HTML要素に一致する場合を定義している。[SELECTORS] [CSS-UI]

Web Forms 2.0 は、以前は単独の仕様だったが、最新の公開からは HTML5 に完全に統合された。forms の章では、次の点が変更された:

  • XML サブミッションのサポートが削除された。
  • フォーム・フィリングのサポートが削除された。
  • data 属性を使った selectdatalist 要素のフィリングのサポートが削除された。
  • フィールドの複数フォームと関連付けのサポートが削除された。しかし、form 属性を使えば、フィールドがフォームの中に入っていなくても関連づけができる。
  • dispatchFormInput()dispatchFormChange() メソッドが削除された。
  • 反復テンプレートが削除された。
  • inputmode 属性が削除された。
  • File Upload 状態にある input 要素は、minmax 属性をサポートしないこととなった。
  • File Upload 状態にある input 要素の allow 属性は、正式なものではなくなった。
  • textareapatternaccept 属性が削除された。
  • RFC 3106 は、明確にサポートしないこととなった。
  • submit() メソッドはサブミットするだけで、フォーム・コントロールが妥当かを見ないようになった。
  • Range 状態にある input 要素は、最小値ではなく、中間をデフォルトとすることとなった。
  • input 要素の size 属性は準拠となった(廃止ではない)。
  • object 要素がフォーム・サブミッションに加わることとなった。
  • input 要素の type 属性の値に colorsearch が加えられた。
  • input 要素に multiple 属性が加えられた。type 属性の値に応じて、複数の e-mail や複数のファイルを扱うことができるようになる。
  • input, button, form 要素に novalidate 属性が加えられた。該当のフォーム・フィールドはサブミッションにおいて妥当な値を持つことが要求されるべきではないことを指示することができるようになる。
  • label 要素が input を含んでいても、その label 要素がその input 要素を指し示さないのであれば、その label 要素に for 属性を使うことができる。
  • input 要素に indeterminate 属性が加えられた。
  • input 要素に placeholder 属性が加えられた。

5.10 2008年1月22日版から2008年6月10日版までの変更点

  • ping 属性に関する実装とオーサリングの詳細が変更された。
  • <meta http-equiv=content-type> が文字エンコーディングをセットする方法として準拠となった。
  • canvas 要素の API が整理された。テキストのサポートが追加された。
  • globalStorage が same-origin ポリシーに制限されることとなり、localStorage にリネームされた。関連のイベント発出が明確になった。
  • postMessage() API が変更された。URL ではなく、メッセージの origin だけにアクセス可能となった。ターゲットとなるドキュメントの origin を表す第2引数が必須となった。
  • Drag and drop API が明確になった。dataTransfer オブジェクトに、転送仕様としているデータのタイプを表す types 属性が加えられた。
  • m 要素は mark と呼ばれるようになった。
  • Server-sent events が変更され、明確化された。旧来の実装に支障がでないよう、新たなフォーマットを使う。
  • figure 要素にキャプションが必須でなくなった。
  • ol 要素に、新たに reversed 属性が加えられた。
  • 文字エンコーディング検知が、フィードバックに応えて、変更された。
  • HTML パーサーのセクションが、実装のフィードバックを受けて、いろいろ変更された。
  • 編集のセクションがいろいろ変更された。queryCommandEnabled() の追加や関連メソッドが含まれる。
  • headers 属性が td 要素に加えられた。
  • table 要素に、新たに createTBody() メソッドが加えられた。
  • MathML のサポートが、HTML パーサーのセクションに追加された。(SVG のサポートはまだ SVG WG 待ち)
  • ウェブ制作者が定義できる属性が追加された。ウェブ制作者は、data-name という形式で要素に属性を追加することができ、該当の要素の dataset[name] を使って、DOM を通してこれらにアクセスすることができる。
  • q 要素には引用符を入れなければならず、ブラウザは引用符をレンダリングしない、と変更された。
  • target 属性の値に _blank が加えられた。
  • showModalDialog API が追加された。
  • document.domain API が定義された。
  • source 要素に、新たに pixelratio 属性が加えられた。何かしらのエンコーディング・エラーがあるビデオに対して役に立つ。
  • bufferedBytes, totalBytes, bufferingThrottled DOM 属性が video 要素に追加された。
  • Progress Events のセクションと整合性を合わせるため、メディアの begin イベントが loadstart にリネームされた。
  • charset 属性が script に追加された。
  • iframe 要素に、サンドボックス機能を提供する sandboxseamless 属性が加えられた。
  • ruby, rt, rp 要素がルビ注記をサポートするために追加された。
  • showNotification() メソッドが、ユーザーへの通知メッセージを表示するために、追加された。
  • beforeprintafterprint イベントのサポートが追加された。

謝辞

The editor 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, Simon Pieters, 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!

リファレンス

[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 (editors' 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.