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

Altova MapForce 2020 Enterprise Edition

このサンプルは、ジョインコンポーネントを使用して、2つの XML 構造からのデータを結合する方法について説明しています。このサンプルは、次のパスにあるマッピングサンプルが存在します: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\JoinPeopleInfo.mfd.

 

このマッピングの目的は、2つの ソース XML ファイルから個人の情報 (名、姓、 住所、電子メール、 と 電話番号) を収集し、単一のターゲット XML ファイルに書き込むことです。

 

最初の XML ファイル は、各個人の名と姓、電子メールと電話番号を、下のサンプルコードで示されているとおり保管します ( XML 宣言、 名前空間、 とレコードの一部は簡素化のために省略されています):

 

<People>
  <Person>
    <FirstName>Marquita</FirstName>
    <LastName>Bailey</LastName>
    <Email>m.bailey@nanonull.com</Email>
    <Phone>555323698</Phone>
  </Person>
  <Person>
    <FirstName>Totie</FirstName>
    <LastName>Rea</LastName>
    <Email>t.rea@nanonull.com</Email>
    <Phone>555598653</Phone>
  </Person>  
</People>

People.xml

2 番目のXML ファイル は、各個人の名と姓、および電子メールアドレスの詳細を保管します。:

 

<Addresses>
  <Address>
    <FirstName>Marquita</FirstName>
    <LastName>Bailey</LastName>
    <City>Bridgedell</City>
    <Street>Olive Street</Street>
    <Number>4</Number>
  </Address>
  <Address>
    <FirstName>Totie</FirstName>
    <LastName>Rea</LastName>
    <City>Roseford</City>
    <Street>Evergreen Lane</Street>
    <Number>34</Number>
  </Address>
</Addresses>

Addresses.xml

マッピングの目的は、<Address> 情報を持つ最初のファイルからの <Person> 情報と 2 番目のファイルからの情報を姓が一致するか比較します。特に、  最初のファイル内の各 <Person> と  2 番目のファイル内の各 <Address> で、 FirstNameLastName が比較されます。両方の値が同じの場合、 対応する <Person><Address> レコードが同じ個人を参照している場合、ジョインが実行されます。 ターゲット XML 構造 は以下のようになります:

 

<PeopleInfo>
  <Row>
    <FirstName>Marquita</FirstName>
    <LastName>Bailey</LastName>
    <City>Bridgedell</City>
    <Street>Olive Street</Street>
    <Number>4</Number>
    <Email>m.bailey@nanonull.com</Email>
    <Phone>555323698</Phone>
  </Row>
  <Row>
    <FirstName>Totie</FirstName>
    <LastName>Rea</LastName>
    <City>Roseford</City>
    <Street>Evergreen Lane</Street>
    <Number>34</Number>
    <Email>t.rea@nanonull.com</Email>
    <Phone>555598653</Phone>
  </Row>  
</PeopleInfo>

PeopleInfo.xml

このマッピングの目的は、ジョインコンポーネントをマッピングに追加することで簡単に達成することができます。他のコンポーネント型を使用して、同じ結果を達成することもできることに注意してください。 しかしながら、下のステップでは、このサンプルの主題である、ジョインコンポーネントを使用してサンプルが説明されています。

 

必要とされるマッピングを作成するには、 以下のステップに従います。

 

ステップ 1: ソース XML ファイル をマッピングに追加する

1.「挿入」 メニューからXML スキーマ/ファイル  をクリックします。次の ソースファイルを参照します: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\People.xml

2.Addresses.xml (2 番目のソースファイル)のために上のステップを繰り返します。

 

ステップ 2: ターゲット スキーマファイルをマッピングに追加する

「挿入」 メニューから XML スキーマ/ファイル をクリックします。 <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\PeopleInfo.xsd (ターゲット XSD スキーマファイル) を参照しますXML ファイルを与えるようにプロンプトされると、 「スキップ」 をクリックします。ルート要素を選択するようにプロンプトされると、ルート要素として PeopleInfo を選択します。

 

ステップ 3: ジョインコンポーネントを追加する

1.「挿入」 メニューから 「ジョイン」 (または、 「ジョイン」 mf_ic_join_button ツールバーボタン) をクリックします。この時点でマッピングは以下のようになります (下のマッピングと同じ表示にするには、 コンポーネントをドラッグしてサイズを調整する必要があります):

mf_map_JoinPeopleInfo1

ジョインコンポーネントの構造に注目してください、 比較する2つの構造(この場合、PersonAddress 構造)を接続する 2つの nodes/rows アイテムが存在します。

 

2.ジョインコンポーネントの最初の nodes/rows アイテムに Person から接続を描きます。同様に、2 番目の nodes/rows アイテムに Address を接続します。

mf_map_JoinPeopleInfo2

3.既に説明されているとおり、 FirstNameLastName 値が両方の構造内で等価の場合のみジョインは実行されます。この条件を定義するために、 「ジョインの条件の定義」 mf_ic_join_key ボタンをクリックしてください。

4.最初のジョインの条件 (構造 1 の下の FirstName と構造 2 の下の FirstName )を定義するアイテムのペアを選択します。

5.「条件の追加」 をクリックして、上記のステップを LastName のために繰り返します。

mf_map_JoinPeopleInfo3

マッピングの一部では、 1つの比較から構成される条件のみでジョインを実行することを可能な場合があります。しかしながら、このサンプルでは、2つの比較が作成されることが重要です:

 

1)構造1 内の FirstName = 構造 2 内の FirstName。

2)構造1 内の LastName = 構造 2 内の LastName。

 

複数の条件が定義されている場合、ジョインが実行されるには全ての条件が満たされている必要があります。このため、このサンプルでは、(期待される結果である)ジョインは両方の比較の条件が満たされている場合のみ実行されます。それ以外の場合、 1つの比較の条件のみが定義されている場合、ジョインは同じ名と姓を持つ個人に対して実行される可能性があります。

 

ステップ 4: ジョインコンポーネントをターゲット スキーマにマップする

2つの構造はジョインされ、ジョインした構造のどのアイテムがターゲットにマップされるかを定義することができます。これを行うには、 ターゲットコンポーネントへジョインされた構造のアイテムからの接続を下に示されるように作成します。joinedRow 間の接続の目的は次のとおりです: ジョインの条件が満たされると、ターゲット内に新規の Row アイテムを作成する。

mf_map_JoinPeopleInfo

出力 タブをクリックしてマッピング出力をプレビューすることができます。期待通り、各レコード (<Row>) には、 2つの異なるソースからジョインされた住所の詳細が含まれています。

(C) 2019 Altova GmbH