HyperText Markup Language
|
HTMLコードの例。 | |
| 拡張子 | html |
|---|---|
| MIMEタイプ | text/html |
| タイプコード |
|
| UTI | public.html |
| 開発者 | World Wide Web Consortium、Internet Engineering Task Force、Web Hypertext Application Technology Working Group |
| 初版 | 1989年 |
| 最新版 |
HTML Living Standard |
| 種別 | マークアップ言語 |
| 派生元 | Standard Generalized Markup Language |
| 拡張 | XHTML |
| ウェブサイト | https://html.spec.whatwg.org/multipage/ |
| HTML |
|---|
HTML[注釈 1]またはHyperText Markup Language(ハイパーテキスト マークアップ ランゲージ)[注釈 2]は、ハイパーテキストを記述するためのマークアップ言語の1つで、プログラミング言語ではない。主にWorld Wide Web(WWW)において、ウェブページを表現するために用いられる。ハイパーリンクや画像等のマルチメディアを埋め込むハイパーテキストとしての機能、見出しや段落といったドキュメントの抽象構造、フォントや文字色の指定などの見た目の指定、などといった機能がある。
ティム・バーナーズ=リーによってSGMLを元に開発された。1993年に最初のドラフトが公開され、最初期においてはIETFが、1996年以降はW3Cが、2019年以降はWHATWGが規格の策定、仕様公開を行なっている[1][2]。
特徴
[編集]HTMLは木構造(入子構造)のマークアップ言語であり、形式言語である。「プレーンテキストの文書を要素で括って意味付け」という一般的な説明[3]は間違いである。「『タグ』と『タグ』で括られたもの全体」が「要素」(element)であり、タグすなわち要素ではない。マークアップ言語としての特徴は、先祖であるSGMLや、兄弟のXMLと共通しているため、以下ではWWWというシステムにおける「ハイパーテキスト記述言語」としての側面についてのみ記述する。
HTMLの要素には、文書を表現するものとしてごく一般的なものである見出し(ヘッドライン、h1〜)、段落(パラグラフ、p)、ハイパーテキストとして特徴的な「アンカー」(a)に関係するもの、画像など(imgなど)の電子メディア的なもの、などがある。また文字色の指定などといった、意味ではなく直接見た目のみを指定するようなものは、近年ではスタイルシートなどに分離するべきとされているが、歴史的事情、及び、スタイルシートよりもこの、HTMLでの記述が簡便になる場合が度々あること[注釈 3]から現在でもしばしば使われている。その他主要な要素は、HTMLの要素の記事で解説している。
形式言語として見た場合「構文規則」(あるいは文法)に相当する「スキーマ」は、HTML4まではDTDとして公開され要素ごとに記載することの出来る属性、内容に含むことの出来る要素などが定められていた。HTML 4.01では厳密なもの[注釈 4]、HTML 3.2からの移行過渡期のためのもの[注釈 5]、フレームを用いた文書のためのもの[注釈 6]といった3つのDTDが定義されていた。
HTML 3.2では見た目を左右する要素や属性が追加されたがHTMLは本来文書構造を示すためだけにその存在意義があり、それらの要素は目的に反するものとされた。そのため視覚的・感覚的効果を定義する手段としてスタイルシート(一般にはその中のCSS)が考案された。見た目を左右する要素や属性の一部はHTML4以降では非推奨とされており、HTML 4.01 Strictでは定義されていないので使用できない。ただしHTML 4.01 Strictで定義され、非推奨とされない要素や属性の一部にも見た目を左右するものがある。装飾的な視覚表現のためにそれらの要素や属性を用いているのであればその内容に適する要素を用いた上で、スタイルシートで表現を指定するのが望ましいとされている。
標準仕様
[編集]| 文書 | 策定者 | 構文 | 説明 | 開発時期 |
|---|---|---|---|---|
| HTML Living Standard | WHATWG | 現在のデファクトスタンダード。HTML文書だけでなく、DOMなどのAPIも含む仕様となっている。2021年にはHTML5の勧告が廃止され、新たなW3C勧告となった。 | 2004年~現在 | |
| ISO/IEC 15445:2000(ISO-HTML) | ISO/IEC JTC 1/SC 34 | SGML | 2000年に発表され、2003年に改訂された[注釈 7][注釈 8]。HTML 4.01 Strictを元に、より厳密に規格化された。日本語に翻訳されたものが、JIS規格の「JIS X 4156:2000」[4]「JIS X 4156:2005」[5]となっている。 | 2000年~2003年[注釈 9] |
| 名称 | 策定者 | 文書 | 発効日 | 失効日 |
|---|---|---|---|---|
| HTML[注釈 10] | IETF | Hypertext Markup Language (HTML) | -[注釈 11] | - |
| HTML+ | HTML+ (Hypertext markup format) | -[注釈 11] | - | |
| HTML 2.0 | RFC 1866 | 1995年11月24日 | 2000年6月[6] | |
| RFC 1867 | 1995年11月25日 | |||
| RFC 1942 | 1996年5月 | |||
| RFC 1980 | 1996年8月 | |||
| RFC 2070 | 1997年1月 | |||
| HTML 3.0 | HTML 3.0 Draft | -[注釈 11] | - | |
| HTML 3.2 | W3C | HTML 3.2 Reference Specification[注釈 12] | 1997年1月13日 | 1997年12月[注釈 13] |
| HTML 3.2 Reference Specification[注釈 14] | 1997年1月14日 | |||
| HTML 4.0 | HTML 4.0 Specification | 1997年12月18日 | 2018年3月27日[7] | |
| HTML 4.0 Specification[注釈 15] | 1998年4月24日 | |||
| HTML 4.01 | HTML 4.01 Specification | 1999年12月24日 | 2018年3月27日[8] | |
| HTML5 | HTML5 | 2014年10月28日 | 2018年3月27日[9] | |
| HTML 5.1 | HTML 5.1 | 2016年11月1日 | 2021年1月28日[10] | |
| HTML 5.1 2nd Edition | 2017年10月3日 | |||
| HTML 5.2 | HTML 5.2 | 2017年12月14日 | 2021年1月28日[11] | |
| HTML 5.3 | HTML 5.3 | -[注釈 16] | - |
以下、言語仕様については歴史的な経緯など特別な事情がない限り、WHATWGの策定する「HTML Living Standard」を基準に説明を行う。失効済みの仕様については下記「#歴史」の項も参照。
言語仕様
[編集]HTMLはドキュメント構造(モデル)、各要素の役割/意味(セマンティクス)、表現する構文(シンタックス)を定義する。
構造
[編集]HTMLは要素(Element)の木構造を扱う。各要素は以下の3つから構成される。
- 要素名
- 属性(attribute): 0個以上。属性名と値のペア、値は文字列に限定[12]
- 子要素: 0個以上
要素が子要素をもつため、総体として要素の木構造でモデル化される。
構文
[編集]HTMLを表現するための構文としては、HTML構文(HTML Syntax)およびXML構文(XML Syntax)が存在する。XML構文で記述されたHTMLはかつてXHTMLと呼ばれていたが、現在の仕様ではそのような呼び分けは行わない[13]。また、現在の仕様ではHTML構文の使用が推奨されている[14]。
HTML文書は文書型宣言とHTML要素、そして(任意の)BOM、コメント、空白文字からなる[注釈 17]。
HTML構文の場合、要素は<要素名 属性名="値">コンテンツ</要素名>というテキスト形式で記述される。コンテンツを挟む<要素名></要素名>はタグと呼ばれ、前方部分は開始タグ、後方部分は終了タグと呼ばれる。コンテンツ部に子要素をもつことで総体としての木構造が表現される。
また、子要素をもたない単一の構文<要素名 />は単一/単独タグ[注釈 18]またHTML5では空要素[15]と呼ばれる(例:<br /><img src="something.jpg" />)。これらはしばしば / が省略されることがある(例:<br><hr>)。
注意点として、要素はタグではない[16]。要素は構造上規定される存在であり、構文上の表現であるタグと併記されるものではない。また要素はタグ+コンテンツで表現されるため、タグは要素を表現するものの一部に過ぎない。
機能
[編集]HTMLは異なる意味をもつ様々な要素を定義する[17]。各要素では受け入れ可能な属性が定義され、要素の振る舞いを調整できるようになっている。ほとんどの要素では、要素名が機能を指し、属性が自身の特性を指し、子要素が収納される別コンテンツを指す。
例えば<title>はタイトルを意味し、<a>はハイパーテキストアンカーを意味する。<a href="https://example.com">ではhref属性によってリンク先が指定されている。
HTMLは要素のセマンティクスを定義しているに過ぎないので、それを具体的にどう表現・利用するかは利用側に委ねられている[18]。通常はウェブブラウザでの利用が想定されているが、音声対話エージェントが利用するケースもあり得る。
HTML文書
[編集]HTMLで書かれた文書をHTML文書と言い、HTMLでは、まず文書型宣言を書く。HTML構文を用いる場合は文書型宣言を以下の通り書かなければならない[注釈 19]。
<!DOCTYPE html>
次に基本的なHTML文書の例を挙げる。