ナビゲーションをスキップ

XQuery Mapper を使用したデータの変換

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

XQuery を使用したデータの変換

この節では、BEA XQuery Mapper を使用してデータ トランスフォーメーションをグラフィカルに作成する方法について説明します。グラフィカル インタフェースを使用して、スキーマのソース要素をスキーマのターゲット要素にマップできます。マップを行うと、XQuery Mapper により XQuery が生成され、.xq ファイルとして保存されます。

この節の内容は以下のとおりです。

 


XQuery Mapper の起動

BEA AquaLogic Service Bus をインストールすると、Eclipse 3.1 と Eclipse 用の XQuery Mapper プラグインが共にインストールされます。

注意 : AquaLogic Service Bus 2.1 リリースの場合、Eclipse 3.1 は Windows プラットフォームでのみサポートされます。

XQuery Mapper インストールの一部として、デフォルトのスキーマを含むサンプル プロジェクトが提供されます。サンプル プロジェクトの詳細については、「XQuery Mapper サンプル プロジェクト」を参照してください。

Eclipse を起動するには

  1. 以下のいずれかの方法で XQuery Mapper を起動します。
  2. Eclipse メニュー バーから、次のように選択して XQuery トランスフォーメーション Perspective を開きます。
  3. [WindowOpen PerspectiveOtherXQuery トランスフォーメーション]

    注意 : XQuery ファイルを開くと、XQuery トランスフォーメーション Perspective が自動的に起動します。ただし、XQuery Mapper が開いており、XQuery ファイルが開いていない場合は、XQuery トランスフォーメーション Perspective を手動で起動する必要があります。

 


XQuery Mapper サンプル プロジェクト

サンプル プロジェクトを起動すると、「例 : XQuery を使用したデータの操作と制約」に示されているように、サンプル スキーマ ファイルを使用して XQuery トランスフォーメーションを作成できます。

詳細については、以下のトピックを参照してください。

サンプル プロジェクトを起動するには

サンプル プロジェクトは Eclipse 内から起動できます。

サンプル プロジェクトには、以下のフォルダとファイルが含まれます。

XQuery トランスフォーメーションを作成する前に、プロジェクト固有の XML スキーマ ファイル、WSDL ファイル、または MFL ファイルを作成またはインポートすることができます。ファイルはどの場所からでも XQuery Mapper にインポートできます。Eclipse にファイルをインポートする前に、ビジネス ニーズに応じたフォルダ ディレクトリ構造を作成することをお勧めします。詳細については、「スキーマ ファイルの作成とインポート」を参照してください。

 


新しい XQuery Mapper プロジェクトの作成

新しいプロジェクトを作成するには、Eclipse の [New Project] ウィザードを使用します。このウィザードでは、さまざまな種類のプロジェクトから新しいプロジェクトを選択するよう求められます。XQuery Mapper の場合は、[Simple] を選択して基本的なプロジェクトを作成できます。

新しい XQuery Mapper プロジェクトを作成するには

  1. XQuery Mapper の起動」で示された手順に従って、Eclipse で XQuery Mapper Perspective を起動します。
  2. [FileNewProject] を選択します。
  3. [New Project] ウィザードが開きます。ウィザードで、以下のいずれかを選択するよう求められます。

  4. [SimpleProject] を選択します。
  5. [Next] をクリックします。
  6. プロジェクト名を入力します。
  7. 例 : TestProject1

  8. [Use default] チェックボックスがチェックされていることを確認します。
  9. [Finish] をクリックします。

 


スキーマ ファイルの作成とインポート

スキーマ ファイルはどの場所からでも作成またはインポートできます。以下のスキーマ タイプがサポートされています。

この節の内容は以下のとおりです。

XML スキーマのインポート

XML スキーマは、Eclipse の外部で作成および格納されます。ただし、XML スキーマ エディタを使用して XML スキーマを作成することもできます。インポートまたは作成されたスキーマ ファイルは、以下の図に示されているように [新しい XQuery トランスフォーメーション] ウィザードで使用できます。XML スキーマの作成については、「XML スキーマ エディタを使用した XML スキーマ ファイルの作成」を参照してください。

図 2-1 [新しい XQuery トランスフォーメーション] ウィザード

[新しい XQuery トランスフォーメーション] ウィザード


 

XML スキーマをインポートするには

  1. XQuery Mapper の起動」で示された手順に従って、Eclipse で XQuery Mapper Perspective を起動します。
  2. [Navigator] ウィンドウで、スキーマをインポートするプロジェクトを選択します。
  3. [FileImport] を選択します。
  4. [Import] ウィザードが表示されます。このウィザードを使用すると、スキーマをさまざまなソースからインポートできます。選択するインポート ソースは、スキーマが格納されている場所によって異なります。

  5. インポート タイプを選択してから、[Next] をクリックします。
  6. 選択したインポート タイプに応じて、適切なファイルを検索します。
  7. たとえば、ローカル ファイル システムからインポートする場合は、ローカルに格納されているファイルを検索するよう求められます。

  8. 入力スキーマを検索し選択してから、[Finish] をクリックします。

XML スキーマ エディタを使用した XML スキーマ ファイルの作成

Eclipse に付属する XML スキーマ エディタを使用して XML スキーマ ファイルを作成できます。

XML スキーマ ファイルを作成するには

  1. XQuery Mapper の起動」で示された手順に従って、Eclipse で XQuery Mapper Perspective を起動します。
  2. [Navigator] ウィンドウで、スキーマ ファイルを作成するプロジェクトを右クリックします。
  3. [NewOther ...] を選択します。
  4. [New] ウィザードが開きます。

  5. [AquaLogic Service Bus] または [XML] ウィザード タイプを選択します。
  6. [XML Schema] を選択し、[Next] をクリックします。
  7. スキーマ ファイルを作成する親フォルダを選択します。
  8. スキーマ ファイルの名前を入力します。
  9. 例 : NewXMLSchema

  10. [Finish] をクリックします。

指定したプロジェクトにスキーマ ファイルが作成されます。これで、スキーマの詳細を指定し、ファイルを保存することができます。

注意 : XML スキーマ エディタの使用に関する詳細については、次の URL にある「XML Schema Editor Tutorial」を参照してください。

http://www.eclipse.org/webtools/community/tutorials/XMLSchemaEditor/XMLSchemaEditorTutorial.html

WSDL エディタを使用した WSDL ファイルの作成

Eclipse に付属する WSDL エディタを使用して WSDL ファイルを作成できます。WSDL ファイルで定義された XML スキーマをトランスフォーメーションで使用できます。

WSDL ファイルを作成するには

  1. XQuery Mapper の起動」で示された手順に従って、Eclipse で XQuery Mapper Perspective を起動します。
  2. [Navigator] ウィンドウで、WSDL ファイルを作成するプロジェクトを右クリックします。
  3. [NewOther ...] を選択します。
  4. [New] ウィザードが開きます。

  5. [AquaLogic Service Bus] または [XML] ウィザード タイプを選択します。
  6. [WSDL] を選択し、[Next] をクリックします。
  7. WSDL ファイルを作成する親フォルダを選択します。
  8. WSDL ファイルの名前を入力します。
  9. 例 : NewWSDLFile

  10. [Next] をクリックします。
  11. WSDL ファイルのターゲット ネームスペースおよびプレフィックスを入力します。
  12. 必要に応じて、[Create WSDL Skeleton] チェックボックスをチェックします。
  13. プロトコルとバインドのオプションを選択した後、[Finish] をクリックします。

指定したプロジェクトに WSDL ファイルが作成されます。

注意 : WSDL エディタの使用に関する詳細については、次の URL にある「WSDL Editor Tutorial」を参照してください。

http://www.eclipse.org/webtools/community/tutorials/WSDLEditor/WSDLEditorTutorial.html

MFL スキーマのインポート

インポートされた MFL ファイルは、[新しい XQuery トランスフォーメーション] ウィザードで使用できます。

MFL スキーマをインポートするには

  1. XQuery Mapper の起動」で示された手順に従って、Eclipse で XQuery Mapper Perspective を起動します。
  2. [Navigator] ウィンドウで、スキーマをインポートするプロジェクトを選択します。
  3. [FileImport] を選択します。
  4. [Import] ウィザードが開きます。このウィザードを使用すると、スキーマをさまざまなソースからインポートできます。選択するインポート ソースは、スキーマが格納されている場所によって異なります。

  5. インポート タイプを選択し、[Next] をクリックします。
  6. 選択したインポート タイプに応じて、インポート ファイルを検索するよう求められます。
  7. たとえば、ローカル ファイル システムからインポートする場合は、ローカルに格納されているファイルを検索するよう求められます。

  8. 入力スキーマを検索し選択してから、[Finish] をクリックします。

MFL ファイルを作成するには

MFL ファイルは Format Builder ツールを使用して作成します。このツールは、Windows の [スタート] メニューまたは Eclipse から起動できます。

Format Builder の詳細については、Format Builder のオンライン ヘルプを参照してください。

 


ソースとターゲットのデータ型を選択して XQuery を生成する

[デザイン] タブをクリックし、XQuery Mapper のデザイン ビューを開きます。このビューでは、ソースとターゲットのデータ型を選択して、トランスフォーメーション マップを作成できます。デザイン ビューでは、ソース要素とターゲット要素をグラフィカルにリンクできます。ソース要素とターゲット要素の間にリンクを作成すると、XQuery ファイル (マップ) が生成されます。生成される XQuery ファイルには、.xq という拡張子が付きます。XQuery ファイル (マップ) は、デザイン ビューに表示されます。生成された XQuery コードは、[ソース] タブをクリックすると表示されます。

ソースとターゲットのデータ型の組み合わせは以下のとおりです。

ソースとターゲットのデータ型を選択するには

  1. マップを作成するプロジェクトを選択します。
  2. 右クリックして、[NewXQuery トランスフォーメーション] を選択します。
  3. [新しい XQuery トランスフォーメーション] ウィザードが開きます。

  4. トランスフォーメーションのファイル名を入力します。
  5. 例 : Transform1

  6. [Next] をクリックします。
  7. [ソースの型] ページが開きます。このページでは、トランスフォーメーションのソースの型を選択できます。

  8. [使用可能なソースの型] ペインで、ソースのデータ型を選択します。
  9. ソースのデータ要素を選択します。
  10. たとえば、Schemas/Dates.xsd から入力データを追加する場合は、以下の図に示されているように、最初にそのファイルを選択しその内容を展開して、入力要素として dates を選択します。

    図 2-2 ソースの型の選択

    ソースの型を選択する


     
  11. ソースの入力パラメータを選択してから、[追加] をクリックします。
  12. [選択されたソースの型] ペインに、選択した要素を構成する要素と属性が表示されます。

  13. ソースの型を追加するには、以上の手順を繰り返します (ソースの型は複数指定できます)。
  14. [Next] をクリックします。
  15. [対象の型] ページが開きます。このページでは、トランスフォーメーションのターゲットのデータ型を選択できます。

  16. [使用可能な対象の型] ペインで、ターゲットのデータ型を選択します。
  17. ターゲットの型を選択します。
  18. [追加] をクリックします。
  19. [選択された対象の型] ペインに、選択した要素を構成する要素と属性が表示されます。

    注意 : ターゲットのデータ型は 1 つしか指定できません。

  20. [Finish] をクリックします。

 


デザイン ビューでのデータ トランスフォーメーションの作成

この節の内容は以下のとおりです。

基本的な要素トランスフォーメーションの作成

基本的な要素トランスフォーメーションでは、ソース要素をターゲット要素にマップします。ソース要素とターゲット要素には同じ名前、型、またはスコープを指定できる場合とできない場合があります。基本的な要素トランスフォーメーションにはさまざまな種類があります。

その例のいくつかを以下に示します。

要素-要素トランスフォーメーションを作成するには

  1. マップを作成するプロジェクトを選択します。
  2. マップを作成する XQuery ファイルを開きます。
  3. これは、マップ ファイルが「ソースとターゲットのデータ型を選択して XQuery を生成する」の説明に従って作成されていることを前提としています。

  4. 要素-要素リンクを作成するには、[ソース] ペインの要素を [対象] ペインの要素にドラッグします。
  5. たとえば、ソース要素 customer-name とターゲット要素 customer-name の間に要素-要素リンクを作成する場合は、以下の図に示されているように [ソース] ペインの要素を [対象] ペインにドラッグします。

    図 2-3 要素-要素リンク

    要素-要素リンク


     
  6. 目的の要素がすべてマップされるまで、以上の手順を繰り返します。
  7. 変更内容を保存します。

基本的な属性トランスフォーメーションの作成

基本的な属性トランスフォーメーションでは、ソース属性をターゲット属性にマップします。ソース属性とターゲット属性には同じ名前、型、またはスコープを指定できる場合とできない場合があります。基本的な属性トランスフォーメーションにはさまざまな種類があります。

その例のいくつかを以下に示します。

属性-要素トランスフォーメーションを作成するには

  1. マップを作成するプロジェクトを選択します。
  2. マップを作成する XQuery ファイルを開きます。
  3. 属性-要素リンクを作成するには、[ソース] ペインの属性を [対象] ペインの要素にドラッグします。
  4. たとえば、street 属性と street 要素の間に属性-要素リンクを作成する場合は、以下の図に示されているように [ソース] ペインの要素を [対象] ペインにドラッグします。

    図 2-4 属性-要素リンク

    属性-要素リンク


     
  5. 目的の属性がすべてマップされるまで、以上の手順を繰り返します。
  6. 変更内容を保存します。

複雑なマップ トランスフォーメーションの作成

複雑なマップ トランスフォーメーションの場合は、複雑なソース (たとえば、反復する要素) から複雑なターゲット (たとえば、非反復要素) にマップします。その例のいくつかを以下に示します。

反復グループ-反復グループのトランスフォーメーションを作成するには

  1. マップを作成するプロジェクトを選択します。
  2. マップを作成する XQuery ファイルを開きます。
  3. これは、マップ ファイルが「ソースとターゲットのデータ型を選択して XQuery を生成する」の説明に従って作成されていることを前提としています。

  4. 反復グループ-反復グループ リンクを作成するには、[ソース] ペインの要素または属性を [対象] ペインの要素または属性にドラッグします。
  5. たとえば、productproduct の間に反復グループ-反復グループ リンクを作成する場合は、以下の図に示されているように [ソース] ペインの要素を [対象] ペインにドラッグします。

    図 2-5 反復グループ-反復グループのリンク

    反復グループ-反復グループ リンク


     
  6. 目的の要素と属性がすべてマップされるまで、以上の手順を繰り返します。
  7. 変更内容を保存します。

 


マップ トランスフォーメーションの編集

トランスフォーメーションは、作成後に [Source] タブで変更、更新、または削除することができます。

この節の内容は以下のとおりです。

生成された XQuery ファイルの表示と編集

ソース データとターゲット データ間のリンクを作成すると、その関係を示す XQuery ファイルが生成されます。XQuery Mapper でサポートされている XQuery 言語については、以下の URL を参照してください。

http://www.w3.org/XML/Query

XQuery ファイルを開いて表示および編集するには

  1. 生成された XQuery ファイルを含むプロジェクトを選択します。
  2. 編集する XQuery ファイルをダブルクリックします。
  3. [ソース] タブをクリックします。
  4. XQuery コードが表示されます。無効な XQuery コードには赤色の下線が付きます。

  5. 必要に応じて、赤色の下線で示されたエラーを修正します。
  6. 必要に応じて、XQ ファイルのソース ビューですべての XQuery コードを削除できます。ルート要素を除く、関数内のすべての XQuery ソース コードを削除して、デザイン ビューでリンクを再作成します。

  7. 変更内容を保存します。

 


[制約] タブの使用

XQuery Mapper の [制約] タブを使用すると、反復するソース要素とターゲット要素の間の関係に制約を付けたり操作したりできます。

[制約] タブから以下の [制約の種類] オプションを使用できます。

注意 : これらのオプションに関する詳細については、「[制約] タブの [和集合] オプションの使用」を参照してください。

デザイン ビューで反復する要素の間に構造リンクを作成すると、反復する要素を繰り返し処理するための for ループが XQuery 内に生成されます。[制約] タブの [Where 句式] ペインを使用し、XQuery for ループに where 句を追加することで、反復するターゲット要素に制限や制約を付けることができます。[制約] タブの [Where 句式] ペインで、XQuery の for ループの where 句に対する複合条件を作成できます。複合条件は、OR または AND で結合された条件で構成されています。次に例を示します。

((data($PurchaseOrderDoc/partId) > 200 and data($PurchaseOrderDoc/partId) <= 400))

実行時には、複合条件を満たす反復要素についてのみ for ループが反復処理されます。

[制約] タブの詳細な使用例については、「反復ソースと非反復ターゲットの間のトランスフォーメーションの作成」を参照してください。

 


[対象の式] タブの使用

[対象の式] タブを使用して、ソース要素とターゲットの要素の間のリンクを表示および変更できます。[対象の式] タブでは、ソース要素とターゲット要素の間の複雑な式を作成できます。

この節の内容は以下のとおりです。

[対象の式] タブでのリンクの XQuery コードの編集

リンクの XQuery コードを編集するには

  1. 編集する XQuery ファイルをダブルクリックします。
  2. デザイン ビューで、ソース ノードとターゲット ノードの間のリンクを選択または作成します。
  3. このリンクを選択したままにします。

  4. [対象の式] タブを選択します。
  5. デフォルトでは、[一般] オプションが選択され、リンクの XQuery コードが [一般式] ペインに表示されます。

  6. [対象の式] タブを選択します。
  7. 生成された XQuery コードを編集します。
  8. クエリは、XQuery 言語で記述されます。XQuery コードの詳細については、以下の URL を参照してください。

    http://www.w3.org/XML/Query

[対象の式] タブでのリンクへの If-Then-Else 構文の追加

[対象の式] タブを使用して、リンクに if-then-else 構文を追加できます。if-then-else のあるクエリを呼び出すと、if 式を構成する条件が評価され、その結果に応じて異なる値がターゲット ノードに返されます。たとえば、次の図の例に示すように、ソース ノード quantity の値が 500 より大きい場合は、ターゲット ノード ID の値として 4554 が返されますが、ソース ノード quantity の値が 500 以下である場合は、ターゲット ノード ID の値として 5894 が返されます。

図 2-6 If-Then-Else

If-Then-Else


 

リンクに単純な if-then-else 式を追加する以下の手順に加えて、より複雑な例もあります。これらの例については、「反復ソースと非反復ターゲットの間のトランスフォーメーションの作成」を参照してください。

 


XQuery 関数の呼び出しの挿入

この節では、[対象の式] タブを使用して、関数の呼び出しをクエリに挿入する方法について説明します。

XQuery 1.0 および XPath 2.0 の関数と演算子の詳細については、http://www.w3.org/TR/2005/WD-xpath-functions-20050404/ を参照してください。

この節の内容は以下のとおりです。

クエリ内での XQuery 関数の呼び出し

XQuery Mapper には、標準の W3C XQuery 関数と演算子のセットが用意されています。トランスフォーメーションを作成すると XQuery 言語でクエリが記述され、このクエリによってデータ変換が行われます。生成されたクエリには、標準の XQuery 関数またはユーザ定義関数を追加できます。たとえば、トランスフォーメーションの一部として、XML 文字列を大文字に変換することができます。

Eclipse で XQuery 関数および変数を表示するには

  1. XQuery Mapper の起動」で示された手順に従って、Eclipse で XQuery Mapper Perspective を起動します。
  2. [式の関数] を表示するには、[WindowShow View式の関数] を選択します。
  3. [式の変数] を表示するには、[WindowShow View式の変数] を選択します。

XQuery 関数を呼び出すには

  1. XQuery ファイルをダブルクリックします。
  2. [デザイン] タブで、関数呼び出しを追加するリンクを選択または作成します。
  3. これら 2 つのノード間のリンクが緑色になります。

  4. [デザイン] タブの下部にあるペインで、[対象の式] タブを選択します。
  5. [対象の式] タブが表示されていない場合は、メニュー バーから [WindowShow View対象の式] を選択してください。

    [一般式] ペインに、選択したターゲット ノードとソース ノードをリンクする XQuery コードが表示され、選択されます。このコードを選択したままにして、次の手順に進みます。

  6. [一般式] ペインで [削除] をクリックし、XQuery コードを削除します。
  7. [式の関数] ペインでフォルダを折りたたんだり展開したりして、目的の関数を見つけます。
  8. この例では、文字列関数 フォルダから upper-case 関数を選択します。

  9. [式の関数] ペインで目的の関数を選択し、それを [一般式] ペインにドラッグします。
  10. 以下の手順では、[一般式] ペインで選択されている関数のパラメータ (この例では upper-case 関数の $string-var パラメータ) を選択したままにしておきます。

    注意 : BEA Systems によって定義された trim-left などの XQuery 関数には、fn-bea: というプレフィックスが付いています。[式の関数] ペインに表示されない XQuery 関数でも、XQuery 仕様で定義されていれば、プレフィックス fn: を付けて使用できます。

  11. 次のいずれかの方法でソース パラメータを選択します。
  12. 関数のすべてのパラメータが割り当てられるまで、以上の手順を繰り返します。
  13. [適用] をクリックします。

この例を実行すると、upper-case 関数によってソース要素のすべての文字が大文字に変換されます。

 


式の変数の使用

XQuery Mapper の式の変数ビューを使用して、変数とその下位要素にアクセスできます。式の変数ビューから、[制約] タブと [対象の式] タブに変数またはその下位要素をドラッグ アンド ドロップできます。

式の変数ビューには、以下の種類の変数が表示されます。

 


XQuery ファイル編集時のプロパティ エディタの使用

[デザイン] タブで XQuery ファイルを編集するときに、プロパティ エディタを使用すると、ソースとターゲットの XSD または MFL ファイルを開かずに、現在のマップ内のノードに関するスキーマ プロパティを表示できます。そのため、[ソース]、[対象]、または [式の変数] ペインで要素または属性を選択し、関連付けられたスキーマ プロパティをプロパティ エディタで表示できます。プロパティ エディタには、選択した要素のスキーマ プロパティに関する読み取り専用のビューが表示されます。

プロパティ エディタ ビューを有効にするには、[WindowShow ViewProperties] を選択します。

 


マップ トランスフォーメーションのテスト

XQuery Mapper の [テスト] タブを使用して、XQuery トランスフォーメーションを検証できます。

この節の内容は以下のとおりです。

XQuery ファイルのテストの詳細については、「XQuery ファイルのテスト」を参照してください。

XQuery Mapper テスト機能の概要

Mapper のテスト ビューを使用して、自分で定義したトランスフォーメーションを検証できます。以下の図に示すテスト ビューで、適切なアイコンを選択します。

図 2-7 テスト ビュー

テスト ビュー


 

テスト ビューでは以下の機能を使用できます。

 


設計時の検証

設計時には、選択されたソース パラメータまたは結果データが型付きのグローバル XML 要素である場合にのみ、XQuery ファイルの [テスト] タブにある [ソース データ] ペインの [自動検証] および [結果データ] ペインの [検証] が有効になります。詳細については、「XML のグローバル要素、グローバル型、ローカル要素、および属性」を参照してください。

選択されたソース パラメータまたは結果データが次のいずれかのタイプである場合、検証は有効になりません。

XQuery ファイルの [テスト] タブにある [ソース データ] ペインの [自動検証] および [結果データ] ペインの [検証] をクリックすると、表示された XML がスキーマを基にチェックされ、設計時のエラーが報告されます。テスト ビューで設計時に行われる検証は、実行時に行われるスキーマ検証とは異なります。設計時の検証では結果の XML ドキュメントは変更されませんが、スキーマで定義されている必須の要素または属性が存在しているかどうかがチェックされます。

 


デザイン ビューのグラフィカルな表現について

デザイン ビューを使用して、トランスフォーメーションをグラフィカルに作成、変更、または更新することができます。この節では、XQuery Mapper の [デザイン] タブのグラフィカルな表現について説明します。

この節の内容は以下のとおりです。

リンクのメニュー オプション

メニュー オプション

呼び出し方法

結果

[すべてのリンクを削除]

デザイン ビューで [ソース] ペインと [対象] ペインの間の空いている場所で右クリックして、ドロップダウン メニューから [すべてのリンクを削除] を選択する。

注意 : [ソース] ペインと [対象] ペインの間の空いている場所で右クリックすると、すべてのノードが選択されていない状態になる。

デザイン ビューでは、すべてのリンクのグラフィカルな表現が削除され、ソース ビューでは、ソース ノードとターゲット ノードをリンクしている生成された XQuery コードが削除される。

[自動マップ]

デザイン ビューで構造リンクを右クリックして、ドロップダウン メニューから [自動マップ] を選択する。

注意 : このメニュー オプションは、デザイン ビューで構造リンクが選択されている場合にのみ使用可能。

リンクのソース子要素とターゲット子要素が同じサブスキーマ タイプである場合、選択した構造リンクの子ノード間にデータ リンクまたはデータ構造リンクが作成される。[自動マップ] オプションで子のリンクを作成するには、ターゲット子要素とソース子要素が同じ名前と同じデータ型を持ち、同じ順序になっている必要がある。

[コードの表示]

デザイン ビューでリンクを右クリックして、ドロップダウン メニューから [コードの表示] を選択する。

表示がデザイン ビューからソース ビューに変わり、リンクの間に生成された XQuery コードが表示される。選択したリンクの XQuery コードは青色で強調表示される。

[対象ノードの無効化]

デザイン ビューでリンクを右クリックして、ドロップダウン メニューから [対象ノードの無効化] を選択する。

選択したリンクの XQuery コードの周りに、ブロック用の XQuery コードが追加される。このコードによって、リンクの XQuery コードは実行時に実行されなくなる。

[対象ノードの有効化]

デザイン ビューで無効になっているリンクを右クリックして、ドロップダウン メニューから [対象ノードの有効化] を選択する。

選択したリンクからブロック用の XQuery コードが削除される。実行時に、リンクの XQuery コードが実行されるようになる。

[リンクの削除]

デザイン ビューで選択されているリンクを右クリックして、ドロップダウン メニューから [リンクの削除] を選択する。

デザイン ビューでは、選択したリンクのグラフィカルな表現が削除され、ソース ビューでは、ソース ノードとターゲット ノードのリンクについて生成された XQuery コードが削除される。


 

マップの表現について

データは、データ リンクによってソース ノードからターゲット ノードに直接変換されます。たとえば、次の図は、priceQuote/customerName 要素と quote/name 要素の間のデータ リンクを示します。

図 2-8 データ リンク

データ リンク


 

priceQuote/customerNamequote/name は、両方とも XML String 要素です。実行時に priceQuote/customerName 要素のデータは、上の図のように quote/name 要素に変換されます。

これら 2 つの要素をリンクする XQuery コードを変更すると、これらの要素間のリンクは、データ リンク (青色の線で表示) から暗黙的なリンク (明るいグレーの線で表示) に変更されます。

次の表に、さまざまなリンクの表現を示します。

リンクの種類

XQuery Mapper により生成

されたリンクかどうか

説明

XQuery Mapper で現在リンクが選択されているかどうか

リンクの表現

データ リンク

リンクはドラッグ アンド ドロップで生成される。

ソース ノードの値をターゲット ノードの値に直接変換するリンク。

未選択


 

データ リンク


 

選択

データ リンク


 

構造リンク

リンクはドラッグ アンド ドロップで生成される。

データを直接マップしない 2 つの親構造間のリンク。

未選択

データ リンク


 

選択

データ リンク


 

データ構造リンク

リンクはドラッグ アンド ドロップで生成される。

データ構造リンクは、以下の 2 つのリンクを組み合わせたものである。

  • 2 つのノード間のデータ リンク - ソース ノードの値をターゲット ノードの値に直接変換するリンク。

  • 構造リンク - 2 つの構造間のリンク。

: 反復する要素の任意の子ノード間のリンク。

未選択

データ リンク


 

選択

データ リンク


 


 

マップ トランスフォーメーションのリンクについて

[ソース] ペインのノードを、[対象] ペインにドラッグしている間は、2 つのノードの間に一時的なリンク (破線) が表示されます。破線の色は、ソース ノードとターゲット ノードの間の互換性によって異なります。次の表を参照してください。

リンクの種類

Mapper によって作成

されたリンクかどうか

説明

Mapper で現在リンクが選択されているかどうか

リンクの表現

制約リンク

リンクはドラッグ アンド ドロップで生成される。

ソースの親構造間の結合の結果データに制約や制限を付けるリンク。制約リンクは 2 つのソース ノードで作成される。

: 制約リンクは、特定のソース要素の値が互いに等しい場合に、データを返すためにのみ、2 つの反復するソース要素の結合に追加できる。

未選択

データ リンク


 

選択

データ リンク


 

コピー リンク

リンクはドラッグ アンド ドロップで生成される。

2 つの同一のスキーマ サブ構造の間のリンク。実行時に、ソース データはターゲット データにブロックごと直接コピーされる。

型なしの XML ノードと型付きの XML 複合型ノードの間のマッピングを行うと、コピー リンクも生成される。

未選択

データ リンク


 

選択

データ リンク


 

暗黙的なリンク

新しい XQuery コードを記述したり既存の XQuery コードを変更したりすることで、ノード間にリンクが作成される。

XQuery コードが XQuery Mapper によって別のタイプのリンクであると解釈されないリンク。

: [対象の式] タブの [一般式] セクションまたはソース ビューを使用して変更されたデータ リンク。たとえば、fn:upper-case 関数のリンクへの追加などがある。2 つの構造リンクのセットに和集合の制約が適用されている場合に、子ノードの 2 番目のセット間に生成されるデータ リンク。子ノードは同じサブスキーマのものでなければならない。

未選択

データ リンク


 

選択

データ リンク


 

破線の色

説明

赤色

ソース ノードとターゲット ノードの間にリンクは作成できない。ターゲット ノードのデータ型は、ソース ノードのデータ型に変換できない(リンクは無効なマッピングを表す)。たとえば、データ型が XML string であるノードは、反復する XML ノードに変換できない。ソース ノードをターゲット ノードにドラッグすると、赤色のエラー メッセージが表示される。

オレンジ色

ソース ノードとターゲット ノードの間にリンクを作成できるが、データ型に完全な互換性はない。ソース ノードをターゲット ノードにドラッグすると、非互換性または必要な変換を表すオレンジ色の警告メッセージが表示される。

緑色

ソース ノードとターゲット ノードの間にリンクを作成できる。ターゲット ノードのデータ型は、ソース ノードのデータ型と互換性がある。


 

ソース ノードがターゲット ノード上にドロップされた後で、リンクを表す線が表示されます。ターゲット ノードとソース ノードに応じて、破線または実線が表示されます。

 


XML のグローバル要素、グローバル型、ローカル要素、および属性

XML スキーマ型または要素は、schema 要素の直接の子である場合は「グローバル」、schema 要素の直接の子でない場合 (他の要素にネストされている場合) は「ローカル」と見なされます。次の XML スキーマを参照してください。

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.acme.org/globalExample"
xmlns="http://www.acme.org/globalExample"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="globalElement">
<xs:complexType>
<xs:sequence>
<xs:element name="localElement"
minOccurs="1" maxOccurs="1"
type="xs:string" />
</xs:sequence>
<xs:attribute name="attribute"
type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:complexType name="globalType">
<xs:sequence>
<xs:element name="anotherLocalElement"
minOccurs="0" maxOccurs="unbounded"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>

上記の XML スキーマの例では、globalElementschema 要素の直接の子であるためグローバルです。一方、localElementglobalElement の子であるためローカルです。

上記の XML スキーマの下のほうにある globalType 要素のように、グローバル型を定義することもできます。XML スキーマに含めることのできるグローバル要素は 1 つだけですが、単一の XML スキーマ内に同じグローバル型を持つ要素を複数 (異なる名前で) 宣言できます。

次の表に、これらの異なる XML コンポーネントの XQuery Mapper におけるグラフィカルな表現を示します。

名前

XQuery Mapper での表現

上記の XML スキーマ例での名前

グローバル要素

データ リンク


 

globalElement および anotherglobaElement

ローカル要素

データ リンク


 

localElement

グローバル型

データ リンク


 

globalType

属性

データ リンク


 

globalElement に定義されている attribute


 

 

ナビゲーション バーのスキップ  ページの先頭 前 次