XSLT から XSL-FO と XHTML を生成することは、必ずしも二者択一ではありません。
XSL-FOは、一般的に PDF の生成に使用されます。そのためには、 FOP、RenderX、Antenna House、IBexなどのXSL-FO エンジンが必要になります。ただし、 XSL-FOをXHTMLに変換してから、ブラウザーでレンダリングすることができます。
一般に、XSLT でXSL-FOを作成してからXHTMLに変換する(XHTML を直接生成するだけ)という面倒な作業を行う価値はありません。
**XSL-FOとXHTMLの両方を同時に作成することが可能であり、スタイルシートの 2 つの完全なセットを維持することなく、異なるボキャブラリーで同様の出力を作成することができます**。
いずれかの形式を選択したり、2 つの明確に異なる (しかし類似した) スタイルシート ライブラリを維持したりする必要はなく、メインのスタイルシート ライブラリを作成してXSL-FOまたはXHTMLを生成し、2 番目の変換を使用して XSL から変換することができます。 FO から XHTMLへ、およびその逆。これを行うために利用できる既存の XSLT スタイルシートがあります。
以前、私はXSL-FOスタイルシートを開発し、 Render-X FO2HTML スタイルシートを使用してXSL-FO を XHTML出力に変換しました。<block>
要素を、<div>
などに 変換します。<inline>
<span>
私は以前にそれらを使用したことはありませんが、HTML2FO スタイルシートを使用して、 XHTML出力をXSL-FOに変換することもできます。
特別な設定をしなくても、 1 つの特定の出力形式専用の 1 つの XSLT ライブラリを維持しながら、両方の形式で驚くほど類似した出力を得ることができます。
出力をわずかにカスタマイズする必要がある場合 (たとえば、XHTMLの異なるヘッダー コンテンツ) は、変換スタイルシートをインポート/拡張し、異なるコンテンツ用の適切なテンプレートをオーバーライドするだけです。これにより、保守がはるかに簡単になるため、本質的に同じ情報で複数のスタイルシート セットを更新することを心配する必要がなくなります。