XHTML 1.1 - モジュール化されたXHTML

XHTML1.0の勧告に続いて、さまざまな情報機器の表現能力の違いなどに対応するための「モジュール化された」XHTML 1.1が2001年5月31日に勧告されました。概要について説明します。

XHTML1.1とは

XHTML 1.0は、HTMLで書かれた既存コンテンツのXHTMLへのスムーズな移行を第一の目的としていました。次の段階では一歩進んで、文書の構成要素を小さな単位に分けて定義し、これらを組み合わせることで多様なデバイスや環境に柔軟に合わせた独自のタグセットを設計できるモジュール化という考え方が取り入れられています。モジュールを組み合わせてつくられるいろいろなタイプのXHTMLを、W3CはXHTMLファミリーと呼んでいます。

XHTML 1.1はXHTMLファミリーの一つで、コンピュータなど大きな画面と高い処理能力を持つ端末向けのマークアップ言語の標準版とでもいうべきものです。小さな画面しか持たず処理能力も低い携帯端末や情報家電などは、フルセットのHTMLを処理するのは負担が重いので、XHTML Basicという別の標準が勧告されています。

妥当な(valid)XHTML 1.1の要件は、文書型宣言が次のようになる(従って参照するDTDが変わる)以外は、基本的にXHTML 1.0の場合と同じです。

(例)

<!DOCTYPE html
   PUBLIC "-//W3C//DTD XHTML 1.1//EN"
   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

xhtml11の部分はバージョン1.0のxhtml1とよく似ているので注意してください。また、バージョン1.0の例で示していたhtml要素のlang属性は、1.1では廃止され、xml:lang属性に置き換えられました(html要素タイプだけでなく、全ての要素タイプに共通)。

モジュール化とXHTML1.1の文書型

モジュール

XHTMLで提供されるモジュールは、XHTMLモジュール化仕様で定義されています。この仕様に従い、定義済みのモジュールから必要なものを選んだり、独自に定義したモジュールを組み合わせたりして、新しいXHTMLファミリーを作ることができます(あとのセクションでもう少し説明します)。XHTML 1.1もこのモジュールを組み合わせて構成されます。

モジュールはDTD(文書型定義)によって定義されていますが、XMLのスキーマ仕様が勧告さたことを受け、これに基づいたModularization of XHTML in XML Schemaの草案も提出されています。モジュールのうちいくつかは必須のコアモジュールとされており、XHTMLの相互運用性の最低限の基盤となっています。

XHTML 1.1のDTD

上記のようにモジュール自体は別の仕様で定義されているので、XHTML 1.1のDTDは、どのモジュールを使うかという宣言の集まりになっています(これをドライバと呼んでいます)。以下にXHTML 1.1で用いるモジュールを示します。XHTML 1.0 Transitionalにおいて互換性のために残されていたレイアウト的な要素は、全て取り除かれています(*印を付けたのが必須コアモジュールです )。

DTDそのものを読んでみるにはごくごく簡単なXHTML 1.1のDTDの説明を参照してください。

XHTML 1.1に含まれるモジュール
モジュール 要素タイプ
Structure* html, head, title, body
Text* (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
Hypertext* a
List* dl, dt, dd, ol, ul, li
Object object, param
Presentation b, big, hr, i, small, sub, sup, tt
Edit del, ins
Bi-directional Text bdo
Forms button, fieldset, form, input, label, legend, select, optgroup, option, textarea
Tables caption, col, colgroup, table, tbody, td, tfoot, th, thead, tr
Image img
Client-side Image Map area, map
Server-side Image Map img要素タイプにismap属性を追加
Intrinsic Events (いくつかの要素におけるscript用のイベント属性)
Metainformation meta
Scripting noscript, script
Style Sheet style
Style Attribute style属性(非推奨)
Link link
Base base
Ruby Annotation ruby, rbc, rtc, rb, rt, rp
  • モジュールの定義にはそれぞれの属性や最小内容モデルも含まれますが、ここでは基本的に要素タイプのみを示しています。
  • (Headings)、(Block)、(Inline)はモジュールではなく、内容モデルを定義するためのセットです。これらのセットには他のモジュールの要素タイプも追加されるので、ここではたくさんあるTextモジュールを便宜的に分類していると考えてください
  • XHTMLモジュールについては当サイトXHTML抽象モジュールの簡易定義(早わかり)に簡単にまとめています

XHTML 1.0 Strictとの違いは仕様書の変更点につぎのように記述されています。

  • lang属性が廃止され、xml:lang属性のみを使用する
  • a要素タイプとmap要素タイプのname属性が廃止され、id属性のみを使用する
  • rubyモジュールの要素タイプを追加

XHTML Basic

XHTML 1.1のほかに、PDAなどの小型端末を念頭に置いたXHTMLの最大公約数的なセットとしてXHTML Basicが勧告されています。ワイヤレス・モバイル時代の標準として重要になると考えられるので、独立したページで解説します。

独自の文書型を定義する

XHTMLのモジュラー化のメリットは、利用するデバイスや環境に応じて柔軟な文書型を定義できるところにあります。XHTMLをベースにすることで、最低限の互換性を持ちながら、それぞれの環境に最適化したタグセットを用意できるということのようです。

独自の文書型定義(DTD)は、XHTML 1.1やXHTML Basicをもとにして、そこにXHTMLモジュール化仕様で定義済みのモジュールを追加するという方法で比較的簡単に構築できます。MathMLなどの他のDTD、あるいはXMLを使って定義した独自の要素や属性を組み合わせることも可能です。また定義済みモジュールに要素タイプや属性、内容モデルを追加したり削除したりして使うこともできます。基本的な要素タイプが定義済みのモジュールとして提供されるので、DTDを書くことは従来より効率的な作業になります(はず)。

XHTMLに準拠したDTDにするためには、前に「必須」として挙げたStructure, Basic Text, Hypertext, Listの各モジュールを含み、それぞれについて定義されている属性や内容モデルを反映させなければなりません。また、独自に定義したDTDを示すフォーマル公開識別子は、

(例)-//OrgName//DTD XHTML-UniqueName//LangCode

という名前付けのルールに従う必要があります。ここで、OrgNameはW3Cなどの組織名、UniqueNameはDTDの目的などを表す具体的な呼称(バージョン番号を含む)、LangCodeは英語ならEN、日本語ならJAというものです。

独自DTDの定義方法および独自モジュールの定義方法の詳細は、XHTMLモジュール化仕様のAppendix D以降XHTMLモジュール構築仕様に示されています。

〔補足〕XHTML 1.1ではHTML4で使うべきではない要素とされてTransitionalでのみ生き残っていたものは排除されてしまっています。これらの一部はモジュール化仕様書でLegacy Moduleとして残されていますので、どうしてもこれらをXHTMLで使う必要があったら、自分でXHTMLファミリーのDTDを書きなさいということになるのでしょう。フレームについても同様の扱いで、Framesモジュールを組み込んだDTDを設計すれば、使うことは可能です。