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

Altova MapForce 2020 Enterprise Edition

マッピングコンポーネントの一部は任意の parent-context アイテムを持っている場合があります。このアイテムを使用して、コンポーネントが作動し結果的にマッピングの出力を変更するようにマッピングコンテキストに影響を与えることができます。 任意の parent-context を持つコンポーネントは以下の通りです: 集計関数、変数、ジョインコンポーネント。

 

fn-count

 

親コンテキストを変更する方法のでもに関しては次のマッピングを開いてください: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\ParentContext.mfd

mf_semantics_11

上のマッピング内のソース XML では、2つの Office ノードを含む単一のCompany が存在します。各 Office ノードは複数の Department ノードを含み、 Department は複数のPerson ノードを含んでいます。XML エディターで XML ファイルを開くと、 オフィス内の職員の配属は以下のようになっています:

 

オフィス

部署

職員数

Nanonull, Inc.

管理

3

マーケティング

2

エンジニアリング

6

IT & 技術サポート

4

Nanonull Partners, Inc.

管理

2

マーケティング

1

IT & 技術サポート

3

 

マッピングはすべての部署の職員数を計算します。この目的のために core ライブラリから count 関数を使用します。マッピングをプレビューするために 「出力」 タブをクリックすると、ソース XML ファイル内の総職員数である単一の値 21 が生成されます。

 

マッピングの仕組みは以下のとおりです:

 

通常どおりターゲットコンポーネントのトップノード (このサンプルでは rows )からマッピングの実行は開始されます。rows への接続線は存在しません。この結果 Company (ソースコンポーネントの上のアイテム) と rows (ターゲットコンポーネントの上のアイテム)間の明示的なマッピングコンテキストが確立されます。

ソースファイルに1つの会社が存在するため関数の結果は単一の値です。

col1 ターゲットアイテムを作成するために、 MapForce は、全ての部署のすべてのオフィスから Person ノードを数えるために、上記の 明示的な親コンテキスト 内の count 関数を実行します。

 

関数の parent-context 引数によりマッピングコンテキストを変更することができます。これにより、例えば、各部署内の職員数を数えることができます。これを行うために、以下に示される通り2本の接続線を描きます:

mf_semantics_12

上のマッピングでは、接続線 A はthe count 関数の親コンテキストを Department に変更します。これにより、関数は各部署内の職員数を数えることができます。重要な点は、ソース内に複数の部署が存在するため関数は単一の結果の代わりに結果の sequence シーケンスを返します。このために接続線 B が存在します: 結果シーケンス内の各アイテムのためにターゲットファイル内に新規の行が作成されます。マッピングの出力は上記に従い変更されています (各部署内の職員数に結果が対応していることに注意してください):

 

<rows>
  <row>
      <col1>3</col1>
  </row>
  <row>
      <col1>2</col1>
  </row>
  <row>
      <col1>6</col1>
  </row>
  <row>
      <col1>4</col1>
  </row>
  <row>
      <col1>2</col1>
  </row>
  <row>
      <col1>1</col1>
  </row>
  <row>
      <col1>3</col1>
  </row>
</rows>

 

現在のマッピングは各部署のために行を作成することから、接続線 C と D を描くことにより、ターゲットファイル内にオフィス名と部署名もコピーすることができます:

mf_semantics_13

このようにして、出力で職員数だけではなく、対応するオフィス名と部署名も表示されます。

 

各オフィス内の職員数を数えるためには、count 関数の親コンテキストをソース内の Office アイテムに接続します。

mf_semantics_14

上記の接続では count 関数は各オフィスのために1つの結果を返します。ソースファイル内に2つのオフィスが存在するために、関数は2つのシーケンスを返します。この結果、出力内には各行がそのオフィス内の職員数を示す2つの行が存在します:

 

<rows>
  <row>
      <col1>15</col1>
      <col2>Nanonull, Inc.</col2>
  </row>
  <row>
      <col1>6</col1>
      <col2>Nanonull Partners, Inc.</col2>
  </row>
</rows>

(C) 2020 Altova GmbH