XHTML抽象モジュールの簡易定義
XHTMLモジュール化仕様では、従来のDTDのようなコンピュータ処理のための定義の他に、人間にとっての読みやすさを考慮した「抽象モジュール定義」(Abstract Module Definition)が示されています。DTDよりもずっと理解しやすいものですから、直接仕様書を参照するといいのですが、やや煩雑な部分もあるので、さらに簡略化した「簡易定義」で概要を把握してください。
- 共通属性
- Core モジュール
- Applet モジュール
- Text Extension モジュール
- Forms モジュール
- Table モジュール
- Image モジュール
- Client-side Image Map モジュール
- Server-side Image Map モジュール
- Object モジュール
- Frames モジュール
- Target モジュール
- Iframe モジュール
- Intrinsic Events モジュール
- Metainformation モジュール
- Scripting モジュール
- Style Sheet モジュール
- Style Attribute モジュール
- Link モジュール
- Base モジュール
- Name Identification モジュール
- 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 |
このモジュールを選択すると、script
、noscript
要素タイプが、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 |
このモジュールに該当する要素タイプや属性は、本サイトでも解説していません。