XSLT スタイルシートによる SOAP/REST の着信/発信メッセージの変換

XSLT 変換 」で説明したように、XSLT スタイルシート (XSL Transformations) を定義して SOAP および XML の着信/発信メッセージを変換できます。こうすることで、既存のクライアントを変更しなくて済みます。

ここでは、広く使われているオープンソースツールを利用して、もっと簡単にそのような XSLT スタイルシートを生成できる方法について説明します。

はじめに、これらの変換を定義するのに役立つ次のようなツールをいくつか入手する必要があります。

  • SoapUI

  • Eclipse Web Tools (http://www.eclipse.org/webtools)。XSLT 変換を作成、テストするためのエディターをはじめとする一連の Eclipse プラグインです。具体的には、「XML Editor Tools」と「XSL Developer Tools」を使用します。

最初に、Virtual DataPort から新規の SOAP Web サービスを公開する必要があります (方法については、「 Web サービスの公開 」を参照)。新規の Web サービスの構造は、既存の Web サービスとできる限り同じ構造にします。これにより、XSLT スタイルシートが単純になります。

  • 新規の Web サービスの操作には、既存の Web サービスの操作と同じパラメーターを使用する必要があります。

  • 操作とパラメーターの名前を、既存の Web サービスの名前と一致するように変更します。

  • FLAT/NEST 操作 (「 フラット化ビューの作成 」を参照) を使用して、公開されている Web サービスの階層構造をターゲットの Web サービスの構造に合わせて調整することもできます。

各操作について、以下を生成する必要があります。

  • 「入力 XSLT 変換」について:

    • 既存の Web サービスクライアントが送信する SOAP リクエスト

    • 新規の Web サービスで必要な SOAP リクエスト

  • 「出力 XSLT 変換」について:

    • 既存の Web サービスクライアントで必要な SOAP 応答

    • 新規の Web サービスが送信する SOAP リクエスト

これらのサンプルメッセージを取得するには、既存の Web サービスと新規の Web サービスの WSDL ドキュメント (Web Services Description Language (WSDL) 1.1.) が必要です。

組み込み Web コンテナーに新規サービスをデプロイした場合、その WSDL は http://localhost:9090/server/<VDP database name>/<name of service>/services/<name of service>?wsdl で取得できます。

  1. 両方の WSDL ファイルについて、サンプル SOAP リクエストとサンプル SOAP 応答を取得する必要があります。SoapUI を使用して、それらを取得できます。

  2. SoapUI を起動します。

  3. 各 WSDL に対して新しいプロジェクトを作成します。[New Project] ダイアログで [Create Requests] オプションと [Create MockService] オプションを選択します。プロジェクトを作成すると、Web サービスの操作のリストが左側のパネルに表示されます。

  4. 各操作について、[Request] をダブルクリックして、リクエストのテンプレートを開きます。

  5. 各操作について、[Response] をダブルクリックして、クライアントで必要な応答のテンプレートを開きます。

  6. 各テンプレートを保存します。各テンプレートのウィンドウを右クリックして、[Save as...] をクリックします。

これにより、各操作について SOAP ファイルが 4 つずつ生成されます。

  1. 既存の Web サービスクライアントが送信するリクエスト

  2. 既存の Web サービスクライアントが送信する応答

  3. 新規の Web サービスで必要なリクエスト

  4. 新規の Web サービスが送信する応答

ここで、各操作について XSLT スタイルシートを 2 つずつ生成する必要があります。

  1. 1 つは、既存のクライアントが送信したリクエストを新規の Web サービスで必要な内容に変換する XSLT スタイルシートです。

  2. もう 1 つは、新規の Web サービスが送信した応答を既存のクライアントで必要な内容に変換する XSLT スタイルシートです。

XSLT 変換を作成するための XML/XSLT エディターは多数ありますが、この付録では Eclipse Web Tools に付属の「XML Editor Tools」と「XSL Developer Tools」について説明します。初期 SOAP メッセージをエディターに読み込んだ後、構文の強調表示、変換の実行やデバッグなど、エディターの便利な機能を使用して XSLT スタイルシートを作成できます。

XSLT 変換の作成が完了したら、XSLT 変換を実行して、その出力を WSDL で定義されているスキーマに照らして検証する必要があります。

XSLT 変換の出力を検証するには、以下の 2 つの方法があります。

  1. Eclipse を使用する方法: WSDL からメッセージのスキーマを抽出して xsd ファイルに貼り付けます。次に、XML エディターで、変換後の XML の XSD 検証を実行します (<Body> タグの内側の内容のみ)。

  2. SoapUI を使用する方法: 適切なウィンドウで、古い XML の内容を変換結果に置き換えます。次に、コンテキストメニューを開いて、[Validate] をクリックします。

重要

Web サービスのスキーマを変更した場合、それに合わせて対応する XSLT スタイルシートを変更する必要があります。Web サービスのスキーマの変更には、以下のようなものがあります。

  • 既存の操作の名前の変更

  • 操作の削除

  • 既存の操作のパラメーターの追加、名前変更、または削除

また、既存の Web サービスに操作を追加すると、それに対応する XSLT 変換は空になります。