テンプレート・レイアウトへの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_NAME
、ACCTD_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は要素の出現箇所をループ処理して、そのたびにフィールドを表示します。