XML マッピング・エディターはビジュアル・データ・マッピング・ツールであり、XML スキーマ、DTD、または XML 文書の任意の組み合わせを変換したり、デプロイ可能な変換文書を生成したりするためのツールです。ソース文書の要素をターゲット文書の要素に接続することによって、XML ベースの文書をグラフィカルにマップできます。カスタム XPath 式および XSLT テンプレートを使用して組み込み変換関数を拡張することができます。マッピング・ツールを使用することで XSL コード生成が自動化され、また、指定したマッピング情報に基づいて変換文書が生成されます。
| マッピング変換の例 |
説明 |
| 注文と出荷のマッピング |
この例は、2 つのビジネス単位で絶えず情報を交換する必要があるビジネス・シナリオを示しています。
このシナリオでは、販売部門からの注文文書を、物流部門の出荷文書にマップします。
このマッピングは、以下の主要な変換で構成されています。- 移動
- 連結
- インライン化マップ
- サブストリング
- グループ
- カスタム
|
| 移動 |
この例は、ソース文書内の要素の値を、ターゲット文書内の要素に移動する方法を示しています。 |
| 連結 |
この例は、ソース文書内の一連の項目の値を、ターゲット文書の 1 つの項目の 1 つの値に連結する方法を示しています。 |
| ローカル・マップ |
この例は、1 つのマップ内にマップを作成し、複合要素をそれらのコンテキスト内で変換できるようにする方法を示しています。 |
| サブストリング |
この例では、ソース文書の要素の値を分割し、その結果をターゲット文書の要素にコピーする方法を示しています。 |
| グループ |
この例は、ソース文書内の複数の要素をグループ化し、その結果をターゲット文書に格納する方法を示しています。 |
| カスタム |
この例は、XPath 式を使用してマッピング・ツールの組み込み変換関数を拡張する方法を示しています。 |
注文と出荷のマッピング
この例では、販売部門からの注文文書を物流部門が処理し、出荷文書を生成する必要があります。
- 「XML マッピング」ウィザードを起動するには、の順に選択します。「次へ」をクリックします。
- 「新規データ・マッピング・ファイル」ウィンドウで、「XMLMappingExamples」フォルダーをクリックします。
「ファイル名」フィールドに、MyOrderMapping.map と入力し、「次へ」をクリックします。
- 「ルート入力」ペインで、「追加」をクリックします。
- 「ファイルのタイプ」リストで、「XML スキーマ」を選択し、「参照」をクリックします。を展開し、「PurchaseOrder.xsd」 を選択してから、「OK」をクリックします。
- 「グローバル要素およびタイプ」ペインで、ソース・ルート要素として「PurchaseOrder」をクリックし、「OK」をクリックします。
- 「ルート出力」ペインで、「追加」をクリックします。
- 「ファイルのタイプ」リストで、「XML スキーマ」を選択し、「参照」をクリックします。を展開し、「ShippingOrder.xsd」を選択してから、「OK」をクリックします。
- 「グローバル要素およびタイプ」ペインで、ターゲット・ルート要素として「ShippingOrder」をクリックし、「OK」をクリックします。
- 「次へ」をクリックします。
- ペインのテスト用の「データ・サンプル入力」で、「追加」をクリックします。
「PurchaseOrder.xml」、「OK」とクリックします。
注: サンプル XML 入力ファイルを使用して、マッピング変換をテストします。
- 「終了」をクリックする。
移動
この例では、PurchaseOrder
文書の OrderID 要素の値が、ShippingOrder 文書の
PurchaseOrderReference 属性の値に移動されます。
- まだ開いていない場合、MyOrderMapping.map を右クリックし、「開く」をクリックします。
マッピング・エディターが開きます。
- マッピング・エディターで、PurchaseOrder の要素「OrderID」をクリックし、それを ShippingOrder の「PurchaseOrderReference」属性にドラッグします。

連結
この例では、PurchaseOrder 文書の first、middle、last の name 要素を、ShippingOrder 文書の CustomerName 要素の単一の値に連結します。
- PurchaseOrder で、「Customer」要素を展開します。
- PurchaseOrder で、「FirstName」要素をクリックし、それを ShippingOrder の「CustomerName」要素にドラッグします。
- 「LastName」要素を追加します。
- PurchaseOrder で、「LastName」要素をクリックし、PurchaseOrder および ShippingOrder の間の「移動」変換タイプ・ボックスにドラッグします。「接続選択ヘルパー」ウィンドウが開きます。
- 「接続選択ヘルパー」ウィンドウで、「1 次接続」をクリックします。
- 「MiddleInitial」要素を追加します。
- PurchaseOrder で、「MiddleInitial」要素をクリックし、PurchaseOrder と ShippingOrder の間の「連結」変換タイプ・ボックスにドラッグします。「接続選択ヘルパー」ウィンドウが開きます。
- 「接続選択ヘルパー」ウィンドウで、「1 次接続」をクリックします。ウィンドウが閉じて、変換タイプが「連結」に変更されます。

- 「連結」ボックスを右クリックし、をクリックします。
- 「プロパティー」ビューの「順序」タブをクリックします。
「入力」ペインで、「プロパティー」ビューをクリックします。「MiddleInitial:
string」をクリックし、上矢印の「再配列」アイコンをクリックして、連結ストリングの順序を変更します。
ヒント: 順序付け、区切り文字、接頭部、接尾部に関する連結オプションをカスタマイズできます。

ローカル・マップ
この例では、ソース文書とターゲット文書の両方に、複合要素 ShippingAddress が含まれています。
- PurchaseOrder で、「ShippingInfo」要素を展開します。
- PurchaseOrder で、「ShippingAddress」要素をクリックし、それを ShippingOrder の「ShippingAddress」要素にドラッグします。

- 開いた情報ウィンドウのリンクをクリックするか、「ローカル・マップ」変換タイプ・ボックスの右上隅にある編集アイコンをクリックして、ローカル・マップを編集します。
ローカル・マップ用のエディターが開きます。
- それぞれの ShippingAddress サブエレメントに対して変換をマップする必要があります。
- PurchaseOrder の「StreetNumber」、「StreetAddress」および「Apartment」要素 を ShippingOrder の「StreetAddress」要素にマップします。
- 「StreetNumber」要素をクリックし、それを「StreetAddress」要素にドラッグします。
- 「StreetName」要素をクリックし、それを「移動」変換タイプ・ボックスにドラッグします。「接続選択ヘルパー」ウィンドウが開きます。
- 「接続選択ヘルパー」ウィンドウで、「1 次接続」をクリックします。ウィンドウが閉じて、変換タイプが「連結」に変更されます。
- 「Apartment」要素をクリックして、それを「連結」変換タイプ・ボックスにドラッグします。「接続選択ヘルパー」ウィンドウが開きます。
- 「接続選択ヘルパー」ウィンドウで、「1 次接続」をクリックします。
- PurchaseOrder の「PostalCode」要素をクリックし、それを ShippingOrder の「PostalCode」要素にドラッグします。
- PurchaseOrder の「Province」要素をクリックし、それを ShippingOrder の「Province」要素にドラッグします。

- メイン・マップに戻るには、ローカル・マップ・ビューの右上隅にある矢印アイコンをクリックします。
サブストリング
この例では、OrderDate 要素が注文文書の単一の date タイプとして格納されますが、出荷文書では同じ OrderDate 要素が、整数タイプの副要素 year、month、day に分割されます。適切なサブストリング変換パラメーターを設定することで、注文文書の OrderDate 要素から year、month、および day の値を抽出し、それらの値を出荷文書の対応する要素に格納できます。
- ShippingOrder で、「OrderDate」要素を展開します。
- PurchaseOrder で、「OrderDate」要素をクリックし、それを ShippingOrder の「Year」要素にドラッグします。
- 「変換タイプ」ボックスで、ドロップダウン矢印をクリックします。「String 関数」を展開して、「サブストリング」をクリックします。
- 「サブストリング」 変換タイプ・ボックスを右クリックし、をクリックします。
- 「プロパティー」ビューで、「一般」タブをクリックします。
- 「区切り文字」フィールドに、- と入力します。
- 「サブストリング索引」フィールドに、0 と入力します。
- マッピング・エディターで、「OrderDate」要素をクリックし、それを「Month」要素にドラッグします。
- 「変換タイプ」ボックスで、ドロップダウン矢印をクリックします。「String 関数」を展開して、「サブストリング」をクリックします。
- 「プロパティー」ビューで、「一般」タブをクリックします。
- 「区切り文字」フィールドに、- と入力します。
- 「サブストリング索引」フィールドに、1 と入力します。
- マッピング・エディターで、「OrderDate」要素をクリックし、それを「Day」要素にドラッグします。
- 「変換タイプ」ボックスで、ドロップダウン矢印をクリックします。「String 関数」を展開して、「サブストリング」をクリックします。
- 「プロパティー」ビューで、「一般」タブをクリックします。
- 「区切り文字」フィールドに、- と入力します。
- 「サブストリング索引」フィールドに、2 と入力します。

ヒント: サブストリング変換または連結変換は、ストリング・タイプだけでなく、どのようなタイプの要素や属性に適用できます。
グループ
この例では、注文の各製品には出荷優先順位が関連付けられています。一方、出荷の製品は出荷優先順位セクションの要素ごとにグループ化されています。グループ変換を使用すると、注文の製品をそれぞれの出荷優先順位に基づいてグループ化し、その結果作成されたグループを、出荷の要素にマップできます。グループ・プロパティーでは、グループ化パラメーター、順序、ソート基準を設定できます。
- ShippingOrder で、「OrderSections」要素を展開します。
- PurchaseOrder で、「Product」要素をクリックし、それを ShippingOrder の「OrderSection」要素にドラッグします。
- 「変換タイプ」ボックスのドロップダウン矢印をクリックし、「コア変換」セクションの「グループ」をクリックします。

- 「グループ」変換タイプ・ボックスを右クリックし、をクリックします。
- 「プロパティー」ビューの「製品」ペインで、「ShippingPriority : String」をクリックします。
- 「追加」をクリックします。
- マッピング・エディターで、「グループ」変換タイプ・ボックスの右上隅にある編集アイコンをクリックして、「グループ」の詳細を編集します。 「OrderSection」要素用のエディターが開きます
- 「OrderSection」の詳細ビューで、「OrderItem」要素を展開します。
- 「グループ」の詳細ビューで、以下の移動操作を実行します。
- Product の「ID」要素をクリックし、それを OrderSection の 「Identifier」 要素にドラッグします。
- Product の「Price」要素をクリックし、それを OrderSection の 「Price」 要素にドラッグします。
- Product の「Description」要素をクリックし、それを OrderSection の 「Name」 要素にドラッグします。
- Product の「Quantity」要素をクリックし、それを OrderSection の 「Quantity」 要素にドラッグします。
- Product の「ShippingPriority」要素をクリックし、それを OrderSection の 「Priority」 要素にドラッグします。

- メイン・マップのビューに戻るには、グループ・マッピングの右上部にある矢印をクリックします。
カスタム
この例では、出荷文書に NumberOfProducts 属性を入れ、注文の合計製品数を指定します。NumberOfProducts 属性の値を生成するには、製品の注文合計数を quantity 要素を使用して計算する必要があります。XPath 式を使用して、カスタム変換による追加操作を実行できます。その結果を、ターゲット属性 NumberOfProducts に格納します。
- 「PurchaseOrder」要素をクリックし、それを ShippingOrder の「NumberOfProducts」要素にドラッグします。変換タイプがカスタム XPath に設定されています。

- 「カスタム XPath」 変換タイプ・ボックスを右クリックし、をクリックします。
- 「プロパティー」ビューで、「一般」タブをクリックし、「編集」をクリックします。
- 「XPath 式ビルダー」ウィンドウで、「sum(製品/数量)」と入力し、「OK」をクリックします。
