HyperText Markup Language

enまたはenは、ハイパーテキストを記述するためのマークアップ言語の1つで、プログラミング言語ではない。主にWorld Wide Webにおいて、ウェブページを表現するために用いられる。ハイパーリンクや画像等のマルチメディアを埋め込むハイパーテキストとしての機能、見出しや段落といったドキュメントの抽象構造、フォントや文字色の指定などの見た目の指定、などといった機能がある。

ティム・バーナーズ＝リーによってSGMLを元に開発された。1993年に最初のドラフトが公開され、最初期においてはIETFが、1996年以降はW3Cが、2019年以降はWHATWGが規格の策定、仕様公開を行なっている。

1. 特徴
-----

HTMLは木構造のマークアップ言語であり、形式言語である。「プレーンテキストの文書を要素で括って意味付け」という一般的な説明は間違いである。「『タグ』と『タグ』で括られたもの全体」が「要素」であり、タグすなわち要素ではない。マークアップ言語としての特徴は、先祖であるSGMLや、兄弟のXMLと共通しているため、以下ではWWWというシステムにおける「ハイパーテキスト記述言語」としての側面についてのみ記述する。

HTMLの要素には、文書を表現するものとしてごく一般的なものである見出し、段落、ハイパーテキストとして特徴的な「アンカー」に関係するもの、画像などの電子メディア的なもの、などがある。また文字色の指定などといった、意味ではなく直接見た目のみを指定するようなものは、近年ではスタイルシートなどに分離するべきとされているが、歴史的事情、及び、スタイルシートよりもこの、HTMLでの記述が簡便になる場合が度々あることから現在でもしばしば使われている。その他主要な要素は、HTMLの要素の記事で解説している。

形式言語として見た場合「構文規則」に相当する「スキーマ」は、HTML4まではDTDとして公開され要素ごとに記載することの出来る属性、内容に含むことの出来る要素などが定められていた。HTML 4.01では厳密なもの、HTML 3.2からの移行過渡期のためのもの、フレームを用いた文書のためのものといった3つのDTDが定義されていた。

HTML 3.2では見た目を左右する要素や属性が追加されたがHTMLは本来文書構造を示すためだけにその存在意義があり、それらの要素は目的に反するものとされた。そのため視覚的・感覚的効果を定義する手段としてスタイルシートが考案された。見た目を左右する要素や属性の一部はHTML4以降では非推奨とされており、HTML 4.01 enでは定義されていないので使用できない。ただしHTML 4.01 enで定義され、非推奨とされない要素や属性の一部にも見た目を左右するものがある。装飾的な視覚表現のためにそれらの要素や属性を用いているのであればその内容に適する要素を用いた上で、スタイルシートで表現を指定するのが望ましいとされている。

2. 標準仕様
-------

2023年4月現在、HTMLの有効な標準仕様は以下の2点である。

下表は失効済みのかつての標準仕様の一覧である。

以下、言語仕様については歴史的な経緯など特別な事情がない限り、WHATWGの策定する「HTML Living Standard」を基準に説明を行う。失効済みの仕様については下記「#歴史」の項も参照。

3. 言語仕様
-------

HTMLはドキュメント構造、各要素の役割/意味、表現する構文を定義する。

3.1. 構造
-------

HTMLは要素の木構造を扱う。各要素は以下の3つから構成される。

要素名
属性: 0個以上。属性名と値のペア、値は文字列に限定
子要素: 0個以上要素が子要素をもつため、総体として要素の木構造でモデル化される。

3.2. 構文
-------

HTMLを表現するための構文としては、HTML構文およびXML構文が存在する。XML構文で記述されたHTMLはかつてXHTMLと呼ばれていたが、現在の仕様ではそのような呼び分けは行わない。また、現在の仕様ではHTML構文の使用が推奨されている。

HTML文書は文書型宣言とHTML要素、そしてBOM、コメント、空白文字からなる。

HTML構文の場合、要素は コンテンツ というテキスト形式で記述される。コンテンツを挟む ... はタグと呼ばれ、前方部分は開始タグ、後方部分は終了タグと呼ばれる。コンテンツ部に子要素をもつことで総体としての木構造が表現される。

注意点として、要素はタグではない。要素は構造上規定される存在であり、構文上の表現であるタグと併記されるものではない。また要素はタグ+コンテンツで表現されるため、タグは要素を表現するものの一部に過ぎない。

3.3. 機能
-------

HTMLは異なる意味をもつ様々な要素を定義する。各要素では受け入れ可能な属性が定義され、要素の振る舞いを調整できるようになっている。ほとんどの要素では、要素名が機能を指し、属性が自身の特性を指し、子要素が収納される別コンテンツを指す。

例えば はタイトルを意味し、 はハイパーテキストアンカーを意味する。 では href 属性によってリンク先が指定されている。

HTMLは要素のセマンティクスを定義しているに過ぎないので、それを具体的にどう表現・利用するかは利用側に委ねられている。通常はウェブブラウザでの利用が想定されているが、音声対話エージェントが利用するケースもあり得る。

制約検証プロセス 制約検証は、制約検証 API を通じて、単一のフォーム要素、またはフォームレベルの 要素自体に対して行われます。制約検証は以下の方法で行われます。 checkValidity または メソッドをフォーム関連 DOM インターフェイス  に対して呼び出すことによって、この要素のみの制約を評価し、スクリプトがこの情報を取得できるようにします。 メソッドは、この要素の値が制約に合格するかどうかを論理値で返します。一方、 メソッドはあらゆる制約違反をユーザーに報告します。reportValiditycheckValidityreportValidity checkValidity または メソッドを HTMLFormElement インターフェイスに対して呼び出すことによって。reportValidity フォーム自身を送信することによって。

checkValidity を呼び出すことは、制約を静的に検証するといい、 を呼び出したり、フォームを送信したりすることは、制約を対話的に検証するといいます。reportValidity

4. HTML文書
---------

HTMLで書かれた文書をHTML文書と言い、HTMLでは、まず文書型宣言を書く。HTML構文を用いる場合は文書型宣言を以下の通り書かなければならない。

<!DOCTYPE html>

次にHTML文書の例を挙げる。

<!DOCTYPE html>HyperText Markup Language - Wikipedia

HyperText Markup LanguageHTMLは、SGML アプリケーションの一つで、ハイパーテキストを利用してワールド ワイドウェブ上で情報を発信するために作られ、 ワールドワイドウェブの基幹的役割をなしている。 情報を発信するための文書構造を定義するために使われ、 ある程度機械が理解可能な言語で、 写真の埋め込みや、フォームの作成、 ハイパーテキストによるHTML間の連携が可能である。<WtXmlEndTag /><WtXmlEndTag /><WtXmlEndTag /><WtXmlEndTag />このHTML文書は次のような構造を示している。

<!DOCTYPE html>:文書型宣言
このテキストが最新のHTMLであることを示す。
:html要素。また、lang="ja"で、言語コードjaの言語が使われていることの明示。
:head要素
:meta要素。ここでは、charset="UTF-8"で、文字コードが、「UTF-8」であることを示す。
要素
:title要素