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 を起動するには
以下のいずれかの方法で XQuery Mapper を起動します。
Windows の [スタート] メニューから、次のように選択します。
[プログラム|BEA Products|Tools|XQuery Mapper]
起動スクリプトを実行します。この方法で XQuery Mapper を起動する場合は、次のコマンドをダブルクリックすることをお勧めします。
BEA_HOME/weblogic90/common/bin/eclipse.cmd
(BEA_HOME/eclipse31/eclipse.exe
ではありません。)
eclipse.cmd
コマンドを使用すると、適切な JDK が確実に使用されます。
Eclipse メニュー バーから、次のように選択して XQuery トランスフォーメーション Perspective を開きます。
[Window|Open Perspective|Other|XQuery トランスフォーメーション]
注意 : XQuery ファイルを開くと、XQuery トランスフォーメーション Perspective が自動的に起動します。ただし、XQuery Mapper が開いており、XQuery ファイルが開いていない場合は、XQuery トランスフォーメーション Perspective を手動で起動する必要があります。
XQuery Mapper サンプル プロジェクト
サンプル プロジェクトを起動すると、「例 : XQuery を使用したデータの操作と制約」に示されているように、サンプル スキーマ ファイルを使用して XQuery トランスフォーメーションを作成できます。
詳細については、以下のトピックを参照してください。
サンプル プロジェクトを起動するには
サンプル プロジェクトは Eclipse 内から起動できます。
Eclipse メニュー バーから、[Help|Welcome] を選択します。次に、[サンプル|Data Transformation Samples] を選択します。
サンプル プロジェクトには、以下のフォルダとファイルが含まれます。
XQuery トランスフォーメーションを作成する前に、プロジェクト固有の XML スキーマ ファイル、WSDL ファイル、または MFL ファイルを作成またはインポートすることができます。ファイルはどの場所からでも 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 スキーマのインポート」を参照してください。
WSDL (Web Service Definition Language) : WSDL ファイルで定義された XML スキーマをトランスフォーメーションで使用できます。
MFL (メッセージ フォーマット言語) : 非 XML データのコンテンツを記述し、制約します。たとえば、COBOL コピーブックや C 構造体定義のデータを使用できます。MFL 要素のネームスペースは、MFL ドキュメントのファイル名から派生します。MFL ファイルは Format Builder ツールで作成され、拡張子 .mfl
が付きます。詳細については、Format Builder のオンライン ヘルプを参照してください。
この節の内容は以下のとおりです。
XML スキーマのインポート
XML スキーマは、Eclipse の外部で作成および格納されます。ただし、XML スキーマ エディタを使用して XML スキーマを作成することもできます。インポートまたは作成されたスキーマ ファイルは、以下の図に示されているように [新しい XQuery トランスフォーメーション] ウィザードで使用できます。XML スキーマの作成については、「XML スキーマ エディタを使用した XML スキーマ ファイルの作成」を参照してください。
図 2-1 [新しい XQuery トランスフォーメーション] ウィザード
XML スキーマをインポートするには
[Navigator] ウィンドウで、スキーマをインポートするプロジェクトを選択します。
[Import] ウィザードが表示されます。このウィザードを使用すると、スキーマをさまざまなソースからインポートできます。選択するインポート ソースは、スキーマが格納されている場所によって異なります。
インポート タイプを選択してから、[Next] をクリックします。
選択したインポート タイプに応じて、適切なファイルを検索します。
たとえば、ローカル ファイル システムからインポートする場合は、ローカルに格納されているファイルを検索するよう求められます。
入力スキーマを検索し選択してから、[Finish] をクリックします。
XML スキーマ エディタを使用した XML スキーマ ファイルの作成
Eclipse に付属する XML スキーマ エディタを使用して XML スキーマ ファイルを作成できます。
XML スキーマ ファイルを作成するには
[Navigator] ウィンドウで、スキーマ ファイルを作成するプロジェクトを右クリックします。
[New] ウィザードが開きます。
[AquaLogic Service Bus] または [XML] ウィザード タイプを選択します。
[XML Schema] を選択し、[Next] をクリックします。
スキーマ ファイルを作成する親フォルダを選択します。
例 : NewXMLSchema
指定したプロジェクトにスキーマ ファイルが作成されます。これで、スキーマの詳細を指定し、ファイルを保存することができます。
注意 : XML スキーマ エディタの使用に関する詳細については、次の URL にある「XML Schema Editor Tutorial」を参照してください。
http://www.eclipse.org/webtools/community/tutorials/XMLSchemaEditor/XMLSchemaEditorTutorial.html
WSDL エディタを使用した WSDL ファイルの作成
Eclipse に付属する WSDL エディタを使用して WSDL ファイルを作成できます。WSDL ファイルで定義された XML スキーマをトランスフォーメーションで使用できます。
WSDL ファイルを作成するには
[Navigator] ウィンドウで、WSDL ファイルを作成するプロジェクトを右クリックします。
[New] ウィザードが開きます。
[AquaLogic Service Bus] または [XML] ウィザード タイプを選択します。
[WSDL] を選択し、[Next] をクリックします。
WSDL ファイルを作成する親フォルダを選択します。
例 : NewWSDLFile
WSDL ファイルのターゲット ネームスペースおよびプレフィックスを入力します。
必要に応じて、[Create WSDL Skeleton] チェックボックスをチェックします。
プロトコルとバインドのオプションを選択した後、[Finish] をクリックします。
指定したプロジェクトに WSDL ファイルが作成されます。
注意 : WSDL エディタの使用に関する詳細については、次の URL にある「WSDL Editor Tutorial」を参照してください。
http://www.eclipse.org/webtools/community/tutorials/WSDLEditor/WSDLEditorTutorial.html
MFL スキーマのインポート
インポートされた MFL ファイルは、[新しい XQuery トランスフォーメーション] ウィザードで使用できます。
MFL スキーマをインポートするには
[Navigator] ウィンドウで、スキーマをインポートするプロジェクトを選択します。
[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 を生成する
[デザイン] タブをクリックし、XQuery Mapper のデザイン ビューを開きます。このビューでは、ソースとターゲットのデータ型を選択して、トランスフォーメーション マップを作成できます。デザイン ビューでは、ソース要素とターゲット要素をグラフィカルにリンクできます。ソース要素とターゲット要素の間にリンクを作成すると、XQuery ファイル (マップ) が生成されます。生成される XQuery ファイルには、.xq という拡張子が付きます。XQuery ファイル (マップ) は、デザイン ビューに表示されます。生成された XQuery コードは、[ソース] タブをクリックすると表示されます。
ソースとターゲットのデータ型の組み合わせは以下のとおりです。
非 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] を選択します。
ターゲット入力データが 非 XML の場合は、[非 XML] を選択します。
注意 : スキーマ表現を [使用可能なソースの型] ペインおよび [使用可能な対象の型] ペインで表示されるようにするには、そのスキーマを含む XSD ファイルおよび MFL ファイルを Eclipse プロジェクトにインポートする必要があります。
[選択された対象の型] ペインに、選択した要素を構成する要素と属性が表示されます。
注意 : ターゲットのデータ型は 1 つしか指定できません。
デザイン ビューでのデータ トランスフォーメーションの作成
この節の内容は以下のとおりです。
基本的な要素トランスフォーメーションの作成
基本的な要素トランスフォーメーションでは、ソース要素をターゲット要素にマップします。ソース要素とターゲット要素には同じ名前、型、またはスコープを指定できる場合とできない場合があります。基本的な要素トランスフォーメーションにはさまざまな種類があります。
その例のいくつかを以下に示します。
要素-要素 : ソース要素がターゲット要素にマップされます。
要素結合 : 複数のソース要素を結合して 1 つのターゲット要素を作成します。
要素分割 : XQuery 文字列関数を使用して、1 つのソース要素を複数のターゲット要素に分割します。
要素-要素トランスフォーメーションを作成するには
マップを作成する XQuery ファイルを開きます。
これは、マップ ファイルが「ソースとターゲットのデータ型を選択して XQuery を生成する」の説明に従って作成されていることを前提としています。
要素-要素リンクを作成するには、[ソース] ペインの要素を [対象] ペインの要素にドラッグします。
たとえば、ソース要素 customer-name
とターゲット要素 customer-name
の間に要素-要素リンクを作成する場合は、以下の図に示されているように [ソース] ペインの要素を [対象] ペインにドラッグします。
図 2-3 要素-要素リンク
目的の要素がすべてマップされるまで、以上の手順を繰り返します。
基本的な属性トランスフォーメーションの作成
基本的な属性トランスフォーメーションでは、ソース属性をターゲット属性にマップします。ソース属性とターゲット属性には同じ名前、型、またはスコープを指定できる場合とできない場合があります。基本的な属性トランスフォーメーションにはさまざまな種類があります。
その例のいくつかを以下に示します。
要素-属性 : ソース要素がターゲット属性にマップされます。
属性-要素 : ソース属性がターゲット要素にマップされます。
属性-属性 : ソース属性が、(ソースとターゲットで) 同じ属性名のターゲット属性にマップされます。
属性-要素トランスフォーメーションを作成するには
マップを作成する XQuery ファイルを開きます。
属性-要素リンクを作成するには、[ソース] ペインの属性を [対象] ペインの要素にドラッグします。
たとえば、street
属性と street
要素の間に属性-要素リンクを作成する場合は、以下の図に示されているように [ソース] ペインの要素を [対象] ペインにドラッグします。
図 2-4 属性-要素リンク
目的の属性がすべてマップされるまで、以上の手順を繰り返します。
複雑なマップ トランスフォーメーションの作成
複雑なマップ トランスフォーメーションの場合は、複雑なソース (たとえば、反復する要素) から複雑なターゲット (たとえば、非反復要素) にマップします。その例のいくつかを以下に示します。
反復グループ-反復グループ : ソースは要素のグループの可変数のインスタンスで構成され、各ソース グループをターゲット グループのインスタンスにマップする必要があります。
反復グループ-非反復要素 : ソースは、要素のグループの可変個のインスタンスから成ります。各ソース グループは、ターゲット要素のインスタンスにマップする必要があります。
反復グループ-反復グループのトランスフォーメーションを作成するには
マップを作成する XQuery ファイルを開きます。
これは、マップ ファイルが「ソースとターゲットのデータ型を選択して XQuery を生成する」の説明に従って作成されていることを前提としています。
反復グループ-反復グループ リンクを作成するには、[ソース] ペインの要素または属性を [対象] ペインの要素または属性にドラッグします。
たとえば、product
と product
の間に反復グループ-反復グループ リンクを作成する場合は、以下の図に示されているように [ソース] ペインの要素を [対象] ペインにドラッグします。
図 2-5 反復グループ-反復グループのリンク
目的の要素と属性がすべてマップされるまで、以上の手順を繰り返します。
マップ トランスフォーメーションの編集
トランスフォーメーションは、作成後に [Source] タブで変更、更新、または削除することができます。
この節の内容は以下のとおりです。
生成された XQuery ファイルの表示と編集
ソース データとターゲット データ間のリンクを作成すると、その関係を示す XQuery ファイルが生成されます。XQuery Mapper でサポートされている XQuery 言語については、以下の URL を参照してください。
http://www.w3.org/XML/Query
XQuery ファイルを開いて表示および編集するには
生成された 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 言語で記述されます。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 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 関数および変数を表示するには
[式の関数] を表示するには、[Window|Show View|式の関数] を選択します。
[式の変数] を表示するには、[Window|Show View|式の変数] を選択します。
XQuery 関数を呼び出すには
[デザイン] タブで、関数呼び出しを追加するリンクを選択または作成します。
これら 2 つのノード間のリンクが緑色になります。
[デザイン] タブの下部にあるペインで、[対象の式] タブを選択します。
[対象の式] タブが表示されていない場合は、メニュー バーから [Window|Show View|対象の式] を選択してください。
[一般式] ペインに、選択したターゲット ノードとソース ノードをリンクする XQuery コードが表示され、選択されます。このコードを選択したままにして、次の手順に進みます。
[一般式] ペインで [削除] をクリックし、XQuery コードを削除します。
[式の関数] ペインでフォルダを折りたたんだり展開したりして、目的の関数を見つけます。
この例では、文字列関数 フォルダから upper-case
関数を選択します。
[式の関数] ペインで目的の関数を選択し、それを [一般式] ペインにドラッグします。
以下の手順では、[一般式] ペインで選択されている関数のパラメータ (この例では upper-case
関数の $string-var
パラメータ) を選択したままにしておきます。
注意 : BEA Systems によって定義された trim-left
などの XQuery 関数には、fn-bea:
というプレフィックスが付いています。[式の関数] ペインに表示されない XQuery 関数でも、XQuery 仕様で定義されていれば、プレフィックス fn:
を付けて使用できます。
次のいずれかの方法でソース パラメータを選択します。
[デザイン] タブの [ソース] ペインからソース要素を選択して、[一般式] ペインのパラメータの上にドラッグ アンド ドロップします。
[式の変数] ビューからソース変数を選択して、[一般式] ペインのパラメータの上にドラッグ アンド ドロップします。
関数のすべてのパラメータが割り当てられるまで、以上の手順を繰り返します。
この例を実行すると、upper-case
関数によってソース要素のすべての文字が大文字に変換されます。
式の変数の使用
XQuery Mapper の式の変数ビューを使用して、変数とその下位要素にアクセスできます。式の変数ビューから、[制約] タブと [対象の式] タブに変数またはその下位要素をドラッグ アンド ドロップできます。
式の変数ビューには、以下の種類の変数が表示されます。
[ソース] : 式の変数ビューの [ソース] セクションに表示される変数は、XQuery トランスフォーメーション メソッドを設定するペインで、トランスフォーメーションを行うように選択したソースの型です。
[構造リンク] : [デザイン] タブで構造リンクを選択している場合、式の変数ビューの [構造リンク] セクションには、構造リンクによって生成される XQuery の for ループに関連付けられているループ反復変数が表示されます。この変数のスコープは、構造リンクを持つノードのすべての下位要素です。
XQuery ファイル編集時のプロパティ エディタの使用
[デザイン] タブで XQuery ファイルを編集するときに、プロパティ エディタを使用すると、ソースとターゲットの XSD または MFL ファイルを開かずに、現在のマップ内のノードに関するスキーマ プロパティを表示できます。そのため、[ソース]、[対象]、または [式の変数] ペインで要素または属性を選択し、関連付けられたスキーマ プロパティをプロパティ エディタで表示できます。プロパティ エディタには、選択した要素のスキーマ プロパティに関する読み取り専用のビューが表示されます。
プロパティ エディタ ビューを有効にするには、[Window|Show View|Properties] を選択します。
XML スキーマ プロパティを変更するには、XML スキーマが含まれている XSD ファイルを編集します。
非 XML データのスキーマ プロパティを変更するには、対応する MFL (非 XML) ファイルを編集します。
リンクを選択すると、そのリンクのターゲット要素とソース要素が選択されます。
リンクと、そのリンクのターゲット ノードとソース ノードを選択解除するには、[ソース] ペインと [対象] ペインの間にあるペインで、空いている場所 (リンクのない部分) をクリックします。
マップ トランスフォーメーションのテスト
XQuery Mapper の [テスト] タブを使用して、XQuery トランスフォーメーションを検証できます。
この節の内容は以下のとおりです。
XQuery ファイルのテストの詳細については、「XQuery ファイルのテスト」を参照してください。
XQuery Mapper テスト機能の概要
Mapper のテスト ビューを使用して、自分で定義したトランスフォーメーションを検証できます。以下の図に示すテスト ビューで、適切なアイコンを選択します。
図 2-7 テスト ビュー
テスト ビューでは以下の機能を使用できます。
[XQuery のテスト] : クエリが実行されて、[ソース データ] ペインに表示されたデータがクエリのマッピングを基に変換され、[結果データ] ペインに結果が表示されます。
[ソース変数] : [ソース変数] ドロップダウン リストに表示されている変数は、現在選択されているソース (入力) の型です。他のソースの型を編集するには、ドロップダウン リストから他のソースの型を選択して、表示されたソースの型を変更します。
[インポート] : インポートする XML ファイルを選択するファイル インポート ダイアログ ボックスが開きます。インポートが終わると、検証エラーには、テキスト エディタで警告を示す黄色の下線が表示されます。テキスト上にマウスを移動すると、警告メッセージを示すツール チップが表示されます。テスト アイコンをクリックし、インポートしたソース データを使用してトランスフォーメーションを実行します。
ソース データをインポートすると、ソース データは関連付けられたスキーマを基に検証され、警告やエラーがある場合はマークが付けられます。グローバル型およびローカル要素の XML データはインポートすることができますが、グローバル型およびローカル要素は検証されないため、無効なデータに関するエラーや警告は報告されません。グローバル型とローカル要素の詳細については、「XML のグローバル要素、グローバル型、ローカル要素、および属性」を参照してください。
[エクスポート] : 編集したソース データを XML ファイルにエクスポートできます。トランスフォーメーションのテスト後は、[結果データ] ペインでエクスポート機能を使用して、トランスフォーメーションの結果を XML ファイルに保存できます。
[データの生成] : トランスフォーメーションへの入力として使用されるソース データが再生成されます。[テスト] タブの起動時、XQuery Mapper によってソース サンプル データの初期セットが生成され、[ソース データ] ペインに表示されます。データを変更した後でサンプル データを再生成する場合は、[データの生成] をクリックします。たとえば、編集を行った結果、XML ドキュメントが関連付けられた XML スキーマに対して無効になった場合に、サンプル データでやり直すことができます。
[自動検証] : ソースまたはターゲット スキーマに基づいてテスト ファイルを検証する場合に選択します。ソース ビューの自動検証オプションは永続的に有効にすることもできますが、状況に応じてオン/オフを切り替えることもできます。
設計時の検証
設計時には、選択されたソース パラメータまたは結果データが型付きのグローバル XML 要素である場合にのみ、XQuery ファイルの [テスト] タブにある [ソース データ] ペインの [自動検証] および [結果データ] ペインの [検証] が有効になります。詳細については、「XML のグローバル要素、グローバル型、ローカル要素、および属性」を参照してください。
選択されたソース パラメータまたは結果データが次のいずれかのタイプである場合、検証は有効になりません。
XQuery ファイルの [テスト] タブにある [ソース データ] ペインの [自動検証] および [結果データ] ペインの [検証] をクリックすると、表示された XML がスキーマを基にチェックされ、設計時のエラーが報告されます。テスト ビューで設計時に行われる検証は、実行時に行われるスキーマ検証とは異なります。設計時の検証では結果の XML ドキュメントは変更されませんが、スキーマで定義されている必須の要素または属性が存在しているかどうかがチェックされます。
デザイン ビューのグラフィカルな表現について
デザイン ビューを使用して、トランスフォーメーションをグラフィカルに作成、変更、または更新することができます。この節では、XQuery Mapper の [デザイン] タブのグラフィカルな表現について説明します。
この節の内容は以下のとおりです。
リンクのメニュー オプション
メニュー オプション
|
呼び出し方法
|
結果
|
[すべてのリンクを削除]
|
デザイン ビューで [ソース] ペインと [対象] ペインの間の空いている場所で右クリックして、ドロップダウン メニューから [すべてのリンクを削除] を選択する。
注意 : [ソース] ペインと [対象] ペインの間の空いている場所で右クリックすると、すべてのノードが選択されていない状態になる。
|
デザイン ビューでは、すべてのリンクのグラフィカルな表現が削除され、ソース ビューでは、ソース ノードとターゲット ノードをリンクしている生成された XQuery コードが削除される。
|
[自動マップ]
|
デザイン ビューで構造リンクを右クリックして、ドロップダウン メニューから [自動マップ] を選択する。
注意 : このメニュー オプションは、デザイン ビューで構造リンクが選択されている場合にのみ使用可能。
|
リンクのソース子要素とターゲット子要素が同じサブスキーマ タイプである場合、選択した構造リンクの子ノード間にデータ リンクまたはデータ構造リンクが作成される。[自動マップ] オプションで子のリンクを作成するには、ターゲット子要素とソース子要素が同じ名前と同じデータ型を持ち、同じ順序になっている必要がある。
|
[コードの表示]
|
デザイン ビューでリンクを右クリックして、ドロップダウン メニューから [コードの表示] を選択する。
|
表示がデザイン ビューからソース ビューに変わり、リンクの間に生成された XQuery コードが表示される。選択したリンクの XQuery コードは青色で強調表示される。
|
[対象ノードの無効化]
|
デザイン ビューでリンクを右クリックして、ドロップダウン メニューから [対象ノードの無効化] を選択する。
|
選択したリンクの XQuery コードの周りに、ブロック用の XQuery コードが追加される。このコードによって、リンクの XQuery コードは実行時に実行されなくなる。
|
[対象ノードの有効化]
|
デザイン ビューで無効になっているリンクを右クリックして、ドロップダウン メニューから [対象ノードの有効化] を選択する。
|
選択したリンクからブロック用の XQuery コードが削除される。実行時に、リンクの XQuery コードが実行されるようになる。
|
[リンクの削除]
|
デザイン ビューで選択されているリンクを右クリックして、ドロップダウン メニューから [リンクの削除] を選択する。
|
デザイン ビューでは、選択したリンクのグラフィカルな表現が削除され、ソース ビューでは、ソース ノードとターゲット ノードのリンクについて生成された XQuery コードが削除される。
|
マップの表現について
データは、データ リンクによってソース ノードからターゲット ノードに直接変換されます。たとえば、次の図は、priceQuote/customerName
要素と quote/name
要素の間のデータ リンクを示します。
図 2-8 データ リンク
priceQuote/customerName
と quote/name
は、両方とも XML String 要素です。実行時に priceQuote/customerName
要素のデータは、上の図のように quote/name
要素に変換されます。
これら 2 つの要素をリンクする XQuery コードを変更すると、これらの要素間のリンクは、データ リンク (青色の線で表示) から暗黙的なリンク (明るいグレーの線で表示) に変更されます。
次の表に、さまざまなリンクの表現を示します。
リンクの種類
|
XQuery Mapper により生成
されたリンクかどうか
|
説明
|
XQuery Mapper で現在リンクが選択されているかどうか
|
リンクの表現
|
データ リンク
|
リンクはドラッグ アンド ドロップで生成される。
|
ソース ノードの値をターゲット ノードの値に直接変換するリンク。
|
未選択
|
|
選択
|
|
構造リンク
|
リンクはドラッグ アンド ドロップで生成される。
|
データを直接マップしない 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 スキーマの例では、globalElement
は schema
要素の直接の子であるためグローバルです。一方、localElement
は globalElement
の子であるためローカルです。
上記の XML スキーマの下のほうにある globalType
要素のように、グローバル型を定義することもできます。XML スキーマに含めることのできるグローバル要素は 1 つだけですが、単一の XML スキーマ内に同じグローバル型を持つ要素を複数 (異なる名前で) 宣言できます。
次の表に、これらの異なる XML コンポーネントの XQuery Mapper におけるグラフィカルな表現を示します。
名前
|
XQuery Mapper での表現
|
上記の XML スキーマ例での名前
|
グローバル要素
|
|
globalElement および anotherglobaElement
|
ローカル要素
|
|
localElement
|
グローバル型
|
|
globalType
|
属性
|
|
globalElement に定義されている attribute
|