プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド
12c (12.2.1.2)
E82763-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

22.2 XMLカスタマイズの作成

この項では、様々なレポート・カスタマイズの例を示します。ここでは次の例を取り上げます。

22.2.1 必須XMLタグ

すべてのXMLカスタマイズには、次のタグ・ペアが必要です。

<report></report>

たとえば、最小限のXMLカスタマイズは次のとおりです。

<report name="emp" DTDVersion="9.0.2.0.0">
</report>

このXMLカスタマイズには何も含まれていないので、レポートに適用しても効果は一切ありません。必要なタグがあるので解析はできますが、単に必須タグの例として示しています。

<report>タグは、レポート・カスタマイズの開始、レポート・カスタマイズ名およびこのXMLカスタマイズで使用するデータ型ディクショナリ(DTD)ファイルのバージョンを示します。</report>タグは、レポート・カスタマイズの終了を示します。

reportタグのname属性には、任意の名前を指定できます。たとえば、XMLファイルでカスタマイズするレポートの名前でも、それ以外の名前でもかまいません。

この例では、<report>タグが最小限で使用されています。<report>タグにも多数の属性がありますが、そのほとんどは暗黙的に示されており、指定する必要はありません。<report>に唯一必要な属性は、DTDVersionです。


注意:

XMLカスタマイズ・ファイルを適用して、既存のレポート・トリガーを変更するか新しいレポート・トリガーを作成するには、<report>タグの関連トリガー属性を指定する必要があります。

たとえば、Before Reportトリガーを変更または作成するには、beforeReportTrigger属性を使用します。

<report DTDVersion="9.0.2.0.0" beforeReportTrigger="BeforeReport">

XMLカスタマイズ・ファイルを適用してレポート・トリガーを変更または作成するときにこの属性を指定しないと、XMLカスタマイズ・ファイルがレポートに適用されたときに、レポート・トリガーのPL/SQLコードがローカル(依存しない)ファンクションとして扱われます。


完全なレポート定義には、データ・モデルとレイアウトの両方が必要です。したがって、次のタグとその内容を定義する必要があります。

  • <data></data>

  • <layout></layout>

dataタグには、属性がありません。layoutタグには、panelPrintOrderdirectionの2つの属性があり、その両方が必須です。これらの属性にデフォルト値(それぞれacrossDowndefault)を使用する場合は、それらを指定する必要はありません。data要素とlayout要素の例は、次の各項で示します。

22.2.2 スタイルの変更

この項の例では、XMLを使用して、レポート・フィールドF_Mincurrent_pricePersymbolおよびF_Maxcurrent_pricePersymbolに使用されている塗りつぶしカラーと線カラーを変更しています。

<report name="anyName" DTDVersion="9.0.2.0.0">
  <layout>
    <section name="main">
      <field name="F_Mincurrent_pricePersymbol"
             source="Mincurrent_pricePersymbol"
             lineColor="black"
             fillColor="r100g50b50"/>
      <field name="F_Maxcurrent_pricePersymbol"
             source="Maxcurrent_pricePersymbol"
             lineColor="black"
             fillColor="r100g50b50"/>
    </section>
  </layout>
</report>

この例では、sectionタグとfieldタグのname属性が、このXMLファイルでカスタマイズされるレポートのメイン・セクションに含まれるフィールドの名前と一致していることが前提となっています。この前提を踏まえて、fieldタグのその他の属性は、レポートのメイン・セクション内にある同じ名前のフィールドのみに適用されます。

22.2.3 書式マスクの変更

この項の例では、XMLを使用して、レポート・フィールドf_trade_dateに使用される書式マスクを変更しています。

<report name="anyName" DTDVersion="9.0.2.0.0">
  <layout>
    <section name="main">
      <field name="f_trade_date"
             source="trade_date"
             formatMask="MM/DD/RR"/>
    </section>
  </layout>
</report>

fieldタグが独自の終了書式(/>)を使用していることに注意してください。fieldタグが追加の子タグを使用する場合は、それを</field>で閉じます。

22.2.4 書式例外の追加

この項の例では、XMLを使用して、レポートのf_p_eおよびf_p_e1フィールドで10より大きな値をハイライトする書式例外を追加しています。

<report name="anyName" DTDVersion="9.0.2.0.0">
  <layout>
    <section name="main">
      <field name="f_p_e" source="p_e">
      <exception textColor="red">
       <condition source="p_e" operator="gt" operand1="10"/>
        </exception>
      </field>
      <field name="f_p_e1" source="p_e">
        <exception textColor="blue">
       <condition source="p_e" operator="gt" operand1="10"/>
        </exception>
      </field>
    </section>
  </layout>
</report>

この例では、operatorの値が、「より大きい」を示すgtに設定されています。operatorには、表22-1に示すものを指定できます。

表22-1 operator属性の値

使用方法

eq

等しい

lt

より小さい

lteq

以下

neq

等しくない

gt

より大きい

gteq

以上

btw

範囲内

notBtw

範囲外

like

類似

notLike

非類似

null

null

notNull

非NULL


前の例とは異なり、この例のfieldタグは、子タグを使用しているために、自己完結型の終了書式(/>)ではなく、</field>で閉じられていることにも注意してください。

22.2.5 プログラム・ユニットとハイパーリンクの追加

この項の例では、XMLを使用してレポートにプログラム・ユニットを追加しています。このプログラム・ユニットによって、従業員の社会保障番号(:SSN)から従業員の詳細にアクセスするハイパーリンクが追加されます。

<report name="anyName" DTDVersion="9.0.2.0.0">
  <layout>
    <section name="header"> 
      <field name="F_ssn1" source="ssn1">
        <advancedLayout formatTrigger="F_ssn1FormatTrigger"/> 
      </field>
    </section>
    <section name="main">
      <field name="F_ssn" source="ssn">
        <advancedLayout formatTrigger="F_ssnFormatTrigger"/>
      </field>
    </section>
  </layout>
  <programUnits> 
    <function name="F_ssn1FormatTrigger">
      <textSource>
        <![CDATA[
          function F_ssn1FormatTrigger return boolean is
          begin
            SRW.SET_HYPERLINK('#EMP_DETAILS_&<' || LTRIM(TO_CHAR(:SSN)) || '>');
            return (TRUE);
          end;
        ]]>
      </textSource>
    </function> 
    <function name="F_ssnFormatTrigger">
      <textSource> 
        <![CDATA[
          function F_ssnFormatTrigger return boolean is
          begin
            SRW.SET_LINKTAG('EMP_DETAILS_&<' || LTRIM(TO_CHAR(:SSN)) || '>');
            return (TRUE);
          end;
        ]]>
      </textSource>
    </function> 
  </programUnits>
</report>

CDATAタグは、PL/SQLをXMLと区別する目的で、PL/SQLの周辺で使用されています。XMLファイルにHTMLを埋め込むときも、同じタグ・シーケンスを使用します。この例では、advancedLayoutタグのformatTrigger属性の名前でファンクションが参照されています。

22.2.6 新規問合せの追加と新規ヘッダー・セクションでの結果の使用

この項の例では、XMLを使用して、レポートに新しい問合せを追加するとともに、その問合せの結果を利用する新しいヘッダー・セクションを追加しています。

<report name="ref" DTDVersion="9.0.2.0.0">
  <data>
    <dataSource name="Q_summary">
      <select>select portid ports, locname locations from portdesc</select>
    </dataSource>
  </data>
  <layout>
    <section name="header">
      <tabular name="M_summary" template="BLAFbeige.tdf">
      <labelAttribute font="Arial" fontSize="10" 
                        fontStyle="bold" textColor="white"/>
      <field name="F_ports" source="ports" label="Port IDs" 
               font="Arial" fontSize="10"/>
      <field name="F_locations" source="locations" label="Port Names" 
               font="Arial" fontSize="10"/>
      </tabular>
    </section>
  </layout>
</report>

この例のXMLは、データ・モデルと完全なレイアウトを備えているため、単独で実行できます。

列名が必ず一意となるように、SELECT文では別名を使用します。別名を使用しなかった場合は、レポート列のデフォルト名が使用されるため、予定外の名前になる可能性があります(たとえば、portidではなくportid1など)。fieldタグのsource属性を指定する場合は、ソース列(フィールド)の正しい名前を使用する必要があるので、この名前の指定は重要なポイントになります。

labelAttribute要素は、レイアウト内のフィールド・ラベルの書式を定義します。これはfieldタグの開始と終了タグの外側にあるため、表形式レイアウトのすべてのラベルに適用されます。この書式をいずれか1つのフィールドに関連付ける場合は、この要素を<field></field>タグ・ペアの内側に配置します。グローバルおよびローカルのlabelAttribute要素が両方とも(1つは<field></field>タグ・ペアの外側に、もう1つは内側に)存在する場合は、ローカルなラベル属性がグローバルな属性より優先されます。

22.2.7 URLのエンコード

スペースおよび制御文字が正しく渡されるようにするには、レポートの各フィールドに対してURLエンコードをオンまたはオフにする必要があります。URLエンコードのオンとオフの切替えは、レポートにRW:FIELDタグを使用します。

<rw:field
...
urlEncode=yes|no
...
/>

urlEncodeのデフォルト値は、noです。