HTML5
HTML5(エイチティーエムエル・ファイブ)は、World Wide Web Consortium(W3C)がかつて策定していたHyperText Markup Languageの5回目に当たる大幅な改定版であり、2021年1月28日に廃止された。 現在はHTML Living Standardによって置き換えられている[1]。
![]() | |
![]() Hyper Text Markup Language version5でのコード記述の例 | |
拡張子 | (HTML) .html .htm (XML構文) .xhtml .xht .xml |
---|---|
MIMEタイプ | (HTML) text/html (XML構文) application/xhtml+xml application/xml |
タイプコード | TEXT Hyper Text Markup Language |
UTI | public.html |
開発者 | World Wide Web Consortium, WHATWG |
種別 | マークアップ言語 |
概要
編集audio
要素・video
要素・canvas
要素への対応が優先して行われた。またWebSocketなど、当初HTML5の一部とされていたものの切り離され別の規格として策定作業が進められているものがある。
広義のHTML5
編集audio
要素、video
要素
●3D、グラフィックス、エフェクト - SVG、canvas
要素、WebGL、CSS3 3D
●パフォーマンスと統合 - Web Worker、XMLHttpRequest Level 2
●CSS3 - Webフォントも含む
W3C
編集規格 | 初版草案[注 1] | 最終草案[注 2] | 勧告候補[注 3] | 勧告案[注 4] | 勧告[注 5] |
---|---|---|---|---|---|
HTML 5.0 | 2008年1月22日 | 2011年5月25日 | 2014年6月17日[注 6] | 2014年9月16日 | 2014年10月28日 |
HTML 5.1 | 2012年12月17日 | 2016年6月2日[注 7] | 2016年6月21日 | 2016年9月15日 | 2016年11月1日 |
HTML 5.1 2nd Edition | 2016年11月1日[注 8] | 2017年6月20日 | 2017年8月3日 | 2017年10月3日 | |
HTML 5.2 | 2016年8月18日 | 2017年7月18日[注 7] | 2017年8月8日 | 2017年11月02日 | 2017年12月14日[10] |
HTML 5.3 | 2017年12月14日[11][12][13] |
HTML Living Standard
編集技術仕様
編集エンコーディング
編集meta
要素におけるcharset
属性で指定する。これとHTTPレスポンスヘッダーのcontent-type
でエンコード宣言が省略された場合はUTF-8が既定となる。またcharset
属性を含めたmeta
要素は文章先頭から1024バイト以内に記載する必要がある[21]。
文書の構造
編集従来のHTMLやXHTML規格は、仕様に書かれた文書構造のルールだけではなく、妥当性検証のためのDTD(およびそのほかのスキーマ)を提供していた。一方、HTML5仕様ではスキーマは提供されない。文書構造のために提供されるのはHTML5仕様に列挙されている各種ルールのみである。
従来のHTMLとの文法の差異
編集SGML宣言
編集SGMLを採用していた従来のHTML規格においては、HTML文書は本質的にSGML文書であったため、HTML規格がそれぞれ提供するSGML宣言を文書の先頭に記述することが仕様上許されていた。一方HTML5の仕様では、HTML構文、XML構文のいずれを用いた場合でも、文書中にSGML宣言を記述することは許されていない。
文書型宣言およびDTDの扱い
編集<!DOCTYPE html>
” である。
HTML構文では文書型宣言は必須である。XML構文では、HTML5で導入される新しい機能を利用する場合は必須、それ以外の場合は文書型宣言は必須ではない。
従来のHTML規格で提供されていたDTDがなくなり、また文書型宣言の書式が決まっているため、HTML5ではDTDが利用できず、DTDに依存する多くの機能のほとんどが扱えなくなる。例としては、HTML4以前に扱えていた文字実体参照のほとんどがHTML5では扱えなくなる︵XMLは文書内部にDTDを書くこともできるが、上記の文書型宣言の決まりを無視する結果となるため、HTML5の仕様の範疇ではない︶。
処理命令
編集マーク区間
編集SGMLを採用していた従来のHTML規格では、マーク区間 (marked section) と呼ばれる仕組みが利用できた。以下に例を挙げる。
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN">
<html><head><title>...</title></head>
<body>
<p><![INCLUDE[ INCLUDE...マーク区間宣言がない場合と同じように解釈される ]]></p>
<p><![IGNORE[ IGNORE ...マーク区間の中身を無視される ]]></p>
<p><![RCDATA[ RCDATA ...マーク区間の中身がRCDATAとして処理される ]]></p>
<p><![CDATA[ CDATA ...マーク区間の中身がCDATAとして処理される ]]></p>
<p><![TEMP[ TEMP ...マーク区間の中身が一時的なものとして扱われる ]]></p>
</body>
</html>
上に挙げた例のうち、HTML5仕様で利用できるのはCDATAセクションのみである。
コメントと注釈宣言
編集SGMLのコメントは「-- コメント文 --
」という形を取り、マーク宣言中の空白文字の出現が許されている場所に任意の回数書くことができる。したがって従来のHTMLでは文書型宣言の中などでもコメントを挿入することが可能で、例えばISO/IEC 15445の文書型宣言は
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN" --コメント-->
のようにも書ける。一方、HTML5の文書型宣言にはコメントを挿入することはできない。
また、注釈宣言の扱いも従来のHTMLとHTML5では異なる。SGMLを採用していた従来のHTMLでは注釈宣言の中に任意の回数コメントを書くことができるが、HTML5ではHTML構文でもXML構文でもこのような書き方は認められていない。また、従来のHTMLでは注釈宣言内の最後のコメントと終了区切り子の間に空白文字を挿入することもできたが、HTML5ではこのような書き方も認められていない。
<!--コメント1-- --コメント2-- --HTML5ではこのような注釈宣言は書けない-->
<!-- この注釈宣言の書き方もHTML5では不可能-- >
終了区切り子の省略
編集>
﹂が、文字列﹁<
﹂﹁</
﹂の直前に存在する場合、その終了区切り子﹁>
﹂を省略することが仕様の上では許されていた[注9]。HTML5では終了区切り子の省略はできない。
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN">
<html<head<title>Sample</title</head>
<body<p>「閉じないタグ」の例。終了区切り子が省略されている</p</body</html>
空タグ
編集<>
﹂と空終了タグ﹁</>
﹂が仕様の上では記述できる。一方、HTML5では空タグを利用することはできない。
簡略終了タグ
編集/
﹂であり、仕様上では、 ﹁<p
>文章</p>
﹂という記述を﹁<p/文章/
﹂と書くような記法が許されていた。
一方のHTML5に簡略終了タグという仕組みはない。ただし、後述する空要素の開始タグを "<br />
" などと記述する方法は、︵従来のSGMLの立場では︶NETを利用したものと解釈することはできる。XMLの空要素タグも、SGMLの立場からはNETおよび付属書KのNESTCを利用した記法であると解釈できる。
空要素のタグ
編集<br />
﹂や﹁<br></br>
﹂のように記述することもできない。
HTML5のHTML構文における空要素は、内容を含むことができない要素のことである[22]。空要素はその開始タグを﹁>
﹂﹁/>
﹂のいずれかで閉じることができる。例を挙げると、br要素のタグは﹁<b
r>
﹂と記述するほかに、XML構文のように﹁<br />
﹂と記述することもできる。ただし空要素の終了タグを書くことはできない[23]。また、このような記法が許されるのは空要素または外部要素 (foreign element) のタグのみで、その他の要素の開始タグは﹁>
﹂で閉じねばならない。例えば、HTML5のHTML構文では内容を含まないp要素を﹁<p />
﹂のように書くことはできない。
XML仕様においては、空要素 は内容を含まない要素のことである[24]。HTML5のXML構文では、空要素は直後に終了タグを伴う開始タグ︵例‥﹁<br></br>
﹂︶、あるいは空要素タグ︵例‥﹁<br />
﹂︶のどちらでも表現できる。
HTML5 の要素と属性
編集nav
要素︵ナビゲーションのブロック用︶やfooter
要素︵作者や著作権の状態を表すまとまり用︶やsection
要素︵節︶やpr
ogress
要素︵進捗状況︶など、特別な意味を持つ要素が追加される。これらは検索エンジンのインデックス作業を容易にする。また、マルチメディアのためのaudio
要素やvideo
要素や2次元ビットマップ画像を描画するためのcanvas
要素も追加される。
HTML 4.01で非推奨だったfont
要素やcenter
要素などのCSSによって実現されるべきマークアップはすべて廃止されることとしている。acronym
要素も廃止され、abbr
要素に一本化される。
lang
属性は、XML構文におけるxml:lang
属性のように空の文字列をとり得る。
新しいAPI
編集HTML5ではマークアップだけでなく、API も新しく追加された。たとえば、以下のようなものである。
- ビデオやオーディオの再生
- 保存
- オフライン
- 編集
- ドラッグ&ドロップ
- 戻るボタン
- Webページ上のメニュー
エラーの取り扱い
編集HTML5 (text/html
) 対応ブラウザは間違った構文を柔軟に処理できる。HTML5は、古いブラウザが新しいHTML5の構造を安全に無視することが出来るように設計されている。HTML 4.01とは対照的に、HTML5は対応したブラウザであれば間違った構文に対して同じ結果となるように、字句解析と構文解析のための詳細な規則を規定している[25]。
XML構文とXHTML5
編集既存技術との競合
編集Adobe Flash
編集モバイルアプリケーション
編集video
要素
編集
脚注
編集注釈
編集出典
編集外部リンク
編集- W3C HTML
- HTML Living Standard
- (日本語訳)HTML Living Standard - 訳者の異なる2種類が存在する