質問: 最近スタック・オーバーフローに [xsl-fo](/questions/tagged/xsl-fo "'xsl-fo' のタグが付いた質問を表示") 関連のご質問が投稿されており、XSL Formatting Objects について知りました。 しかし Wikipedia にある説明を読むに、XSL-FO 組版のやり方は CSS 組版のやり方と殆ど同じなのではないか、と思えてきました。そして、両者の違いについて興味が湧きました。たとえば Wikipedia の "XSL Formatting Objects" には以下のように書かれています。 > > XSL-FOとCSSは、良く似ている概念を採用しているが、いくつかの違いもある。 ブロックとインライン要素の概念は、CSSと非常に良く似ている。 間隔 (padding) と余白 (margin) の規則のいくつかは、CSSと異なる。 表記方向 (direction) に関しては、XSL-FO ではページの特性に沿って全て指定することができる。 *(2018年4月23日閲覧)* > > > XSL-FO と CSS のどちらを採用するか判断するための材料として、こういった違いは重要そうです。そこで、質問です。 組版をするにあたり、XSL-FO と CSS の "表現力" は同等ですか? つまり、一方では〇〇という組み方ができるものの、他方ではそれを行う方法が無い、あるいは難しいといったことはありますか? 必要であれば、両者の規格のバージョンを適当に設定して頂いて構いません。
回答: 参照されている、Wikipedia にありますように、その生い立ちが 「XSL-FOは、複数のページで構成される媒体を想定して設計された。一方HTMLとCSSは、ページの概念が無い媒体 (コンピュータ画面など) を想定して設計されている。」 という違いがあります. CSSもwikipedia にありますように、 「表示媒体(モニターや TV、紙媒体など)によって自動的にスタイルシートを変更できるようにし、それに附随して音声ブラウザへの対応、印刷媒体への対応が行われ、フォントなどの表示機能の拡張や、ボックスの概念の修正などが行われた。」 と、印刷媒体への対応も進められていますが、その仕様は、まだドラフトやそれ以前の状態であったりします. このような状況ですので、組版の対象媒体が何なのか、によってその仕様も含めて向き不向きがあるように思います.