...

Oracle BI Publisherのサブテンプレート

by user

on
Category: Documents
65

views

Report

Comments

Transcript

Oracle BI Publisherのサブテンプレート
Oracle BI Publisher のサブテンプレート
Oracle ホワイト・ペーパー
2009 年 8 月
Oracle BI Publisher のサブテンプレート
概要 ............................................................................................................................................. 3
はじめに ..................................................................................................................................... 3
RTF サブテンプレート ............................................................................................................. 3
RTF サブテンプレートを使用する場合 .......................................................................... 4
1. 共通レイアウトの再利用 .................................................................................. 4
2. パラメータ化されたレイアウトの処理 ........................................................... 4
3. 動的レイアウトおよび条件付きレイアウトの処理 ....................................... 5
4. 単純な計算および繰り返し使用される式の処理 ........................................... 6
XSL サブテンプレート ............................................................................................................ 7
XSL サブテンプレートを使用する場合 .......................................................................... 9
1. XHTML データ(HTML 形式の XML データ)の処理 ................................ 9
2. 一部のデータに対する動的な書式設定 (サブスクリプト、スーパー・ス
クリプト、化学式など) ........................................................................................ 11
3. 複雑なグラフ要件に対応したデータの変換 ................................................. 13
4. 複雑・冗長な計算および繰り返し使用される式の処理 ............................. 15
結論 ........................................................................................................................................... 16
Oracle BI Publisher のサブテンプレート
2
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
Oracle BI Publisher のサブテンプレート
概要
サブテンプレートを使用すると、
Crystal Reports のサブレポートを
置換できます。Oracle Business
Intelligence Publisher(Oracle BI
Publisher)のサブテンプレートは、
リンク付きサブレポートとリンク
を含まないサブレポートの両方を
置換します。Crystal Reports では
通常、関連付けられたデータやそう
でないデータを使用して、メイン・
レポートとサブレポートの間に関
係が構築されますが、レポート・パ
フォーマンスを向上するため、この
ような関係は Oracle BI Publisher
のデータ定義レイヤーで処理する
ことを推奨します。
Oracle BI Publisher では、RTF、PDF、XSL、Excel、Flex、eText などさまざまなレ
イアウトのテンプレート・タイプがサポートされています。もっともよく使用さ
れるレイアウト・テンプレート・タイプは RTF テンプレートであり、多様なドキュ
メント要件に対応しています。またサブテンプレートは RTF テンプレートが持つ
特徴の 1 つであり、コードの再利用、レイアウト設計の簡素化、保守の削減を促
します。サブテンプレートは Oracle E-Business Suite でサポートされており、
Template Manager からサブテンプレートをアップロードできます。
Enterprise Server
でもこの機能はサポートされていますが、サブテンプレートをアップロードおよ
び管理するためのユーザー・インタフェースは提供されていません。このホワイ
ト・ペーパーではサブテンプレート機能について紹介するとともに、Enterprise
Server での使用法を説明します。
はじめに
サブテンプレートは一連の書式設定機能を 1 つにまとめたものであり、一度定義す
れば 1 つまたは複数のレイアウト・テンプレート・ファイルで何度でも使用できま
す。この書式設定ファイルには、RTF ファイル形式または XSL ファイル形式を使
用できます。RTF サブテンプレートの場合、Microsoft Word のネイティブ機能を使
用できるため、設計が簡単になります。XSL サブテンプレートは、複雑なレイア
ウト要件やデータ要件に対応する場合に使用できます。
RTF サブテンプレート
RTF サブテンプレートは 1 つまたは複数の<?template?>定義で構成されています。
次に、RTF サブテンプレートを RTF テンプレートに適用するための手順を示しま
す。
1.
RTF サブテンプレートを定義します。
RTF ファイルを開きます。次の構文を使用してテンプレートを作成します。
<?template:templateName?>My Hello World !!<?end template?>
テンプレートを追加する必要がある場合、同様の方法で同じ RTF ファイルに
定義できます。サブテンプレート・ファイル内でのテンプレート定義の順序
は重要ではありません。
2.
RTF サブテンプレートをコールします。
サブテンプレート内のさまざまな<?template?>定義を、RTF テンプレートか
らコールできます。まず、サブテンプレート・ファイルを RTF テンプレート
にインポートします。ファイルのインポートには、http プロトコルまたは file
プロトコルを使用します。
Oracle BI Publisher のサブテンプレート
3
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
<?import:http://www.server.com/common/subTemplate.rtf?>
<?import:file://C:/Files/common/subTemplate.rtf?>
注:
1.
RTF テンプレート・ファイル内にサブテンプレートが定義されている場合、
Import 文は必要ありません。このような場合、サブテンプレート定義は RTF
テンプレート内でのみ有効であり、その他の RTF テンプレートで使用するこ
とはできません。
2.
E-Business Suite 環境では、xdo プロトコルを使用してサブテンプレートをイ
ンポートできます。
例
<?import:xdo://OKC.OKCTCINC.en.00/?>
次に、以下の構文を使用して RTF テンプレート内で<?template?>定義をコー
ルします。
<?call:templateName?>
テンプレートの位置は、call 文によって決まります。
同様に、その他の<?template?>定義をコールします。
3.
外部ファイルを参照するためのプロパティを設定します。
「Configure」リンクをクリックして、レポートの実行時設定へ移動します。
properties タブで、"Disable External References"に false を指定します。
RTF サブテンプレートを使用する場合
1.
共通レイアウトの再利用
複数のレポートで同じヘッダー・コンテンツとフッター・コンテンツが使用
されることはよくあります。このような場合、ヘッダーとフッターにサブテ
ンプレートを使用することを推奨します。そうすることで、将来的に変更が
発生した場合も、1 箇所で変更するだけですべてのレポートに反映できます。
共通レイアウトを再利用するには、RTF サブテンプレートの項に記載した手
順(1、2、3)を実行してください。
2.
パラメータ化されたレイアウトの処理
ユーザー・パラメータ値や選択した LOV に応じて異なるレイアウトを表示
する場合、RTF レイアウトにパラメータを渡して条件付きでレイアウトを表
示します。
まず、Report Editor で DeptName という名前のパラメータを定義します。こ
のパラメータを LOV と関連付ける場合、Report Editor ページで LOV を作成
します。次に、パラメータ定義でパラメータ・タイプに「Menu」を選択し
てから「LOV」を選択します。
Oracle BI Publisher のサブテンプレート
4
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
次の構文を使用して、RTF テンプレートにパラメータを定義します。
<?param@begin:DeptName?>
レポート・ビューア・ページで LOV から部門名が選択されると、RTF レイ
ヤーの DeptName パラメータにこの値が渡されます。ユーザーが選択した値
に基づいてレイアウトを表示するには、IF 文または CHOOSE 文を使用して
パラメータ値を評価し、関連するサブテンプレートをコールします。多数の
条件評価を実行し、残りの値に対してデフォルト・アクションを適用する場
合、CHOOSE 文を使用してください。たとえば、部門ごとに異なるサブテン
プレートが用意されており、サブテンプレートが関連付けられていない部門
名がユーザー・パラメータで指定された場合、デフォルトのサブテンプレー
トは otherwise セクションでコールします。CHOOSE 文について詳しくは、
『Oracle Business Intelligence Publisher レポート・デザイナーズ・ガイド』を
参照してください。
<?choose:?>
<?when:$DeptName=’Accounting’?><?call:tAcc?>
<?end when?>
<?when:$DeptName=’Sales’?><?call:tSales?>
<?end when?>
<?when:$DeptName=’Marketing’?><?call:tMark?>
<?end when?>
<?otherwise:?><?call:tDefault?>
<end otherwise>
<?end choose?>
ここで、サブテンプレートに含まれるすべてのテンプレート(tAcc、tSales、
tMark、tDefault)は、同じ RTF ファイルに定義されています。
<?template:tAcc?>
------ Accounting Layout -----<?end template?>
<?template:tSales?>
------ Sales Layout ----------<?end template?>
<?template:tMark?>
------ Marketing Layout ------<?end template?>
<?template:tDefault?>
------ Default Layout --------<?end template?>
3.
動的レイアウトおよび条件付きレイアウトの処理
サブテンプレートは、レポート・データに基づいた条件付きレイアウトに対
応しています。たとえば、国別コードに応じて住所のレイアウトを変更でき
ます。サブテンプレートは IF 文または CHOOSE 文に配置します。条件付き
表示は、パラメータ化されたレイアウトに示した例と同様の方法で処理でき
ます。また、関数にパラメータを渡す場合と同じように、<?template?>にパ
Oracle BI Publisher のサブテンプレート
5
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
ラメータを渡すこともできます。
この例では、<?template?>に渡されたパラメータに基づいて、住所レイアウ
トが条件付きで表示されます。ここで渡されるパラメータは、pCountry と
pAddress の 2 つです。
<?template:tAddress?><?param:pCountry;string(‘USA’)?>
<?param:pAddress;string(‘No Address’)?>
<?if:$pCountry=’USA’?>
USA Address layout:<?pAddress?>
<?end if?>
<?if:$pCountry=”IN”?>
IN Address layout:<?pAddress?>
<?end if?>
<?end template?>
その他のテンプレート・コールと同様に<?template?>をコールできますが、
パラメータを処理するには、<?call?>タグと<?end call?>タグでパラメータを
囲む必要があります。<?template?>のコンテンツをシームレスに RTF テンプ
レートに組み込むには、@inlines コンテキストが必要になります。
<?call@inlines:tAddress?>
<?with-param:pCountry;./COUNTRY_CODE?>
<?with-param:pAddress;./ADDRESS?>
<?end call?>
4.
単純な計算および繰り返し使用される式の処理
複数箇所で使用される冗長な計算がレポートに含まれる場合、このような計
算を関数と同様の方法で RTF サブテンプレートに定義できます。
<?template:calcInterest?>
<?param:principal;0?>
<?param:intRate;0?>
<?param:years;0?>
<?number($principal) * number($intRate) *
number($years)?>
<?end template?>
注:パラメータを定義する際、デフォルト値を必ず定義する必要があります。
このテンプレートは RTF テンプレートのどこからでもコールでき、for-each
ループ内でコールすることもできます。@inlines コンテキストを付加するこ
とに注意してください。
<?call@inlines:calcInterest?>
<?with-param:principal;./PRINCIPAL?>
<?with-param:intRate;./INTEREST_RATE?>
<?with-param:years;./NO_OF_YEARS?>
<?end call?>
Oracle BI Publisher のサブテンプレート
6
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
注:複雑または冗長な計算および繰り返し使用される式を処理する場合、RTF
サブテンプレートではなく XSL サブテンプレートの使用を推奨します。XSL
サブテンプレートはデバッグ・モードでコードを実行できるだけでなく、RTF
サブテンプレートよりも拡張性に優れています。
XSL サブテンプレート
XSL サブテンプレートを使用すると、複雑なデータ要件やレイアウト要件に対応
できます。レポート内のセクションでデータ構造を変換したり(例:グラフ)、ス
タイル・シートを作成して複雑なレイアウトを管理したりすることができます。
RTF テンプレートと似ていますが、XSL サブテンプレートも 1 つまたは複数の
<xsl:template>定義で構成されています。
1.
XSL サブテンプレートを定義します。
XSL サブテンプレートは 1 つまたは複数の XSL テンプレート定義で構成され
ています。これらのテンプレートには、特定のノードが一致したときに適用
するルールが含まれています。
<xsl:template
name="name"
match="pattern"
mode="mode"
priority="number">
<!-- Content:(<xsl:param>*,template) -->
</xsl:template>
xsl:template 要素は、必要な出力表示を生成するためにノー
xsl:template
ドに適用するテンプレートを定義します。
任意の要素。テンプレートの一致パターンを指定します。
match="pattern"
注:この属性を指定しない場合、name 属性を指定する必要
があります。
mode="mode"
任意の要素。テンプレートのモードを指定します。
name="name"
任意の要素。テンプレートの名前を指定します。
注:この属性を指定しない場合、match 属性を指定する必要
があります。
priority="number"
任意の要素。テンプレートの優先順位を示す数字を指定し
ます。1 つのノードに対して複数のテンプレートが適用され
る可能性は十分にあります。もっとも高い優先順位値を持
つテンプレートが常に選択されます。指定できる値の範囲
は-9.0 から 9.0 です。
Oracle BI Publisher のサブテンプレート
7
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
例
<xsl:template match="P|p">
<fo:block white-space-collapse="false"
padding-bottom="3pt" linefeed-treatment="preserve">
<xsl:apply-templates select="text()|*|@*"/>
</fo:block>
</xsl:template>
<xsl:template match="STRONG|B|b">
<fo:inline font-weight="bold">
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
2.
XSL サブテンプレートをインポートします。
ここでは、XSL のインポートを個別手順として挙げています。これは、XSL
サブテンプレートが常に外部ファイルであり、import 文が必須であるためで
す。
http プロトコルを使用した場合:
<?import:http://www.server.com/common/subTemplate.xsl?>
file プロトコルを使用した場合:
<?import:file:///C:/Files/common/subTemplate.xsl?>
3.
XSL サブテンプレートをコールします。
サブテンプレートのコールは、RTF テンプレートとは異なります。XSL サブ
テンプレート・ファイルに定義されたテンプレートは、データ要素に適用さ
れます。XSL サブテンプレートに定義されたテンプレートのコール方法は 2
種類あります。
a.
データ・コンテンツと一致条件のマッチング
<xsl:apply-templates select="data_element"/>
XSL サ ブ テ ン プ レ ー ト に 定 義 さ れ た す べ て の テ ン プ レ ー ト が 、
data_element というデータ要素に対して適用され、データ・コンテンツ
に基づいてテンプレート内の適切な機能が適用されます。詳しくは、次
の項の"XHTML データの処理"および"一部のデータに対する動的な書
式設定"に記載した例で説明します。
b.
名前を指定したテンプレートのコール
<xsl:call-template name="templateName"/>
これにより、名前を指定されたテンプレートがコールされ、関数コール
と同様にテンプレートが実行されます。また、RTF サブテンプレートと
同様に、テンプレート・コールにパラメータを渡すこともできます。
Oracle BI Publisher のサブテンプレート
8
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
<xsl:template name="templateName" match="/">
<xsl:param name="name" />
</xsl:template>
このテンプレートをコールするには、次の構文を使用します。
<xsl:call-template name="templateName">
<xsl:with-param name="name" select="expression">
<!-- Content:template -->
</xsl:with-param>
</xsl:call-template>
詳しくは、次の項の"複雑なグラフ要件に対応したデータの変換"におい
て説明します。
注:データのプレースホルダに対して、BI Publisher Properties
(または Text Form Field Options)ダイアログで RTF テンプレー
トの XSL コード構文を常に指定しておく必要があります。コード長が
BI Publisher Properties ダイアログのスペースを超える場合、複
数のデータ・プレースホルダにコードを分割できます。
4.
外部ファイルを参照するためのプロパティを設定します。
Enterprise Server で「Configure」リンクをクリックして、レポートの実行時設
定へ移動します。properties タブで、"Disable External References"に false を指
定します。こうすることで、レポートから外部ファイルが参照できます。
XSL サブテンプレートを使用する場合
1.
XHTML データ(HTML 形式の XML データ)の処理
HTML 形式で保存されたデータがあり、そのデータに適用された HTML 形式
を使用してレポートを作成する必要がある場合があります。次に、HTML 形
式を持つデータの例を示します。
<DATA>
<ROW>
<PROJECT_NAME>Project Management</PROJECT_NAME>
<PROJECT_SCOPE>
<p>Develop an application to produce
<i>executive-level summaries</i> and detailed
reports.The application will allow users to:</p>
project
<ol>
<li>Import existing MS Project files </li>
<li>Allow the user to map file-specific
resources to a central database entities (i.e., people) and
projects; </li>
<li>Provide structured output that can be
Oracle BI Publisher のサブテンプレート
9
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
viewed by staff and executives.</li>
</ol>
</PROJECT_SCOPE>
<PROJECT_DEFINITION><b>Information
about
current
projects is not readily available to executives.</b> Providing
this information creates a reporting burden for IT staff, who
may already maintain this information in Microsoft Project
files.
</PROJECT_DEFINITION>
</ROW>
</DATA>
注:HTML ファイルは XHTML 形式に従う必要があります。つまり、新しい
行には<BR>ではなく<BR></BR>を使用します。言い換えると、データに含ま
れるすべての HTML タグに開始タグと終了タグを付ける必要があります。
XSL サブテンプレートは、この要件に簡単に対応できるソリューションです。
次に、XSL 構文を使用して XML データの'STRONG'、'B'、または'b'を処理す
るテンプレートを示します。
このテンプレートは、
一致した HTML 文字列を、
相当する XSL-FO で置き換えます。
<xsl:template match="STRONG|B|b">
<fo:inline font-weight="bold">
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
同様に、それぞれの HTML 形式ごとに相当するテンプレートを作成する必要
があります。
次に、以下の構文を使用して、この XSL サブテンプレートを RTF テンプレー
トにインポートします。
<?import:file:///c:/Files/sub/htmlmarkup.xsl?>
または、HTTP プロトコルを使用してインポートします。
<?import:http://www.server.com/sub/htmlmarkup.xsl?>
これで RTF テンプレートからサブテンプレートを認識できるようになったた
め、
そこに含まれる関数をコールするだけで html を変換できます。
HTML マー
クアップを持つ可能性のある RTF テンプレート内の各フィールドに対して、
適用すべきマークアップ関数をコールします。次のように、簡単にコールで
きます。
<xsl:apply-templates select="PROJECT_SCOPE"/>
このコマンドにより、PROJECT_SCOPE 要素の値にすべてのテンプレートが
適用されます。次に、条件に一致するものを探してすべてのサブテンプレー
ト関数がチェックされます。XML データ内で HTML マークアップを持つ可
能性があるすべてのフィールドに対してこの処理を実行する必要があります。
Oracle BI Publisher のサブテンプレート
10
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
サンプル・ファイルと詳しい情報については、Tim Dexter による次のブログ
を参照してください。
http://blogs.oracle.com/xmlpublisher/2007/01/02/
2.
一部のデータに対する動的な書式設定
(サブスクリプト、スーパー・スクリプト、化学式など)
化学式や数学的演算を使用するドキュメントの場合、スーパー・スクリプト
やサブスクリプトの使用は非常に一般的な要件です。たとえば、次のサンプ
ル XML データでは、CO2 は CO2 と、H2O は H2O と表示するよう求められて
います。
<ROWSET>
<ROW>
<FORMULA>CO2</FORMULA>
</ROW>
<ROW>
<FORMULA>H2O</FORMULA>
</ROW>
</ROWSET>
これを実現するには、XSL サブテンプレートを使用します。XSL 構文を使用
すると、任意の名前のテンプレートを定義できます。たとえば、
"chemical_formatter"というテンプレートは、
FORMULA フィールドをパラメー
タとして受け取り、一度に 1 文字ずつこれを読み取ります。次にこの文字を 0
から 9 の数字と比較し、一致する場合は XSL-FO 構文を使用してこの文字に
サブスクリプトを適用します。
<fo:inline baseline-shift="sub" font-size="75%">
次に、XSL テンプレートのコード例を示します。
<xsl:template name="chemical_formatter">
<!-- accepts a parameter e.g. H2O -->
<xsl:param name="formula"/>
<!-- Takes the first character of the string and tests it to
see if it is a number between 0-9-->
<xsl:variable name="each_char"
select="substring($formula,1,1)"/>
<xsl:choose>
<xsl:when test="$each_char='1' or $each_char='2'
or $each_char='3' or $each_char='4' or $each_char='5'
or $each_char='6' or $each_char='7' or $each_char='8'
or $each_char='9' or $each_char='0'">
<!-- if it is numeric it sets the FO subscripting properties
-->
<fo:inline baseline-shift="sub" font-size="75%">
<xsl:value-of select="$each_char"/>
</fo:inline>
</xsl:when>
Oracle BI Publisher のサブテンプレート
11
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
<xsl:otherwise>
<!-- otherwise the charater is left as is -->
<fo:inline baseline-shift="normal">
<xsl:value-of select="$each_char"/>
</fo:inline>
</xsl:otherwise>
</xsl:choose>
<!-- otherwise the charater is left as is -->
<xsl:if test="substring-after($formula,$each_char) !=''">
<xsl:call-template name="chemical_formater">
<xsl:with-param name="formula">
<xsl:value-of
select="substring-after($formula,$each_char)"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
次に、以下の構文を使用して、この XSL テンプレートを RTF テンプレートに
インポートします。
<?import:file:///C:/Files/sub/Chemical.xsl?>
または、HTTP プロトコルを使用してインポートします。
<?import:http://www.server.com/sub/Chemical.xsl?>
最後に、このサブテンプレートを RTF テンプレートからコールする必要があ
ります。ここで、データを網羅するループを作成し、名前を指定して XSL テ
ンプレートをコールします。
<xsl:call-template name="chemical_formater">
<xsl:with-param name="formula"
select="FORMULA"/></xsl:call-template>
名前でコールされるテンプレートであるため、RTF テンプレートと同じよう
な方法で BI Publisher 構文を使用することもできます。
<?call@inlines:chemical_formater?><?withparam:formula;FORMULA?><?end call?>
この構文は、書式設定テンプレートをコールして FORMULA の値(H2O など)
を渡します。FORMULA の値がレンダリングされると、H2O のように期待し
たとおりに表示されます。
関連ファイルと詳しい情報については、Tim Dexter による次のブログを参照
してください。
http://blogs.oracle.com/xmlpublisher/2006/04/09/
Oracle BI Publisher のサブテンプレート
12
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
3.
複雑なグラフ要件に対応したデータの変換
Template Builder の Chart Wizard では設計できないような、複雑なグラフ要件
が提示される場合があります。たとえば、"上位 N 位の顧客による収益と残り
の収益"という円グラフを表示する必要があるとします。
次に示したデータはフラットな階層を持っており、"上位 N 社と残り"の順に
はなっていません。
<ROWSET>
<ROW>
<Products.Type>COATINGS</Products.Type>
<Products.Brand>Enterprise</Products.Brand>
<Markets.Region>CENTRAL REGION</Markets.Region>
<Markets.District>CHICAGO
DISTRICT</Markets.District>
<Periods.Year>2000</Periods.Year>
<Measures.Dollars>1555548.0</Measures.Dollars>
</ROW>
----------</ROWSET>
Oracle BI Publisher によってグラフにダミー画像が挿入されるため、グラフ用
のコードはすべて、グラフ・イメージ・オブジェクトの Format Image プロパ
ティの Alt-Text タブに表示されます。上位 5 社による収益と残りの顧客によ
る合計収益を示す円グラフを表示する要件があるとします。この場合、最初
の手順は上位 5 社のグラフを作成することです。
"その他"の合計については、
6 番目の要素として後から追加できます。手順は以下のとおりです。
1)まず、BI Bean データの行数をデータセット全体ではなく 5 に固定します。
chart:
<Graph depthAngle="50" seriesEffect="SE_AUTO_GRADIENT"
graphType="PIE">
<LegendArea visible="true" />
<LocalGridData colCount="1" rowCount="5">
2)グルーピングを使用した Market District から、地域ごとにソートした
measure.Dollars へとラベルの順序を変更します。
<RowLabels>
<xsl:for-each-group select=".//ROW"
group-by="Markets.District">
<xsl:sort
select="sum(current-group()/Measures.Dollars)"
data-type="number" order="descending"/>
3)最初の 5 要素を選択します。この時点でこれは必須ではありませんが、残
りの合計を追加するために必要となります。注:XSL では、","に対してエス
ケープ・シーケンスを使用する必要があります。
<xsl:if test="position()&lt;6">
<Label>
Oracle BI Publisher のサブテンプレート
13
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
<xsl:value-of
select="current-group()/Markets.District" />
</Label>
</xsl:if>
4)地域ごとのデータ要素を収益でソートします。
<xsl:for-each-group select=".//ROW"
group-by="Markets.District">
<xsl:sort
select="sum(current-group()/Measures.Dollars)"
data-type="number" order="descending"/>
5)
最初の 5 要素のみを選択します。
この時点でこれは必須ではありませんが、
次の手順で必要となります。
<xsl:if test="position()&lt;6">
<RowData>
<Cell>
<xsl:value-of
select="sum(current-group()/Measures.Dollars)" />
</Cell>
</RowData>
</xsl:if>
6)"その他"の収益を計算する XSL サブテンプレートを作成します。
<xsl:template name="others">
<xsl:variable name="list">
<xsl:for-each-group select="/ROWSET/ROW"
group-by="Markets.District">
<xsl:sort
select="sum(current-group()/Measures.Dollars)"
order="descending" data-type="number"/>
<v><xsl:value-of
select="sum(current-group()/Measures.Dollars)"/></v>
</xsl:for-each-group>
</xsl:variable>
<xsl:value-of
select="sum($list/v[position()&gt;5])"/>
</xsl:template>
このテンプレートは、すべての要素を"Market.District"ごとにグループ化し、
地域ごとの結果を"Measure.Dollars"の合計値でソートします。この結果は、変
数 v に保管されます。
次の式を使用して、順位が 5 を超える変数のすべての要素を合計します。
<xsl:value-of select="sum($list/v[position()&gt;5])"/>
エスケープ・シーケンス"&gt;"は、">"(より大)を意味します。
7)このサブテンプレートを RTF テンプレートにインポートします。テスト
の際はファイル・システムにあるファイルにアクセスしますが、本番実装で
Oracle BI Publisher のサブテンプレート
14
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
は Web サーバーにファイルを配置し、そこにアクセスします。
サブテンプレートをインポートするため、ドキュメント(グラフでなく)の
最初に次の文を追加します。
<?import:file:///C:/test/subtemplate.xsl"/>
http プロトコルを使用した場合:
<?import:http://www.server.com/test/subtemplate.xsl?>
8)"その他すべて"の要素を追加するために、手順 1 のコードを置き換えて、
行数を 5 から 6 に増やします。
<LocalGridData colCount="1" rowCount="6">
9)残りの地域の合計を示すラベルを追加します。
<RowLabels>
-----------<Label>ALL OTHER'S</Label>
</RowLabels>
10)最後に、6)で定義した関数"others"をコールして、残りすべての地域の合
計値を表示するデータ行を追加します。
<RowData>
<Cell>
<xsl:call-template name="others"/>
</Cell>
</RowData>
注:ここでは、名前で定義されたテンプレートであっても、BI Publisher 構文
の<?call?>を使用できません。これは、グラフ・コード全体で XSL 構文が使
用されているためです。
関連ファイルと詳しい情報については、Klaus Fabian による次のブログを参照
してください。
http://blogs.oracle.com/xmlpublisher/2009/06/
4.
複雑・冗長な計算および繰り返し使用される式の処理
複雑または冗長な計算や式に対しては、XSL サブテンプレートを使用して相
当する機能を作成することを推奨します。XSL サブテンプレートはデバッ
グ・モードで実行できるため、デザイナがトラブルシューティングを行って
問題を解決できます。また、XSL サブテンプレートは大規模かつ複雑なデー
タ計算に対応した拡張性を備えています。
Oracle BI Publisher のサブテンプレート
15
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
結論
サブテンプレートは、複雑なレイアウト要件やデータ要件に対応する優れた柔軟性
を備えています。サブレポートや関数、式などの概念を使用したレポート・ツール
からの移行において、さまざまなシナリオでサブテンプレートを使用できます。サ
ブテンプレートを使用すると、レポート・デザイナは複雑な計算を別のファイルに
分離できるため、レイアウト・デザインの簡素化と体系化を実現できます。さらに、
サブテンプレートでは XSL を使用することで、RTF テンプレートの機能を拡張で
きます。
Oracle BI Publisher のサブテンプレート
16
Oracle Corporation 発行「Sub Templates in Oracle BI Publisher」の翻訳版です。
Oracle BI Publisher のサブテンプレート
2009 年 8 月
著者:
共著者:
Oracle Corporation
World Headquarters
500 Oracle Parkway
Redwood Shores, CA 94065
U.S.A.
海外からのお問い合わせ窓口:
電話:+1.650.506.7000
ファクシミリ:+1.650.506.7200
www.oracle.com
Copyright © 2009, Oracle and/or its affiliates. All rights reserved.
本文書は情報提供のみを目的として提供されており、ここに記載される内容は
予告なく変更されることがあります。
本文書は一切間違いがないことを保証するものではなく、さらに、口述による
明示または法律による黙示を問わず、特定の目的に対する商品性もしくは適合
性についての黙示的な保証を含み、いかなるほかの保証や条件も提供するもの
ではありません。オラクル社は本文書に関するいかなる法的責任も明確に否認
し、本文書によって直接的または間接的に確立される契約義務はないものとし
ます。本文書はオラクル社の書面による許可を前もって得ることなく、いかな
る目的のためにも、電子または印刷を含むいかなる形式や手段によっても再作
成または送信することはできません。
Oracle、JD Edwards、PeopleSoft、および Siebel は、米国 Oracle Corporation
およびその子会社、関連会社の登録商標です。その他の名称はそれぞれの会社
の商標です。
Fly UP