拡張「パブリッシャ」関数の使用
「パブリッシャ」には、追加のレポート機能を実現するための一連の関数が用意されています。
これらの関数は、XDO_METADATAシートのデータ制約リージョンで定義します。
この関数は、XDO_METADATAシートの列A、BおよびCを次のように使用します:
列Aを使用して、関数を宣言したり、計算またはXSL評価の結果をマップするオブジェクトの定義済名を指定します。
列Bを使用して、XDO関数のデータ制約を制御する方法を説明する特別なXDO-XSL構文、またはXDO_名前付き要素に適用する特別な制約を説明するXSL構文を入力します。
列Cを使用して、いくつかの関数の追加の手順を指定します。
関数については、次のセクションで説明します:
レポート機能
次に示すコマンド、および「パブリッシャ」構文とXSLの組合せを使用して、テンプレートに関数を追加できます。
次の表に、コマンドのサマリー・リストを示します。 使用方法の詳細は、対応する項を参照してください。
| 関数 | コマンド | 
|---|---|
| XDO_SHEET_? with XDO_SHEET_NAME_? | |
| XDO_PARAM_?n? | |
| XDO_LINK_? 「リンク・オブジェクト名」 ? | |
| XDO_SUBTEMPLATE_?n? | |
| XDO_EXT_?n? | 
レポートから複数のシートへのデータの分割
レポートのデータを複数のシートに分割するロジックを定義できます。
イメージを複数のシートにまたがることはできません。 テンプレート・シートにイメージが含まれている場合、データが複数のシートに分割されると、イメージは最初のシートにのみ表示されます。 次の一連のコマンドを使用して、レポート・データを複数のシートに分割します:
- データを新しいシートに分割するロジックを定義するXDO_SHEET_?コマンド。
- 各シートの命名規則を指定するXDO_SHEET_NAME_?コマンド。
XDO_METADATAシートでは、複数のテンプレートを指定して複数のシートを作成できます。 テンプレートごとに、XDO_SHEET_?コマンドとXDO_SHEET_NAME_?コマンドのペアを定義します。 XDO_SHEET_?コマンドと XDO_SHEET_NAME_?コマンドのペアごとに同じ元のテンプレート・シート名を定義してください。 
                        
次の表では、列エントリについて説明します。
| 列Aエントリ | 列Bエントリ | 列Cエントリ | 
|---|---|---|
| 
 | 
 例: 
 | 
 例: 
 | 
| 
 | 
 例: 
 | 
 例: 
 | 
- 列Aに、XDO_SHEET_?およびXDO_SHEET_NAME_?コマンドを入力します。
- 列B:
                              - XDO_SHEET_?コマンドは、XMLデータの既存の上位レベル・ノードを参照する必要があります。 この例では、- <?.//DEPT?>によって、データ内の- <DEPT>が発生するたびに新しいシートが作成されます。 データがフラットの場合、最初にデータを前処理して目的の階層を作成しないかぎり、このコマンドは使用できません。 データを前処理するには、XSLTファイルで変換を定義し、XDO_METADATAシートのヘッダー・セクションの「XSLTファイルの前処理」フィールドにこのファイルを指定します。
- XDO_SHEET_NAME_?コマンドは、シートに適用する名前を定義する必要があります。 新しいシート名を導出するためのXSL式を入力します。 式は、XMLデータ内の要素または属性の値を参照するか、これらの要素で文字列操作を使用して最終シート名を定義できます。 次の例では、「-」と連結した- DEPARTMENT_NAMEの値とDEPTグループの従業員数を使用して、各シートに名前を付けます。- <?concat(.//DEPARTMENT_NAME,'-',count(.//EMP_NAME))?>
 
- 列Cで、元のテンプレート・シートの名前を指定します。 たとえば、最初の3つのワークシートにサマリー・データを含むレポートがあり、バースト・データがSheet2およびSheet3にある場合、XDO_SHEET_?およびXDO_SHEET_NAME_?コマンドの最初のペアの元のテンプレート・シート名として<?Sheet2?>を指定し、コマンドの2番目のペアに<?Sheet3?>を指定します。 XDO_SHEET_?またはXDO_SHEET_NAME_?コマンドにテンプレート・シート名を指定しない場合、「パブリッシャ」は定義ペアのアクションを実行しません。
例: 複数のシートへのデータの分割
この例では、従業員データを使用しています:
- 各部門の従業員が別々のシートにリストされます。
                              - 部門ごとに新しいワークシートを作成します。
- 各ワークシートに部門の名前を付けます。 例: Marketing。
 
- 最初の100人の従業員が、最初の100人の従業員の部門の個別のシートに出力されます。
                              - 最初の100人の従業員が属する部門ごとに新しいワークシートを作成します。
- 各ワークシートに部門の名前を、その部門の従業員IDが100未満の従業員の数とともに指定します。 たとえば、人事管理部門の3人の従業員の従業員IDが100未満の場合、Human Resources-3となります。
 
- 次の図に示すように、従業員データの各セルに定義した名前を入力し、繰返し従業員データのグループを作成します。 データは部門別に分割されるため、部門を囲むグループを作成しないでください。
- XDO_METADATAシートの「データ制約」セクションに値を入力します。
エントリを次の図に示します。
次の図は、生成されたレポートを示しています。 各部門のデータは、指定された規則に従って命名された独自のシートに表示されます。
パラメータの宣言および渡し
パラメータを定義するには、XDO_PARAM_? n ?関数を使用してパラメータを宣言し、$parameter_name構文を使用してパラメータに値を渡します。 パラメータはデータ・モデルで定義する必要があります。
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_PARAM_?n? ここで、nはパラメータの一意の識別子です | <?param@begin:parameter_name;parameter_value?>ここで、parameter_nameはデータ・モデルのパラメータの名前、parameter_valueはオプションのデフォルト値です。 たとえば: 
 | 
パラメータの値をセルで直接使用するには、次の表に示すように、XDO_定義名の定義でパラメータ$parameter_nameを参照してください。
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_PARAM_?parameter_name? たとえば: XDO_PARAM_?Country? | <?$parameter_name?>たとえば: 
 | 
$parameter_nameを使用して、XDO_METADATAシートの他のロジックまたは計算でパラメータを参照することもできます。
例14-1 例: パラメータの定義および渡し
Countryという名前のパラメータを宣言して参照するには:
- 
                              テンプレート・シートで、定義した名前でセルにマークを付けます。 次の図で、セルは定義された名前XDO_でマークされていますか。国? 
- 
                              次の図に示すように、非表示のシートで、そのセルにパラメータ値を割り当てます: 
リンクの定義
次の表に示すように、XDO_LINK_?コマンドを使用して、データ・セルのハイパーリンクを定義します。
例: リンクの定義
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_LINK_? 「セル・オブジェクト名」 ? たとえば: XDO_LINK_?INVOICE_NO? | <xsl statement to build the dynamic URL>たとえば: 
 | 
会社が顧客請求書を生成するとします。 請求書は、Webサーバーからアクセス可能な中央のロケーションに格納され、請求書番号(INVOICE_NO)で識別できます。
各請求書への動的リンクを作成するレポートを生成するには:
- 
                              テンプレート・シートで、INVOICE_NOを表示するセルにXDO定義の名前を割り当てます : XDO_?次の図に示すように、INVOICE_NO?: 
- 
                              XDO_METADATAシートに、次のように適切な値を入力します: - 列Aエントリ: XDO_LINK_?INVOICE_NO?
- 列Bエントリ : <xsl:value-of select="concat('https://server.company.com/documents/invoice_print.show?c_rptno=',./INVOICE_NO)"/>
 Excelのエントリを次の図に示します: 
- 列Aエントリ: 
次の図に示すように、レポート出力が表示されます。 XDO_METADATAシートに定義されているロジックが適用され、INVOICE_NOエントリごとにハイパーリンクが作成されます。
サブテンプレートのインポートおよびコール
これらのコマンドを使用して、任意のXDO_コマンドでコールおよび参照できるXSLサブテンプレートを宣言します。
Template Builder for Excelでは、サブテンプレートをインポートするテンプレートのプレビューはサポートされていません。 サブテンプレートをインポートするには、次の表に示すコマンドを入力します:
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_SUBTEMPLATE_?n?で、nは一意の識別子です。 次に例を示します: XDO_SUBTEMPLATE_?1? | 
 | 
サブテンプレートをコールするには、列Aで結果を返すセル名を宣言し、実行する他のXSL処理を含むコール・テンプレート構文を入力します。 次の表に、コマンドを示します:
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_? 「セル・オブジェクト名」 ? | 
 | 
XSLサブテンプレートおよびカタログでのサブテンプレート・オブジェクトの作成の詳細は、「XSLサブテンプレートの設計」を参照してください。
例: サブテンプレートのインポートと呼出し
次のサブテンプレートがPaymentsSummary-SubTemplate.xsbとしてカタログにアップロードされているとします。 このサブテンプレートは、pPayTypeという名前のパラメータの値を評価し、値に基づいて、支払タイプを示す文字列を返します:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    </xsl:template>
      <xsl:template name="BRM_PAY_TYPES">
         <xsl:param name="pPayType" select="string('ALL')"/>
         <xsl:choose>
            <xsl:when test="$pPayType = '0'">UNDEFINED</xsl:when>
            <xsl:when test="$pPayType=string('10000')">PREPAID</xsl:when>
            <xsl:when test="$pPayType=string('10001')">INVOICE</xsl:when>
            <xsl:when test="$pPayType=string('10003')">CREDIT CARD</xsl:when>
            <xsl:when test="$pPayType=string('10005')">DIRECT DEBIT</xsl:when>
            <xsl:when test="$pPayType=string('10011')">CASH</xsl:when>
            <xsl:when test="$pPayType=string('10012')">CHECK</xsl:when>
            <xsl:when test="$pPayType=string('ALL')">ALL</xsl:when>
            </xsl:choose>
        </xsl:template>
</xsl:stylesheet>
Excelテンプレートで、XDO定義名XDO_のフィールドを定義しましたか。TYPE?:次の図に示すように、サブテンプレートで実行されるコードから返された文字列に基づいて移入されます:
次の表に示すデータ制約リージョンのコマンドを入力します。
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_SUBTEMPLATE_?1? | 
 | 
| XDO_?TYPE? | 
 | 
XDO_SUBTEMPLATE_?1?関数は、カタログからサブテンプレートをインポートします。
XDO_?TYPE?セル・エントリは、列Bに入力されたサブテンプレート処理の結果をマップします。
Java拡張ライブラリの参照
Java拡張ライブラリへの参照をテンプレートに含めると、このライブラリからメソッドをコールしてテンプレートで処理を実行できます。
次の表に示すコマンドを使用して、Java拡張ライブラリを参照します。
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_EXT_?n?、ここでnは一意の識別子です。 例: XDO_EXT?1? | <?namespace:xmlns:bipext=" 「拡張ライブラリ」 "?>の例 : <?namespace:xmlns:bipext="http://www.example.com/XSL/Transform/java/ example.com.xmlpublisher.reports.BIPExtension"?> | 
単一のテンプレート・ファイルに複数の拡張ライブラリを定義できます。
例: Java拡張ライブラリのコール
拡張ライブラリに、テンプレートでコールする次の2つのメソッドが含まれているとします:
- 
                              bipext:infTimeToStr() 
- 
                              bipext:infStrToTimet() 
前述のようにライブラリを宣言した後、列AにXDO定義の名前を入力し、列Bで関数をコールして、メソッドを適用するセルを指定します。 次の表に、コマンドの例を示します。
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_?PARAM_START_DATE? | <xsl:value-of select="bipext:infTimeToStr(bipext:infStrToTimet((.//PARAM_START_DATE)[1],2),3)" | 
次の図に、Java拡張ライブラリを宣言およびコールするXDO_METADATAシートのエントリを示します。
特定のデータ属性値に依存する書式設定関数
この表のコマンドでは、特定の書式設定属性がXMLデータ・ファイルに存在している必要があります。
次の表に、コマンドのサマリー・リストを示します。 使用方法の詳細は、対応する項を参照してください。
| 関数 | コマンド | 
|---|---|
| 
 | |
| 
 | 
罫線および下線のスタイルの定義
Excelの書式設定を使用してテンプレートに一貫性のあるスタイルを定義できますが、XDO_STYLEコマンドを使用すると、XMLデータに基づいてデータ・セルに異なるスタイルを動的に定義できます。
XDO_STYLEコマンドでは、スタイルを適用するセル、スタイルを適用するタイミングを決定するロジックおよび適用するスタイル・タイプを指定します。 スタイル値はXMLデータに存在する必要があります。 次の表に例を示します。
| 列Aエントリ | 列Bエントリ | 列Cエントリ | 
|---|---|---|
| XDO_STYLE_n_?cell_object_name? たとえば: XDO_STYLE_1_?TOTAL_SALARY? | <サポートされている値を返すxsl評価> たとえば: 
 | スタイル・タイプ たとえば: BottomBorderStyle | 
「パブリッシャ」は、次の表に示すように、通常のExcelスタイル・タイプおよび値をサポートしています:
| スタイル・タイプ | サポートされる値(列Bの評価で返される必要があります) | サポートされているタイプ(列Cに入力) | 
|---|---|---|
| Normal | BORDER_NONE BORDER_THIN BORDER_MEDIUM BORDER_DASHED BORDER_DOTTED BORDER_THICK BORDER_DOUBLE BORDER_HAIR BORDER_MEDIUM_DASHED BORDER_DASH_DOT BORDER_MEDIUM_DASH_DOT BORDER_DASH_DOT_DOT BORDER_MEDIUM_DASH_DOT_DOT BORDER_SLANTED_DASH_DOT | BottomBorderStyle TopBorderStyle LeftBorderStyle RightBorderStyle DiagonalLineStyle | 
次の表に示すタイプのいずれかを使用して色を設定することもできます:
| スタイル・タイプ | サポートされる値(列Bの評価で返される必要があります) | サポートされているタイプ(列Cに入力) | 
|---|---|---|
| Normal | Color Styleを設定する場合は、次のようにRRBBGG 16進数形式で値を指定します: borderColor="0000FF" | BottomBorderColor TopBorderColor LeftBorderColor RightBorderColor DiagonalLineColor | 
「パブリッシャ」では、次の表に示す値を含む下線タイプもサポートされています:
| スタイル・タイプ | サポートされる値(列Bの評価で返される必要があります) | サポートされているタイプ(列Cに入力) | 
|---|---|---|
| 下線 | UNDERLINE_NONE UNDERLINE_SINGLE UNDERLINE_DOUBLE UNDERLINE_SINGLE_ACCOUNTING UNDERLINE_DOUBLE_ACCOUNTING | UnderlineStyle | 
1つのセルに対して複数の下線スタイルを定義できます。
例: スタイルの定義
テンプレートにスタイルを適用するには、スタイル値がデータに存在する必要があります。 この例では、Excelテンプレートに表示されるDEPT_TOTAL_SALARYフィールドにボーダー・スタイルと下線スタイルが適用されます。
この例では、次のデータが使用されます。 データのDEPT_TOTAL_SALARY要素には、次の属性が定義されています:
- 
                              borderStyle 
- 
                              underLineStyle 
- 
                              borderColor 
これらの各属性の値は、テンプレートで定義されたロジックに基づいて定義済のスタイルを適用するために使用されます。
<?xml version="1.0" encoding="UTF-8"?>
<EMPLOYEES>
  <G_DEPT>
    <DEPARTMENT_ID>10</DEPARTMENT_ID>
    <DEPARTMENT_NAME>Administration</DEPARTMENT_NAME>
    <LIST_G_EMP>
      <G_EMP>
        <EMPLOYEE_ID>200</EMPLOYEE_ID>
        <EMP_NAME>Jennifer Whalen</EMP_NAME>
        <EMAIL>JWHALEN</EMAIL>
        <PHONE_NUMBER>515.123.4444</PHONE_NUMBER>
        <HIRE_DATE>1987-09-17T00:00:00.000-06:00</HIRE_DATE>
        <SALARY>4400</SALARY>
      </G_EMP>
    </LIST_G_EMP>
    <DEPT_TOTAL_SALARY borderStyle="BORDER_DOUBLE" underLineStyle="UNDERLINE_DOUBLE_ACCOUNTING" borderColor="0000FF">4400</DEPT_TOTAL_SALARY>
  </G_DEPT>
  <G_DEPT>
    <DEPARTMENT_ID>20</DEPARTMENT_ID>
    <DEPARTMENT_NAME>Marketing</DEPARTMENT_NAME>
    <LIST_G_EMP>
      <G_EMP>
        <EMPLOYEE_ID>201</EMPLOYEE_ID>
        <EMP_NAME>Michael Hartstein</EMP_NAME>
        <EMAIL>MHARTSTE</EMAIL>
        <PHONE_NUMBER>515.123.5555</PHONE_NUMBER>
        <HIRE_DATE>1996-02-17T00:00:00.000-07:00</HIRE_DATE>
        <SALARY>13000</SALARY>
      </G_EMP>
      <G_EMP>
        <EMPLOYEE_ID>202</EMPLOYEE_ID>
        <EMP_NAME>Pat Fay</EMP_NAME>
        <EMAIL>PFAY</EMAIL>
        <PHONE_NUMBER>603.123.6666</PHONE_NUMBER>
        <HIRE_DATE>1997-08-17T00:00:00.000-06:00</HIRE_DATE>
        <SALARY>6000</SALARY>
        </G_EMP>
      </LIST_G_EMP>
      <DEPT_TOTAL_SALARY borderStyle="BORDER_DOUBLE" underLineStyle="UNDERLINE_DOUBLE_ACCOUNTING" borderColor="0000FF">19000</DEPT_TOTAL_SALARY>
  </G_DEPT>
...
</EMPLOYEES>
スタイルを定義するには:
- 
                              Excelテンプレートで、次の図に示すように、データからDEPT_TOTAL_SALARYを表示するフィールドに定義名XDO_?DEPT_TOTAL_SALARY?を割当てます: 
- 
                              XDO_METADATAシートで、次のように入力します: - 
                                    上部の枠線スタイルを定義するには、次のエントリを使用します: - 列Aエントリ:XDO_STYLE_1_?DEPT_TOTAL_SALARY?
- 列Bエントリ : <xsl:value-of select=".//DEPT_TOTAL_SALARY/@borderStyle"/>
- 列Cエントリ: TopBorderStyle
 列Aのエントリは、このスタイル・コマンドをXDO_?DEPT_TOTAL_SALARY?という名前が割り当てられたセルにマップします。 列Bのエントリは、DEPT_TOTAL_SALARY要素の属性borderStyleからスタイル値を取得します。 サンプル・データから、borderStyleの値が"BORDER_DOUBLE"であることに注意してください。 列Cのエントリは、TopBorderStyleをセルに適用するように「パブリッシャ」に指示します。 
- 列Aエントリ:
- 
                                    上罫線の色を定義するには、次のエントリを使用します: - 列Aエントリ: XDO_STYLE_2_?DEPT_TOTAL_SALARY?
- 列Bエントリ: <?.//DEPT_TOTAL_SALARY/@borderColor?>
- 列Cエントリ: TopBorderColor
 列Aのエントリは、このスタイル・コマンドをXDO_?DEPT_TOTAL_SALARY?という名前が割り当てられたセルにマップします。 列Bのエントリは、DEPT_TOTAL_SALARY要素の属性borderColorからスタイル値を取得します。 サンプル・データから、borderColorの値が0000FF (青)であることに注意してください。 列Cのエントリは、TopBorderColorをセルに適用するように「パブリッシャ」に指示します。 
- 列Aエントリ: 
- 
                                    下線スタイルを定義するには、次のエントリを使用します: - 列Aエントリ: XDO_STYLE_3_?DEPT_TOTAL_SALARY?
- 列Bエントリ: <?.//DEPT_TOTAL_SALARY/@underLineStyle?>
- 列Cエントリ: UnderlineStyle
 列Aのエントリは、このスタイル・コマンドをXDO_?DEPT_TOTAL_SALARY?という名前が割り当てられたセルにマップします。 列Bのエントリは、DEPT_TOTAL_SALARY要素の属性underLineStyleからスタイル値を取得します。 サンプル・データから、underLineStyleの値がUNDERLINE_DOUBLE_ACCOUNTINGであることに注意してください。 列Cのエントリは、UnderLineStyleをセルに適用するように「パブリッシャ」に指示します。 
- 列Aエントリ: 
 
- 
                                    
次の図は、データ制約リージョンの3つのエントリを示しています:
レポートを実行すると、XDO_にstyleコマンドが適用されます。次の図に示すように、DEPT_TOTAL_SALARY?セル:
行をスキップ
列Bで定義された評価の結果で大/小文字を区別しない文字列"True"が返された場合に、XDO_SKIPROWコマンドを使用して、表のデータ行の表示を抑制します。
次の表に、エントリの例を示します。
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_SKIPROW_?cell_object_name? たとえば: XDO_SKIPROW_?EMPLOYEE_ID? | <文字列"True"を返すxsl評価/> たとえば: <xsl:if test="string-length(./EMPLOYEE_ID/@MANAGER) != 0"> <xsl:value-of select="./EMPLOYEE_ID/@MANAGER"/> </xsl:if> | 
例: データ要素属性に基づく行のスキップ
この例では、EMPLOYEE_ID要素に値がTrueのMANAGER属性が含まれている場合、Excelテンプレートは従業員データの行の表示を抑制します。
次に示すようにデータを想定します。 従業員Michael HartsteinのEMPLOYEE_ID要素には、値がTrueのMANAGER属性があることに注意してください。 このセットの他のEMPLOYEE_ID要素には属性がありません。
<?xml version="1.0" encoding="UTF-8"?>
<EMPLOYEES>
  <G_DEPT>
    <DEPARTMENT_ID>20</DEPARTMENT_ID>
    <DEPARTMENT_NAME>Marketing</DEPARTMENT_NAME>
    <LIST_G_EMP>
      <G_EMP>
        <EMPLOYEE_ID MANAGER="TRUE">201</EMPLOYEE_ID>
        <EMP_NAME>Michael Hartstein</EMP_NAME>
        <EMAIL>MHARTSTE</EMAIL>
        <PHONE_NUMBER>515.123.5555</PHONE_NUMBER>
        <HIRE_DATE>1996-02-17T00:00:00.000-07:00</HIRE_DATE>
        <SALARY>13000</SALARY>
       </G_EMP>
       <G_EMP>
        <EMPLOYEE_ID>202</EMPLOYEE_ID>
        <EMP_NAME>Pat Fay</EMP_NAME>
        <EMAIL>PFAY</EMAIL>
        <PHONE_NUMBER>603.123.6666</PHONE_NUMBER>
        <HIRE_DATE>1997-08-17T00:00:00.000-06:00</HIRE_DATE>
        <SALARY>6000</SALARY>
       </G_EMP>
       <G_EMP>
        <EMPLOYEE_ID>652</EMPLOYEE_ID>
        <EMP_NAME>William Morgan</EMP_NAME>
        <EMAIL>WMORGAN</EMAIL>
        <PHONE_NUMBER>219.123.7776</PHONE_NUMBER>
        <HIRE_DATE>1994-10-17T00:00:00.000-06:00</HIRE_DATE>
        <SALARY>8000</SALARY>
       </G_EMP>
      </LIST_G_EMP>
  </G_DEPT>
...
</EMPLOYEES>
MANAGER属性がTrueに設定されている場合に従業員データの行を表示しないようにするには、「データ制約」セクションの次の表に示すエントリを入力します。
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_SKIPROW_?EMPLOYEE_ID? | <xsl:if test="string-length(./EMPLOYEE_ID/@MANAGER) != 0"> <xsl:value-of select="./EMPLOYEE_ID/@MANAGER"/> </xsl:if> | 
このテンプレートからの出力を次の図に示します。 従業員Michael Hartsteinはレポートに含まれていないことに注意してください。
グループ関数
次の表に示す関数を使用して、テンプレートにデータのグループを作成します。
| 関数 | コマンド | 
|---|---|
| 
 | |
| 
 | 
グループ・データ
XDO_GROUPコマンドを使用して、レイアウトに特定のデータ・グループ化が必要な場合(たとえば、データを複数のシートに分割する場合)に、フラット・データをグループ化します。
                     
次の表に、エントリの例を示します:
| 列Aエントリ | 列Bエントリ | 列Cエントリ | 
|---|---|---|
| 
 たとえば: 
 | 
 たとえば: 
 | 
 たとえば: 
 | 
XDO_?cell object name?でマークされたグループ定義のセクションの先頭と末尾に配置するXSL文を定義します。 テンプレート内にネストされた複数のグループをマークし、それぞれに対応するグループに適切な定義を指定できます。 
                        
ネストされたグループで生成されたXDO定義名の処理
XDO_GROUP_?がネストされたグループで使用されている場合、XDOの範囲によって最終レポートの名前が定義されるのは無意味になります。 この場合、最終レポートの式で定義名を参照しないでください。 コマンドXDO_MARKUP_?を使用して、最終レポートでXDOマークアップ・アクティビティを無効にできます。 
                     
次の表に、XDO_METADATAシートでのXDO_MARKUP_?の使用方法を示します:
                     
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_MARKUP_? | "false"または"FALSE" (セルは、「Excel書式セル」ダイアログでテキストとして書式設定する必要があります。) | 
また、テンプレートに多数の定義済の名前が含まれており、複数のレベルのネストされたグループで使用されている場合、生成された定義済の名前の数をExcelで処理できない可能性があります。 この場合、XDO_MARKUP_?コマンドを使用して、生成されたレポートのマークアップを無効にします。 
                     
falseに設定すると、「パブリッシャ」はXDO_GROUP_?によって生成された結果に対して定義された名前を生成しません
データの再グループ化
XDO_REGROUPは、定義された名前を使用して構造を宣言することでデータを再グループ化します。
XDO_REGROUPロジックは、XDO_GROUPロジックの短縮形式であり、XDO_METADATAシートのXSLTcoding要件は必要ありません。 そのため、定義は、XDO_REGROUP_で直接定義する必要があります。名前を定義するか、XDO_METADATAシートで他の定義で定義する必要があります。 次の表にエントリを示します。
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_REGROUP_? | XDO_REGROUP_?UniqueGroupID?levelName?groupByName?sortByName?sortByName?sortByName? ここで 
 | 
次の3つの表は、ネストされた3つのグループを作成する方法の例を示しています。
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_REGROUP_? | XDO_REGROUP_?PAYMENTSUMMARY_Q1?PAYMENTSUMMARY_Q1?PAY_TYPE_NAME? | 
前の表に示した定義では、最も外側のグループはPAYMENTSUMMARY_Q1として定義され、PAY_TYPE_NAMEでグループ化されます
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_REGROUP_? | XDO_REGROUP_?COUNTRYGRP?XDO_CURRGRP_?COUNTRY? | 
前の表に示す定義によって、2つ目の外部グループが作成されます。 グループにはCOUNTRY_GRPという名前が割り当てられ、要素COUNTRYによってグループ化されます。
| 列Aエントリ | 列Bエントリ | 
|---|---|
| XDO_REGROUP_? | XDO_REGROUP_?STATEGRP?XDO_CURRGRP_?STATE? | 
前の表に示した定義により、内部グループSTATEGRPが作成され、sortByNameパラメータが含まれます: STATE.













