4. 抽象モジュール定義 (Defining Abstract Modules)

内容

本節は規範的

抽象モジュールとは、 XHTML モジュールの散文的なテキストと、非定型的な約束を用いた定義である。 そのような定義は一般的に文書型の機械処理においては一般に使いやすいものではないのだが、人がモジュールに含まれるものを理解する手助けとしてはとても重要である。 本節は XHTML 抽象モジュールが定義される方法を定義している。 XHTML 適合モジュールは、抽象モジュール定義を提供することは 必須でない。しかしながら、 XHTML モジュールを開発する誰もが、そのモジュール利用の便宜のための概要を提供することが推奨される。

4.1. 構文的約束 (Syntactic Conventions)

抽象モジュールは定型的な文法では定義されない。しかしながら、その定義は以下の構文上の約束を強く遵守する。これらの約束は XML DTDs のそれに似ており、 XML DTD 作者は慣れているはずである。それぞれの構文上の要素は、ここに定義された代数に適合する、より複雑な表現を作るために、他のものと結合され得る。

要素名
要素が内容モデルに含まれるとき、その明白な名前がリストされることになるだろう。
内容セット
幾つかのモジュールは、 内容セット と呼ばれる明白な要素名のリストを定義する。内容セットが内容モデルに含まれるとき、その名前がリストされることになるだろう。
expr ?
ゼロ、又は一回、 expr が出現してよい。
expr +
一回以上、 expr の出現が必須である。
expr *
ゼロ回以上、 expr が出現してよい。
a , b
表現 a が必須であり、 表現 b が後続する。
a | b
表現 a 又は b が必須である。
a - b
表現 b を除いた表現 a が許される。
括弧
表現が括弧内に含まれれば、括弧内のいかなる副表現の評価も、括弧の外の表現の評価よりも先に置かれる(入れ子になった最も深いレベルの文字列が最初)。
定義済み要素の展開
幾つかの実例(インスタンス)では、モジュールは要素を追加する。これらの実例では、要素名はアンド記号 (&) に後続する。
必須属性の定義
ある要素がある属性の定義を必須とするとき、その属性名はアステリスク (*) に後続する。
属性値の型定義
モジュールが属性値の型を定義するとき、属性値の後の括弧内に型をリストする。
適正な属性値の定義
モジュールが適正な属性値を定義するとき、属性値名に後続する括弧内で、(引用符で括って)明確な属性値名をリストし、垂直線 (|) で分ける。 その属性が初期値を持つとき、その値はアステリスク (*) に後続する。 その属性が固定値を持つとき、その属性名は等号 (=) に後続し、固定値は引用符に括られる。

4.2. 内容タイプ (Content Types)

抽象モジュール定義は、各々のモジュールに対する、最小の、中核的な内容モデルを定義する。 これらの最小内容モデルは、モジュール自身内の要素を参照する。 これらはまた、その抽象モジュールが依存する他のモジュール内の要素も参照する。 最終的には、多くの場合、内容モデルは、一つ以上の要素に対する内容としてテキストが許されることを要求する。 これらの場合、テキストのために使われるシンボルは PCDATA である。 これは、 XML 1.0 勧告で定義された用語であり、文字データを処理するように参照するものである。 内容タイプは、 EMPTY として定義されることもあり、要素がその最小内容モデルに全く内容を持たないと言うことを意味する。

4.3. 属性タイプ (Attribute Types)

幾つかの実例(インスタンス)では、属性に対する、属性値のタイプや許された値の明白なセットを定義することが必要である。 以下の属性タイプ( XML 1.0 勧告で定義されている)は、抽象モジュールの定義に使われる:

属性タイプ 定義
CDATA 文字データ (Character data)
ID 文書内一意識別子 (A document-unique identifier)
IDREF 文書内一意識別子の参照 (A reference to a document-unique identifier)
IDREFS スペースで区切られた文書内一意識別子の参照のリスト (A space-separated list of references to document-unique identifiers)
NAME 上記の ID と同じ文字列に制限された名前 (A name with the same character constraints as ID above)
NMTOKEN XML 1.0 [XML] で定義された名前トークンだけで構成された名前 (A name composed of only name tokens as defined in XML 1.0 [XML])
NMTOKENS 空白で区切った一つ以上の NMTOKEN 値 (One or more white space separated NMTOKEN values)
PCDATA 解析対象の文字データ (Processed character data)

これらの定義済みデータ・タイプに加えて、 XHTML モジュール化では、以下のデータ・タイプとその(適当な)意味を定義する:

データ・タイプ 記述
Character [ISO10646] 内の一つの文字
Charset [RFC2045] による文字符号化
Charsets スペースで区切った [RFC2045] による文字符号化のリスト
Color

属性値タイプ "Color" は、 [SRGB] で指定されている色定義を参照する。 色値は16進数(ハッシュ記号を接頭文字とする)で指定しても、以下の16個の色名で指定しても良い。 色名は大文字・小文字を区別しない (case-insensitive)。

色名 と 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 公式公開識別子 (SGML Formal Public Identifier) を表す文字列
FrameTarget ある動作の結果の目的地として用いる、フレーム名
LanguageCode [RFC3066] による言語コード
Length この値は、ピクセル、又は、利用可能な垂直方向もしくは水平方向のスペースに対するパーセントで指定して良い。つまり、 "50%" は利用可能なスペースの半分を意味する。
LinkTypes

作者は以下の認識済みリンク・タイプを利用してよく、ここに約束上の解釈と共にリストされている。 LinkTypes 値は、スペースで区切られたリンク・タイプのリストを参照する。 リンク・タイプ中の空白類文字は許されない。

これらのリンク・タイプは大文字・小文字を区別しない、すなわち、 "Alternate" は "alternate" と同じ意味である。

ユーザー・エージェント、サーチ・エンジンなどは、これらのリンクタイプを様々な方法で解釈して良い。例えば、ユーザー・エージェントは、ナビゲーション・バーでリンクされた文書へのアクセスを提供するかもしれない。

Alternate
このリンクが置かれた文書に対する代わりの版を明示する。 hreflang 属性と共に使われたときは、当該文書の翻訳版を意味する。 media 属性と共に使われたときは、異なるメディア用に設計された版を意味する。
Stylesheet
外部スタイル・シートを参照する。 細部に関しては、 Style Module を参照せよ。 ユーザー選択可能な代替スタイルシートを参照するためには、 "Alternate" リンク・タイプと共に使われる。
Start
文書集合の最初の文書を参照する。 このリンク・タイプは、作者が、どの文書がその文書集合の起点になると考えているのかを教えてくれる。
Next
連続的に配置されている文書集で、次の文書を参照する。 ユーザー・エージェントは、体感読み込み時間を減少させるために、 "next" 文書を事前に読み込むようにするかもしれない。
Prev
一連の並べられた文書集で、一つ前の文書を参照する。 幾つかのユーザー・エージェントは、同義語 "Previous" もサポートする。
Contents
目次として用意されている文書を参照する。 幾つかのユーザー・エージェントは、同義語 ToC ("Tabel 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 属性値を以下のように構文解析しなければならない:

  1. 値が、複数エントリのコンマで区切られたリストである。例えば、
    media="screen, 3d-glasses, print and resolution > 90dpi"
    

    は、次のようにマップされる。

    "screen"
    "3d-glasses"
    "print and resolution > 90dpi"
    
  2. 各エントリは、 US ASCII 文字 [a-zA-Z] (ISO 10646 十六進数で 41-5a, 61-7a)、数字 [0-9] (十六進数で 30-39)、ハイフン・マイナス (十六進数で 2d)以外の文字が最初に現れる直前で切り捨てられる。例えば、上記は、次のようになる:
    "screen"
    "3d-glasses"
    "print"
    
  3. 大文字・小文字を区別しないで合致することは、上記で定義されたメディア・タイプのセットに対して為される。ユーザー・エージェントは、合致しないエントリを無視しても良い。 例えば、上記のものでは、 screenprint を残す。

注意。 スタイル・シートは、その内部でメディア依存のバリエーション(すなわち、 CSS @media 構造)を含むことがある。 この場合は、"media =all" とするのが適当だろう。

MultiLength この値は、 Length 又は相対長 (relative length) が許される。 相対長は "i*" と言う形式をもち、 "i" は整数である。 複数の要素が競合するスペースを割り当てるとき、ユーザー・エージェントは、最初にピクセル、パーセント長を割り当て、而して残りの利用可能なスペースを相対長に分割する各々の相対長は、 "*" に先行する整数比に従って利用可能なスペースの一部を受け取る。 値 "*" は "1*" に等価である。 従って、ユーザー・エージェントがピクセル及びパーセント・スペースを割り当てた後で、 60 ピクセルのスペースが利用可能であり、これを相対長 1*, 2*, 3* が競合する場合は、 1* は 10 ピクセル、 2 は 20 ピクセル、 3 は 30 ピクセルが割り当てられる。
MultiLengths コンマで区切られた MultiLength タイプのアイテムのリスト
Number 一つ以上の数字
Pixels この値は、キャンバスのピクセル数を表す整数。 すなわち、値 "50" は 50 ピクセルを意味する。 ピクセルの定義に関する規範的情報については、 [CSS2] を参照されたい。
Script

スクリプト・データは、 "script" 要素の内容及び組み込みイベント属性の値であり得る。 ユーザー・エージェントは、スクリプト・データを、 HTML マークアップとして評価してはならず、そのデータをスクリプト・エンジンに渡さなければならない。

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

要素内容のスクリプト・データは、文字参照を含んではならない、属性値のスクリプト・データは含んで良いと言うことに注意されたい。

Shape 領域の形
Text 任意のテキスト・データであり、人間が読んで分かるということとほぼ同意である。
URI [URI] による Uniform Resource Identifier。
URIs スペースで区切られた [URI] による Uniform Resource Identifiers。

4.4. 抽象モジュール定義例 (An Example Abstract Module Definition)

本節は参考的

本節は、上記の構文規則の利用方法の例として、抽象モジュールのサンプルを定義する。 このサンプルは、全ての構文的要素の定義を利用しようとするため、少々複雑である。 典型的なモジュール定義は、これより大分シンプルになるだろう。 結果として、このモジュールは、属性集合 Common を参照していることに注意されたい。 これは、 XHTML モジュール化仕様における、殆どの要素で必要となる全ての基礎的な属性を含んだ集合の定義である。

4.4.1. XHTML スキー・モジュール (XHTML Skiing Module)

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*

このモジュールは、最小内容モデル lodge | lift | chalet | room | fireplace を持った内容セット Aspen も定義する。



この邦訳は、私 SUGAI, Manabu が私的な勉強のために作成したものです。訳文の正確さは保証できません。特に技術的な利用においては、 W3C の原典を参照してください。

last modified: 10th/Aug./2001; Translated by SUGAI, Manabu.

SEO [PR] !uO z[y[WJ Cu