XQuery Mapper を使用したデータの変換
XQuery を使用したデータの変換
この節では、BEA XQuery Mapper を使用してデータ トランスフォーメーションをグラフィカルに作成する方法について説明します。グラフィカル インタフェースを使用して、スキーマのソース要素をスキーマの対象要素にマップできます。マップを行うと、XQuery Mapper により XQuery が生成され、.xq ファイルとして保存されます。
この節の内容は以下のとおりです。
XQuery Mapper の起動
BEA AquaLogic Service Bus をインストールすると、Eclipse 3.0 と Eclipse 用の XQuery Mapper プラグインが共にインストールされます。
注意 : AquaLogic Service Bus 2.0 リリースの場合、Eclipse 3.0 は Windows プラットフォームでのみサポートされます。
XQuery Mapper インストールの一部として、デフォルトのスキーマを含むサンプル プロジェクトが提供されます。サンプル プロジェクトの詳細については、「XQuery Mapper サンプル プロジェクト」を参照してください。
Eclipse を起動するには
[スタート] メニューから、[プログラム|BEA Products|Tools|XQuery Mapper] を選択します。
Eclipse メニュー バーから、[Window|Open Perspective|Other|XQuery トランスフォーメーション] を選択して XQuery Transformation Perspective を開きます。
注意 : XQuery ファイルを開くと、XQuery Transformation Perspective が自動的に起動します。ただし、XQuery Mapper が開かれており、XQuery ファイルが開かれていない場合は、XQuery Transformation Perspective を手動で起動する必要があります。
XQuery Mapper サンプル プロジェクト
サンプル プロジェクトを起動すると、「例 : XQuery を使用したデータの操作と制約」に示されているように、サンプル スキーマ ファイルを使用して XQuery トランスフォーメーションを作成できます。
詳細については、以下のトピックを参照してください。
サンプル プロジェクトを起動するには
サンプル プロジェクトは、Eclipse 内または Windows ファイル システムから起動できます。
Eclipse メニュー バーから、[Help|Welcome] を選択し、次に、[サンプル|Data Transformation Samples] を選択する。
Windows ファイル システムから開く場合は、以下の場所に移動する。
BEA_HOME\user_projects\eclipse\Samples
XQuery トランスフォーメーションを作成する前に、プロジェクト固有の XML または非 XML スキーマ ファイルをインポートします。ファイルはどの場所からでも XQuery Mapper にインポートできます。Eclipse にファイルをインポートする前に、ビジネス ニーズに応じたフォルダ ディレクトリ構造を作成することをお勧めします。詳細については、「スキーマ ファイルのインポート」を参照してください。
サンプル プロジェクトには、以下のフォルダとファイルが含まれます。
新しい XQuery Mapper プロジェクトの作成
新しいプロジェクトを作成するには、Eclipse の [New Project] ウィザードを使用します。このウィザードでは、さまざまな種類のプロジェクトから新しいプロジェクトを選択するよう求められます。XQuery Mapper の場合は、[Simple] を選択して基本的なプロジェクトを作成します。
新しい XQuery Mapper プロジェクトを作成するには
[File|New|Project] を選択します。
[New Project] ウィザードが開きます。ウィザードで、以下のいずれかを選択するよう求められます。
[CVS] : このオプションを使用すると、既存のソース コントロール システムからプロジェクトをインポートできます。
[Simple] : このオプションを使用すると、既存のファイル システムからプロジェクトをインポートできます。
例 : TestProject1
[Use Default] がチェックされていることを確認します。
スキーマ ファイルのインポート
スキーマ ファイルはどの場所からでもインポートできます。以下のスキーマ タイプがサポートされています。
XSD (XML スキーマ定義) : XML データのコンテンツを記述し、制約します。XQuery Mapper では複数のネームスペースがサポートされています。たとえば、特定のネームスペースで有効な 2 つのソース XML ファイルを、それらとは異なるネームスペースで有効な別の XML ファイルに変換できます。XML スキーマのインポートに関する詳細については、「XML スキーマのインポート」を参照してください。
MFL (メッセージ フォーマット言語) : 非 XML データのコンテンツを記述し、制約します。たとえば、COBOL コピーブックや C 構造体定義のデータを使用できます。MFL 要素のネームスペースは、MFL ドキュメントのファイル名から派生します。MFL ファイルは Format Builder ツールで作成され、拡張子 .mfl
が付きます。詳細については、Format Builder のオンライン ヘルプを参照してください。
この節の内容は以下のとおりです。
XML スキーマのインポート
XML スキーマは、Eclipse の外部で作成および格納されます。インポートされたスキーマ ファイルは、以下の図に示されているように [新しい XQuery トランスフォーメーション] ウィザードで使用できます。
図 2-1 [新しい XQuery トランスフォーメーション] ウィザード
XML スキーマをインポートするには
[Navigator] ウィンドウで、スキーマをインポートするプロジェクトを選択します。
[Import] ウィザードが表示されます。このウィザードを使用すると、スキーマをさまざまなソースからインポートできます。選択するインポート ソースは、スキーマが格納されている場所によって異なります。
インポート タイプを選択してから、[Next] をクリックします。
選択したインポート タイプに応じて、適切なファイルを検索します。
たとえば、ローカル ファイル システムからインポートする場合は、ローカルに格納されているファイルを検索するよう求められます。
入力スキーマを検索し選択してから、[Finish] をクリックします。
MFL スキーマのインポート
インポートされた MFL ファイルは、[新しい XQuery トランスフォーメーション] ウィザードで使用できます。
MFL スキーマをインポートするには
Eclipse で XQuery Mapper Perspective を起動します。
Eclipse と XQuery Perspective の起動の詳細については、「XQuery Mapper の起動」を参照してください。
[Navigator] ウィンドウで、スキーマをインポートするプロジェクトを選択します。
[File|Import] を選択します。[Import] ウィザードが開きます。このウィザードを使用すると、スキーマをさまざまなソースからインポートできます。選択するインポート ソースは、スキーマが格納されている場所によって異なります。
インポート タイプを選択し、[Next] をクリックします。
選択したインポート タイプに応じて、インポート ファイルを検索するよう求められます。
たとえば、ローカル ファイル システムからインポートする場合は、ローカルに格納されているファイルを検索するよう求められます。
入力スキーマを検索し選択してから、[Finish] をクリックします。
MFL ファイルを作成するには
MFL ファイルは Format Builder ツールを使用して作成します。このツールは、Windows の [スタート] メニューまたは Eclipse から起動できます。
Eclipse から Format Builder を起動するには、Eclipse メニュー バーから [ツール|BEA|Format Builder] を選択する。
[スタート] メニューから Format Builder を起動するには、[スタート|プログラム|BEA Products|Tools|Format Builder] を選択する。
Format Builder の詳細については、Format Builder のオンライン ヘルプを参照してください。
ソース データと対象データを選択して XQuery を生成する
[Design] タブをクリックし、XQuery Mapper のデザイン ビューを開きます。このビューでは、ソース データと対象データを選択して、トランスフォーメーション マップを作成できます。デザイン ビューでは、ソース要素と対象要素をグラフィカルにリンクできます。ソース要素と対象要素の間にリンクを作成すると、XQuery ファイル (マップ) が生成されます。XQuery ファイル (マップ) は、デザイン ビューに表示されます。生成された XQuery コードは、[Source] タブをクリックすると表示されます。
ソース データと対象データの組み合わせは以下のとおりです。
非 XML から XML
XML から非 XML
XML から XML
非 XML から非 XML
ソース データと対象データを選択するには
右クリックして、[New|XQuery トランスフォーメーション] を選択します。
[新しい XQuery トランスフォーメーション] ウィザードが開きます。
トランスフォーメーションのファイル名を入力します。
例 : Transform1
[ソースの型] ページが開きます。このページでは、トランスフォーメーションのソースの型を選択できます。
[使用可能なソースの型] ペインで、ソースのデータ型を選択します。
ソースの入力データが XML の場合は、[XML] を選択する。
ソースの入力データが MFL の場合は、[非 XML] を選択する。
注意 : スキーマ表現を [使用可能なソースの型] ペインおよび [使用可能な対象の型] ペインで使用するには、これらのスキーマを含む XML ファイルおよび非 XML ファイルをインポートする必要があります。
たとえば、Schemas/Dates.xsd から入力データを追加する場合は、以下の図に示されているように、最初にそのファイルを選択しその内容を展開して、入力要素として dates を選択します。
図 2-2 ソースの型の選択
ソースの入力パラメータを選択してから、[追加] をクリックします。
[選択されたソースの型] ペインに、選択した要素を構成する要素と属性が表示されます。
ソースの型を追加するには、以上の手順を繰り返します (ソースの型は複数指定できます)。
[対象の型] ページが開きます。このページでは、トランスフォーメーションの対象データを選択できます。
[使用可能な対象の型] ペインで、対象データを選択します。
対象の入力データが XML の場合は、[XML] を選択する。
対象の入力データが MFL の場合は、[非 XML] を選択する。
注意 : スキーマ表現を [使用可能なソースの型] ペインおよび [使用可能な対象の型] ペインで使用するには、これらのスキーマを含む XSD ファイルおよび MFL ファイルを Eclipse プロジェクトにインポートする必要があります。
[選択された対象の型] ペインに、選択した要素を構成する要素と属性が表示されます。
対象のデータ型は 1 つしか指定できません。
デザイン ビューでのデータ トランスフォーメーションの作成
この節の内容は以下のとおりです。
基本的な要素トランスフォーメーションの作成
基本的な要素トランスフォーメーションでは、ソース要素を対象要素にマップします。ソース要素と対象要素には同じ名前、型、またはスコープを指定できる場合とできない場合があります。基本的な要素トランスフォーメーションにはさまざまな種類があります。
その例のいくつかを以下に示します。
要素-要素 : ソース要素が対象要素にマップされます。
要素結合 : 複数のソース要素を結合して 1 つの対象要素を作成します。
要素分割 : XQuery 文字列関数を使用して、1 つのソース要素を複数の対象要素に分割します。
要素-要素トランスフォーメーションを作成するには
これは、マップ ファイルが「デザイン ビューでのデータ トランスフォーメーションの作成」の説明に従って作成されていることを前提としています。
要素-要素リンクを作成するには、[Source] ペインの要素を [Target] ペインの要素にドラッグします。
たとえば、ソース要素 name
と対象要素 name
の間に要素-要素リンクを作成する場合は、以下の図に示されているように [Source] ペインの要素を [Target] ペインにドラッグします。
図 2-3 要素-要素リンク
目的の要素がすべてマップされるまで、以上の手順を繰り返します。
基本的な属性トランスフォーメーションの作成
基本的な属性トランスフォーメーションでは、ソース属性を対象属性にマップします。ソース属性と対象属性には同じ名前、型、またはスコープを指定できる場合とできない場合があります。基本的な属性トランスフォーメーションにはさまざまな種類があります。
その例のいくつかを以下に示します。
要素-属性 : ソース要素が対象属性にマップされます。
属性-要素 : ソース属性が対象要素にマップされます。
属性-属性 : ソース属性が、属性名 (ソースおよび対象) が同じ対象属性にマップされます。
属性-要素トランスフォーメーションを作成するには
マップを作成する XQuery ファイルを開きます。
属性-要素リンクを作成するには、[Source] ペインの属性を [Target] ペインの要素にドラッグします。
たとえば、name
と name
の間に属性-要素リンクを作成する場合は、以下の図に示されているように [Source] ペインの要素を [Target] ペインにドラッグします。
図 2-4 属性-要素リンク
目的の属性がすべてマップされるまで、以上の手順を繰り返します。
複雑なマップ トランスフォーメーションの作成
複雑なマップ トランスフォーメーションの場合は、複雑なソース (たとえば、反復する要素) から複雑な対象 (たとえば、反復しない要素) にマップします。その例のいくつかを以下に示します。
反復グループ-反復グループ : ソースは要素のグループの可変数のインスタンスで構成され、各ソース グループを対象グループのインスタンスにマップする必要があります。
反復グループ-反復しない要素 : ソースは要素のグループの可変数のインスタンスで構成され、各ソース グループを対象要素のインスタンスにマップする必要があります。
反復グループ-反復グループのトランスフォーメーションを作成するには
マップを作成する XQuery ファイルを開きます。
これは、マップ ファイルが「デザイン ビューでのデータ トランスフォーメーションの作成」の説明に従って作成されていることを前提としています。
反復グループ-反復グループのリンクを作成するには、[Source] ペインの要素または属性を [Target] ペインの要素または属性にドラッグします。
たとえば、name
と name
の間に反復グループ-反復グループのリンクを作成する場合は、以下の図に示されているように [Source] ペインの要素を [Target] ペインにドラッグします。
図 2-5 反復グループ-反復グループのリンク
目的の要素と属性がすべてマップされるまで、以上の手順を繰り返します。
マップ トランスフォーメーションの編集
トランスフォーメーションは、作成後に [Source] タブで変更、更新、または削除することができます。
この節の内容は以下のとおりです。
生成された XQuery ファイルの表示と編集
ソース データと対象データ間のリンクを作成すると、その関係を示す XQuery ファイルが生成されます。XQuery Mapper でサポートされている XQuery 言語については、以下の URL を参照してください。
http://www.w3.org/XML/Query
XQuery ファイルを開いて表示および編集するには
生成された XQuery ファイルを含むプロジェクトを選択します。
XQuery コードが表示されます。無効な XQuery コードには赤色の下線が付きます。
必要に応じて、赤色の下線で示されたエラーを修正します。
必要な場合は、XQ ファイルのソース ビューですべての XQuery コードを削除できます。ネームスペース宣言の後にあるすべての XQuery ソース コードを削除して、デザイン ビューでリンクを再作成します。
[制約] タブの使用
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 コードを編集するには
デザイン ビューで、ソース ノードと対象ノードの間のリンクを選択または作成します。
このリンクを選択したままにします。
デフォルトでは、[一般] オプションが選択され、リンクの XQuery コードが [一般式] ペインに表示されます。
クエリは、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 式を追加する以下の手順に加えて、より複雑な例もあります。
これらの例については、「反復するソースと反復しない対象の間のトランスフォーメーションの作成」を参照してください。
XQuery 関数の呼び出しの挿入
この節では、[対象の式] タブを使用して、関数の呼び出しをクエリに挿入する方法について説明します。
XQuery 関数および演算子の詳細については、http://www.w3.org/TR/2005/WD-xpath-functions-20050404/ を参照してください。
この節の内容は以下のとおりです。
クエリ内での XQuery 関数の呼び出し
XQuery Mapper には、標準の W3C XQuery 関数と演算子のセットが用意されています。トランスフォーメーションを作成すると XQuery 言語でクエリが記述され、このクエリによってデータ変換が行われます。生成されたクエリには、標準の XQuery 関数またはユーザ定義関数を追加できます。たとえば、トランスフォーメーションの一部として、XML 文字列を大文字に変換することができます。
Eclipse で XQuery 関数および変数を表示するには
Eclipse で XQuery Mapper Perspective を起動します。
[式の関数] を表示するには、[Window|Show View|式の関数] を選択します。
[式の変数] を表示するには、[Window|Show View|式の変数] を選択します。
XQuery 関数を呼び出すには
[Design] タブで、関数呼び出しを追加するリンクを選択または作成します。
これら 2 つのノード間のリンクが緑色になります。
[Design] タブの下部にあるペインで、[対象の式] タブを選択します。
[対象の式] タブが表示されていない場合は、メニュー バーから [Window|Show View|対象の式] を選択してください。
[一般式] ペインに、選択した対象ノードとソース ノードをリンクする XQuery コードが表示され、選択されます。このコードを選択したままにして、次の手順に進みます。
[一般式] ペインのテキストが削除されます。
フォルダを折りたたんだり展開したりして、目的の関数を検索します。
この例では、String Functions フォルダから upper-case
関数を選択します。
[式の関数] ペインで目的の関数を選択したら、それを [一般式] ペインにドラッグします。
以降の手順を行うために、[一般式] ペインのパラメータ (この例では $string-var
) を選択したままにしておきます。
次のいずれかの方法でソース パラメータを選択します。
[Design] タブの [Source] ペインからソース要素を選択して、[一般式] ペインのパラメータの上にドラッグ アンド ドロップする。
[式の変数] ビューからソース変数を選択して、[一般式] ペインのパラメータの上にドラッグ アンド ドロップする。
関数のすべてのパラメータが割り当てられるまで、以上の手順を繰り返します。
この例を実行すると、upper-case
関数によって $quoteDoc/name
要素のすべての文字が大文字に変換されます。
式の変数の使用
XQuery Mapper の式の変数ビューを使用して、変数とその下位要素にアクセスできます。式の変数ビューから、[制約] タブと [対象の式] タブに変数またはその下位要素をドラッグ アンド ドロップできます。
式の変数ビューには、以下の種類の変数が表示されます。
[ソース] : 式の変数ビューの [ソース] セクションに表示される変数は、XQuery トランスフォーメーション メソッドを設定するペインで、トランスフォーメーションを行うように選択したソースの型です。
[構造リンク] : [Design] タブで構造リンクを選択している場合、式の変数ビューの [構造リンク] セクションには、構造リンクによって生成される XQuery の for ループに関連付けられているループ反復変数が表示されます。この変数のスコープは、構造リンクを持つノードのすべての下位要素です。
XQ ファイル編集時のプロパティ エディタの使用
[Design] タブで XQuery ファイルを編集するときにプロパティ エディタを使用すると、ソースと対象の XSD または MFL ファイルを開かずに、現在のマップ内のノードに関するスキーマ プロパティを表示できます。プロパティ エディタには、選択した要素のスキーマ プロパティに関する読み取り専用のビューが表示されます。
プロパティ エディタ ビューを有効にするには、[Window|Show View|Properties] を選択します。
XML スキーマ プロパティを変更するには、XML スキーマが含まれている XSD ファイルを編集する。
非 XML データのスキーマ プロパティを変更するには、対応する MFL (非 XML) ファイルを編集する。
リンクを選択すると、そのリンクの対象要素とソース要素が選択される。
リンクと、そのリンクの対象ノードとソース ノードを選択解除するには、[Source] ペインと [Target] ペインの間にあるペインで、空いている場所 (リンクのない部分) をクリックする。
マップ トランスフォーメーションのテスト
XQuery Mapper の [Test] タブを使用して、XQuery トランスフォーメーションを検証できます。
この節の内容は以下のとおりです。
XQuery ファイルのテストの詳細については、「XQuery ファイルのテスト」を参照してください。
XQuery Mapper テスト機能の概要
[Test] タブでは以下の機能を使用できます。
[XQuery のテスト] : クエリが実行されて、[ソース データ] ペインに表示されたデータがクエリのマッピングを基に変換され、[結果データ] ペインに結果が表示されます。
[ソース変数] : [ソース変数] プルダウン メニューに表示されている変数は、現在選択されているソース (入力) の型です。他のソースの型を編集するには、プルダウン メニューから他のソースの型を選択します。
[インポート] : 選択された XML ファイルのファイル インポート ダイアログ ボックスが開きます。検証エラーがある場合、テキスト エディタに警告を示す黄色の下線が表示されます。テキスト上にマウスを移動すると、警告メッセージを示すツール チップが表示されます。インポート後は、[XQuery のテスト] をクリックし、インポートされたソース データに対してトランスフォーメーションを実行できます。
ソース データをインポートすると、ソース データは関連付けられたスキーマに対して検証され、警告およびエラーが [結果データ] ペインに表示されます。グローバル型およびローカル要素の XML データはインポートすることができますが、グローバル型およびローカル要素は検証されないため、無効なデータに関するエラーや警告は報告されません。グローバル型とローカル要素の詳細については、「XML のグローバル要素、グローバル型、およびローカル要素」を参照してください。
[エクスポート] : 編集したソース データを XML ファイルにエクスポートできます。トランスフォーメーションのテスト後は、[結果データ] ペインでエクスポート機能を使用して、トランスフォーメーションの結果を XML ファイルに保存できます。
[データの生成] : トランスフォーメーションへの入力として使用されるソース データが再生成されます。[Test] タブの起動時、XQuery Mapper によってソース サンプル データの初期セットが生成され、[ソース データ] ペインに表示されます。データを変更した後でサンプル データを再生成する場合は、[データの生成] をクリックします。たとえば、編集を行った結果、XML ドキュメントが関連付けられた XML スキーマに対して無効になった場合に、サンプル データでやり直すことができます。
[自動検証] : ソースまたは対象スキーマに対してテスト ファイルを検証する場合に選択します。ソース ビューの自動検証オプションは永続的に有効にすることもできますが、状況に応じてオン/オフを切り替えることもできます。
設計時の検証
設計時には、選択されたソース パラメータまたは結果データが型付きのグローバル XML 要素である場合に、XQuery ファイルの [Test] タブにある [ソース データ] ペインおよび [結果データ] ペインで [検証] がアクティブになります。詳細については、「XML のグローバル要素、グローバル型、およびローカル要素」を参照してください。
選択されたソース パラメータまたは結果データが次のいずれかのタイプである場合、検証機能はアクティブになりません。
XQuery ファイルの [Test] タブにある [ソース データ] ペインと [結果データ] ペインのいずれかで [検証] をクリックすると、表示された XML がスキーマに対してチェックされ、設計時のエラーが報告されます。テスト ビューで設計時に行われる検証は、実行時に行われるスキーマ検証とは異なります。設計時の検証では結果の XML ドキュメントは変更されませんが、スキーマで定義されている必須の要素または属性が存在しているかどうかがチェックされます。
デザイン ビューのグラフィカルな表現について
デザイン ビューを使用して、トランスフォーメーションをグラフィカルに作成、変更、または更新することができます。この節では、XQuery Mapper の [Design] タブのグラフィカルな表現について説明します。
この節の内容は以下のとおりです。
リンクのメニュー オプション
メニュー オプション
|
呼び出し方法
|
結果
|
[すべてのリンクを削除]
|
デザイン ビューで [Source] ペインと [Target] ペインの間の空いている場所で右クリックして、ドロップダウン メニューから [すべてのリンクを削除] を選択する。
注意 : [Source] ペインと [Target] ペインの間の空いている場所で右クリックすると、すべてのノードが選択されていない状態になる。
|
デザイン ビューでは、すべてのリンクのグラフィカルな表現が削除され、ソース ビューでは、ソース ノードと対象ノードのリンクについて生成された XQuery コードが削除される。
|
[自動マップ]
|
デザイン ビューで構造リンクを右クリックして、ドロップダウン メニューから [自動マップ] を選択する。
注意 : このメニュー オプションは、デザイン ビューで構造リンクが選択されている場合にのみ使用可能。
|
リンクのソース子要素と対象子要素が同じサブスキーマ タイプである場合、選択した構造リンクの子ノード間にデータ リンクまたはデータ構造リンクが作成される。[自動マップ] オプションで子のリンクを作成するには、対象子要素とソース子要素が同じ名前と同じデータ型を持ち、同じ順序になっている必要がある。
|
[コードの表示]
|
デザイン ビューでリンクを右クリックして、ドロップダウン メニューから [コードの表示] を選択する。
|
表示がデザイン ビューからソース ビューに変わり、リンクの間に生成された XQuery コードが表示される。選択したリンクの XQuery コードは青色で強調表示される。
|
[対象ノードの無効化]
|
デザイン ビューでリンクを右クリックして、ドロップダウン メニューから [対象ノードの無効化] を選択する。
|
選択したリンクの XQuery コードの周りに、ブロック用の XQuery コードが追加される。このコードによって、リンクの XQuery コードは実行時に実行されなくなる。
|
[対象ノードの有効化]
|
デザイン ビューで無効になっているリンクを右クリックして、ドロップダウン メニューから [対象ノードの有効化] を選択する。
|
選択したリンクからブロック用の XQuery コードが削除される。実行時に、リンクの XQuery コードが実行されるようになる。
|
[リンクの削除]
|
デザイン ビューで選択されているリンクを右クリックして、ドロップダウン メニューから [リンクの削除] を選択する。
|
デザイン ビューでは、選択したリンクのグラフィカルな表現が削除され、ソース ビューでは、ソース ノードと対象ノードのリンクについて生成された XQuery コードが削除される。
|
マップの表現について
データは、データ リンクによってソース ノードから対象ノードに直接変換されます。たとえば、次の図は、priceQuote/customerName
要素と quote/name
要素の間のデータ リンクを示します。
図 2-7 データ リンク
priceQuote/customerName
と quote/name
は、両方とも XML String 要素です。実行時に、priceQuote/customerName
要素のデータが上の図のように quote/name
要素に変換されます。
これら 2 つの要素をリンクする XQuery コードを変更すると、これらの要素間のリンクは、データ リンク (青色の線で表示) から暗黙的なリンク (明るいグレーの線で表示) に変更されます。
次の表に、さまざまなリンクの表現を示します。
リンクの種類
|
XQuery Mapper により生成
されたリンクかどうか
|
説明
|
XQuery Mapper で現在リンクが選択されているかどうか
|
リンクの表現
|
データ リンク
|
リンクはドラッグ アンド ドロップで生成される。
|
ソース ノードの値を対象ノードの値に直接変換するリンク。
|
未選択
|
|
選択
|
|
構造リンク
|
リンクはドラッグ アンド ドロップで生成される。
|
データを直接マップしない 2 つの親構造間のリンク。
|
未選択
|
|
選択
|
|
データ構造リンク
|
リンクはドラッグ アンド ドロップで生成される。
|
データ構造リンクは、以下の 2 つのリンクを組み合わせたものである。
例 : 反復する要素の任意の子ノード間のリンク。
|
未選択
|
|
選択
|
|
マップ トランスフォーメーションのリンクについて
[Source] ペインのノードを、[Target] ペインにドラッグしている間は、2 つのノードの間に一時的なリンク (破線) が表示されます。破線の色は、ソース ノードと対象ノードの間の互換性によって異なります。次の表を参照してください。
リンクの種類
|
Mapper によって作成
されたリンクかどうか
|
説明
|
Mapper で現在リンクが選択されているかどうか
|
リンクの表現
|
制約リンク
|
リンクはドラッグ アンド ドロップで生成される。
|
ソースの親構造間の結合の結果データに制約や制限を付けるリンク。制約リンクは 2 つのソース ノードで作成される。
例 : 制約リンクは、特定のソース要素の値が互いに等しい場合に、データを返すためにのみ、2 つの反復するソース要素の結合に追加できる。
|
未選択
|
|
選択
|
|
コピー リンク
|
リンクはドラッグ アンド ドロップで生成される。
|
2 つの同一のスキーマ サブ構造の間のリンク。実行時に、ソース データは対象データにブロックごと直接コピーされる。
型なしの XML ノードと型付きの XML 複合型ノードの間のマッピングを行うと、コピー リンクも生成される。
|
未選択
|
|
選択
|
|
暗黙的なリンク
|
新しい XQuery コードを記述したり既存の XQuery コードを変更したりすることで、ノード間にリンクが作成される。
|
XQuery コードが XQuery Mapper によって別のタイプのリンクであると解釈されないリンク。
例 : [対象の式] タブの [一般式] セクションまたはソース ビューを使用して変更されたデータ リンク。たとえば、xf: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: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 スキーマの例では、globalElement
は schema
要素の直接の子であるためグローバルです。一方、localElement
は globalElement
の子であるためローカルです。
上記の XML スキーマの下部にある globalType
要素のように、グローバル型を定義することもできます。XML スキーマに含めることのできるグローバル要素は 1 つだけですが、単一の XML スキーマ内に同じグローバル型を持つ要素を複数 (異なる名前で) 宣言できます。
次の表に、これらの異なる XML コンポーネントの XQuery Mapper におけるグラフィカルな表現を示します。
名前
|
XQuery Mapper での表現
|
上記の XML スキーマ例での名前
|
グローバル要素
|
|
localElement および anotherLocalElement
|
ローカル要素
|
|
globalElement
|
グローバル型
|
|
globalType
|