(57)【要約】【課題】プログラム中のオブジェクトに含まれる各プロパティと、構造化文書とのマッピングを容易に生成することができる。【解決手段】プログラム中のオブジェクトに含まれる各プロパティと構造化文書の各要素とのマッピングを生成する生成装置であって、オブジェクトに含まれる各プロパティを木構造のノードとして割り当てて、オブジェクトの階層構造を示す木構造を生成するオブジェクト木生成部と、オブジェクトに含まれる各プロパティおよび構造化文書の各要素を対応付けるマッピングのうち、オブジェクトの木構造を構造化文書の各要素をノードとする木構造に変換する変換コストを最小化するマッピングを選択する選択部と、を備える生成装置を提供する。【選択図】図２
2010079511.tif 000002
【特許請求の範囲】
【請求項１】
プログラム中のオブジェクトに含まれる各プロパティと構造化文書の各要素とのマッピングを生成する生成装置であって、
前記オブジェクトに含まれる各プロパティを木構造のノードとして割り当てて、前記オブジェクトの階層構造を示す木構造を生成するオブジェクト木生成部と、
前記オブジェクトに含まれる各プロパティおよび前記構造化文書の各要素を対応付けるマッピングのうち、前記オブジェクトの木構造を前記構造化文書の各要素をノードとする木構造に変換する変換コストを最小化するマッピングを選択する選択部と、
を備える生成装置。
【請求項２】
前記選択部は、
前記オブジェクトの木構造を前記構造化文書の木構造に変換するための最小編集コストを算出して前記マッピングにおける変換コストとする算出部と、
前記算出部が算出した変換コストが最小のマッピングを選択するマッピング選択部とを有する
請求項１に記載の生成装置。
【請求項３】
前記構造化文書の階層構造を記述したスキーマから前記構造化文書の木構造を生成する文書木生成部を更に備え、
前記選択部は、前記オブジェクトに含まれる各プロパティおよび前記構造化文書の各要素を対応付けるマッピングのうち、前記オブジェクトの木構造を、前記文書木生成部が生成した前記構造化文書の木構造に変換する変換コストを最小化するマッピングを選択する
請求項１または２に記載の生成装置。
【請求項４】
前記選択部が選択したマッピングに基づいて、前記オブジェクトの各プロパティの値を対応する各要素の値として含む前記構造化文書に変換する変換部をさらに備える請求項１または３に記載の生成装置。
【請求項５】
前記プログラムの実行中において、前記オブジェクトを引数として、前記オブジェクトを前記構造化文書に変換して送信することを指示する関数呼び出しを受け取る受取部と、
前記変換部が出力した前記構造化文書を送信する送信部と、
を更に備える請求項４に記載の生成装置。
【請求項６】
前記オブジェクトに含まれる配列のプロパティを、前記構造化文書において繰り返しが指定された繰り返し要素に対応付けたマッピングを生成するマッピング生成部を更に備える請求項１から５のいずれかに記載の生成装置。
【請求項７】
前記オブジェクト木生成部は、前記オブジェクトに含まれる配列の各要素を子ノードとする配列ノードを含む前記オブジェクトの木構造を生成し、
前記文書木生成部は、前記構造化文書において繰り返しが指定された繰り返し要素を繰り返しノードとして含む前記構造化文書の木構造を生成し、
前記オブジェクトの木構造中における前記配列ノードを、前記構造化文書の木構造中における前記繰り返しノードに対応付けるマッピングを生成するマッピング生成部を更に備える
請求項３に記載の生成装置。
【請求項８】
前記マッピング生成部は、
前記オブジェクトの木構造から前記配列ノードの子ノードを除いた木構造と、前記構造化文書の木構造から前記繰り返しノードの子ノードを除いた木構造との間で、ノード同士の対応付けを生成し、
前記オブジェクトの木構造中における前記配列ノードと前記構造化文書の木構造中における前記繰り返しノードとが対応付けられたことに応じて、前記配列ノードおよび前記繰り返しノードの子ノード同士の対応付けを生成する
請求項７に記載の生成装置。
【請求項９】
前記文書木生成部は、前記構造化文書において、オプションであることが指定されたオプション要素をオプションノードとして含み、かつ必須であることが指定された必須要素を必須ノードとして含む前記構造化文書の木構造を生成し、
前記オブジェクトの木構造中における子ノードを有するオブジェクト側親ノードを、前記構造化文書の木構造中における前記オプションノードおよび前記必須ノードを有する文書側親ノードに対応付ける場合において、前記オブジェクトの木構造中における前記子ノードを、前記必須ノードに優先して対応付けるマッピング生成部を更に備える
請求項３に記載の生成装置。
【請求項１０】
それぞれのマッピングを生成する場合において、前記マッピング生成部は、
前記プログラム中の一の部分の記述に基づいて一の前記子ノードを前記必須ノードに対応付けたことに応じて、当該対応付けを履歴記憶部に格納し、
前記プログラム中の他の部分の記述に基づいて、前記一の子ノードと前記必須ノードとの対応付けが前記履歴記憶部に格納されていることに応じて前記一の子ノードを前記必須ノードに対応付け、他の子ノードを前記オプションノードに対応付ける
請求項９に記載の生成装置。
【請求項１１】
前記算出部は、
前記オブジェクトの木構造に対して、前記プロパティの名称変更、共通の親ノードに属する複数の子ノードの順序変更、および少なくとも１つのノードに対する親ノードの追加を含む編集操作を少なくとも１回適用する編集処理を行って前記構造化文書の木構造に変換した場合において、各編集操作に対応付けられた編集操作コストの合計を前記編集処理による編集コストとして算出し、
前記オブジェクトの木構造を前記構造化文書の木構造に変換する少なくとも１つの前記編集処理のうち、前記編集コストが最小であると判断した編集処理における前記編集コストを前記最小編集コストとする
請求項２に記載の生成装置。
【請求項１２】
プログラム中のオブジェクトに含まれる各プロパティと構造化文書の各要素とのマッピングを生成する生成装置であって、
前記プログラムの実行中において、前記オブジェクトを引数として、前記オブジェクトを前記構造化文書に変換して送信することを指示する関数呼び出しを受け取る受取部と、
前記オブジェクトに含まれる各プロパティを木構造のノードとして割り当て、前記オブジェクトに含まれる配列については当該配列の各要素を子ノードとする配列ノードを含めて、前記オブジェクトの階層構造を示し、前記構造化文書において繰り返しが指定された繰り返し要素を繰り返しノードとして含む前記構造化文書の木構造を生成するオブジェクト木生成部と、
前記構造化文書の階層構造を記述したスキーマから前記構造化文書の木構造を生成する文書木生成部と、
前記オブジェクトの木構造中における前記配列ノードを、前記構造化文書の木構造中における前記繰り返しノードに対応付けるマッピングを生成するマッピング生成部と、
前記オブジェクトに含まれる各プロパティおよび前記構造化文書の各要素を対応付けるマッピングのうち、前記オブジェクトの木構造を、前記文書木生成部が生成した前記構造化文書の木構造に変換する変換コストを最小化するマッピングを選択する選択部と、
前記選択部が選択したマッピングに基づいて、前記オブジェクトの各プロパティの値を対応する各要素の値として含む前記構造化文書に変換する変換部と、
前記変換部が出力した前記構造化文書を送信する送信部と、
を備え、
前記マッピング生成部は、
前記オブジェクトの木構造から前記配列ノードの子ノードを除いた木構造と、前記構造化文書の木構造から前記繰り返しノードの子ノードを除いた木構造との間で、ノード同士の対応付けを生成し、
前記オブジェクトの木構造中における前記配列ノードと前記構造化文書の木構造中における前記繰り返しノードとが対応付けられたことに応じて、前記配列ノードおよび前記繰り返しノードの子ノード同士の対応付けを生成する
生成装置。
【請求項１３】
プログラム中のオブジェクトに含まれる各プロパティと構造化文書の各要素とのマッピングを生成する生成装置として、コンピュータを機能させるプログラムであって、
前記コンピュータを、
前記オブジェクトに含まれる各プロパティを木構造のノードとして割り当てて、前記オブジェクトの階層構造を示す木構造を生成するオブジェクト木生成部と、
前記オブジェクトに含まれる各プロパティおよび前記構造化文書の各要素を対応付けるマッピングのうち、前記オブジェクトの木構造を前記構造化文書の各要素をノードとする木構造に変換する変換コストを最小化するマッピングを選択する選択部と、
して機能させるプログラム。
【請求項１４】
プログラム中のオブジェクトに含まれる各プロパティと構造化文書の各要素とのマッピングを生成する生成方法であって、
前記オブジェクトに含まれる各プロパティを木構造のノードとして割り当てて、前記オブジェクトの階層構造を示す木構造を生成するオブジェクト木生成ステップと、
前記オブジェクトに含まれる各プロパティおよび前記構造化文書の各要素を対応付けるマッピングのうち、前記オブジェクトの木構造を前記構造化文書の各要素をノードとする木構造に変換する変換コストを最小化するマッピングを選択する選択ステップと、
を備える生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム中のオブジェクトに含まれる各プロパティと構造化文書の各要素とのマッピングを生成する生成装置、プログラムおよび生成方法に関する。
【背景技術】
【０００２】
従来より、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）文書を、プログラムにより取り扱われるオブジェクトに変換する方法が知られている。非特許文献１には、ＸＭＬ文書にプログラムがアクセスするためのＡＰＩであるＤＯＭ（Ｄｏｃｕｍｅｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）の仕様が記載されている。非特許文献２には、ＸＭＬ文書からＪａｖａ（登録商標）のオブジェクトへの変換およびＪａｖａのオブジェクトからＸＭＬ文書への変換をするＡＰＩであるＪＡＸＢ（Ｊａｖａ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  ＸＭＬ  Ｂｉｎｄｉｎｇ）の仕様が記載されている。
【０００３】
また、従来より、プログラム中のオブジェクトをＸＭＬ文書に変換する方法も知られている。例えば、非特許文献１に記載されたＤＯＭは、変換後のＸＭＬ文書のそれぞれの要素を予め反映したオブジェクトから、ＸＭＬ文書を生成することができる。また、非特許文献２に記載されたＪＡＸＢは、ＪａｖａのオブジェクトのクラスからＸＭＬスキーマを自動生成し、自動生成したＸＭＬスキーマに基づきＪａｖａのオブジェクトからＸＭＬ文書を生成することができる。
【０００４】
また、非特許文献３および非特許文献４には、ＸＭＬ文書とオブジェクトとの間のマッピングを行うデータバインディングツールが記載されている。このようなツールまたはライブラリ、または、ＰＨＰ（Ｈｙｐｅｒｔｅｘｔ  Ｐｒｅｐｒｏｃｅｓｓｏｒ）のＳＯＡＰ機能は、任意のオブジェクトをＸＭＬ文書に変換することができる。
【０００５】
また、特許文献１には、ＸＭＬ文書をオブジェクト以外のデータモデルへ変換させる方法が記載されている。非特許文献５には、木編集問題、すなわち、第１の木構造に編集操作を加えることにより第２の木構造と同型の木構造を得るための編集コストおよび手順を算出する問題の解法について記載がされている。
【０００６】
【特許文献１】特開２００３−２５６４５５号公報
【非特許文献１】"Document Object Model (DOM) Level 3 Core Specification"、２００４年４月７日、W3C、［平成２０年９月１０日検索］、インターネット＜ＵＲＬ：http://www.w3.org/TR/DOM-Level-3-Core/＞
【非特許文献２】"JSR 222: Java Architecture for XML Binding (JAXB) 2.0"、Java Community Process、［平成２０年９月１０日検索］、インターネット＜ＵＲＬ：http://jcp.org/en/jsr/detail?id=222＞
【非特許文献３】"Castor XML Mapping"、ExoLab Group，Intalio Inc.、［平成２０年９月１０日検索］、インターネット＜ＵＲＬ：http://www.castor.org/xml-mapping.html＞
【非特許文献４】"JiBX: Binding XML to Java Code"、Sosnoski Software Solutions Inc.、［平成２０年９月１０日検索］、インターネット＜ＵＲＬ：http://jibx.sourceforge.net/＞
【非特許文献５】Philip Bille、"A survey on tree edit distance and related problems"、２００５年６月、［平成２０年９月１０日検索］、インターネット＜ＵＲＬ：http://portal.acm.org/citation.cfm?id=1085283＞
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、以上のようなプログラム中のオブジェクトをＸＭＬ文書に変換する各処理は、いずれも煩雑であった。例えば、非特許文献１に記載されたＤＯＭは、ＸＭＬ文書の要素を正確に反映したオブジェクトがプログラムにより予め生成されていなければ、変換ができなかった。また、非特許文献２に記載されたＪＡＸＢは、ＸＭＬスキーマを生成したクラスを利用していないオブジェクトをＸＭＬ文書に変換することができなかった。
【０００８】
また、非特許文献３および非特許文献４に記載されたツールまたはライブラリ、または、ＰＨＰのＳＯＡＰ機能は、クラスのオブジェクトの各プロパティとＸＭＬ文書の各要素との対応関係を予め記述しなければならかった。さらに、これらの記述を、全てのオブジェクトのクラスおよびＸＭＬ文書の要素について行わなければならなかった。
【０００９】
そこで本発明は、上記の課題を解決することのできる生成装置、プログラムおよび生成方法を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の第１の態様においては、プログラム中のオブジェクトに含まれる各プロパティと構造化文書の各要素とのマッピングを生成する生成装置であって、前記オブジェクトに含まれる各プロパティを木構造のノードとして割り当てて、前記オブジェクトの階層構造を示す木構造を生成するオブジェクト木生成部と、前記オブジェクトに含まれる各プロパティおよび前記構造化文書の各要素を対応付けるマッピングのうち、前記オブジェクトの木構造を前記構造化文書の各要素をノードとする木構造に変換する変換コストを最小化するマッピングを選択する選択部と、を備える生成装置、コンピュータを当該生成装置として機能させるプログラムおよび生成方法を提供する。なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明を実施するための最良の形態】
【００１１】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
図１は、本実施形態に係る情報処理装置１０の機能構成を示す。情報処理装置１０は、プログラムを実行したコンピュータにより実現される。そして、情報処理装置１０は、当該プログラムにより提供される情報処理を実行する。
【００１３】
また、情報処理装置１０は、例えばネットワーク上の他のコンピュータにより提供されるＷｅｂサービスを利用することができる。より詳しくは、情報処理装置１０は、ＸＭＬ文書を含んだＳＯＡＰメッセージをＷｅｂサービスに送信する。そして、情報処理装置１０は、処理結果を表わすＸＭＬ文書を含んだＳＯＡＰメッセージを当該Ｗｅｂサービスから受信し、当該処理結果を用いた情報処理を実行する。
【００１４】
情報処理装置１０は、プログラム処理部１２と、スキーマ記憶部１４と、ライブラリ処理部１６とを備える。プログラム処理部１２は、コンピュータがプログラムを実行することにより実現される。スキーマ記憶部１４は、当該情報処理装置１０が利用するＷｅｂサービスとの間でやり取りされるＳＯＡＰメッセージに含まれるＸＭＬ文書を定義するスキーマを記憶する。スキーマ記憶部１４は、コンピュータ内の記憶装置または当該コンピュータとネットワークを接続された記憶装置により実現される。
【００１５】
ライブラリ処理部１６は、所定のＷｅｂサービスとの間でＸＭＬ文書を含んだＳＯＡＰメッセージをやり取りする。ライブラリ処理部１６は、プログラム処理部１２が関数呼び出し処理を実行することに応じて呼び出されるライブラリ内のプログラムを、コンピュータが実行することにより実現される。
【００１６】
より詳しくは、ライブラリ処理部１６は、プログラム処理部１２からオブジェクトを引数として含んだ関数呼び出しを受信する。続いて、ライブラリ処理部１６は、当該オブジェクトをスキーマ記憶部１４に記憶されたＸＭＬスキーマに従ったＸＭＬ文書に変換する。続いて、ライブラリ処理部１６は、生成したＸＭＬ文書を含むＳＯＡＰメッセージをＷｅｂサービスに対して送信する。続いて、ライブラリ処理部１６は、ＸＭＬ文書により表わされた処理結果を含むＳＯＡＰメッセージを当該Ｗｅｂサービスから受信する。そして、ライブラリ処理部１６は、ＸＭＬ文書により表わされた処理結果をプログラム処理部１２により取り扱われるデータ形式のオブジェクトに変換して、戻り値としてプログラム処理部１２に送る。
【００１７】
図２は、本実施形態に係る生成装置２０の機能構成を示す。生成装置２０は、ライブラリ処理部１６の機能の一部として実現され、プログラム中のオブジェクトを、スキーマに従った構造化文書に変換する。より詳しくは、生成装置２０は、プログラム中のオブジェクトに含まれる各プロパティと、スキーマに基づき生成される構造化文書の各要素との対応関係を表わすマッピングを生成する。そして、生成装置２０は、生成したマッピングに基づいて、オブジェクトに含まれる各プロパティの値を当該プロパティに対応する要素の値として含んだ、スキーマに従った構造化文書を生成して出力する。
【００１８】
ここで、オブジェクトとは、オブジェクト指向プログラムにおいて取り扱うオブジェクト、配列データ、および、ＰＨＰにより記述されたプログラム等で利用される連続配列データ等を意味する。また、スキーマとは、構造化文書の階層構造を定義する情報を意味する。本実施形態においては、スキーマは、構造化文書の一例であるＸＭＬ文書の階層構造を定義する。また、生成装置２０は、１つのオブジェクトを１つの構造間文書に変換してもよいし、複数のオブジェクトを１つの構造化文書に変換してもよい。また、生成装置２０は、オブジェクトを、ＸＭＬ文書以外の構造化文書（例えばＨＴＭＬ（Ｈｙｐｅｒｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）文書）に変換する構成であってもよい。
【００１９】
生成装置２０は、受取部３２と、オブジェクト木生成部３４と、文書木生成部３６と、選択部４２と、変換部４４と、送信部４６とを備える。受取部３２は、プログラムの実行中において、オブジェクトを引数として、当該オブジェクトをＸＭＬ文書に変換して送信することを指示する関数呼び出しをプログラム処理部１２から受け取る。
【００２０】
オブジェクト木生成部３４は、受取部３２が受け取った関数呼び出し内のオブジェクトに含まれる各プロパティを木構造のノードとして割り当てて、オブジェクトの階層構造を示す木構造を生成する。文書木生成部３６は、スキーマ記憶部１４に記憶されたＸＭＬ文書の階層構造を記述したスキーマから、当該ＸＭＬ文書の各要素をノードとする木構造を生成する。例えば、文書木生成部３６は、スキーマに記述されたＸＭＬ文書の各要素名の規定をノードとし、スキーマに記述されたＸＭＬ文書の子要素の数の規定をエッジとする木構造を生成する。
【００２１】
選択部４２は、オブジェクトに含まれる各プロパティおよびＸＭＬ文書の各要素を対応付けるマッピングのうち、オブジェクトの木構造を文書木生成部３６が生成したＸＭＬ文書の木構造に変換する変換コストを最小化するマッピングを選択する。選択部４２は、一例として、マッピング生成部５２と、算出部５４と、マッピング選択部５６とを有する。
【００２２】
マッピング生成部５２は、受取部３２が受け取ったオブジェクトに含まれる各プロパティをＸＭＬ文書の各要素に対応付けるマッピングを、複数生成する。算出部５４は、マッピング生成部５２により生成された複数のマッピングのそれぞれについて、当該マッピングに従って受取部３２が受け取ったオブジェクトの木構造を文書木生成部３６が生成したＸＭＬ文書の木構造に変換する変換コストを算出する。マッピング選択部５６は、マッピング生成部５２により生成された複数のマッピングのうち、算出部５４が算出した変換コストが最小のマッピングを選択する。
【００２３】
変換部４４は、選択部４２が選択したマッピングに基づいて、オブジェクトの各プロパティの値を対応する各要素の値として含むＸＭＬ文書に変換する。送信部４６は、変換部４４が出力したＸＭＬ文書を送信する。
【００２４】
図３は、生成装置２０の処理フローを示す。まず、受取部３２は、当該プログラム中のオブジェクトをＸＭＬ文書に変換して送信することを指示する関数呼び出しを、プログラム処理部１２から受け取る（Ｓ１０１）。
【００２５】
続いて、オブジェクト木生成部３４は、受け取った関数呼び出しに引数として含まれるオブジェクトを取り出す。そして、オブジェクト木生成部３４は、取り出したオブジェクトに含まれる各プロパティを木構造のノードとして割り当てて、オブジェクトの階層構造を示す木構造を生成する（ステップＳ１０２）。
【００２６】
続いて、文書木生成部３６は、受け取った関数呼び出しに応じて出力すべきＸＭＬ文書の階層構造を記述したスキーマを、スキーマ記憶部１４から取得する。そして、文書木生成部３６は、取得したスキーマから、当該スキーマにより従って送信されるべきＸＭＬ文書の構造を規定する木構造を生成する（ステップＳ１０３）。
【００２７】
続いて、選択部４２は、オブジェクトに含まれる各プロパティおよびＸＭＬ文書の各要素を対応付けるマッピングのうち、オブジェクトの木構造を当該スキーマにより定義されたＸＭＬ文書の木構造に当該マッピングに従って変換する変換コストを最小化するマッピングを選択する（ステップＳ１０４）。ここで、オブジェクトの木構造をＸＭＬ文書の木構造にマッピングに従って変換する変換コストとは、当該オブジェクトの各プロパティに対応するノードが、当該マッピングにより当該プロパティに対応付けられた要素に対応するノードとなるように、オブジェクトの木構造をＸＭＬ文書の木構造に変換するコストをいう。選択部４２は、複数のマッピングのうちから、変換コストが最小のマッピングを見つけ出す。例えば、選択部４２は、オブジェクトの木構造をＸＭＬ文書の木構造に変換する変換コストが最小となるマッピングを、例えば非特許文献５に示されるような木編集問題を解いて見つけ出す。
【００２８】
続いて、変換部４４は、選択部４２が選択したマッピングに基づいて、受け取った関数呼び出しに引数として含まれるオブジェクトの各プロパティの値を対応する各要素の値として含む、スキーマにより定義されたＸＭＬ文書に変換する（ステップＳ１０５）。続いて、送信部４６は、変換部４４が出力したＸＭＬ文書を含むＳＯＡＰメッセージを、Ｗｅｂサービスに対して送信する（ステップＳ１０６）。
【００２９】
以上のように生成装置２０によれば、プログラム中のオブジェクトに含まれる各プロパティと、スキーマにより定義された構造化文書（例えばＸＭＬ文書）とのマッピングを自動的に生成することができる。なお、生成装置２０は、選択部４２により選択されたマッピングを外部に出力する構成であってもよい。このような生成装置２０は、生成したマッピングを、オブジェクトをＸＭＬ文書に変換する従来のツールに使用させたり、オブジェクトのプロパティとＸＭＬ文書の要素との対応付けの解析の参考とさせたりすることができる。
【００３０】
図４は、図３のステップＳ１０４において行われる処理の一例を示す。例えば、選択部４２は、図３のステップＳ１０４において、ステップＳ１１１〜ステップＳ１１３の処理を行ってよい。
【００３１】
まず、マッピング生成部５２は、オブジェクトに含まれる各プロパティをＸＭＬ文書の各要素に対応付ける複数のマッピングを生成する（ステップＳ１１１）。続いて、算出部５４は、生成した複数のマッピングのそれぞれについて、オブジェクトの木構造を当該マッピングに従ってＸＭＬ文書の木構造に変換するための最小編集コストを算出する（ステップＳ１１２）。そして、算出部５４は、算出した最小編集コストを、当該マッピングにおける変換コストとする。
【００３２】
ここで、ある木構造（第１の木構造）を他の木構造（第２の木構造）と同一の階層構造とするための編集操作としては、例えば、ノードの名称変更、ノードの順序変更およびノードの追加等がある。このような編集操作を組み合わせることにより、第１の木構造を第２の木構造と同一の構造に変換することができる。また、それぞれの編集操作には編集操作コストが割り当てられている。第１の木構造を第２の木構造と同一の構造に変換する編集操作の手順は多数存在し、それぞれの手順で用いられる各編集操作の編集操作コストの合計は、手順毎に異なる。
【００３３】
従って、算出部５４は、一例として、オブジェクトの木構造に対して、ノード（プロパティ）の名称変更、共通の親ノードに属する複数の子ノードの順序変更、および少なくとも１つのノードに対する親ノードの追加を含む編集操作を少なくとも１回適用する編集処理を行ってＸＭＬ文書の木構造に変換した場合において、各編集操作に対応付けられた編集操作コストの合計を編集処理による編集コストとして算出してよい。そして、算出部５４は、オブジェクトの木構造をＸＭＬ文書の木構造に変換する少なくとも１つの編集処理のうち、編集コストが最小であると判断した編集処理における編集コストを最小編集コストとしてよい。
【００３４】
なお、オブジェクト内の全てのプロパティを含んだＸＭＬ文書を生成すべきであるので、算出部５４は、ノードの削除操作を含む編集処理については、編集コストを算出しなくてよい。また、算出部５４は、編集コストが最小とならないと推定される編集処理、即ち、編集コストが予め定められた値より大きいと予め推定される編集処理については、編集コストを算出しなくてよい。これにより算出部５４は、演算量を少なくすることができる。
【００３５】
続いて、マッピング選択部５６は、マッピング生成部５２が生成した複数のマッピングのうち、算出部５４が算出した変換コストが最小のマッピングを選択する（ステップＳ１１３）。このように選択部４２は、オブジェクトの木構造をＸＭＬ文書の木構造に変換する変換コストが最小となるマッピングを見つけ出すことができる。なお、マッピング生成部５２は、一部のマッピングについては処理を省略して、マッピングの選択を高速に完了させる構成であってよい。
【００３６】
図５は、ＰＨＰにより記述されたプログラムの一例を示す。図５に記述されたプログラムにおいて、"ｎｅｗ  ＡｇｉｌｅＳｏａｐＣｌｉｅｎｔ（"ｅｍｐｌｏｙｅｅ．ｗｓｄｌ"）"は、"ｅｍｐｌｏｙｅｅ．ｗｓｄｌ"により定義されたＷｅｂサービスへのＳＯＡＰメッセージの送信を準備するプログラムを、ライブラリから呼ぶ出す関数呼び出しである。
【００３７】
また、図５に記述されたプログラムにおいて、"ｐｕｂｌｉｓｈＥｍｐｌｏｙｅｅ（＄ｐｅｒｓｏｎ）"は、上記のプログラムにより準備された関数呼び出しおよび引数として含まれるオブジェクトの一例である。当該オブジェクトは、変数＄ｐｅｒｓｏｎから参照され、プロパティとして、'ｎａｍｅ'、'ｆｉｒｓｔｎａｍｅ'および'ａｇｅ'を含む。また、各プロパティの値として、'ｎａｍｅ'＝'Ｔａｔｓｕｂｏｒｉ'、'ｆｉｒｓｔｎａｍｅ'＝'Ｍｉｃｈｉａｋｉ'および'ａｇｅ'＝'３３'が格納される。
【００３８】
図５のＰＨＰプログラムをコンピュータが実行することにより、プログラム処理部１２は、ＳＯＡＰメッセージの送信を準備するプログラムを呼び出す関数呼び出し（"ｎｅｗ  ＡｇｉｌｅＳｏａｐＣｌｉｅｎｔ（"ｅｍｐｌｏｙｅｅ．ｗｓｄｌ"）"）を、ライブラリ処理部１６に与えることができる。そして、このような関数呼び出しが与えられたライブラリ処理部１６は、別途呼び出された関数呼び出しおよび当該関数呼び出しに引数として含まれるオブジェクト（"ｐｕｂｌｉｓｈＥｍｐｌｏｙｅｅ（＄ｐｅｒｓｏｎ）"）をＸＭＬ文書に変換してＳＯＡＰメッセージに含めることができる。
【００３９】
図６および図７は、木構造に変換された後の、図５のプログラム中のオブジェクトのプロパティおよび値の一例を示す。図６は、ＸＭＬで記述した一例を示す。図７は、模式的に記述した一例を示す。オブジェクト木生成部３４は、図５のプログラム中のオブジェクトが与えられた場合、図６および図７に示されるような、親ノード（ａｎｏｎｙｍｏｕｓ）の直下に、３個の子ノード（'ｎａｍｅ'＝'Ｔａｔｓｕｂｏｒｉ'、'ｆｉｒｓｔｎａｍｅ'＝'Ｍｉｃｈｉａｋｉ'および'ａｇｅ'＝'３３'）を含む木構造を生成する。
【００４０】
図８は、Ｗｅｂサービスを定義するＷＳＤＬの一例を示す。図８のＷＳＤＬは、"ＰｕｂｌｉｓｈＥｍｐｌｏｙｅｅＳｅｒｖｉｃｅＲｅｑｕｅｓｔ"というＷｅｂサービスを定義する。ライブラリ処理部１６は、図５のプログラム中の関数呼び出しにより呼び出されたことに応じて、図８のＷＳＤＬの定義に従ったＳＯＡＰメッセージを送信する。
【００４１】
図９は、ＸＭＬにより記述されたスキーマ（ＸＭＬスキーマ）の一例を示す。図１０は、図９のスキーマにより定義されるＸＭＬ文書の木構造を示す。
【００４２】
図９に示されるスキーマは、図８のＷＳＤＬにより定義されるＷｅｂサービスへ送信するＳＯＡＰメッセージに含めるＸＭＬ文書の階層構造を定義する。図９のスキーマに従ったＸＭＬ文書は、名称が、"Ｅｍｐｌｏｙｅｅ"、"ｐｅｒｓｏｎ"、"ｎａｍｅ"、"ａｇｅ"、"ｆｉｒｓｔ−ｎａｍｅ"、"ｍｉｄｄｌｅ−ｎａｍｅ"および"ｌａｓｔ−ｎａｍｅ"と定義された要素を含む。文書木生成部３６は、図９のスキーマが与えられた場合、図１０に示されるような木構造を生成する。
【００４３】
図９のスキーマにより定義されるＸＭＬ文書の"Ｅｍｐｌｏｙｅｅ"要素は、図１０に示されるように木構造におけるルートノードに配置される。"ｐｅｒｓｏｎ"要素は、"Ｅｍｐｌｏｙｅｅ"要素の子ノードとして配置される。なお、"ｐｅｒｓｏｎ"要素は、ＸＭＬ文書内に０個からｎ個（ｎは、１以上の任意の整数）まで設けることができる繰り返しノードである。
【００４４】
図９のスキーマにより定義されるＸＭＬ文書の"ｎａｍｅ"要素および"ａｇｅ"要素は、図１０に示されるように"ｐｅｒｓｏｎ"要素の子ノードとして配置される。なお、"ｎａｍｅ"要素および"ａｇｅ"要素は、ＸＭＬ文書内に１個設けなければならない必須ノードである。また、"ａｇｅ"要素には、整数値が値として格納される。
【００４５】
図９のスキーマにより定義されるＸＭＬ文書の"ｆｉｒｓｔ−ｎａｍｅ"要素、"ｍｉｄｄｌｅ−ｎａｍｅ"要素および"ｌａｓｔ−ｎａｍｅ"要素は、図１０に示されるように"ｎａｍｅ"要素の子ノードとして配置され、文字列が値として格納される。なお、"ｆｉｒｓｔ−ｎａｍｅ"要素および"ｌａｓｔ−ｎａｍｅ"要素は、ＸＭＬ文書内に１個設けなければならない必須ノードである。また、"ｍｉｄｄｌｅ−ｎａｍｅ"要素は、ＸＭＬ文書内に設けることが任意なオプションノードである。
【００４６】
図１１は、図７に示されたオブジェクトの木構造を、図１０に示されたＸＭＬ文書の木構造に変換するための編集の一例を示す。図１１は、オブジェクトの'ｎａｍｅ'プロパティがＸＭＬ文書の"ｌａｓｔ−ｎａｍｅ"要素に、オブジェクトの'ｆｉｒｓｔｎａｍｅ'プロパティがＸＭＬ文書の"ｆｉｒｓｔ−ｎａｍｅ"要素に、オブジェクトの'ａｇｅ'プロパティがＸＭＬ文書の"ａｇｅ"要素に、マッピングによりそれぞれ対応付けられている例を示す。
【００４７】
本例において、算出部５４は、オブジェクトの木構造における"ａｎｏｎｙｍｏｕｓ"ノードの親ノードとして、"Ｅｍｐｌｏｙｅｅ"ノードを追加する編集操作を行ってよい。また、算出部５４は、オブジェクトの木構造における"ａｎｏｎｙｍｏｕｓ"ノードを、"ｐｅｒｓｏｎ"ノードに名称変更する編集操作を行ってよい。
【００４８】
また、算出部５４は、オブジェクトの木構造における"ｎａｍｅ"ノードおよび"ｆｉｒｓｔｎａｍｅ"ノードの親ノードとして、"ｎｅｍｅ"ノードを追加する編集操作を行ってよい。また、算出部５４は、オブジェクトの木構造における"ｎａｍｅ"ノードを、"ｌａｓｔ−ｎａｍｅ"ノードに名称変更する編集操作を行ってよい。また、算出部５４は、オブジェクトの木構造における"ｆｉｒｓｔｎａｍｅ"ノードを、"ｆｉｒｓｔ−ｎａｍｅ"ノードに名称変更する編集操作を行ってよい。
【００４９】
算出部５４は、オブジェクトの木構造に対して、このようなノードの名称変更および親ノードの追加等の編集操作を含む編集処理を行ってＸＭＬ文書の木構造に変換した場合において、各編集操作に対応付けられた編集操作コストの合計を編集処理による編集コストとして算出する。そして、算出部５４は、オブジェクトの木構造をＸＭＬ文書の木構造に変換する少なくとも１つの編集処理のうち、編集コストが最小であると判断した編集処理における編集コストを最小編集コストとして算出する。
【００５０】
図１２は、必須ノード、オプションノードおよび繰り返しノードの記述の一例を示す。算出部５４は、オブジェクトの木構造の各ノードに、必須ノード、オプションノードおよび繰り返しノード等のノード種別を指定する種類情報（例えば、図１２の"１"、"０．．１"、"０．．＊"）を付加する編集操作をしてよい。算出部５４は、例えば、このような編集操作における編集操作コストを、ノードを追加する編集操作と比較して低い編集操作コストとしてよい。例えば、ノードを追加する編集操作の編集操作コストを１とした場合、種類情報を付加する編集操作の編集操作コストを０としてよい。
【００５１】
また、算出部５４は、ノードの名称変更をする場合には、変更前のノードの名称（即ち、オブジェクトのプロパティの名称）と変更後のノードの名称（即ち、スキーマにより定義された要素）との文字列の距離（例えば、Ｌｅｖｅｎｓｈｔｅｉｎ距離）を、当該編集操作に対応付けられた編集操作コストとしてよい。また、この場合において、算出部５４は、プリフィックスのような名称の先頭に設けられる予め定められた部分の編集操作については、他の部分の編集操作と比較して編集操作コストを低くしてよい。
【００５２】
また、算出部５４は、同一の親ノードを有する子ノード同士の入れ替えの編集操作については、他のノードとの入れ替えの編集操作と比較して編集操作コストを低くしてよい。算出部５４は、一例として、同一の親ノードの子ノード同士の入れ替えの編集操作については、編集操作コストを０としてもよい。また、算出部５４は、同レベルの複数のノードをまとめて新たなノードを生成する編集操作については、新たなノードを追加する編集操作と比較して編集コストを低くしてよい。
【００５３】
また、マッピング選択部５６は、複数のオブジェクトのそれぞれのマッピングを生成する場合において、それぞれのオブジェクトについて選択したマッピングを記憶部に記憶してよい。そして、マッピング選択部５６は、ある一のオブジェクトについて編集コストが同一の複数のマッピングが存在する場合、これら編集コストが同一の複数のマッピングのうち、記憶部に記憶されたマッピング（即ち、過去に選択されたマッピング）と同一または近似するマッピングを選択してよい。
【００５４】
図１３は、選択部４２により選択されたマッピングに基づいて、図５に示されるオブジェクトから変換されたＸＭＬ文書の一例を示す。以上のように、選択部４２は、オブジェクトに含まれる各プロパティおよびＸＭＬ文書の各要素を対応付けるマッピングのうち、オブジェクトの木構造を、文書木生成部３６が生成したＸＭＬ文書の木構造に変換する変換コストを最小化するマッピングを選択する。
【００５５】
本例において、選択部４２は、オブジェクトの'ｎａｍｅ'プロパティをＸＭＬ文書の"ｌａｓｔ−ｎａｍｅ"要素に、オブジェクトの'ｆｉｒｓｔｎａｍｅ'プロパティをＸＭＬ文書の"ｆｉｒｓｔ−ｎａｍｅ"要素に、オブジェクトの'ａｇｅ'プロパティをＸＭＬ文書の"ａｇｅ"要素に対応付けたマッピングを選択する。この結果、変換部４４は、図５に示されるオブジェクトが与えられたことに応じて、図１３に示されるようなＸＭＬ文書を出力することができる。このように変換部４４によれば、与えられたオブジェクトを、スキーマに従ったＸＭＬ文書に変換することができる。
【００５６】
図１４は、配列を含んだオブジェクトの木構造の一例を示す。図１５は、繰り返し要素を含んだＸＭＬ文書の木構造の一例を示す。
【００５７】
図１４において、"ｍｅｍｂｅｒＬｉｓｔ"ノードは、配列の各要素を子ノードとする配列ノードを示す。また、図１５において、"ｍｅｍｂｅｒ"ノードは、繰り返しが指定された繰り返し要素に対応する繰り返しノードを示す。
【００５８】
プログラムから与えられたオブジェクトが配列を含む場合、オブジェクト木生成部３４は、図１４に示されるような、オブジェクトに含まれる配列の各要素を子ノードとする配列ノードを含むオブジェクトの木構造を生成してよい。また、スキーマにより定義されたＸＭＬ文書が繰り返し要素を含む場合、文書木生成部３６は、図１５に示されるような、ＸＭＬ文書において繰り返しが指定された繰り返し要素を繰り返しノードとして含むＸＭＬ文書の木構造を生成してよい。
【００５９】
そして、プログラムから与えられたオブジェクトが配列を含み、スキーマにより定義されたＸＭＬ文書が繰り返し要素を含む場合、マッピング生成部５２は、オブジェクトに含まれる配列のプロパティを、ＸＭＬ文書において繰り返しが指定された繰り返し要素に対応付けたマッピングを生成してよい。すなわち、マッピング生成部５２は、オブジェクトの木構造中における配列ノードを、ＸＭＬ文書の木構造中における繰り返しノードに対応付けるマッピングを生成する。これにより、マッピング生成部５２は、オブジェクトに含まれる配列のプロパティを、ＸＭＬ文書において繰り返しが指定された繰り返し要素に対応付けたマッピングを生成することができる。
【００６０】
図１６Ａは、図１４のオブジェクトの木構造から、配列ノードの子ノードを除いた木構造の一例を示す。図１６Ｂは、図１５のＸＭＬ文書の木構造から、繰り返しノードの子ノードを除いた木構造の一例を示す。図１７Ａは、図１４のオブジェクトの木構造のうち、配列ノードの１つの子ノードから末端側の木構造の一例を示す。図１７Ａは、図１５のＸＭＬ文書の木構造のうち、繰り返しノードの１つの子ノードから末端側の木構造の一例を示す。
【００６１】
プログラムから与えられたオブジェクトが配列を含み、スキーマにより定義されたＸＭＬ文書が繰り返し要素を含む場合、マッピング生成部５２は、図１６Ａに示されるようなオブジェクトの木構造から配列ノードの子ノードを除いた木構造と、図１６Ｂに示されるようなＸＭＬ文書の木構造から繰り返しノードの子ノードを除いた木構造との間で、ノード同士の対応付けを生成してよい。
【００６２】
また、この場合、マッピング生成部５２は、オブジェクトの木構造中における配列ノードとＸＭＬ文書の木構造中における繰り返しノードとが対応付けられたことに応じて、配列ノードおよび繰り返しノードの子ノード同士の対応付けを生成してよい。即ち、マッピング生成部５２は、図１７Ａに示されるような配列ノードの１つの子ノードから末端側の木構造と、図１７Ｂに示されるような繰り返しノードの１つの子ノードから末端側の木構造との対応付けを生成してよい。これにより、マッピング生成部５２は、オブジェクトに含まれる配列の各要素のプロパティを、ＸＭＬ文書において繰り返しが指定された繰り返し要素の末端側の各要素に対応付けたマッピングを生成することができる。
【００６３】
また、文書木生成部３６は、ＸＭＬ文書において、オプションであることが指定されたオプション要素をオプションノードとして含み、かつ必須であることが指定された必須要素を必須ノードとして含むＸＭＬ文書の木構造を生成してよい。そして、オブジェクトの木構造中における子ノードを有するオブジェクト側親ノードを、ＸＭＬ文書の木構造中におけるオプションノードおよび必須ノードを有する文書側親ノードに対応付ける場合において、マッピング生成部５２は、オブジェクトの木構造中における子ノードを、必須ノードに優先して対応付してよい。これにより、マッピング生成部５２によれば、ＸＭＬ文書中の必須ノードに値が格納されず、スキーマに従ったＸＭＬ文書が生成できなくなることを回避することができる。
【００６４】
また、複数のオブジェクトのそれぞれのマッピングを生成する場合において、マッピング生成部５２は、プログラム中の一の部分の記述に基づいて一の子ノードを必須ノードに対応付けたことに応じて、当該対応付けを履歴記憶部に格納してよい。そして、マッピング生成部５２は、プログラム中の他の部分の記述に基づいて、一の子ノードと必須ノードとの対応付けが履歴記憶部に格納されていることに応じて一の子ノードを必須ノードに対応付け、他の子ノードをオプションノードに対応付けてよい。これにより、マッピング生成部５２は、プログラム中の複数のオブジェクトのそれぞれについて、一貫性のあるマッピングを実現することができる。
【００６５】
図１８は、本実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。本実施形態に係るコンピュータ１９００は、ホスト・コントローラ２０８２により相互に接続されるＣＰＵ２０００、ＲＡＭ２０２０、グラフィック・コントローラ２０７５、及び表示装置２０８０を有するＣＰＵ周辺部と、入出力コントローラ２０８４によりホスト・コントローラ２０８２に接続される通信インターフェイス２０３０、ハードディスクドライブ２０４０、及びＣＤ−ＲＯＭドライブ２０６０を有する入出力部と、入出力コントローラ２０８４に接続されるＲＯＭ２０１０、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０を有するレガシー入出力部とを備える。
【００６６】
ホスト・コントローラ２０８２は、ＲＡＭ２０２０と、高い転送レートでＲＡＭ２０２０をアクセスするＣＰＵ２０００及びグラフィック・コントローラ２０７５とを接続する。ＣＰＵ２０００は、ＲＯＭ２０１０及びＲＡＭ２０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ２０７５は、ＣＰＵ２０００等がＲＡＭ２０２０内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置２０８０上に表示させる。これに代えて、グラフィック・コントローラ２０７５は、ＣＰＵ２０００等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【００６７】
入出力コントローラ２０８４は、ホスト・コントローラ２０８２と、比較的高速な入出力装置である通信インターフェイス２０３０、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０を接続する。通信インターフェイス２０３０は、ネットワークを介して他の装置と通信する。ハードディスクドライブ２０４０は、コンピュータ１９００内のＣＰＵ２０００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ２０６０は、ＣＤ−ＲＯＭ２０９５からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。
【００６８】
また、入出力コントローラ２０８４には、ＲＯＭ２０１０と、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０の比較的低速な入出力装置とが接続される。ＲＯＭ２０１０は、コンピュータ１９００が起動時に実行するブート・プログラム、及び／又は、コンピュータ１９００のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ２０５０は、フレキシブルディスク２０９０からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。入出力チップ２０７０は、フレキシブルディスク・ドライブ２０５０を入出力コントローラ２０８４へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ２０８４へと接続する。
【００６９】
ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供されるプログラムは、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、ＲＡＭ２０２０を介してコンピュータ１９００内のハードディスクドライブ２０４０にインストールされ、ＣＰＵ２０００において実行される。
【００７０】
コンピュータ１９００にインストールされ、コンピュータ１９００を生成装置２０として機能させるプログラムは、受取モジュールと、オブジェクト木生成モジュールと、文書木生成モジュールと、選択モジュールと、変換モジュールと、送信モジュールとを備える。これらのプログラム又はモジュールは、ＣＰＵ２０００等に働きかけて、コンピュータ１９００を、受取部３２、オブジェクト木生成部３４、文書木生成部３６、選択部４２、変換部４４および送信部４６としてそれぞれ機能させる。
【００７１】
これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である受取部３２、オブジェクト木生成部３４、文書木生成部３６、選択部４２、変換部４４および送信部４６として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ１９００の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有の生成装置２０が構築される。
【００７２】
一例として、コンピュータ１９００と外部の装置等との間で通信を行う場合には、ＣＰＵ２０００は、ＲＡＭ２０２０上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス２０３０に対して通信処理を指示する。通信インターフェイス２０３０は、ＣＰＵ２０００の制御を受けて、ＲＡＭ２０２０、ハードディスクドライブ２０４０、フレキシブルディスク２０９０、又はＣＤ−ＲＯＭ２０９５等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス２０３０は、ＤＭＡ（ダイレクト・メモリ・アクセス）方式により記憶装置との間で送受信データを転送してもよく、これに代えて、ＣＰＵ２０００が転送元の記憶装置又は通信インターフェイス２０３０からデータを読み出し、転送先の通信インターフェイス２０３０又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【００７３】
また、ＣＰＵ２０００は、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０（ＣＤ−ＲＯＭ２０９５）、フレキシブルディスク・ドライブ２０５０（フレキシブルディスク２０９０）等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をＤＭＡ転送等によりＲＡＭ２０２０へと読み込ませ、ＲＡＭ２０２０上のデータに対して各種の処理を行う。そして、ＣＰＵ２０００は、処理を終えたデータを、ＤＭＡ転送等により外部記憶装置へと書き戻す。このような処理において、ＲＡＭ２０２０は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはＲＡＭ２０２０および外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、ＣＰＵ２０００は、ＲＡＭ２０２０の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはＲＡＭ２０２０の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもＲＡＭ２０２０、メモリ、及び／又は記憶装置に含まれるものとする。
【００７４】
また、ＣＰＵ２０００は、ＲＡＭ２０２０から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、ＲＡＭ２０２０へと書き戻す。例えば、ＣＰＵ２０００は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断し、条件が成立した場合（又は不成立であった場合）に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
【００７５】
また、ＣＰＵ２０００は、記憶装置内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第１属性の属性値に対し第２属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、ＣＰＵ２０００は、記憶装置に格納されている複数のエントリの中から第１属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第２属性の属性値を読み出すことにより、所定の条件を満たす第１属性に対応付けられた第２属性の属性値を得ることができる。
【００７６】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５の他に、ＤＶＤ又はＣＤ等の光学記録媒体、ＭＯ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ１９００に提供してもよい。
【００７７】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００７８】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【図面の簡単な説明】
【００７９】
【図１】図１は、本発明の実施形態に係る情報処理装置１０の機能構成を示す。
【図２】図２は、本発明の実施形態に係る生成装置２０の機能構成を示す。
【図３】図３は、生成装置２０の処理フローを示す。
【図４】図４は、図３のステップＳ１０４において行われる処理の一例を示す。
【図５】図５は、ＰＨＰにより記述されたプログラムの一例を示す。
【図６】図６は、ＸＭＬで記述された、木構造に変換された後の、図５のプログラム中のオブジェクトのプロパティおよび値の一例を示す。
【図７】図７は、模式的に記述された、木構造に変換された後の、図５のプログラム中のオブジェクトのプロパティおよび値の一例を示す。
【図８】図８は、Ｗｅｂサービスを定義するＷＳＤＬの一例を示す。
【図９】図９は、ＸＭＬにより記述されたスキーマ（ＸＭＬスキーマ）の一例を示す。図１０は、図９のスキーマにより定義されるＸＭＬ文書の木構造を示す。
【図１０】図１０は、図９のスキーマにより定義されるＸＭＬ文書の木構造を示す。
【図１１】図１１は、図７に示されたオブジェクトの木構造を、図１０に示されたＸＭＬ文書の木構造に変換するための編集の一例を示す。
【図１２】図１２は、必須ノード、オプションノードおよび繰り返しノードの記述の一例を示す。
【図１３】図１３は、選択部４２により選択されたマッピングに基づいて、図５に示されるオブジェクトから変換されたＸＭＬ文書の一例を示す。
【図１４】図１４は、配列を含んだオブジェクトの木構造の一例を示す。
【図１５】図１５は、繰り返し要素を含んだＸＭＬ文書の木構造の一例を示す。
【図１６Ａ】図１６Ａは、図１４のオブジェクトの木構造から、配列ノードの子ノードを除いた木構造の一例を示す。
【図１６Ｂ】図１６Ｂは、図１５のＸＭＬ文書の木構造から、繰り返しノードの子ノードを除いた木構造の一例を示す。
【図１７Ａ】図１７Ａは、図１４のオブジェクトの木構造のうち、配列ノードの１つの子ノードから末端側の木構造の一例を示す。
【図１７Ｂ】図１７Ａは、図１５のＸＭＬ文書の木構造のうち、繰り返しノードの１つの子ノードから末端側の木構造の一例を示す。
【図１８】本発明の実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。
【符号の説明】
【００８０】
１０  情報処理装置
１２  プログラム処理部
１４  スキーマ記憶部
１６  ライブラリ処理部
２０  生成装置
３２  受取部
３４  オブジェクト木生成部
３６  文書木生成部
４２  選択部
４４  変換部
４６  送信部
５２  マッピング生成部
５４  算出部
５６  マッピング選択部
１９００  コンピュータ
２０００  ＣＰＵ
２０１０  ＲＯＭ
２０２０  ＲＡＭ
２０３０  通信インターフェイス
２０４０  ハードディスクドライブ
２０５０  フレキシブルディスク・ドライブ
２０６０  ＣＤ−ＲＯＭドライブ
２０７０  入出力チップ
２０７５  グラフィック・コントローラ
２０８０  表示装置
２０８２  ホスト・コントローラ
２０８４  入出力コントローラ
２０９０  フレキシブルディスク
２０９５  ＣＤ−ＲＯＭ
【図１】
2010079511.tif 000003
【図２】
2010079511.tif 000004
【図３】
2010079511.tif 000005
【図４】
2010079511.tif 000006
【図５】
2010079511.tif 000007
【図６】
2010079511.tif 000008
【図７】
2010079511.tif 000009
【図８】
2010079511.tif 000010
【図９】
2010079511.tif 000011
【図１０】
2010079511.tif 000012
【図１１】
2010079511.tif 000013
【図１２】
2010079511.tif 000014
【図１３】
2010079511.tif 000015
【図１４】
2010079511.tif 000016
【図１５】
2010079511.tif 000017
【図１６Ａ】
2010079511.tif 000018
【図１６Ｂ】
2010079511.tif 000019
【図１７Ａ】
2010079511.tif 000020
【図１７Ｂ】
2010079511.tif 000021
【図１８】
2010079511.tif 000022