テンプレート機能

テンプレートには、書式設定とレイアウトを拡張するいくつかの機能があります。

テンプレート機能については、次のトピックを参照してください。

改ページの挿入

いくつかの方法で改ページを作成できます。

ノート:

改ページは、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固有の改ページを使用した場合に、グループの最後に余分なページが出力されません。

分析またはRTFテンプレートを使用して作成された直接FOファイルを使用して生成されたExcel出力では、ネストした表の行に改ページ(break-before="page")を含めることができます。これにより、セクションを含む分析レポートをExcelファイルにエクスポートできます。たとえば、セクションを含むダッシュボード・ページで、「改ページの挿入」セクション・プロパティを「最も外側の列」に設定した場合、ダッシュボード・ページをExcelファイルにエクスポートすると、Excelファイルでは各セクションの情報が別々のタブに格納されます。

初期ページ番号の挿入

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

ノート:

初期ページ番号はPDFおよびPPT出力ではサポートされていますが、HTMLまたはRTF出力ではサポートされていません。

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

<?initial-page-number:pagenumber?>

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

また、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?>

ノート:

まずテンプレートでパラメータを宣言する必要があります。パラメータの設定を参照してください。

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

Publisherでは、先頭ページ、奇数ページおよび偶数ページに対して異なるページ・レイアウトを指定するMicrosoft Wordの機能がサポートされています。

ノート:

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

これらのオプションを実装するには、単に「ファイル」メニューから「ページ設定」を選択して、「レイアウト」タブを選択します。Publisherでは、このダイアログの設定が認識されます。

ただし、Microsoft Wordでは最終ページのみの設定が提供されていません。この機能は、最終ページにのみ特定の場所にチェックや要約などのコンテンツを必要とするような小切手、請求書または発注書などの文書に便利です。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セクションが表示されます。次の図に、このテンプレートを示します。

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

この例では、次のようになります。

  • FおよびEのコンポーネントには、for-eachグループ文が含まれています。

  • グレー表示のレポート・フィールドは、XML要素のプレースホルダです。

  • 「Last Page Placeholder」フィールドには、次の構文が含まれます。

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

    これは、最終ページのレイアウトを宣言するためのものです。この文の上または下のコンテンツは、すべて最終ページにのみ表示されます。文の上のコンテンツはヘッダーとみなされ、文の下のコンテンツはフッターとみなされます。

最終ページに繰り越す必要があるヘッダーおよびフッターがレポートに含まれている場合は、最終ページ上で再挿入する必要があります。

最終ページのレイアウトを指定するために、文書にセクション区切り(タイプ: 「next page」)を挿入する必要があります。この例は、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出力ではサポートされていません。

たとえば、奇数/偶数フッター別指定機能を使用して、レポートのフッターに発注の条件を挿入し、最終ページにその条件が出力されるようにできます。

あるいは、製本要件を指定し、特定のレイアウトを指定せずにレポートを偶数ページで終了させることもできます。

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

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

    <?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'?>

ページおよびページ番号のスキップ

レポートの最初のページ、偶数ページまたは奇数ページのページおよびページ番号をスキップできます。

fo:page-sequenceオブジェクトはページ出力要素のコンテナとして使用されます。fo:page-sequencexdofo:blank-on属性には、次のいずれかの処理を指定できます。

  • 最初のページ、偶数ページまたは奇数ページを空白のままにします。

  • 最初のページ、偶数ページまたは奇数ページのページ番号をスキップします。

ページ・カウントをスキップするよう指定した場合、ページをレンダリングする際にページ番号カウンタが表示されません。内部ページ番号カウンタは設定に関係なく増加します。

属性名 デフォルト
xdofo:blank-on
  • none

  • even

  • odd

  • first

  • even-skip-page-count

  • odd-skip-page-count

  • first-skip-page-count

none

RTFテンプレートのタグは次のとおりです。

<?section:xdofo:blank-on;'even'?>
<?section:xdofo:blank-on;'odd'?>
<?section:xdofo:blank-on;'first'?>
<?section:xdofo:blank-on;'even-skip-page-count'?>
<?section:xdofo:blank-on;'odd-skip-page-count'?>
 <?section:xdofo:blank-on;'first-skip-page-count'?>

レポートの奇数ページを空白のままするには、テンプレートの最初のフォーム・フィールドに次のコードを指定します。

<?section:xdofo:blank-on;'odd'?>

オーダー・レポートの偶数ページのページ・カウントをスキップするには、テンプレートの最初のフォーム・フィールドに次のコードを指定します。

<?section:xdofo:blank-on;'even-skip-page-count'?>

ハイパーリンクの挿入

Publisherでは、様々なタイプのハイパーリンクがサポートされています。

ノート:

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

ハイパーリンクは、固定または動的なハイパーリンクが可能で、内部または外部のいずれかの宛先にリンクできます。図形に追加することもできます。

  • テキストまたは図形のいずれかに静的なハイパーリンクを挿入するには、使用しているワード・プロセッサのハイパーリンク挿入機能を使用します。

    テキストまたは図形に静的なハイパーリンクを挿入するには:

    1. テキストまたは図形を選択します。

    2. 右マウス・メニューを使用して「ハイパーリンク」を選択するか、「挿入」メニューから「ハイパーリンク」を選択します。

    3. 「Insert Hyperlink」ダイアログ・ボックスに提供されている方法のいずれかを使用してURLを入力します。

    次の図に、Microsoft Wordの「Insert Hyperlink」ダイアログ・ボックスを使用した静的なハイパーリンクの挿入を示します。

  • 入力XMLデータに、ハイパーリンクまたはその一部を含む要素が含まれている場合は、実行時に動的なハイパーリンクを作成できます。「ハイパーリンクの挿入」ダイアログ・ボックスのファイルまたはWebページ名フィールドに、次の構文を入力します。

    {URL_LINK}

    ここで、URL_LINKは受信したデータ要素名です。

    XMLデータ・ファイルから要素を追加して作成する固定のURLの場合、次の構文を入力します。

    http://www.example.com?product={PRODUCT_NAME}

    ここで、PRODUCT_NAMEは受信したデータ要素名です。

    いずれの場合も、実行時に動的なURLが作成されます。

    次の図に、Microsoft Wordの「Insert Hyperlink」ダイアログ・ボックスを使用した動的なハイパーリンクの挿入を示します。受信XMLファイルのデータ要素SUPPLIER_URLには、実行時にレポートに挿入されるハイパーリンクが含まれています。

  • 実行時にパラメータを渡して動的URLを作成することもできます。

    URLを作成するには、次のように{ }で囲んだパラメータおよび要素名を入力します。

    {$SERVER_URL}{$REPORT}/cstid={CUSTOMER_ID}
    

    ここで、SERVER_URLおよびREPORTは実行時にテンプレートに渡されるパラメータで($記号に注目してください)、CUSTOMER_IDはXMLデータ要素です。このリンクは、次のように表示されます。

    http://myserver.domain:8888/CustomerReport/cstid=1234

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

??target=_target_value

次に例を示します。

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

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

  • _top

  • _blank

  • _self

  • _parent

  • framename

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

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

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

内部リンクの挿入

内部リンクは、ドキュメント内のセクションをポイントします。

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

  1. カーソルをドキュメント内の任意の宛先に合せます。
  2. 「挿入」メニューで「ブックマーク」を選択します。
  3. 「ブックマーク」ダイアログにこのブックマークの名前を入力して「追加」を選択します。
  4. ブックマークの宛先としてリンクする文書内のテキストまたは図形を選択します。
  5. 右マウス・メニューを使用して「ハイパーリンク」を選択するか、「挿入」メニューから「ハイパーリンク」を選択します。
  6. 「ハイパーリンクの挿入」ダイアログで、「ブックマーク」を選択します。
  7. 作成済のブックマークをリストから選択します。

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

目次の組込み

Publisherでは、RTF仕様の目次生成機能がサポートされています。目次を挿入するには、使用しているワード・プロセッサの手順に従ってください。

ノート:

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

Publisherには、XMLデータからドキュメント内の動的な項目見出しを作成する機能もあります。作成したセクション・ヘッダーは目次に組み込むことができます。

動的なヘッダーを作成するには:
  1. ドキュメントの本文に見出しのプレースホルダを入力し、ワード・プロセッサのスタイル機能を使用して、そのプレースホルダを見出しとして書式設定します。この機能ではフォーム・フィールドを使用できません。

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

  2. 目次は、ワード・プロセッサの目次機能を使用して作成します。

実行時に、TOCプレースホルダと見出しテキストが置換されます。

PDF出力でのしおりの生成

RTFテンプレート内に目次を定義すると、目次の定義を使用して出力PDFのナビゲーション・ペインにある「Bookmarks」タブにリンクを生成できます。

しおりは、静的または動的のいずれの方法でも生成できます。

ノート:

RTFテンプレートでは、シングル・ポイントのしおりのみがサポートされています。これによってドキュメント内でのリンク(Goto)機能が実現します。ブックマークでは配列はサポートされていません。

  • 静的な目次のリンクを作成するには:

    次の構文を入力します。

    <?copy-to-bookmark:?>

    (目次の直前)

    <?end copy-to-bookmark:?>

    (目次の直後)

  • 動的な目次のリンクを作成するには:

    次の構文を入力します。

    <?convert-to-bookmark:?>

    (目次の直前)

    <?end convert-to-bookmark:?>

    (目次の直後)

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

<?collapse-bookmark:state;level?>

説明

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

  • hide: 目次のエントリを閉じます。

  • show: 目次のエントリを開きます。

および

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

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

  • 目次エントリの第1レベルと第2レベルを非表示にする静的な目次を作成するには、次を入力します。

    <?copy-to-bookmark:?> 
    <?collapse-bookmark:hide;2?>

    (目次の直前)

    <?end copy-to-bookmark:?>

    (目次の直後)

  • 開いた目次の第1レベルと第2レベルを示す動的な目次のリンクを作成するには、次を入力します。

    <?convert-to-bookmark:>
    <?collapse-bookmark:show;2?>

    (目次の直前)

    <?end 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文として処理されます。

ドロップダウン・リストの挿入

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 - アジア
    • 2 - 北米
    • 2 - 南米
    • 4 - ヨーロッパ
    • 5 - アフリカ
    • 6 - オーストラリア
  4. 次に、「ヘルプ・テキスト」テキスト・ボックスを使用して、ドロップダウン・フィールド値の索引を保持する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グループを終了します。

改ページ後の行ヘッダーの繰返し

グループ左構成内など、複数の行に及ぶ行ヘッダーがレポートに含まれる場合は、最初のセルのコンテンツを次のページで繰り返すように指定できます。

次の表の例を参照してください。

前述の例では、04-Dec-12グループ内でレポートを改ページする場合に、セルのコンテンツ04-Dec-12を次のページで繰り返すことが望ましいと考えられます。セルのコンテンツを繰り返すように指定するには、繰り返す表データ・セル内のフォーム・フィールドに次のコードを挿入します。

<?attribute@block:xdofo:rowspancell-repeat-nextpage;'true'?>

この機能は、table-cellに対するnumber-rows-spannedが1より大きい場合にのみ有効です。