XSL Formatting Objects
XSL-FOは、「内容駆動」(content-driven) と呼ばれる設計による組版に非常に適している。この組版の設計は、書籍や論文、法的文書などで標準的な方法である。この組版設計は、一つの連なったテキストに対応する単一の流し込み (フロー) 領域をもち、ページの余白にさまざまな情報を配置することができる。この設計は、「割り付け駆動」(layout-driven) の設計とは、対義的な設計方法である。割り付け駆動の組版の設計方法は、新聞や雑誌などで使われている。割り付け駆動の設計では、ある文書内容に必要な空間を充分に確保できなかった場合、割り付けを調整して充分に確保しない限り、文書内容は途中までしか印字できない。XSL-FOでは、新聞や雑誌におけるこのような窮屈な制約を制御することは、簡単なことではない。実際にXSL-FOでは、多くの場合、先述のような割り付けの形式を表現する機能がいくつか欠如している。
XSL-FOは基本的にこのように設計されているが、非常に豊富な表現力をもつ。表、リスト、側浮動体 (本文とは分離した領域) 、その他さまざまな機能を備えており使うことができる。XSL-FOのこうした多くの機能はCSSの組版機能と互換性がある。
このようなXML形式のデータとして最もよく使われるのは、おそらく画像形式であるSVGであろう。 多くのXSL-FO処理系が、SVGデータが埋め込まれたXSL-FO文書を解釈し、SVGの画像データを埋め込んだ出力を生成することができる。
XSL-FOのもう一つの特長は、そこそこ使いやすいことが挙げられる。 XSL-FOの非常に多くの機能は、CSSに基づいている。 そのためCSSを使ってきた人々にとっては、XSL-FOのマークアップ属性などはなじみやすい。 あるXSL-FO文書の特定の部分を見てその部分がどのように組版されるかを認識することは、多くの場合は簡単である。 このXSL-FOの特長は、TeXのような組版ソフトウェアパッケージの場合と比べると際立っている。 TeXのソース文書を見てどのように組版されるかを認識することは、TeXをよく使う人でなければ一般的には難しい。
XSL-FOでは、ブロックあるいはフロー自体に対して、段落の途中で改ページを行うことになった場合、前のページに最低限残すべき行数と、後のページに最低限印字すべき行数を指定することができる。 この指定は、そのブロックが子ブロックを含む場合は継承される。 また、ブロック全体を分割せずに1ページ内に収めるよう、指定することもできる。 例えば、画像のブロックとその画像の説明文が、別々のページに分割されることは望ましくない。 XSL-FO処理系は、たとえページ中に大きな空白部分を作ることになっても、これらの指定に従うように努める。