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

Altova MapForce 2020 Enterprise Edition

マッピングの一部では、希望するマッピングの出力を達成するために、マッピングのコンテキストをオーバーライドする必要がある場合があります。このため、コンポーネントの一部では、必要な場合マッピングコンテキストを影響することのできる構造内の任意の parent-context アイテムを提供する場合があります。このようなコンポーネントのサンプルは以下のとおりです: 集計関数、編集、および、 ジョインコンポーネント。

fn-count

任意の parent-context を使用した集計関数

マッピングコンテキストの重要性を理解するために、複数のレベルを持つネストされたノードを含む マッピング XML ファイルに追加します。「挿入」 メニューで、「XML スキーマ/ファイル」をクリックし、以下のファイルを参照します: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Altova_Hierarchical.xml

mf_parent-context

Altova_Hierarchical.xml

重要な点は、上の XML ファイル内では、Office 親ノードには複数の Department ノードが含まれており、各 Department には、複数の Person が含まれています。実際の XML ファイルを XML エディター内で開くには、オフィスと部署の社員の所属を確認してください:

 

オフィス

部署

人数

Nanonull, Inc.

Administration

3

Marketing

2

Engineering

6

IT & Technical Support

4

Nanonull Partners, Inc.

Administration

2

Marketing

1

IT & Technical Support

3

 

マッピングが全ての部署の全ての社員を含むと想定します。この目的を達成するためには、 core | aggregate 関数から count 関数を追加し、データを以下の様にマップします:

mf_parent-context1

 

マッピングをこの時点でプレビューすると、 出力は、全ての部署内の社員の総数である 21 です。 count 関数には、まだ接続されていない任意の parent-context アイテムが含まれています。この結果、count 関数の親コンテキストは、ソースコンポーネントのデフォルトのルートノードです (この場合、 Altova アイテム)。これは、全ての部署の全ての社員が count 関数の対象と考えられています。マッピングのルールと戦略で説明されているとおり、デフォルトでは、マッピングコンテキストはこのように作動します。マッピングのシナリオの大半はこれだけで十分です。

 

しかしながら、デフォルトの マッピングコンテキストを必要な場合はオーバーライドすることもできます。これを行うには、 Office ノードから parent-context アイテムへの接続を下に表示されるように追加します。

mf_parent-context2

 

上に示されるようにマッピングを変更することにより、マッピングに各オフィスのコンテキスト内で社員のレコードを反復するように命令します。このため、マッピングをプレビューすると、 出力は、 15* に成ります。これは最初のオフィス 「Nanonull, Inc.」 内の社員数です。社員ノードが(各オフィスのために1度ごと)2回計算されていることがわかります。各オフィスの社員数は、それぞれ15人と6人です。しかしながら、最初の結果のみが返されています (これは、関数が値のシーケンスを返すことができず、簡単な値のみを返すからですbecause 関数)。

 

* マッピングのターゲット言語が XSLT 1.0.以上と仮定しています

 

下に示されるようにマッピングコンテキストを Department, に変更することができます。今度は、社員のレコードが各部署のコンテキスト内で数えられます (すなわち、部署の総数に対応する 7 回)。また、最初のオフィスの最初の部署内の社員数に対応する、出力が3である最初の結果のみが返されます。

 

mf_parent-context3

 

このマッピングは多くがまだ発生していませんが、この時点では、マッピングの出力を parent-context アイテムがどのように影響するかを説明しています。この点を考慮して、変数 または、ジョインコンポーネントなどを含む他のマッピング内の parent-context をオーバーライドすることができます。次も参照してください:サンプル: レコードのグループ化およびサブグループ化

(C) 2019 Altova GmbH