4. 抽象モジュールの定義

抽象モジュールは,説明テキスト及び非公式のマーク付け規約を使用したXHTMLモジュールの定義とする。文書型の機械処理においては,これらの定義は一般的には有用ではないが,モジュール内に何が含まれているかを理解する手助けにおいては, それは非常に重要となる。この4.は,XHTML抽象モジュールの定義方法を規定する。XHTML適合モジュールは,抽象モジュール定義を与えるには必須ではない。しかし,XHTMLモジュールを開発する者には,そのモジュールの使用を容易にするために抽象化を与えることを推奨する。

4.1. 構文規約

抽象モジュールは,形式的文法では定義されない。しかし,その定義は, 次の構文規約に従う。これらの規約は,XMLのDTDの規約に類似し,XMLのDTD作成者にはよく知られている。個別の各構文要素は, 他の要素と組み合わされ,ここで定義される代数に適合するもっと複雑な式を作ることができる。

要素名
要素が内容モデルに含まれるとき,その明示的な名前が列挙される。
内容集合
内容集合と呼ばれる明示的な要素名のリストを定義するモジュールがある。内容集合が内容モデルに含まれるとき,その名前が列挙される。
expr ?
0個又は1個のexprのインスタンスが許容される。
expr +
1個以上のexprのインスタンスが必須とする。
expr *
0個以上のexprのインスタンスが許容される。
a , b
aが必須であり,その後に式bが続く。
a | b
式a又は式bのどちらかが必須とする。
a - b
式aが許容され,式bの中の要素を省略する。
括弧
括弧内に式があるとき,括弧内にあるすべての部分式は,括弧外の式を評価する前に評価される。評価は,入れ子レベルが最深のものから始める。
事前定義要素の拡張
あるインスタンスにおいては,モジュールが属性を要素に追加する。これらのインスタンスでは,要素名の後にアンパサンド(&)が続く。
必須属性の定義
要素が属性の定義を要求するとき,その属性名の後にアスタリスク(*)が続く。
属性値の型の定義
モジュールが属性値の型を定義するとき,属性名の後の括弧の中に型のリストを示す。
属性の合法な値の定義
モジュールが属性に合法な値を定義するとき,属性名の後の括弧の中に,縦線(|)で分離された, (引用符で囲まれた)明示的に合法な値のリストを示す。属性がデフォルト値をもつとき,その値の後にアスタリスク(*)が続く。属性が固定値をもつとき,属性名の後に等号(=)が続き, さらに引用符で囲まれた固定値が続く。

4.2. 内容型

抽象モジュール定義は,各モジュールの最小の核となる内容モデルを定義する。これらの最小の内容モデルは,モジュール自体の中の要素を参照する。それらは,抽象モジュールが依存する他のモジュールの中の要素も参照してよい。最後に,多くの場合の内容モデルは,テキストが1個以上の要素に対する内容として許容されることを要求する。 これらの場合,テキストに使用される記号はPCDATAとする。これは,処理された文字データを参照する用語であり,XML 1.0勧告で定義されている。内容型は, EMPTYとして定義することもできる。これは,要素がその最小の内容モデルにおいて内容をもたないことを意味する。

4.3. 属性型

あるインスタンスでは,属性値の型の定義又は属性の許容値の明示的な集合の定義が要求される。抽象モジュールの定義には,(XML 1.0勧告で定義された)次の属性型が使用される。

属性型 定義
CDATA 文字データ
ID 文書内一意識別子
IDREF 文書内一意識別子への参照
IDREFS 文書内一意識別子への参照をスペースで分離したリスト
NAME 前述のIDと同じ文字制約をもつ名前
NMTOKEN XML 1.0 [XML]で定義されるとおり,名前トークンだけから構成される名前
NMTOKENS 1個以上の空白で分離したNMTOKEN値
PCDATA 処理された文字データ

これらの事前定義のデータ型に加えて,XHTMLモジュール化は, 次のデータ型及びそのセマンティクスを(適切なものとして)定義する。

データ型 記述
Character [ISO10646]の単一の文字
Charset [RFC2045]に基づく文字符号化
Charsets [RFC2045]に 基づく文字符号化の, スペースで分離したリスト
Color

属性値型"Color"は,[SRGB]で指定される色の定義を参照する。色の値は, (ハッシュ記号を前置した)16進数,又は次の16の色名の一つのどちらかでよい。色名は, 大文字・小文字を区別しない。

色名及びsRGB値
Black = "#000000" Green = "#008000"
Silver = "#C0C0C0" Lime = "#00FF00"
Gray = "#808080" Olive = "#808000"
White = "#FFFFFF" Yellow = "#FFFF00"
Maroon = "#800000" Navy = "#000080"
Red = "#FF0000" Blue = "#0000FF"
Purple = "#800080" Teal = "#008080"
Fuchsia = "#FF00FF" Aqua = "#00FFFF"

従って,色の値"#800080"及び"Purple"のどちらも紫色を参照する。

ContentType [RFC2045]に基づくメディア型
ContentTypes [RFC2045]に基づくメディア型の, コンマで分離したリスト
Coords 定義領域で使用する座標の, コンマで分離したリスト
Datetime 日時の情報
FPI SGML公式公開識別子を表わす文字列
FrameTarget ある動作の結果の対象として使用されるフレーム名
LanguageCode [RFC3066]に基づく言語コード
Length 値は, 利用可能な上下若しくは左右の空間の画素又はパーセントのどちらかでよい。したがって,値"50%"は,利用可能な空間の半分を意味する。
LinkTypes

文書作成者は, 次の認識されるリンク型を使用してよい。ここでは,規約上の解釈を付けてリストする。LinkTypes値は,リンク型のスペースで分離したリストを参照する。リンク型の中では,空白文字は使用できない。

これらのリンク型は, 大文字・小文字を区別しない。つまり,"Alternate"は, "alternate"と同じ意味をもつ。

利用者エージェント,検索エンジンなどは,様々な方法で,これらのリンク型を解釈してよい。例えば,利用者エージェントは, ナビゲーションバーを通してリンク付き文書へのアクセスを提供してよい。

Alternate
リンクが現れる文書に関する代替版を指定する。hreflang属性と共に使用されるとき,それはその文書の翻訳版を意味する。media属性と共に使用されるとき,それは異なるメディアに対して設計された版を意味する。
Stylesheet
外部のスタイルシートを参照する。詳細については,スタイルモジュールを参照のこと。これは,利用者選択可能な代替スタイルシートに関するリンク型"Alternate"と共に使用される。
Start
文書の集合における最初の文書を参照する。このリンク型は,文書作成者がどの文書を集合の開始点と考えるかを検索エンジンに伝える。
Next
文書の線形シーケンスにおいて次の文書を参照する。利用者エージェントは,知覚されるロード時間を削減するために, "next"文書を予めロードすることを選択してもよい。
Prev
順序付けされた一連の文書において,その前の文書を参照する。同義語"Previous"をサポートする利用者エージェントもある。
Contents
目次として働く文書を参照する。同義語ToC("Table of Contents"より)をサポートする利用者エージェントもある。
Index
現在の文書に関する索引を提供する文書を参照する。
Glossary
現在の文書に関連する用語集を提供する文書を参照する。
Copyright
現在の文書に関する著作権表示を参照する。
Chapter
文書の集合の中で章として働く文書を参照する。
Section
文書の集合の中で節として働く文書を参照する。
Subsection
文書の集合の中で小節として働く文書を参照する。
Appendix
文書の集合の中で,付録として働く文書を参照する。
Help
ヘルプ(追加情報,他のソース情報へのリンクなど)を提供する文書を参照する。
Bookmark
ブックマークを参照する。ブックマークは,拡張された文書内の主要エントリ点へのリンクとする。例えば,ブックマークをラベル付けするために, title属性を使用してよい。各文書の中に複数のブックマークを定義してよいことに注意されたい。
MediaDesc

MediaDesc属性は,メディア記述のコンマで分離したリストとする。認識されるメディア記述子のリストを次に示す。

screen
ページのないコンピュータ画面を意味する。
tty
限定された表示能力をもつテレタイプ,端末装置,携帯装置などの,固定ピッチ文字格子を使用するメディアを意味する。
tv
テレビ型の装置(低解像度, カラー,限定されたスクロール能力)を意味する。
projection
プロジェクタを意味する。
handheld
ハンドヘルド装置(小画面,モノクローム,ビットマップ化された画像,制限された帯域幅)を意味する。
print
ページ付けされた不透明素材及び印刷プレビューモードで画面に表示される文書を意味する。
braille
点字フィードバック装置を意味する。
aural
音声合成器を意味する。
all
すべての装置に適する。

XHTMLの将来版は, 新しい値を導入し,パラメタ形式の値を許容することになろう。これらの拡張の導入を促進するために,適合する利用者エージェントは,次のとおりにmedia属性を解析できなければならない。

  • a) 値は, エントリのコンマで分離したリストとする。例を次に示す。
    media="screen, 3d-glasses, print and resolution > 90dpi"
    

    これは, 次にマップされる。

    "screen"
    "3d-glasses"
    "print and resolution > 90dpi"
    
  • b) 各エントリは,US ASCII文字[a-zA-Z](ISO 10646 16進の41-5a, 61-7a), 数字[0-9](16進の30-39), 又はハイフン-マイナス(16進の2d)でない最初の文字の直前で切り捨てられる。例では,次のとおりとなる。
    "screen"
    "3d-glasses"
    "print"
    
  • c) それから, 前述のとおり定義されたメディア型の集合を用いて,大文字・小文字を区別しない一致がとられる。利用者エージェントは, 一致しないエントリを無視してよい。例では,screen及びprintが残る。

備考 スタイルシートは,その中にメディア依存の変化を含んでよい(例えば, CSS @media 構成要素)。この場合,"media=all"を使用するのが相応しい。

MultiLength この値は, Length又は相対長であってよい。相対長は形式"i*"をもち,ここで"i"は整数とする。空間について競合する要素の間で空間を割り当てるとき,利用者エージェントは,まず画素及びパーセントの長さを割り当て,その後残りの利用可能な空間を相対長が分割する。各相対長は,"*"の前の整数に比例する利用可能な空間の一部を受け取る。値"*" は, "1*"に等価とする。したがって,利用者エージェントが画素及びパーセントの空間を割り当てた後で,60画素の空間を利用でき,競合する相対長が 1*,2*, 及び3*であれば,1*は10画素を割り当てられ, 2*は20画素を, 3*は30画素をそれぞれ割り当てられる。
MultiLengths MultiLengthの項目の, コンマで分離したリスト
Number 1個以上の数字
Pixels 値は,描画面(画面,紙)の画素数を表す整数とする。したがって, 値"50"は50画素を意味する。画素の定義に関する規定情報については,[CSS2]を参照のこと。
Script

スクリプトデータは,"script"要素の内容, 及び組込みイベント属性の値とすることができる。利用者エージェントは,HTMLマーク付けとしてスクリプトデータを評価してはならず,しかし代りに,それをデータとしてスクリプトエンジンに渡さなければならない。

スクリプトデータの大文字・小文字の区別は, スクリプト言語に依存する。

要素内容であるスクリプトデータは,文字参照を含んではならないが,属性の値であるスクリプトデータは,それを含んでよいことに注意されたい。

Shape 領域の形状
Text 任意のテキストのデータであって,多くの場合,人間が読取り可能であること意味する。
URI [URI]に基づく統一資源識別子
URIs [URI]に基づく統一資源識別子の, スペースで分離したリスト


4.4. 抽象モジュール定義の例

4.4は,前述のとおり定義された構文規則の利用方法の例として,抽象モジュールの例を定義する。この例は, 定義されたすべての多様な構文要素を使用しようとしているため,非常に複雑になっている。典型的なモジュール定義は,これよりもかなり簡単になる。最後に,このモジュールが属性集合Commonを参照することに注意されたい。これは,ほとんどの要素が必要とするすべての基本属性を含むXHTMLモジュール化規定で定義される。

4.4.1. XHTMLスキーモジュール

XHTMLスキーモジュールは,スキーロッジの外見を記述する際に使用されるマーク付けを定義する。このモジュールで定義される要素及び属性を次に示す。

要素 属性 最小の内容モデル
resort Common, href (CDATA) description, Aspen+
lodge Common description, (Aspen - lift)+
lift Common, href description?
chalet Common, href description?
room Common, href description?
lobby Common, href description?
fireplace Common, href description?
description Common PCDATA*

このモジュールは,内容集合Aspenをも最小の内容モデルlodge | lift | chalet | room | lobby | fireplaceで定義する。