コンテンツ・モデル(内容モデル)とは、各要素がその中に入れることのできるコンテンツを定義したものです。
HTML4.01やXHTML1.0では、要素の多くは「ブロックレベル要素」と「インライン要素」に分類され、この概念によって要素同士の関係性が規定されていました。
HTML5は、ブロックレベル要素やインライン要素といった分類方法の代わりに「カテゴリー」という概念を導入しました。
カテゴリーによって、要素はより細かく、厳密に分類されるようになり、コンテンツ・モデルも基本的にこのカテゴリーに基づいて定義されています。
カテゴリーには次のものがあります。
- メタデータ・コンテンツ
- フロー・コンテンツ
- セクショニング・コンテンツ
- 見出しコンテンツ
- フレージング・コンテンツ
- 埋め込みコンテンツ
- インタラクティブ・コンテンツ
■メタデータ・コンテンツ
文書に関する情報や、他の文書との関係などを定義するコンテンツです。
base、command、link、meta、noscript、script、style、title
■フロー・コンテンツ
文書内に現れる一般的なコンテンツを表します。メタデータ・コンテンツに含まれる一部の要素をのぞき、ほとんどの要素がフロー・コンテンツに属しています。
a、abbr、address、area(map要素の中にある場合)、article、aside、audio、b、bdi、bdo、blockquote、br、button、canvas、cite、code、command、datalist、del、details、dfn、div、dl、em、embed、fieldset、figure、footer、form、h1~h6、header、hgroup、hr、i、iframe、img、input、ins、kbd、keygen、label、map、mark、menu、meter、nav、noscript、object、ol、output、p、pre、progress、q、ruby、s、samp、script、section、select、small、span、strong、style(scoped属性が指定されている場合)、sub、sup、table、textarea、time、u、ul、var、video、wbr、テキスト
■セクショニング・コンテンツ
章や節のように、見出しからその内容までを含んである範囲を定義するコンテンツです。
article、aside、nav、section
■見出しコンテンツ
見出しを表します。
h1~h6、hgroup
■フレージング・コンテンツ
段落などの中に含まれるテキストを表します。
a、abbr、area(map要素の中にある場合)、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、meter、noscript、object、output、progress、q、ruby、s、samp、script、select、small、span、strong、sub、sup、textarea、time、u、var、video、wbr、テキスト
■埋め込みコンテンツ
外部のリソースを文書内に埋め込むコンテンツです。
audio、canvas、embed、iframe、img、object、video
■インタラクティブ・コンテンツ
ユーザーが操作することのできるコンテンツです。
a、audio(controls属性が指定されている場合)、button、details、embed、iframe、img(usemap属性が指定されている場合)、input(type属性の値が「hidden」でない場合)、keygen、label、menu(type属性の値が「toolbar」でない場合)、object(usemap属性が指定されている場合)、select、textarea、video(controls属性が指定されている場合)