(57)【特許請求の範囲】
【請求項１】
SOAPリクエストメッセージを受信したときに、POSTメソッド又はGETメソッドを用いたHTTP通信により、前記SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信する機能と、
HTTPレスポンスメッセージを受信したときに、HTMLの主要情報及び繰り返し構造を夫々変数化及び構文化した変換定義を参照して、前記HTTPレスポンスメッセージに係るHTMLをXMLに変換し、該HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する機能と、
をコンピュータに実現させるためのプロトコル変換プログラムであって、
前記HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する機能は、HTTPレスポンスメッセージに係るHTMLと前記変換定義との間で文字列照合を行い、該変換定義において構文化されている部分に該当する文字列をHTMLから抽出して、再帰的に処理を行なうことを特徴とするプロトコル変換プログラム。
【請求項２】
HTTPレスポンスメッセージを受信したときに、HTMLの主要情報及び繰り返し構造を夫々変数化及び構文化した変換定義を参照して、前記HTTPレスポンスメッセージに係るHTMLをXMLに変換し、該HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する機能をコンピュータに実現させるためのプロトコル変換プログラムであって、
前記HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換するときに、HTTPレスポンスメッセージに係るHTMLと前記変換定義との間で文字列照合を行い、該変換定義において構文化されている部分に該当する文字列をHTMLから抽出して、再帰的に処理を行なうことを特徴とするプロトコル変換プログラム。
【請求項３】
HTTPリクエストメッセージに係るHTMLのformタグ及びその属性に基づいて、SOAPリクエストメッセージを受信したときに、POSTメソッド又はGETメソッドを用いたHTTP通信により、前記SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信するソースコードと、HTTPレスポンスメッセージを受信したときに、HTMLの主要情報及び繰り返し構造を夫々変数化及び構文化した変換定義を参照して、前記HTTPレスポンスメッセージに係るHTMLをXMLに変換し、該HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信するソースコードと、を自動生成する機能
をコンピュータに実現させるためのプロトコル変換プログラムであって、
前記HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換するときに、HTTPレスポンスメッセージに係るHTMLと前記変換定義との間で文字列照合を行い、該変換定義において構文化されている部分に該当する文字列をHTMLから抽出して、再帰的に処理を行なうことを特徴とするプロトコル変換プログラム。
【請求項４】
コンピュータが、
SOAPリクエストメッセージを受信したときに、POSTメソッド又はGETメソッドを用いたHTTP通信により、前記SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信する一方、
HTTPレスポンスメッセージを受信したときに、HTMLの主要情報及び繰り返し構造を夫々変数化及び構文化した変換定義を参照して、前記HTTPレスポンスメッセージに係るHTMLをXMLに変換し、該HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する
ことを特徴とするプロトコル変換方法であって、
前記コンピュータが、前記HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換するときに、HTTPレスポンスメッセージに係るHTMLと前記変換定義との間で文字列照合を行い、該変換定義において構文化されている部分に該当する文字列をHTMLから抽出して、再帰的に処理を行なうことを特徴とするプロトコル変換方法。
【請求項５】
HTMLの主要情報及び繰り返し構造を夫々変数化及び構文化した変換定義と、
SOAPリクエストメッセージを受信したときに、POSTメソッド又はGETメソッドを用いたHTTP通信により、前記SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信する送信手段と、
HTTPレスポンスメッセージを受信したときに、前記変換定義を参照して、前記HTTPレスポンスメッセージに係るHTMLをXMLに変換し、該HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する返信手段と、
を含んで構成されたことを特徴とするプロトコル変換装置であって、
前記返信手段は、HTTPレスポンスメッセージに係るHTMLと前記変換定義との間で文字列照合を行い、該変換定義において構文化されている部分に該当する文字列をHTMLから抽出して、再帰的に処理を行なうことを特徴とするプロトコル変換装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、HTML(HyperText Markup Language)並びにHTTP(HyperText Transfer Protocol)又はHTTPS(HTTP Security)を利用して構築されたシステムを、効率的にSOAP(Simple Object Access Protocol)化する技術に関する。
【０００２】
【従来の技術】
HTTP又はHTTPS（以下「HTTP」という）で接続されたネットワークにおいて、SOAPというプロトコルを用いて、XML(eXtensible Markup Language)形式のデータ交換により、異なるプラットフォームのアプリケーション同士を連携させる技術が実用化されつつある。
【０００３】
また、特開２００１−１５７２５６号公報に記載されるように、HTTPプロトコルのデータを他のプロトコルとの間で変換を行って相互接続する技術も知られている。
【０００４】
【特許文献１】
特開２００１−１５７２５６号公報
【０００５】
【発明が解決しようとする課題】
ところで、HTTPを利用して構築されたシステム（以下「既存システム」という）では、ブラウザに各種情報を表示させることを目的として、情報に書式を定義するHTMLが用いられていた。このため、既存システムをSOAP化するためには、XML形式のSOAPメッセージを直接処理可能とすべく、アプリケーションを大幅に改変し、SOAPを実装させる必要があった。また、既存システムの改変にあたっては、そのプログラム言語がSOAPを実現させるためのライブラリ（SOAPライブラリ）を保有していることが前提条件となっていた。
【０００６】
既存システムがSOAPライブラリを保有しないプログラム言語で開発されている場合、その資産をSOAP化するためには、大規模なシステム投資を行い、既存システムを全面更改する必要がある。しかし、既存システムの全面更改は、投資対効果の観点から、現実的な選択肢とはなり得なかった。さらに、既存システムを修正する方法では、運用中のアプリケーションを停止させる必要からサービス低下に繋がると共に、修正に伴う信頼性の低下も懸念された。
【０００７】
一方、HTMLは情報に形式を定義しているだけであるので、情報に構造を定義してその意味付けを行うXMLにフォーマット変換することは極めて困難であった。
そこで、本発明は以上のような従来の問題点に鑑み、SOAPメッセージとHTTPメッセージとの間のプロトコル変換を工夫することで、既存システムの信頼性を確保しつつ、これを効率的にSOAP化できるようにしたプロトコル変換技術を提供することを目的とする。
【０００８】
【課題を解決するための手段】
このため、本発明に係るプロトコル変換技術では、SOAPリクエストメッセージを受信したときに、POSTメソッド又はGETメソッドを用いたHTTP通信により、SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信する一方、HTTPレスポンスメッセージを受信したときに、HTMLの主要情報及び繰り返し構造を夫々変数化及び構文化した変換定義を参照して、HTTPレスポンスメッセージに係るHTMLをXMLに変換し、HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信することを特徴とする。このとき、かかる機能を実現するプログラムのソースコードを、HTTPリクエストメッセージに係るHTMLのformタグ及びその属性に基づいて、自動生成するようにしてもよい。
【０００９】
かかる構成によれば、SOAPリクエストメッセージを受信すると、POSTメソッド又はGETメソッドを用いたHTTP通信により、SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信される。一方、HTTPレスポンスメッセージを受信すると、HTMLの主要情報及び繰り返し構造を夫々変数化及び構文化した変換定義を参照して、HTTPレスポンスメッセージに係るHTMLがXMLに変換され、HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信される。このため、SOAPメッセージとHTTPメッセージとの間でプロトコル変換が行われることとなり、HTTP又はHTTPSを利用して構築されたシステムを改変又は全面更改しなくとも、該システムをSOAP化することが可能となる。
【００１０】
また、SOAPリクエストメッセージをHTTPリクエストメッセージに変換するときには、HTTPリクエストメッセージに係るHTMLのタグ及びその属性を解析して作成した変換規則に基づいて、SOAPリクエストメッセージをHTTPリクエストメッセージに変換することが望ましい。
【００１１】
かかる構成によれば、変換規則を適切に作成することで、SOAPリクエストメッセージをHTTPリクエストメッセージに容易かつ迅速に変換することができる。
さらに、HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換するときには、HTTPレスポンスメッセージに係るHTMLと変換定義との間で文字列照合を行い、変換定義において変数化されている部分に該当する文字列をHTMLから抽出して、HTMLをXMLに変換することが望ましい。また、同様に、変換定義において構文化されている部分に該当する文字列をHTMLから抽出して、再帰的に処理を行なうことが望ましい。
【００１２】
かかる構成によれば、HTTPレスポンスメッセージに係るHTMLと変換定義との間で文字列照合を行い、変換定義において変数化されている部分に該当する文字列をHTMLから抽出することで、容易かつ迅速にHTMLをXMLに変換することができる。また、同様に、変換定義において構文化されている部分に該当する文字列をHTMLから抽出して、再帰的に処理を行うようにすれば、繰り返し構造が複数階層に展開されているときであっても、１階層構造のものとして処理を行なうことができる。
【００１３】
【発明の実施の形態】
以下、添付された図面を参照して本発明を詳述する。
図１は、本発明に係るプロトコル変換技術を具現化した変換装置１０を用いて、SOAPメッセージを利用するSOAPクライアント２０と、HTTPメッセージを利用する既存システム３０と、の間でプロトコル変換を行う構成を示す。なお、変換装置１０，SOAPクライアント２０及び既存システム３０は、夫々、中央処理装置とメモリとを備えたコンピュータから構築され、メモリにロードされたプログラムによりプロトコル変換に係る各種機能が実現される。また、変換装置１０，SOAPクライアント２０及び既存システム３０は、TCP/IP(Transfer Control Protocol/Internet Protocol)ベースのLAN(Local Area Network)又はインターネットなどのネットワーク４０を介して相互接続される。
【００１４】
変換装置１０には、SOAPメッセージとHTTPメッセージとの間のプロトコル変換を実現させるべく、後述する処理により自動生成された変換プログラム１２が実行可能に組み込まれる。また、変換装置１０には、SOAPメッセージを処理可能にするSOAPライブラリ１４と、HTMLをXMLに変換する変換定義が規定されたHTML-XML変換定義１６と、が備えられる。
【００１５】
ここで、変換プログラム１２により、SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信する機能，HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する機能，送信手段及び返信手段がソフトウエア的に実現される。
【００１６】
SOAPクライアント２０には、SOAPメッセージの送受信及びユーザとのインタフェースを行うクライアントプログラム２２と、SOAPライブラリ２４と、が備えられる。一方、既存システム３０には、HTTPメッセージを利用して、各種サービスを提供するアプリケーション３２が実行可能に組み込まれる。
【００１７】
なお、変換装置１０は、図２に示すように、既存システム３０に組み込むようにしてもよい。
次に、HTML-XML変換定義１６の作成，変換プログラム１２の自動生成及びその組み込みまでの一連の処理について、図３を参照しつつ説明する。
【００１８】
ステップ１（図では「Ｓ１」と略記する。以下同様）では、図示しないHTTPクライアントのブラウザ機能などを利用して、SOAP化を希望する既存システム３０に対するHTTPメッセージの入出力をファイルに格納する。鉄道の経路を探索するサービスを例にとると、既存システム３０に対するHTTPリクエストメッセージ（入力）には、図４に示すように、タグ<form>〜</form>に、アプリケーションのURL(Uniform Resource Locator)，通信方式（POST又はGET）並びに出発駅及び到着駅などの入力情報が夫々記述される。一方、既存システム３０からのHTTPレスポンスメッセージ（出力）には、図５に示すように、タグ<table>〜</table>に、出発駅，到着駅及び路線などが夫々記述される。なお、HTTPレスポンスメッセージにタグ<table>〜</table>が複数あるのは、１回の経路探索で複数の経路が探索されたことを示している。
【００１９】
ステップ２では、HTTPレスポンスメッセージを参照して、人手により、図６に示すようなHTML-XML変換定義１６を作成する。HTML-XML変換定義１６は、変換対象のHTMLのセッションごとに異なる主要情報を変数化し、汎化して表現できる。また、HTMLで表現された表などのように、同一構造を繰り返すものであっても、構文化し、汎化して表現できる。そして、HTMLからXMLに変換するときに、HTMLとHTML-XML変換定義との文字列照合を行い、HTML-XML変換定義で変数化されている部分を抽出し、そこで定義されたタグを用いて出力する。このため、HTML-XML変換定義１６では、次のような３種類の制御文字列を用いて、HTMLをXMLに変換する変換定義が規定される。
［制御文字列］
（１）$[value#TagName]
HTTPレスポンスメッセージと照合して、TagNameに相当する文字列を抽出し、<TagName>抽出文字列</tagName>としてXMLに出力する。
（２）$[for#TagName]〜$[end#ForbidedString[#ForbidedString]・・・]
$[for]〜$[end]で囲まれた文字列について、HTTPレスポンスメッセージに対して繰り返し照合する。また、$[for]〜$[end]が入れ子になっているときには、再起的に処理する。このとき、ForbidedStringを設定しておくと、$[for]〜$[end]に$[value#TagName]が記述されているとき、ForbidedStringを含まないように文字列を抽出する。ForbidedStringを設定可能とすることで、$[value#TagName]により文字列を抽出するときに、繰り返し箇所を越えて文字列が抽出されてしまうことを防止できる。
（３）$[value#DoNotOutput]
HTTPレスポンスメッセージと照合して、TagNameに相当する文字列があったとしても、XMLに出力しない。$[value#DoNotOutput]を設定可能とすることで、セッションごとに異なる情報が存在するときであっても、これをXMLに出力しないようにすることができる。
【００２０】
ステップ３では、変換装置１０に組み込まれる変換プログラム１２のソースコードを自動生成する。なお、ソースコード自動生成については、後述する。
ステップ４では、自動生成されたソースコードをコンパイルし、実行モジュールとしての変換プログラム１２を生成する。
【００２１】
ステップ５では、変換プログラム１２を変換装置１０に実行可能に組み込む。
図７は、変換プログラム１２のソースコードを自動生成するメインルーチンのフローチャートを示す。なお、図７に示すメインルーチン及びここからコールされるサブルーチンにより、SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信するソースコード、及び、HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信するソースコードを自動生成する機能がソフトウエア的に実現される。
【００２２】
ステップ１１では、SOAPリクエストメッセージをHTTPリクエストメッセージにプロトコル変換するインターフェースを作成するために、HTTPリクエストメッセージの<form>タグを解析したインタフェース定義を作成するサブルーチンをコールする。
【００２３】
ステップ１２では、変換プログラム１２のソースコードを自動生成するサブルーチンをコールする。
図８は、インタフェース定義を作成するサブルーチンのフローチャートを示す。なお、インタフェース定義は、XMLで作成される。
【００２４】
ステップ２１では、インタフェースの作成に必要な各種情報、例えば、HTTPリクエストメッセージファイル名，出力ファイル名，クラス名，メソッド名，action属性のベースURLを入力する。
【００２５】
ステップ２２では、XMLヘッダ「<?xml version="1.0"?>」を出力する。
ステップ２３では、ルート要素の開始タグ「<interface>」を出力する。
【００２６】
ステップ２４では、図９に示す変換規則Ｉに従って、入力されたクラス名及びメソッド名に対応したタグ「<class value="クラス名"/>」及び「<method value="メソッド名"/>」を出力する。
【００２７】
ステップ２５では、HTTPリクエストメッセージの<form>〜</form>で囲まれた各タグについて、図１０に示す変換規則IIに従って、HTMLのタグをXMLのタグに変換した後、これを出力する。
【００２８】
ステップ２６では、ルート要素の終了タグ「</interface>」を出力する。
図８に示す一連の処理によれば、クラス名として「RouteSearch」、メソッド名として「searchRoute」を入力すると、図４に示すHTTPリクエストメッセージから、図１１に示すインタフェース定義が作成される。インタフェース定義では、XMLのタグを利用して、クラス名，メソッド名，アプリケーションのURL，通信方式，入力情報などが夫々定義される。なお、アプリケーションのURLが相対アドレスであれば、action属性のベースURLを用いて絶対アドレスに変換した後、その絶対アドレスがURLとされる。また、作成されたインタフェース定義は、ステップ２１で入力された出力ファイル名に、XML文書として保存される。
【００２９】
図１２は、変換プログラム１２のソースコードを自動生成するサブルーチンのフローチャートを示す。
ステップ３１では、インタフェース定義を読み込む。
【００３０】
ステップ３２では、インタフェース定義の<class>タグを参照して、以下の文字列を出力する。
0004049653.tif 000002
ステップ３３では、インタフェース定義の<method>タグを参照して、文字列「public String メソッド名(」を出力する。
【００３１】
ステップ３４では、インタフェース定義の<element>タグを順次参照して、メソッドの仮引数として、文字列「String エレメント名」を「,」を挟んで列挙した後、文字列「)[」を出力する。なお、同一のname属性をもつelementタグが複数回出力されている場合には、２回目以降に出力されたelementタグに対しては、この処理を行わない。
【００３２】
ステップ３５では、インタフェース定義の<url>タグを参照して、アプリケーションのURLを定義する文字列「String url = "アプリケーションのURL";」を出力する。
【００３３】
ステップ３６では、インタフェース定義の<element>タグを参照して、アプリケーションに対してPOST又はGETする文字列を出力する。なお、同一のname属性をもつelementタグが複数回出力されている場合には、２回目以降に出力されたelementタグに対しては、この処理を行わない。
【００３４】
ステップ３７では、インタフェース定義の<connection>タグからアプリケーションへの通信方式を取得し、アプリケーションのURL並びにPOST又はGETする文字列を引数として、次のようなHTTP通信を行うソースコードを出力する。
【００３５】
String ret = httpConnector.get(url, params.toString());
ステップ３８では、HTTP通信の結果受信した文字列を解析し、次のようなHTMLをXMLに変換するためのソースコードを出力する。なお、XMLConverterは、HTMLをXMLに変換するクラス、xc.transform()は、HTMLをXMLに変換するクラスXMLConveterのメソッド、html-xml.datは、HTML-XML変換定義１６を夫々示す。
【００３６】
XMLConverter xc = new XMLConveter("html-xml.dat", ret);
ret = xc.transform();
ステップ３９では、変換結果を文字列として返すソースコードを出力する。
【００３７】
ステップ４０では、メソッド定義及びクラス定義を終了させる「]」を夫々出力する。
図１２に示す一連の処理によれば、図１３に示すような変換プログラム１２のソースコードが自動生成される。ソースコードには、SOAPリクエストメッセージをHTTPリクエストメッセージに変換してHTTP通信を行うコード、HTTPレスポンスメッセージをXMLにフォーマット変換し、これをSOAPレスポンスメッセージとして返却するコードが含まれる。
【００３８】
そして、ソースコードをコンパイルして実行モジュールを生成した後、これを変換装置１０に実行可能に組み込むことで、SOAPメッセージとHTTPメッセージとの間のプロトコル変換が実行されることとなる。即ち、変換装置１０が、SOAPクライアント２０からSOAPリクエストメッセージを受信すると、HTTPを利用して、既存システム３０に対してHTTPリクエストメッセージを送信する。一方、変換装置１０が、既存システム３０からHTTPレスポンスメッセージを受信すると、HTML-XML変換定義１６を参照してHTMLをXMLに変換した後、SOAPクライアント２０に対してSOAPレスポンスメッセージを返信する。
【００３９】
図１４及び図１５は、XMLをHTMLにフォーマット変換する処理のフローチャートを示す。なお、初期状態では、HTML及びHTML-XML変換定義のインデックスは、０に夫々設定される。
【００４０】
ステップ４１では、XMLヘッダ「<?xml version="1.0"?>」を出力する。
ステップ４２では、ルート要素の開始タグ「<return>」を出力する。
【００４１】
なお、XMLヘッダ及びルート要素の開始タグは、本ルーチンが最初に実行されたときのみ出力される。
ステップ４３では、HTML-XML変換定義の先頭から順次検索し、制御文字列を抽出する。
【００４２】
ステップ４４では、HTMLのインデックスを、HTML-XML変換定義のインデックスから制御文字列の直前の文字までの文字数分だけ進める。
ステップ４５では、抽出された制御文字列に応じた分岐処理を行なう。即ち、制御文字列が$[value]であればステップ４６へと進み、制御文字列が$[for]であればステップ５１へと進み、制御文字列が抽出できなかったならば処理を終了する。
【００４３】
ステップ４６では、HTML-XML変換定義において、抽出された文字列と次の制御文字列とで挟まれた文字列（終端文字列）を抽出する。このとき、改行を無視し、空白及びタグを含めた文字列を抽出する。また、次の制御文字列が存在しないときには、抽出された制御文字列の次の文字から最後の文字まで抽出する。
【００４４】
ステップ４７では、HTMLにおいて、インデックスと終端文字列とで挟まれた文字列を抽出する。このとき、制御文字列$[end]において、その属性としてForbidedStringが設定されているときには、これを含まないように抽出する。
【００４５】
ステップ４８では、$[value]の属性として、DoNotOutputが設定されているか否かを判定する。そして、DoNotOutputが設定されていればステップ５０へと進み（Ｙｅｓ）、DoNotOutputが設定されていなければステップ４９へと進む（Ｎｏ）。
【００４６】
ステップ４９では、$[vaue]の属性として設定されているTagNameを抽出し、ステップ４７で抽出された文字列を用いて、「<TagName>文字列</TagName>」を出力する。
【００４７】
ステップ５０では、HTMLのインデックスを、終端文字列の最初の文字まで進めると共に、HTML-XML変換定義のインデックスを、ステップ４３で抽出した制御文字列の次の文字まで進める。その後、ステップ４３へと戻る。
【００４８】
ステップ５１では、HTML-XML変換定義において、$[for]に対応する$[end]を検索する。$[for]〜$[end]が入れ子になっているときには、その中の$[for]及び$[end]の出現回数を計数し、適切な$[end]を検索するようにする。
【００４９】
ステップ５２では、HTML-XML変換定義において、$[for]と$[end]との間の文字列を抽出する。
ステップ５３では、ステップ５２で抽出された文字列において、その先頭から最初の制御文字列までの文字列（識別文字列）を抽出する。
【００５０】
ステップ５４では、HTMLにおいて、インデックス以降に処理すべき識別文字列があるか否かを判定する。そして、識別文字列があればステップ５５へと進み（Ｙｅｓ）、識別文字列がなければ$[for]〜$[end]の処理が終了したと判定してステップ５９へと進む（Ｎｏ）。
【００５１】
ステップ５５では、制御文字列$[for]の属性から文字列を抽出し、開始タグ「<文字列>」を出力する。
ステップ５６では、HTML-XML変換定義における$[for]〜$[end]内の文字列を処理すべく、ステップ５２で抽出した文字列を引数として、本ルーチンを再帰呼び出しする。
【００５２】
ステップ５７では、制御文字列$[for]の属性から文字列を抽出し、終了タグ「</文字列>」を出力する。
ステップ５８では、HTMLのインデックスを、HTML-XML変換定義における$[for]に対応する$[end]の次の文字に相当する位置まで進める。その後、ステップ５４へと戻る。
【００５３】
ステップ５９では、HTML-XML変換定義のインデックスを、$[for]に対応する$[end]の次の文字まで進める。その後、ステップ４３へと戻る。
ここで、図５に示すHTTPレスポンスメッセージを例にとって、HTMLをXMLにフォーマット変換する処理を詳述する。なお、フォーマット変換後のXMLは、図１６に示すようになる。
【００５４】
初期状態では、図６に示すHTML-XML変換定義、及び、図５に示すHTMLのインデックスは、０に夫々設定されている。先ず、XMLヘッダ「<?xml version="1.0"?>」、及び、ルート要素の開始タグ「<return>」が夫々出力される。XMLヘッダ及びルート要素の開始タグが出力されると、HTML-XML変換定義において、制御文字列$[value#title]が抽出され、HTMLのインデックスが進められる。制御文字列が$[value]であるので、HTML-XML変換定義ファイルにおいて、制御文字列$[value#title]と次の制御文字列$[for#keiro]とで挟まれた終端文字列「</title></head><body>」が抽出される。終端文字列が抽出されると、HTMLにおいて、インデックスと終端文字列とで挟まれた文字列「経路探索」が抽出される。制御文字列$[value#title]には、その属性としてDoNotOutputが設定されていないので、制御文字列$[value#title]から文字列「title」が抽出され、これをタグとして、「<title>経路探索</title>」が出力される。その後、HTML及びHTML-XML変換定義のインデックスが夫々進められる。
【００５５】
次に、HTML-XML変換定義において、制御文字列$[for#keiro]が抽出され、HTMLのインデックスが進められる。制御文字列が$[for]であるので、HTML-XML変換定義において、$[for#keiro]に対応する$[end#</body>]が検索され、$[for#keiro]と$[end#</body>]とで挟まれた文字列「<h1>経路$[value#DoNotOutput]・・・・・・$[end#</table>#<tr>]</table>」が抽出される。そして、抽出された文字列の先頭から最初の制御文字列までの識別文字列「<h1>経路」が抽出される。識別文字列が抽出されると、HTMLにおいて、インデックス以降に処理すべき識別文字列があるので、開始タグ「<keiro>」が出力される。開始タグが出力されると、抽出された文字列「<h1>経路$[value#DoNotOutput]・・・・・・$[end#</table>#<tr>]</table>」を引数として、再帰呼び出しが行われる。
【００５６】
再帰呼び出しが行われた直後では、HTML及びHTML-XML変換定義は、図１７に示すようになっている。このとき、同図（Ｂ）に示すHTML-XML変換定義では、インデックスが０に設定されている（以下同様）。そして、HTML-XML変換定義において、制御文字列$[value#DoNotOutput]が抽出され、HTMLのインデックスが進められる。制御文字列が$[value]であるので、HTML-XML変換定義において、制御文字列$[value#DoNotOutput]と$[for#line]とで挟まれた終端文字列「</h1><table><tr><th>出発駅<th>到着駅<th>路線」が抽出される。終端文字列が抽出されたら、HTMLにおいて、インデックスと終端文字列とで挟まれた文字列「１」が抽出される。制御文字列$[value#DoNotOutput]には、その属性としてDoNotOutputが設定されているので、文字列「１」を出力せずに、HTML及びHTML-XML変換定義のインデックスが夫々進められる。
【００５７】
次に、HTML-XML変換定義において、制御文字列$[for#line]が抽出され、HTMLのインデックスが進められる。制御文字列が$[for]であるので、HTML-XML変換定義において、$[for#line]と$[end#</table>#<tr>]とで挟まれた文字列「<tr><td>$[value#start]<td>$[value#end]<td>$[value#name]」が抽出される。そして、抽出された文字列の先頭から最初の制御文字列までの識別文字列「<tr><td>」が抽出される。識別文字列が抽出されると、HTMLにおいて、インデックス以降に処理すべき識別文字列があるので、開始タグ「<line>」が出力される。開始タグが出力されると、抽出された文字列「<tr><td>$[value#start]<td>$[value#end]<td>$[value#name]」を引数として、再帰呼び出しが行われる。
再帰呼び出しが行われた直後では、HTML及びHTML-XML変換定義は、図１８に示すようになっている。そして、HTML-XML変換定義において、制御文字列$[value#start]が抽出され、HTMLのインデックスが進められる。制御文字列が$[value]であるので、HTML-XML変換定義において、制御文字列$[value#start]と$[value#end]とで挟まれた終端文字列「<td>」が抽出される。終端文字列が抽出されたら、HTMLにおいて、インデックスと終端文字列とで挟まれた文字列「新横浜」が抽出される。制御文字列$[value#start]には、その属性としてDoNotOutputが設定されていないので、制御文字列$[value#start]から文字列「start」が抽出され、これをタグとして、「<start>新横浜</start>」が出力される。その後、HTML及びHTML-XML変換定義のインデックスが進められる。HTML-XML変換定義における制御文字列$[value#end]及び$[value#session]に対しても同様な処理が行われ、次のようなタグが出力された後、HTML及びHTML-XML変換定義のインデックスが進められる。
【００５８】
<end>東京</end>
<name>JR東海道新幹線</name>
HTML及びHTML-XML変換定義のインデックスが進められた結果、図１８（Ｂ）に示すHTML-XML変換定義には、インデックス以降に制御文字列がなくなるので、制御文字列$[for#line]に係る再帰呼び出しから抜け出す。そして、制御文字列$[for#line]に係るタグを終了させるべく、終了タグ「</line>」が出力され、HTMLのインデックスが進められる。
【００５９】
HTML-XML変換定義のインデックスが進められた結果、図１７（Ｂ）に示すHTML-XML変換定義には、インデックス以降に制御文字列がなくなるので、制御文字列$[for#keiro]に係る再帰呼び出しから抜け出す。そして、制御文字列$[for#keiro]に係るタグを終了させるべく、終了タグ「</keiro>」が出力され、HTMLのインデックスが進められる。
【００６０】
その後、以上説明した処理を続行することで、図１９及び図２０に示すHTML及びHTML-XML変換定義で再帰呼び出しが行われ、HTMLが、最終的に図１６に示すXMLにフォーマット変換される。
【００６１】
HTMLをXMLにフォーマット変換するとき、HTML-XML変換定義において入れ子となっている$[for]〜$[end]は、再起呼び出しを行うことで、制御文字列$[value]のみを含む単純な構造とみなすことができる。このため、入れ子が複数階層に展開される構造であっても、容易かつ迅速に、HTMLをXMLにフォーマット変換することができる。
【００６２】
以上説明した構成によれば、変換装置１０がSOAPメッセージとHTTPメッセージとの間のプロトコル変換を行うので、SOAPクライアント２０と既存システム３０との間に変換装置１０を介装させれば、既存システム３０の修正が一切不要となる。このため、既存システム３０の信頼性を確保しつつ、既存システムを効率的にSOAP化することができる。
【００６３】
（付記１）SOAPリクエストメッセージを受信したときに、POSTメソッド又はGETメソッドを用いたHTTP通信により、前記SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信する機能と、HTTPレスポンスメッセージを受信したときに、HTMLの主要情報及び繰り返し構造を夫々変数化及び構文化した変換定義を参照して、前記HTTPレスポンスメッセージに係るHTMLをXMLに変換し、該HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する機能と、をコンピュータに実現させるためのプロトコル変換プログラム。
【００６４】
（付記２）前記SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信する機能は、HTTPリクエストメッセージに係るHTMLのタグ及びその属性を解析して作成した変換規則に基づいて、SOAPリクエストメッセージをHTTPリクエストメッセージに変換することを特徴とする付記１記載のプロトコル変換プログラム。
【００６５】
（付記３）前記HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する機能は、HTTPレスポンスメッセージに係るHTMLと前記変換定義との間で文字列照合を行い、該変換定義において変数化されている部分に該当する文字列をHTMLから抽出して、HTMLをXMLに変換することを特徴とする付記１記載のプロトコル変換プログラム。
【００６６】
（付記４）前記HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する機能は、HTTPレスポンスメッセージに係るHTMLと前記変換定義との間で文字列照合を行い、該変換定義において構文化されている部分に該当する文字列をHTMLから抽出して、再帰的に処理を行なうことを特徴とする付記１記載のプロトコル変換プログラム。
【００６７】
（付記５）HTTPレスポンスメッセージを受信したときに、HTMLの主要情報及び繰り返し構造を夫々変数化及び構文化した変換定義を参照して、前記HTTPレスポンスメッセージに係るHTMLをXMLに変換し、該HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する機能をコンピュータに実現させるためのプロトコル変換プログラム。
【００６８】
（付記６）前記HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する機能は、HTTPレスポンスメッセージに係るHTMLと前記変換定義との間で文字列照合を行い、該変換定義において変数化されている部分に該当する文字列をHTMLから抽出して、HTMLをXMLに変換することを特徴とする付記５記載のプロトコル変換プログラム。
【００６９】
（付記７）前記HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する機能は、HTTPレスポンスメッセージに係るHTMLと前記変換定義との間で文字列照合を行い、該変換定義において構文化されている部分に該当する文字列をHTMLから抽出して、再帰的に処理を行なうことを特徴とする付記５記載のプロトコル変換プログラム。
【００７０】
（付記８）HTTPリクエストメッセージに係るHTMLのformタグ及びその属性に基づいて、SOAPリクエストメッセージを受信したときに、POSTメソッド又はGETメソッドを用いたHTTP通信により、前記SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信するソースコードと、HTTPレスポンスメッセージを受信したときに、HTMLの主要情報及び繰り返し構造を夫々変数化及び構文化した変換定義を参照して、前記HTTPレスポンスメッセージに係るHTMLをXMLに変換し、該HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信するソースコードと、を自動生成する機能をコンピュータに実現させるためのプロトコル変換プログラム。
【００７１】
（付記９）SOAPリクエストメッセージを受信したときに、POSTメソッド又はGETメソッドを用いたHTTP通信により、前記SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信する一方、HTTPレスポンスメッセージを受信したときに、HTMLの主要情報及び繰り返し構造を夫々変数化及び構文化した変換定義を参照して、前記HTTPレスポンスメッセージに係るHTMLをXMLに変換し、該HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信することを特徴とするプロトコル変換方法。
【００７２】
（付記１０）HTMLの主要情報及び繰り返し構造を夫々変数化及び構文化した変換定義と、SOAPリクエストメッセージを受信したときに、POSTメソッド又はGETメソッドを用いたHTTP通信により、前記SOAPリクエストメッセージをHTTPリクエストメッセージに変換して送信する送信手段と、HTTPレスポンスメッセージを受信したときに、前記変換定義を参照して、前記HTTPレスポンスメッセージに係るHTMLをXMLに変換し、該HTTPレスポンスメッセージをSOAPレスポンスメッセージに変換して返信する返信手段と、を含んで構成されたことを特徴とするプロトコル変換装置。
【００７３】
【発明の効果】
以上説明したように、本発明に係るプロトコル変換技術によれば、SOAPメッセージとHTTPメッセージとの間でプロトコル変換が行われることとなり、HTTP又はHTTPSを利用して構築されたシステムを改変又は全面更改しなくとも、該システムを効率的にSOAP化することができる。また、システムの修正を伴わないことから、その信頼性を確保することもできる。
【図面の簡単な説明】
【図１】  本発明を具現化した変換装置を用いて、SOAPメッセージとHTTPメッセージとの間でプロトコル変換を行う実施形態を示し、（Ａ）は接続図、（Ｂ）は構成図
【図２】  同上の他の実施形態を示し、（Ａ）は接続図、（Ｂ）は構成図
【図３】  HTML-XML変換定義及び変換プログラムの生成手順の説明図
【図４】  既存システムに入力されるHTTPレクエストメッセージの説明図
【図５】  既存システムから出力されるHTTPレスポンスメッセージの説明図
【図６】  XTML-XML変換定義の説明図
【図７】  変換プログラムのソースコードを自動生成するメインルーチンのフローチャート
【図８】  インタフェース定義を作成するサブルーチンのフローチャート
【図９】  同上で使用される変換規則Ｉの説明図
【図１０】  同上で使用される変換規則IIの説明図
【図１１】  インタフェース定義の説明図
【図１２】  ソースコードを自動生成するサブルーチンのフローチャート
【図１３】  変換プログラムのソースコードの説明図
【図１４】  HTMLをXMLに変換する処理を示すフローチャート
【図１５】  HTMLをXMLに変換する処理を示すフローチャート
【図１６】  XMLへの変換結果の説明図
【図１７】  再帰呼び出しが最初に行われたときの状態を示し、（Ａ）はHTMLの説明図、（Ｂ）はHTML-XML変換定義の説明図
【図１８】  再帰呼び出しが２回目に行われたときの状態を示し、（Ａ）はHTMLの説明図、（Ｂ）はHTML-XML変換定義の説明図
【図１９】  再帰呼び出しが３回目に行われたときの状態を示し、（Ａ）はHTMLの説明図、（Ｂ）はHTML-XML変換定義の説明図
【図２０】  再帰呼び出しが４回目に行われたときの状態を示し、（Ａ）はHTMLの説明図、（Ｂ）はHTML-XML変換定義の説明図
【符号の説明】
１０  変換装置
１２  変換プログラム
１６  HTML-XML変換定義
【図１】
0004049653.tif 000003
【図２】
0004049653.tif 000004
【図３】
0004049653.tif 000005
【図４】
0004049653.tif 000006
【図５】
0004049653.tif 000007
【図６】
0004049653.tif 000008
【図７】
0004049653.tif 000009
【図８】
0004049653.tif 000010
【図９】
0004049653.tif 000011
【図１０】
0004049653.tif 000012
【図１１】
0004049653.tif 000013
【図１２】
0004049653.tif 000014
【図１３】
0004049653.tif 000015
【図１４】
0004049653.tif 000016
【図１５】
0004049653.tif 000017
【図１６】
0004049653.tif 000018
【図１７】
0004049653.tif 000019
【図１８】
0004049653.tif 000020
【図１９】
0004049653.tif 000021
【図２０】
0004049653.tif 000022