ヘッダーをスキップ

Oracle Fusion Middleware Oracle Business Intelligence Publisherレポート・デザイナーズ・ガイド
リリース11g (11.1.1)
部品番号 B63038-01
目次へ移動
目次
前のページへ移動
次のページへ移動

RTFテンプレートの作成

この章では、次のトピックについて説明します。

RTFテンプレートの概要

リッチ・テキスト・フォーマット(RTF)は、Microsoft Wordなどの一般的な文書処理アプリケーションで使用されている仕様です。RTFは、文書を保存するときに選択できるファイル・タイプ・オプションの1つです。

BI Publisherは、RTFファイル・タイプとして保存されたドキュメントをXSL-FOに変換するため、ユーザーは、多くの標準的な文書処理アプリケーションの機能を使用して、レポート・レイアウトを作成できます。

設計時に、XSL表現対応の単純化されたBI Publisherのタグを使用して、データ・フィールドおよび他のマークアップをテンプレートに追加します。これらのタグは、XMLレポート・データとレポート・レイアウトの関連付けを行い、また他の処理に関する指示を含んでいます。

また、BI Publisherでは、使用している文書処理アプリケーションの書式設定機能に加えて、条件付き書式設定、動的データ列、総合計、チャートなどの拡張レポート機能もサポートしています。

XSLに精通していて、単純化されたタグを使用しない場合は、BI Publisherは、テンプレートにおいて純粋なXSL要素の使用もサポートしています。テンプレートにコードを直接含める場合は、任意のXSL要素、多数のFO要素、およびBI Publisherによって拡張された1組のSQL表現を含めることができます。

XSLTの互換性について

BI Publisherは、Oracle XDK 11.1.0.7.0によって提供されるXSLTプロセッサを使用します。これはW3C XSL変換1.0勧告をサポートしています。プロセッサは、XSLTおよびXPath 2.0標準の現在の作業草案も実装します。Oracle XDKの詳細は、Oracle XML開発者用キット・プログラマーズ・ガイド11g参照してください。

デフォルトでは、BI PublisherはXSLT 1.0と互換性があります。XSLTおよびXPath 2.0の機能をテンプレートで使用する場合は、XSLT 1.0の互換性を無効にする必要があります。この構成はテンプレート・レベルで実行されます。テンプレート・レベルの設定は、サーバーの設定を上書きします。

XSLTの互換性は、Template Builder for Wordではビルド・オプションとして設定されます。「「構築」オプションの設定」を参照してください。

スタート・ガイド

この章では、レポート・テンプレートでXMLデータをレイアウト要素に関連付ける概念について説明します。また、複雑で高度な条件付きレポート・フォーマットを作成するための基本的な技術と高度な技術について説明します。

RTFテンプレートを作成するためにMicrosoft Wordを使用している場合は、この章を読み進める前に、「Template Builder for Wordを使用したRTFテンプレートの作成」を参照してください。Template Builderインストールで提供されるデモとサンプルは、Microsoft Wordでテンプレートを作成するプロセスを身に付けるのに役立ちます。

RTFテンプレートを作成するのに、Microsoft WordまたはTemplate Builderは必要ないため、この章では、Template Builderを使用せずにコンポーネントを追加する方法について説明します。この章で説明するレイアウト・コンポーネントの多くは、Template Builderを使用したテンプレートにも挿入できます。

前提条件

テンプレートの設計には、次の前提条件が必要です。

BI Publisherコードの追加について

RTFテンプレートを作成するときは、BI PublisherコードをRTFドキュメントに追加します。BI Publisherは、コードの追加について次の方式をサポートしています。

この章では、前述の方式を使用してRTFテンプレートを作成する方法について説明します。

Microsoft Wordを使用している場合は、BI Publisher Template Builder for Wordを使用してBI Publisherコード・フィールドの挿入を支援できます。詳細は、「Template Builder for Wordを使用したRTFテンプレートの作成」を参照してください。

主な概念

テンプレート・レイアウトを設計するときは、XML入力ファイルをレイアウトに関連付ける方法を理解する必要があります。この章では、XML入力ファイルを使用したテンプレート・レイアウトのサンプルを提示して、マークアップ・タグをテンプレートに追加するための適切な関連付けを行う方法を説明します。

テンプレート・レイアウトへのXMLデータの関連付け

次に、Payables Invoice Registerのサンプル・レイアウトを示します。

サンプル・テンプレート・レイアウト

この図についてはドキュメントのテキストで説明しています

次の点に注意してください。

XML入力ファイル

次に、このPayables Invoice Registerレポート・テンプレートへの入力として使用されるXMLファイルを示します。

注意: 次に示すXML出力の例では、簡略化のために、実際のPayablesレポート出力を変更しています。

 <?xml version="1.0" encoding="WINDOWS-1252" ?>
 - <VENDOR_REPORT>
  - <LIST_G_VENDOR_NAME>
   - <G_VENDOR_NAME>
     <VENDOR_NAME>COMPANY A</VENDOR_NAME>
   -  <LIST_G_INVOICE_NUM>
    -  <G_INVOICE_NUM>
       <SET_OF_BOOKS_ID>124</SET_OF_BOOKS_ID>
       <GL_DATE>10-NOV-03</GL_DATE>
       <INV_TYPE>Standard</INV_TYPE>
       <INVOICE_NUM>031110</INVOICE_NUM>
       <INVOICE_DATE>10-NOV-03</INVOICE_DATE>
       <INVOICE_CURRENCY_CODE>EUR</INVOICE_CURRENCY_CODE>
       <ENT_AMT>122</ENT_AMT>
       <ACCTD_AMT>122</ACCTD_AMT>
       <VAT_CODE>VAT22%</VAT_CODE>
      </G_INVOICE_NUM>
     </LIST_G_INVOICE_NUM>
     <ENT_SUM_VENDOR>1000.00</ENT_SUM_VENDOR>
     <ACCTD_SUM_VENDOR>1000.00</ACCTD_SUM_VENDOR>  
    </G_VENDOR_NAME>
   </LIST_G_VENDOR_NAME>
  <ACCTD_SUM_REP>108763.68</ACCTD_SUM_REP>
  <ENT_SUM_REP>122039</ENT_SUM_REP>
 </VENDOR_REPORT> 

XMLファイルは複数の要素で構成されています。各タグ・セットが1つの要素です。たとえば、<INVOICE_DATE> </INVOICE_DATE>は請求日要素です。INVOICE_DATEはタグ名です。両方のタグに囲まれたデータが要素の値です。たとえば、INVOICE_DATEの値は10-NOV-03です。

XMLファイルの要素には階層構造があります。つまり、要素には親子関係があります。前述のXMLサンプルでは、ある要素のタグの間に別の要素が含まれています。別の要素を含んでいる要素が親で、含まれている要素が子になります。

すべてのXMLファイルには、他のすべての要素を含むルート要素が1つあります。前述の例では、VENDOR_REPORTがルート要素です。LIST_G_VENDOR_NAME、ACCTD_SUM_REPおよびENT_SUM_REPの各要素はVENDOR_REPORTタグの間に含まれており、これらはVENDOR_REPORTの子要素になります。各子要素には、それ自体の子要素を指定できます。

プレースホルダとグループの識別

テンプレートの内容とレイアウトは、XML入力ファイルの内容と階層に対応している必要があります。テンプレート内の各データ・フィールドは、XMLファイル内の要素にマッピングされます。また、テンプレート内の繰返し要素の各グループは、XMLファイル内の親子関係に対応している必要があります。

データ・フィールドをマップするには、プレースホルダを定義します。繰返し要素を指定するには、グループを定義します。

注意: 受信したXMLデータの階層とは異なるグループ化がレポートで必要な場合、BI Publisherはデータの再グループ化をサポートしています。この機能の詳細は、「XMLデータの再グループ化」を参照してください。

プレースホルダ

レポート・テンプレート内の各データ・フィールドは、XMLファイル内の要素に対応している必要があります。テンプレート設計をマークアップするときは、XML要素のプレースホルダを定義します。このプレースホルダによって、テンプレートのレポート・フィールドがXML要素にマッピングされます。プレースホルダは、実行時に、XMLデータ・ファイル内にある同名の要素の値に置換されます。

たとえば、サンプルのレポート・レイアウトの「Supplier」フィールドは、XML要素のVENDOR_NAMEに対応しています。テンプレートをマークアップするときは、「Supplier」フィールドの位置にVENDOR_NAMEのプレースホルダを作成します。このプレースホルダは、実行時に、XMLファイル内の要素の値(サンプル・ファイルの値はCOMPANY A)に置換されます。

繰返し要素のグループの識別

サンプル・レポートには、仕入先とその請求書がリストされています。レポートには、仕入先ごとに繰り返されるフィールドがあります。その1つが仕入先の請求書です。さらに、請求書ごとに繰り返されるフィールドがあります。つまり、レポートは、次の2グループの繰返しフィールドで構成されています。

請求書グループは仕入先グループ内にネストされています。これは、次のように表すことができます。

仕入先

この構造をXML入力ファイルの階層と比較します。前述の仕入先グループに属するフィールドは、要素G_VENDOR_NAMEの子になります。また、請求書グループに属するフィールドは、要素G_INVOICE_NUMの子になります。

グループを定義することによって、要素(親)の出現箇所ごとに、含まれているフィールド(子)を表示するようにBI Publisherに通知しています。実行時に、BI Publisherは要素の出現箇所をすべて処理し、毎回、フィールドを表示します。

テンプレート・レイアウトの設計

設計を作成するには、使用している文書処理アプリケーションの書式設定機能を使用します。

例:

Microsoft Wordでサポートされている書式設定機能の詳細は、「サポート対象のシステム固有の書式設定機能」を参照してください。その他の書式設定機能とレポート機能については、この項の最後に説明します。

テンプレート・レイアウトへのマークアップの追加

BI Publisherは、文書処理アプリケーションで適用する書式設定をXSL-FOに変換します。マークアップを追加して、レイアウトとXMLファイル間のマッピングを作成し、書式で直接表現できない機能を挿入します。

最も基本的なマークアップ要素は、XMLデータ要素を定義するプレースホルダ、および繰返し要素を定義するグループです。

BI Publisherは、マークアップをテンプレートに追加するためのタグを提供します。

注意: BI Publisherのタグと同等のXSLについては、「XSLの同等要素」を参照してください。

プレースホルダの作成

プレースホルダによって、テンプレート・フィールドがXML要素データ・フィールドにマッピングされます。プレースホルダは、実行時に、XMLデータ・ファイル内にある同名の要素の値に置換されます。

プレースホルダは、次の構文を使用して文書に入力します。

<?XML要素のタグ名?>

注意: プレースホルダは、XML要素タグ名と正確に一致している必要があります。大文字と小文字が区別されます。

文書にプレースホルダを挿入するには、次の2つの方式があります。

  1. 基本RTF方式: プレースホルダ構文をテンプレート文書に直接挿入します。

  2. フォーム・フィールド方式: (Microsoft Wordが必要)プレースホルダ構文をMicrosoft Wordの「Text Form Field Options」ウィンドウに挿入します。この方式を使用すると、テンプレートの外観を維持できます。

    Template Builder for Wordを使用したRTFテンプレートの作成」の章の「フィールドの挿入」も参照してください。

基本RTF方式

XMLデータ値を表示する文書にプレースホルダ構文を入力します。

次の構文を使用して、要素のXMLタグ名を入力します。

<?XML要素のタグ名?>

次の例では、テンプレート・フィールド「Supplier」がXML要素VENDOR_NAMEにマッピングされます。文書には次のように入力します。

<?VENDOR_NAME?>

次の図に、テンプレートへの入力を示します。

この図についてはドキュメントのテキストで説明しています

フォーム・フィールド方式

Microsoft Wordの「Text Form Field Options」ウィンドウを使用してプレースホルダ・タグを挿入します。

  1. Microsoft Wordアプリケーションで、「Forms」ツールバーを使用可能にします。

  2. プレースホルダを作成する位置にカーソルを置きます。

  3. Text Form Field」ツールバー・アイコンを選択します。この操作によって、フォーム・フィールド領域が文書に挿入されます。

  4. フォーム・フィールド領域をダブルクリックして、「Text Form Field Options」ダイアログ・ボックスを起動します。

  5. (オプション)「Default text」フィールドに、フィールドの説明を入力します。このフィールドに入力した内容がテンプレートのプレースホルダの位置に移入されます。

    たとえば、「Supplier 1」と入力します。

  6. Add Help Text」ボタンを選択します。

  7. 次の構文を使用して、ヘルプ・テキスト入力フィールドにXML要素のタグ名を入力します。

    <?XML要素のタグ名?>

    テキスト入力フィールドには、複数の要素タグ名を入力できます。

    次の例では、レポート・フィールド「Supplier」がXML要素VENDOR_NAMEにマッピングされます。「Form Field Help Text」フィールドには次のように入力します。

    <?VENDOR_NAME?>

    次の図に、「Text Form Field Options」ダイアログ・ボックス、および「Supplier」フィールドに適切な入力がある「Form Field Help Text」ダイアログ・ボックスを示します。

    ヒント: BI Publisher構文の文字列が長い場合、「Status Bar」タブのかわりに「Help Key (F1)」タブを使用します。「Help Key (F1)」タブでは、より多くのテキストを入力できます。

    この図についてはドキュメントのテキストで説明しています

  8. OK」を選択して適用します。

    テンプレートのフォーム・フィールドに「Default text」の入力内容が表示されます。

    次の図に、追加のフォーム・フィールド・マークアップが表示されたテンプレートの「Supplier」フィールドを示します。

    この図についてはドキュメントのテキストで説明しています

この例のまとめ

次の表に、この例を作成するために入力したすべての内容を示します。テンプレート・フィールド名はテンプレートでの表示名です。デフォルト・テキスト入力は、「Text Form Field Options」ダイアログ・ボックスの「Default Text」フィールドに入力した値です(フォーム・フィールド方式の場合のみ)。プレースホルダ入力は、「Form Field Help Text」フィールド(フォーム・フィールド方式の場合)またはテンプレートに直接入力したXML要素タグ名です。

テンプレート・フィールド名 デフォルト・テキスト入力(フォーム・フィールド方式) プレースホルダ入力(XMLタグ名)
請求書番号 1234566 <?INVOICE_NUM?>
請求日 2004年1月1日 <?INVOICE_DATE?>
GL日 2004年1月1日 <?GL_DATE?>
Curr USD <?INVOICE_CURRENCY_CODE?>
Entered Amt 1000.00 <?ENT_AMT?>
Accounted Amt 1000.00 <?ACCTD_AMT?>
(Entered Amount列の合計) 1000.00 <?ENT_SUM_VENDOR?>
(Accounted Amount列の合計) 1000.00 <?ACCTD_SUM_VENDOR?>

次の図に、フォーム・フィールドのプレースホルダ・マークアップが完了したPayables Invoice Registerを示します。

完了した基本RTFマークアップについては、基本RTFマークアップが完了したPayables Invoice Registerを参照してください。

この図についてはドキュメントのテキストで説明しています

グループの定義

注意: 「Template Builder for Wordを使用したRTFテンプレートの作成」の章の「繰返しグループの挿入」も参照してください。

グループを定義することによって、要素(親)の出現箇所ごとに、含まれているフィールドを表示するようにBI Publisherに通知しています。実行時に、BI Publisherは要素の出現箇所をすべて処理し、毎回、フィールドを表示します。

次の例では、XMLファイルのG_VENDOR_NAMEが出現するたびに、その子要素であるVENDOR_NAME(仕入先名)、G_INVOICE_NUM(請求書グループ)、入力済金額合計および計上済金額合計をテンプレートで表示します。さらに、G_INVOICE_NUM(請求書グループ)が出現するたびに、請求書番号、請求日、GL記帳日、通貨、入力済金額および計上済金額をテンプレートで表示します。

繰返しフィールドのグループを指定するには、繰り返す要素の前後にグループ・タグを挿入します。

最初の要素の前に、次のタグを挿入します。

<?for-each:XMLグループ要素のタグ名?>

最後の要素の後に、次のタグを挿入します。

<?end for-each?>

グループ化のシナリオ

グループ要素は、XML入力ファイルの繰返し要素の親であることが必要です。

基本RTF方式

タグを文書に入力して、繰返し要素グループの開始と終了を定義します。

この例でSuppliersグループを作成するには、次のタグを挿入します。

<?for-each:G_VENDOR_NAME?>

このタグは、すでに作成してある「Supplier」フィールドの前に挿入します。

文書内の要約行の後に、<?end for-each?>を挿入します。

次の図に、基本RTFグループ化とプレースホルダ・マークアップを設定したPayables Invoice Registerを示します。

この図についてはドキュメントのテキストで説明しています

フォーム・フィールド方式

  1. フォーム・フィールドを挿入して、グループの開始を指定します。

    ヘルプ・テキスト・フィールドに、次のように入力します。

    <?for-each:グループ要素タグ名?>

    この例のSuppliersグループを作成するには、すでに作成してある「Suppliers」フィールドの前にフォーム・フィールドを挿入します。ヘルプ・テキスト・フィールドには次のように入力します。

    <?for-each:G_VENDOR_NAME?>

    この例では、デフォルト・テキスト「Group: Suppliers」を入力して、テンプレートのグループの開始を指定します。デフォルト・テキストは必須ではありませんが、テンプレートが理解しやすくなります。

  2. グループ内の最後のプレースホルダの後にフォーム・フィールドを挿入します。ヘルプ・テキスト・フィールドに、<?end for-each?>と入力します。

    この例では、要約行の後にデフォルト・テキスト「End: Suppliers」を入力して、テンプレートのグループの終了を指定します。

    次の図に、Suppliersグループを指定するマークアップを追加した後のテンプレートを示します。

この図についてはドキュメントのテキストで説明しています

この例のまとめ

この例の2番目のグループは請求書グループです。このグループの繰返し要素は表に表示されます。請求書ごとに表の行が繰り返されます。これらの要素を含むグループを表内に作成します。

注意: 請求書ごとに、表全体ではなく、表のだけを繰り返す必要があります。表の行の始めと終わりにグループ化タグを配置すると、行だけが繰り返されます。表の周りにタグを配置すると、新しい請求書ごとにヘッダーを含む表全体が繰り返されます。

この例をマークアップするには、表セルのInvoice Numプレースホルダの前に、グループ・タグ<?for-each:G_INVOICE_NUM?>を挿入します。デフォルト・テキスト「Group: Invoices」を入力して、グループの開始を指定します。

行の最後の表セル内で、Accounted Amtプレースホルダの後に終了タグを挿入します。デフォルト・テキスト「End: Invoices」を入力して、グループの終了を指定します。

次の図に、フォーム・フィールド方式を使用して設定した例を示します。

この図についてはドキュメントのテキストで説明しています

ヘッダーとフッターの定義

システム固有のサポート

BI Publisherでは、RTF固有のヘッダーとフッターの機能を使用できます。ヘッダーまたはフッターを作成するには、使用している文書処理アプリケーションのヘッダーとフッターの挿入ツールを使用します。複数のヘッダーとフッターがある場合などは、別の方法として、start:bodyタグおよびend bodyタグを使用して、ヘッダーとフッターのリージョンとレポート本体を区別できます。

ヘッダーとフッターへのプレースホルダの挿入

このマニュアルの作成時点では、Microsoft Wordでは、ヘッダーとフッターのフォーム・フィールドをサポートしていません。したがって、プレースホルダ構文をテンプレートに直接挿入するか(基本RTF方式)、次の項で説明するstart body/end body構文を使用する必要があります。

複数のヘッダーとフッターまたは複雑なヘッダーとフッター

テンプレートで複数のヘッダーとフッターが必要な場合は、BI Publisherのタグを使用してヘッダーとフッターを作成し、レポートの本体部分を定義します。この方法は、フォーム・フィールドに配置する複雑なオブジェクトがヘッダーとフッターに含まれている場合にも使用できます。本体部分を定義すると、その本体部分の先頭より前にある要素によってヘッダーが構成され、本体部分の後にある要素によってフッターが構成されます。

レポートの本体部分は、次のタグを使用して囲みます。

<?start:body?>

<?end body?>

これらのタグは、テンプレートで直接使用するか、フォーム・フィールド内で使用します。

Payables Invoice Registerのヘッダーとフッターは単純であるため、start body/end bodyタグを使用する必要はありません。ただし、別のヘッダーをテンプレートに追加する場合は、次の手順で本体部分を定義します。

  1. Suppliersグループのタグ<?for-each:G_VENDOR_NAME?>の前に<?start:body?>を挿入します。

  2. Suppliersグループの終了タグ<?end for-each?>の後に<?end body?>を挿入します。

次の図に、start body/end bodyタグを挿入したPayables Invoice Registerを示します。

この図についてはドキュメントのテキストで説明しています

「Different First Page」および「Different Odd and Even Page」のサポート

レポートの先頭ページに異なるヘッダーやフッターが必要な場合、または奇数ページと偶数ページで異なるヘッダーやフッターが必要な場合は、Microsoft Wordの「Page Setup」ダイアログを使用してこの動作を定義できます。

注意: この機能は、PDFおよびRTFの出力のみでサポートされています。

  1. File」メニューから「Page Setup」を選択します。

  2. Page Setup」ダイアログで「Layout」タブを選択します。

  3. ダイアログの「Headers and footers」リージョンで、該当するチェック・ボックスを選択します。

    「Different odd and even」

    「Different first page」

  4. 必要に応じてテンプレートにヘッダーとフッターを挿入します。

実行時に、生成されたレポートに定義済のヘッダーとフッターの動作が表示されます。

イメージとチャートの挿入

イメージ

BI Publisherでは、発行文書にイメージを挿入するための複数の方法をサポートしています。

直接挿入

jpg、gifまたはpngイメージをテンプレートに直接挿入します。

URL参照

URL参照

  1. ダミー・イメージをテンプレートに挿入します。

  2. Microsoft Wordの「Format Picture」ダイアログ・ボックスで「Web」タブを選択します。イメージURLを参照するには、次の構文を「Alternative text」リージョンに入力します。

    url:{'http://イメージの位置'}

    たとえば、url:{'http://www.oracle.com/images/ora_log.gif'}と入力します。

XMLファイルからの要素の参照

  1. ダミー・イメージをテンプレートに挿入します。

  2. Microsoft Wordの「Format Picture」ダイアログ・ボックスで「Web」タブを選択します。イメージURLを参照するには、次の構文を「Alternative text」リージョンに入力します。

    url:{IMAGE_LOCATION}

    ここで、IMAGE_LOCATIONは、イメージへの完全なURLを保持するXMLファイルの要素です。

    実行時に複数の要素に基づいてURLを作成することもできます。concat関数を使用してURL文字列を作成します。例:

    url:{concat(SERVER,'/',IMAGE_DIR,'/',IMAGE_FILE)}

    ここで、SERVER、IMAGE_DIRおよびIMAGE_FILEは、URLの作成に必要な値を保持するXMLファイルの要素です。

    この方法は、次のようにOA_MEDIA参照とともに使用することもできます。

    url:{concat('${OA_MEDIA}','/',IMAGE_FILE)}

BLOBデータから取得したイメージのレンダリング

結果のXMLにデータベースのBLOBとして保存されていたイメージ・データが含まれている場合は、実行時にイメージを表示するテンプレートに挿入されるフォーム・フィールドで次の構文を使用します。

<fo:instream-foreign-object content-type="image/jpg">
<xsl:value-of select="IMAGE_ELEMENT"/>
</fo:instream-foreign-object>

説明:

image/jpgは、イメージのMIMEタイプです(他のオプションとしてimage/gifとimage/pngがあります)。

および

IMAGE_ELEMENTは、XMLデータのBLOBの要素名です。

イメージには、高さと幅の属性を指定して、発行レポートのイメージのサイズを設定できます。BI Publisherにより、定義したボックス・サイズにあわせてイメージが表示されます。たとえば、前述の例のサイズを3x4インチに設定するには、次のように入力します。

<fo:instream-foreign-object content-type="image/jpg" height="3 in" width="4 in">
<xsl:value-of select="IMAGE_ELEMENT"/>
</fo:instream-foreign-object>

次のようにピクセルを使用して指定します。

<fo:instream-foreign-object content-type="image/jpg" height="300 px" width="4 px">
...

cmも使用できます。

<fo:instream-foreign-object content-type="image/jpg" height="3 cm" width="4 cm">
...

あるいは、元のディメンションに対するパーセントで指定できます。

<fo:instream-foreign-object content-type="image/jpg" height="300%" width="300%">
...

チャートのサポート

注意: 「Template Builder for Wordを使用したRTFテンプレートの作成」の章の「チャートの挿入」も参照してください。

チャートをテンプレートに追加する手順の要約は次のとおりです。これらの手順の詳細は、後述する例で説明します。

  1. ダミー・イメージをテンプレートに挿入して、チャートのサイズと位置を定義します。

  2. ダミー・イメージの「Alternative text」ボックスに、チャートの定義を追加します。チャートの定義にはXSLコマンドが必要です。

  3. 実行時に、BI Publisherは、チャート・エンジンをコールしてイメージをレンダリングします。このイメージは、最終出力文書に挿入されます。

RTF出力がラスター・イメージに制限されていることに注意してください。PDFとHTMLの出力は、ラスター・イメージとベクトル・イメージをサポートしています。

サンプル・チャートの追加

次の例は、会社の部門別に売上合計を表示するXMLデータの一部です。

<sales year=2004>
 <division>
  <name>Groceries</name>
  <totalsales>3810</totalsales>
  <costofsales>2100</costofsales>
 </division>
 <division>
  <name>Toys</name>
  <totalsales>2432</totalsales>
  <costofsales>1200</costofsales>
 </division>
 <division>
  <name>Cars</name>
  <totalsales>6753</totalsales>
  <costofsales>4100</costofsales>
 </division>
 <division>
  <name>Hardware</name>
  <totalsales>2543</totalsales>
  <costofsales>1400</costofsales>
 </division>
 <division>
  <name>Electronics</name>
  <totalsales>5965</totalsales>
  <costofsales>3560</costofsales>
 </division>
</sales>

この例では、チャートをテンプレートに挿入し、次の図に示すように垂直棒グラフとして表示する方法を示します。

この図についてはドキュメントのテキストで説明しています

このチャートの次の属性に注目してください。

各プロパティは、個別のレポート要件にあわせてカスタマイズできます。

ダミー・イメージの挿入

最初の手順では、テンプレートのチャートを表示する位置にダミー・イメージを追加します。イメージ・サイズによって、最終文書に表示するチャート・イメージのサイズが定義されます。

重要: ダミー・イメージはイメージとして挿入し、他の種類のオブジェクトとして挿入しないでください。

次の図に、ダミー・イメージの例を示します。

この図についてはドキュメントのテキストで説明しています

繰返しデータに基づいてチャートを出力に繰返し表示する場合は、他のフォーム・フィールドと同様に、イメージをfor-eachループ内に埋め込むことができます。この例では、チャートはsales yearグループ内で定義されているため、XMLファイルに存在するデータの年度ごとに生成されます。

イメージを右クリックして「Format Picture」パレットを開き、「Web」タブを選択します。「Alternative text」入力ボックスを使用して、チャート特性を定義するコードとチャートのデータ定義を入力します。

「Alternative Text」ボックスへのコードの追加

次の図に、「Format Picture」の「Alternative text」ボックスのBI Publisherコードの例を示します。

この図についてはドキュメントのテキストで説明しています

Alternative text」の内容は、最終文書にレンダリングされるチャートを表します。このチャートの場合、テキストは次のとおりです。

chart:
<Graph graphType = "BAR_VERT_CLUST">
 <Title text="Company Sales 2004" visible="true" horizontalAlignment="CENTER"/>
 <Y1Title text="Sales in Thousands" visible="true"/>
 <O1Title text="Division" visible="true"/>
 <LocalGridData colCount="{count(//division)}" rowCount="1">
  <RowLabels>
   <Label>Total Sales $1000s</Label>
  </RowLabels>
  <ColLabels>
   <xsl:for-each select="//division">
    <Label>
      <xsl:value-of select="name"/>
    </Label>
   </xsl:for-each>
  </ColLabels>
  <DataValues>
   <RowData>
    <xsl:for-each select="//division">
      <Cell>
       <xsl:value-of select="totalsales"/>
     </Cell>
    </xsl:for-each>
   </RowData>
  </DataValues>
 </LocalGridData>
</Graph>

チャート・テキストの最初の要素はchart:要素であることが必要です。この要素は、RTFパーサーに、後続のコードでチャート・オブジェクトが記述されていることを通知します。

次の要素は開始の<Graph>タグです。コード全体が<Graph>要素のタグ内にあることに注意してください。この要素には、チャート・タイプを定義するためのgraphType属性があります。この属性が宣言されていない場合、デフォルトのチャートは垂直棒グラフです。BI Beansでは、多数の異なるチャート・タイプをサポートしています。この項では、それ以外のタイプも使用しています。チャート・タイプの完全リストは、BI BeansのグラフDTDのドキュメントを参照してください。

次のコード・セクションは、チャート・タイプと属性を定義します。

<Title text="Company Sales 2004" visible="true" horizontalAlignment="CENTER"/>
 <Y1Title text="Sales in Thousands" visible="true"/>
 <O1Title text="Division" visible="true"/>
 

これらの値をすべて宣言するか、実行時にXMLデータから値を置換できます。たとえば、次の構文を使用すると、XMLタグからチャート・タイトルを取得できます。

<Title text="{CHARTTITLE}" visible="true" horizontalAlighment="CENTER"/>

ここで、CHARTTITLEはチャート・タイトルを含むXMLタグ名です。タグ名が中カッコで囲まれていることに注意してください。

次のセクションは、列ラベルと行ラベルを定義します。

<LocalGridData colCount="{count(//division)}" rowCount="1">
  <RowLabels>
   <Label>Total Sales $1000s</Label>
  </RowLabels>
  <ColLabels>
   <xsl:for-each select="//division">
    <Label>
      <xsl:value-of select="name"/>
    </Label>
   </xsl:for-each>
  </ColLabels>

LocalGridData要素には、colCountとrowCountの2つの属性があります。これらの属性は、実行時に表示する列と行の数を定義します。この例では、count関数でレンダリングする列の数を計算します。

colCount="{count(//division)}"

rowCountは1にハードコードされています。この値は、チャートの対象になるデータのセット数を定義します。この例では1です。

その次のコードは、行と列のラベルを定義します。これらのラベルを宣言するか、または実行時にXMLデータから値を置換できます。行ラベルはチャートの凡例で使用されます(この例では「Total Sales $1000s」)。

この例では、列ラベルがGroceries、Toys、Carsなどのデータから抽出されています。これは、for-eachループを使用して実行されます。

 <ColLabels>
   <xsl:for-each select="//division">
    <Label>
      <xsl:value-of select="name"/>
    </Label>
   </xsl:for-each>
  </ColLabels>

このコードは、<division>グループをループし、<name>要素の値を<Label>タグに挿入します。これによって、実行時に次のXMLが生成されます。

<ColLabels>
  <Label>Groceries</Label>
  <Label>Toys</Label>
  <Label>Cars</Label>
  <Label>Hardware</Label>
  <Label>Electronics</Label>
</ColLabels>

次のセクションは、チャート対象の実際のデータ値を定義します。

<DataValues>
   <RowData>
    <xsl:for-each select="//division">
      <Cell>
       <xsl:value-of select="totalsales"/>
     </Cell>
    </xsl:for-each>
   </RowData>
  </DataValues>

ラベルのセクションと同様に、このコードはデータをループして、BI Beansのレンダリング・エンジンに渡されるXMLを生成します。これによって、次のXMLが生成されます。

<DataValues>
  <RowData>
    <Cell>3810</Cell>
    <Cell>2432</Cell>
    <Cell>6753</Cell>
    <Cell>2543</Cell>
    <Cell>5965</Cell>
  </RowData>
</DataValues>

別のチャートのサンプル

前述のデータは、次の図に示すように、円グラフでも表示できます。

この図についてはドキュメントのテキストで説明しています

次に、実行時にこのチャートをレンダリングするためにテンプレートに追加されたコードを示します。

chart:
<Graph graphType="PIE">
 <Title text="Company Sales 2004" visible="true"    
   horizontalAlignment="CENTER"/>
 <LocalGridData rowCount="{count(//division)}" colCount="1">
  <RowLabels>
  <xsl:for-each select="//division">     
  <Label>
   <xsl:value-of select="name"/>
  </Label>
  </xsl:for-each>
  </RowLabels>
  <DataValues>
   <xsl:for-each select="//division">
    <RowData>
      <Cell>
       <xsl:value-of select="totalsales"/>
      </Cell>
    </RowData>
   </xsl:for-each>
  </DataValues>
 </LocalGridData>
</Graph>

横棒グラフのサンプル

次に、売上合計と売上原価を横棒グラフで表示した例を説明します。この例では、売上原価要素(<costofsales>)のデータもチャートに追加されています。

この図についてはドキュメントのテキストで説明しています

次に、このチャートをテンプレートに定義するコードを示します。

chart:
<Graph graphType = "BAR_HORIZ_CLUST">
 <Title text="Company Sales 2004" visible="true" horizontalAlignment="CENTER"/>
 <LocalGridData colCount="{count(//division)}" rowCount="2">
 <RowLabels>
  <Label>Total Sales ('000s)</Label>
  <Label>Cost of Sales ('000s)</Label>
 </RowLabels>
 <ColLabels>
  <xsl:for-each select="//division">
   <Label><xsl:value-of select="name"/></Label>
  </xsl:for-each>
 </ColLabels>
 <DataValues>
  <RowData>
   <xsl:for-each select="//division">
     <Cell><xsl:value-of select="totalsales"/></Cell>
   </xsl:for-each>
  </RowData>
  <RowData>
   <xsl:for-each select="//division">
    <Cell><xsl:value-of select="costofsales"/></Cell>
    </xsl:for-each>
  </RowData>
  </DataValues>
 </LocalGridData>
</Graph>

2番目のデータ・セットを処理するために、LocalGridData要素のrowCount属性が2に設定されています。また、DataValuesセクションでは、売上合計と売上原価の2つのデータ・セットが定義されています。

チャートの外観の変更

チャートの外観を変更するために、BI BeansのグラフDTDの多くの属性を使用できます。たとえば、次の図に示すように、前述のチャートでは、グリッドの削除、背景のグラデーションの配置、および棒の色やフォントの変更が可能です。

この図についてはドキュメントのテキストで説明しています

この変更をサポートするコードは次のとおりです。

chart:
<Graph graphType = "BAR_HORIZ_CLUST">
<SeriesItems>
 <Series id="0" color="#ffcc00"/>
 <Series id="1" color="#ff6600"/>
</SeriesItems> 
<O1MajorTick visible="false"/>
<X1MajorTick visible="false"/>
<Y1MajorTick visible="false"/>
<Y2MajorTick visible="false"/>
<MarkerText visible="true" markerTextPlace="MTP_CENTER"/>
<PlotArea borderTransparent="true">
 <SFX fillType="FT_GRADIENT" gradientDirection="GD_LEFT" 
 gradientNumPins="300">
 <GradientPinStyle pinIndex="1" position="1" 
  gradientPinLeftColor="#999999" 
  gradientPinRightColor="#cc6600"/>
 </SFX>
</PlotArea>
<Title text="Company Sales 2004" visible="true">
 <GraphFont name="Tahoma" bold="false"/>
</Title>
. . . 
</Graph>

棒の色はSeriesItemsセクションに定義されています。色は、次に示すように16進形式で定義されます。

<SeriesItems>  
  <Series id="0" color="#ffcc00"/>  
  <Series id="1" color="#ff6600"/> 
</SeriesItems>  

次のコードは、チャートのグリッドを非表示にします。

  <O1MajorTick visible="false"/> 
  <X1MajorTick visible="false"/> 
  <Y1MajorTick visible="false"/> 
  <Y2MajorTick visible="false"/>

MarkerTextタグは、データ値をチャートの棒上に配置します。

<MarkerText visible="true" markerTextPlace="MTP_CENTER"/> 

PlotAreaセクションは背景を定義します。SFX要素はグラデーションを設定し、borderTransparent属性はプロット境界を非表示にします。

<PlotArea borderTransparent="true">  
  <SFX fillType="FT_GRADIENT" gradientDirection="GD_LEFT"   
     gradientNumPins="300">  
     <GradientPinStyle pinIndex="1" position="1"    
       gradientPinLeftColor="#999999"    
       gradientPinRightColor="#cc6600"/>  
   </SFX> 
</PlotArea>

Title textタグは、新規のフォント・タイプとサイズを指定するように更新されています。

<Title text="Company Sales 2004" visible="true">  
  <GraphFont name="Tahoma" bold="false"/> 
</Title>

描画、図形およびクリップアートのサポート

BI Publisherでは、Microsoft Wordの描画、図形およびクリップアート機能をサポートしています。これらのオブジェクトをテンプレートに追加し、最終的なPDF出力またはHTML出力にレンダリングできます(他の出力タイプについてはサポートされていません)。

次のオートシェイプ・カテゴリがサポートされています。

フリーハンド描画

Microsoft Wordのフリーハンド描画ツールを使用して、最終的なPDF出力にレンダリングする図をテンプレートに作成します。

ハイパーリンク

図形にハイパーリンクを追加できます。「ハイパーリンク」を参照してください。

重ね合せ

図形を相互に重ね合せ、Microsoft Wordの透過性設定を使用して、下位レイヤー上の図形を透かしで表示できます。次の図に、重ね合せた図形の例を示します。

この図についてはドキュメントのテキストで説明しています

3-D効果

BI Publisherでは、図形の3-Dオプションは現在サポートしていません。

Microsoft数式

数式エディタを使用して、出力に数式を生成します。次の図に、数式の例を示します。

この図についてはドキュメントのテキストで説明しています

組織図

テンプレートで組織図機能を使用すると、組織図が出力にレンダリングされます。次のイメージは、組織図の例を示しています。

この図についてはドキュメントのテキストで説明しています

WordArt

Microsoft WordのWordArt機能をテンプレートで使用できます。次の図に、WordArtの例を示します。

この図についてはドキュメントのテキストで説明しています

注意: Microsoft WordArtの中には、現在ではSVGに変換できないビットマップ操作を使用しているものがあります。サポートされていないWordArtをテンプレートで使用するには、WordArtのスクリーンショットを取得してイメージ(gif、jpegまたはpng)として保存し、そのイメージでWordArtを置き換えることができます。

データ制御式図形サポート

BI Publisherでは、テンプレートでの静的図形および機能のサポートだけでなく、受信データまたはパラメータに基づく図形の操作もサポートされます。次の操作がサポートされています。

これらの操作は1つの図形に適用されるだけでなく、Microsoft Wordのグループ機能を使用して、図形をまとめて結合し、グループとして操作できます。

コマンドの配置

次のサンプル図に示すように、図形のプロパティ・ダイアログの「Web」タブで、図形の操作コマンドを入力します。

この図についてはドキュメントのテキストで説明しています

図形の複製

for-eachループでデータ要素を複製するのと同じ方法で、受信XMLデータに基づいて図形を複製できます。この場合、for-each@shapeコマンドをshape-offset宣言と組み合せて使用します。たとえば、図形をページの下方へ複製するには、次の構文を使用します。

<?for-each@shape:SHAPE_GROUP?>
 <?shape-offset-y:(position()-1)*100?>
<?end for-each?>

説明:

for-each@shapeは、図形コンテキストのfor-eachループを開始します。

SHAPE_GROUPは、XMLファイルの繰返し要素の名前です。要素SHAPE_GROUPの出現ごとに、新規の図形が作成されます。

shape-offset-y: y軸に沿って図形をオフセットするコマンドです。

(position()-1)*100): 出現ごとにオフセットをピクセル単位で設定します。XSL positionコマンドにより、グループ内のレコード・カウンタ(1、2、3、4)が戻されます。その数値から1が差し引かれ、その結果に100が掛け合されます。したがって、最初の出現では(1-1) * 100であるため、オフセットが0になります。2つ目の出現のオフセットでは(2-1) *100であるため、100ピクセルとなります。後続の各出現では、オフセットがページ内でもう100ピクセル下になります。

図形へのテキストの追加

受信したXMLデータまたはパラメータ値に基づき、図形にテキストを動的に追加できます。プロパティ・ダイアログで、次の構文を入力します。

<?shape-text:SHAPETEXT?>

ここで、SHAPETEXTはXMLデータ内の要素名です。実行時に、テキストが図形に挿入されます。

パスに沿ったテキストの追加

受信したXMLデータまたはパラメータに基づき、直線または曲線に沿ってテキストを追加できます。直線を描画した後、プロパティ・ダイアログに次のように入力します。

<?shape-text-along-path:SHAPETEXT?>

ここで、SHAPETEXTはXMLデータ内の要素です。実行時に、要素SHAPETEXTの値が直線の上および直線沿いに挿入されます。

図形の移動

XMLデータに基づき、X軸とY軸の両方向に図形を移動または入替えできます。たとえば、図形をY軸方向に200ピクセル、X軸方向に300ピクセル移動するには、図形のプロパティ・ダイアログに次のコマンドを入力します。

<?shape-offset-x:300?>
<?shape-offset-y:200?>

図形の回転

受信したデータに基づいて指定された軸を中心にして図形を回転するには、次のコマンドを使用します。

<?shape-rotate:ANGLE;'POSITION'?>

説明:

ANGLEは、図形を回転する度合いの数値です。角度が正の数である場合、回転は右回りです。負の数の場合は、回転は左回りです。

POSITIONは、回転を実行する際の軸となるポイントであり、left/topなどとなります。有効な値は、left、rightまたはcenterと、center、topまたはbottomの組合せです。デフォルトはleft/topです。次の図に、これらの有効な値を示します。

この図についてはドキュメントのテキストで説明しています

右下角を中心として矩形を回転するには、次の構文を入力します。

<?shape-rotate:60,'right/bottom'?>

図形自体の内部における、回転軸となるXおよびY座標を指定することもできます。

図形の傾斜

次のコマンドを使用して、XまたはY軸方向に図形を傾斜させることができます。

<?shape-skew-x:ANGLE;'POSITION'?>
<?shape-skew-y:ANGLE;'POSITION'?>

説明:

ANGLEは、図形を傾斜させる度合いの数値です。角度が正の数である場合、傾斜は右方向です。

POSITIONは、回転を実行する際の軸となるポイントであり、left/topなどとなります。有効な値は、left、rightまたはcenterと、center、topまたはbottomの組合せです。「図形の回転」の下にある図を参照してください。デフォルトはleft/topです。

たとえば、右下角を中心として図形を30度傾斜させるには、次の構文を入力します。

<?shape-skew-x:number(.)*30;'right/bottom'?>

図形のサイズの変更

適切なコマンドを使用して、単一軸または両方の軸方向に図形のサイズを変更できます。両方の軸方向に図形のサイズを変更するには、次のコマンドを使用します。

<?shape-size:RATIO?>

ここで、RATIOは図形のサイズを増減させる比率です。したがって、値が2の場合、元のサイズの高さと幅を2倍にした図形が生成されます。値が0.5の場合、元のサイズを半分にした図形が生成されます。

X軸またはY軸方向に図形のサイズを変更するには、次のコマンドを使用します。

<?shape-size-x:RATIO?>
<?shape-size-y:RATIO?>

xまたはyの値のみを変更した場合、単一軸方向に図形が拡大または縮小されます。これはデータによって制御できます。

コマンドの結合

また、これらのコマンドを結合し、図形に対して複数の変換を一度に実行できます。たとえば、図形を複製し、各複製について一定角度回転させ、同時にサイズを変更できます。

次の例では、図形を複製し、ページの下方向に50ピクセル分移動し、中心を軸にして5度回転させ、X軸方向に拡大し、さらに図形の番号をテキストとして追加する方法を示しています。

<for-each@shape:SHAPE_GROUP?>
 <?shape-text:position()?>
 <?shape-offset-y:position()*50?>
 <?shape-rotate:5;'center/center'?>
 <?shape-size-x:position()+1?>
<end for-each?>

このコマンドにより、次の図に示す出力が生成されます。

この図についてはドキュメントのテキストで説明しています

CD評価の例

この例では、受信したXMLファイルのデータに基づいて星による評価を生成するテンプレートの設定方法を示しています。

次のXMLデータを受信したと想定します。

<CATALOG>
 <CD>
  <TITLE>Empire Burlesque</TITLE>
  <ARTIST>Bob Dylan</ARTIST>
  <COUNTRY>USA</COUNTRY>
  <COMPANY>Columbia</COMPANY>
  <PRICE>10.90</PRICE>
  <YEAR>1985</YEAR>
  <USER_RATING>4</USER_RATING>
 </CD>
 <CD>
  <TITLE>Hide Your Heart</TITLE>
  <ARTIST>Bonnie Tylor</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>CBS Records</COMPANY>
  <PRICE>9.90</PRICE>
  <YEAR>1988</YEAR>
  <USER_RATING>3</USER_RATING>
 </CD>
 <CD>
  <TITLE>Still got the blues</TITLE>
  <ARTIST>Gary More</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>Virgin Records</COMPANY>
  <PRICE>10.20</PRICE>
  <YEAR>1990</YEAR>
  <USER_RATING>5</USER_RATING>
 </CD>
 <CD>
  <TITLE>This is US</TITLE>
  <ARTIST>Gary Lee</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>Virgin Records</COMPANY>
  <PRICE>12.20</PRICE>
  <YEAR>1990</YEAR>
  <USER_RATING>2</USER_RATING>
 </CD>
<CATALOG>

CDごとにUSER_RATING要素がある点に注意してください。このデータ要素および図形操作コマンドを使用して、読者が一目で評価を比較できるように評価の図による表示を作成できます。

次の図に、この処理を行うためのテンプレートを示します。

この図についてはドキュメントのテキストで説明しています

次の表に、フィールドの値を示します。

フィールド フォーム・フィールド入力
F <?for-each:CD?>
TITLE <?TITLE?>
ARTIST <?ARTIST?>
E <?end for-each?>
(星型) 「Web」タブ入力:
<?for-each@shape:xdoxslt:foreach_number($_XDOCTX,1,USER_RATING,1)?>
<?shape-offset-x:(position()-1)*25?>
<?end for-each?>

フォーム・フィールドには、単一要素の値が保持されます。このテンプレートでの唯一の相違点は、星型の値です。複製コマンドは、「オートシェイプの書式設定」ダイアログの「Web」タブにあります。

for-each@shapeコマンドでは、"for...next loop"構造を作成するコマンドを使用しています。開始番号に1、最終番号に値USER_RATING、ステップ値に1を指定します。テンプレートがCD間をループするため、USER_RATING値ごとに星型を繰り返す内部ループを作成します(つまり、値が4の場合は4つの星が生成されます)。次の図に、このテンプレートおよびXMLサンプルからの出力を示します。

この図についてはドキュメントのテキストで説明しています

グループ化した図形の例

この例では、図形を結合してグループにし、受信データに対して個別およびグループの両方で対応するよう設定する方法を示しています。次のXMLデータを前提としています。

<SALES>
 <SALE>
  <REGION>Americas</REGION>
  <SOFTWARE>1200</SOFTWARE>
  <HARDWARE>850</HARDWARE>
  <SERVICES>2000</SERVICES>
 </SALE>
 <SALE>
  <REGION>EMEA</REGION>
  <SOFTWARE>1000</SOFTWARE>
  <HARDWARE>800</HARDWARE>
  <SERVICES>1100</SERVICES>
 </SALE>
 <SALE>
  <REGION>APAC</REGION>
  <SOFTWARE>900</SOFTWARE>
  <HARDWARE>1200</HARDWARE>
  <SERVICES>1500</SERVICES>
 </SALE>
</SALES>

ユーザーがすべての地域における売上データを迅速に把握できるように、このデータの図による表示を作成できます。これには、まずMicrosoft Wordで操作する複合図形を作成します。次の図に、4つの構成要素からなる複合図形を示します。

この図についてはドキュメントのテキストで説明しています

この図形は、赤、黄および青の3つの円柱で構成されています。これらは、ソフトウェア、ハードウェアおよびサービスというデータ要素を表します。結合オブジェクトには、受信データからテキストを受け取るために有効化された矩形も含まれます。

次のコマンドが「Web」タブに入力されています。

赤い円柱: <?shape-size-y:SOFTWARE div 1000;'left/bottom'?>

黄色の円柱: <?shape-size-y:HARDWARE div 1000;'left/bottom'?>

青い円柱: <?shape-size-y:SERVICES div 1000;'left/bottom'?>

shape-sizeコマンドを使用すると、SOFTWARE、HARDWAREおよびSERVICES要素の値に基づいて円柱が拡大または縮小されます。拡大または縮小ファクタを設定するには、この値を1000で割ります。たとえば、値が2000の場合、1000で割ってファクタ2を算出します。図形は現在の2倍の高さで生成されます。

テキスト対応の矩形については、「Web」タブに次のコマンドが含まれます。

<?shape-text:REGION?>

実行時に、REGION要素の値が矩形に表示されます。

これらのすべての図形がグループ化され、グループ・オブジェクトの「Web」タブに次の構文が追加されます。

<?for-each@shape:SALE?>
<?shape-offset-x:(position()-1)*110?>
<?end for-each?>

このコマンド・セットでは、for-each@shapeがSALEグループをループします。shape-offsetコマンドにより、ループ内の次の図形が右方向に指定ピクセル数移動します。式(position()-1)により、オブジェクトの位置が設定されます。position()関数では、ループ処理中にレコード・カウンタが戻されるため、最初の図形では、オフセットが1-1*110、すなわち0となり、オブジェクトの最初のレンダリングがテンプレートで定義された位置に配置されます。後続の出現箇所は、X軸方向(右方向)に110ピクセル分オフセットした位置でレンダリングされます。

次の図に示すように、実行時に3つの図形のセットがページ全体にレンダリングされます。

この図についてはドキュメントのテキストで説明しています

より一層視覚的にわかりやすいレポートを作成するため、これらの図形を世界地図上に重ねることができます。Microsoft Wordの「Order」ダイアログを使用して、グループ化した図形の背後に地図を重ねます。

Microsoft Word 2000ユーザー: 背景用の地図を追加して図形グループを重ねた後、「Grouping」ダイアログを使用して構成全体を1つのグループにします。

Microsoft Word 2002/3ユーザー: これらのバージョンのWordには、「Tools」→「Options」→「General」タブの下に「Automatically generate drawing canvas when inserting autoshapes」オプションがあります。このオプションを使用すると、地図と図形を最終的にグループ化する必要がありません。これで、次の図に示すように、視覚的に訴えかける出力をレポート用に生成できます。

この図についてはドキュメントのテキストで説明しています

サポート対象のシステム固有の書式設定機能

これまでに説明した機能に加えて、BI Publisherでは、Microsoft Wordの次の機能もサポートしています。

一般的な機能

配置

テキスト、グラフィック、オブジェクトおよび表は、ワード・プロセッサの配置機能を使用して配置します。

注意: 双方向の言語は、文書処理アプリケーションの右/左揃え機能によって自動的に処理されます。

次の表機能がサポートされています。

次の図に、切捨ての例を示します。

この図についてはドキュメントのテキストで説明しています

日付フィールド

日付は、使用している文書処理アプリケーションの日付機能を使用して挿入します。この日付は発行日に対応しており、要求実行日ではないことに注意してください。

段組みページのサポート

BI PublisherはMicrosoft Wordの列機能をサポートしているため、ページ内の複数の列に出力を公開できます(これはHTML出力ではサポートされていません)。

Format」→「Columns」を選択して「Columns」ダイアログ・ボックスを表示し、テンプレートの段数を定義します。次の図に、「Columns」ダイアログを示します。

この図についてはドキュメントのテキストで説明しています

段組みページの例: ラベル

2段形式で所在地ラベルを生成する手順は、次のとおりです。

  1. 「Columns」コマンドを使用して、ページを2段に分割します。

  2. 最初の段に繰返し可能なグループを定義します。次の図に示すように、繰返し可能なグループを定義するのは最初の段のみであることに注意してください。

この図についてはドキュメントのテキストで説明しています

ヒント: 所在地ブロックが複数のページや段に分割されないようにするには、単一セルの表内にラベル・ブロックを埋め込みます。次に、行の途中で改ページしないように「Table Properties」で指定します。「行の途中で改ページしないようにする機能」を参照してください。

このテンプレートによって、次の複数の段がある出力が作成されます。

この図についてはドキュメントのテキストで説明しています

背景および透かしのサポート

BI Publisherは、Microsoft Wordの背景機能をサポートしています。テンプレートがPDF出力で表示されるように、1つの段階的な色またはイメージの背景を指定できます。この機能は、PDF出力およびPPT出力のみでサポートされています。

テンプレートに背景を追加するには、「Format」→「Background」メニュー・オプションを使用します。

Microsoft Word 2000を使用した背景の追加

「Background」ポップアップ・メニューから、次の処理を実行できます。

Microsoft Word 2002以上を使用したテキストまたはイメージの透かしの追加

これらのバージョンのMicrosoft Wordでは、テキストまたはイメージの透かしを追加できます。

「Format」→「Background」→「Printed Watermark」ダイアログを使用して、次のいずれかを選択します。

この図についてはドキュメントのテキストで説明しています

テンプレート機能

改ページ

注意: 改ページは、PDF、RTF、およびPPT出力でサポートされています。改ページは、HTML出力ではサポートされていません。

特定要素の出現後に改ページを作成するには、split-by-page-break別名を使用します。これによって、特定要素のインスタンスごとにレポート出力に改ページが挿入されます。

グループの出現ごとに改ページを挿入するには、グループを閉じる<?end for-each?>タグの直前にあるグループ内にsplit-by-page-breakフォーム・フィールドを挿入します。このフォーム・フィールドのヘルプ・テキストに次の構文を入力します。

<?split-by-page-break:?>

次のXMLで、新規仕入先ごとに改ページを作成するとします。

<SUPPLIER>
 <NAME>My Supplier</NAME>
 <INVOICES>
  <INVOICE>
   <INVNUM>10001-1</INVNUM>
   <INVDATE>1-Jan-2005</INVDATE>
   <INVAMT>100</INVOICEAMT>
  </INVOICE>
  <INVOICE>
   <INVNUM>10001-2</INVNUM>
   <INVDATE>10-Jan-2005</INVDATE>
   <INVAMT>200</INVOICEAMT>
  </INVOICE>
 </INVOICES>
</SUPPLIER>
<SUPPLIER>
 <NAME>My Second Supplier</NAME>
 <INVOICES>
  <INVOICE>
   <INVNUM>10001-1</INVNUM>
   <INVDATE>11-Jan-2005</INVDATE>
   <INVAMT>150</INVOICEAMT>
  </INVOICE>
…

次の図に示すテンプレート・サンプルでは、PageBreakというフィールドにsplit-by-page-break構文が含まれています。

この図についてはドキュメントのテキストで説明しています

<?end for-each?>フィールドの直前に、<?split-by-page-break:?>構文を含むPageBreakフィールドを配置します。このPageBreakフィールドは、SUPPLIERループの最後に位置します。これによって、新規仕入先が出現する前に改ページが挿入されます。この方法では、グループの後にMicrosoft Word固有の改ページを使用した場合に、グループの最後に余分なページが出力されません。

初期ページ番号

注意: PDFおよびPPTの出力では最初のページ番号がサポートされています。HTMLおよびRTFの出力ではサポートされていません。

一部のレポートでは、初期ページ番号を指定の番号に設定する必要があります。たとえば、月次レポートでは、月ごとに番号を連続する必要があります。BI Publisherでは、この要件をサポートするために、テンプレートにページ番号を設定できます。

次の構文をテンプレートで使用して、初期ページ番号を設定します。

<?initial-page-number:pagenumber?>

ここで、pagenumberは数値を保持するXML要素またはパラメータです。

また、BI Publisherは前の項からのページ番号の継続をサポートしています。ドキュメントの新しい項のデフォルト動作は、ページ番号付けをリセットすることです。しかし、レポートにおいてページ番号付けを次の項に継続する必要がある場合は、次コマンドを使用します。

<?initial-page-number:'auto'?>

このコマンドは、前の項からのページ番号付けの継続を可能にします。

例1: XMLデータ要素からページ番号を設定

次に、初期ページ番号を保持する要素がXMLデータに含まれている場合の例:

<REPORT>
  <PAGESTART>200<\PAGESTART>
  ....
</REPORT>

テンプレートに次のように入力します。

<?initial-page-number:PAGESTART?>

これで、初期ページ番号はPAGESTART要素の値(この例では200)になります。

例2: パラメータ値を渡してページ番号を設定

PAGESTARTというパラメータを定義すると、このパラメータをコールして初期値を渡すことができます。

テンプレートに次のように入力します。

<?initial-page-number:$PAGESTART?>

注意: 最初に、テンプレートでパラメータを宣言する必要があります。「テンプレートでのパラメータの定義」を参照してください。

最終ページのみのコンテンツ

注意: この機能は、PDFおよびPPTの出力のみでサポートされています。

BI Publisherでは、先頭ページ、奇数ページおよび偶数ページに対して異なるページ・レイアウトを指定するMicrosoft Wordの機能をサポートしています。これらのオプションを実現するには、単に「File」メニューから「Page Setup」を選択して、「Layout」タブを選択します。BI Publisherでは、このダイアログの設定が認識されます。

ただし、Microsoft Wordには最終ページのみの設定が提供されていません。この機能は、最終ページにのみ特定の場所にチェックや要約などのコンテンツを必要とするような小切手、請求書または発注書などの文書に便利です。

BI Publisherには、この機能が提供されています。この機能を利用するには、次のように操作する必要があります。

  1. テンプレート内にセクション区切りを作成して、最終ページの内容がレポートの残りの部分から分離されるようにします。

  2. 次の構文を最終ページに挿入します。

    <?start@last-page:body?>

    <?end body?>

このページ上で、この2つのタグの上または下にくるコンテンツはレポートの最終ページにのみ表示されます。また、このコマンドは明示的に最終ページのコンテンツを指定するため、レポートに対してそれまでに定義したヘッダーやフッターを必要とする場合は最終ページに再挿入する必要があります。

この例では、最終ページの最下部に要約が表示される請求書リストを生成するレポートに対して、最終ページのみ別指定の機能を使用しています。

次のXMLを想定します。

<?xml version="1.0" encoding="WINDOWS-1252"?>
<INVOICELIST>
 <VENDOR>
  <VENDOR_NAME>Nuts and Bolts Limited</VENDOR_NAME>
  <ADDRESS>1 El Camino Real, Redwood City, CA 94065</ADDRESS>
  <INVOICE>
   <INV_TYPE>Standard</INV_TYPE>
   <INVOICE_NUM>981110</INVOICE_NUM>
   <INVOICE_DATE>10-NOV-04</INVOICE_DATE>
   <INVOICE_CURRENCY_CODE>EUR</INVOICE_CURRENCY_CODE>
   <ENT_AMT>122</ENT_AMT>
   <ACCTD_AMT>122</ACCTD_AMT>
   <VAT_CODE>VAT22%</VAT_CODE>
  </INVOICE>
  <INVOICE>
   <INV_TYPE>Standard</INV_TYPE>
   <INVOICE_NUM>100000</INVOICE_NUM>
   <INVOICE_DATE>28-MAY-04</INVOICE_DATE>
   <INVOICE_CURRENCY_CODE>FIM</INVOICE_CURRENCY_CODE>
   <ENT_AMT>122</ENT_AMT>
   <ACCTD_AMT>20.33</ACCTD_AMT>
   <VAT_CODE>VAT22%</VAT_CODE>
  </INVOICE>
 </VENDOR>
 <VENDOR>
  ...
<INVOICE>
 ...
  </INVOICE>
 </VENDOR>
 <SUMMARY>
  <SUM_ENT_AMT>61435</SUM_ENT_AMT>
  <SUM_ACCTD_AMT>58264.68</SUM_ACCTD_AMT>
  <TAX_CODE>EU22%</TAX_CODE>
 </SUMMARY>
</INVOICELIST>

レポートには、各VENDORおよびそのINVOICEデータとともに、最終ページにのみ最下部にSUMMARYセクションが表示されます。次の図に、このレポートのテンプレートを示します。

テンプレート・ページ1

この図についてはドキュメントのテキストで説明しています

テンプレートの先頭ページにMicrosoft Wordのセクション区切り(タイプ: 「next page」)を挿入します。最終ページの場合は、要約表をページの最下部に配置するために複数の改行文字を挿入します。次の図に、要約表を示します。

最終ページのみのレイアウト

この図についてはドキュメントのテキストで説明しています

この例では、次のように設定されています。

最終ページに繰り越す必要があるヘッダーおよびフッターがレポートに含まれている場合は、最終ページ上で再挿入する必要があります。ヘッダーおよびフッターの詳細は、「ヘッダーとフッターの定義」を参照してください。

最終ページのレイアウトを指定するために、文書にセクション区切り(タイプ: 「next page」)を挿入する必要があります。この例は、Oracle BI Publisher Template Builder for Wordのインストール内のサンプル・フォルダにあります。

ドキュメントの新しい項のデフォルト動作はページ番号付けをリセットすることなので、最終ページのページ番号がリセットされます。前の項からページ番号付けを継続するには、次のコマンドを使用します。

<?initial-page-number:'auto'?>

このコマンドは、前の項からのページ番号付けの継続を可能にします。

レポートが1ページのみの場合は、先頭ページのレイアウトが使用されることに注意してください。単一ページのレポートはデフォルトとして最終ページのレイアウトを使用する必要がある場合(たとえば小切手印刷のケース)、最終ページで「Last Page Placeholder」のかわりに次の代替構文を使用できます。

<?start@last-page-first:body?> <?end body?>

この構文に置き換えると、1ページのみのレポートの最終ページ・レイアウトとなります。

偶数または奇数ページでの終了

注意: この機能は、PDFおよびPDFの出力のみでサポートされています。RTFおよびHTMLの出力ではサポートされていません。

レポートのレイアウトが奇数ページと偶数ページで異なる場合は、レポートを強制的に奇数または偶数ページで終了させることができます。たとえば、奇数/偶数フッター別指定機能を使用して、レポートのフッターに発注の条件を挿入し(「Different First Page」および「Different Odd and Even Page」のサポート」を参照)、最終ページに条件が印刷されるようにできます。

あるいは、製本要件を指定し、特定のレイアウトを使用しないで偶数ページでレポートを終了できます。

レイアウトが設定されている偶数ページで終了する場合

次の構文をテンプレートのフォーム・フィールドに挿入します。

<?section:force-page-count;'end-on-even-layout'?>

レイアウトが設定されている奇数ページで終了する場合

<?section:force-page-count;'end-on-odd-layout'?>

最終ページにレイアウト要件がなく、ページ数が希望する奇数または偶数となるように空白のページを出力する場合は、次の構文を使用します。

<?section:force-page-count;'end-on-even'?>

または

<?section:force-page-count;'end-on-odd'?>

ハイパーリンク

注意: ハイパーリンクは、PDF、RTF、HTML、PPT、およびExcelの出力でサポートされています。

BI Publisherでは、いくつか異なるタイプのハイパーリンクがサポートされています。ハイパーリンクは、固定または動的なハイパーリンクが可能で、内部または外部のいずれかの宛先にリンクできます。図形に追加することもできます。

URLにターゲット属性を追加するには、URL文字列に次を追加します。

??target=_target_value 

例:

http://www.oracle.com??target=_top 

ターゲット属性の値は次のとおりです。

次の構文を使用すると、ターゲットの値で動的に渡すことができます。

http://www.oracle.com/index.html??target={$myTarget} 

ここで、myTargetは、値を保持するパラメータの名前です。

内部リンクの挿入

Microsoft Wordのブックマーク機能を使用して内部リンクを挿入します。

  1. カーソルを文書内の希望する宛先に置きます。

  2. Insert」→「Bookmark...」を選択します。

  3. Bookmark」ダイアログで、このブックマークの名前を入力して「Add」を選択します。

  4. ブックマークの宛先としてリンクする文書内のテキストまたは図形を選択します。

  5. マウスの右メニューを使用して「Hyperlink」を選択するか、「Insert」メニューから「Hyperlink」を選択します。

  6. Insert Hyperlink」ダイアログで、「Bookmark」を選択します。

  7. 作成済のブックマークをリストから選択します。

実行時に、生成されたレポート内にリンクが保持されます。

目次

注意: 目次機能は、PDFおよびPPTの出力でサポートされています。RTFのサポートは制限されていて、レポート生成後に、ユーザーは、[F9]を押してページ番号をリセットする必要があります。

BI Publisherでは、RTF仕様の目次生成機能をサポートしています。目次を挿入するには、使用している文書処理アプリケーションの手順に従ってください。

BI Publisherでは、XMLデータから、文書内に動的なセクション・ヘッダーを作成することもできます。作成したセクション・ヘッダーは目次に組み込むことができます。

動的なヘッダーを作成する手順は、次のとおりです。

  1. ヘッダーのプレースホルダを文書の本体に入力し、文書処理アプリケーションのスタイル機能を使用して、そのプレースホルダをヘッダーとして書式設定します。この機能ではフォーム・フィールドを使用できません。

    たとえば、レポート対象の会社ごとに、レポートにヘッダーを表示するとします。この場合、XMLデータ要素タグ名は<COMPANY_NAME>になります。テンプレートに、ヘッダーを表示する<?COMPANY_NAME?>を入力します。次に、テキストをヘッダーとして書式設定します。

  2. 目次は、文書処理アプリケーションの目次機能を使用して作成します。

実行時に、目次のプレースホルダとヘッダー・テキストが置換されます。

PDF出力でのしおりの生成

RTFテンプレート内に目次を定義した場合、目次の定義を使用して出力PDFのナビゲーション・ペインにある「しおり」タブにリンクを生成することができます。しおりは、静的または動的のいずれの方法でも生成できます。

重要: RTFテンプレートでのブックマーク・サポートは、単一ポイントのブックマークに制限されています。これによってドキュメント内でのリンク(Goto)機能が実現します。ブックマークでは配列はサポートされていません。

目次作成の詳細は、「目次」を参照してください。

PDFファイルが開かれるときに、ブックマークの初期状態を制御するには、次コマンドを使用します。

<?collapse-bookmark:state;level?>

説明:

状態は、次の値を持つことができます。

および

レベルにより、目次を閉じるレベルが設定されます。たとえば、「1」を指定すると、目次のエントリの最初のレベルが閉じられ、「2」を指定すると、第1と第2のレベルのエントリが閉じられます。

次の例に示すように、<?copy-to-bookmark:?>と<?convert-to-bookmark:?>を使ってこのコマンドを使用します。

チェック・ボックス

注意: チェック・ボックスは、PDF出力のみでサポートされています。

テンプレートにチェック・ボックスを挿入し、受信したデータの値に基づいて選択済または選択解除済として表示するように定義できます。

チェック・ボックスをテンプレートに定義する手順は、次のとおりです。

  1. テンプレート内で、チェック・ボックスを表示する位置にカーソルを置き、「Forms」ツールバーから「Check Box Form Field」(次の図を参照)を選択します。

    この図についてはドキュメントのテキストで説明しています

  2. フィールドを右クリックして「Check Box Form Field Options」ダイアログを開きます。

  3. Default value」で「Checked」または「Not Checked」のいずれかを指定します。

  4. 「Form Field Help Text」ダイアログで、ボックスの動作を決める基準を入力します。この基準は、ブール式(つまり、結果としてtrueまたはfalseを戻す式)であることが必要です。

    たとえば、XMLデータに<population>という要素が含まれているとします。<population>の値が10,000を超える場合は、チェック・ボックスが選択されて表示されるようにします。この場合は、ヘルプ・テキスト・フィールドに次のように入力します。

    <?population>10000?>

    次の図に、この入力を示します。

    この図についてはドキュメントのテキストで説明しています

    if文を作成する必要がないことに注意してください。入力した式がif文として処理されます。

    チェック・ボックスを使用したサンプル・テンプレートについては、次の項を参照してください。

ドロップダウン・リスト

BI Publisherでは、ドロップダウン・フォーム・フィールドを使用して、XMLデータからドロップダウン・フォーム・フィールドに定義した他の値への相互参照をテンプレートに作成できます。

たとえば、次のXMLについて考えてみます。

<countries>
 <country>
  <name>Chad</name>
  <population>7360000</population>
  <continentIndex>5</continentIndex>
 </country>
 <country>
  <name>China</name>
  <population>1265530000</population>
  <continentIndex>1</continentIndex>
 </country>
 <country>
  <name>Chile</name>
  <population>14677000</population>
		<continentIndex>3</continentIndex>
 </country>
. . . 
</countries>

各<country>入力には<continentindex>入力が含まれています。これは、大陸を表す数値です。ドロップダウン・フォーム・フィールドを使用すると、<continentindex>値と実際の大陸名を相互参照する索引をテンプレートに作成できます。さらに、この大陸名を発行レポートに表示できます。

この大陸の例に対する索引を作成する手順は、次のとおりです。

  1. テンプレート内で、ドロップダウン・リストを表示する位置にカーソルを置き、「Forms」ツールバーから「Drop-Down Form Field」(次の図を参照)を選択します。

    この図についてはドキュメントのテキストで説明しています

  2. フィールドを右クリックして「Drop-Down Form Field Options」ダイアログを表示します。

  3. それぞれの値を「Drop-down item」フィールドに追加して「Add」をクリックすると、その値が「Items in drop-down list」グループに追加されます。値は、最初の値から始めて1から順に索引付けされます。たとえば、大陸のリストは次のように格納されます。

    索引
    1 Asia
    2 North America
    3 South America
    4 Europe
    5 Africa
    6 Australia
  4. 「Help」テキスト・ボックスを使用して、ドロップダウン・フィールド値の索引を保持するXML要素名を入力します。

    この例の場合は、次のように入力します。

    <?continentIndex?>

    次の図に、この例での「Drop-Down Form Field Options」ダイアログを示します。

    この図についてはドキュメントのテキストで説明しています

チェック・ボックスおよびドロップダウン・リスト機能を使用して、人口データを、一定の制限に到達した数値を示すチェック・ボックスとともに表示するレポートを作成できます。次の図に例を示します。

この図についてはドキュメントのテキストで説明しています

次の図に、このレポートを作成するためのテンプレートを示します。

この図についてはドキュメントのテキストで説明しています

各フィールドの値は次のとおりです。

フィールド フォーム・フィールド入力 説明
FE <?for-each:country?> country繰返しグループを開始します。
China <?name?> name要素のプレースホルダ。
1,000,000 <?population?> population要素のプレースホルダ。
(チェック・ボックス) <?population>1000000?> チェック・ボックスの条件を設定します。population要素の値が1,000,000を超えると、チェック・ボックスが選択されて表示されます。
Asia <?contintentIndex?> continentIndex要素のドロップダウン・フォーム・フィールド。内容については前述の説明を参照してください。実行時に、XML要素の値は、ドロップダウン・フォーム・フィールドで相互参照される値に置換されます。
EFE <?end for-each?> countryグループを終了します。

条件付き書式設定

注意: 「Template Builder for Wordを使用したRTFテンプレートの作成」の章の「条件付きリージョンの挿入」および「条件付き書式の挿入」も参照してください。

条件付き書式設定は、特定の条件を満たした場合のみ書式設定要素を表示する場合に指定します。BI Publisherでは、単純なif文のほかに、複雑なchoose式の使用もサポートしています。

指定できる条件付き書式設定はXSLまたはXSL:FOコードで、実際のRTFオブジェクト(表やデータなど)を指定することもできます。たとえば、特定のしきい値に達したレポート番号を赤で網かけ表示するように指定できます。また、この機能を使用すると、受信したXMLデータに基づいて表の列や行を非表示にすることもできます。

if文

if文を使用すると、単純な条件を定義できます(たとえば、データ・フィールドが特定の値かどうか)。

  1. 次の構文を挿入して、条件領域の開始を指定します。

    <?if:条件?>

  2. 構文<?end if?>を条件領域の最後に挿入します。

たとえば、仕入先名が「Company A」の場合のみ請求書を表示するようにPayables Invoice Registerを設定するには、テンプレートの「Supplier」フィールドの前に、構文<?if:VENDOR_NAME='COMPANY A'?>を挿入します。

請求書表の後に<?end if?>タグを入力します。

次の図に、この例を示します。構文は、フォーム・フィールドに挿入するか、またはテンプレートに直接挿入できることに注意してください。

この図についてはドキュメントのテキストで説明しています

ボイラープレート・テキストでのif文

if文を次の自由書式テキストに組み込むとします。

The program was (not) successful.

<SUCCESS>というXMLタグの値が「N」の場合のみ、「not」を表示する必要があります。

この要件を満たすには、BI Publisherのコンテキスト・コマンドを使用して、ブロック(デフォルトの配置)ではなくインライン・シーケンスにif文を配置する必要があります。

注意: コンテキスト・コマンドの詳細は、「コンテキスト・コマンドの使用」を参照してください。

たとえば、次のコードを作成したとします。

The program was <?if:SUCCESS='N'?>not<?end if?> successful.

この場合は、次のような望ましくない結果となります。

The program was
not
successful.

これは、BI Publisherでは、デフォルトでブロックに対して命令が適用されるためです。if文がインライン・シーケンスに挿入されるように指定するには、次のように入力します。

The program was <?if@inlines:SUCCESS='N'?>not<?end if?> 
successful.

この結果、次のように表示されます。

The program was successful.

これは、SUCCESSが「N」でない場合の結果です。

または

The program was not successful.

これは、SUCCESSが「N」の場合の結果です。

if-then-else文

BI Publisherでは、一般的なプログラミング構造のif-then-elseをサポートしています。この文は、条件を判断し、その条件に基づいて結果を表示する必要がある場合に特に有用です。例:

IF X=0 THEN
 Y=2
ELSE
 Y=3
END IF

これらの文は、次のようにネストすることもできます。

IF X=0 THEN
 Y=2
ELSE
 IF X=1 THEN
   Y=10
 ELSE Y=100
END IF

if-then-else文は、次の構文を使用してRTFテンプレートに作成します。

<?xdofx:if element_condition then result1 else result2 end if?>

たとえば、次の文はAMOUNT要素値を判断します。値が1000を超えた場合は「Higher」、1000未満の場合は「Lower」、1000の場合は「Equal」と表示されます。

<?xdofx:if AMOUNT > 1000 then 'Higher'
  else
  if AMOUNT < 1000 then 'Lower'
   else
   'Equal'
end if?>

choose文

choose、whenおよびotherwiseの各要素を使用して、複数の条件判断を表現します。受信したXMLデータで特定の条件が満たされると、テンプレートの指定セクションがレンダリングされます。これは、RTFテンプレートの強力な機能です。通常のXSLプログラミングでは、chooseコマンドである条件が満たされると、後続のXSLコードが実行されます。ただし、テンプレートでは、条件フローに視覚的なウィジェットを実際に使用できます(次の例では表を使用)。

これらの要素については、次の構文を使用します。

<?choose:?>

<?when:?>

<?otherwise?>

Choose条件付き書式設定の例

次の例では、EXEMPT_FLAGフィールドとPOSTED_FLAGフィールドの値に基づいてデータ行を表示するchoose式を示します。EXEMPT_FLAGが「^」の場合、データ行は明るい灰色でレンダリングされ、POSTED_FLAGが「*」の場合、データ行は濃い灰色の網かけでレンダリングされます。それ以外の場合、データ行は網かけなしでレンダリングされます。

次の図には、フォーム・フィールドのデフォルト・テキストが表示されています。この後の表に、フォーム・フィールドのヘルプ・テキスト入力を示します。

この図についてはドキュメントのテキストで説明しています

この例のフォーム・フィールドのデフォルト・テキスト入力 フォーム・フィールドのヘルプ・テキスト入力
<Grp:VAT <?for-each:G_VAT?>
G_VATグループを開始します。
<Choose <?choose:?>
choose文を開きます。
<When EXEMPT_FLAG='^' <?when: EXEMPT_FLAG='^'?>
EXEMPT_FLAG要素をテストして、trueの場合は表示される最初の表を使用します。
End When> <?end when?>
EXEMPT_FLAGテストを終了します。
<When POSTED_FLAG=’*’ <?when:POSTED_FLAG=’*’?>
POSTED_FLAG要素をテストして、trueの場合は、次の表を使用します。
End When> <?end when?>
POSTED_FLAGテストを終了します。
Otherwise <?otherwise:?>
前述のいずれもtrueでない場合は、次の表を使用します。
End Otherwise> <?end otherwise?>
otherwise文を終了します。
End Choose> <?end choose?>
choose文を終了します。
End Vat> <?end for-each?>
G_VATグループを終了します。

列の書式設定

データの列は、条件に基づいて、文書出力に表示したり非表示にできます。次の例では、列が要素属性の値に基づいてのみ表示されるように、表を設定する方法を示します。

この例では、次のXMLで表した価格表のレポートを示します。

<items type="PUBLIC"> <! -  can be marked ‘PRIVATE’  - >
 <item>
  <name>Plasma TV</name>
  <quantity>10</quantity>
  <price>4000</price>
 </item>
 <item>
  <name>DVD Player</name>
  <quantity>3</quantity>
  <price>300</price>
 </item>
 <item>
  <name>VCR</name>
  <quantity>20</quantity>
  <price>200</price>
 </item>
 <item>
  <name>Receiver</name>
  <quantity>22</quantity>
  <price>350</price>
 </item>
</items>

items要素に関連付けられているtype属性に注目してください。このXMLでは、この属性がPUBLICとマークされています。これは、リストがPRIVATEリストではなく、パブリック・リストであることを意味します。パブリック・バージョンのリストの場合、出力に数量列は表示しませんが、ここでは、リスト・タイプに基づいて両方のバージョン用に1つのテンプレートを開発します。

次の図に、条件に基づいて数量列を表示または非表示にする単純なテンプレートを示します。

この図についてはドキュメントのテキストで説明しています

次の表に、この例のテンプレートへの入力を示します。

デフォルト・テキスト フォーム・フィールド入力 説明
grp:Item <?for-each:item?> item要素の開始のfor-eachループを保持します。
Plasma TV <?name?> XMLファイルからのname要素のプレースホルダ。
IF <?if@column: /items/@type="PRIVATE"?> 列ヘッダーの属性値「PRIVATE」のテストに対するif文の開始。この構文ではXPath式を使用してXMLの「items」レベルに戻り属性をテストします。テンプレートでのXPathの使用の詳細は、「XPathの概要」を参照してください。
Quantity 該当なし ボイラープレート・ヘッダー。
end-if <?end if?> if文を終了します。
IF <?if@column: /items/@type="PRIVATE"?> 列データの属性値「PRIVATE」をテストするためのif文の開始。
20 <?quantity?> quantity要素のプレースホルダ。
end-if <?end if?> if文を終了します。
1,000.00 <?price?> price要素のプレースホルダ。
end grp <?end for-each?> for-eachループの終了タグ。

条件列の構文は、@column句が追加されたif文です。この@column句によって、BI Publisherはif文の結果に基づいて列を表示または非表示にします。

@columnを含めないと、if文の結果としてデータはレポートに表示されませんが、列は表示されます。これは、テンプレートに列が描画されているためです。

注意: @column句は、コンテキスト・コマンドの例の1つです。詳細は、「コンテキスト・コマンドの使用」を参照してください。

例では、次の図に示す出力がレンダリングされます。

この図についてはドキュメントのテキストで説明しています

同じXMLデータでtype属性がPRIVATEに設定されている場合は、同じテンプレートから次の出力がレンダリングされます。

この図についてはドキュメントのテキストで説明しています

行の書式設定

BI Publisherでは、表の行レベルで書式設定条件を指定できます。次に、行レベルの書式設定の例を示します。

条件に基づく行の表示

特定の条件を満たした行のみを表示するには、グループのfor-eachタグ内で、行の最初と最後に<?if:condition?> <?end if?>タグを挿入します。次の図に、サンプル・テンプレートを示します。

この図についてはドキュメントのテキストで説明しています

このサンプル図のフィールドは、次のとおりです。

デフォルト・テキスト入力 フォーム・フィールドのヘルプ・テキスト 説明
for-each SALE <?for-each:SALE?> for-eachループを開始して、SALEグループに属するデータを繰り返します。
if big <?if:SALES>5000?> SALES要素の値が5000を超えた場合のみ行を表示するif文。
INDUSTRY <?INDUSTRY?> データ・フィールド。
YEAR <?YEAR?> データ・フィールド。
MONTH <?MONTH?> データ・フィールド。
SALES end if <?end if?> if文を終了します。
end SALE <?end for-each?> SALEループを終了します。

条件に基づく行の強調表示

この例では、1行おきに背景色を設定する方法を示します。次の図に、この効果を作成するテンプレートを示します。

この図についてはドキュメントのテキストで説明しています

次の表に、このテンプレートのフォーム・フィールドの値を示します。

デフォルト・テキスト入力 フォーム・フィールドのヘルプ・テキスト 説明
for-each SALE <?for-each:SALE?> SALEグループのfor-eachループの開始を定義します。
format; <?if@row:position() mod 2=0?> <xsl:attribute name="background-color" xdofo:ctx="incontext">lightgray</xsl:attribute><?end if?> 1行おきに、行のbackground color属性をgray(灰色)に設定します。
INDUSTRY <?INDUSTRY?> データ・フィールド。
YEAR <?YEAR?> データ・フィールド。
MONTH <?MONTH?> データ・フィールド。
SALES <?SALES?> データ・フィールド。
end SALE <?end for-each?> SALEのfor-eachループを終了します。

前述の例のformat;フィールドに注目してください。このフィールドには、行のコンテキスト(@row)を設定したif文が含まれています。これによって、現在行に適用するif文のコンテキストが設定されます。条件がtrueの場合、行の背景色の<xsl:attribute>はlight gray(明るい灰色)に設定されます。この結果、次のように出力されます。

この図についてはドキュメントのテキストで説明しています

注意: コンテキスト・コマンドの詳細は、「コンテキスト・コマンドの使用」を参照してください。

セルの強調表示

次の例では、XMLファイルの値に基づいて、セルを強調表示するかどうかを判断する方法を示します。

この例では、次のXMLを使用します。

<accounts>
 <account>
  <number>1-100-3333</number>
  <debit>100</debit>
  <credit>300</credit>
 </account>
 <account>
  <number>1-101-3533</number>
  <debit>220</debit>
  <credit>30</credit>
 </account>
 <account>
  <number>1-130-3343</number>
  <debit>240</debit>
  <credit>1100</credit>
 </account>
 <account>
  <number>1-153-3033</number>
  <debit>3000</debit>
  <credit>300</credit>
 </account>
</accounts>

テンプレートには、アカウントとその貸借値がリストされます。最終レポートでは、値が1000を超えたセルは赤で強調表示する必要があります。次の図に、この場合のテンプレートを示します。

この図についてはドキュメントのテキストで説明しています

次の表に、このテンプレートのフィールド定義を示します。

デフォルト・テキスト入力 フォーム・フィールド入力 説明
FE:Account <?for-each:account?> account要素のfor-eachループを開始します。
1-232-4444 <?number?> XMLファイルからのnumber要素のプレースホルダ。
CH1 <?if:debit>1000?><xsl:attribute xdofo:ctx="block" name="background-color">red</xsl:attribute><?end if?> このフィールドには、借方金額が1000を超えた場合にセルを赤で強調表示するコードが保持されます。
100.00 <?debit?> debit要素のプレースホルダ。
重要: <?debit?>要素は、自身のフィールドに存在する必要があります。
CH2 <?if:credit>1000?><xsl:attribute xdofo:ctx="block" name="background-color">red</xsl:attribute><?end if?> このフィールドには、貸方金額が1000を超えた場合にセルを赤で強調表示するコードが保持されます。
100.00 <?credit?> credit要素のプレースホルダ。
EFE <?end for-each?> for-eachループを終了します。

この表に示すように、貸方列を強調表示するコードは次のとおりです。

<?if:debit>1000?>
  <xsl:attribute 
   xdofo:ctx="block" name="background-color">red
  </xsl:attribute>
<?end if?>

このif文は、debitの値が1000を超えているかどうかを判断します。1000を超えた場合は、次の行が実行されます。この例では、if文内にXSL固有のコードが埋め込まれていることに注目してください。

XSLのプロパティは、attribute要素を使用して変更できます。

xdofo:ctxコンポーネントはBI Publisherの機能の1つで、テンプレート内のすべてのレベルでXSL属性を調整できます。この例の場合は、background color属性がred(赤)に変更されています。

color属性の変更には、標準的なHTMLの名称(赤、白、緑など)か、16進数の色定義(#FFFFFなど)を使用できます。

次の図に、このテンプレートからの出力を示します。

この図についてはドキュメントのテキストで説明しています

ページ・レベルの計算

この項で説明したページ・レベルの計算はすべて、PDFとPPTの出力のみでサポートされています。

ページ合計の表示

BI Publisherでは、ページ合計を計算してレポートに表示できます。ページは発行時まで作成されないため、合計計算機能は書式設定エンジンで実行する必要があります。

注意: ページ合計計算はPDF書式設定層で実行されます。したがって、HTML、RTFおよびExcelの出力タイプではこの機能を使用できません。

注意: このページ合計計算機能は、ソースXMLにRaw数値がある場合のみ有効です。数値は事前に書式設定できません。

ページ合計フィールドはXML入力データに存在しないため、値を保持する変数を定義する必要があります。変数を定義するときは、ページの合計を計算するXMLファイルの要素にその変数を関連付けます。合計フィールドを定義した後は、その合計フィールドのデータに対して追加の関数を実行することもできます。

ページ合計を保持する変数を宣言するには、合計する要素のプレースホルダの直後に次の構文を挿入します。

<?add-page-total:TotalFieldName;'element'?>

説明:

TotalFieldNameは、合計に割り当てる名称(後で参照するため)です。

'element'は、合計するXML要素フィールドです。

この構文は、必要な数の合計計算の対象フィールドに追加できます。

合計フィールドを表示する場合は、次の構文を入力します。

<?show-page-total:TotalFieldName;'Oracle-number-format' number-separators="{$_XDONFSEPARATORS}"?>

説明:

TotalFieldNameは、前述のページ合計フィールドを指定する際に割り当てた名称です。

Oracle数値書式は、Oracle書式マスクを使用して表示する際に使用する書式です(例: 'C9G999D00')。Oracle書式マスクの記号のリストは、「Oracle書式マスクの使用」を参照してください。

number-separators="{$_XDONFSEPARATORS}"は、定義した書式マスクに対してグループ化セパレータと小数点セパレータを適用するための必須の属性です。

次の例では、テンプレートにページ合計フィールドを設定し、ページに表示されている貸方と借方の合計を表示して、この2つのフィールドの差引額を計算する方法を示します。

この例では、次のXMLを使用します。

<balance_sheet>
 <transaction>
  <debit>100</debit>
  <credit>90</credit>
 </transaction>
 <transaction>
  <debit>110</debit>
  <credit>80</credit>
 </transaction>
…
<\balance_sheet>

次の図に、値を保持するためにテンプレートに挿入する表を示します。

この図についてはドキュメントのテキストで説明しています

この表の例について、テンプレートのフォーム・フィールドへの入力を次の表に示します。

デフォルト・テキスト入力 フォーム・フィールドのヘルプ・テキスト入力 説明
FE <?for-each:transaction?> このフィールドは、transactionグループの開始のfor-eachループを定義します。
100.00 <?debit?><?add-page-total:dt;'debit'?> このフィールドは、XMLファイルからのdebit要素のプレースホルダです。このフィールドをページごとに合計する必要があるため、ページ合計の宣言構文が追加されます。debit要素の合計を保持するために定義された変数はdtです。
90.00 <?credit?> <?add-page-total:ct;'credit'?> このフィールドは、XMLファイルからのcredit要素のプレースホルダです。このフィールドをページごとに合計する必要があるため、ページ合計の宣言構文が追加されています。credit要素の合計を保持するために定義された変数はctです。
Net <add-page-total:net;'debit - credit'?> 借方値から貸方値を差し引いたページ合計差引額を作成します。
EFE <?end for-each?> for-eachループを終了します。

netとして定義した変数では、credit要素とdebit要素の値に対して実際に計算が実行されることに注意してください。

ページ合計フィールドを宣言した後は、ページ合計を表示するフィールドをテンプレートに挿入できます。指定した名称(前述の例ではctおよびdt)を使用して、計算された変数を参照します。ページ合計を表示するための構文は次のとおりです。

たとえば、貸方のページ合計を表示するには、次のように入力します。

<?show-page-total:dt;'C9G990D00';'(C9G990D00)' number-separators="{$_XDONFSEPARATORS}"?>

最後に、テンプレート・ページの最下部またはフッターに、次のフィールドを配置します。

Page Total Debit: <?show-page-total:dt;'C9G990D00';'(C9G990D00)' number-separators="{$_XDONFSEPARATORS}"?>

Page Total Credit: <?show-page-total:ct;'C9G990D00';'(C9G990D00)' number-separators="{$_XDONFSEPARATORS}"?>

Page Total Balance: <?show-page-total:net;'C9G990D00';'(C9G990D00)' number-separators="{$_XDONFSEPARATORS}"?>

次の図に、このレポートの出力を示します。

この図についてはドキュメントのテキストで説明しています

前からの繰越合計/次への繰越合計

多くのレポートでは、レポート出力全体にわたるページ合計を保持し、各ページの最初と最後に表示する必要があります。これらの合計は、前からの繰越/次への繰越の合計と呼ばれます。

注意: 前からの繰越と次への繰越フィールドの合計計算はPDF書式設定層で実行されます。したがって、HTML、RTFおよびExcelの出力タイプではこの機能を使用できません。

次の図に、この例を示します。

この図についてはドキュメントのテキストで説明しています

最初のページの最後に、Amount要素のページ合計が次への繰越合計として表示されます。第2ページの先頭には、この値が前ページからの繰越合計として表示されます。さらに、第2ページの最後には、次への繰越値にそのページの合計を加算した金額が次のページへの新規繰越値として表示されます。レポート全体でこれを繰り返します。

この機能は、ページ合計機能の拡張です。次の例では、発行レポートに前からの繰越合計と次への繰越合計を表示するために必要な構文と設定について説明します。

次のXMLを使用するとします。

<?xml version="1.0" encoding="WINDOWS-1252"?>
<INVOICES>
 <INVOICE>
  <INVNUM>10001-1</INVNUM>
  <INVDATE>1-Jan-2005</INVDATE>
  <INVAMT>100</INVOICEAMT>
 </INVOICE>
 <INVOICE>
  <INVNUM>10001-2</INVNUM>
  <INVDATE>10-Jan-2005</INVDATE>
  <INVAMT>200</INVOICEAMT>
 </INVOICE>
 <INVOICE>
  <INVNUM>10001-1</INVNUM>
  <INVDATE>11-Jan-2005</INVDATE>
  <INVAMT>150</INVOICEAMT>
 </INVOICE>
. . .
</INVOICES>

次のサンプル・テンプレートでは、請求書表を作成し、ページ合計を保持するプレースホルダを宣言します。

この図についてはドキュメントのテキストで説明しています

テンプレートの各フィールドの値は次のとおりです。

フィールド フォーム・フィールドのヘルプ・テキスト入力 説明
Init PTs <?init-page-total: InvAmt?> InvAmtを、ページ合計を保持するプレースホルダとして宣言します。
FE <?for-each:INVOICE?> INVOICEグループを開始します。
10001-1 <?INVNUM?> 請求書番号タグのプレースホルダ。
1-Jan-2005 <?INVDATE?> 請求日タグのプレースホルダ。
100.00 <?INVAMT?> 請求金額タグのプレースホルダ。
InvAmt <?add-page-total:InvAmt;INVAMT?> ページ合計オブジェクトInvAmtをデータ内のINVAMT要素に割り当てます。
EFE <?end for-each?> INVOICEグループを終了します。
End PTs <?end-page-total:InvAmt?> ページ合計オブジェクトInvAmtを終了します。

各ページ(最初のページを除く)の先頭に前からの繰越合計を表示するには、次の構文を使用します。

<xdofo:inline-total
  display-condition="exceptfirst"
  name="InvAmt">
   Brought Forward:
<xdofo:show-brought-forward
  name="InvAmt"
  format="99G999G999D00" number-separators="{$_XDONFSEPARATORS}"/>/>
</xdofo:inline-total>

次の表に、前からの繰越の構文を構成する要素を説明します。

コード要素 説明と使用方法
inline-total この要素には、次の2つのプロパティがあります。
  • name: フィールドに対して宣言する変数の名称。

  • display-condition: 表示条件を設定します。これはオプションのプロパティで、次のいずれかの値を設定します。

    • first: 内容が最初のページにのみ表示されます。

    • last: 内容が最後のページにのみ表示されます。

    • exceptfirst: 内容が最初のページを除く全ページに表示されます。

    • exceptlast: 内容が最後のページを除く全ページに表示されます。

    • everytime: (デフォルト)内容が全ページに表示されます。

    この例では、display-conditionがexceptfirstに設定されているため、値が0(ゼロ)の最初のページには値が表示されません。

Brought Forward: この文字列はオプションで、レポートのフィールド名として表示されます。
show-brought-forward ページに値を表示します。次の2つのプロパティがあります。
  • name: 表示するフィールドの名称。この例では「InvAmt」です。このプロパティは必須です。

  • format: 実行時に値を表示するOracle数値書式。このプロパティはオプションですが、書式マスクを指定する場合は、Oracle書式マスクを使用する必要があります。詳細は、「Oracle書式マスクの使用」を参照してください。

  • number-separators="{$_XDONFSEPARATORS}" - この属性は、定義した書式マスクに対してグループ・セパレータと数値セパレータを適用するために必須です。

前からの繰越合計を表示するテンプレートの先頭に、前からの繰越オブジェクトを挿入します。このオブジェクトをテンプレート本体に配置すると、構文をフォーム・フィールドに挿入できます。

前からの繰越合計をヘッダーに表示する場合、Microsoft Wordではヘッダーまたはフッター・リージョンでのフォーム・フィールドの使用をサポートしていないため、コード文字列全体をヘッダーに挿入する必要があります。ただし、start body/end body構文を使用すると、レポートの本体部分を定義できます。BI Publisherでは、定義した本体部分より前の内容はヘッダーとして、本体部分より後の内容はフッターとして認識されます。この場合は、フォーム・フィールドを使用できます。詳細は、「複数のヘッダーとフッターまたは複雑なヘッダーとフッター」を参照してください。

合計を表示するテンプレートの最下部に、次への繰越オブジェクトを配置します。この例の次への繰越オブジェクトは次のとおりです。

<xdofo:inline-total
  display-condition="exceptlast"
  name="InvAmt">
   Carried Forward:
<xdofo:show-carry-forward
  name="InvAmt"
  format="99G999G999D00" number-separators="{$_XDONFSEPARATORS}"/>
</xdofo:inline-total>

前からの繰越オブジェクトと次の点が異なることに注意してください。

テンプレートでは値の数に制限はありません。前からの繰越/次への繰越オブジェクトをテンプレートに複数作成して、データ内の様々な数値要素を指し示すことができます。

重要: 前の例に示すように、コマンド<?init-page-total:invAmnt?>および<?end-page-total:InvAmt?>を含めないようにしてください。display-condition論理計算の正しい動作は、これらのコマンドが正しく機能することに依存しています。

総合計

変数機能(「変数の使用」を参照)を使用して、請求書一覧レポートに総合計を追加できます。この例では、次のXML構造を使用します。

<?xml version="1.0" encoding="WINDOWS-1252"?>
<INVOICES>
 <INVOICE>
  <INVNUM>10001-1</INVNUM>
  <INVDATE>1-Jan-2005</INVDATE>
  <INVAMT>100</INVOICEAMT>
 </INVOICE>
 <INVOICE>
  <INVNUM>10001-2</INVNUM>
  <INVDATE>10-Jan-2005</INVDATE>
  <INVAMT>200</INVOICEAMT>
 </INVOICE>
 <INVOICE>
  <INVNUM>10001-1</INVNUM>
  <INVDATE>11-Jan-2005</INVDATE>
  <INVAMT>150</INVOICEAMT>
 </INVOICE>
</INVOICES>

このXMLを使用して、次の図に示すような総合計を含むレポートを作成します。

この図についてはドキュメントのテキストで説明しています

「Running Total」フィールドを作成するには、合計を追跡するための変数を定義し、その変数を0(ゼロ)に初期化します。次の図に、このテンプレートを示します。

この図についてはドキュメントのテキストで説明しています

次の表に、テンプレート内のフォーム・フィールドの値を示します。

フォーム・フィールド 構文 説明
RtotalVar <?xdoxslt:set_variable($_XDOCTX, 'RTotalVar', 0)?> RTotalVar変数を宣言して0(ゼロ)に初期化します。
FE <?for-each:INVOICE?> Invoiceグループを開始します。
10001-1 <?INVNUM?> 請求書番号タグ。
1-Jan-2005 <?INVDATE?> 請求日タグ。
100.00 <?xdoxslt:set_variable($_XDOCTX, 'RTotalVar', xdoxslt:get_variable($_XDOCTX, 'RTotalVar') + INVAMT)?>
<?xdoxslt:get_variable($_XDOCTX, 'RTotalVar')?>
RTotalVarを、現在値に新しい請求金額を加算した値に設定します。
RTotalVarの値を取得して表示します。
EFE <?end for-each?> INVOICEグループを終了します。

データ処理

ソート

グループは、そのグループ内の任意の要素順にソートできます。次の構文をグループ・タグ内に挿入します。

<?sort:要素名; 順序; データ・タイプ?>

説明:

要素名は、グループをソートする要素の名前です。

順序は「昇順」または「降順」です。

データ・タイプは、要素のデータ・タイプです。有効な値は、「text」と「number」です。

順序を指定しなければ、デフォルトではソート順序は昇順です。データ型を指定しなければ、 タイプはtextと想定されます。

たとえば、最高のサラリーが最初に表示されるように、SALARYという名前の要素によってデータ・セットをソートするには、次を入力します。

<?sort:SALARY;'descending';'number'?>

for-eachグループ内でソートを実行している場合、for-each文の後にソート文を入力します。たとえば、この章の冒頭で示したPayables Invoice Registerを仕入先(VENDOR_NAME)順にソートするには、次のように入力します。

<?for-each:G_VENDOR_NAME?><?sort:VENDOR_NAME?>

複数のフィールドでグループをソートするには、追加のソート文を適切な順に入力するだけです。たとえば、サプライヤでソートしてから請求番号でソートするには、次を入力します。

<?sort:VENDOR_NAME?> <?sort:INVOICE_NUM;'ascending';'number'?>

nullのチェック

XMLデータ内の要素の値には、3つの可能なシナリオが考えられます。

レポート・レイアウトでは、要素とその値の有無に応じて異なる動作を指定することが必要な場合があります。次の例では、if文を使用してこれらの条件のそれぞれについてチェックする方法を示します。構文は、別の条件付き書式設定構造でも使用できます。

XMLデータの再グループ化

RTFテンプレートでは、XSL 2.0のfor-each-group標準をサポートしているため、元のデータに存在しないXMLデータを階層に再グループ化できます。この機能を使用すると、テンプレートではソースXMLファイルの階層に従う必要がありません。このため、データソースの構造による制限がなくなります。

XMLのサンプル

for-each-group標準を示すために、CDカタログ一覧の次のXMLデータ・サンプルをテンプレートで再グループ化します。

<CATALOG>
   <CD>
      <TITLE>Empire Burlesque</TITLE>
      <ARTIST>Bob Dylan</ARTIST>
      <COUNTRY>USA</COUNTRY>
      <COMPANY>Columbia</COMPANY>
      <PRICE>10.90</PRICE>
      <YEAR>1985</YEAR>
   </CD>
   <CD>
      <TITLE>Hide Your Heart</TITLE>
      <ARTIST>Bonnie Tylor</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>CBS Records</COMPANY>
      <PRICE>9.90</PRICE>
      <YEAR>1988</YEAR>
   </CD>
   <CD>
      <TITLE>Still got the blues</TITLE>
      <ARTIST>Gary More</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>Virgin Records</COMPANY>
      <PRICE>10.20</PRICE>
      <YEAR>1990</YEAR>
   </CD>
   <CD>
      <TITLE>This is US</TITLE>
      <ARTIST>Gary Lee</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>Virgin Records</COMPANY>
      <PRICE>12.20</PRICE>
      <YEAR>1990</YEAR>
   </CD>

再グループ化構文を使用すると、CDデータを国別にグループ化し、さらに年度別にグループ化するレポートを作成できます。これにより、現在のデータ構造による制限を受けません。

再グループ化構文

データを再グループ化するには、次の構文を使用します。

<?for-each-group: BASE-GROUP;GROUPING-ELEMENT?>

たとえば、CD一覧をCOUNTRY別に再グループ化するには、テンプレートに次のように入力します。

<?for-each-group:CD;COUNTRY?>

COUNTRYと同じ階層レベルにあった要素はCOUNTRYの子要素になります。これで、グループの要素を参照して、必要な値を表示できます。

すでに定義済のグループ内にネストされたグループを作成するには、次の構文を使用します。

<?for-each:current-group(); GROUPING-ELEMENT?>

たとえば、CDをCOUNTRY別にグループ化するように宣言した後、COUNTRY内でさらにYEAR別にグループ化するには、次のように入力します。

<?for-each:current-group();YEAR?> 

実行時に、BI Publisherは新規グループをループするたびに、テンプレートに定義したフィールドを表示します。

注意: この構文は、簡略化されたXSLのfor-each-group構文です。前述の簡略化された構文を使用しない場合は、後述するXSL構文を使用できます。XSL構文を使用できるのは、テンプレートのフォーム・フィールド内のみです。

<xsl:for-each-group
  select=expression
  group-by="string expression"
  group-adjacent="string expression"
  group-starting-with=pattern>
  <!--Content: (xsl:sort*, content-constructor) -->
</xsl:for-each-group>

テンプレートの例

次の図に、CDをCountry別、Year別の順に表示して、各CDの詳細をリストするテンプレートを示します。

この図についてはドキュメントのテキストで説明しています

次の表に、このテンプレートのフォーム・フィールドに入力された、BI Publisherの構文を示します。

デフォルト・テキスト入力 フォーム・フィールドのヘルプ・テキスト入力 説明
Group by Country <?for-each-group:CD;COUNTRY?> <?for-each-group:CD;COUNTRY?>タグは、新規グループを宣言します。これによって、既存のCDグループがCOUNTRY要素別に再グループ化されます。
USA <?COUNTRY?> COUNTRYタグのデータ値を表示するプレースホルダ。
Group by Year <?for-each-group:current-group();YEAR?> <?for-each-group:current-group();YEAR?>タグは、現行グループ(COUNTRY)をYEAR要素別に再グループ化します。
2000 <?YEAR?> YEARタグのデータ値を表示するプレースホルダ。
Group: Details <?for-each:current-group()?> データをCOUNTRY別、YEAR別の順にグループ化した後、<?for-each:current-group()?>コマンドを使用して現行グループ(YEAR)の要素をループし、表内のデータ値(TITLE、ARTISTおよびPRICE)をレンダリングします。
My CD <?TITLE?> TITLEタグのデータ値を表示するプレースホルダ。
John Doe <?ARTIST?> ARTISTタグのデータ値を表示するプレースホルダ。
1.00 <?PRICE?> PRICEタグのデータ値を表示するプレースホルダ。
End Group <?end for-each?> <?for-each:current-group()?>タグを終了します。
End Group by Year <?end for-each-group?> <?for-each-group:current-group();YEAR?>タグを終了します。
End Group by Country <?end for-each-group?>
<?for-each-group:CD;COUNTRY?>タグを終了します。

このテンプレートによって、XMLファイルとマージしたときに次の出力が作成されます。

この図についてはドキュメントのテキストで説明しています

式による再グループ化

式による再グループ化を使用すると、関数またはコマンドをデータ要素に適用し、戻された結果別にデータをグループ化できます。

この機能を使用するには、次のように、再グループ化構文内に式を記述する必要があります。

<?for-each:BASE-GROUP; GROUPING-EXPRESSION?>

この機能を説明するために、簡略化したXMLデータ・サンプルを使用します。このサンプルは、月別の平均気温を保持し、平均気温が特定の範囲内にある月の数を計算するテンプレートへの入力として使用します。

次のXMLサンプルは、複数の<temp>グループで構成されています。各<temp>グループには、<month>要素と<degree>要素が含まれ、その月の平均気温が保持されています。

<temps>
  <temp>
    <month>Jan</month>
    <degree>11</degree>
  </temp> 
  <temp>
    <month>Feb</month>
    <degree>14</degree>
  </temp>  
  <temp>
    <month>Mar</month>
    <degree>16</degree>
  </temp> 
  <temp>
    <month>Apr</month>
    <degree>20</degree>
  </temp> 
  <temp>
    <month>May</month>
    <degree>31</degree>
  </temp>
  <temp>
    <month>Jun</month>
    <degree>34</degree>
  </temp> 
  <temp>
    <month>Jul</month>
    <degree>39</degree>
  </temp> 
  <temp>
    <month>Aug</month>
    <degree>38</degree>
  </temp>
  <temp>
    <month>Sep</month>
    <degree>24</degree>
  </temp>  
  <temp>
    <month>Oct</month>
    <degree>28</degree>
  </temp> 
  <temp>
    <month>Nov</month>
    <degree>18</degree>
  </temp> 
  <temp>
    <month>Dec</month>
    <degree>8</degree>
  </temp> 
</temps>         

このデータを次の書式で表示します。この書式では、気温の範囲、および平均気温がその範囲内にある月の数を表示します。

この図についてはドキュメントのテキストで説明しています

for-each-groupコマンドを使用すると、気温を10度ごとに増分してグループ化する式を<degree>要素に適用できます。これで、各グループのメンバーの件数、つまり、平均気温が各範囲内にある月の数を表示できます。

次の図に、このレポートを作成するためのテンプレートを示します。

この図についてはドキュメントのテキストで説明しています

次の表に、テンプレートのフォーム・フィールドへの入力を示します。

デフォルト・テキスト入力 フォーム・フィールドのヘルプ・テキスト入力
Group by TmpRng <?for-each-group:temp;floor(degree div 10)?>
<?sort:floor(degree div 10)?>
Range <?concat(floor(degree div 10)*10,' F to ',floor(degree div 10)*10+10, 'F')?>
Months <?count(current-group())?>
End TmpRng <?end for-each-group?>

フォーム・フィールド・タグについて次の点に注目してください。

変数の使用

更新可能な変数は、標準的なXSL変数<xsl:variable>とは異なります。更新可能な変数は、XMLデータに対してテンプレート・アプリケーションが実行されているときに更新できます。これによって、更新可能な変数を必要とする多くの新機能をテンプレートに作成できます。

変数では、「設定および取得」という方法を使用して、値の割当て、更新および取得を行います。

次の構文を使用して、変数値を宣言(設定)します。

<?xdoxslt:set_variable($_XDOCTX, 'variable name', value)?>

次の構文を使用して、変数値を取得します。

<?xdoxslt:get_variable($_XDOCTX, 'variable name')?>

この方法を使用して、計算を実行できます。例:

<?xdoxslt:set_variable($_XDOCTX, 'x', xdoxslt:get_variable($_XDOCTX, 'x' + 1)?> 

これによって、変数'x'の値は元の値に1を加算した値に設定されます(x = x + 1を使用した場合に類似しています)。

$_XDOCTXは、変数のグローバル文書コンテキストを指定します。マルチスレッド環境では、同時に多数の変換が発生する場合があるため、変数には1つの変換のみを割り当てる必要があります。

更新可能な変数の使用例については、「総合計」を参照してください。

パラメータの定義

テンプレートには、パラメータの値を実行時に渡すことができます。この値は、多くの機能をサポートするために、テンプレート全体で参照できます。たとえば、テンプレートでデータをフィルタ処理したり、条件付き書式設定ブロックで値を使用できます。また、セキュリティ設定などのプロパティ値を最終文書に渡すこともできます。

注意: BI Publisher Enterpriseユーザーの場合は、パラメータの名前と値のすべてのペアがテンプレートに渡されます。次に説明する構文を使用して、利用するパラメータをテンプレートに登録する必要があります。

テンプレートでのパラメータの使用

  1. パラメータをテンプレートで宣言します。

    次の構文を使用して、パラメータを宣言します。

    <?param@begin:parameter_name;parameter_value?>

    説明:

    parameter_nameは、パラメータの名称です。

    parameter_valueは、パラメータのデフォルト値です(parameter_valueはオプションです)。

    param@begin:は、実行時にテンプレートの先頭にパラメータ宣言をプッシュするために必要な文字列です。これによって、テンプレートでパラメータをグローバルに参照できます。

    この構文は、フォーム・フィールドの「Help Text」フィールドで宣言する必要があります。このフォーム・フィールドは、テンプレート内の任意の位置に配置できます。

  2. テンプレートでパラメータを参照するには、パラメータ名の前に$文字を付けます。たとえば、パラメータ名をInvThreshと宣言した場合は、$InvThreshを使用してその値を参照します。

  3. BI Publisher Enterpriseを使用せず、コア・ライブラリのみを使用している場合は、次のようにします。

    実行時に、プログラムでパラメータをBI Publisherエンジンに渡します。

    FOProcessor APIをコールする前に、次のようにパラメータ値に対してPropertiesクラスを作成し、プロパティを割り当てます。

    Properties prop = new Properties();
    prop.put("xslt.InvThresh", "1000");

例: 請求書しきい値パラメータの受渡し

次の例では、パラメータの値に基づいてデータをフィルタ処理するテンプレートで、パラメータを宣言する方法を説明します。

次のXMLサンプルには、請求書データがリストされています。

<INVOICES>
 <INVOICE>
  <INVOICE_NUM>981110</INVOICE_NUM>
  <AMOUNT>1100</AMOUNT>
 </INVOICE>
 <INVOICE>
  <INVOICE_NUM>981111</INVOICE_NUM>
  <AMOUNT>250</AMOUNT>
 </INVOICE>
 <INVOICE>
  <INVOICE_NUM>981112</INVOICE_NUM>
  <AMOUNT>8343</AMOUNT>
 </INVOICE>
. . .
</INVOICES>

次の図に、パラメータ値を受け取り、そのパラメータ値に基づいて最終文書に表示する請求書を制限するテンプレートを示します。

この図についてはドキュメントのテキストで説明しています

フィールド フォーム・フィールドのヘルプ・テキスト入力 説明
InvThreshDeclaration <?param@begin:InvThresh?> パラメータInvThreshを宣言します。
FE <?for-each:INVOICE?> INVOICE要素の繰返しグループを開始します。
IF <?if:AMOUNT>$InvThresh?> AMOUNT要素の値を調べて、InvThreshの値より大きいかどうかを判断します。
13222-2 <?INVOICE_NUM?> INVOICE_NUM要素のプレースホルダ。
$100.00 <?AMOUNT?> AMOUNT要素のプレースホルダ。
EI <?end if?> if文の終了タグ。
EFE <?end for-each?> for-eachループの終了タグ。

このテンプレートでは、AMOUNTがInvThreshパラメータ値より大きいINVOICE要素のみが表示されます。パラメータ値1,000が渡された場合、出力は次の図のようになります。

この図についてはドキュメントのテキストで説明しています

2番目の請求書は、AMOUNTがパラメータ値より小さいため、表示されないことに注目してください。

プロパティの設定

BI Publisherの構成ファイルで使用可能なBI Publisherプロパティは、RTFテンプレートに埋め込むこともできます。テンプレートに設定されたプロパティは、実行時にBI Publisherエンジンによって解決されます。値は、テンプレートにハードコードするか、または受信したXMLデータに埋め込むことができます。プロパティをテンプレートに埋め込む場合、構成ファイルの使用は不要になります。

注意: BI Publisherの構成ファイルと利用可能なプロパティの詳細は、Oracle Fusion Middleware Oracle Business Intelligence Publisher管理者ガイド のBI Publisher構成ファイルに関する項を参照してください。

たとえば、構成ファイルにフォントの位置を指定しないで、非標準フォントをテンプレートで使用する場合は、テンプレート内にフォント・プロパティを埋め込むことができます。生成されたPDF出力を保護する必要がある場合は、BI PublisherのPDFセキュリティ・プロパティを使用して、受信したXMLデータからパスワード値を取得できます。

BI Publisherプロパティをテンプレートに追加するには、Microsoft Wordの「Properties」ダイアログ(「File」メニューから使用可能)を使用して、次の情報を入力します。

Name: BI Publisherプロパティ名を先頭にxdo-を付けて入力します。

Type: 「Text」を選択します。

Value: プロパティ値を入力します。受信したXMLデータから要素を参照するには、XML要素へのパスを中カッコで囲んで入力します。たとえば、{/root/password}のように入力します。

次の図に、「Properties」ダイアログを示します。

この図についてはドキュメントのテキストで説明しています

フォント参照の埋込み

次の例では、XMLPScriptというフォントをテンプレートで使用するとします。このフォントは、サーバーでは使用できないため、実行時にBI Publisherに対してそのフォントの検索場所を指示する必要があります。BI Publisherにフォントの検索場所を指示するには、fontプロパティを設定します。フォントが/tmp/fontsに格納されている場合は、「Properties」ダイアログに次のように入力します。

Name: xdo-font.XMLPScript.normal.normal

Type: 「Text」

Value: truetype./tmp/fonts/XMLPScript.ttf

テンプレートがサーバーのXMLデータに適用されると、BI Publisherは/tmp/fontsディレクトリでフォントを検索します。テンプレートが複数の場所に配置されている場合は、各場所に対してパスが有効であることを確認してください。

フォント・プロパティの設定の詳細は、Oracle Fusion Middleware Oracle Business Intelligence Publisher管理者ガイド のフォントの定義に関する項を参照してください。

PDF出力の保護

次の例では、XMLデータからパスワードを使用して、PDF出力文書を保護するとします。XMLデータは次のとおりです。

<PO>
 <security>true</security>
 <password>welcome</password>
 <PO_DETAILS>
 ..
</PO>

「Properties」ダイアログでは、次の2つのプロパティを設定します。pdf-securityプロパティではセキュリティ機能を有効にするかどうかを設定し、pdf-open-passwordプロパティではパスワードを設定します。「Properties」ダイアログで次のように入力します。

Name: xdo-pdf-security

Type: 「Text」

Value: {/PO/security}

Name: xdo-pdf-open-password

Type: 「Text」

Value: {/PO/password}

XMLがシステム内に長期間保持される場合、XMLデータにパスワードを格納するのはお薦めできません。潜在的なセキュリティ・リスクを回避するには、実行時に生成してテンプレートに渡したテンプレート・パラメータ値を使用できます。

たとえば、次のパラメータを設定できます。

次に、「Properties」ダイアログで次のように入力します。

Name: xdo-pdf-security

Type: 「Text」

Value: {$PDFSec}

Name: xdo-pdf-open-password

Type: 「Text」

Value: {$PDFPWD}

テンプレート・パラメータの詳細は、「テンプレートでのパラメータの定義」を参照してください。

拡張レポート・レイアウト

バッチ・レポート

1つのPDFファイルに含まれる請求書や発注書などの文書を一括して印刷することは一般的な要件の1つです。このような文書は複数の異なる顧客向けであるため、文書ごとにページ番号をリセットし、ページ合計は文書固有であることが必要です。ヘッダーとフッターにデータのフィールド(顧客名など)を表示する場合も、同様にリセットする必要があります。

BI Publisherでは、コンテキスト・コマンドを使用してこの要件をサポートしています。このコマンドを使用すると、レポートの要素を特定のセクションに定義できます。セクションが変わると、要素がリセットされます。

次の例では、出力ファイル内のヘッダーとフッター、およびページ番号をリセットする方法を説明します。

次のXMLサンプルは、複数の請求書を含むレポートです。

...
<LIST_G_INVOICE>
   <G_INVOICE>
      <BILL_CUST_NAME>Vision, Inc. </BILL_CUST_NAME>
      <TRX_NUMBER>2345678</TRX_NUMBER>
      ...
   </G_INVOICE>
   <G_INVOICE>
      <BILL_CUST_NAME>Oracle, Inc. </BILL_CUST_NAME>
      <TRX_NUMBER>2345685</TRX_NUMBER>
      ...
   </G_INVOICE>
   ...
</LIST_G_INVOICE>
...

各G_INVOICE要素には、異なる顧客向けの請求書が含まれている場合があります。BI Publisherに対して、G_INVOICE要素が出現するたびに新規セクションを開始するように指示するには、次の構文を使用して、@sectionコマンドをグループの開始のfor-each文に追加します。

<?for-each@section:group name?>

ここで、group_nameは新規セクションを開始する要素の名称です。

たとえば、この例のfor-eachグループ文は次のようになります。

<?for-each@section:G_INVOICE?>

終了の<?end for-each?>タグは変更ありません。

次の図に、サンプル・テンプレートを示します。ヘッダーはコマンドによってリセットされますが、G_INVOICEグループのfor-each宣言はレポート本体内にあることに注意してください。

この図についてはドキュメントのテキストで説明しています

次の表に、この例のフォーム・フィールドの値を示します。

デフォルト・テキスト入力 フォーム・フィールドのヘルプ・テキスト 説明
for-each G_INVOICE <?for-each@section:G_INVOICE?> G_INVOICEグループを開始し、要素をセクションとして定義します。G_INVOICEが出現するたびに、新規セクションを開始します。
<?TRX_NUMBER?> 該当なし Microsoft Wordでは、ヘッダーでのフォーム・フィールドの使用はサポートしていないため、TRX_NUMBER要素のプレースホルダ構文はテンプレートに直接配置します。
end G_INVOICE <?end for-each?> G_INVOICEグループを終了します。

これで、G_INVOICE要素が新たに出現するたびに、新規セクションが開始します。ページ番号が再び開始され、ヘッダーまたはフッターの情報がデータから抽出されると、同様にリセットされます。

データが見つからない状況の処理

BI Publisherコマンドのfor-eachまたはfor-each-groupで@sectionを使用し(例:<?for-each@section:ELEMENT_NAME?>)、入力データ・ファイルにデータがない場合、空または無効のPDF出力ドキュメントが、そのfor-eachループに対して生成される可能性があります。これが発生するのを防ぐには、RTFテンプレートに次を入力します。

  1. RTFテンプレートの終わりに、セクション区切りを追加します。

  2. 最後のページ(新しい項のページ)で、コマンド<?if@section:not(ELEMENT_NAME)?>No Data Found<?end if?>を追加します。

    ここで、ELEMENT_NAMEは、for-each@sectionループで使用しているのと同じデータ要素です。

    ELEMENT_NAMEにデータが存在しない場合は、「データが見つかりません」というテキストとともに有効なPDFが生成されます。

ピボット・テーブルのサポート

注意: 「Template Builder for Wordを使用したRTFテンプレートの作成」の章の「ピボット・テーブルの挿入」も参照してください。

ピボット・テーブルの列は、データに依存します。設計時には、レポートされる列の数や適切な列ヘッダーは不明です。さらに、列が次のページに分割される場合は、後続のページで繰り返す行ラベル列の定義が必要になります。次の例では、これらの機能をサポートする単純なピボット・テーブル・レポートの設計方法を説明します。

この例では、次のXMLサンプルを使用します。

<ROWSET>
	  	<RESULTS>
		 		<INDUSTRY>Motor Vehicle Dealers</INDUSTRY>
		 		<YEAR>2005</YEAR>
		 		<QUARTER>Q1</QUARTER>
		 		<SALES>1000</SALES>
	  </RESULTS>
    <RESULTS>
		  		<INDUSTRY>Motor Vehicle Dealers</INDUSTRY>
		  		<YEAR>2005</YEAR>
		  		<QUARTER>Q2</QUARTER>
		  		<SALES>2000</SALES>
	   </RESULTS>
     <RESULTS>
		   	<INDUSTRY>Motor Vehicle Dealers</INDUSTRY>
		   	<YEAR>2004</YEAR>
		   	<QUARTER>Q1</QUARTER>
		   	<SALES>3000</SALES>
	   </RESULTS>
     <RESULTS>
		   	<INDUSTRY>Motor Vehicle Dealers</INDUSTRY>
		   	<YEAR>2004</YEAR>
		   	<QUARTER>Q2</QUARTER>
		   	<SALES>3000</SALES>
	   </RESULTS>
     <RESULTS>
		   	<INDUSTRY>Motor Vehicle Dealers</INDUSTRY>
		   	<YEAR>2003</YEAR>
	      ...
	   </RRESULTS>
     <RESULTS>
		   	<INDUSTRY>Home Furnishings</INDUSTRY>
		...
	   </RESULTS>
     <RESULTS>
		   	<INDUSTRY>Electronics</INDUSTRY>
		...
	   </RESULTS>
     <RESULTS>
		   	<INDUSTRY>Food and Beverage</INDUSTRY>
		...
     </RESULTS>
            
</ROWSET>

このXMLから、次の図に示すようなレポートを生成します。このレポートには、業種別に各年度の売上合計が表示されます。

この図についてはドキュメントのテキストで説明しています

次の図に、このレポートを生成するテンプレートを示します。後続の表には、フォーム・フィールド入力を示します。

この図についてはドキュメントのテキストで説明しています

テンプレートの各フォーム・フィールドの値は次のとおりです。

デフォルト・テキスト入力 フォーム・フィールドのヘルプ・テキスト 説明
header column <?horizontal-break-table:1?> 最初の列を、表の途中で改ページした場合に繰返し表示するヘッダーとして定義します。この構文の詳細は、「改ページ時に繰り返す列の定義」を参照してください。
for: <?for-each-group@column:RESULTS;YEAR?> 再グループ化構文(「XMLデータの再グループ化」を参照)を使用してデータをYEAR別にグループ化し、@columnコンテキスト・コマンドを使用して各グループ(YEAR)の表列を作成します。コンテキスト・コマンドの詳細は、「コンテキスト・コマンドの使用」を参照してください。
YEAR <?YEAR?> YEAR要素のプレースホルダ。
end <?end for-each-group?> for-each-groupループを終了します。
for: <?for-each-group:RESULTS;INDUSTRY?> グループを開始して、INDUSTRYごとに表の行を作成します。
INDUSTRY <?INDUSTRY?> INDUSTRY要素のプレースホルダ。
for: <?for-each-group@cell:current-group();YEAR?> 再グループ化構文(「XMLデータの再グループ化」を参照)を使用してデータをYEAR別にグループ化し、@cellコンテキスト・コマンドを使用して各グループ(YEAR)の表セルを作成します。
sum(Sales) <?sum(current-group()//SALES)?> 現行グループ(YEAR)の売上を合計します。
end <?end for-each-group?> for-each-group文を終了します。
end <?end for-each-group?> for-each-group文を終了します。

表の列の数を決定するために@columnコンテキストを使用するのは、最初の行のみであることに注意してください。残りのすべての行では、@cellコンテキストを使用して列の表セルを作成する必要があります(コンテキスト・コマンドの詳細は、「コンテキスト・コマンドの使用」を参照)。

動的データ列

動的データ列の作成機能は、RTFテンプレートの強力な機能の1つです。この機能を使用すると、データによって必要な列の数が変化する場合に、表を正しくレンダリングするテンプレートを設計できます。

たとえば、特定範囲内のテスト・スコアの列を表示するテンプレートを設計するとします。ただし、レポート対象のデータを表示する範囲の数は不明です。この場合は、動的データ列を定義すると、実行時に適切な数の列に分割できます。

次のタグを使用して、データの正しいレンダリングに必要な動的書式設定を設定します。

改ページ時に繰り返す列の定義

表の列が拡張して複数のページにまたがる場合、毎ページごとに繰り返す行見出し列の個数を定義できます。次の構文を使用して、繰り返す列数を指定します。

<?horizontal-break-table:number?>

ここで、numberは繰り返す列の数(左から始めます)です。

この機能はPDF出力に対してのみサポートされます。

動的データ列の例

学校のテストについて、スコア範囲を表示するためのテンプレートが必要であるとします。論理的には、次の表に示すようにレポートを配置します。

テスト・スコア テスト・スコア範囲1 テスト・スコア範囲2 テスト・スコア範囲3 ...テスト・スコア範囲n
テスト・カテゴリ 範囲1の生徒数 範囲2の生徒数 範囲3の生徒数 範囲nの生徒数

ここで、レポートに表示されるテスト・スコア範囲の数は不明です。テスト・スコア範囲列の数は、データに応じて動的に設定されます。

次のXMLデータは、テスト・スコアを記述したものです。要素<TestScoreRange>の出現回数によって、必要な列の数が決まります。この例の場合は、0-20、21-40、41-60、61-80および81-100の5つの列があります。各列には、数量要素(<NumOfStudents>)および列幅属性(<TestScore width="15">)があります。

 <?xml version="1.0" encoding="utf-8"?>
 <TestScoreTable>
  <TestScores>
    <TestCategory>Mathematics</TestCategory>
    <TestScore width ="15">
    <TestScoreRange>0-20</TestScoreRange>
    <NumofStudents>30</NumofStudents>
 </TestScore>
    <TestScore width ="20">
    <TestScoreRange>21-40</TestScoreRange>
    <NumofStudents>45</NumofStudents>
 </TestScore>
   <TestScore width ="15">
    <TestScoreRange>41-60</TestScoreRange>
    <NumofStudents>50</NumofStudents>
 </TestScore>
    <TestScore width ="20">
    <TestScoreRange>61-80</TestScoreRange>
    <NumofStudents>102</NumofStudents>
 </TestScore> 
    <TestScore width ="15"> 
    <TestScoreRange>81-100</TestScoreRange>
   <NumofStudents>22</NumofStudents>
 </TestScore>
 </TestScores> 
  <TestScoreTable> 

フォーム・フィールドで動的列タグを使用して、次の図に示すような2列の表を設定します。最初の列「Test Score」は静的な列です。2番目の列「Column Header and Splitting」は動的な列です。実行時に、この列はデータに応じて分割され、列ごとにヘッダーが適切に移入されます。次の表に、各フィールドのデフォルト・テキスト入力およびフォーム・フィールドのヘルプ・テキスト入力を示します(フォーム・フィールドの使用方法の詳細は、「フォーム・フィールド方式」を参照)。

この図についてはドキュメントのテキストで説明しています

デフォルト・テキスト入力 フォーム・フィールドのヘルプ・テキスト入力
グループ:TestScores <?for-each:TestScores?>
テスト・カテゴリ <?TestCategory?>
列ヘッダーと分割 <?split-column-header:TestScore?> <?split-column-width:@width?> <?TestScoreRange?>%
コンテンツと分割 <?split-column-data:TestScore?> <?NumofStudents?>
終了:TestScores <?end for-each?>

テンプレートでは、次の図に示す出力がレンダリングされます。

この図についてはドキュメントのテキストで説明しています

数値、日付、通貨の書式設定

数値の書式設定

BI Publisherでは、数値の書式を指定するために、次の2つの方法をサポートしています。

注意: XSL固有のformat-number関数を使用して、数値を書式設定することもできます。「XSL固有の数値書式設定」を参照してください。

前述の方法のいずれかを使用してください。両方の方法を使用して数値書式マスクを指定すると、データが2回書式設定されるため、予期しない動作が発生します。

グループ・セパレータと数値セパレータは、テンプレートのロケールに基づいて実行時に設定されます。en-US以外のロケールで作業していたり、テンプレートに翻訳が必要な場合は、Oracleの書式マスクを使用します。

データソース要件

Oracle書式マスクまたはMicrosoft書式マスクを使用するには、データソースの数値がRaw形式であること、つまり、書式設定が適用されていない(例: 1000.00)ことが必要です。数値が書式設定されている場合(たとえば、欧州形式に1.000,00と書式設定されている場合)、その書式は機能しません。

注意: BI Publisherパーサーでは、Java BigDecimal文字列表現が必要です。この表現は、オプション記号(-)、0(ゼロ)以上の10進数列(整数)、小数(オプション)および指数(オプション)で構成されます。たとえば、-123456.3455e-3のように設定します。

ローカライゼーションに関する検討事項

en-US以外のロケールで作業していたり、テンプレートに翻訳が必要な場合は、Oracleの書式マスクを使用します。Microsoftの書式マスクは、異なるロケール設定で実行されるテンプレートにおいて予期しない結果を生じる可能性があります。

「%」記号は、数値表示でパーセント記号の位置を固定するため、書式マスクに含めないでください。この記号は、ロケールに基づいて、数値の先頭または後に配置できます。

Microsoft数値書式マスクの使用

数値を書式設定するには、Microsoft Wordのフィールド書式設定機能を使用します。この機能は、「Text Form Field Options」ダイアログ・ボックスで設定できます。次の図に例を示します。

この図についてはドキュメントのテキストで説明しています

数値書式をフォーム・フィールドに適用する手順は、次のとおりです。

  1. プレースホルダ・フィールドに対して「Form Field Options」ダイアログ・ボックスを開きます。

  2. Type」を「Number」に設定します。

  3. Number format」のオプション・リストから適切な数値書式を選択します。

サポートされているMicrosoft書式マスク定義

次の表に、サポートされているMicrosoft書式マスク定義を示します。

記号 位置 意味
0 数値 数字。他に数字が存在しない場合には、明示的に0(ゼロ)が表示されます。
例:
書式マスク: 00.0000
データ: 1.234
表示: 01.2340
# 数値 数字。#に設定すると、受信したデータのみが表示されます。
例:
書式マスク: ##.####
データ: 1.234
表示: 1.234
. 数値 小数セパレータの位置を決定します。使用する小数セパレータ記号は、実行時にテンプレート・ロケールに基づいて決まります。
例:
書式マスク: #,##0.00
データ: 1234.56
表示(英国ロケールの場合): 1,234.56
表示(ドイツ・ロケールの場合): 1.234,56
- 数値 マイナスの数値のマイナス記号の位置を決定します。
, 数値 グループ・セパレータの位置を決定します。使用するグループ・セパレータ記号は、実行時にテンプレート・ロケールに基づいて決まります。
例:
書式マスク: #,##0.00
データ: 1234.56
表示(英国ロケールの場合): 1,234.56
表示(ドイツ・ロケールの場合): 1.234,56
E 数値 科学表記法で仮数および指数を区切ります。
例:
0.###E+0と指定すると、プラスの数値の場合にプラス記号が常に表示されます。
0.###E-0と指定すると、プラスの数値の場合にプラス記号が表示されません。
; サブパターンの境界 プラスおよびマイナスのサブパターンを区切ります。後述する「注意」を参照してください。
% プリフィクスまたはサフィックス 100を乗算してパーセントで表示します。
' プリフィクスまたはサフィックス プリフィクスまたはサフィックスに特殊文字を引用するために使用します。

注意: サブパターンの境界: パターンには、「#,##0.00;(#,##0.00)」のように、プラスおよびマイナスのサブパターンが含まれます。各サブパターンには、プリフィクス、数値部分およびサフィックスが含まれます。マイナスのサブパターンはオプションです。マイナスのサブパターンを指定しない場合、そのマイナスのサブパターンは、プラスのサブパターンの先頭にローカライズされたマイナス記号(ほとんどのロケールで「-」を使用)を付けて表します。つまり、「0.00」は「0.00;-0.00」と同じになります。明示的にマイナスのサブパターンを指定した場合、このサブパターンは単にマイナスのプリフィクスとサフィックスを指定するために使用されます。桁数、最小数字などすべての特性はプラスのパターンと同じです。つまり、「#,##0.0#;(#)」と「#,##0.0#;(#,##0.0#)」の動作は完全に同じになります。

Oracle書式マスクの使用

Oracle書式マスクをフォーム・フィールドに適用する手順は、次のとおりです。

  1. プレースホルダ・フィールドに対して「Form Field Options」ダイアログ・ボックスを開きます。

  2. Type」を「Regular text」に設定します。

  3. 「Form Field Help Text」フィールドに、次の例に従ってマスク定義を入力します。

    <?format-number:ファイル名;'999G999D99'?>

説明:

fieldnameは、書式設定するデータ要素のXMLタグ名です。

999G999D99はマスク定義です。

次の図に、データ要素empnoに関する、「Form Field Help Text」ダイアログへの入力例を示します。

この図についてはドキュメントのテキストで説明しています

次の表に、サポートされているOracle数値書式マスクの記号とその定義を示します。

記号 意味
0 数字。他に数字が存在しない場合には、明示的に0(ゼロ)が表示されます。
例:
書式マスク: 00.0000
データ: 1.234
表示: 01.2340
9 数字。指定桁数の値を戻し、正の数の場合は先頭に空白が付き、負の数の場合は先頭にマイナス記号が付きます。値がゼロの場合を除き、先頭のゼロは空白になります。値がゼロの場合、固定小数点数の整数部分についてゼロを戻します。
例:
書式マスク: 99.9999
データ: 1.234
表示: 1.234
C 指定した位置にISO通貨記号を戻します。
D 小数セパレータの位置を決定します。使用する小数セパレータ記号は、実行時にテンプレート・ロケールに基づいて決まります。
例:
書式マスク: 9G999D99
データ: 1234.56
表示(英国ロケールの場合): 1,234.56
表示(ドイツ・ロケールの場合): 1.234,56
EEEE 科学表記法で値を戻します。
G グループ(千単位)セパレータの位置を決定します。使用するグループ・セパレータ記号は、実行時にテンプレート・ロケールに基づいて決まります。
例:
書式マスク: 9G999D99
データ: 1234.56
表示(英国ロケールの場合): 1,234.56
表示(ドイツ・ロケールの場合): 1.234,56
L 指定した位置にローカル通貨記号を戻します。
MI マイナスの値を末尾に「-」を付けて表示します。
PR マイナスの値を<>で囲んで表示します。
PT マイナスの値を()で囲んで表示します。
S(数値の前) プラスの値の場合は先頭に「+」を付け、マイナスの値の場合は先頭に「-」を付けて表示します。
S(数値の後) プラスの値の場合は末尾に「+」を付け、マイナスの値の場合は末尾に「-」を付けて表示します。

日付の書式設定

BI Publisherでは、日付の書式を指定するために、次の3つの方法をサポートしています。

使用できる方法は1つのみです。OracleとMSの両方の書式マスクを指定すると、データが2回書式設定されるため、予期しない動作が発生します。

データソース要件

Microsoft書式マスクまたはOracle書式マスクを使用するには、XMLデータソースの日付が標準書式であることが必要です。標準書式は次のとおりです。

YYYY-MM-DDThh:mm:ss+HH:MM

説明:

次に、この書式の例を示します。

2005-01-01T09:30:10-07:00

「T」の後のデータはオプションです。このため、2005-01-01という日付は、いずれかの日付書式設定オプションを使用して書式設定できます。

重要: 時間コンポーネントおよびタイムゾーンのオフセットがXMLソース日付に含まれていない場合、BI Publisherは、12:00 AM UTCを示すものと想定します(つまり、yyyy-mm-ddT00:00:00-00:00)。

Microsoft日付書式マスクの使用

日付書式をフォーム・フィールドに適用する手順は、次のとおりです。

  1. プレースホルダ・フィールドに対して「Form Field Options」ダイアログ・ボックスを開きます。

  2. Type」を「Date」、「Current Date」または「Current Time」に設定します。

  3. Date format」のオプション・リストから適切な日付書式を選択します。

Date format」フィールドでマスクを指定しないと、抽象書式マスク「MEDIUM」がデフォルトで使用されます。詳細は、「Oracle抽象書式マスク」を参照してください。

次の図に、日付書式が適用された「Text Form Field Options」ダイアログ・ボックスを示します。

この図についてはドキュメントのテキストで説明しています

次の表に、サポートされているMicrosoft日付書式マスクのコンポーネントを示します。

記号 意味
d 月の日。1桁の日の場合、先頭に0(ゼロ)は付きません。
dd 月の日。1桁の日の場合は、先頭に0(ゼロ)が付きます。
ddd 曜日の略称。AbbreviatedDayNamesで定義されます。
dddd 曜日の正式名称。DayNamesで定義されます。
M 数値で表す月。1桁の月の場合、先頭に0(ゼロ)は付きません。
MM 数値で表す月。1桁の月の場合は、先頭に0(ゼロ)が付きます。
MMM 月の略称。AbbreviatedMonthNamesで定義されます。
MMMM 月の正式名称。MonthNamesで定義されます。
yy 世紀部分を除いた年。世紀部分を除いた年が10未満の場合は、先頭に0(ゼロ)を付けて表示されます。
yyyy 4桁の年。
gg 時代または年号。書式設定される日付に関連する時代または年号文字列がない場合、このパターンは無視されます。
h 12時間書式の時間。1桁の時間の場合、先頭に0(ゼロ)は付きません。
hh 12時間書式の時間。1桁の時間の場合は、先頭に0(ゼロ)が付きます。
H 24時間書式の時間。1桁の時間の場合、先頭に0(ゼロ)は付きません。
HH 24時間書式の時間。1桁の時間の場合は、先頭に0(ゼロ)が付きます。
m 分。1桁の分の場合、先頭に0(ゼロ)は付きません。
mm 分。1桁の分の場合は、先頭に0(ゼロ)が付きます。
s 秒。1桁の秒の場合、先頭に0(ゼロ)は付きません。
ss 秒。1桁の秒の場合は、先頭に0(ゼロ)が付きます。
f 1桁で表したミリ秒を表示します。
ff 2桁で表したミリ秒を表示します。
fff 3桁で表したミリ秒を表示します。
ffff 4桁で表したミリ秒を表示します。
fffff 5桁で表したミリ秒を表示します。
ffffff 6桁で表したミリ秒を表示します。
fffffff 7桁で表したミリ秒を表示します。
tt AM/PMの指標。AMDesignatorまたはPMDesignatorで定義します(存在する場合)。
z システムの現行タイムゾーンのタイムゾーン・オフセットを時間でのみ表示します(この要素は書式設定でのみ使用可能)。
zz システムの現行タイムゾーンのタイムゾーン・オフセットを時間でのみ表示します(この要素は書式設定でのみ使用可能)。
zzz システムの現行タイムゾーンのタイムゾーン・オフセットを時間と分で表示します。
: デフォルトの時間セパレータ。TimeSeparatorで定義されます。
/ デフォルトの日付セパレータ。DateSeparatorで定義されます。
' 引用符付き文字列。文字列のリテラル値の前後を‘文字で囲んで表示します。
" 引用符付き文字列。文字列のリテラル値の前後を“文字で囲んで表示します。

Oracle書式マスクの使用

Oracle書式マスクを日付フィールドに適用する手順は、次のとおりです。

  1. プレースホルダ・フィールドに対して「Form Field Options」ダイアログ・ボックスを開きます。

  2. Type」を「Regular Text」に設定します。

  3. Add Help Text...」ボタンを選択して、「Form Field Help Text」ダイアログを開きます。

  4. 次の構文を挿入して、日付書式マスクを指定します。

    <?format-date:date_string; 'ABSTRACT_FORMAT_MASK';'TIMEZONE'?>

    または

    <?format-date-and-calendar:date_string; 'ABSTRACT_FORMAT_MASK';'CALENDAR_NAME';'TIMEZONE'?>

    タイムゾーンはオプションです。書式マスク、カレンダおよびタイムゾーンの使用方法の詳細は後述します。

    書式マスクを指定しないと、抽象書式マスク「MEDIUM」がデフォルトで使用されます。

    次に、フォーム・フィールドのヘルプ・テキスト入力の例を示します。

    <?format-date:hiredate;'YYYY-MM-DD'?>

次の表に、サポートされているOracle書式マスクのコンポーネントを示します。

記号 意味
-
/
,
.
;
:
"text"
記号および引用符が付いたテキストが再現されて表示されます。
AD
A.D.
AD表示(ピリオドありまたはピリオドなし)。
AM
A.M.
AM/PM表示(ピリオドありまたはピリオドなし)。
BC
B.C.
BC表示(ピリオドありまたはピリオドなし)。
CC 世紀。たとえば、2002の場合は21、2000の場合は20が戻されます。
DAY 日の名称。9文字未満の場合は、9文字の長さまで空白で埋め込まれます。
D 曜日(1から7)。
DD 月内の日(1から31)。
DDD 年内の日(1から366)。
DL 長い日付書式で値が戻されます。
DS 短い日付書式で値が戻されます。
DY 日の略称。
E 年号の略称。
EE 年号の正式名称。
FF[1..9] ミリ秒。FFの後に1から9の数字を設定して、戻される日時値のミリ秒部分の桁数を指定します。
例:
'HH:MI:SS.FF3'
HH 時間(1から12)。
HH12 時間(1から12)。
HH24 時間(0から23)。
MI 分(0から59)。
MM 月(01から12、JAN = 01)。
MON 月の略称。
MONTH 月の名称。9文字未満の場合は、9文字の長さまで空白で埋め込まれます。
PM
P.M.
AM/PM表示(ピリオドありまたはピリオドなし)。
RR 21世紀に、20世紀の日付を格納できます(2桁のみ)。
RRRR 年。4桁または2桁で入力できます。2桁の場合はRRと同じ結果が戻されます。この機能が不適切な場合は、4桁で年を入力してください。
SS 秒(0から59)。
TZD 夏時間情報。TZD値は、夏時間情報を含むタイムゾーンの簡略文字列です。この値は、TZRで指定する地域に対応する必要があります。
例:
PST(太平洋標準時)
PDT(太平洋夏時間)
TZH タイムゾーンの時間(書式設定要素TZMを参照)。
TZM タイムゾーンの分(書式設定要素TZHを参照)。
例:
'HH:MI:SS.FFTZH:TZM'
TZR タイムゾーン地域情報。この値は、データベースでサポートされているタイムゾーン地域であることが必要です。例: PST(太平洋標準時)
WW 年の週(1から53)。週1は、その年の初日から7日目までです。
W 月の週(1から5)。週1は、その月の初日から7日目までです。
X ローカル基数文字。
YYYY 4桁の年。
YY
Y
年の最後の2桁または1桁。

デフォルトの書式マスク

MS書式マスクまたはOracle書式マスクのいずれも指定しない場合は、マスク定義を省略してデフォルトの書式マスクを使用できます。デフォルトの書式マスクは、Oracleが提供するMEDIUM抽象書式マスクです(定義については、「Oracle抽象書式マスク」を参照)。

Microsoft書式マスクのデフォルト・オプションを使用するには、「Text Form Field Options」ダイアログで、「Type」を「Date」に設定し、「Date format」フィールドを空白のままにします。

Oracle書式マスクのデフォルト・オプションを使用するには、次のように、format-date関数コールにマスク定義を指定しないでください。

<?format-date:hiredate?>

Oracle抽象書式マスク

抽象日付書式マスクは、I18Nライブラリの日付/時刻書式設定のデフォルト実装を反映します。いずれかのマスクを使用すると、レポートに関連付けられているロケールに基づいて出力が生成されます。

抽象書式マスクは、次の構文を使用して指定します。

<?format-date:fieldname;'MASK'?>

ここで、fieldnameはXML要素タグです。

MASKは、Oracle抽象書式マスクの名称です。

例:

<?format-date:hiredate;'SHORT'?>
<?format-date:hiredate;'LONG_TIME_TZ'?>
<?format-date:xdoxslt:sysdate_as_xsdformat();'MEDIUM'?>

次の表に、抽象書式マスク、および米国ロケールで生成されたサンプル出力を示します。

マスク 米国ロケールの出力
SHORT 2/31/99
MEDIUM Dec 31, 1999
LONG Friday, December 31, 1999
SHORT_TIME 12/31/99 6:15 PM
MEDIUM_TIME Dec 31, 1999 6:15 PM
LONG_TIME Friday, December 31, 1999 6:15 PM
SHORT_TIME_TZ 12/31/99 6:15 PM GMT
MEDIUM_TIME_TZ Dec 31, 1999 6:15 PM GMT
LONG_TIME_TZ Friday, December 31, 1999 6:15 PM GMT

レポートでのシステム日付(sysdate)の表示

sysdateを正しく表示するには、xdoxslt:sysdate_as_xsdformat()関数と<?format-date:?>コマンドを使用します。

例:

<?format-date:xdoxslt:sysdate_as_xsdformat();'MEDIUM'?> 
<?format-date:xdoxslt:sysdate_as_xsdformat();'LONG'?>
<?format-date:xdoxslt:sysdate_as_xsdformat();'LONG_TIME_TZ'?> 
<?format-date-and-calendar:xdoxslt:sysdate_as_xsdformat(); 
    'LONG_TIME';'ROC_OFFICIAL';?> 

通貨の書式設定

BI Publisherを使うと、特定の通貨書式マスクを定義して、実行時に公開したデータに適用できます。

通貨の書式設定を利用するには、RTFテンプレートで次の操作を実行します。

  1. BI Publisherの実行時構成プロパティで通貨書式を設定します。通貨書式は、システム・レベルまたはレポート・レベルで定義できます。

    通貨書式プロパティを設定するには、国際標準化機構(ISO)の通貨コードを使用して、指定された通貨に使用する形式を定義します。サンプルを次の図に示します。

    この図についてはドキュメントのテキストで説明しています

    詳細は、「通貨書式の構成」を参照してください。

  2. RTFテンプレートにformat-currencyコマンドを入力して、実行時に形式をフィールドに適用します(使用方法は以下に示します)。

フィールドへの通貨書式の適用

format-currency関数のパラメータは、次のとおりです。

<?format-currency:Amount_Field;CurrencyCode;displaySymbolOrNot?>

説明:

Amount_Fieldは、データ内の値の量を保持するXML要素のタグ名を取ります。

CurrencyCodeは静的値に設定することも、動的に設定することもできます。レポートの値が静的な場合は、'USD'など、一重引用符にISOの3文字の通貨コードを入力します。

値を動的に設定するには、ISO通貨コードを保持するXML要素のタグ名を入力します。通貨コードを含む要素が、データに存在する必要があります。

実行時に、Amount_Fieldは、レポート・プロパティの通貨コードに設定された形式に従って書式設定されます。

displaySymbolOrNotは、一重引用符内に示す'true'または'false'の値のいずれかを取ります。'true'に設定すると、通貨記号はCurrencyCodeの値に基づいてレポートに表示されます。通貨記号を表示しない場合は、'false'と入力するか、または単にパラメータを指定しないでください。

例: レポートでの複数の通貨書式の表示

次の例では、レポート・プロパティで次の通貨書式が設定されていると想定しています。

通貨コード 書式マスク
USD 9G999D99
INR 9G99G99G999D99

この例では、通貨コードを動的に設定する必要はありません。XMLデータには、次の要素があります。

<TOTAL_SALES>
    <US_SALES>8596526459.56</US_SALES>
    <INDIA_SALES>60000000</INDIA_SALES>
</TOTAL_SALES>

これら2つの合計フィールドをテンプレートに表示するとします。

US_SALESについては、BI Publisherプロパティ・フィールドの構文は、次のようになります。

<?format-currency:US_SALES;'USD'?>

次の図は、INDIA_SALESのエントリを示す「BI Publisherのプロパティ」ダイアログを表示するテンプレートの2つのフィールドを示しています。

この図についてはドキュメントのテキストで説明しています

実行時に、フィールドは次のように表示されます。

この図についてはドキュメントのテキストで説明しています

例: 1つのレポートに複数の通貨コードを表示

次に示すシンプルなXMLサンプルには、量(Trans_amount)を含む要素およびISO通貨コード(Cur_Code)を含む要素が含まれています。

<ROW>
<Trans_Amount>123</Trans_Amount>
<Cur_Code>USD</Cur_Code>
</ROW>
<ROW>
<Trans_Amount>-456</Trans_Amount>
<Cur_Code>GBP</Cur_Code>
</ROW>
<ROW>
<Trans_Amount>748</Trans_Amount>
<Cur_Code>EUR</Cur_Code>
</ROW>
<ROW>
<Trans_Amount>-987</Trans_Amount>
<Cur_Code>JPY</Cur_Code>
</ROW>

適切な通貨記号を使ってこれらの量のそれぞれを表示するには、量を表示するフィールドのテンプレートに次を入力します。

<?format-currency:Trans_Amount;Cur_Code;'true'?>

次の図は、達成できるサンプル出力を示しています。

この図についてはドキュメントのテキストで説明しています

カレンダとタイムゾーンのサポート

カレンダの指定

「カレンダ」という用語は、発行レポートに表示されるカレンダ日付を指します。次のタイプがサポートされています。

次のいずれかの方法で、カレンダ・タイプを設定します。

注意: テンプレートで指定したカレンダ・タイプは、このプロファイル・オプションで設定したカレンダ・タイプより優先されます。

タイムゾーンの指定

タイムゾーン情報は、次の2つの方法で指定します。

タイムゾーンが指定されていない場合は、レポートのタイムゾーンが使用されます。

テンプレートでタイムゾーンを指定する場合は、America/Los Angelesのように、Javaタイムゾーン文字列として指定する必要があります。次に、テンプレートのヘルプ・テキスト・フィールドに入力する構文の例を示します。

<?format-date:hiredate;'LONG_TIME_TZ';'Asia/Shanghai'?>

外部フォントの使用

BI Publisherでは、通常はサーバーで使用できない外部フォントを出力で使用できます。新規フォントをレポート出力に設定するには、クライアント・マシンでそのフォントを使用してテンプレートを設計し、次に、そのフォントをサーバーで使用可能にして、実行時にそのフォントにアクセスできるようにBI Publisherを構成します。

注意: 外部フォントは、PDF出力のみでサポートされています。

  1. フォントをテンプレートで使用します。

    1. フォントを<WINDOWS_HOME>/fontsディレクトリにコピーします。

    2. Microsoft Wordを開き、テンプレートを作成します。

    3. フォントをテンプレートに挿入します。テキストまたはフォーム・フィールドを選択し、任意のフォントをフォント・ダイアログ・ボックス(「Format」→「Font」)またはフォント・ドロップダウン・リストから選択します。

      次の図に、フォーム・フィールド・メソッドおよびテキスト・メソッドの例を示します。

      この図についてはドキュメントのテキストで説明しています

  2. ORACLE_HOME/common/fontsディレクトリのBI Publisherサーバーにフォントを配置します。

    注意: 定義済フォントは、Oracle Business Intelligence OracleのホームのORACLE_HOME/common/fontsに配置されています。フォントの位置はXDO_FONT_DIR変数によって設定されます。ご利用の環境でこの変数が設定されていない場合は、フォントは$JAVA_HOME/jre/lib/fontsに配置されます。

  3. BI Publisherのfontプロパティを設定します。

    レポートのfontプロパティは、BI Publisherの「フォント・マッピング」ページか構成ファイルで設定できます。

    「フォント・マッピング」ページでプロパティを設定するには:

    「フォント・マッピング」ページでプロパティを設定するには、レポート・エディタでレポートを開き、「プロパティ」をクリックしてから「フォント・マッピング」をクリックします。「レポート・プロパティの構成」を参照してください。

    構成ファイルへのプロパティの設定

    BI Publisher構成ファイルのfontsセクションで、フォント名とサーバー上の位置を更新します。たとえば、TrueTypeを新規に設定するには、次のように入力します。

    <font family="MyFontName" style="normal" weight="normal">
        <truetype path="\user\fonts\MyFontName.ttf"/>
    </font>
    

    詳細は、Oracle Fusion Middleware Oracle Business Intelligence Publisher管理者ガイド のBI Publisher構成ファイルに関する項を参照してください。

ここで、レポートを実行すると、BI Publisherでは、出力で指定したフォントが使用されます。PDF出力の場合は、BI Publisherの拡張フォント処理機能によって、外部フォントの絵文字が最終出力に直接埋め込まれます。文書で必要な絵文字が含まれるのは埋め込まれたフォントのみで、フォント定義自体には含まれません。したがって、文書に必要な要素はすべて備わっているため、外部フォントをプリンタにインストールする必要はありません。

BI Publisherに付属のバーコード・フォントの使用

BI Publisherには、次のバーコードが付属しています。

フォント・ファイル サポートされているアルゴリズム
128R00.TTF code128a、code128bおよびcode128c
B39R00.TTF code39、code39mod43
UPCR00.TTF upca、upce

事前パッケージ済フォントの1つを使用する場合、BI Publisherでは、バーコード・フォントを出力文書のデータに適用する前に、データに対して前処理を実行します。たとえば、書式を設定する前には、データのチェックサム値やスタート・ビットとエンド・ビットを計算します。

設計時には、Microsoft Wordのフィールドにバーコード・フォントを適用する必要はありません。かわりに、BI Publisherのフォント・マッピングを使用して、フィールドに適用するフォントをマップできます。実行時に、BI Publisherはフォント・マッピングで指定したベース・フォントを使用して、任意のフィールドにバーコード・フォントを適用します。テンプレートの他の場所で使用されていないフォントを選択してください。フォント・マッピングの詳細は、「レポート・プロパティの構成」を参照してください。

Microsoft Wordでフォントを直接使用する場合、適切な.TTFファイルをC:\WINDOWS\Fontsディレクトリに追加します。Template Builderのプレビュー機能を使用するには、Template Builderの構成ファイルでフォントをマップします。詳細は、「BI PublisherのTemplate Builder用フォントの構成」を参照してください。

レポート出力でこれらを使用するには、次を実行します。

  1. テンプレートにおいて、レポート出力でバーコードを表示する場所にフィールドを挿入します。

  2. フォーム・フィールドで、次のコマンドを入力します。

    <?format-barcode:data;'barcode_type'?>

    説明:

    dataは、エンコーディングするXMLデータソースからの要素を示します(例: INVOICE_NO)。

    barcode_typeは、上に示したサポート対象アルゴリズムの1つです。

    例:

    <?format-barcode:INVOICE_NO;'code128a'?>
    
    <?format-barcode:INVOICE_NO;'code39mod43'?>
    
    <?format-barcode:INVOICE_NO;'upca'?> 
  3. Microsoft Wordで、フォントをフィールドに適用します。クライアント・マシンにバーコード・フォントをインストールしていない場合は、Bookmanなど、テンプレートの他の場所で使用されていないフォントを選択します。

  4. 「フォント・マッピング」ページでフォントを構成します。「フォント・マッピング」ページの詳細は、「レポート・プロパティの構成」を参照してください。次に示すのは、「フォント・マッピング」ページの図です。

    この図についてはドキュメントのテキストで説明しています

次の点に注意してください。

カスタム・バーコードの書式設定

上に示したバーコード・フォントの1つを使用しない場合は、この手順を使用してカスタム・バーコードを実装します。

BI Publisherには、バーコード・フォントを出力文書のデータに適用する前に、データに対して前処理を実行する機能があります。たとえば、データの書式を設定する前には、そのデータのチェックサム値やスタート・ビットとエンド・ビットの計算が必要な場合があります。

このソリューションでは、BI Publisherにバーコードのエンコーディング・クラスを登録する必要があります。それを実行時にインスタンス化してテンプレートで書式設定を実行できます。これについては、Oracle Fusion Middleware Oracle Business Intelligence Publisher管理者ガイド の高度なバーコード・フォントの書式設定クラスの実装に関する項で説明されています。

テンプレートで書式設定機能を有効にするには、テンプレート内で2つのコマンドを使用する必要があります。1つ目は、バーコード・エンコーディング・クラスをBI Publisherに登録するコマンドです。この登録は、エンコーディング・コマンドより前にテンプレートで宣言する必要があります。2つ目は、書式を設定するデータを識別するためのエンコーディング・コマンドです。

バーコード・エンコーディング・クラスの登録

次の構文をテンプレートのフォーム・フィールドで使用して、バーコード・エンコーディング・クラスを登録します。

<?register-barcode-vendor:java_class_name;barcode_vendor_id?>

このコマンドには、Javaクラス名(エンコーディングを実行する)と、クラス別に定義されたバーコード・ベンダーIDが必要です。このコマンドは、テンプレート内でデータをエンコーディングするコマンドの前に配置する必要があります。例:

<?register-barcode-vendor:’oracle.xdo.template.rtf.util.barcoder.BarcodeUtil’;'XMLPBarVendor'?>

説明:

oracle.xdo.template.rtf.util.barcoder.BarcodeUtilはJavaクラスです。

XMLPBarVendorは、クラス別に定義されたベンダーIDです。

データのエンコード

データを書式設定するには、次の構文をテンプレートのフォーム・フィールドで使用します。

<?format-barcode:data;'barcode_type';'barcode_vendor_id'?>

説明:

dataは、エンコーディングするXMLデータソースからの要素を示します(例: LABEL_ID)。

barcode_typeは、データの書式設定に使用されるエンコーディングJavaクラスのメソッドです(例: Code128a)。

barcode_vendor_idは、エンコーディング・クラスを登録する際に使用する1つ目のコマンドのregister-barcode-vendorフィールドで定義したIDです。

例:

<?format-barcode:LABEL_ID;'Code128a';'XMLPBarVendor'?>

実行時に、データ値の書式を設定するためにbarcode_typeメソッドがコールされ、最終出力のデータにバーコード・フォントが適用されます。

コンテキスト・コマンドを使用する命令の配置の制御

BI Publisher構文は、XSL命令を単純化したものです。この構文は、テンプレートで使用する従来のXSLコマンドとともに、実行時にXSL-FOに変換されます。変換されたスタイル・シート内のこれらの命令の配置によって、テンプレートの動作が決定されます。

BI PublisherのRTFプロセッサでは、最も一般的なコンテキストに従って、XSL-FOスタイルシート内にこれらの命令が配置されます。ただし、特定の動作を作成するために、命令のコンテキストを別の方法で定義する必要がある場合もあります。この要件をサポートするために、BI Publisherには、処理命令のコンテキスト(配置)を定義できる一連のコンテキスト・コマンドが用意されています。たとえば、コンテキスト・コマンドを使用すると、次の処理を実行できます。

コンテキストは、BI Publisher構文を使用した処理コマンド、およびXSL固有の構文を使用した処理コマンドの両方に指定できます。

BI Publisherでは、次のコンテキスト・タイプがサポートされます。

コンテキスト 説明
section 文は、ヘッダーおよびフッターを含めてセクション全体に影響を与えます。たとえば、for-each@sectionコンテキスト・コマンドでは、出現箇所ごとに、再開始されたページ番号およびヘッダーとフッターを使用して新規セクションが作成されます。
<?initial-page-number:'auto'?>コマンドを使用することで、セクション全体で連続的なページ番号付けを維持できます。
この使用方法の例は、「バッチ・レポート」を参照してください。
column 文は、表の列全体に影響を与えます。このコンテキストは通常、データに応じて表の列を表示または非表示にするために使用されます。
例については、「列の書式設定」を参照してください。
cell 文は、表のセルに影響を与えます。このコンテキストは通常、動的な列数を作成するために、ピボット・テーブルで@columnとともに使用されます。
例については、「ピボットのサポート」を参照してください。
block 文は、複数のfo:blocks(RTFの段落)全体に影響を与えます。このコンテキストは通常、if文およびfor-each文に対して使用されます。また、段落または表のセルに書式設定を適用するためにも使用されます。
例については、「セルの強調表示」を参照してください。
inline コンテキストは、fo:inlineブロック内の単一の文になります。このコンテキストは変数に使用されます。
incontext 文は、その文を囲んでいる文の直後に挿入されます。これは、その文を囲んでいるfor-eachの後に最初の要素として続く必要がある<?sort?>文に対するデフォルトです。
inblock 文は、fo:block(RTFの段落)内の単一の文になります。これは通常、制御文(ifやfor-eachなど)には有効ではなく、call-templateなど、テキストを生成する文に有効です。
inlines 文は、複数のインライン・セクション全体に影響を与えます。1つのインライン・セクションは、太字でレンダリングされる一続きの語など、同じ書式設定を使用するテキストです。
「ボイラープレート・テキストでのif文」を参照してください。
begin 文は、XSLスタイルシートの先頭に配置されます。これは、グローバル変数の場合は必須です。「パラメータの定義」を参照してください。
end 文は、XSLスタイルシートの最後に配置されます。

次の表に、各BI Publisherコマンドに対するデフォルト・コンテキストを示します。

コマンド コンテキスト
apply-template inline
属性 inline
call-template inblock
choose block
for-each block
if block
import begin
param begin
sort incontext
template end
value-of inline
variable end

XPathコマンドの使用

XPathは、World Wide Web Consortium(W3C)によって開発された業界標準です。XML文書をナビゲートするために使用される方式であり、XML文書の個々の部分を処理するための一連の構文規則です。RTFテンプレートでは、実行時に、XMLデータのナビゲートにXPathが使用されているため、ユーザーは認識していなくても、すでにXPathを使用しています。

この項では、XPathの原理の概要について説明します。詳細は、W3CのWebサイトhttp://www.w3.org/TR/xpathを参照してください。

XPathは、XML文書をノードのツリーとして解釈するDocument Object Model(DOM)に従っています。ノードは、次の7タイプのいずれかです。

これらの要素の多くが次のサンプルXMLに示されています。このサンプルにはCDのカタログが含まれています。

<?xml version="1.0" encoding="UTF-8"?>
<! -  My CD Listing  - >
<CATALOG>
 <CD cattype=Folk>
  <TITLE>Empire Burlesque</TITLE>
  <ARTIST>Bob Dylan</ARTIST>
  <COUNTRY>USA</COUNTRY>
  <PRICE>10.90</PRICE>
  <YEAR>1985</YEAR>
 </CD>
 <CD cattype=Rock>
  <TITLE>Hide Your Heart</TITLE>
  <ARTIST>Bonnie Tylor</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <PRICE>9.90</PRICE>
  <YEAR>1988</YEAR>
  </CD>
</CATALOG>

この例のルート・ノードはCATALOGです。CDは要素であり、属性cattypeが設定されています。サンプルには、コメントとしてMy CD Listingと記述されています。テキストはXML文書要素内に含まれています。

データの検索

location-path式を使用して、XML文書内の情報を検索します。

ノードはユーザーが使用する最も一般的な検索要素です。サンプルのCATALOG XMLのノードには、CD、TITLEおよびARTISTなどがあります。XML文書内のノードを検索するには、パス式を使用します。たとえば、次のパスではすべてのCD要素が戻されます。

//CATALOG/CD

説明:

ダブル・スラッシュ(//)は、文書内のレベルに関係なく、XML文書内で検索基準と一致する要素がすべて戻されることを示します。

スラッシュ(/)は子ノードを区切ります。パターンと一致するすべての要素が戻されます。

個々のTITLE要素を取得するには、次のコマンドを使用します。

/CATALOG/CD/TITLE

この例では、次のXMLが戻されます。

<CATALOG>
 <CD cattype=Folk>
  <TITLE>Empire Burlesque</TITLE>
  </CD>
 <CD cattype=Rock>
  <TITLE>Hide Your Heart</TITLE>
  </CD>
</CATALOG>

検索内容をさらに制限するには、大カッコを使用します。大カッコを使用すると、特定の子ノードまたは指定した値を含んだ要素が検索されます。たとえば、次の式では、Bob DylanのすべてのCDが検索されます。

/CATALOG/CD[ARTIST="Bob Dylan"]

または、各CD要素にPRICE要素が設定されていない場合は、次の式を使用してPRICE要素が含まれているCD要素のみを戻すことができます。

/CATALOG/CD[PRICE]

大カッコを使用する表記法では、検索に属性値を利用できます。属性を示すには@記号を使用します。たとえば、次の式では、ロックのすべてのCD(cattype属性の値がRockのすべてのCD)が検索されます。

//CD[@cattype="Rock"]

この結果、サンプルXML文書から次のデータが戻されます。

<CD cattype=Rock>
  <TITLE>Hide Your Heart</TITLE>
  <ARTIST>Bonnie Tylor</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <PRICE>9.90</PRICE>
  <YEAR>1988</YEAR>
  </CD>

また、大カッコを使用して、取得する項目の番号を指定することもできます。たとえば、次のXPath式を使用すると、XML文書から最初のCD要素が読み込まれます。

/CATALOG/CD[1]

次のように、サンプルから最初のCD要素が戻されます。

<CD cattype=Folk>
  <TITLE>Empire Burlesque</TITLE>
  <ARTIST>Bob Dylan</ARTIST>
  <COUNTRY>USA</COUNTRY>
  <PRICE>10.90</PRICE>
  <YEAR>1985</YEAR>
 </CD>

XPathでは、指定したノード内に含まれているすべての要素を取得するためのワイルドカードもサポートされています。たとえば、サンプルXMLからすべてのCDを取得するには、次の式を使用します。

/CATALOG/*

さらに複雑な検索のために、文とブール演算子を組み合せることができます。次の式では、すべてのフォークおよびロックのCDが取得され、結果としてサンプルからすべての要素が取得されます。

//CD[@cattype="Folk"]|//CD[@cattype="Rock"]

縦線(|)は、論理OR演算子と同等です。さらに、XPathでは、ORおよびANDに加え、等価演算子<=、<、>、>=、==および!=が認識されます。たとえば、次の式を使用すると、1985年以降にリリースされたすべてのCDを検索できます。

/CATALOG/CD[YEAR >=1985]

参照の開始

XPath式の最初の文字で、XMLツリー内の開始位置が決まります。スラッシュ(/)で始まる文は絶対参照とみなされます。スラッシュが指定されない場合は相対参照を意味します。相対参照の例を次に示します。

CD/*

この文では、現行の参照ポイントで検索が開始されます。つまり、この例が1つの文グループ内で使用されている場合は、その前の文で使用された参照ポイントが使用されます。

すでに述べたように、2本のスラッシュ(//)を使うと、ドキュメント内の位置にかかわらず、すべての一致する要素が取得されます。このため、パフォーマンスを改善するのに必要な場合のみ、2本のスラッシュ(//)を使用する必要があります。

コンテキストおよび親

現行要素と親要素を選択するために、XPathでは、ディレクトリのナビゲートに通常使用されているドット表記法が認識されます。ピリオドを1つ(.)使用すると現行ノードが選択され、ピリオドを2つ(..)使用すると、現行ノードの親が戻されます。たとえば、現行ノードの親の子ノードをすべて取得するには、次の式を使用します。

../*

したがって、サンプルXMLからすべてのCDにアクセスするには、次の式を使用します。

/CATALOG/CD/..

また、次の式を使用して、1988年にリリースされたすべてのCDのタイトルにアクセスすることもできます。

/CATALOG/CD/TITLE[../YEAR=1988]

..は、要素ツリーを上にナビゲートしてTITLEと同じレベルでYEAR要素を検索し、そのYEAR要素で1988との一致をテストするために使用されます。この例では//も使用できますが、要素YEARがXML文書の他の場所でも使用されている場合は、誤った結果が戻される可能性があります。

XPathは、RTFテンプレートと組み合せた場合に非常に強力な標準であり、テンプレートで条件付き書式設定およびフィルタリングを使用できます。

ネームスペースのサポート

XMLデータにネームスペースが含まれている場合は、プレースホルダでネームスペースを参照する前にテンプレートで宣言する必要があります。テンプレートでネームスペースを宣言するには、基本RTF方式、またはフォーム・フィールドを使用します。次の構文を入力します。

<?namespace:ネームスペース名= ネームスペースのurl?>

例:

<?namespace:fsg=http://www.oracle.com/fsg/2002-30-20/?>

一度宣言すると、プレースホルダ・マークアップにネームスペースを使用できます。例: <?fsg:ReportName?>

XSL要素の使用

テンプレートでXSL要素を使用するには、XSL構文をフォーム・フィールドに挿入します。

基本RTF方式を使用している場合は、XSL構文をテンプレートに直接挿入することはできません。BI Publisherでは、RTFテンプレートで使用できるように次のXSL要素が拡張されています。

これらを基本方式のRTFテンプレートで使用するには、XSL要素についてBI Publisherタグ・フォームを使用する必要があります。フォーム・フィールドを使用している場合は、いずれかのオプションを使用します。

テンプレート・ルールの適用

現行要素の子ノードにテンプレート・ルールを適用するには、この要素を使用します。

XSL構文: <xsl:apply-templates select="name">

BI Publisherタグ: <?apply:name?>

この関数は、<xsl:template-match="n">に適用されます。nは要素名です。

現行ノードのコピー

現行ノードのコピーを作成するには、この要素を使用します。

XSL構文: <xsl:copy-of select="name">

BI Publisherタグ: <?copy-of:name?>

テンプレートのコール

現行のテンプレートに挿入または適用される名前付きテンプレートをコールするには、この要素を使用します。たとえば、この機能を使用すると表を複数回レンダリングできます。

XSL構文: <xsl:call-template name="name">

BI Publisherタグ: <?call-template:name?>

テンプレートの宣言

指定したノードが一致した場合に一連のルールを適用するには、この要素を使用します。

XSL構文: <xsl:template name="name">

BI Publisherタグ: <?template:name?>

変数の宣言

ローカルまたはグローバル変数を宣言するには、この要素を使用します。

XSL構文: <xsl:variable name="name">

BI Publisherタグ: <?variable:name?>

:

 <xsl:variable name="color" select="'red'"/> 

"color"変数に値"red"を割り当てます。この変数をテンプレートで参照できます。

スタイルシートのインポート

スタイルシートの内容を別のスタイルシートにインポートするには、この要素を使用します。

注意: インポート対象のスタイルシートの優先順位は、インポート先のスタイルシートより低くなります。

XSL構文: <xsl:import href="url">

BI Publisherタグ: <?import:url?>

スタイルシートのルート要素の定義

この要素と<xsl:stylesheet>要素は完全に同じ要素です。両方とも、スタイルシートのルート要素を定義するために使用されます。

注意: 組込み対象のスタイルシートの優先順位は、組込み先のスタイルシートと同じになります。

XSL構文: <xsl:stylesheet xmlns:x="url">

BI Publisherタグ: <?namespace:x=url?>

注意: テンプレートでネームスペースを宣言する必要があります。「ネームスペースのサポート」を参照してください。

XSL固有の数値書式設定

XSL固有のformat-number関数では、次の基本書式が使用されます。

format-number(number,format,[decimalformat])
パラメータ 説明
number 必須。書式設定する数値を指定します。
format 必須。書式パターンを指定します。次の文字を使用してパターンを指定します。
  • #(桁数を指定します。例: ####)

  • 0(先頭および後続の0(ゼロ)を指定します。例: 0000.00)

  • .(小数点の位置。例: ###.##)

  • , (千単位のグループ・セパレータ文字。例: ###,###.##)

  • %(数値をパーセントで表示します。例: ##%)

  • ;(パターン・セパレータ文字。最初のパターンはプラスの数値に使用され、2番目のパターンはマイナスの数値に使用されます。)

decimalformat オプション。10進書式の詳細は、基本的なXSLTマニュアルを参照してください。

FO要素の使用

Microsoft Wordのフォーム・フィールド内でFO固有の構文を使用できます。

XSL-FOの詳細は、W3CのWebサイトhttp://www.w3.org/2002/08/XSLFOsummary.htmlを参照してください。

BI PublisherでサポートされるFO要素の全リストは、付録の「サポートされているXSL-FO要素」を参照してください。

RTFテンプレートをMicrosoft PowerPoint出力用に設計するためのガイドライン

BI Publisherでは、RTFテンプレートをPowerPointの出力として生成することができます。これにより、レポート・データを主要なビジネスのプレゼンテーションに使用できます。現時点では、生成されるPowerPointドキュメントは、書式付きデータとチャートがPowerPointに単純にエクスポートされたものになります。

制限事項

PowerPointに出力して作業する場合、次のような制限があります。

使用上のガイドライン

次に、PowerPointに出力するためにRTFテンプレートを設計する場合に役立つガイドラインを示します。

PowerPoint出力のチャートについて

BI Publisherは、PowerPoint2007出力で表示される特定のチャート・タイプの従来のPowerPointチャートをサポートしています。チャートがネイティブ・チャートとして挿入された場合は、PowerPointで変更できます。チャートがネイティブ・チャートとして挿入されていない場合は、BI Publisherは、更新できないPNGイメージを挿入します。

次のチャート・タイプは、PowerPoint2007出力でネイティブのPowerPointチャートとして表示できます。

PowerPointでネイティブでないチャート・タイプは棒グラフに変換されます(ゲージやファンネルなど)。

デフォルトでは、ネイティブ・チャートの挿入が有効化されています。レポートのネイティブ・チャート挿入を無効にするには、「PPTXネイティブ・チャート・サポートの有効化」レポート・プロパティをfalseに設定します。詳細は、「レポート処理および出力文書のプロパティの設定」を参照してください。

PPTXネイティブ・チャート・サポートの有効化」をfalseに設定すると、すべてのチャートはPowerPoint2007出力のイメージとして表示されます。そのため、ネイティブでないチャート・タイプがレポートに含まれている場合にかぎり、このオプションをfalseに設定してください。

BI Publisherサーバー用フォントの構成

PowerPoint出力のサポートでは、BI Publisherにおいて他のタイプの出力に使用されるフォント代替メカニズムは含まれていません。テンプレートに標準でないフォントが使用されている場合、RTFテンプレートで使用する各フォントを、PowerPointで出力を生成できるようにBI Publisherサーバーを構成する必要があります。これらのフォントをBI Publisherサーバーにコピーして、RTFテンプレートのフォント・マッピングを定義する必要があります。システム全体か個々のレポートに対してこれを実行できます。詳細は、「フォント・マッピングの定義」を参照してください。

BI PublisherのTemplate Builder用フォントの構成

BI PublisherのTemplate Builderを使用してレポートを定義する場合、英語以外のフォントや標準でないフォントを使用しているPPT出力でプレビューを適切に行うには、BI Publisherの構成ファイルでフォントを定義する必要があります。この構成ファイルはxdo.cfgと呼ばれ、通常次に示す場所にあります。

C:\Oracle\BI Publisher\BI Publisher Desktop\Template Builder for Word\config\

このファイルを使用していない場合は、かわりにxdo example.cfgファイルを使用できます。このファイルはUTF-8のエンコーディングで保存し、定義されたフォントごとに絶対フルパスを明記する必要があります。そうしないと、文字が重なったり折返しが正常に動作しないなどの問題が発生します。

  1. C:\Oracle\BI Publisher\BI Publisher Desktop\Template Builder for Word\config\にナビゲートします。

  2. xdo.cfgファイルを開き、フォント・マッピングを更新します。xdo.cfgファイルでフォント・マッピングを直接更新する方法の詳細は、Oracle Fusion Middleware Oracle Business Intelligence Publisher管理者および開発者ガイドのフォント定義に関する項を参照してください。

  3. xdo.cfgをUTF-8フォーマットで保存します。

    次の図は、xdo.cfgファイルの例を示します。

    この図についてはドキュメントのテキストで説明しています