XSL-FO ファイルとは?
XSL-FO (XSL Formatting Objects) は、XML ドキュメントをフォーマットするための強力なスタイルシート言語です。紙と印刷物の境界形式のセマンティクスは、次元が固定されている場合、XSL-FO で表現されます。 HTML とは対照的に、可変サイズのブラウザ ウィンドウの無制限のフォームのセマンティクスを表します。 XSL-FO でフォーマットされた XML ドキュメントは、主に PDF ファイルの生成に使用されます。 XSL (Extensible Stylesheet Language) は、XML ドキュメントとこの言語の XSL-FO 部分をフォーマットおよび交換するための設計を目的とした、完全な機能を備えた W3C テクノロジのセットです。 XSLT と XPath も XSL の他の部分です。
XML 文書を最初に XSL-FO に変換することが提案されています。PDF はこの基準の例です。 PDF では、結果は最初に XSLT を使用してレンダリングされ、次に XSL-FO フォーマッターを使用してレンダリングされます。このようにして、XML 文書をランダムにフォーマットすることができます。 XSL-FO はカスケーディング スタイル シート (CSS) プロパティを使用し、実際の形式に合わせて必要に応じて拡張することを利用していますが、XSL-FO の用語ではページ マスターと呼ばれるページ テンプレートの提供を収容しています。 XSL-FO は、かなり洗練されたドキュメントの書式設定も提供し、インデックスの生成をサポートします。
歴史と基本概念
2012 年 1 月に XSL-FO のワーキング ドラフトが最後に更新され、2013 年 11 月にそのワーキング グループは閉鎖されました。 XSL スタイルシートは、XML ドキュメントのクラスの表現を、クラスのインスタンスがフォーマット ボキャブラリを使用する XML ドキュメントにどのように変換されるかを記述することによって指定します。 XSL-FO は統合されたプレゼンテーション言語であり、HTML で使用されるセマンティック マークアップはありません。さらに、この言語は、外部の HTML または XML ドキュメントのデフォルト設定を変更する CSS とは対照的に、ドキュメントのすべてのデータを内部に保存します。
XSL-FO を使用する一般的な基準は、ユーザーがドキュメントを FO ではなく XML 言語で作成することです。その後、XSLT 変換が発生します。この XSLT 変換は、XML から XSL-FO への変換を担当します。 XSL-FO ドキュメントが生成されるとすぐに、FO プロセッサと呼ばれるアプリケーションに渡されます。 FO プロセッサは、このドキュメントを読み取り可能で印刷可能なドキュメントに変換する責任があります。 PDF ファイルまたは PS は、XSL-FO の最も一般的な出力の例です。ただし、FO プロセッサが出力としてこれら 2 種類の形式しか生成できないという意味ではありません。一部の FO プロセッサは、RTF ファイルに出力したり、ユーザーの GUI にウィンドウを表示したりできます。このウィンドウには、ページのシーケンスとその内容が表示されます。
XSL-FO 文書は、ある意味で PDF や PS とは異なります。異なるページのテキスト レイアウトを最終的に定義するわけではありません。おそらく、ページのスタイルを設定し、コンテンツを表示する場所を決定します。さらに、FO プロセッサは、FO ドキュメントによって指定された境界内でテキストを編成します。この仕様では、異なる FO プロセッサが結果として作成されたページに応じて動作することさえ許可されています。このような動作の例としてハイフネーションがあります。改行時にスペースを節約するために単語をハイフネーションできる FO プロセッサはほとんどありませんが、このオプションを選択しないプロセッサもあります。要件に合ったさまざまなハイフネーション アルゴリズムを選択するかどうかは、プロセッサによって異なります。これらのハイフネーション アルゴリズムは、非常に単純な場合もあれば、より複雑な場合もあります。場合によっては、XSL-FO 仕様が明示的に FO プロセッサを認可し、レイアウトのコンテキストである程度の選択を行います。
FO プロセッサ間のこの違いは、さまざまな結果を生成します。プロセッサは、多くの場合、関心を持たないままです。 XSL-FO の一般的な焦点は、ページ化された/印刷されたドキュメントを作成することだからです。 XSL-FO ドキュメント自体は通常、仲介者として機能します。その主な機能は、PDF ファイルまたは配布用の出力として印刷できるドキュメントを生成することです。 HTML/CSS や XSL-FO では、書式言語を入力するのではなく、最終結果として PDF を配布することで、書式言語の解釈者の違いによる汎用性が受信者に影響を与えないことを示しています。一方、ドキュメントが受信者のさまざまなニーズ (たとえば可変ページ サイズや希望するフォント サイズ、またはページまたは印刷用に調整するなど) を満たすことができる簡単な方法がないことは明らかです。
XSLFO ファイル形式
SL-FO 文書は基本的に XML 文書ですが、スキーマには従いません。その代わりに、SL-FO 文書は、独自の言語の仕様で定義された構文に従います。各 XSL-FO ドキュメントには、次の 2 つのセクションが必要です。
- ラベル付きページ レイアウトのリストを指定するセクション。
- ドキュメント データのすべての詳細を含むセクションで、さまざまなページ レイアウトを介してさまざまなページでのコンテンツの表示を決定するマークアップを含みます。
ページのプロパティは、特定の言語の規則に準拠するために、テキストの構成を定義できるページ レイアウトに記載されています。さらに、ページのサイズ、余白、およびページのシーケンス (奇数ページと偶数ページに異なるプロパティを許可する) も、ページ レイアウトによって定義されます。
ドキュメントのデータ部分は一連のフローに分割され、各フローはページ レイアウトに接続されます。フローにはブロックのリストが含まれています。このブロックのリストには、インライン マークアップ機能またはテキスト データのリスト、または両方が同時に含まれている場合があります。ドキュメントの余白には、ページ番号や章の見出しも表示される場合があります。ブロック要素とインライン要素の両方の機能は CSS と同じままですが、FO と CSS では一部のパディングとマージンのルールが異なります。
ページの方向は、ブロックとインラインの拡張用に完全に指定されているため、FO ドキュメントは英語とは異なる言語で実行されます。 FO 仕様の言語では、方向の説明に left と right ではなく start と end という単語を使用します。 XSL-FO の基本的なコンテンツ マークアップとカスケード ルールは、CSS から取得されます。 XSL-FO の言語は、以下の仕様に準拠しています。
複数の列
ページには複数の列とブロックを含めることができ、デフォルトで 1 つの列から別の列に拡張できます。複数のページに異なる幅と列数を設定できます。すべての FO 特性は、複数列ページの制限に従います。
リスト
XSL-FO リストは、顎ごとに配置された 2 セットのブロックによって確立されます。概念的には、リストの左側のブロックは数字、箇条書き、またはテキストの文字列を示し、右側のブロックは予想どおりに機能する場合があります。 XSL-FO リストの番号付けは、通常、XSLT によって行われます。
テーブル
FO テーブルは HTML/CSS テーブルに似ています。ユーザーは、個々のセルのデータ行、スタイル情報、背景色を選択できます。個別のスタイル情報を使用して、ユーザーは最初の行をテーブル ヘッダー行として選択する権限を持ちます。 FO プロセッサは、各列のスペース指定について明示的に通知するか、テーブル内のテキストを自動調整することができます。
索引付け
XSL-FO 1.1 には、適切にマークアップされた要素を参照してインデックスを生成するのに役立つ機能があります。
### 利点 ###
- コンテンツベースのパブリッシングに適しています
- 使いやすさ
- 低価格
参照
※【XSL-FOとは】(https://www.xml.com/articles/2017/01/01/what-is-xsl-fo/)