RTFサブ・テンプレートを使用する状況

RTFサブテンプレートは様々なシナリオで使用できます。

次に、いくつかのRTFサブ・テンプレートの一般的なユースケースを示します。

共通レイアウトの再利用

しばしば、複数のレポートで同じヘッダーとフッターが必要になります。

この内容の組込みにRTFサブ・テンプレートを使用することにより、全体的な変更を単純化でき、更新もレイアウトごとではなくこのサブ・テンプレートのみで済みます。

データの値に基づいた条件付のレイアウト表示

サブ・テンプレートは、レポート・データの値に基づいた条件付レイアウトに適用するために使用することもできます。

RTFテンプレートのchooseコマンドを使用することで、Publisherに、サブテンプレート・ファイルに定義された別の<?template?>を適用するように指示できます。

サブ・テンプレート・ファイルのimport文は条件付にできません。そのかわりに、1つのサブ・テンプレート・ファイルをインポートして、コール文を条件付にできます。1つのサブ・テンプレート・ファイルに複数の<?template?>オプションを定義します。

インドと米国内の顧客に送信するレポートがあるとします。データで指定される国コード(COUNTRY_CODE)に応じて、適用する住所のレイアウトを変える必要があります。この例では、RTFテンプレートのif文の機能を使用して該当するアドレス書式のサブテンプレートをコールします。

サブテンプレート・ファイルは、次のようになります。

<?template:US_Address?>
   <?US_Address_Field1?>
   <?US_Address_Field2?>
   <?US_Address_Field3?>
<?end template?>

<?template:IN_Address?>
   <?IN_Address_Field1?>
   <?IN_Address_Field2?>
   <?IN_Address_Field3?>
<?end template?>
該当するアドレス書式のサブ・テンプレートをコールするには:
  1. カタログ内の次の場所にサブ・テンプレートを作成します。

    Customers/Invoice Reports

    RTFファイルをアップロードし、サブ・テンプレートをAddressesという名前で保存します。

  2. メイン・テンプレートで、サブ・テンプレートをインポートする次の文を入力します。
    <?import:xdoxsl:///Customers/Invoice Reports/Addresses.xsb?>
    
  3. 住所を表示する位置で次のように入力します。
    <?if:COUNTRY_CODE='USA'?>
            <?call:US_Address?>    
         <?end if?>   
         <?if:COUNTRY_CODE='IN'?>         
            <?call:IN_Address?>          
         <?end if?>    
    

レポートを実行すると、アドレスの書式がデータ内のCOUNTRY_CODEの値に応じて適切に適用されます。

パラメータ値に基づいた条件付のレイアウト表示

この例では、ユーザーのパラメータ値を基に、または値のリストからの選択を基に異なるレイアウトを表示する方法について示します。パラメータはRTFテンプレートに渡すことができ、値に基づいてサブ・テンプレート・ファイル内の異なる<?template?>をコールするために使用できます。

サブ・テンプレート・ファイルのimport文は条件付にできません。

レポート・データ・モデルで、DeptNameという名前のパラメータを定義しているとします。このパラメータをMenu型として設定し、これに値リストを関連付けることで、ユーザーがレポート・ビューアでレポートを表示するとき(またはレポートをスケジュールするとき)、リストから選択可能になります。

RTFメイン・レイアウト・テンプレートで次のコマンドを入力し、ユーザーが選択した値を取得するようにします。

<?param@begin:DeptName?>

このユーザーの選択を基にレイアウトを表示する場合、IFまたはCHOOSE文を使用し、パラメータ値を評価して、関連するサブ・テンプレートのコールができます。

CHOOSE文は、多数の条件テストがあり、残りの値に対してデフォルト処理が予期される場合に使用します。たとえば、経理、営業およびマーケティング部門のそれぞれで異なるレイアウトが必要だとします。これ以外のすべての部門はデフォルトのレイアウトを使用できます。

レイアウトを表示するには:
  1. RTFファイルを作成し、次のテンプレート宣言を含めます。
    <?template:tAccounting?>
       -  -  -  Specific Accounting Layout here  -  -  - 
    <?end template?>
    
    <?template:tSales?>
       -  -  -  Specific Sales Layout here  -  - -
    <?end template?> 
    
    <?template:tMark?>
       -  -  -  Specific Marketing Layout here - -
    <?end template?> 
    
    <?template:tDefault?>
       -  -  -  Default Layout here  -  - -
    <?end template?>
    
  2. カタログ内の次の場所にサブ・テンプレートを作成します。

    Shared Folders/Executive/Department Expenses

    RTFファイルをアップロードし、サブ・テンプレートをDeptSubtempsという名前で保存します。

  3. メインRTFテンプレートに、次のコマンドをインクルードします。
<?import:xdoxsl:///Executive/Department Expenses/DeptSubtemps.xsb?loc=en-US?>

<?param@begin:DeptName?>

<?choose:?>
   <?when:$DeptName='Accounting'?>
      <?call:tAccounting?>
   <?end when?>
   <?when:$DeptName='Sales'?>
      <?call:tSales?>
   <?end when?>
   <?when:$DeptName='Marketing'?>
      <?call:tMark?>
   <?end when?>
   <?otherwise:$>
      <?call:tDefault?>
   <?end otherwise?>
<?end choose:?>

ユーザーがレポートを実行するとき、DeptNameの値を基に、適用されるレイアウトが決定されます。RTFテンプレートのCHOOSE文の詳細は、Choose文の挿入を参照してください。

単純な計算または繰返し式の処理

単純な計算も、RTFサブ・テンプレートを使用して処理できます。複雑な計算式は、XSLサブ・テンプレートで処理する必要があります。

この例では、利子を計算する計算式を含んだサブ・テンプレートの設定方法を示します。

このサブ・テンプレートは、レポート内のデータに対して金利計算を実行して、結果をメイン・テンプレートに返します。この機能をコールする複数のレポートでは、計算式のコンポーネントのタグ名が異なる可能性がありますが、このサブ・テンプレートはそのような状況にも対応します。

次のXMLデータがあるとします。

<LOAN_DATA>
   <LOAN_AMOUNT>6000000</LOAN_AMOUNT>
   <INTEREST_RATE>.053</INTEREST_RATE>
   <NO_OF_YEARS>30</NO_OF_YEARS>
</LOAN_DATA>
金利を計算する計算式が含まれたサブ・テンプレートを設定するには:
  1. RTFファイルで、calcInterestというテンプレート宣言を作成します。このサブ・テンプレートで、計算式の各要素(元金、利率および年数)のパラメータを定義します。各パラメータにはデフォルト値を設定する必要があります。
    <?template:calcInterest?>
       <?param:principal;0?>
       <?param:intRate;0?>
       <?param:years;0?>
       <?number($principal) * number($intRate) * number($years)?>
    <?end template?>
    
  2. カタログ内の次の場所にサブ・テンプレートを作成します。

    Shared Folders/Subtemplates

    RTFファイルをアップロードし、サブ・テンプレートをcalculationsという名前で保存します。

  3. メイン・テンプレートで、サブ・テンプレートをインポートする次の文を入力します。
    <?import:xdoxsl:///Subtemplates/calculations.xsb?>
    
  4. 計算結果を表示する場所で、Publisherフィールドに次のように入力します。
    <?call@inlines:calcInterest?>
       <?with-param:principal;./LOAN_AMOUNT?>
       <?with-param:intRate;./INTEREST_RATE?>
       <?with-param:years;./NO_OF_YEARS?>
    <?end call?>      
    

    ここでは@inlinesコマンドを使用しています。これはオプションです。@inlinesコマンドは、テンプレート内のサブ・テンプレートをコールした位置でインラインでレンダリングを強制します。この機能は、たとえば、コールの前にあるテキストと同じ行に結果を表示する場合に使用します。