この章では、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を使用した変換をスクリプト化するエディタがあります。これらのエディタには、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変換をリソースにアップロードしておく必要があります。この機能により、JDeveloperで複雑なマッピングを作成し、それらをコンソールにインポートして使用できます。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変換リソースにアップロードできます。インポートの詳細は、「リソースおよび構成のインポートとエクスポート」を参照してください。次の手順を使用して、マッピング・ファイルをXSL変換リソースにアップロードします。
始める前に
「JDeveloperでのXSLTマッピングの作成」の説明に従い、XSL変換マッピング・ファイルを作成します。
コンソールでXSLTリソースを作成するには:
プロジェクト・ナビゲータで、新しいXSL変換を含めるプロジェクトまたはフォルダを右クリックし、「作成」をポイントして「XSLT」を選択します。
「スキーマの作成」ダイアログが表示されます。
次のいずれかを行います:
既存のXSLマッピング・ファイルからリソースを作成するには、「ファイルのアップロード」フィールドの横の「参照」をクリックし、JDeveloperで作成したファイルに移動して選択します。
「リソース名」フィールドに、ファイル拡張子なしのファイル名が自動的に移入されます。この名前は変更可能です。
新しいXSL変換を作成するには、その変換リソースの一意の名前を入力します。
必要に応じて、リソースの簡単な説明を入力します。
「作成」をクリックします。
XSLTパラメータが定義されている場合、それがXSLT定義エディタに表示されます。
スキーマを変更するには、次のように実行します。
ツールバーの「ソースの編集」をクリックします。
「ソースの編集」ダイアログが表示されます。
アップロードする新しいマッピング・ファイルを参照して選択するには、「参照」をクリックします。
ファイルのコンテンツを変更するには、ダイアログの「コンテンツ」セクションでコードを直接更新します。
「保存」をクリックします。
XSLT定義エディタのツールバーで、「保存」をクリックします。
セッションを終了して構成をランタイムにデプロイするには、「アクティブ化」をクリックします。
削除するXSLTリソースを参照しているリソースがある場合は、それらの参照を削除してからリソースを削除します。Oracle Service BusコンソールのXSLT定義エディタでXSLTリソースを開き、右上の「参照」アイコンをクリックして、そのリソースに参照があるかどうかを確認します。JDeveloperでは、XSLTリソースを右クリックして、「依存性の参照」を選択します。
変換は他のリソースによって参照されていても削除できますが、その場合、削除されたリソースへの未解決の参照が原因で、競合が発生する可能性があります。
XSLTリソースを削除するには: