(57)【要約】【課題】構造化文書中の所定の要素が指示されている場合に、この構造化文書が変更されても所望の要素を適切に指示し続けることができるようにする。【解決手段】複数の構造化文書の差分を計算する差分計算部２０と、この差分計算部２０により計算された差分に関する情報に基づいて所定の構造化文書における所定の部分を指示する指示情報から他の構造化文書中の対応する部分を指示する指示情報を生成するＸＰａｔｈ更新部３０とを備える。【選択図】　　　　図２
2004046745.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを制御して、構造化文書の所定の要素を指示するデータ処理方法であって、
所定の指示情報により要素を指示された構造化文書が変更された場合に、当該構造化文書を入力して変更内容を解析し、解析結果をメモリに格納するステップと、
前記メモリから前記解析結果を読み出し、解析された前記変更内容に応じて、変更後の前記構造化文書中の対応する要素を指示するように指示情報を更新するステップと
を含むことを特徴とするデータ処理方法。
【請求項２】
前記指示情報を更新するステップでは、ＸＰａｔｈを用いて記述された前記指示情報を更新することを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
コンピュータを制御して、２つのツリー構造データの差分を計算する差分計算方法であって、
メモリから処理対象である２つのツリー構造データを読み出して比較し、一方のツリー構造データから他方のツリー構造データに変形するための操作をツリー構造の構成要素に対する所定の操作の組合せで表現した操作列のリストを作成し、メモリに格納する第１のステップと、
前記メモリから前記操作列のリストを読み出し、当該操作列のリストのうちで、前記構成要素の移動として把握できる操作列を移動の操作に変更する第２のステップと
を含むことを特徴とする差分計算方法。
【請求項４】
前記第１のステップでは、前記ツリー構造データを変形するための操作を、ツリー構造のノードまたはサブツリーの追加、削除、変更の組合せで表現した操作列のリストを作成することを特徴とする請求項３に記載の差分計算方法。
【請求項５】
複数の構造化文書の差分を計算する差分計算部と、
前記差分計算部により計算された差分に関する情報に基づいて所定の構造化文書における所定の部分を指示する指示情報から他の構造化文書中の対応する部分を指示する指示情報を生成する指示情報生成部と
を備えることを特徴とする指示情報生成システム。
【請求項６】
構造化文書の構造を解析してツリー構造データに変換する文書解析部をさらに備え、
前記差分計算部は、前記文書解析部にて変換された複数の構造化文書に対応する複数のツリー構造データを比較して差分を計算することを特徴とする請求項５に記載の指示情報生成システム。
【請求項７】
前記差分計算部は、ツリー構造データの構成要素のうちで、前記複数のツリー構造データを一方から他方へ変形するための操作において移動された構成要素を追跡するように当該ツリー構造データの差分を計算することを特徴とする請求項６に記載の指示情報生成システム。
【請求項８】
前記指示情報は、ＸＰａｔｈで記述されていることを特徴とする請求項５に記載の指示情報生成システム。
【請求項９】
前記指示情報生成部は、前記構造化文書の差分と前記所定の構造化文書に対するＸＰａｔｈとに基づいて、ＸＰａｔｈを構成するロケーションステップを再生成することにより、前記他の構造化文書に対するＸＰａｔｈを生成することを特徴とする請求項８に記載の指示情報生成システム。
【請求項１０】
コンピュータを制御して、構造化文書の所定の要素を指示するデータ処理を実行させるプログラムであって、
所定の指示情報により要素を指示された構造化文書が変更された場合に、当該構造化文書を入力して変更内容を解析し、解析結果をメモリに格納する第１の処理と、
前記メモリから前記解析結果を読み出し、解析された前記変更内容に応じて、変更後の前記構造化文書中の対応する要素を指示するように指示情報を更新する第２の処理と
を前記コンピュータに実行させることを特徴とするプログラム。
【請求項１１】
前記プログラムによる前記第１の処理は、
変更前後の前記構造化文書をツリー構造データに変換する処理と、
当該ツリー構造データの差分を計算する処理とを含み、
前記プログラムによる前記第２の処理では、前記ツリー構造データの差分を用いて前記指示情報を更新する処理を前記コンピュータに実行させることを特徴とする請求項１０に記載のプログラム。
【請求項１２】
前記プログラムによる前記差分を計算する処理では、前記構造化文書の変更に応じて変形されたツリー構造データの構成要素のうちで、当該ツリー構造データの変形に要する操作において移動された構成要素を追跡するように当該ツリー構造データの差分を計算する処理を前記コンピュータに実行させることを特徴とする請求項１１に記載のプログラム。
【請求項１３】
前記プログラムによる前記第２の処理では、変更前後の前記構造化文書の差分に基づいて、前記指示情報が記述されたＸＰａｔｈを構成するロケーションステップを再生成することにより、当該ＸＰａｔｈの記述を更新する処理を前記コンピュータに実行させることを特徴とする請求項１０に記載のプログラム。
【請求項１４】
コンピュータを制御して、２つのツリー構造データの差分を計算するプログラムであって、
メモリから処理対象である２つのツリー構造データを読み出して比較し、一方のツリー構造データから他方のツリー構造データに変形するための操作をツリー構造の構成要素に対する所定の操作の組合せで表現した操作列のリストを作成し、メモリに格納する第１の処理と、
前記メモリから前記操作列のリストを読み出し、当該操作列のリストのうちで、前記構成要素の移動として把握できる操作列を移動の操作に変更する第２の処理と
を前記コンピュータに実行させることを特徴とするプログラム。
【請求項１５】
前記プログラムによる前記第２の処理では、前記操作列のリスト中に、前記ツリー構造データにおける同一の構成要素を削除する操作と追加する操作とが存在する場合に、これらの操作に替えて当該構成要素を移動する操作を当該操作列のリストに加える処理を前記コンピュータに実行させることを特徴とする請求項１４に記載のプログラム。
【請求項１６】
前記プログラムによる前記第２の処理では、前記操作列のリスト中に、前記ツリー構造データにおける所定の構成要素を変更する操作が存在する場合に、所定の規則に基づいて、当該操作を構成要素の移動を含む別の操作に置き替える処理を前記コンピュータに実行させることを特徴とする請求項１４に記載のプログラム。
【請求項１７】
コンピュータを制御して構造化文書の所定の要素を指示するデータ処理を実行させるプログラムを、当該コンピュータが読み取り可能に記録した記録媒体において、
前記プログラムは、
所定の指示情報により要素を指示された構造化文書が変更された場合に、当該構造化文書を入力して変更内容を解析し、解析結果をメモリに格納する処理と、前記メモリから前記解析結果を読み出し、解析された前記変更内容に応じて、変更後の前記構造化文書における対応する要素を指示するように指示情報を更新する処理と
を前記コンピュータに実行させることを特徴とする記録媒体。
【請求項１８】
コンピュータを制御して２つのツリー構造データの差分を計算するプログラムを、当該コンピュータが読み取り可能に記録した記録媒体において、
前記プログラムは、
メモリから処理対象である２つのツリー構造データを読み出して比較し、一方のツリー構造データから他方のツリー構造データに変形するための操作をツリー構造の構成要素に対する所定の操作の組合せで表現した操作列のリストを作成し、メモリに格納する処理と、
前記メモリから前記操作列のリストを読み出し、当該操作列のリストのうちで、前記構成要素の移動として把握できる操作列を移動の操作に変更する処理と
を前記コンピュータに実行させることを特徴とする記録媒体。
【請求項１９】
所定のＨＴＭＬ文書に対して設定されたアノテーションデータを管理するアノテーションサーバにおいて、
アノテーションデータが設定された前記ＨＴＭＬ文書が変更された場合に、変更前後の当該ＨＴＭＬ文書の差分を計算する差分計算手段と、
前記差分計算手段の計算により得られた差分情報に基づいて、前記アノテーションデータを前記ＨＴＭＬ文書の所定の部分に対応付けるＸＰａｔｈを更新するＸＰａｔｈ更新手段と
を備えることを特徴とするアノテーションサーバ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ　Ｍａｒｋｕｐ　Ｌａｎｇｕａｇｅ）やＨＴＭＬ（Ｈｙｐｅｒｔｅｘｔ　Ｍａｒｋｕｐ　Ｌａｎｇｕａｇｅ）などで記述された文書の要素を指示する方法に関し、特に文書が変更された場合に要素の指示表現を更新する方法に関する。
【０００２】
【従来の技術】
インターネットなどのデータ交換に用いられるＸＭＬやＨＴＭＬなどで記述された構造化された文書（以下、構造化文書）に対し、この構造化文書中の特定の要素（エレメント）を指示してアノテーション（ａｎｎｏｔａｔｉｏｎ：注釈）などのメタ情報を付す場合がある。また、構造化文書に予め変形ルールを記述しておき、この変形ルールに基づいて構造化文書を変形させる場合がある。このようなメタ情報や変形ルールを構造化文書に付加する場合、ＸＰａｔｈ（ＸＭＬ　Ｐａｔｈ　Ｌａｎｇｕａｇｅ）を用いて当該構造化文書における所定の位置を指示し、外部文書から参照することが行われる。
【０００３】
ＸＰａｔｈは、構造化文書の特定の部分を指し示すための言語であり、ＸＰａｔｈを指示情報として利用することによって、構造化文書中におけるアノテーションを付したり変形を行ったりする位置を任意に特定することができる。以下の説明では、ＸＰａｔｈによる記述も単にＸＰａｔｈと記す。
具体的なＸＰａｔｈの表記は、次のように行われる。
図１８は、構造化文書であるＸＭＬ文書の構成例を示す図である。ＸＰａｔｈでは、ルート要素をスラッシュ「／」で表す。したがって、図１８のＸＭＬ文書に対し、要素ａは、ルートの子供要素であるため、「／ａ」と表現される。また、要素ｂや要素ｄは、「／ａ／ｂ」や「／ａ／ｂ／ｄ」と表される。さらに、「／／ｐ［ｉｄ＝”ｆｏｏ”］」は、あるＸＭＬ文書中に存在する全てのｐ要素の中で、その要素のｉｄ属性が「ｆｏｏ」であるものを選択するＸＰａｔｈの表記例である。
【０００４】
【発明が解決しようとする課題】
上述したように、ＸＰａｔｈによれば、ＸＭＬ文書やＨＴＭＬ文書といった構造化文書の特定の要素を任意に指示することができる。しかし、指示対象である構造化文書が変更されてしまうと、構造化文書中の要素やその位置が変わってしまうことにより、ＸＰａｔｈによる位置の指定が外れ、所望の要素を適切に指示できなくなる場合があった。
従来、このような場合に構造化文書中の所望の要素を適切に指示し続けるためには、人手を介してＸＰａｔｈの記述を修正しなければならず、多大な手間を要し、この構造化文書を利用するシステムの開発者にとって大きな負担となっていた。
【０００５】
そこで、本発明は、構造化文書中の所定の要素が指示されている場合に、この構造化文書が変更されても所望の要素を適切に指示し続けることができるようにすることを目的とする。
また本発明は、ＸＰａｔｈを用いて所定の要素が指示されている構造化文書が変更された場合に、この構造化文書の変更に応じてＸＰａｔｈを自動的に更新する手段を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記の目的を達成する本発明は、構造化文書の所定の要素を指示する、次のようなデータ処理方法として実現される。すなわち、このデータ処理方法は、所定の指示情報により要素を指示された構造化文書が変更された場合に、この構造化文書を入力して変更内容を解析するステップと、解析された構造化文書の変更内容に応じて、変更後の構造化文書中の対応する要素を指示するように指示情報を更新するステップとを含むことを特徴とする。
【０００７】
より詳細には、この構造化文書の変更内容を解析するステップは、変更前後の構造化文書をツリー構造データに変換する処理と、このツリー構造データの差分を計算する処理とを含む。そして、このツリー構造データの差分を用いて指示情報を更新する。
さらに詳しくは、このツリー構造データの差分を計算する処理では、この構造化文書の変更に応じて変形されたツリー構造データの構成要素のうちで、このツリー構造データの変形に要する操作において移動された構成要素を追跡するようにこのツリー構造データの差分を計算する。
【０００８】
また好ましくは、構造化文書中の要素を指示する指示情報としてＸＰａｔｈを用いることができる。
そして、指示情報を更新する処理では、変更前後の構造化文書の差分に基づいて、指示情報が記述されたＸＰａｔｈを構成するロケーションステップを再生成することにより、ＸＰａｔｈの記述を更新する。
【０００９】
また、上記の目的を達成する他の本発明は、このようなデータ処理を実行する指示情報生成システムとしても実現される。すなわち、この指示情報生成システムは、複数の構造化文書の差分を計算する差分計算部と、この差分計算部により計算された差分に関する情報に基づいて所定の構造化文書における所定の部分を指示する指示情報から他の構造化文書中の対応する部分を指示する指示情報を生成する指示情報生成部とを備えることを特徴とする。
より好ましくは、この指示情報生成システムは、構造化文書の構造を解析してツリー構造データに変換する文書解析部をさらに備え、差分計算部は、この文書解析部にて変換された複数の構造化文書に対応する複数のツリー構造データを比較して差分を計算する。
【００１０】
また、本発明は、このような指示情報の更新を実現するため、次のような２つのツリー構造データの差分計算方法として実現することができる。すなわち、この差分計算方法は、メモリから処理対象である２つのツリー構造データを読み出して比較し、一方のツリー構造データから他方のツリー構造データに変形するための操作をツリー構造の構成要素に対する所定の操作の組合せで表現した操作列のリストを作成するステップと、この操作列のリストのうちで、ツリー構造の構成要素の移動として把握できる操作列を移動の操作に変更するステップとを含むことを特徴とする。
ここで、ツリー構造の構成要素とは、ツリーのノード及び部分的なサブツリーを含む。また、ツリー構造の構成要素に対する所定の操作の組合せとは、例えばこれらの構成要素を追加し、削除し、または変更する操作の組合せといった、基本操作である。
【００１１】
また、より詳細には、このリスト中の操作列を変更するステップでは、このリスト中に、ツリー構造データにおける同一の構成要素を削除する操作と追加する操作とが存在する場合に、これらの操作に替えて構成要素を移動する操作をこのリストに加える。
さらに、このリスト中に、ツリー構造データにおける所定の構成要素を変更する操作が存在する場合に、所定の規則に基づいて、この操作を構成要素の移動を含む別の操作に置き替える。
【００１２】
また、上記の目的を達成するさらに他の本発明は、所定のＨＴＭＬ文書に対して設定されたアノテーションデータを管理する、次のようなアノテーションサーバとしても実現される。このアノテーションサーバは、アノテーションデータが設定されたＨＴＭＬ文書が変更された場合に、変更前後のかかるＨＴＭＬ文書の差分を計算する差分計算手段と、この差分計算手段の計算により得られた差分情報に基づいて、アノテーションデータをＨＴＭＬ文書の所定の部分に対応付けるＸＰａｔｈを更新するＸＰａｔｈ更新手段とを備えることを特徴とする。
【００１３】
さらにまた、本発明は、コンピュータを制御して上記のデータ処理方法や差分計算方法における各ステップに対応する処理を実行させるプログラム、あるいは上述した指示情報更新システムやアノテーションサーバとしてコンピュータを機能させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供することができる。
【００１４】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
図１は、本実施の形態によるＸＰａｔｈ更新方法を実現するのに好適なコンピュータ装置のハードウェア構成の例を模式的に示した図である。
図１に示すコンピュータ装置は、演算手段であるＣＰＵ（Ｃｅｎｔｒａｌ　ＰｒｏｃｅｓｓｉｎｇＵｎｉｔ：中央処理装置）１０１と、Ｍ／Ｂ（マザーボード）チップセット１０２及びＣＰＵバスを介してＣＰＵ１０１に接続されたメインメモリ１０３と、同じくＭ／Ｂチップセット１０２及びＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ　Ｇｒａｐｈｉｃｓ　Ｐｏｒｔ）を介してＣＰＵ１０１に接続されたビデオカード１０４と、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを介してＭ／Ｂチップセット１０２に接続されたハードディスク１０５、ネットワークインターフェイス１０６及びＵＳＢポート１０７と、さらにこのＰＣＩバスからブリッジ回路１０８及びＩＳＡ（Ｉｎｄｕｓｔｒｙ　Ｓｔａｎｄａｒｄ　Ａｒｃｈｉｔｅｃｔｕｒｅ）バスなどの低速なバスを介してＭ／Ｂチップセット１０２に接続されたフロッピーディスクドライブ１０９及びキーボード／マウス１１０とを備える。
なお、図１は本実施の形態を実現するコンピュータ装置のハードウェア構成を例示するに過ぎず、本実施の形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード１０４を設ける代わりに、ビデオメモリのみを搭載し、ＣＰＵ１０１にてイメージデータを処理する構成としても良いし、ＡＴＡ（ＡＴ　Ａｔｔａｃｈｍｅｎｔ）などのインターフェイスを介してＣＤ−ＲＯＭ（ＣｏｍｐａｃｔＤｉｓｃ　Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）やＤＶＤ−ＲＯＭ（Ｄｉｇｉｔａｌ　Ｖｅｒｓａｔｉｌｅ　Ｄｉｓｃ　Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）のドライブを設けても良い。
【００１５】
図２は、図１に示したコンピュータ装置にて実現される本実施の形態によるＸＰａｔｈ更新システムの構成を示す図である。
図２に示すように、本実施の形態によるＸＰａｔｈ更新システムは、構造化文書の構造を解析する文書解析部１０と、文書解析部１０の解析結果に基づいて構造化文書に対してなされた変更を調べる差分計算部２０と、差分計算部２０の計算結果に基づいて指示情報としてのＸＰａｔｈの記述を更新するＸＰａｔｈ更新部３０とを備えている。
【００１６】
上記の各構成要素は、図１に示したメインメモリ１０３に展開されたプログラムにてＣＰＵ１０１を制御することにより実現される仮想的なソフトウェアブロックである。ＣＰＵ１０１を制御してこれらの機能を実現させる当該プログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記憶媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供される。本実施の形態では、図１に示したネットワークインターフェイス１０６やフロッピーディスクドライブ１０９、図示しないＣＤ−ＲＯＭドライブなどを介して当該プログラムを入力し、ハードディスク１０５に格納する。そして、ハードディスク１０５に格納されたプログラムをメインメモリ１０３に読み込んで展開し、ＣＰＵ１０１にて実行することにより、図２に示した各構成要素の機能を実現する。
また、処理対象である構造化文書やＸＰａｔｈは、例えばハードディスク１０５の所定の領域に格納されており、本実施の形態によるＸＰａｔｈの更新処理を実行するために、ＣＰＵ１０１によって読み出される。
【００１７】
図２に示した本実施の形態において、文書解析部１０は、構造化文書を解析し、ＤＯＭツリーなどのツリー構造の形をしたデータ（以下、単にツリーと記す）に変換する。変換対象は、変更が行われた構造化文書における変更前後の各文書である。すなわち、文書解析部１０は、ハードディスク１０５等の記憶手段に格納されている処理対象の構造化文書（変更が行われた構造化文書）に関して、変更前の文書（以下、変更前文書）Ｐと変更後の文書（以下、変更後文書）Ｐ’とを読み出して解析し、それぞれツリーＴ（変更前文書Ｐに対応）とツリーＴ’（変更後文書Ｐ’に対応）を生成し出力する。出力されたツリーＴ、Ｔ’は、メインメモリ１０３等の記憶手段に一時的に保持され、差分計算部２０にて利用される。構造化文書のツリーを生成する変換アルゴリズムとしては、既存の従来技術を利用することができる。
【００１８】
差分計算部２０は、文書解析部１０により変換された、変更前後の各構造化文書（ツリー）の差分を計算する。これにより、処理対象である構造化文書に対してなされた変更の内容が認識される。本実施の形態では、差分の計算方法として、後に行うＸＰａｔｈの更新に適した新規な方法を提案する。以下、この差分計算アルゴリズムについて説明する。
まず、前提として、従来の一般的な差分計算のアルゴリズムを説明する。２つのツリーの差分を計算するアルゴリズムとしては、従来から種々のアルゴリズムが提案されているが、典型的な差分計算アルゴリズムに、最小コスト操作列を算出するものがある。
【００１９】
図１６、１７は、ツリーの差分計算の例を示す図である。
図１６に示すように、ノードａを親とし、ノードｂ、ｃ、ｄを子とするツリー構造で、ノードｂ、ｄの位置が入れ替わった２つのツリー１６１、１６２の差分を計算する場合を考える。なお、ツリーを変形する操作における処理コストは、基本操作である所定のノードを削除するＲｅｍｏｖｅＮｏｄｅ、所定のノードを追加するＩｎｓｅｒｔＮｏｄｅ、ノードの内容を変更するＭｏｄｉｆｙにおいて、それぞれ１とする。このとき、最小コスト操作列を算出するアルゴリズムでは、ツリー１６１からツリー１６２へ変形するためには、ノードｂの内容をノードｄの内容に変更し（Ｍｏｄｉｆｙ（ｂ→ｄ））、ノードｄの内容をノードｂの内容に変更する（Ｍｏｄｉｆｙ（ｄ→ｂ））という操作が行われると計算する。これは、上記の処理コストの値から、処理コスト２でツリー１６１からツリー１６２へ変形することができ、これが最小の値だからである。
【００２０】
また、図１７に示すように、ノードａを親とし、ノードｂ、ｃ、ｄを子とするツリー構造で、ノードｃ、ｄに対するノードｂの位置が異なる２つのツリー１７１、１７２の差分を計算する場合を考える。
このとき、最小コスト操作列を算出するアルゴリズムでは、ツリー１７１からツリー１７２へ変形するためには、ツリー１７１からノードｂを削除し（ＲｅｍｏｖｅＮｏｄｅ（ｂ））、ツリー１７２における図示の位置にノードｂを追加する（ＩｎｓｅｒｔＮｏｄｅ（ｂ））という操作が行われると計算する。これも、上記の処理コストの値から、最小の処理コスト２でツリー１７１からツリー１７２へ変形することができるためである。
【００２１】
これに対し、本実施の形態では、この差分計算がＸＰａｔｈの自動更新のために行われることから、かかる最小コスト操作列を算出するアルゴリズムは好適な手法とは言えない。図１６の例では、ツリー１６１に対してＸＰａｔｈがノードｂを指していたと仮定すると、ノードの内容が（ｂからｄへ）変更されたという情報のみでは、ＸＰａｔｈの指示先を適切に変更することはできない。この例の場合、ツリー１６１からツリー１６２への変換は、ノードｂとノードｄとを入れ替えるように移動する操作が行われたと見ることができ、この情報に基づけば、ノードｂを指すＸＰａｔｈの記述を適切に変更することが可能である。したがって、ＸＰａｔｈを更新するための情報として用いるには、ツリー１６１からツリー１６２への変換を表す操作列は、ノードを移動する操作のＭｏｖｅＮｏｄｅを用いてＭｏｖｅＮｏｄｅ（ｂ）、ＭｏｖｅＮｏｄｅ（ｄ）と表す方が適している。しかしながら、ＭｏｖｅＮｏｄｅは、上述した基本操作ＲｅｍｏｖｅＮｏｄｅ、ＩｎｓｅｒｔＮｏｄｅの組合せ（ノードを削除し、追加する操作）であるため、ツリー１６１からツリー１６２への変換に要するトータルコストは４となる。したがって、最小コスト操作列を算出するアルゴリズムではＭｏｖｅＮｏｄｅを検出することはできない。
【００２２】
同様に、図１７の例においても、ノードｂを削除する操作またはノードｂを追加する操作の一方の情報からＸＰａｔｈの指示先を適切に変更することはできない。そして、ツリー１７１からツリー１７２への変換は、ノードｂをノードｃの左からノードｄの右へ移動する操作が行われたと見ることができ、この情報に基づけば、ノードｂを指すＸＰａｔｈの記述を適切に変更することが可能である。したがって、ツリー１７１からツリー１７２への変換を表す操作列は、ＭｏｖｅＮｏｄｅ（ｂ）と表す方が適している。この例では、ＭｏｖｅＮｏｄｅは、ＲｅｍｏｖｅＮｏｄｅ、ＩｎｓｅｒｔＮｏｄｅの組合せであることからトータルコストは２で変わらない。しかし、最小コスト操作列を算出するアルゴリズムでＭｏｖｅＮｏｄｅを検出できる保証はなく、やはり本実施の形態には適さない。
なお、以上の考察は、サブツリー（ツリー中の部分的なツリー構造）を移動する操作のＭｏｖｅＴｒｅｅについても同様である。以下では簡単のため、個々のノードに対する処理についてのみ説明するが、同様の解析をＭｏｖｅＴｒｅｅに対しても行うことができるのは言うまでもない。
【００２３】
以上のことを踏まえて、差分計算部２０にて実行される、本実施の形態に好適な差分計算アルゴリズムを説明する。本実施の形態で用いられる差分計算アルゴリズムは、ツリーの変形において移動されたもの（ノードやサブツリー）を追跡することを方針とする。
図３乃至図６は、本実施の形態に好適な差分計算アルゴリズムによる処理を説明するフローチャートである。
差分計算部２０は、メインメモリ１０３等の記憶手段に一時的に保持されている、変更前文書Ｐに対応するツリーＴと変更後文書Ｐ’に対応するツリーＴ’とを入力し、基本操作である３つの操作ＲｅｍｏｖｅＮｏｄｅ、ＩｎｓｅｒｔＮｏｄｅ及びＭｏｄｉｆｙを用いて、ツリーＴからツリーＴ’へ変形するために必要な操作を解析し、得られた操作列のリストＬを生成する。この解析には、上述した最小コスト操作列を算出するアルゴリズムなど、既存の手法を用いることができる。生成された操作列のリストＬは、メインメモリ１０３等の記憶手段に一時的に保持される。そして次に、差分計算部２０は、メインメモリ１０３等に保持された操作列のリストＬに対して図３乃至図６に示す解析を行って、ＭｏｖｅＮｏｄｅを検出する。
【００２４】
図３に示すＩｎｓｅｒｔＮｏｄｅ解析において、差分計算部２０は、まずリストＬ中の所定のＩｎｓｅｒｔＮｏｄｅ（ＩｎｓｅｒｔＮｏｄｅ（ｎ））に着目する（ステップ３０１）。そして、着目したＩｎｓｅｒｔＮｏｄｅの対象ノード（図示の例ではノードｎ）と同一のノードに対する操作ＲｅｍｏｖｅＮｏｄｅがリストＬ中に存在するかどうかを調べる（ステップ３０２）。このとき、対応するＲｅｍｏｖｅＮｏｄｅ（すなわち、ＲｅｍｏｖｅＮｏｄｅ（ｎ））が存在しないならば、ノードｎは、ツリーＴ’において新たに追加されたノードであるので、そのまま処理を終了する。
一方、ＲｅｍｏｖｅＮｏｄｅ（ｎ）が存在する場合は、これとＩｎｓｅｒｔＮｏｄｅ（ｎ）との組合せによりＭｏｖｅＮｏｄｅ（ｎ）が構成されるので、リストＬにＭｏｖｅＮｏｄｅ（ｎ）を追加し（ステップ３０３）、リストＬからＩｎｓｅｒｔＮｏｄｅ（ｎ）とＲｅｍｏｖｅＮｏｄｅ（ｎ）とを削除する（ステップ３０４）。差分計算部２０は、以上の処理をリストＬ中の全てのＩｎｓｅｒｔＮｏｄｅに対して行う。
【００２５】
図４に示すＲｅｍｏｖｅＮｏｄｅ解析において、差分計算部２０は、まずリストＬ中の所定のＲｅｍｏｖｅＮｏｄｅ（ＲｅｍｏｖｅＮｏｄｅ（ｎ））に着目する（ステップ４０１）。そして、着目したＲｅｍｏｖｅＮｏｄｅの対象ノード（図示の例ではノードｎ）と同一のノードに対する操作ＩｎｓｅｒｔＮｏｄｅがリストＬ中に存在するかどうかを調べる（ステップ４０２）。このとき、対応するＩｎｓｅｒｔＮｏｄｅ（すなわち、ＩｎｓｅｒｔＮｏｄｅ（ｎ））が存在しないならば、ノードｎは、ツリーＴ’において削除されたノードであるので、そのまま処理を終了する。
一方、ＩｎｓｅｒｔＮｏｄｅ（ｎ）が存在する場合は、これとＲｅｍｏｖｅＮｏｄｅ（ｎ）との組合せによりＭｏｖｅＮｏｄｅ（ｎ）が構成されるので、リストＬにＭｏｖｅＮｏｄｅ（ｎ）を追加し（ステップ４０３）、リストＬからＲｅｍｏｖｅＮｏｄｅ（ｎ）とＩｎｓｅｒｔＮｏｄｅ（ｎ）とを削除する（ステップ４０４）。差分計算部２０は、以上の処理をリストＬ中の全てのＲｅｍｏｖｅＮｏｄｅに対して行う。
【００２６】
図５及び図６に示すＭｏｄｉｆｙ解析において、差分計算部２０は、まずリストＬ中のノードｎ１の内容を変更する操作Ｍｏｄｉｆｙ（ｎ１→ｎｘ）に着目する（ステップ５０１）。そして、反対にノードの内容をｎ１にする変更を行う操作Ｍｏｄｉｆｙ（ｎｙ→ｎ１）がリストＬ中に存在するかどうかを調べる（ステップ５０２）。
Ｍｏｄｉｆｙ（ｎｙ→ｎ１）が存在するならば、次にノードｎｘの内容とノードｎｙの内容とが同一（すなわち、ｎｘ＝ｎｙ）かどうかを調べる（ステップ５０３）。ｎｘ＝ｎｙである場合、ノードｎ１とノードｎｘ（＝ｎｙ）の位置が入れ替わったと解釈できるので、リストＬにＭｏｖｅｎｏｄｅ（ｎ１）　、Ｍｏｖｅｎｏｄｅ（ｎｙ）を追加し（ステップ５０４）、リストＬからＭｏｄｉｆｙ（ｎ１→ｎｘ）とＭｏｄｉｆｙ（ｎｙ→ｎ１）とを削除する（ステップ５１３）。
一方、ｎｘ＝ｎｙでない場合、ノードｎ１がツリーＴにおけるノードｎｙのあった位置に移動し、当該ノードｎｙは削除され、元のノードｎ１の位置に他のノードｎｘが新たに追加されたと解釈できる。そこで、リストＬにＩｎｓｅｒｔＮｏｄｅ（ｎｘ）、ＲｅｍｏｖｅＮｏｄｅ（ｎｙ）、Ｍｏｖｅｎｏｄｅ（ｎ１）を追加し（ステップ５０５）、さらに図３、４に示したＩｎｓｅｒｔＮｏｄｅ解析、ＲｅｍｏｖｅＮｏｄｅ解析を実行する（ステップ５０６）。この後、リストＬからＭｏｄｉｆｙ（ｎ１→ｎｘ）とＭｏｄｉｆｙ（ｎｙ→ｎ１）とを削除する（ステップ５１３）。
【００２７】
また、ステップ５０２でＭｏｄｉｆｙ（ｎｙ→ｎ１）が存在しない場合、次に差分計算部２０は、ノードｎ１に対する操作ＩｎｓｅｒｔＮｏｄｅ（ｎ１）がリストＬ中に存在するかどうかを調べる（図６、ステップ５０７）。存在するならば、ノードｎ１が他の所定の位置に移動し、元のノードｎ１の位置に他のノードｎｘが新たに追加されたと解釈できる。そこで、リストＬにＩｎｓｅｒｔＮｏｄｅ（ｎｘ）、Ｍｏｖｅｎｏｄｅ（ｎ１）を追加し（ステップ５０８）、さらに図３に示したＩｎｓｅｒｔＮｏｄｅ解析、を実行する（ステップ５０９）。この後、リストＬからＭｏｄｉｆｙ（ｎ１→ｎｘ）とＩｎｓｅｒｔＮｏｄｅ（ｎ１）とを削除する（図５、ステップ５１３）。
【００２８】
さらに、ステップ５０７でＩｎｓｅｒｔＮｏｄｅ（ｎ１）がリストＬ中に存在しない場合、次に差分計算部２０は、ノードｎ１に対する操作ＲｅｍｏｖｅＮｏｄｅ（ｎｘ）がリストＬ中に存在するかどうかを調べる（図６、ステップ５１０）。存在するならば、ノードｎ１が削除され、同じ位置にノードｎｘが移動されたと解釈できる。そこで、リストＬにＲｅｍｏｖｅＮｏｄｅ（ｎ１）、Ｍｏｖｅｎｏｄｅ（ｎｘ）を追加し（ステップ５１１）、さらに図３に示したＲｅｍｏｖｅＮｏｄｅ解析、を実行する（ステップ５１２）。この後、リストＬからＭｏｄｉｆｙ（ｎ１→ｎｘ）とＲｅｍｏｖｅＮｏｄｅ（ｎｘ）とを削除する（図５、ステップ５１３）。
【００２９】
ステップ５１０においてＲｅｍｏｖｅＮｏｄｅ（ｎｘ）がリストＬ中に存在しない場合、単にノードｎ１の内容がｎｘに変更されたと解釈できるので、そのまま処理を終了する。差分計算部２０は、以上の処理をリストＬ中の全てのＭｏｄｉｆｙに対して行う。以上のようにして、ツリーＴ、Ｔ’の差分が計算される。得られた差分データは、メインメモリ１０３等の記憶手段に一時的に保持され、ＸＰａｔｈ更新部３０にて利用される。上記の３種類の解析にて実現されるように、本実施の形態では、ツリーＴからツリーＴ’への変形において、ノードの移動として解釈できる操作はできるだけ移動操作ｍｏｖｅとして検出することにより、後のＸＰａｔｈの更新処理に利用できるようにする。
【００３０】
ＸＰａｔｈ更新部３０は、差分計算部２０によるツリーＴとツリーＴ’との差分の計算結果と、変更前文書Ｐに対応するＸＰａｔｈ（以下、ＸＰａｔｈ（Ｐ）と記す）とを入力し、これらに基づいて変更後文書Ｐ’に対応するＸＰａｔｈ（以下、ＸＰａｔｈ（Ｐ’）と記す）を生成し出力する。
図７は、ＸＰａｔｈ更新部３０の機能構成を説明する図である。
図７を参照すると、指示情報生成手段であるＸＰａｔｈ更新部３０は、ＸＰａｔｈを解釈する機能（ＸＰａｔｈ解釈器３１）と、変更前後の構造化文書におけるノードの対応に関する情報を保持する機能（ノード対応表３２）と、ＸＰａｔｈを生成する機能（ＸＰａｔｈ生成器３３）とを備える。そして、メインメモリ１０３やハードディスク１０５等の記憶手段から処理対象である更新前文書Ｐ、更新後文書Ｐ’、更新前文書Ｐと更新後文書Ｐ’との間の差分Ｄ、ＸＰａｔｈ（Ｐ）を入力し、上記の各機能を用いてＸＰａｔｈ（Ｐ’）を生成する。生成されたＸＰａｔｈ（Ｐ’）は、ハードディスク１０５等の記憶手段に格納される。
【００３１】
以下、ＸＰａｔｈ更新部３０によるＸｐａｔｈの更新処理を詳細に説明する。図８は、更新前文書Ｐと更新後文書Ｐ’との間のノード対応関係を示す図である。
ＸＰａｔｈ（Ｐ）は、各パスの階層（ロケーションステップ：ＬｏｃａｔｉｏｎＳｔｅｐ）Ｌｓ（ｉ）（ｉ＝０、１、２、・・・、ｎ）によって構成される。更新前文書Ｐにおいて、ロケーションステップＬｓ（ｉ）の指示対象となるノードの集合（ノードセット：ＮｏｄｅＳｅｔ）Ｓ（ｉ）が、ＸＰａｔｈ解釈器３１の処理によって計算される。同様に、更新後文書Ｐ’において、ロケーションステップＬｓ（ｉ）の指示対象となるノードセットＳ（ｉ）’が計算される。
一方、更新前文書Ｐ、更新後文書Ｐ’、更新前文書Ｐと更新後文書Ｐ’との間の差分Ｄから、更新前文書Ｐと更新後文書Ｐ’との間のノード対応関係を表すノード対応表３２が作成される。作成されたノード対応表３２は、図１に示したコンピュータ装置におけるＣＰＵの１０１のレジスタやメインメモリ１０３等に保持される。ノード対応表３２の例を図１０に示す。図示のノード対応表３２によれば、例えば、更新前文書ＰのノードＮ０が更新後文書Ｐ’のノードＮ’０に対応しており、更新前文書ＰのノードＮ０は更新後文書Ｐ’に対応するノードがない（すなわち構造化文書の変更によって削除された）ことがわかる。
【００３２】
このノード対応表３２と、更新前文書ＰにおけるロケーションステップＬｓ（ｉ）の指示対象であるノードセットＳ（ｉ）とに基づいて、ノードセットＳ（ｉ）”が求まる。
図９は、ノードセットＳ（ｉ）とノードセットＳ（ｉ）”との対応関係を示す図である。
ノードセットＳ（ｉ）’とノードセットＳ（ｉ）”との違いは、ノードセットＳ（ｉ）’が単純にパスのパターンを更新後文書Ｐ’に適用させて求めたノードセットであるのに対し、ノードセットＳ（ｉ）”は、差分情報により変更を追跡して求めたノードセットであるということである。また、ノードセットＳ（ｉ）’、Ｓ（ｉ）”ともに変更後文書Ｐ’におけるノードセットである。
【００３３】
次に、ＸＰａｔｈ生成器３３により、このノードセットＳ（ｉ）’、Ｓ（ｉ）”を比較して、ＸＰａｔｈ（Ｐ）におけるロケーションステップＬｓ（ｉ）を更新する。更新処理の詳細は後述する。この手順をｉ＝０〜ｎまで繰り返すことによりロケーションステップＬｓ（ｊ）’（ｊ＝０，１，２．．．ｍ）を得る。このロケーションステップＬｓ（ｊ）’は直接、更新されたＸＰａｔｈ（Ｐ’）を表す。
図１１は、ＸＰａｔｈ生成器３３によるＸＰａｔｈ（ロケーションステップ）の生成手順を示すフローチャートである。
図１１を参照すると、ＸＰａｔｈ生成器３３は、まず、ノードセットＳ（ｉ）’、Ｓ（ｉ）”を比較する（ステップ１１０１）。そして、ノードセットＳ（ｉ）’とノードセットＳ（ｉ）”とが等しいか、またはノードセットＳ（ｉ）’がノードセットＳ（ｉ）”に含まれるのであれば、ロケーションステップＬｓ（ｉ）は変更する必要はなく、そのままロケーションステップＬｓ（ｊ）’として出力する（ステップ１１０２、１１０３）。
一方、ノードセットＳ（ｉ）”がノードセットＳ（ｉ）’に含まれる場合、ＸＰａｔｈ生成器３３は、次にロケーションステップＬｓ（ｊ−１）’で示されるノードから、ノードセットＳ（ｉ）”に含まれる各ノードへのロケーションステップを生成する（ステップ１１０３、１１０４）。
以上のようにして、変更後文書Ｐ’に対応したロケーションステップが生成され、ＸＰａｔｈ（Ｐ）がＸＰａｔｈ（Ｐ’）へ更新される。
【００３４】
ところで、ＸＰａｔｈの表記方法によっては、ステップ１１０４で生成されたロケーションステップを、所定の一般化ルールに基づいて一般化することにより、簡明な表現に集約することができる。もし、用意された一般化ルールによってはロケーションステップＬｓ（ｊ）’が生成できない場合は、警告を知らせるウィンドウや修正を促すウィンドウを表示するなど、エラー処理を行うと共に、ステップ１１０４で生成されたロケーションステップをそのまま出力することができる。
なお、ステップ１１０４におけるロケーションステップの生成は、例えば、下記文献１に開示された既知の戦略によって行うことができる。また、上記のロケーションステップの集約は、例えば、下記文献２に開示された既知の戦略によって行うことができる。
文献１：２００１／１１／０８：　Ａ　Ｖｉｓｕａｌ　Ａｐｐｒｏａｃｈ　ｔｏ　Ａｕｔｈｏｒｉｎｇ　ＸＰａｔｈ　Ｅｘｐｒｅｓｓｉｏｎｓ　Ａｃｃｅｐｔｅｄ　ｆｏｒ　Ｍａｒｋｕｐ　Ｌａｎｇｕａｇｅｓ：　Ｔｈｅｏｒｙ　ａｎｄ　Ｐｒａｃｔｉｃｅ，　Ｖｏｌ．３，　Ｎｏ．２　（ｔｏ　ａｐｐｅａｒ）．　Ｔｈｉｓ　ｉｓ　ａ　ｐａｐｅｒ　ｏｒｉｇｉｎａｌｌｙ　ｐｕｂｌｉｓｈｅｄ　ｉｎ　ｔｈｅ　Ｐｒｏｃｅｅｄｉｎｇｓ　Ｅｘｔｒｅｍｅ　ＭａｒｋｕｐＬａｎｇｕａｇｅｓ　２００１，　　ｐｐ．１−１５，　Ｍｏｎｔｒｅａｌ，　Ｃａｎａｄａ　（１４−１７，　Ａｕｇｕｓｔ　２００１）．
ｈｔｔｐ：／／ａｒｅｓ．ｔｒｌ．ｉｂｍ．ｃｏｍ／ｆｒｅｅｄｏｍ／ｄｏｃ／ｅｘｔｍｌ２００１／ａｂｅ０１１４．ｈｔｍｌ
文献２：２００１／０７／１３：　ＸＳＬＴ　Ｓｔｙｌｅｓｈｅｅｔ　Ｇｅｎｅｒａｔｉｏｎ　ｂｙ　Ｅｘａｍｐｌｅ　ｗｉｔｈ　ＷＹＳＩＷＹＧ　Ｅｄｉｔｉｎｇ　　Ａｃｃｅｐｔｅｄ　ｆｏｒ　ｔｈｅ　ｐｒｅｓｅｎｔａｔｉｏｎ　ａｔ　Ｉｎｔｅｒｎａｔｉｏｎａｌ　Ｓｙｍｐｏｓｉｕｍ　ｏｎ　Ａｐｐｌｉｃａｔｉｏｎｓ　ａｎｄ　ｔｈｅ　Ｉｎｔｅｒｎｅｔ　　（ＳＡＩＮＴ　２００２）
ｈｔｔｐ：／／ａｒｅｓ．ｔｒｌ．ｉｂｍ．ｃｏｍ／ｆｒｅｅｄｏｍ／／ｄｏｃ／ｓａｉｎｔ２００２／ｓａｉｎｔ２００２．ｈｔｍｌ
【００３５】
次に、具体的なツリーの変形例に基づいてＸＰａｔｈの更新方法を説明する。図１２乃至図１４は、更新前文書Ｐと更新後文書Ｐ’の例を示す図である。なお、図には当該構造化文書Ｐ、Ｐ’のツリー構造が記載されている。
図１２を参照すると、変更前文書Ｐは、ルートノードａが３つの子ノードｂを持ち、そのうちの一番左のノードｂが２つの子ノードｃを持ち、そのうちの右側のノードｃが子ノードｂを持つツリー構造となっている。これに対し、変更後文書Ｐ’は、ノードｃの下に位置するノードｂがノードａの子に移動した構造となっている。
【００３６】
ここで、変更前文書Ｐに対して、ノードａの子の２つのノードｂを指すＸＰａｔｈ（Ｐ）「／ａ／ｂ」が存在するものとする。「／ａ／ｂ」という表現は、ノードａの子にある全てのノードｂを指す。変更前文書Ｐが変更後文書Ｐ’に変更された場合、この「／ａ／ｂ」をそのまま用いると、変更後文書Ｐ’においてノードａの子にある４つのノードｂを指すこととなる。しかし、変更によってノードａの子に移動したノードｂは、変更前文書Ｐにおいても存在し、かつこの時点では「／ａ／ｂ」によっては指されていないノードであったので、変更後文書Ｐ’においても「／ａ／ｂ」によって指されるべきではない。
【００３７】
本実施の形態においてＸＰａｔｈ更新部３０は、差分計算部２０により計算された差分Ｄに基づいて作成されたノード対応表３２により、図１３に示すように、変更前文書ＰにおいてＸＰａｔｈ（Ｐ）に指されていた３つのノードｂが変更後文書Ｐ’における４つのノードｂのうち左から数えて１番目から３番目までのノードｂであることがわかる。そこで、ＸＰａｔｈ生成器３３により、これらのノードｂ（すなわち変更前文書Ｐにおいても同じ位置に存在したノードｂ）のみを指すように、ＸＰａｔｈ（Ｐ’）を生成する。すなわち、「／ａ／ｂ」という表現を「／ａ／ｂ［ｐｏｓｉｔｉｏｎ（）　＞＝　３］」という表現に更新する。
【００３８】
また、図１４を参照すると、図１２と同様の変更前文書Ｐに対し、変更後文書Ｐ’は、ノードａの子の３つのノードｂのうち、１つが削除されている。この場合、変更後文書Ｐ’において「／ａ／ｂ」という表現で指し示されるノードの集合は、変更前文書Ｐにおいてかかる表現で指し示されるノードの集合に含まれる。すなわち、余分なノードを指してはいない。したがって、ＸＰａｔｈの表現は変更する必要はない。なお、本実施の形態を用いた実施態様によっては、変更後文書Ｐ’において、指示するノードｂの１つが削除されたことをユーザに通知するようにしても良い。
【００３９】
以上説明したように、本実施の形態は、構造化文書が変更された場合に、変更前後の構造化文書の差分を検出し、これに基づいて対応するＸＰａｔｈを自動的に更新することを実現する。しかしながら、実際には、構造化文書やＸＰａｔｈを用いたシステムの開発者等の意図通りにＸＰａｔｈが更新されるとは限らない。また、ＸＰａｔｈが自動的に更新された後、さらに修正を施したいと考える場合もあり得る。そこで、対話的に処理を進めるＸＰａｔｈ更新ツールとして実施することも可能である。
図１５は、このようなＸＰａｔｈ更新ツールを備えたアノテーションシステムの例を示す図である。
図１５において、アノテーションサーバ１５００は、本実施の形態による文書解析部１０、差分計算部２０及びＸＰａｔｈ更新部３０に相当する機能を備えるものとする。これらの機能は、アノテーションサーバ１５００を構成するコンピュータシステムにおいて、プログラム制御されたＣＰＵの機能として実現される。アノテーション開発者が操作するコンソール１５１０のディスプレイ装置には、処理対象である構造化文書（例えばＨＴＭＬ文書）１５１１とＸＰａｔｈを更新するための対話用ウィンドウ１５１２とが表示されている。
【００４０】
アノテーションサーバ１５００は、自身の管理下でアノテーションを付した所定の構造化文書１５１１が変更されると、コンソール１５１０のディスプレイに変更前後の構造化文書１５１１を表示すると共に、対話用ウィンドウ１５１２を表示して、この構造化文書１５１１の変更に応じてＸＰａｔｈを更新するかどうかをアノテーション開発者に問い合わせる。そして、対話用ウィンドウ１５１２の「Ｙｅｓ」ボタンがクリックされたならば、アノテーションサーバ１５００の文書解析部１０、差分計算部２０及びＸＰａｔｈ更新部３０に相当する機能により、ＸＰａｔｈが自動的に更新される。また、「Ｄｅｌｅｔｅ」ボタンがクリックされたならば、当該ＸＰａｔｈが削除され、構造化文書１５１１のアノテーションが消去されることとなる。さらに、構造化文書１５１１において単に削除されたり変更されたりしたエレメント（ノード）に対するＸＰａｔｈは、参照不可能となる。この場合、アノテーションを付けたエレメントが削除されたことをアノテーション開発者に通知し、当該アノテーションを他のエレメントに付するかどうかを訪ねるメッセージを出力させるようにしても良い。
【００４１】
なお、以上の説明においては、ＸＰａｔｈを用いてＸＭＬやＨＴＭＬなどの構造化文書の要素を指示する場合について説明したが、本実施の形態は、ＸＰａｔｈ以外の任意の手段を用いて構造化文書の要素を指示する場合にも応用することが可能である。すなわち、構造化文書が変更された場合、本実施の形態に示した差分計算部２０に相当する機能にて当該構造化文書の変更前後の差分を取り、当該構造化文書の要素を指示する手段（指示情報等）に応じた変形を行うことにより、かかる構造化文書の変更に対応してその要素の指示内容を適切に更新することが可能である。
【００４２】
【発明の効果】
以上説明したように、本発明によれば、構造化文書中の所定の要素が指示されている場合に、この構造化文書が変更されても所望の要素を適切に指示し続けることができる。
また、本発明によれば、ＸＰａｔｈを用いて所定の要素が指示されている構造化文書が変更された場合に、この構造化文書の変更に応じてＸＰａｔｈを自動的に更新する手段を提供することができる。
【図面の簡単な説明】
【図１】本実施の形態によるＸＰａｔｈ更新方法を実現するのに好適なコンピュータ装置のハードウェア構成の例を模式的に示した図である。
【図２】図１に示したコンピュータ装置にて実現される本実施の形態によるＸＰａｔｈ更新システムの構成を示す図である。
【図３】本実施の形態に好適な差分計算アルゴリズムによる処理を説明するフローチャートであり、ＩｎｓｅｒｔＮｏｄｅ解析を説明する図である。
【図４】本実施の形態に好適な差分計算アルゴリズムによる処理を説明するフローチャートであり、ＲｅｍｏｖｅＮｏｄｅ解析を説明する図である。
【図５】本実施の形態に好適な差分計算アルゴリズムによる処理を説明するフローチャートであり、Ｍｏｄｉｆｙ解析を説明する図である。
【図６】本実施の形態に好適な差分計算アルゴリズムによる処理を説明するフローチャートであり、Ｍｏｄｉｆｙ解析を説明する図である。
【図７】本実施の形態におけるＸＰａｔｈ更新部の機能構成を説明する図である。
【図８】本実施の形態における更新前文書Ｐと更新後文書Ｐ’との間のノード対応関係を示す図である。
【図９】本実施の形態におけるノードセットＳ（ｉ）とノードセットＳ（ｉ）”との対応関係を示す図である。
【図１０】本実施の形態にて用いられるノード対応表の例を示す図である。
【図１１】本実施の形態のＸＰａｔｈ生成器によるＸＰａｔｈの生成手順を示すフローチャートである。
【図１２】更新前文書Ｐと更新後文書Ｐ’の例を示す図である。
【図１３】更新後文書Ｐ’に対応させてＸＰａｔｈを更新した様子を示しす図である。
【図１４】更新前文書Ｐと更新後文書Ｐ’の他の例を示す図である。
【図１５】本実施の形態を用いたＸＰａｔｈ更新ツールを備えたアノテーションシステムの例を示す図である。
【図１６】一般的なツリーの差分計算の例を示す図である。
【図１７】一般的なツリーの差分計算の他の例を示す図である。
【図１８】ＸＭＬ文書の例を示す図である。
【符号の説明】
１０…文書解析部、２０…差分計算部、３０…ＸＰａｔｈ更新部、３１…ＸＰａｔｈ解釈器、３２…ノード対応表、３３…ＸＰａｔｈ生成器、１０１…ＣＰＵ、１０２…Ｍ／Ｂチップセット、１０３…メインメモリ、１０５…ハードディスク
【図１】
2004046745.tif 000003
【図２】
2004046745.tif 000004
【図３】
2004046745.tif 000005
【図４】
2004046745.tif 000006
【図５】
2004046745.tif 000007
【図６】
2004046745.tif 000008
【図７】
2004046745.tif 000009
【図８】
2004046745.tif 000010
【図９】
2004046745.tif 000011
【図１０】
2004046745.tif 000012
【図１１】
2004046745.tif 000013
【図１２】
2004046745.tif 000014
【図１３】
2004046745.tif 000015
【図１４】
2004046745.tif 000016
【図１５】
2004046745.tif 000017
【図１６】
2004046745.tif 000018
【図１７】
2004046745.tif 000019
【図１８】
2004046745.tif 000020