テンプレート・レイアウトへのXMLデータの関連付け

この項の図に、Payables Invoice Registerのサンプル・レイアウトを示します。

次の点に注意してください。

  • テンプレートで定義されているデータ・フィールド。

    たとえば: Supplier、Invoice Number、Invoice Date

  • レポートの実行時に繰り返されるテンプレートの要素。

    たとえば、テンプレートのフィールドはすべて、レポート対象の仕入先ごとに繰り返されます。また、請求書表の各行は、レポート対象の請求ごとに繰り返されます。

XML入力ファイルの使用

次に、このPayables Invoice Registerレポート・テンプレートへの入力として使用されるXMLファイルを示します。

わかりやすい例を示すため、ここで示されるXML出力は実際のPayablesレポートの出力を変更しています。

<?xml version="1.0" encoding="WINDOWS-1252" ?>
 - <VENDOR_REPORT>
  - <LIST_G_VENDOR_NAME>
   - <G_VENDOR_NAME>
     <VENDOR_NAME>COMPANY A</VENDOR_NAME>
   -  <LIST_G_INVOICE_NUM>
    -  <G_INVOICE_NUM>
       <SET_OF_BOOKS_ID>124</SET_OF_BOOKS_ID>
       <GL_DATE>10-NOV-03</GL_DATE>
       <INV_TYPE>Standard</INV_TYPE>
       <INVOICE_NUM>031110</INVOICE_NUM>
       <INVOICE_DATE>10-NOV-03</INVOICE_DATE>
       <INVOICE_CURRENCY_CODE>EUR</INVOICE_CURRENCY_CODE>
       <ENT_AMT>122</ENT_AMT>
       <ACCTD_AMT>122</ACCTD_AMT>
       <VAT_CODE>VAT22%</VAT_CODE>
      </G_INVOICE_NUM>
     </LIST_G_INVOICE_NUM>
     <ENT_SUM_VENDOR>1000.00</ENT_SUM_VENDOR>
     <ACCTD_SUM_VENDOR>1000.00</ACCTD_SUM_VENDOR>  
    </G_VENDOR_NAME>
   </LIST_G_VENDOR_NAME>
  <ACCTD_SUM_REP>108763.68</ACCTD_SUM_REP>
  <ENT_SUM_REP>122039</ENT_SUM_REP>
 </VENDOR_REPORT> 

XMLファイルは複数の要素で構成されています。各タグ・セットが1つの要素です。たとえば、<INVOICE_DATE> </INVOICE_DATE>は請求日要素です。INVOICE_DATEはタグ名です。両方のタグに囲まれたデータが要素の値です。たとえば、INVOICE_DATEの値は10-NOV-03です。

XMLファイルの要素には階層構造があります。つまり、要素には親子関係があります。前述のXMLサンプルでは、ある要素のタグの間に別の要素が含まれています。別の要素を含んでいる要素が親で、含まれている要素が子になります。

すべてのXMLファイルには、他のすべての要素を含むルート要素が1つあります。この例では、VENDOR_REPORTがルート要素です。LIST_G_VENDOR_NAMEACCTD_SUM_REPおよびENT_SUM_REPの各要素はVENDOR_REPORTタグの間に含まれており、これらはVENDOR_REPORTの子要素になります。各子要素には、それ自体の子要素を指定できます。

プレースホルダとグループの識別

テンプレートの内容とレイアウトは、入力XMLファイルの内容と階層に対応している必要があります。テンプレート内のデータ・フィールドのそれぞれを、XMLファイル内の要素にマッピングする必要があります。テンプレート内の繰返し要素の各グループは、XMLファイル内の親子関係に対応している必要があります。

プレースホルダを定義してデータ・フィールドをマップします。グループを定義して繰返し要素を指定します。

ノート:

レポートが受信XMLデータの階層と異なるグループ化を必要とする場合、Publisherではデータの再グループ化がサポートされます。この機能の詳細は、XMLデータの再グループ化を参照してください。

プレースホルダの使用

レポート・テンプレートのデータ・フィールドのそれぞれが、XMLファイル内の要素に対応している必要があります。

テンプレート設計をマークアップするときは、XML要素のプレースホルダを定義します。このプレースホルダによって、テンプレートのレポート・フィールドがXML要素にマッピングされます。プレースホルダは、実行時に、XMLデータ・ファイル内にある同名の要素の値に置換されます。

たとえば、サンプルのレポート・レイアウトの「Supplier」フィールドは、XML要素のVENDOR_NAMEに対応しています。テンプレートをマークアップするときは、「Supplier」フィールドの位置にVENDOR_NAMEのプレースホルダを作成します。このプレースホルダは、実行時に、XMLファイル内の要素の値(サンプル・ファイルの値はCOMPANY A)に置換されます。

繰返し要素のグループの識別

サンプル・レポートには、仕入先とその請求書がリストされています。仕入先および請求書ごとに繰り返されるフィールドがあります。

つまり、レポートは、次の2グループの繰返しフィールドで構成されています。

  • 仕入先ごとに繰り返されるフィールド

  • 請求書ごとに繰り返されるフィールド

請求書グループは仕入先グループ内にネストされています。これは、次のように表すことができます。

仕入先

  • 仕入先名

  • 請求書

    • 請求書番号

    • 請求日

    • GL日

    • 通貨

    • 入力値

    • 報告値

  • 合計入力値

  • 合計報告値

この構造をXML入力ファイルの階層と比較します。前述の仕入先グループに属するフィールドは、要素G_VENDOR_NAMEの子になります。また、請求書グループに属するフィールドは、要素G_INVOICE_NUMの子になります。

グループを定義することによって、要素(親)の出現箇所ごとに、組み込まれたフィールド(子)を表示するようにPublisherに通知しています。実行時に、Publisherは要素の出現箇所をループ処理して、そのたびにフィールドを表示します。