この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "XSL Formatting Objects"
XSL Formatting Objects (XSL-FO) は、XSL (XML Stylesheet Language) の一部で、組版の制御・指示のための仕様である。狭義にはXSL仕様で定義されている組版対象オブジェクトのことである。XSLは、XSL-FOの他、XSLTとXPathから構成される。XSLはXML文書の変換と組版を行うために開発された。XSLの構成要素の一つであるXSL-FOでは、視覚的媒体だけでなく、聴覚的媒体に関する制御も規定している。XSL-FOを含むXSL関連仕様は標準化団体 W3C (World Wide Web Consortium) で開発され勧告として公表されている。
1999年11月16日に XSLT 1.0 と XPath 1.0 が勧告となり公表された。
2001年10月15日に XSL (XSL-FO) 1.0 の勧告が公表された。
2006年12月5日に XSL (XSL-FO) 1.1 の勧告が公表された。
2007年1月23日に XSLT 2.0 と XPath 2.0 の勧告が公表された。
2014年4月8日に XPath 3.0 の勧告が公表された。
2017年3月21日に XPath 3.1 の勧告が公表された。
2017年6月8日に XSLT 3.0 の勧告が公表された。
概要XML文書をXSLT/XPathで変換してXSL-FO文書を生成し、XSL-FO処理系によって人間に理解しやすい形式に変換する
XSL-FO文書も、(XSLTにより) XSL-FO形式に変換する前の文書も、ともにXMLに準拠したマークアップ言語である。このことは、XHTML/HTML と CSS を組み合わせて使う場合とは対照的である。XHTML/HTML は XML/SGML に準拠しているが、CSS は独自の構文で記述する言語でありXMLに準拠していない。
XSL-FOでは、XHTMLとは異なり、意味に基づいたマークアップは行わず、組版で必要となるマークアップのみを行う。また、XSL-FO文書自身に組版の対象となる文書データが全て格納される。一方で CSS は、別の XML もしくは XHTML 文書の既定の表現を変更する方法を採っている。
視覚的表現のための他の手段には、XHTML、DocBook および TEI などの利用がある。XSL は、XSLT が任意の XML を処理可能であるため、どのような XML 文書に対しても適用できる。また出力手段も XSL-FO に限らず、XSLT によって XHTML などに変換する(XMLベースであればなんでも)、といったことも可能である。
XSL では、まずXSLTスタイルシートを使うことが多い。このXSLTスタイルシートは対象となるXML文書の文書型 (スキーマ) にあわせて記述される。XSLTスタイルシートは、組版を行う人自身が記述する場合もあるが、文書型にあわせて作成された既製のものを使うこともできる。このXSLTスタイルシートを適用することにより、対象となるXML文書は、XSL-FO文書に変換される。
XSL-FOでは、XML文書の一般的な作成者は、普通のXML文書を作成するのであり、直接にXSL-FO形式のXML文書を作成することは、想定していない。XSL-FOでは、XML文書の作成者が作成したXML文書をXSLTを使ってXSL-FO形式のXML文書に変換すると、想定している。XSLTのスタイルシートは、作成したXML文書とは別途作成する場合と、XML文書自身に埋め込む場合がある。XSL-FO文書の生成は、XSLTによる変換によって行うことができるが、適切なXSL-FO形式に生成できるのであれば、XSLTを使わずに任意の手段で生成して構わない。
XSLTは、当初はXSL-FOへの変換という用途のみが想定されていたが、XML文書の汎用的な変換に使用可能である。現時点では、多くのソフトウェア技術者(プログラマ)はXSLTをXML文書の汎用的な変換言語として認識しており(認識の問題ではなく、汎用であるということは単なる事実であるが)、XML文書をXSL-FO文書に変換するという用途はあまり認識されていない。
XSLTの変換は非常に強力である(チューリング完全である)。XSLTを使うことによって自動的に、文書の目次を生成したり、参考文献とのリンクを設定したり、索引を生成するなど、非常に多様な能力をもつ。
XSL-FO形式の文書が生成されると、XSL-FOの処理系がそのXSL-FO文書を処理して組版する。XSL-FO処理系は、XSL-FO文書を入力として、一般の人々にとって読みやすいファイル形式ないしは印刷/表示可能な媒体を、出力する。出力可能な形式の種類は、XSL-FO処理系の実装により異なる。現在、XSL-FOで最も一般的な出力形式はPDFである。実装によっては、PostScriptやRTFなどの他の形式での出力も可能であるし、ファイルを作成せずに直接にコンピュータ画面に表示したり、直接印刷することもできる。 XSL-FOは、複数のページで構成される媒体を想定して設計された。一方HTMLとCSSは、ページの概念が無い媒体 (コンピュータ画面など) を想定して設計されている。XSL-FOにおいてページの概念は不可欠な要素である。XMLを扱う人々にとって、XSL-FOの処理系は、複数のページで情報を表示する際には強力なツールである。 XSL-FOの基本的な考え方は、コンピュータによる組版である。XSL-FO文書には、印刷対象となる文書データと文書データに対する組版の制約情報が含まれている。このXSL-FOをもとに、XSL-FO処理系は組版を行う。XSL-FOはこうした仕組みに基づいているため、あるXSL-FO処理系による出力と、別のXSL-FO処理系による出力が、一致しないことがある。しかしXSL-FOの一般的な目的は、複数のページで構成された組版された媒体を生成することであるため、あまり問題にはならない。XSL-FOの使い方としては、紙などに印刷された文書やPDFファイルの生成が、一般的である (PDFファイルもその性質は印刷された文書に近い) 。 XSL-FOは、「内容駆動」(content-driven) と呼ばれる設計による組版に非常に適している。この組版の設計は、書籍や論文、法的文書などで標準的な方法である。この組版設計は、一つの連なったテキストに対応する単一の流し込み (フロー) 領域をもち、ページの余白にさまざまな情報を配置することができる。この設計は、「割り付け駆動」(layout-driven) の設計とは、対義的な設計方法である。割り付け駆動の組版の設計方法は、新聞や雑誌などで使われている。割り付け駆動の設計では、ある文書内容に必要な空間を充分に確保できなかった場合、割り付けを調整して充分に確保しない限り、文書内容は途中までしか印字できない。XSL-FOでは、新聞や雑誌におけるこのような窮屈な制約を制御することは、簡単なことではない。実際にXSL-FOでは、多くの場合、先述のような割り付けの形式を表現する機能がいくつか欠如している。 XSL-FOは基本的にこのように設計されているが、非常に豊富な表現力をもつ。表、リスト、側浮動体 (本文とは分離した領域) 、その他さまざまな機能を備えており使うことができる。XSL-FOのこうした多くの機能はCSSの組版機能と互換性がある。 XSL-FO文書はXML文書であるが、明示的なDTDないしスキーマに従う必要は無く、XSL仕様においてXSL-FO文書の構文が定義されている。 XSL-FO文書は、大きく分けて2つの必須の部分から構成される。 最初の部分 (layout-master-set要素) のページレイアウト定義では、ページの特徴を定義する。 例えば、印刷するために大きな余白を確保するようページレイアウトの定義をすることができる。製本するためにさらに大きく余白をとることもできる。 次の部分 (page-sequence要素) では、文書データを分割して複数のフローに再構成する。 XSL-FOとCSSは、良く似ている概念を採用しているが、いくつかの違いもある。ブロックとインライン要素の概念は、CSSと非常に良く似ている。間隔 (padding) と余白 (margin) の規則のいくつかは、CSSと異なる。表記方向 (direction) に関しては、XSL-FO ではページの特性に沿って全て指定することができる。 このXSL-FOでの表記方向の指定機能により、英語とは異なる方向で文章を記述する慣習のある言語にも対応している。日本語などの縦書きにも対応している。ただしXSL-FO処理系の実装としては、少なくとも1つの表記方向に対応することが必須であり、全ての表記方向に対応する必要は無い。XSL-FOの仕様では、CSS2.1とは異なり、方向に関して表記方向に基づいた用語を採用している。start (前) や end (後) などを使い、left (左) や right (右) などは、出力媒体に直接関わる場合を除いて、使われない。 XSL-FOの基本的な文書内容のマークアップは、CSSおよびそのカスケーディング規則を基にしている。そのためXSL-FO文書で記述した要素の多くの属性は、明示的に上書きしない限り、子要素に継承される。 XSL-FOには非常に多くの機能がある。先に述べたことに加え、XSL-FOでは次のような機能を仕様で規定している。
XSL-FOの基本的な考え方
XSL-FO文書の構造
最初の部分で、ページのレイアウトを詳しく定義する。レイアウトは1つまたは複数定義することができる。各レイアウトには名前をつける。
次の部分で、一連の文書データを記述する。文書データにはXSL-FOで規定されたマークアップを行う。このマークアップにより、文書データを構成する内容が、先の部分で定義したページレイアウトのうち、どのページレイアウトによって表現されるかを指定する。
テキストの表記方向を定義することができる。「右から左に文章を進める」「上から下に文章を進める」「左から右に文章を進める」など、言語に固有の重要な慣習に沿うように指定することができる。
ページの縦横の長さやページの余白 (マージン) の長さを指定することができる。
ページの連なりについて定義することができる。例えば、奇数ページと偶数ページとで余白などの指定を変えることが可能である。
おのおののフローは、ページレイアウト定義と関連付けられる。
フローは、複数のブロックを含むことができる。
各ブロックには、順番に、テキストデータ、インライン要素、およびテキストデータとインライン要素の混合内容を、含めることができる。
ページの余白の部分にも、ページ番号や章見出しなどを、印字することができる。
インラインのテキストなどの表記方向 (「左から右へ」「上から下へ」など)
ブロック内のテキスト行などの流し込みの方向 (「上から下へ」「右から左へ」など)
XSL-FOの機能
Size:33 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef