最終更新日: 2010/01/06

XSL Report Designer レイアウト設計の解説

XSL Report Designerで行うレイアウト設計の概念を説明します。

XMLデータ構造とレポートのレイアウトへの対応

XSL Report Designerで行うことは、XMLデータを定型のレイアウトパターンをもつレポートに印刷するためのレイアウト設計です。出力の対象となるXMLデータはツリー構造の一部に一定の繰り返しパターンを持っていなければなりません。一般の書籍や操作説明書のようにツリー構造に一定の繰り返しパターンを期待できないXMLドキュメントのレイアウト設計を行うことはできません。

XSL Report Designerは、XMLデータの繰り返しパターンをレポートの印刷レイアウトの中における繰り返しパターンに対応させます。レポートの印刷レイアウトという観点からみると、XSL Report Designerは、「固定型」、「フロー型」、「タックシール」の3種類の印刷レイアウトを設計できます。次に、XMLデータのツリー構造の繰り返しパターンを3種類の印刷レイアウトの中の繰り返しパターンに対応つける方法について説明します。

固定型

固定型は、図のように用紙単位で同一の出力を繰り返すレイアウトパターンです。この場合、XMLツリーの上でのひとつの繰り返しを用紙の1枚ないし複数枚からなる組に対応つけて印刷します。XMLツリーの中で、用紙に対応つけるような位置にある要素がメイン繰り返し要素です。XMLデータの中にメイン繰り返し要素が1回現われる毎に、レポートにはそれに対応する用紙または用紙のセットの内容が1回印刷されます。

ov-fixed

フロー型

「フロー型」レイアウトは、図のように用紙の上に、XMLツリーの中で繰り返される要素を出現した順に印刷していくレイアウトパターンです。用紙は繰り返しの単位で新しくなるのではなく、内容が用紙の領域に収まらなくなった時に新しくなります。

ov-var

タックシール

「タックシール」レイアウトは、次の図のように用紙を縦横に分割します。分割した各領域をラベルと言います。ラベルひとつひとつに同一の出力パターンを繰り返します。ラベルにメイン繰り返し要素を対応つけ、ラベルの中にその下位の要素をレイアウトします。

ov-tac

XMLデータからXSL-FOを生成して印刷する仕組み

XSL Report Designerのレイアウト設計データは「プロジェクト」と呼びます。設計作業の情報は、プロジェクトファイルとして保存されます。

XSL Report Designerによるレイアウト設計時に取り扱う対象をオブジェクトといいます。オブジェクトにはいろいろな種類がありますが、最も頻繁に使用するものはテキストオブジェクトです。そこで、次にテキストオブジェクトを例にとって、印刷までの処理がどのようになるかを簡単に説明します。

XSL Report DesignerのテキストオブジェクトはDTPやワードプロセサのような具体的なテキスト文字列ではありません。むしろテキストオブジェクトは空の入れ物に近いものです。

テキストオブジェクトの種別には「スタティック」と「フィールド」の2種類あります。スタティック・テキストオブジェクトにはXSL Report Designerで文字列を入力します。フィールド・テキストオブジェクトには印刷対象XMLデータの要素へのパス(「XMLパス」といいます)を設定します。

XSL Report Designerに同梱しているランタイムエンジン(Runtime Engine)に印刷対象XMLデータとプロジェクトを入力すると、印刷対象XMLデータとプロジェクトの内容からXSL-FOを出力します。このとき、スタティック・テキストオブジェクトの場合は、XSL Report Designerで入力した内容がそのままXSL-FOのブロックオブジェクト(fo:block)の内容になります。フィールド・テキストオブジェクトの場合は、印刷対象XMLデータの中から、XMLパスで指定した要素の内容がXSL-FOのブロックオブジェクト(fo:block)の内容として出力されます。こうしてできたXSL-FOをXSL Formatter、またはAH Formatterに入力すると、印刷したり、PDFにすることができます。

ここで重要なことは、ランタイムエンジンが出力するXSL-FOには、印刷対象XMLデータのツリー構造が反映されているということです。プロジェクトの中で、印刷対象XMLデータのメイン繰り返し要素を設定すると、XMLツリーでその下位にある要素のテキストオブジェクトは、メイン繰り返し要素の出現回数分繰り返して、XSL-FOに出力されます。

ov-text

XSLスタイルシートを使う場合

XSL Report DesignerはプロジェクトからXSLスタイルシートを生成することができます。

プロジェクトから生成したXSLスタイルシートを使う場合は、印刷対象XMLデータとXSLスタイルシートをXSLTプロセサに入力すると、XSLTプロセサがXSL-FOを出力します。出力されるXSL-FOにXSL Report Designerのオブジェクトとプロパティの設定内容がどのように反映されるかランタイムエンジンが出力するXSL-FOと同様です。ただし、XSLスタイルシートには、XSL Report Designerのプロジェクトで設定した計算式が使えないなどの制限があります。

ov-text

オブジェクト

XSL Report Designerで扱えるオブジェクトには次の種類があります。

次に重要なオブジェクトについて簡単に解説します。以下の説明では、指示する内容が明確な場合、オブジェクトという言葉を省略することがあります。オブジェクトに関しては、製品のオンラインヘルプ、マニュアルでする詳しく説明しています。

ドキュメントとリピート

印刷するレポート全体を表すオブジェクトをドキュメントといいます。オブジェクト全体はツリー構造となりますが、ドキュメントがツリーのルートにあたります。

リピートは、レポートの印刷レイアウトの中で繰り返す部分に相当するオブジェクトです。例えば、データの中のレコードひとつずつを1枚の用紙に出力する場合、用紙がリピートオブジェクトに相当します。XSL Report Designerではドキュメントの直下に必ずリピートをおきます。これがメインリピートです。メインリピートは、固定型・フロー型・タックシールの3つのレイアウトでいづれもひとつです。固定型・タックシールではリピートオブジェクトはメインリピートのみです。

メインリピートには印刷対象となるXMLデータのツリー構造の中で、「メイン繰り返し要素」のパスを対応付けます。レポート印刷時には、印刷しようとするXMLデータの中で、メインリピートに対応付けた「メイン繰り返し要素」が出現した回数だけ、メインリピートの下位のオブジェクトが繰り返されることになります。

フロー型のレイアウトでは、メインリピートの下位に複数のリピートを置くことができます。これをサブリピートといいます。次の図のように印刷対象XMLツリーの構造にサブ繰り返し要素があるとき、サブリピートにこのサブ繰り返し要素のパスを指定すると右のような印刷出力を得ることができます。

ov-subrepeat

テーブル

XMLデータの繰り返し要素をレポートのレイアウト上のブロックの繰り返しに対応つけるのではなく、テーブルオブジェクトを使用して、表の形式に出力することができます。次の図は、印刷対象XMLデータをひとつの表として、繰り返し要素を表の行に対応つけ、繰り返し要素の子要素を各行のセルに出力する例です。表の行の数は、印刷対象XMLデータの中で繰り返し回数と同じになります。

ov-table

プロパティ

オブジェクトには、その印刷のレイアウト上の特性、表示スタイルなどを指定することができます。これをプロパティといいます。

例えば、テキストオブジェクトのプロパティには印刷位置(X座標、Y座標、幅、高さ)、フォント名、フォントサイズ、文字スタイル、文字飾り、文字の配置などを指定することができます。

オブジェクト毎に設定できるプロパティが決まっています。 オブジェクトとプロパティの対応一覧表は「対応プロパティ一覧」を参照してください。


Copyright © 1996-2010 Antenna House, Inc. All rights reserved.
Antenna House is a trademark of Antenna House, Inc.