XSL: FO(フォーマティング・オブジェクト)の概要

その-1 単純な例でFOの関連を学ぶ

2002年6月2日(日)更新


単純な印刷結果の例

たけち: 今回はFO(フォーマッティング・オブジェクト)の簡単な構成を具体的な例で見てみようね。

さらら: そうね。やっぱり具体的なイメージがないと分からないものね。

たけち: じゃ、さっそく簡単な印刷の例(あくまでも概念イメージです)を図に載せておこうね。A4縦の用紙の上のほうに「万葉集 巻1」って印刷する例だよ。

さらら

簡単な印刷結果のイメージ


XSL-FOの構成例

さらら: うん。これ以上簡単な例を見せてってお願いしてもダメかもね。 (^ ^* で、XSL-FOはどんな構成になるのかしら。

たけち: どんな構成になるのかは次の図を見て。FOルート(fo:root)の下には二つの要素があるね。「レイアウトマスターセット」の下の「単純ページマスター」がさっきの図の用紙を表しているよ。それから、もう一方の「ページシーケンス」の下にレイアウトしたいテキストの「万葉集 巻1」があるね。

XSL-FOの構成例

さらら: えっ〜と・・・・あっ、「単純ページマスター」のmaster-name属性と「ページシーケンス」のmaster-name属性の値がどっちもPagemaster-1になっているわ。これで、どの内容をどの用紙にレイアウトするのかの対応をつけているのね。

たけち: あっ、よく気がついたね。その通りだね。

さらら: えっと。。。fo:flowとか、fo:blockってなぁに?

さらら


fo:flow, fo:block

たけち: fo:blockは、段落やタイトル、テーブルといったレイアウトされる内容そのものを示すもの(FO: フローオブジェクト)なんだ。で、fo:flowは、複数のfo:blockなどをまとめる要素なんだよ。

さらら: そうなんだ。。。いまの例だと「万葉集 巻1」っていうテキストだけの段落が一つだから、fo:flowの下がひとつのfo:blockってことなのね。ねぇ。具体的にはこのXSL-FOっていったいどんなXMLテキストになるの?

たけち: あっ、そうだね。じぁあ、次に載せておこうね。

たけち


XSL-FOのサンプルテキスト

XML-FOのサンプルテキスト

<?xml version="1.0" encoding="Shift-JIS" ?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

  <fo:layout-master-set>
    <fo:simple-page-master page-height="297mm" page-width="210mm"
      margin-top="20mm" margin-bottom="20mm"
      margin-left="20mm" margin-right="15mm"
      master-name="Pagemaster-1" >
    <fo:region-body
      margin-top="5mm" margin-bottom="5mm"
      margin-left="10mm" margin-right="5mm"
    />
    </fo:simple-page-master>
  </fo:layout-master-set>

  <fo:page-sequence master-reference="Pagemaster-1" >
    <fo:flow flow-name="xsl-region-body">
      <fo:block>万葉集 巻1</fo:block>
    </fo:flow>
  </fo:page-sequence>

</fo:root>

さらら: あれ? xsl-region-bodyとかってなぁに?

たけち: あっ、xsl-region-bodyは、simple-page-masterのうちのある場所を示しているんだけど、これについては次回に詳しく説明するね。

さらら: すごく簡単な例にしては、かなり複雑な感じだけど、細かくレイアウトを指定するためには仕方の無いことなのかしら。

たけち: そうだね。それにこれからはもっと簡単にXSLスタイルシート作成のためのツールが出てくると思うから、それを楽しみにしてようね。

さらら: うん。。。。でも、いつになるのかしら。 (^ ^;

たけち: XSL-FOにはもっとたくさんの種類があるから、これからももう少し見ていこうね。それと、実際に印刷を試してみようね。

さらら: あっ、そうだわね。それが一番いいわ。

たけち: じゃ。今回はここまで。

さらら: は〜い。

→ 次回もおたのしみに。。。 (^ ^)v

さらら