トップページ > XML資料室 > ふたつのスタイルシートXSL-FOとCSS
更新日:
Last update: 更新内容
ドキュメントをXML (Extensible Markup Language)で表現するとき、コンテンツ(内容)とスタイル(レイアウト指定)を分離することで、ワンソース・マルチユースを効率的に行なうことができます。
ワンソース・マルチユースは、英語ではシングル・ソーシングと言います。現在は、HTMLで記述したWebページと、紙を模倣した電子ファイルであるPDFへの出力が主流です。
WebとPDFには次のような本質的な違いがあります。
Webページは画面出力を主に想定して作成されます。画面はページの概念のない連続媒体と考えられています。また、分散して配置された情報をハイパーリンク機能を使って統合しているのが特徴です。
これに対してPDFは1ページ毎に区切られたページ媒体です。また、一塊の情報を1つのファイルに統合しています。PDFのようなページ媒体への出力では、読みやすくするようなページの区切り方、また、一覧性、検索性を増すための目次、ヘッダ、ページ番号、索引などの作成が必須となります。
さらに、Webと比較して、歴史が長いページ媒体に出力するには高度で精密なページレイアウトと文字配置が要求されます。紙への印刷と出版が文化の担い手として発展してきたこともあり、ページ媒体への出力は印刷文化の継承が必要でもあります。
XMLにスタイルを与えるための二つの標準仕様がXSL-FO (Extensible Stylesheet Language)とCSS(Cascading Style Sheets)です。
XSL-FOは、もっぱらページ媒体への出力を想定して設計されており、XMLをページ媒体に出力する標準として既に確立しています。2001年に初版が標準として勧告されており、既に、長年にわたる実績があります。XSL-FOはページ媒体向けの高度で優れたレイアウト指定機能をもっていますが、XSL-FOを使いこなすのは高度な専門知識が必要です。このため「良いけど大変」と採用に躊躇されることもあります。
XSL-FOに比べて、CSSは直感的で分かりやすく、だれでも直ぐに使い始めることができます。こうしたことから、すでにWebの世界では確実に普及しています。
CSS2.1 (Cascading Style Sheets Level2 Revison1) は2011年に勧告となり、ほとんどのブラウザがCSS2.1を実装しています。CSS2.1ではページの概念が導入されており、先頭ページ・左ページ・右ページ、ページ区切りなどの指定が可能です。しかし、ページサイズを指定することができず、用紙サイズを指定しての印刷出力はブラウザ依存とされています。CSS2.1でのページ媒体出力は原始的なレベルとなります。
また、現在のブラウザのページレイアウト、文字配置機能はレベルが低いことなどもあり、CSS2.1は高品質なページ媒体向けのレイアウトには使えません。
W3CのCSSワーキンググループは高度なレイアウト指定のできる次世代標準CSSを開発しています。CSSはモジュール別で開発されており、総称してCSS3と呼ばれることがあります。但しCSS3は様々なモジュールの集合です。ページサイズを指定する方法はCSS Paged Mediaというモジュールに含まれています。2017年5月2日時点で「CSS Paged Media Module Level 3」はドラフト仕様です。さらに、CSS3ではページ媒体向けの機能の強化も盛り込まれています。
XSL-FOは、XMLをXSL-FOに変換してから組版処理を行ないます。これは、XMLのツリー構造特性を旨く利用して、オリジナルのXMLコンテンツの加工を行なうことと一体になっており、大きな長所です。また仕様も安定しており、長期的に安心して使うことができます。
CSSは直感的であり分かりやすいですが、XMLコンテンツの加工を想定していない分だけ、オリジナルコンテンツにない情報を追加することに弱点があります。CSSのコンテンツ生成機能は複雑で分かりにくくなっています。この点を含め、CSSは発展途上の仕様ということができます。CSSワーキンググループはブラウザを想定して仕様策定しています。CSSのグリッドレイアウトなどの新しいレイアウト指定方法がページ媒体向けの機能と両立するかどうか分かりません。こうしたことで、ページの大きさの概念を持つメディア向けの機能が、CSSにおいて将来どうなるかは不透明になっています。
以下に主な資料をご紹介します。
ページのレイアウト崩れを修正。参考資料を追加。
XSL-FO参考資料を『XSL-FOの基礎 XMLを組版するためのレイアウト仕様 第2版』に変更。CSSチュートリアルを削除。CSS Paged MediaのモジュールやCSS3の見通しを変更した。