標準情報(TR)    TR X 0088:2003


拡張可能なスタイルシート言語(XSL) 1.0

Extensible Stylesheet Language (XSL) Version 1.0



序文

この標準情報(TR)は,2001年10月にWorld Wide Web Consortium(W3C)から公表されたExtensible Stylesheet Language (XSL) Version 1.0勧告を翻訳し,技術的内容を変更することなく作成した標準情報(TR)(タイプU)である。


0. 適用範囲

この標準情報(TR)は,スタイルシートを表現する言語である拡張可能なスタイルシート言語(XSL)の機能及び構文を規定する。それは,次の二つの部分から成る。

XSLスタイルシートは,XML文書のクラスの表示を,そのクラスのインスタンスが,フォーマット化語彙を使用するXML文書にどのように変換されるかを記述することによって指定する。

1. 導入及び概要

この標準情報(TR)の原規定は,拡張可能なスタイルシート言語(XSL)を定義する。XSLは,スタイルシートを表現する言語とする。任意に構造化されたXML[W3C XML]文書又はデータファイルのクラスがあるとき,設計者は,XSLスタイルシートを使用して,その構造化された内容をどのように表示するのが望ましいか,すなわち,ウェブブラウザ若しくはハンドヘルド装置のウィンドウ,又はカタログ,報告書,パンフレット若しくは書籍における物理的ページの集合,といった表示メディア上に,ソース内容が,どのように,スタイル付けされ,レイアウトされ,ページ付けされるのが望ましいか,に関する設計者の意図を表現する

1.1 スタイルシートの処理

XSLスタイルシートプロセサは,XMLの文書又はデータ,及びXSLスタイルシートを受け取って,そのスタイルシートの設計者が意図したXMLソース内容の表示を作成する。 この表示処理には,二つの局面が存在する。第一は,XMLのソース木から結果木を構築することとし,第二は,結果木を解釈して,ディスプレイ上,紙面上,音声,又はその他のメディア上での表示に適するフォーマット結果を生成することとする。 第一の局面を木変換と呼び,第二の局面をフォーマット化と呼ぶ。フォーマット化の処理は,フォーマッタが実行する。このフォーマッタは,単にブラウザ内のレンダリングエンジンであってもよい。

木変換は,結果木の構造をソース木の構造とは大きく異なるものにすることを可能にする。例えば,元のソース文書をフィルタ処理した選択として目次を追加できたり,ソースデータをソートされた表形式の表示に再整理できたりする。 結果木を構築する際に,木変換処理は,その結果木をフォーマットするのに必要な情報も追加する。

フォーマット化は,結果木にフォーマット化セマンティクスを含めることによって可能となる。フォーマット化セマンティクスは,フォーマット化オブジェクトのクラスのカタログによって表現される。結果木のノードが,フォーマット化オブジェクトになる。フォーマット化オブジェクトのクラスは,ページ,段落,表などの組版抽象化を示す。 字下げ制御,語間スペース及び文字間スペースの制御, ウィドウ及びオーファンの制御,並びにハイフン付けの制御といったフォーマット化特性の集合によって,これらの抽象化の表示に関するより精密な制御が与えられる。XSLでは, フォーマット化オブジェクト及びフォーマット化特性のクラスが,表示の意図を表現するための語彙を与える。

XSL処理モデルは,概念的であることだけを意図されている。実装は,これらを別の処理として提供することを必須とされていない。さらに,実装は,概念的XSL処理モデルを使用して処理される場合と同じ結果を生成するいかなる方法で,ソース文書を自由に処理してよい。詳細な概念的モデルを描いた図を次に示す。

The XSL two processes: transformation and formatting   [D]

図1.1 XSLの二つの処理,変換及びフォーマット化

1.1.1 木変換

木変換が,結果木を構築する。XSLでは,この木は要素及び属性の木と呼ばれ,主として"フォーマット化オブジェクト"名前空間の中のオブジェクトをもつ。この木では,フォーマット化オブジェクトは,XML要素として表現され,XMLの属性及び値の対の集合によって表現される特性をもつ。 フォーマット化オブジェクトの内容は,XML要素の内容とする。木変換は,XSLT勧告[XSLT]で規定される。この概念的処理を描いた図を次に示す。

The XSL Transformation process   [D]

図1.2 他の語彙への変換

XSLスタイルシートは,木変換で使用される。スタイルシートは,木構築規則の集合を含む。木構築規則は,二つの部分をもつ。その一つを,ソース木の中の要素とのマッチをとるパタンとし,もう一つを,結果木の一部を構築するテンプレートとする。 これによって,類似したソース木構造をもつ広範なクラスの文書に対してスタイルシートを適用することが可能になる。

XSL及び/又はXSLTの実装には,木構築の結果をXML文書として出力できるものもある。これは,フォーマット化オブジェクト及びフォーマット化特性を含むXML文書を出力することを可能にする。この機能は,XSLプロセサにとって必要なものではなく,奨励されてもいない。しかし,既知のクライアントのための入力を準備するサーバといった,これが重要となる場合がある。例えば,WAP(http://www.wapforum.org/faqs/index.htm)サーバが,WAP処理可能なハンドヘルド装置のために特殊化された入力を準備する方法が,この場合にあたる。 クライアントがフォーマット化のオブジェクト及び特性を受け取ることができることを送信側が知らないか,又は送信された文書がフォーマット化のオブジェクト及び特性をもつ文書の構成に際して使用されるソース文書への参照を含まないかのどちらかの場合,アクセス可能性を保つために,ウェブシステムの設計者は,フォーマット化のオブジェクト及び特性を含む文書の送信を要求(又は使用)する体系を開発しないほうがよい。

1.1.2 フォーマット化

フォーマット化は,フォーマット化オブジェクト木形式の結果木を解釈し,"fo"名前空間におけるXMLの要素及び属性の木が構築された際のスタイルシートの設計者が意図する表示を生成する。

XSLがサポートするフォーマット化オブジェクトの語彙,つまりfo:要素型の集合は,設計者に利用可能な組版抽象化の集合を表現する。 セマンティクスの上では,各フォーマット化オブジェクトは,ページ付け,レイアウト及びスタイル付けの情報の一部に関する規定を表現する。それらの情報は,結果木全体をフォーマット付けした結果として,そのフォーマット化オブジェクトの内容に適用される。 各フォーマット化オブジェクトのクラスは,特定の種類のフォーマット化の振る舞いを表現する。例えば,ブロックフォーマット化オブジェクトクラスは,段落内容の行への区切りを表現する。規定の他の部分は,他のフォーマット化オブジェクトから導かれてもよい。例えば,段落のフォーマット化(ブロックフォーマット化オブジェクト)は,ブロックフォーマット化オブジェクトの特性の規定にも,フォーマッタがブロックを配置するレイアウト構造の規定にも依存する。

フォーマット化オブジェクトのインスタンスと関連付けされる特性は,そのオブジェクトのフォーマット化を制御する。フォーマット結果を直接指定する,"color"などの特性もあり,特定のフォーマット結果を指定せず,可能なフォーマット結果の集合を制約するだけの,'space-before'などの特性もある。フォーマッタは,美学などの他の可能な考慮すべき事項の中から選択を行うこともできる。

フォーマット化は,領域木と呼ばれる幾何的領域の木の生成から成る。 幾何的領域は,1ページ以上(ブラウザは通常, 1ページを使用する。)の列の上に位置付けされる。各幾何的領域は,ページの上に位置をもち,その領域に何を表示するかの指定をもつ。背景,パディング及び境界をもってもよい。例えば,単一文字のフォーマット化は,文字を視覚的に表示するのに使うグリフを保持するために十分な大きさの領域を生成し,このグリフが,この領域に表示される。これらの領域は,入れ子になってもよい。例えば,グリフは,行内,ブロック内,ページ内などに位置付けしてもよい。

レンダリングは,領域木,すなわち(領域のページ及びその集まりによる)表示の抽象モデルを取り込んで,コンピュータ表示画面上のブラウザウィンドウ又は紙シートなどの関連メディア上に表示を行わせる。この規定では,レンダリングのセマンティクスは,詳細に記述されない。

フォーマット化の第1段階は,XSLT変換によって得られる要素及び属性の木を"オブジェクト化する"こととする。木をオブジェクト化することとは,基本的には,木の要素をフォーマット化オブジェクトノードに転じ,属性を特性指定に転じることから構成される。この段階の結果は,フォーマット化オブジェクト木となる。

Objectification of the FO tree   [D]

図1.3 XSLフォーマット化オブジェクト木の構築

オブジェクト化の段階の一部として,結果木に現れる文字は,fo:characterノードによって置換される。空白文字だけから構成され,対応するフォーマット化オブジェクトがfo:characterノードを子どもとして許容しない要素の子どもである,テキストノードの文字は,無視される。対応するフォーマット化オブジェクトがfo:characterノードを子どもとして許容しない要素内の他の文字は,エラーとする。

fo:instream-foreign-objectの内容は,オブジェクト化されない。その代わりに,fo:instream-foreign-object要素を表現するオブジェクトは,要素及び属性の木の適切なノードを指し示す。同様に,fo:declarationのどのような非XSL名前空間の子要素も,オブジェクト化されない。その代わりに,fo:declaration要素を表現するオブジェクトは,要素及び属性の木の適切なノードを指し示す。

フォーマット化の第2段階は,フォーマット化オブジェクト木を洗練化し,洗練フォーマット化オブジェクト木を生成することとする。洗練化の過程は,特性(property)から特色(trait)へのマッピングを扱う。これは,次のことから成る。

洗練の詳細については, [5 特性の洗練及び解決]を参照すること。

洗練の段階を,次に図示する。

Refinement of the FO tree   [D]

図1.4 フォーマット化オブジェクト木の洗練

フォーマット化の第3段階は,領域木の構築とする。領域木は,各フォーマット化オブジェクトのセマンティクスに記述されるとおりに生成される。各フォーマット化オブジェクトクラスに適用可能な特色は,領域の生成方法を制御する。すべてのフォーマット化特性は,すべてのフォーマット化オブジェクトに指定されてもよいが,各フォーマット化オブジェクトクラスに対しては,フォーマット化特性の部分集合だけが,そのクラスのオブジェクトのための特色を決定するのに使われる。

領域生成を次の図に示す。

Area tree generation   [D]

図1.5 領域木の生成

FO-to-area process summary   [D]

図1.6 処理の概要

1.2 XSLの利点

HTMLの場合と異なり,XMLの要素名は,組込みの表示セマンティクスをもたない。スタイルシートなしには,プロセサは,画一的な文字列として以外に,XML文書の内容をどのようにレンダリングするかを知ることはできない。XSLは,XML構文を用いてスタイルシートを書くための広範なモデル及び語彙を提供する。

この標準情報(TR)は,これらのXSLプロセサを実装する者のためのものとする。XSLスタイルシートを書く者のための参照マニュアルとしてこの標準情報(TR)を使用することはできるが,この標準情報(TR)は,本来,解説資料ではない。

XSLは,段階スタイルシート[CSS2]及び文書スタイル意味指定言語[DSSSL]の先行する作業の上に構築されている。XSLのフォーマット化のオブジェクト及び特性の多くは,特性の共通的な集合に対応するが,それだけでは,XSLのすべての目的を達成するのに十分ではない。特にXSLは,ページ付け及びレイアウトのモデルを導入する。これは,現在利用可能なものを拡張し,この規定に示される簡単なページモデルを越えるページ構造へと,直接的な方法で順次拡張されることができる。

1.2.1 ページ送り及びスクロール

スクロール可能な文書ウィンドウ及びページ付けの両方を実行することは,XML内容のスタイル付け(及びページ付け)に新たな複雑さを導入する。ページ付けは,内容の上に任意の境界(ページ又はページ上の区画)を導入するので,ページ,区画及びブロック境界におけるスペーシングの制御などの概念が極めて重要になる。 (ページを上下方向に調整するための)行間のスペース調整,並びに(テキストの行を揃えるための)単語及び文字の間のスペース調整に関連する概念も存在する。 これらは,今日のブラウザに見られるものなどの,単純でスクロール可能な文書ウィンドウと共に常に現れるわけではない。しかし,本体,上の小口,下の小口及び左右の側線といった多くの区画をもつページと,"フレーム"を用いるウェブ表示との間には一致がある。内容の区画への配布は,基本的にはどちらの場合においても同じであって,XSLは,類似の方法で両方の場合を扱う。

XSLは,ウェブ上での閲覧に関して等価な"フレーム"に基づく構造を与えるためだけでなく,文書がページ付けされるときに必要な機能に対する制御を設計者に与えるために,開発された。 この制御を達成するために,XSLは,フォーマット化オブジェクト及びフォーマット化特性の集合を拡張した。さらに,スタイル付け可能なXMLソース構成要素(要素,属性,テキストノード,注釈及び処理命令)の選択は,XSLT及びXPathに基づいており,利用者に,極めて強力な選択機構を提供する。

フォーマット化のオブジェクト及び特性の拡張の設計は,最初はDSSSLによって影響を受けた。しかし実際の拡張は,その基礎となったDSSSL構成要素に必ずしも類似してはいない。CSS2規定により近づけて適合させるか,又はDSSSLよりも簡単に問題に対処するかのどちらかのために,DSSSLから離れた拡張もある。

拡張が行われた方法には幾つかある。 右向き及び左向きだけでなく,下向き及び上向きといった多様な表記方法を反映するために値を追加した場合など,新しい値を追加することで十分だった場合がある。

同時に複数の値をもつ一つの特性としてCSS2で表現される共通特性を,その特性の独立の側面を独立に制御するために,幾つかの新しい特性に分割する場合もある。例えば,"white-space"特性は,次の四つの特性,すなわち,どのように空白を処理するかを制御する"space-treatment"特性,どのように改行を処理するかを制御する"linefeed-treatment"特性,複数の連続するスペースをどのように縮退するかを制御する"white-space-collapse"特性,及び行が列の端などの境界に遭遇した際に行が自動的にどのように折り返されるかを制御する"wrap-option"特性,に分割される。 一つの特性を複数の(下位)特性に分割することの効果は,等価な既存のCSS2の特性を,それが含む下位特性の集合に対する"簡略記述"とすることになる。

新しい特性を生成することが必要になったさらに他の場合もある。例えば,どのようにハイフン付けを行うかを制御する,多くの新しい特性がある。これらは,(スクリプト毎に変化する)"hyphenation-character"などの特性だけでなく,テキストが属するスクリプト及び国を識別することを含む。

XSLにおける幾つかのフォーマット化オブジェクト及び多くの特性は,CSS2規定から来ており,両者間の互換性を確保している。

XSL特性には,次のとおりに識別可能な四つのクラスが存在する。

1.2.2 選択子及び木構築

前述のとおり,XSLは木構築及びパタン選択のためにXSLT及びXPathを使用し,混在した名前空間が関与する場合でも,どのようにソース内容の部分が表示されるか,及びどの特性がその内容部分と関連付けされるかに高度の制御を与える。

例えば,XPathのパタンは,文字列の一部又は段落のN番目のテキストノードの選択を可能にする。 これによって利用者は,例えば,処理段階にある第3番目の段落すべてをボールドで表すという規則をもつことができる。さらに,包含要素の内容部分又は属性の数値に基づいて,特性をその内容部分と関連付けることができる。 これによって,負の値を"赤"で表し,正の値を"黒"で表すというスタイル付け規則をもつことができる。ソース木の特定の文脈に依存してテキストを生成できたり,ソース木の一部を異なるスタイルで複数回表示したりも可能になる。

1.2.3 拡張ページレイアウトモデル

XSLにはフォーマット化オブジェクトの集合が存在する。これは,ページ又は"フレーム"のレイアウト構造(本体の大きさはどのくらいか,複数の列があるか,上の小口,下の小口又は側線があるか,これらの大きさはどのくらいかなど),及びXMLソース内容をこれらの"コンテナ"に配置する規則の両方を記述する。

レイアウト構造は,"simple-page-master"フォーマット化オブジェクトの一つ以上のインスタンスによって定義される。このフォーマット化オブジェクトは,ページ上の(複数の列をもつ)本体,上の小口,下の小口)及び側線に対して,独立に埋められる区画を定義することを可能にする。 これらのsimple-page-masterは,その様々なsimple-page-masterをどの順序で使わなければならないかを指定するページシーケンスにおいて使用できる。ページシーケンスは,どのようにスタイル付けされた内容がそれらのページを埋めるかをも指定する。 このモデルは,ページのインスタンスがフォーマッタによって自動的に生成される本の章のためのsimple-page-masterのシーケンスを指定したり,雑誌のレイアウトで使われるような明示的なページシーケンスを指定することを可能にする。スタイル付けされた内容は,区画の名前を,結果木のスタイル付けされた内容に添付される名前に関連付けることによって,ページの様々な区画に割り当てられる。

これらのレイアウトフォーマット化のオブジェクト及び特性に加えて,ページ付けされた文書によくあるフォーマット化に対して,制御のレベルを提供するために設計された特性が存在する。これは,ハイフン付けに対する制御を含み,同一の行若しくは列の中にある,又は同一のページ上にある他のテキストに続くテキストに対する制御の拡張を含む。

1.2.4 広範な領域モデル

特性及びフォーマット化オブジェクトの拡張,特に,ブロック,行及びページ区画のスペーシングに対する制御,並びに行内制御に関する領域でのそれらの拡張は,CSS2のボックスフォーマット化モデルの拡張を必要とした。この拡張モデルは,この規定の[4 領域モデル]に示される。CSS2のボックスモデルは,このモデルの部分集合とする。 [7.2 XSL領域及びCSSボックスモデル]における,CSS2のボックスモデルの用語とXSL領域モデルの用語とのマッピングを参照すること。領域モデルは,字,語,行及びブロックの間の関係とスペース調整との記述のための語彙を提供する。

1.2.5 国際化及び表記方法

特に極東がそうだが,下向きに語が進行し,左向き(最も通常)又は右向きのどちらかに行が進行するのを典型的な設定とするスクリプトがある。他の方向も使用される。 (上下左右を用いた)固定した絶対参照フレームによって表現される特性,及び右向き又は左向きの語の進行の概念だけに適用される特性は,これらのスクリプトで書かれたテキストに対して十分には一般化されていない。

そのために,XSL(及びその前はDSSSL)は,フォーマット化のオブジェクト及び特性の記述には,相対参照フレームを用いる。CSS2の参照フレームが(上下左右の)4方向をもつのと同様に,XSLの相対参照フレームは,(前,後,開始及び終了の)4方向をもつが,これらは"表記方法(writing-mode)"に対して相対的とする。"writing-mode"特性は,ページ又は画面の上にグリフ,語,行,ブロックなどを正しく配置するために,フォーマッタが必要とする方向を制御する手段とする。"writing-mode"は,これらの基本方向を表現する。表記方法(writing-mode)には,"右向き-下向き"("lr-tb"と表す。),"左向き-下向き"("rl-tb"と表す。),"下向き-左向き"("tb-rl"と表す。)などがある。"writing-mode"特性の記述については,[7.26.7"writing-mode"]を参照すること。 通常,writing-mode値は,二つの方向を指定する。 最初の指定は,行内進行方向であって,語を配置する方向を決定する。次の指定は,ブロック進行方向であって,ブロック(及び行)を順次配置する方向を決定する。 さらに,文字のシーケンスのための行内進行方向は,それらの文字のためのUnicode文字データベース[UNICODE Character Database]及びUnicode双方向(BIDI)アルゴリズム[UNICODE TR9]によるそれらの文字の双方向性文字型を用いて,暗黙的に決定されてもよい。

"writing-mode"特性の値の名前において明示的である方向に加えて,表記方法は,(下付き添字及び上付き添字に用いる)シフト方向などの,フォーマッタが必要とする他の方向を決定する。

1.2.6 リンク付け

HTMLとは異なり,XMLは組込みセマンティクスをもたないので,ハイパテキストリンクの組込みの概念はない。この文脈において,"リンク"とは,http://www.w3.org/TR/html401/struct/links.html#h-12.1で定義される"ハイパテキストリンク"だけではなく,http://www.w3.org/TR/xlink/#introに定義される"リンク"の見方の幾つかも示す。すなわちこの場合,"リンクとは,XLinkのリンク付け要素によって明示的にされる,二つ以上の資源又は資源の部分の間の関係とする"。したがって,XSLは,リンク参照の内容とリンクをたどるセマンティクスとをフォーマット化する双対のセマンティクスを表現するフォーマット化オブジェクトをもつ。

XSLは,たどられているリンクターゲットの表示を変更する幾つかの機構を提供する。 これらの機構の一つは,リンクターゲットを次のとおりに表示することを可能にする。すなわち,表示領域の中でのリンクターゲットの配置に関する制御を考慮する一方で,元のリンクアンカとの関係においてリンクターゲットが表示される方法に関する制御をある程度は許可する。

XSLは,要素の活性状態に応じて,要素をフォーマットする方法を変更するための一般的機構も提供する。これは,与えられたリンク参照が既にたどり済みであるかどうかを示すために,又は例えば,マウスがリンク参照の上で留まっているかどうかなどに応じて,与えられたスタイルを適用するために,リンクに関係して特に有用になる。


       
前へ

目次

トップへ          

次へ