この章では、eXtensible Stylesheet Language Transformation (XSLT)の概要と、Service BusサービスでXSLTを使用してXML入力をXML出力にマップする方法を説明します。また、Service Busプロジェクト内でXSLTマップを作成する方法についても説明します。
この章の内容は次のとおりです。
JDeveloperでのXSLTマッパーの詳細は、Oracle SOA Suiteを使用したSOAアプリケーションの開発のXSLTマップ・エディタを使用した変換の作成に関する項を参照してください。
トランスフォーメーション・マップは、2つのデータ型の間のマッピングを記述したものです。eXtensible Stylesheet Language Transformation (XSLT)マップは、スキーマの異なるXMLドキュメント間のマッピングを記述したものです。Service BusでXSLTを使用すると、XMLドキュメントを処理して、ドキュメント・データをXMLスキーマから別のXMLスキーマに変換できます。これにより、異なるスキーマを使用するアプリケーション間でデータの交換が可能になります。XSLTを使用して、複雑なデータ操作と変換を実行できます。たとえば、受信する発注スキーマを、送信する請求書スキーマにマップできます。
JDeveloperには、XQueryを使用した変換をスクリプト化できる式ビルダーと、複雑なマッピングを作成できるXSLTマッパーがあります。Oracle Service Busコンソールには、XQueryを使用した変換をスクリプト化できるエディタと、複雑なマッピングを作成できるXSLTマッパーがあります。これらのエディタには、XQuery式を定義したり、実行するXSLTリソースを指定したり、既存のXSLTリソースの名前として実行時に評価される式を定義したりするオプションが用意されています。JDeveloperおよびコンソールのいずれの場合も、パイプラインまたは分割-結合のいずれかのアクションからエディタにアクセスします。
JDeveloperのXSLTマッパーは、スキーマのルート要素、WSDLメッセージ・パート、またはWSDLメッセージの間のマッピングを定義できるグラフィカル・ツールです。スキーマのルート要素はXSDスキーマ・ファイルまたはWSDLファイルから取得できますが、直接マップできるのは、単一のメッセージ・パートを含むWSDLメッセージのみです。JDeveloperでXSLTマッピングを作成したら、マッパーで生成された.xsl
ファイルをOracle Service BusコンソールのXSLTリソースにアップロードできます。
JDeveloperには様々な式ビルダーも用意されており、式を作成して、使用する既存のXSLTリソースを指定できます。JDeveloperのマッパーとエディタの詳細は、次のトピックを参照してください。
Oracle SOA Suiteを使用したSOAアプリケーションの開発のXSLTマップ・エディタを使用した変換の作成に関する項
Oracle SOA Suiteを使用したSOAアプリケーションの開発のOracle JDeveloperの式ビルダーを使用したXPath式の作成に関する項
Oracle Service Busコンソールで、XQuery/XSLT式エディタを使用して式を作成し、使用する既存のXSLTリソースを指定できます。XSLTリソースを参照するには、コンソールでリソースを作成し、既存のXSLT変換をリソースにアップロードするか、Service Busに含まれている新しいWebベースのXSLTマッパーを使用してXSL変換をしておく必要があります。この機能により、JDeveloperを使用して複雑なマッピングを作成してコンソールにインポートするか、Service Busコンソールを直接使用できます。XSL変換は複数のパイプラインおよび分割-結合で再利用できます。
Oracle Service Bus ConsoleのXQuery/XSLTエディタの詳細は、「Oracle Service Busコンソールでの式エディタの操作」を参照してください。
JDeveloperでService Busプロジェクト内にXSLTマッピングを作成し、パイプラインおよび分割-結合のXQuery式でそれらを使用して外部システム間でオブジェクトをマップできます。
XSLTマッピングを作成するには、ソースとターゲットのマッピングに使用する、ソースXMLスキーマ要素またはXMLファイルを選択する必要があります。
JDeveloperでXSLTマッピングを作成するには:
JDeveloperのアプリケーション・ナビゲータで、マッピングを作成するService Busプロジェクトまたはフォルダを右クリックします。
表示されたメニューで、「新規」をポイントし、「XSLマップ」を選択します。
「XSLマップ・ファイルの作成」ダイアログが開きます。
「ファイル名」フィールドに、XSLTマップ・ファイルの一意の名前を入力します。
必要に応じて、新しいディレクトリの場所および相互参照のための簡単な説明を入力します。
この場所は、現在のアプリケーションのディレクトリ構造内である必要があります。
ソース・スキーマを定義するには、次のようにします。
「ソース・スキーマの使用」を選択します。
「プライマリ・ソース」フィールドの横にある「参照」をクリックします。
「スキーマの選択」ダイアログで、XMLスキーマを使用するか、またはXMLファイルからソースを直接生成するかどうかを選択します。
選択したセクションで「参照」をクリックし、使用するXMLスキーマ要素またはファイルに移動して選択します。
XMLスキーマ要素は現在のアプリケーションから選択できます。XMLファイルはファイル・システムから選択できます。
スキーマ要素またはファイルを選択したら、「スキーマの選択」ダイアログで「OK」をクリックします。
パラメータとして使用する追加のソースを選択するには、「その他のソース」表の上にある「スキーマの追加」をクリックします。
ターゲット・スキーマを定義するには、「ターゲット・スキーマの使用」を選択し、「スキーマの選択」ダイアログでの前述の手順を繰り返して、使用するXMLコンポーネントを選択します。
「XSLマップ・ファイルの作成」ダイアログで「OK」をクリックします。
XSLTマッパーが表示され、ソースおよびターゲットの構造が示されます。
マッピング・ロジックを定義するには、Oracle SOA Suiteを使用したSOAアプリケーションの開発のマップ・モードでのXSLTマップの編集に関する項を参照してください。
Oracle Service Busコンソールでは、XSLTマップはXSLTリソースに保存され、現在のセッションの任意のパイプラインおよび分割-結合で再利用できます。既存のXSLTマップをXSLTリソースにアップロードして、テキスト・エディタで編集できます。
Service Busコンソールを使用している場合は、最初にJDeveloperで作成したXSL変換を追加し、Service Busプロジェクトにインポートするか、XSL変換リソースにアップロードできます。インポートの詳細は、「リソースおよび構成のインポートとエクスポート」を参照してください。また、コンソールに含まれているXSLTマッパーを使用して新しいマッピングを作成することもできます。次の手順を使用して、既存のマッピングをインポートしたり、コンソールを使用して新しいマッピングを作成したりするための新しいXSLTリソースを作成します。
始める前に
JDeveloperで作成した既存のXSL変換マップをアップロードする必要がある場合は、「JDeveloperでのXSLTマッピングの作成」に示すとおり、XSL変換マッピング・ファイルを作成します。
新しいマッピングを作成する必要がある場合は、ソース・スキーマとターゲット・スキーマがService Busコンソールからアクセス可能になっていることを確認します。詳細は、「XMLスキーマの作成方法」を参照してください。
コンソールでXSLTリソースを作成するには:
プロジェクト・ナビゲータで、新しいXSL変換を含めるプロジェクトまたはフォルダを右クリックし、「作成」をポイントして「リソース」を選択します。「リソース・ギャラリ」から「変換」、「XSLT」、「OK」の順にクリックします。
「スキーマの作成」ダイアログが表示されます。
次のいずれかを行います:
既存のXSLマッピング・ファイルからリソースを作成するには、「ファイルのアップロード」フィールドの横の「参照」をクリックし、JDeveloperで作成したファイルに移動して選択します。「マッピングの生成」オプションの選択を解除します。
「リソース名」フィールドに、ファイル拡張子なしのファイル名が自動的に移入されます。この名前は変更可能です。
新しいXSL変換を作成するには、その変換リソースの一意の名前を入力します。「マッピングの生成」オプションが選択されていることを確認します。
必要に応じて、リソースの簡単な説明を入力します。
「作成」をクリックします。
新しいマッピングを作成している場合、次の情報を「ソースとターゲットの選択」ダイアログに入力します。
ソースおよびターゲット・スキーマは、「ソース・スキーマ」フィールドおよび「ターゲット・スキーマ」フィールドの「検索」アイコンを使用して検索および選択します。これらのスキーマは、Service Busコンソールからアクセス可能にしておく必要があります。詳細は、「XMLスキーマの作成方法」を参照してください。
「ソースのルート要素」リストから、マッピング用のソースのルート要素を選択します。このリストは「ソース・スキーマ」を選択した後に移入されます。
「ターゲットのルート要素」リストから、マッピング用のターゲットのルート要素を選択します。このリストは「ターゲット・スキーマ」を選択した後に移入されます。
「OK」をクリックします。
XSLTパラメータが定義されている場合、それがXSLT定義エディタに表示されます。
スキーマを変更するには、次のように実行します。
ツールバーの「ソースの編集」をクリックします。
「ソースの編集」ダイアログが表示されます。
アップロードする新しいマッピング・ファイルを参照して選択するには、「参照」をクリックします。
ファイルのコンテンツを変更するには、ダイアログの「コンテンツ」セクションでコードを直接更新します。
「保存」をクリックします。
新しいマッピングを作成している場合、マッパーの使用の詳細は、「Service BusコンソールでのXSLTマッパーの使用」を参照してください。
XSLT定義エディタのツールバーで、「保存」をクリックします。
セッションを終了して構成をランタイムにデプロイするには、「アクティブ化」をクリックします。
次のトピックでは、Service BusコンソールでのXSLTマッパーの使用について説明します。
XSLT定義エディタから、XSLTマッパーにアクセスします。
注意:
マッピングは、セッションの編集時にのみ編集できます。アクティブ・セッションでない状態でマッパーを起動すると、マッパーは読取り専用モードで開きます。読取り専用モードでは、マッピングに変更を加えられません。
削除するXSLTリソースを参照しているリソースがある場合は、それらの参照を削除してからリソースを削除します。Oracle Service BusコンソールのXSLT定義エディタでXSLTリソースを開き、右上の「ツール」アイコンをクリックし、「参照」を選択してそこに参照があるかどうかを確認します。JDeveloperでは、XSLTリソースを右クリックして、「依存性の参照」を選択します。
変換は他のリソースによって参照されていても削除できますが、その場合、削除されたリソースへの未解決の参照が原因で、競合が発生する可能性があります。
XSLTリソースを削除するには: