XHTML抽象モジュールの簡易定義

XHTMLモジュール化仕様では、従来のDTDのようなコンピュータ処理のための定義の他に、人間にとっての読みやすさを考慮した「抽象モジュール定義」(Abstract Module Definition)が示されています。DTDよりもずっと理解しやすいものですから、直接仕様書を参照するといいのですが、やや煩雑な部分もあるので、さらに簡略化した「簡易定義」で概要を把握してください。

  1. 共通属性
  2. Core モジュール
  3. Applet モジュール
  4. Text Extension モジュール
  5. Forms モジュール
  6. Table モジュール
  7. Image モジュール
  8. Client-side Image Map モジュール
  9. Server-side Image Map モジュール
  10. Object モジュール
  11. Frames モジュール
  12. Target モジュール
  13. Iframe モジュール
  14. Intrinsic Events モジュール
  15. Metainformation モジュール
  16. Scripting モジュール
  17. Style Sheet モジュール
  18. Style Attribute モジュール
  19. Link モジュール
  20. Base モジュール
  21. Name Identification モジュール
  22. Legacy モジュール

抽象モジュール

XHTMLの抽象モジュールは、機械処理よりも人間の読者による理解を目的にしたモジュールの定義です。モジュールに含まれる要素タイプについて、属性のリストと最小内容モデル*を、簡潔に分かりやすく示したものです。

ここでは、仕様書の定義表のうち、属性タイプ/値の記述を一部の主要なものに限定し、よりシンプルで見やすい簡易表を作成してみました。当サイトで解説している要素タイプには、ハイパーリンクを設定しています。

なお、ここで示しているのはあくまで概要を把握するための簡易説明です。正確な定義は、仕様書の第5章を参照してください。

*「最小内容モデル」(Minimum Content Model) とは、モジュールを組み合わせてマークアップ言語を設計する際に、最小限含めなければならない内容モデル。設計時にほかの要素タイプを内容モデルに追加して拡張してよいが、最小モデルは必須。

抽象モジュールの主な構文
element & 該当モジュールを使う場合は、要素タイプelementに属性リストを追加
attribute * 属性attributeは必須
A ? Aが0もしくは1回(内容モデル=以下同様)
A + Aが1回以上
A * Aが0回以上
a, b a, bがこの順序で
a | b a もしくは b のいずれかが必須
a - b a から b を除いたものが認められる

1.共通属性(属性集合)の定義

多くの要素タイプで使われる共通の属性を定義します。DTDの実体宣言と同様の役割です。

属性集合 コレクション(集合)に属する属性のリスト
Core class (NMTOKENS), id (ID), title (CDATA)
I18N xml:lang (NMTOKEN)
Events onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (値は全てScript)
Style style (CDATA)
Common Core + Events + I18N + Style

EventsはIntrinsic Events モジュールが選択されたときのみ、またStyleはStyle Attribute モジュールが選択されたときのみ定義され、それ以外の場合は空になります。

(注)class属性のデータ型がXHTML1.0のCDATAからNMTOKENSに変更されています。

2. Core モジュール

ここで定義されるのは、XHTMLファミリとしての必須モジュールです。

2.1. Structure モジュール

XHTML文書の骨格となる基本的な要素タイプを定義します。html要素はXHTML文書のルート要素となります。

要素タイプ 属性リスト 最小内容モデル
body Common (Heading | Block | List)*
head I18N, profile (URI) title
html I18N, version, xmlns head, body
title I18N PCDATA

xmlns属性の値は"http://www.w3.org/1999/xhtml"と定義されています。XML名前空間の文法上は、この属性はどの要素にも記述することができます。

2.2. Text モジュール

仕様書ではアルファベット順にひとつずつ定義されていますが、ここでは内容モデルのための「内容セット」を定義するグループに分け、同じ働きのものはまとめて示します。

要素タイプ 属性リスト 最小内容モデル
h1 - h6 Common (PCDATA | Inline)*
address Common (PCDATA | Inline)*
blockquote Common, cite (URI) (PCDATA() | Heading | Block | List)*
div Common (PCDATA | Flow)*
p Common (PCDATA | Inline)*
pre Common, xml:space="preserve" (PCDATA | Inline)*
abbr, acronym Common (PCDATA | Inline)*
br Core EMPTY
cite Common (PCDATA | Inline)*
code, samp, kbd, var Common (PCDATA | Inline)*
dfn Common (PCDATA | Inline)*
em, strong Common (PCDATA | Inline)*
q Common, cite (URI) (PCDATA | Inline)*
span Common (PCDATA | Inline)*

(注)blockquoteの最小内容モデルにPCDATAが含まれているのは、XHTML1.1の内容モデルモジュールと矛盾する。DTDの定義が%Block.mixとなっていること、またHTML4(Strict)およびXHTML1.0(Strict)の定義からして、このモジュール化仕様の抽象定義が誤り(すなわちPCDATAは内容モデルに含まれない)であると思われる(%Block.mixの定義は応用言語に委ねられるが、最小内容モデルの要素を削ることはできない)。

各要素タイプの最小内容モデルを定義するための「内容セット」は次のようになります。これもDTDの実体宣言と同じ働きをするものです。

Heading
h1 | h2 | h3 | h4 | h5 | h6
Block
address | blockquote | div | p | pre
Inline
abbr | acronym | br | cite | code | dfn | em | kbd | q | samp | span | strong | var
Flow
Heading | Block | Inline

この内容セットは、ほかのモジュールを追加選択すると、該当する要素タイプが加わっていきます。たとえば、Hypertextモジュールを選択するとa要素タイプがInlineセットに追加され、Listモジュールを選択すると、Listセット(dl | ol | ul)+がFlowセットに追加される、といった具合です。

2.3. Hypertext モジュール

お馴染みアンカー要素タイプを定義します。内容モデルは、インラインからa要素タイプを除いたもので、入れ子を禁止しています。

要素タイプ 属性リスト 最小内容モデル
a Common, accesskey, charset, href, hreflang, rel, rev, tabindex, type (PCDATA | Inline - a)*

このモジュールを選択すると、a要素タイプがTextモジュールInlineセットに追加されます。

(注)rel, rev属性のデータ型はLinkTypesというものですが、これはXHTML1.0のCDATAからNMTOKENSに変更されています。

2.4. List モジュール

列挙型、辞書型のリスト要素を定義します。内容モデルに注意してください。

要素タイプ 属性リスト 最小内容モデル
dl Common (dt | dd)+
dt Common (PCDATA | Inline)*
dd Common (PCDATA | Flow)*
ol Common li+
ul Common li+
li Common (PCDATA | Flow)*

このモジュールを選択すると、最小内容モデルが(dl | ol | ul)+である「Listセット」も定義されます。このセットは、TextモジュールFlowセットに追加されます。

3. Applet モジュール

非推奨モジュールです。代わりにObjectモジュールを使うことが推奨されます。

要素タイプ 属性リスト 最小内容モデル
applet Core, alt*, archive, code, codebase, height*, object, width* (PCDATA | Flow | param)*
param id, name*, type, value, valuetype EMPTY

このモジュールを選択すると、applet要素タイプがTextモジュールInlineセットに追加されます。

4. Text Extension モジュール

テキストに関する追加モジュールです。

4.1. Presentation モジュール

見た目の表現を指定する要素タイプです。仕様書ではアルファベット順にひとつずつ定義されていますが、ここでは働きに関連のあるものはまとめて示します。

要素タイプ 属性リスト 最小内容モデル
b, i, tt Common (PCDATA | Inline)*
big, small Common (PCDATA | Inline)*
sub, sup Common (PCDATA | Inline)*
hr Common EMPTY

このモジュールを選択すると、hr要素タイプがTextモジュールBlockセットに、それ以外の要素タイプがInlineセットに追加されます。

4.2. Edit モジュール

追加と削除に関する要素タイプを定義します。

要素タイプ 属性リスト 最小内容モデル
del,ins Common, cite (URI), datetime (Datetime) (PCDATA | Flow)*

このモジュールを選択すると、del, ins要素タイプがTextモジュールInlineセットに追加されます。

4.3. Bi-directional Text モジュール

テキストの書字方向を指定する要素タイプを定義します。

要素タイプ 属性リスト 最小内容モデル
bdo Core, dir* ("ltr" | "rtl") (PCDATA | Inline)*

このモジュールを選択すると、bdo要素タイプがTextモジュールInlineセットに追加されます。さらに、属性セットのI18Nに、dir* ("ltr" | "rtl")が追加されます。

5. Forms モジュール

フォームを構成するモジュールは、要素タイプを絞り込んだBasic Formsと、フルセットであるFormsモジュールがあります。

5.1. Basic Forms モジュール

XHTML Basicのような小さな言語セット向けのフォームを定義します。

要素タイプ 属性リスト 最小内容モデル
form Common, action*, method, enctype (Heading | List | Block - form)+
input Common, accesskey, checked, maxlength, name (CDATA), size, src, tabindex, type, value EMPTY
label Common, accesskey, for (IDREF) (PCDATA | Inline - label)*
select Common, multiple, name (CDATA), size, tabindex option+
option Common, selected, value PCDATA
textarea Common, accesskey, cols*, name (CDATA), rows*, tabindex PCDATA

このモジュールは、さらに次の2つの「内容セット」を定義します。

Form
form
Formctrl
input | label | select | textarea

このモジュールを選択すると、FormセットがTextモジュールBlockセットに、FormctrlセットがInlineセットにそれぞれ追加されます。

5.2. Forms モジュール

HTML4で定義されているフォームの全機能を定義するモジュールで、XHTML 1.1のような大規模言語向けです。

要素タイプ 属性リスト 最小内容モデル
form Common, accept, accept-charset, action*, method, enctype (Heading | List | Block - form | fieldset)+
input Common, accept, accesskey, alt, checked, disabled, maxlength, name (CDATA), readonly, size, src, tabindex, type, value EMPTY
select Common, disabled, multiple, name (CDATA), size, tabindex (optgroup | option)+
option Common, disabled, label, selected, value PCDATA
textarea Common, accesskey, cols*, disabled, name (CDATA), readonly, rows*, tabindex PCDATA
button Common, accesskey, disabled, name (CDATA), tabindex, type, value (PCDATA | Heading | List | Block - Form | Inline - Formctrl)*
fieldset Common (PCDATA | legend | Flow)*
label Common, accesskey, for (IDREF) (PCDATA | Inline - label)*
legend Common, accesskey (PCDATA | Inline)+
optgroup Common, disabled, label* option+

このモジュールは、さらに次の2つの「内容セット」を定義します。

Form
form | fieldset
Formctrl
input | select | textarea | label | button

このモジュールを選択すると、FormセットがTextモジュールBlockセットに、FormctrlセットがInlineセットにそれぞれ追加されます。

FormsモジュールはBasic Forms Moduleの上位モジュールに相当します。一つの文書型で両方のモデルを選択することはできません。

6. Table モジュール

テーブルを構成するモジュールは、要素タイプを絞り込んだBasic Tablesと、フルセットであるTablesモジュールがあります。

6.1. Basic Tables モジュール

XHTML Basicのような小さな言語セット向けのテーブルを定義します。HTML 3.2相当のテーブルです。

要素タイプ 属性リスト 最小内容モデル
caption Common (PCDATA | Inline)*
table Common, summary, width caption?, tr+
td Common, abbr, align, axis, colspan, headers (IDREF), rowspan, scope ("col", "row"), valign (PCDATA | Flow - table)*
th Common, abbr, align, axis, colspan, headers (IDREF), rowspan, scope ("col", "row"), valign (PCDATA | Flow - table)*
tr Common, align, valign (td | th)+

このモジュールを選択すると、table要素タイプがTextモジュールBlockセットに追加されます。

6.2. Tables モジュール

HTML4で導入された、アクセシビリティを強化したフルセットのテーブルを定義します。

要素タイプ 属性リスト 最小内容モデル
caption Common (PCDATA | Inline)*
table Common, border, cellpadding, cellspacing, datapagesize, frame, rules, summary, width caption?, ( col* | colgroup* ), (( thead?, tfoot?, tbody+ ) | ( tr+ ))
td Common, abbr, align, axis, char, charoff, colspan, headers (IDREF), rowspan, scope ("col", "colgroup", "row", "rowgroup"), valign (PCDATA | Flow)*
th Common, abbr, align, axis, char, charoff, colspan, headers (IDREF), rowspan, scope ("col", "colgroup", "row", "rowgroup"), valign (PCDATA | Flow)*
tr Common, align, char, charoff, valign (td | th)+
col Common, align, char, charoff, span, valign, width EMPTY
colgroup Common, align, char, charoff, span, valign, width col*
tbody Common, align, char, charoff, valign tr+
thead Common, align, char, charoff, valign tr+
tfoot Common, align, char, charoff, valign tr+

このモジュールを選択すると、table要素タイプがTextモジュールBlockセットに追加されます。

7. Image モジュール

インライン埋め込み画像要素タイプを定義します。言うまでもなく、alt属性は必須です。

要素タイプ 属性リスト 最小内容モデル
img Common, alt*, height, longdesc, src*, width EMPTY

このモジュールを選択すると、img要素タイプがTextモジュールInlineセットに追加されます。

8. Client-side Image Map モジュール

クライアント側のイメージマップを実現するための要素タイプを定義します。img要素を含むモジュールと合わせて用いる必要があります。

要素タイプ 属性リスト 最小内容モデル
a& coords, shape n/a
area Common, accesskey, alt*, coords, href, nohref, shape, tabindex EMPTY
img& usemap (IDREF) n/a
input& usemap (IDREF) n/a *
map I18N, Events, class, id*, title ((Heading | Block) | area)+
object& usemap (IDREF) Object モジュールを用いる場合のみ)

このモジュールを選択すると、map要素タイプがTextモジュールInlineセットに追加されます。

usemap属性のタイプがXHTM1.0以前のURI型からIDREF型に変更されており、usemap="#mapid"という書き方は誤りとなるので注意が必要です。また、仕様書の抽象モデルでは明確に示されていませんが、input&とするためには、input要素タイプを含むFormsモジュールなどを選択している必要があるでしょう。次のServer-side Image Map モジュールの記述と比べてください。

9. Server-side Image Map モジュール

サーバー側のイメージマップを実現するための要素タイプを定義します。img要素を含むモジュールと合わせて用いる必要があります。

要素タイプ 属性リスト 最小内容モデル Notes
img& ismap n/a  
input& ismap n/a Basic FormsもしくはFormsモジュールを用いる場合のみ

10. Object モジュール

さまざまな埋め込みオブジェクトを実現するための要素タイプを定義します。

要素タイプ 属性リスト 最小内容モデル
object Common, archive, classid, codebase, codetype, data, declare, height, name, standby, tabindex, type, width (PCDATA | Flow | param)*
param id, name*, type, value, valuetype EMPTY

このモジュールを選択すると、object要素タイプがTextモジュールInlineセットに追加されます。

(注)object要素タイプのname属性のデータ型はXHTML1.0のNMTOKENからCDATAに変更され、param要素タイプのname属性と同じになりました。もともとHTML4ではCDATAだったので、XHTML1.0のNMTOKENが変てこりんな定義だったとも言えます。

11. Frames モジュール

ブラウザのウインドウを分割する「フレーム」の要素タイプを定義します。XHTML 1.1やXHTML Basicでは採用されていません。

要素タイプ 属性リスト 最小内容モデル
frameset Core, cols, rows (frameset | frame)+, noframes?
frame Core, frameborder, longdesc, marginheight, marginwidth, noresize, scrolling, src EMPTY
noframes Common body

このモジュールを選択すると、Structureモジュールhtml要素タイプの最小内容モデルが(head, frameset)に変更されます。

12. Target モジュール

リンク先を異なるフレームや新しいウインドウに表示するtarget属性を追加定義します。XHTML 1.1やXHTML Basicでは採用されていません。

要素タイプ 属性リスト Notes
a& target  
area& target Client-side Image Map モジュールが選択されているとき
base& target Legacy モジュールが選択されているとき
link& target Link モジュールが選択されているとき
form& target Basic FormsもしくはFormsモジュールを用いるとき

13. Iframe モジュール

「インラインフレーム」の要素タイプを定義します。XHTML 1.1やXHTML Basicでは採用されていません。

要素タイプ 属性リスト 最小内容モデル
iframe Core, frameborder, height, longdesc, marginheight, marginwidth, scrolling, src, width (PCDATA | Flow)*

このモジュールを選択すると、iframe要素タイプがTextモジュールInlineセットに追加されます。

14. Intrinsic Events モジュール

キーボード操作やマウスクリックなどのイベントを処理するための属性を追加定義します。このモジュールを選択すると、Events属性コレクションが定義されます。

要素タイプ 属性リスト Notes
a& onblur, onfocus  
area& onblur, onfocus Client-side Image Map モジュールが選択されているとき
frameset& onload, onunload Frames モジュールが選択されているとき
form& onreset, onsubmit Basic FormsもしくはFormsモジュールを用いるとき
body& onload, onunload  
label&, button& onblur, onfocus Formsモジュールが選択されているとき
input&, textarea& onblur, onchange, onfocus, onselect Basic FormsもしくはFormsモジュールを用いるとき
select& onblur, onchange, onfocus Basic FormsもしくはFormsモジュールを用いるとき

15. Metainformation モジュール

文書のメタ情報を示すための要素タイプを定義します。

要素タイプ 属性リスト 最小内容モデル
meta I18N, content*, http-equiv (NMTOKEN), name (NMTOKEN), scheme EMPTY

このモジュールを選択すると、meta要素タイプが、Structureモジュールhead要素タイプの内容モデルに追加されます。

(注)http-equiv, name属性のデータ型はXHTML1.0のCDATAからNMTOKENに変更されています。

16. Scripting モジュール

スクリプトに関する要素タイプを定義します。

要素タイプ 属性リスト 最小内容モデル
noscript Common (Heading | List | Block)+
script charset, defer, src, type*, xml:space="preserve" PCDATA

このモジュールを選択すると、scriptnoscript要素タイプが、TextモジュールBlockセット、Inlineセットにそれぞれ追加されます。さらにscript要素タイプがStructureモジュールhead要素タイプの内容モデルにも追加されます。

17. Style Sheet モジュール

style要素による文書内スタイルシート設定のための定義を行います。

要素タイプ 属性リスト 最小内容モデル
style I18N, media, title, type*, xml:space="preserve" PCDATA

このモジュールを選択すると、style要素タイプが、Structureモジュールhead要素タイプの内容モデルに追加されます。

18. Style Attribute モジュール

style属性による個別要素のスタイル指定に関する定義を行います。属性コレクションのStyleが有効になります。XHTML 1.1では非推奨となっています。

19. Link モジュール

関連するXHTML文書や外部スタイルシートなどのリソースにリンクするための要素タイプを定義します。

要素タイプ 属性リスト 最小内容モデル
link Common, charset, href, hreflang, media, rel, rev, type EMPTY

このモジュールを選択すると、link要素タイプが、Structureモジュールhead要素タイプの内容モデルに追加されます。

20. Base モジュール

相対URIを補完して絶対URIとするときの基準URIに関する要素タイプを定義します。属性はhrefのみである点に注意してください。target属性を記述するには、Targetモジュールを組み込む必要があります。

要素タイプ 属性リスト 最小内容モデル
base href* EMPTY

このモジュールを選択すると、base要素タイプが、Structureモジュールhead要素タイプの内容モデルに追加されます。

21. Name Identification モジュール

非推奨モジュールです。XHTML 1.1やXHTML Basicでは採用されていません。

要素を特定するためのname属性を追加します。通常はid属性で要素を特定します。ある要素にname属性を指定する場合は、必ずid属性も合わせて指定し、両者の値を同じにしなければなりません。

要素タイプ 属性リスト Notes
a& name  
applet& name Applet モジュールが選択されているとき
form& name Basic FormsもしくはFormsモジュールを用いるとき
frame& name Frames モジュールが選択されているとき
iframe& name Iframe モジュールが選択されているとき
img& name Image モジュールが選択されているとき
map& name Client-side Image Map モジュールが選択されているとき

22. Legacy モジュール

HTML4から非推奨となっている要素タイプや属性を定義します。マークアップに用いるべきではありません。XHTML 1.1やXHTML Basicでは採用されていません。

要素タイプ 属性リスト 最小内容モデル
basefont color, face, id, size EMPTY
center Common (PCDATA | Flow)*
dir Common, compact (li)+
font Core, I18N, color, face, size (PCDATA | Inline)*
isindex Core, I18N, prompt EMPTY
menu Common, compact (li)+
s, strike, u Common (PCDATA | Inline)*

さらに以下の属性を追加します。

要素タイプ 属性リスト Notes
body& alink, background, bgcolor, link, text, vlink  
br& clear  
caption& align  
div& align  
dl& compact, type  
h1-h6& align  
hr& align, noshade, size, width,  
img& align, border, hspace, vspace  
input& align Basic FormsもしくはFormsモジュールを用いるとき
legend& align Formsモジュールを用いるとき
li& type, value  
ol& compact, start, type  
p& align  
pre& width  
script& language Scripting モジュールが選択されているとき
table& align, bgcolor Tables モジュールが選択されているとき
tr& bgcolor
th&, td& bgcolor, height nowrap, width
ul& compact, type  

このモジュールに該当する要素タイプや属性は、本サイトでも解説していません。