このサイトをビューするために JavaScript を有効化してください。

Altova MapForce 2020 Enterprise Edition

MapForce では複数のファイルを 1 つのターゲットファイルへマージすることができます。

 

以下にあるサンプルでは、複数のソースコンポーネント(複数のスキーマ)から得られたデータをターゲットスキーマにマージします。同一のスキーマをベースにした複数のファイルをマージする方法については、 複数の入力または出力ファイルを動的に処理を参照ください。

 

...\MapForceExamples フォルダーにある CompletePO.mfd ファイルでは、3 つのファイルを1 つの XML ファイルへマージする方法を確認することができます

 

merge-xml1

 

複数のソースコンポーネントデータが 1 つのターゲット XML ファイル (CompletePO) へ組み合わされているという点に注目してください。

 

ShortPO は XML インスタンスファイルに関連付けられたスキーマで、顧客番号と品物に関するデータ(LineItem ならびに Amount)だけが収められています。(このファイルには顧客番号が 3 の顧客一人だけが収められています。)

Customers は XML インスタンスファイルに関連付けられたスキーマで、顧客番号と、Name や Address といった顧客に関する詳細情報が収められています。

Articles は XML インスタンスファイルが関連付けられたスキーマで、品物名やその数、単価といった品物に関する情報が収められています。

CompletePO は、 3 つの XML インスタンスファイルから得られたデータを収めるための、インスタンスファイルを持たないスキーマファイルとなります。このファイルの階層構造により、XML データのマージと出力を行うことが可能になります。

 

このスキーマファイルは XMLSpy のような XML エディターにより作成されており、 MapForce から生成されたものではありません(CompletePO.xml インスタンスファイルが存在する場合、スキーマファイルの生成を行うことも可能です)。

 

CompletePO の構造はソースとなる XML ファイルの構造を組み合わせたものとなります。

 

フィルターコンポーネント (Customer) を使用することで、ShortPO と Customer XML ファイルで顧客番号が一致するデータを検索することができ、関連するデータをターゲットの CompletePO コンポーネントへ渡すことができます。

 

"equal" 関数により、ShortPO の CustomerNr が Customer 以下にある Number と比較されます。

ShortPO には 1 つの顧客情報(番号が 3)しか含まれていないため、顧客番号が 3 となっている顧客の情報だけがフィルターコンポーネントには渡されます。

フィルターコンポーネントの node/row パラメーターは、bool パラメーターが true の時に Customer データを "on-true" ノードへ渡します。つまり、顧客番号が 3 の時だけ出力が行われます。

品物データは、他にある 2 つのフィルターコンポーネントによりターゲットスキーマへ渡されます。

(C) 2019 Altova GmbH