HTML4との違い

HTML4との違い

[1] This is a Japanese translation of "Differences from HTML4", 10 May 2007 Revision, in WHATWG Wiki http://wiki.whatwg.org/index.php?title=Differences_from_HTML4&oldid=2258.

[2] これは WHATWG Wiki の記事の1つの和訳です。

本文

全体

HTML5 は、 HTML4 とは異なり、
文書とアプリケーションの両方を対象にしています。
ですので、 HTML4 よりも現在作られている Web
アプリケーションに適しています。
また、 HTML4 と実装がずれていた部分では、
HTML5 は実装に従っています。そのため、
HTML5 は実装可能で Web と互換性を持った言語となっています。
HTML5 は CSS の前方互換誤り処理に触発された詳細な処理モデルを定義しています。
これは各実装の相互運用性のため、
そして HTML を将来にわたって拡張可能にするために必要なことです。

HTML5 には DOM Level 2 HTML の改訂版も含まれていて、
各要素固有の API が言語の他の部分と共に定義されています。
言語はほとんど DOM に関して定義されているので、
XML serialization も簡単に得ることができます。
XML serialization は XHTML5 と呼ばれており、
基本的には XHTML1.x の改訂版です。

構文

HTML5 を書く
HTML5 は著者が従わなければならない構文規則を独自に規定しています。
HTML5 文書は XHTML のように見える書き方もできますが、
そうしたからといって、 HTML として構文解析したときと
XML として構文解析したときとで同じ結果が得られるとは限りません。

HTML5 を構文解析する
HTML5 は text/html の資源を構文解析する独自の規則を定義しています。
(「誤り訂正」の規則も含まれています。)
もう HTML が SGML 応用であるなどと嘘はつきません。

要素と属性
新しい要素
文書構造

    * article
    * aside
    * dialog
    * figure
    * footer
    * header
    * nav
    * section 

データ

    * audio
    * embed
    * m
    * meter
    * source
    * time
    * video 

アプリケーション

    * canvas
    * command
    * datagrid
    * details
    * datalist (Web Forms 2)
    * event-source
    * output (Web Forms 2)
    * progress 

さらに、 input 要素の type 属性にも新しい値が追加されています。

    * datetime
    * datetime-local
    * date
    * month
    * week
    * time
    * number
    * range
    * email
    * url 

新しい属性

HTML5 で新しい属性が追加された HTML4 の要素です。

要素	属性
a 	media?, ping
area 	ping
base 	target
button 	autofocus, form, replace, template
fieldset 	disabled, form
form 	data, replace
input 	autocomplete, autofocus, form, inputmode, list, min, max, pattern, step, replace, required, template
li 	value (非推奨ではなくなりました)
meta 	charset
ol 	start (非推奨ではなくなりました)
select 	autofocus, data, form
script 	async, defer
style 	scoped
textarea 	autofocus, form, inputmode, required

HTML4 にはすべての要素に適用される属性という概念がありませんでした。
HTML5 はそのような属性を大域属性と呼びます。
次の属性は HTML4 にもありましたが、 HTML5 では大域属性となっています。

    * class
    * dir
    * id
    * lang
    * title 

次の属性はまったく新しい大域属性です。

    * contenteditable
    * contextmenu
    * draggable
    * tabindex 

HTML5 には (名前空間を使って) 他の語彙の要素にも適用できる大域属性もあります。

    * repeat (Web Forms 2)
    * repeat-start (Web Forms 2)
    * repeat-min (Web Forms 2)
    * repeat-max (Web Forms 2) 

変更された要素

HTML5 は次の要素に HTML4 と非互換な新しい意味を与えています。
新しい意味は、その要素が Web でどう使われているかをより反映させたものか、
その要素に目的を与えて人々がそれを使い始められるようにしたものです。

a
href 属性のない a 要素は「リンクの場所 (placeholder)」を表します。
address
address 要素は新しい章節の概念により適用範囲が限定されるようになりました。
b
b 要素は、普通の文とは違った形で表現され、
それ以外には特に重要性を持たない部分、
例えば文書の概要中のキーワード、
評論文中の製品名、
その他普通印刷時に太字で表される文章の一部分を表すようになりました。
hr
hr 要素は段落レベルの話題の切れ目を表すようになりました。
i
i 要素は、別の声・気分など普通の文とは違って表現される部分、
例えば分類学的表示、専門用語、外来慣用句、
考え、船名、その他普通印刷時に斜体 (イタリック)
で表される文を表すようになりました。
用法は言語により様々です。
label
ラベルから制御子へと焦点を移動させることがブラウザが動作している環境の利用者界面の標準的な動作である場合を除き、
ブラウザはそのように焦点を移動させるべきではありません。
menu
menu 要素は本当のメニューで便利なように再定義されました。
small
small 要素は (傍注や法的表示のための) 小さい印刷を表すようになりました。
strong
strong 要素は強い強調ではなく重要性を表すようになりました。

削除された要素

次の要素は削除されました。著者はこれらの要素を使ってはいけなくなりました。
利用者エージェントは今後もこれらの要素に対応しなければなりません。
いずれ HTML5 のレンダリングの章でこれらの要素にどう対応しなければならないかが定義される予定です。
(例えば isindex は既に構文解析で対応済みです。)

    * acronym (代わりに abbr を使ってください)
    * applet (代わりに object を使ってください)
    * basefont
    * big
    * center
    * dir
    * font (WYSIWYG エディタで挿入することは認められています)
    * frame
    * frameset
    * isindex
    * noframes
    * noscript (XHTML5 でのみ削除されました)
    * s
    * strike
    * tt
    * u 

削除された属性

HTML4 に含まれていた要素の属性の一部は HTML5
では認められていません。

要素	属性
a 	rev, charset
area 	nohref
head 	profile
html 	version
link 	rev, target, charset
map 	name
meta 	scheme
object 	archive, standby
param 	valuetype
script 	charset
table 	summary
td, th 	headers, axis

また、 HTML4 にあった表現に関する属性は (<table> 関係の属性も) 
HTML5 には含まれません。
HTML5 に含まれない要素で定義されていた属性も (明らかに) HTML5
には含まれません。

API

HTML5 は Web アプリケーションの作成を助ける API
を数多く追加しています。新しい API
はアプリケーション用に導入された新しい要素と共に利用できます。

2次元描画 API は新しい canvas 要素と共に使えます
動画と音声を再生する API は新しい video 要素と audio 要素と共に使えます
持続ストレージ
オンライン・オフラインのイベント
編集 API と新しい大域属性 contenteditable
ドラッグ・ドロップ API と draggable 属性
ネットワーク API
履歴を扱う、戻るボタンが壊れないように頁を追加できたりする API
文書間メッセージ交換
サーバー送信イベントの聞き取り

文字符号化

文字符号化方式を meta 要素を使って宣言できますが、
meta 要素の構文は変更されています。 HTML 4.01 までは meta 要素は

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

のように使っていましたが、 HTML5 では不要なマークを取り除き、

<meta charset="UTF-8">

という構文となりました。
この構文はほとんどの既存のブラウザで実装されている符号化判定法と互換性があります。

HTML4 アルゴリズム

HTML 4.01 仕様書  5.2.2 節 文字符号化の指定より:

HTTP の Content-Type 欄の charset 引数
http-equiv が Content-Type に設定されており、 charset に値が設定されている META 宣言
外部資源を指定した要素に設定されている charset 属性

HTML5 アルゴリズム

ブラウザが従わなければならない、文字符号化を決定する正確なアルゴリズムは
HTML5 で規定されています。基本的なアルゴリズムは次の通りです。

転送層が符号化を指定していれば、それを使い、このアルゴリズムを終えます。 (例えば HTTP の Content-Type 欄。)
ファイルの最初の512バイトか、それより小さければできるだけ多くを読み込みます。
ファイルが UTF-8、UTF-16、UTF-32 の BOM で始まっていれば、それを使い、このアルゴリズムを終えます。
最初の512バイトから符号化を宣言している meta 要素を探す特別なアルゴリズムを使います。このアルゴリズムの探し方は比較的寛大ですが、通常の構文解析は使っていませんので、いくつかの制限があります。

License

[3] この記事の原文 (当時の版) に適用されるライセンス規定は次の通りです。 >>4

Copyright © 2006–2013 The WHATWG Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

[5] この記事は、 >>3 により利用できます。

メモ