複数のループを持つtXMLMapを設定
手順
-
tXMLMapコンポーネントをダブルクリックして、[Map Editor] (マップエディター)を開きます。
入力エリアにはデフォルトの基本的なXMLストラクチャーが既に入力されており、一番上のテーブルがメインの入力テーブルになっています。
-
row1入力テーブルでdocノードを右クリックし、コンテキストメニューから[Import From File] (ファイルからインポート)を選択します。ポップアップダイアログボックスでXMLソースファイルを参照して、tXMLMapが受信するデータが使うXMLストラクチャーをインポートします。このシナリオでは、XMLソースファイルはProductsIn.xmlで、tFileInputXMLへの入力データが含まれています。
-
インポートしたXMLツリーでmanufacturerノードを右クリックし、コンテキストメニューから[As loop element] (ループエレメントとして)を選択して、ループエレメントとして設定します。同じ手順で、typesノードとsaleノードをそれぞれループエレメントとして設定します。
-
マップエディターの下側にある[Schema editor] (スキーマエディター)タブをクリックして、対応するビューを開きます。次に、このビューの右側で[Document] (ドキュメント)タイプの1カラムのoutDocをスキーマテーブルに追加します。対応するXMLルートは、出力フローを表す右上の出力テーブルに自動的に追加されます。
-
outDoc出力テーブルで、予期される出力データを含み、予期されるXML構造を提供するXMLファイルから、使用するXMLデータ構造をインポートします。
出力テーブルのsaleノードを右クリックし、コンテキストメニューから[As loop element] (ループエレメントとして)を選択します。同じ手順で、manufacturerノードとtypesノードをそれぞれループエレメントとして設定します。
-
row1入力テーブルで@categoryノードをクリックし、outDoc出力テーブル内にある@categoryノードの[Expression] (式)フィールドにドロップします。
同じ手順で、他のノードを入力テーブルから出力テーブルにマップします:
-
@nameノードを@nameノードに
-
summaryノードの下にある@unitノードを@unitノードに
-
@idノードを@idノードとmanufacturer_idノードに
-
@dateノードを@dateノードに
-
nameノードを@nameノードに
-
typeノードをtypeノードに
-
@typeノードを@sales_typeノードに
-
incomeノードをsale (loop)ノードに
-
- outDoc出力テーブルの上部にあるレンチアイコンをクリックし、[All in one] (オールインワン)プロパティの値をtrueに設定して、単一のXMLフローを生成します。[All in one] (オールインワン)機能については、 Talend Studioユーザーガイドをご覧ください。
-
manufacturerループエレメントの横にある[...]ボタンをクリックし、[Configure source loops] (ソースループの設定)ポップアップダイアログボックスで[+]ボタンをクリックして、1つのソースループmanufacturerを追加します。同じ手順で、saleループエレメントに1つのソースループsaleを追加します。
-
typesループエレメントの横にある[...]ボタンをクリックし、[Configure source loops] (ソースループの設定)ポップアップダイアログボックスで2つのソースループ、typesとmanufacturerを追加します。typesソースループのシーケンス番号が0であることを確認して、出力フローの相対部分がtypeエレメントの値に基づいてソートされるようにします。
情報メモ注:
ループエレメントが入力フローの複数のループエレメントからマッピングを受け取る場合、入力ループのシーケンスを設定できます。たとえば、このシナリオの出力フローのtypesループエレメントは、manufacturerループエレメントに属する@idノード、および入力フローのtypesループエレメントに属するtypeノードにマッピングされます。出力フローは、主要な typesループに従ってソートされます。
- [OK]をクリックしてマッピングを確定し、[Map Editor] (マップエディター)を閉じます。