W3C勧告XSLバージョンXSL 1.1の「Introduction and Overview / XSL仕様と外観」とは
Extensible Stylesheet Language (XSL) Version 1.1 / W3C Recommendation 05 December 2006の目次に沿った日本語訳です。
当サイト管理人が2008年09月、意訳したものですが、構文解釈の違いや翻訳の違いが含まれるかもしれません。正式文書はW3C 各種仕様書(英語版)である事を予めご了承ください。
<< XSL 1.1 Table of Contents / 目次
1 仕様外観 1.1 スタイルシート処理 1.1.1 木(ツリー)変換 1.1.2 書式設定 1.2 XSLの利便性 1.2.1 ページ立てとスクロール 1.2.2 セレクタと木(ツリー)構造 1.2.3 拡張されたページレイアウトモデル 1.2.4 統合エリアモデル 1.2.5 国際化と記述モード 1.2.6 リンク |
以下は[1 仕様・外観]一覧から小項目に分割しています。
1 仕様外観 1.1 スタイルシート処理 1.1.1 木(ツリー)変換 1.1.2 書式設定 |
XSLのスタイル設定対象としては、ウェブブラウザや携帯情報端末のようなウィンドウもあれば、カタログ、レポート、パンフレットや本など物理的なページのセットとして装飾されレイアウトされる事も想定しています。
XSLプロセッサには、大きく2つの側面があり、一つは、「ツリー(木)変換」といい、ソースとなるツリーを結果ツリーとして構築する事、もうひとつは、「書式設定」でディスプレイや紙、音声やその他のメディアなど生成されたものの書式として解釈する事であり、XMLソースとして文書やXMLの中にあるデータ、そしてプレゼンテーション資料などスタイルシート作者の意図する内容に変換します。
XSLによる結果ツリーのノードはフォーマットオブジェクト/オブジェクト型(FO)と呼ぶことができますが、フォーマット済みというのは、フォーマット済みのオブジェクトのクラスであるcatalogとして表現されるという事です。
オブジェクト型(FO)のクラスとは、ページや段落のような印刷上の抽象概念です。
結果ツリーには、ソースツリー(ソースとなるツリー構造)にあるものを変換するだけでなく、必要に応じて(要素や属性を)追加する事もできます。
木変換が構築する結果ツリーは、XMLでは「要素と属性ツリー」と呼ばれ、元来「オブジェクト型」名前空間にあるオブジェクトを持つ木構造ツリーで、このツリー上では、オブジェクト型は、属性と属性値のセットであるプロパティを持つXML要素として表され、オブジェクト型の内容というのは、XML要素内容の事です。
XSLスタイルシートは、このような木変換の規則集合を持ち、木変換を利用しますが、この木変換の規則集合には2つの側面があり、その1つはソースツリー中の要素とのパターンマッチングで、もう1つは結果ツリーの一部であるテンプレートとのパターンマッチングです。
書式設定は、既に構築されている「fo」という名前空間にある要素と属性を利用したスタイルシート設定でプレゼンテーション用に生成されたオブジェクト型ツリーの中の結果ツリーを解釈します。
オブジェクト型の語彙は、[ fo:要素タイプ ]として利用できるようにXSLがサポートします。
それぞれのオブジェクト型というのはフォーマットされた完全な結果ツリーであるオブジェクト型の内容から提供されるページ番号付けやレイアウトといったスタイル設定情報を明確に示します。
オブジェクト型を持つプロパティは、そのオブジェクトをフォーマットする目的を持っていて、たとえば[ color ]は直接フォーマットされた結果に反映され、一方で[ space-before ]というプロパティは、いくつかのフォーマットされた結果それぞれに適用するものではなく、フォーマットが可能なセットに限定されます。
幾何学的な領域を示すツリーから成るフォーマットは、「エリア(領域)ツリー」と呼ばれ、幾何学的な領域は、1ページ以上のページに置かれる事がありますが、ページ上のそれぞれの幾何学的な領域とは、背景画像や境界、線を持つ事もある領域の中にたとえば象形文字・絵文字(日本語や中国語・韓国語などの2バイト以上の多バイト文字を含む)を視覚的に表示するもので、この時には、単独の象形文字・絵文字を表示するのに十分な行やブロックといった領域をページ内に確保します。
フォーマットの第一段階は、XSLTを介して要素と属性を対象化する事で、基準となるツリーの対象化とは、オブジェクト型ツリーにある要素と固有のプロパティを持つ属性から構成される事を表します。
フォーマットの第二段階は、オブジェクト型は「洗練されたオブジェクト型ツリー」を生成する事であり、以下の5つから成っています。
|
フォーマットの第三段階は、エリアツリーを構築する事で、領域ツリーはそれぞれのオブジェクト型の意味を記述するものとして生成され、特徴としては、それぞれのオブジェクト型クラスがどのように領域が生成されるかを操作して適用する事が出来るという点です。
但し、全てのプロパティ書式が全てのオブジェクト型に適用される事もあれば、それぞれのオブジェクト型クラスによって適用されるか否かが決まる事もあれば、クラスのオブジェクト特性の取り決めによってプロパティ書式のサブセットに限定される場合もあります。
1.2 XSLの利便性 1.2.1 ページ立てとスクロール 1.2.2 セレクタと木(ツリー)構造 1.2.3 拡張されたページレイアウトモデル 1.2.4 統合エリアモデル 1.2.5 国際化と記述モード 1.2.6 リンク |
XMLはHTMLと異なり、プレゼンテーションに特化したものではなく、スタイルシートがなければ、プロセッサは、XML文書のレンダリング方法を知る事ができません。
この為XSLはXMLのスタイルシートを記述する為に広範囲に及ぶモデルと語彙を提供しています。
XSLはカスケーディングスタイルシートであるCSS2と文書スタイルと仕様言語であるDSSSLを基に構築されており、XSLのオブジェクト型とプロパティの多くは一般的なプロパティセットと一致します。
XSLでは、現状実現されているものとしてはHTML上のFRAMEがありますが、XSLの目指すところは、FRAMEではなく、ディスプレイ上はもちろん出力されたシートのページ立てをも含めた仕様化をする事が目的です。
ディスプレイ上のスクロールとページ立てはXMLコンテンツとしてディスプレイ用、印刷物用といったスタイル設定をするにあたり、新たな複雑さを生みます。
なぜなら印刷物のページ立てはコンテンツやコンセプトのページ数やページサイズなど任意の基準によって作られている為で、このようなページの空間づくりや寸法、ブロックがとても重要になってきます。
これらは概念がページの縦方向の調整の為にテキストから成る複数行にぴったりの文字や行頭との間の行間を調整する事とも関連します。
画面上の文書のシンプルなスクロールといえば、今日のブラウザでもありますが、ウェブ上ではボディ、ヘッダ、フッタ、左右サイドバーなどを表す事ができるFRAMEがありますが、これはディスプレイ上の文書も印刷物でも同じ寸法を基準にしていますが、XSLは、画面上のFRAMEと同様に出力された印刷物を扱う事ができるように開発されたスタイルシート言語なので、画面上と出力結果の両方をデジタル情報としてではなくアナログ情報として扱います。
XSLはCSS2とDSSSLの両方のオブジェクト型やプロパティ書式セットの拡張でスタイル設定された要素や属性、テキストノードやコメント、構築変換処理はXSLTとXPathという非常に強力なメカニズムを提供しています。
オブジェクト型やプロパティ書式のデザインはDSSSLが示したものでしたが、常にDSSSLが有効というわけではなく、CSS2とDSSSLの両方を兼ね備えたDSSSLシンプル版のようなものが望まれ分岐策定されたのがXSLです。
XSLのオブジェクト型やプロパティ書式にはCSS2に由来するものが数多くあります。
|
XSLではツリー構築とパターンセレクションとしてXSLTとXPathを利用しますが、どのようにして文書の一部分が提供されるのか、どれがそれらの文書の一部として関連付けられるのかなど混合されて名前空間が複雑になります。
XSLには出力シートのページやHTMLのFRAMEのいずれもレイアウトを構築できるようにオブジェクト型を持っていて[ simple-page-master ]は、ページ上のボディ、ヘッダ、フッタ、サイドバー個別に定義する事が出来るプロパティで、本の章や雑誌などのレイアウトでは[ simple-page-masters ]を利用して自動的に番号付けする事もできます。
スタイル設定されたコンテンツは、結果ツリーの中にあるスタイル設定された内容の名称と寸法の名称とを結びつける事ができ、これによりページ上の様々な寸法に一致させる事ができます。
プロパティとフォーマットの拡張は、特にブロックや複数行ページ寸法や行中といった領域上にあるコントロール領域では、必然的にXSL領域(エリア)モデルのサブセットとなるCSS2ボックスフォーマットモデルの拡張を必要とします。
国や地域によっては、左から右に書く、右から左に書く、上から下に書くなどの記述様式が異なりますが、XSLには[top,bottom,left,right]や[before,after,start,end]プロパティがありますが、これらは記述モードに関連するものであり、[ writing-mode ]プロパティは、ページ上や画面上の象形文字や文字、行、ブロックなどのフォーマット形式によって必要とされる方法を指定する事ができます。
◆【横書き】左から右に向かって書き、上から下につながる文面(left-to-right - top-to-bottom)は、 "lr-tb" ◆【横書き】右から左に向かって書き、上から下につながる文面(right-to-left - top-to-bottom)は、 "rl-tb" ◆【縦書き】上から下に向かって書き、右から左につながる文面(top-to-bottom - right-to-left)は、 "tb-rl" ◆【縦書き】上から下に向かって書き、左から右につながる文面(top-to-bottom - left-to-right)は、 "tb-lr" |
[ writing-mode ]プロパティには2つの[ directions: ]があり、1つは文字単位で適用される[ inline-progression-direction ]ともう1つは、ブロックや行ごとに適用される[ block-progression-direction ]で、この内[ inline-progression-direction ]を利用する文字の中には、Unicode Character Databaseで二方向性(bidirectional)文字として利用する規約がある場合があり、UnicodeにはBIDIアルゴリズム(Unicode bidirectional)があります。
XMLではHTMLのように予め組み込まれたハイパーリンクがないので、ハイパーリンク機能を持つXLinkという仕様を利用します。
>> 【XSL 1.1】2. XSLT / XSL Transformation