コンテンツ・モデル

HTML5では、要素は自身のコンテンツに含めることのできる要素を定義する「コンテンツ・モデル」を持ちます。

例)

○ <p><strong></strong></p>
× <p><pre></pre></p>

例えば、p要素のコンテンツ・モデルは、フレージング・コンテンツに分類される要素なので、フレージング・コンテンツにも分類されるstrong要素はコンテンツに含めることができますが、フロー・コンテンツパルパブル・コンテンツに分類されるpre要素はコンテンツに含めることができません。


カテゴリ

HTML5では、要素は主に、メタデータフローセクショニングヘッディングフレージングエンベッディッドインタラクティブパルパブルトランスペアレントに分類されます。

なお、フロー・コンテンツは、セクショニング・コンテンツ、ヘッディング・コンテンツ、フレージング・コンテンツ、エンベッディッド・コンテンツ、インタラクティブ・コンテンツ、メタデータ・コンテンツの一部にも分類さるなど、下図のように要素は複数のコンテンツに属する要素もあります。

HTML5 分類表 カテゴリ


メタデータ・コンテンツ(Metadata content)

ドキュメントの情報、表示、動作などの定義、ほかのドキュメントとの関係などを定義する要素。

base、command、link、meta、noscript、script、style、title。


フロー・コンテンツ(Flow content)

ドキュメントの本文に使われるほとんどの要素。

a、abbr、address、article、aside、audio、b、bdi、bdo、blockquote、br、button、canvas、cite、code、command、datalist、del、details、dfn、dialog、div、dl、em、embed、fieldset、figure、footer、form、h1~h6、header、hgroup、hr、i、iframe、img、input、ins、kbd、keygen、label、main、map、mark、math、menu、meter、nav、noscript、object、ol、output、p、pre、progress、q、ruby、s、samp、script、section、select、small、span、strong、sub、sup、svg、table、textarea、time、u、ul、var、video、wbr。ほか、map要素の子孫であるときのarea要素、scoped属性を指定するときのstyle要素、テキストもフローコンテンツに分類されます。


セクショニング・コンテンツ(Sectioning content)

セクションの範囲を定義する要素。セクショニング・コンテンツの各要素はアウトライン(階層構造と区切りのルール)を形成します。また、セクショニング・コンテンツの要素は、最も近いセクショニング・ルートまたはセクショニング・コンテンツの要素の祖先の、サブ・セクションと常に見なされます。

article、aside、nav、section。


ヘッディング・コンテンツ(Heading content)

見出しを定義する要素。

h1、h2、h3、h4、h5、h6、hgroup


フレージング・コンテンツ(Phrasing content)

ドキュメントを構成するテキストを定義する要素。従来のインライン要素に相当します。

a、abbr、audio、b、bdi、bdo、br、button、canvas、cite、code、command、datalist、del、dfn、em、embed、i、iframe、img、input、ins、kbd、keygen、label、map、mark、math、meter、noscript、object、output、progress、q、ruby、s、samp、script、select、small、span、strong、sub、sup、svg、textarea、time、u、var、video、wbr。ほか、map要素の子孫であるときのarea要素、テキストもフレージング・コンテンツに分類されます。

エンベッディッド・コンテンツ(Embedded content)

ドキュメントに他のリソースを埋め込む要素。

audio、canvas、embed、iframe、img、math、object、svg、video。


インタラクティブ・コンテンツ(Interactive content)

リンクやボタンなどユーザー側で操作ができる要素。

a、button、details、embed、iframe、keygen、label、select、textarea。ほか、controls属性を指定するときのaudio要素、usemap属性を指定するときのimg要素、type属性がHiddenの状態でないときのinput要素、type属性がtoolbarの状態のときのmenu要素、usemap属性を指定するときのobject要素、controls属性を指定するときのvideo要素。


パルパブル・コンテンツ(Palpable content)

hidden属性が指定されていない1つ以上のフロー・コンテンツフレージング・コンテンツの要素をコンテンツとすることができる要素。

a、abbr、address、article、aside、b、bdi、bdo、blockquote、button、canvas、cite、code、details、dfn、div、em、embed、fieldset、figure、footer、form、h1~h6、header、hgroup、i、iframe、img、ins、kbd、keygen、label、main、map、mark、math、meter、nav、object、output、p、pre、progress、q、ruby、s、samp、section、select、small、span、strong、sub、sup、svg、table、textarea、time、u、var、video。ほか、controls属性を指定するときのaudio要素、子要素が少なくとも一つのname-valueグループを持つときのdl要素、type属性がhidden状態でないときのinput要素、type属性がtoolbar状態かlist状態のときのmenu要素、子要素が少なくとも一つのli要素を含むときのol要素、子要素が少なくとも一つのli要素を含むときのul要素。また、テキストもパルパブル・コンテンツに分類されます。


トランスペアレント・コンテンツ(Transparent content)

親要素のコンテンツ・モデルを受け継ぐ要素。トランスペアレント・コンテンツの要素は、内容に親要素のコンテンツ・モデルに基づく内容を持つことができます。

a、audio、canvas、del、ins、map、noscript、video。


セクショニング・ルート

独立したアウトラインを持つことができる要素。これらの要素の内容であるセクションと見出しは祖先の要素のアウトラインの影響を受けません。

blockquote、body、details、fieldset、figure、td。


フォーム関連要素(Form-Associated element)

フォーム・オーナーを持つことができる要素。フォーム関連要素に分類される要素はさらに以下に記すサブカテゴリにも分類されます。

button、fieldset、input、keygen、label、object、output、select、textarea、img。


フォーム・オーナー(form Owner)

フォーム関連要素(Form-Associated element)に分類される要素とform要素との関連付けを、フォーム・オーナー(form Owner)と言います。フォーム関連要素に分類される要素は、デフォルトでその直近の祖先のform要素と関連付けられますが、form属性を指定することでデフォルトより優先させることができます。


フォーム関連要素サブカテゴリ

リスト要素(Listed elements)
form.elements と fieldset.elements APIにリストされる要素。
button、fieldset、input、keygen、object、output、select、textarea。
送信可能要素(Submittable elements)
form 要素がサブミットされるとき、フォーム・データ・セットを構成するために使うことができる要素。
button、input、keygen、object、select、textarea。
リセット可能要素(Resettable elements)
form要素がリセットされるときに影響を受ける要素。
input、keygen、output、select、textarea。
再関連付け可能要素(Reassociateable elements)
form要素のコンテンツの属性と一致するformIDL属性を持つ要素。これらの要素は、作成者が明示的にフォーム・オーナーを指定することができます。
button、fieldset、input、keygen、label、object、output、select、textarea。

ラベル付け可能要素(Labelable elements)

label要素と関連づけることができる要素。

button、input (type 属性が Hidden 状態でない場合)、keygen、meter、output、progress、select、textarea。