優先コンテキスト ノード/アイテム

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  マッピングのデザイン > ノード名のマッピング > マッピングのルールと戦略 >

優先コンテキスト ノード/アイテム

スキーマ内の異なったアイテムに関数を適用する場合、 MapForce は、コンテキストノードが何であるか知る必要があります。全ての他のアイテムは、これに対して処理されます。これはアイテム(またはノード)を優先コンテキストと設定することにより達成されます。

 

関連しないアイテムをマッピングする際、優先コンテキストは、実行の優先順序を決めるために使用されます。

 

マッピングは常に上から下に実行されます。2つのテーブルをループまたは検索する場合、それぞれのループが連続的に処理されます。関連しない要素をマッピングする場合、優先コンテキストを設定しないと MapForce は、どのループを最初に実行するか知らないため、自動的に最初のテーブルまたはデータソースを選択します。

 

解決方法:

どのデータソースが最初にループ、または、検索されるかを決定し、そのソースデータへのコネクタに優先コンテキストを設定します。

 

CompletePO.mfd ファイルは ...\MapForceExamples フォルダー内にあります。

 

複数のソースコンポーネントがこのサンプルには存在することに注意してください。 ShortPO、 Customers、 および Articles は、すべて関連した XML インスタンスファイルを持つスキーマです。それぞれからのデーターは CompletePO スキーマ / XML ファイルにマップされます。優先コンテキスト アイコンは、丸枠で囲まれています。

 

ShortPO 内の CustomerNr は、 Customers ファイル内のアイテム Number と比較されます。
CustomerNr 優先コンテキスト として設定され、 equal 関数の a パラメーター 内に置かれています。
Customers ファイル内の同じ数値が (1度)検索されます。b パラメーター は、 Customers ファイルからの Number アイテムを含んできます。
数値が検索された場合、結果は filter 関数の ブール パラメーターにパスされます。
node/row パラメーターは、ブールパラメーター が true の場合、すなわち、同じ数値が検索された場合、Customer データを "on-true" にパスします。
残りの customer データは以下の通りパスされます: Number, FirstName、LastName アイテム はすべてのターゲットスキーマ内の対応するアイテムに接続されます。

 

equal 関数の b パラメーター(すなわち、 アイテム Number) を「優先コンテキスト」と設定すると以下の結果が発生します:

MapForce  は、最初の Number を検索し b パラメーター にロードします。
a パラメーター内の CustomerNr に対してチェックします。
等値ではない場合、 次の Number を b にロードし、また、 a に対してチェックします。
ShortPO 内の数値を検索するために、すべての Number に対して反復します。

 

context-switch-prof

(C) 2019 Altova GmbH