(57)【要約】【課題】  構造化文書間の類似関係を効率的に検出する構造化文書処理装置を提供する。【解決手段】  状態遷移図情報記憶手段１０１は、元構造化文書１０９の元ノードが元構造化文書１０９の先頭からの出現順に遷移する状態遷移図に係る情報を状態遷移図情報として記憶する。選定対抽出手段１０２は、順番上、相互に対応する新ノード及び元ノードの対を選定対として抽出する。一致性判定手段１０３は、選定対の一致性の有無をそれらの記述に基づき判定する。ノード認定手段１０４は、一致性有りの選定対に対しては、元ノードを新ノードの被利用ノードに認定する。遷移履歴情報生成手段１０５は、被利用ノードについての遷移履歴に係る情報を遷移履歴情報として生成する。類似度検出手段１０６は、遷移履歴情報に基づき元構造化文書１０９と新構造化文書１１０との類似度を検出する。【選択図】      図１
2006024179.tif 000002
【特許請求の範囲】
【請求項１】
構造区分に係る複数個のノードとしての複数個の元ノードに区分化可能となっている元構造化文書に対し、該元構造化文書の前記元ノードが前記元構造化文書における先頭からの出現順に遷移する状態遷移図に係る情報を状態遷移図情報として記憶する状態遷移図情報記憶手段、
構造区分に係る複数個のノードとしての複数個の新ノードに区分化可能となっている新構造化文書に対し、前記新構造化文書における先頭からの前記新ノードの出現順及び前記状態遷移図におけるノード遷移順に従い、それぞれ新構造化文書及び状態遷移図において相互に対応する新ノード及び元ノードの対を選定対として抽出する選定対抽出手段、
選定対の元ノード及び新ノードに対し、それらの一致性の有無をそれらの記述に基づき判定する一致性判定手段、
一致性有りの判定のときには選定対の元ノード及び新ノードに対し該元ノードを該新ノードの被利用ノードに認定するノード認定手段、
前記状態遷移図上の複数個の被利用ノードを遷移順に進む遷移履歴に係る情報を遷移履歴情報として生成する遷移履歴情報生成手段、及び
前記遷移履歴情報に基づき前記元構造化文書と前記新構造化文書との類似度を検出する類似度検出手段、
を有していることを特徴とする構造化文書処理装置。
【請求項２】
前記元構造化文書の各ノードについての構文解析結果を記憶する構文解析結果記憶手段、
前記元構造化文書及び前記新構造化文書の類似度が基準値以上であるときには、前記元構造化文書を前記新構造化文書の被利用構造化文書と認定する利用認定手段、及び
新構造化文書の新ノードに係る構文解析結果として、該新構造化文書の被利用構造化文書におけるノードであって該新ノードの被利用ノードに係る構文解析結果を利用する元構造化文書利用手段、
ことを特徴とする請求項１記載の構造化文書処理装置。
【請求項３】
構造区分に係る複数個のノードとしての複数個の元ノードに区分化可能となっている元構造化文書に対し、該元構造化文書の前記元ノードが前記元構造化文書における先頭からの出現順に遷移する状態遷移図に係る情報を状態遷移図情報として記憶する状態遷移図情報記憶ステップ、
構造区分に係る複数個のノードとしての複数個の新ノードに区分化可能となっている新構造化文書に対し、前記新構造化文書における先頭からの前記新ノードの出現順及び前記状態遷移図におけるノード遷移順に従い、それぞれ新構造化文書及び状態遷移図において相互に対応する新ノード及び元ノードの対を選定対として抽出する選定対抽出ステップ、
選定対の元ノード及び新ノードに対し、それらの一致性の有無をそれらの記述に基づき判定する一致性判定ステップ、
一致性有りの判定のときには選定対の元ノード及び新ノードに対し該元ノードを該新ノードの被利用ノードに認定するノード認定ステップ、
前記状態遷移図上の複数個の被利用ノードを遷移順に進む遷移履歴に係る情報を遷移履歴情報として生成する遷移履歴情報生成ステップ、及び
前記遷移履歴情報に基づき前記元構造化文書と前記新構造化文書との類似度を検出する類似度検出ステップ、
を有していることを特徴とする構造化文書処理方法。
【請求項４】
前記元構造化文書の各ノードについての構文解析結果を記憶する構文解析結果記憶ステップ、
前記元構造化文書及び前記新構造化文書の類似度が基準値以上であるときには、前記元構造化文書を前記新構造化文書の被利用構造化文書と認定する利用認定ステップ、及び
新構造化文書の新ノードに係る構文解析結果として、該新構造化文書の被利用構造化文書におけるノードであって該新ノードの被利用ノードに係る構文解析結果を利用する元構造化文書利用ステップ、
ことを特徴とする請求項３記載の構造化文書処理方法。
【請求項５】
アプリケーション・プログラムからの構造化文書の構文解析要求に対し、該構造化文書を構文解析して、その構文解析結果を前記アプリケーション・プログラムへ通知する構造化文書処理装置において、
構文解析済みの構造化文書としての元構造化文書についてその内容及びその構文解析結果をそれぞれ元内容及び元解析結果として記憶する記憶手段、
アプリケーション・プログラムから構文解析を要求された構造化文書としての新構造化文書に対し、該新構造化文書の内容と前記元構造化文書の前記元内容とを、所定の対応関係を持つ内容部分同士で対比して、前記新構造化文書の各内容部分が、前記元構造化文書の前記元解析結果を利用できる第１の内容部分となっているか、又は前記元構造化文書の前記元解析結果を利用できない第２の内容部分となっているかを判別する判別手段、
前記新構造化文書の第２の内容部分を構文解析してその構文解析結果としての新解析部分を出力する解析手段、及び
前記新構造化文書の第１の内容部分の構文解析結果としては、該第１の内容部分に対応する前記元構造化文書の元解析結果の部分を前記アプリケーション・プログラムへ通知し、また前記新構造化文書の第２の内容部分の構文解析結果としては前記新解析部分を前記アプリケーション・プログラムへ通知する通知手段、
を有していることを特徴とする構造化文書処理装置。
【請求項６】
アプリケーション・プログラムからの構造化文書の構文解析要求に対し、該構造化文書を構文解析し、その構文解析結果としての一連のイベントを前記アプリケーション・プログラムへ通知する構造化文書処理装置において、
構文解析済みの構造化文書としての元構造化文書についてその内容と各構造区分に係る構文解析結果とをそれぞれ元内容及び各元解析区分として記憶する記憶手段、
前記元構造化文書の元内容とアプリケーション・プログラムから構文解析を要求された構造化文書としての新構造化文書の内容とを、それらの相互に対応する構造区分同士でかつ文書の先頭側にある構造区分同士から順番に、相互に一致するか否かの一致判定を実施する一致判定手段、
前記新構造化文書の各構造区分を、該構造区分に係る前記一致判定の正否によりそれぞれ第１の分類の構造区分と第２の分類の構造区分とに分類する分類手段、
前記分類手段により第２の分類の構造区分と分類された構造区分を構文解析してその構文解析結果としての新解析区分を生成する解析手段、及び
新構造化文書の先頭の構造区分から末尾の構造区分の方への順番に各構造区分に係るイベントを前記アプリケーション・プログラムへ通知する通知手段であって、前記通知手段は、
新構造化文書の各構造区分が、第１の分類の構造区分であれば、該構造区分の構文解析結果として、該構造区分に対応する元構造化文書の元解析区分に係るイベントを前記アプリケーション・プログラムへ通知し、
また、第２の分類の構造区分であれば、該構造区分の構文解析結果として、該構造区分についての新解析区分に係るイベントを前記アプリケーション・プログラムへ通知する。
前記通知手段、
を有していることを特徴とする構造化文書処理装置。
【請求項７】
構造区分の構文解析には該構文解析の結果に基づいて判明する検査であって新構造化文書が非整形式の構造化文書であるか否かの前記検査を含む前記解析手段、
新構造化文書の構造区分についての前記一致判定の結果が否であれば、該構造区分についての前記解析手段による非整形式の検査が終了するまで該構造区分の次の構造区分についての一致判定を保留し、前記検査により新構造化文書が非整形式であると判明すれば、前記新構造化文書に係る一致判定を中止する前記一致判定手段、及び
前記検査により新構造化文書が非整形式であると判明すれば、前記アプリケーション・プログラムへ、イベントの代わりに該新構造化文書が非整形式の構造化文書である旨を通知する前記通知手段、
を有していることを特徴とする請求項６記載の構造化文書処理装置。
【請求項８】
相互に異なる複数個の元構造化文書に係る元内容及び元解析区分を記憶する前記記憶手段、
元内容及び元解析区分が前記記憶手段に記憶されている複数個の元構造化文書の中から元内容が新構造化文書の内容に最も類似する元構造化文書を最類似構造化文書として選択する最類似構造化文書選択手段、及び
一致判定に係る元構造化文書を最類似構造化文書にする前記一致判定手段、
を有していることを特徴とする請求項６記載の構造化文書処理装置。
【請求項９】
新構造化文書はＷｅｂサービスにおいてクライアントからのリクエストに対するサーバからのレスポンスに係るものであり、該リクエストからリクエスト先のサーバ及びオペレーションを検出するサーバ等検出手段、及び
検出したサーバ及びオペレーションに基づいて最類似構造化文書を選択する前記最類似構造化文書選択手段、
を有していることを特徴とする請求項８記載の構造化文書処理装置。
【請求項１０】
新構造化文書はＷｅｂサービスのリクエストに係るものであり、該リクエストの送信先のＵＲＬを検出するＵＲＬ検出手段、及び
検出したＵＲＬに基づいて最類似構造化文書を選択する前記最類似構造化文書選択手段、
を有していることを特徴とする請求項８記載の構造化文書処理装置。
【請求項１１】
前記一致判定が否となるごとに、新構造化文書の内容と元構造化文書の内容との差分量を一単位、増大させる差分量計算手段、及び
前記差分量が閾値を越えると、最後に一致判定対象となった構造区分から文書末尾の構造区分までの全部の構造区分について第２の分類の構造区分に分類する前記分類手段、
を有していることを特徴とする請求項６記載の構造化文書処理装置。
【請求項１２】
前記一致判定が否となるごとに、新構造化文書の内容と元構造化文書の内容との差分量を一単位、増大させる差分量計算手段、及び
前記差分量が閾値を越えると、現在の元構造化文書を別の元構造化文書へ交換し、新構造化文書と交換前の元構造化文書に対して実施した処理と同一の処理を新構造化文書と交換後の元構造化文書について最初から再実施する前記一致判定手段、
を有していることを特徴とする請求項６記載の構造化文書処理装置。
【請求項１３】
前記構造化文書がＸＭＬ文書であり、前記構造区分とは、ＳＡＸのイベントに対応付けることのできる区分であることを特徴とする請求項６記載の構造化文書処理装置。
【請求項１４】
アプリケーション・プログラムからの構造化文書の構文解析要求に対し、該構造化文書を構文解析して、その構文解析結果を前記アプリケーション・プログラムへ通知する構造化文書処理方法において、
構文解析済みの構造化文書としての元構造化文書についてその内容及びその構文解析結果をそれぞれ元内容及び元解析結果として記憶する記憶ステップ、
アプリケーション・プログラムから構文解析を要求された構造化文書としての新構造化文書に対し、該新構造化文書の内容と前記元構造化文書の前記元内容とを、所定の対応関係を持つ内容部分同士で対比して、前記新構造化文書の各内容部分が、前記元構造化文書の前記元解析結果を利用できる第１の内容部分となっているか、又は前記元構造化文書の前記元解析結果を利用できない第２の内容部分となっているかを判別する判別ステップ、
前記新構造化文書の第２の内容部分を構文解析してその構文解析結果としての新解析部分を出力する解析ステップ、及び
前記新構造化文書の第１の内容部分の構文解析結果としては、該第１の内容部分に対応する前記元構造化文書の元解析結果の部分を前記アプリケーション・プログラムへ通知し、また前記新構造化文書の第２の内容部分の構文解析結果としては前記新解析部分を前記アプリケーション・プログラムへ通知する通知ステップ、
を有していることを特徴とする構造化文書処理方法。
【請求項１５】
アプリケーション・プログラムからの構造化文書の構文解析要求に対し、該構造化文書を構文解析し、その構文解析結果としての一連のイベントを前記アプリケーション・プログラムへ通知する構造化文書処理方法において、
構文解析済みの構造化文書としての元構造化文書についてその内容と各構造区分に係る構文解析結果とをそれぞれ元内容及び各元解析区分として記憶する記憶ステップ、
前記元構造化文書の元内容とアプリケーション・プログラムから構文解析を要求された構造化文書としての新構造化文書の内容とを、それらの相互に対応する構造区分同士でかつ文書の先頭側にある構造区分同士から順番に、相互に一致するか否かの一致判定を実施する一致判定ステップ、
前記新構造化文書の各構造区分を、該構造区分に係る前記一致判定の正否によりそれぞれ第１の分類の構造区分と第２の分類の構造区分とに分類する分類ステップ、
前記分類ステップにおいて第２の分類の構造区分と分類された構造区分を構文解析してその構文解析結果としての新解析区分を生成する解析ステップ、及び
新構造化文書の先頭の構造区分から末尾の構造区分の方への順番に各構造区分に係るイベントを前記アプリケーション・プログラムへ通知する通知ステップであって、前記通知ステップは、
新構造化文書の各構造区分が、第１の分類の構造区分であれば、該構造区分の構文解析結果として、該構造区分に対応する元構造化文書の元解析区分に係るイベントを前記アプリケーション・プログラムへ通知し、
また、第２の分類の構造区分であれば、該構造区分の構文解析結果として、該構造区分についての新解析区分に係るイベントを前記アプリケーション・プログラムへ通知する。
前記通知ステップ、
を有していることを特徴とする構造化文書処理方法。
【請求項１６】
構造区分の構文解析には該構文解析の結果に基づいて判明する検査であって新構造化文書が非整形式の構造化文書であるか否かの前記検査を含む前記解析ステップ、
新構造化文書の構造区分についての前記一致判定の結果が否であれば、該構造区分についての前記解析手段による非整形式の検査が終了するまで該構造区分の次の構造区分についての一致判定を保留し、前記検査により新構造化文書が非整形式であると判明すれば、前記新構造化文書に係る一致判定を中止する前記一致判定ステップ、及び
前記検査により新構造化文書が非整形式であると判明すれば、前記アプリケーション・プログラムへ、イベントの代わりに該新構造化文書が非整形式の構造化文書である旨を通知する前記通知ステップ、
を有していることを特徴とする請求項１５記載の構造化文書処理方法。
【請求項１７】
相互に異なる複数個の元構造化文書に係る元内容及び元解析区分を記憶する前記記憶ステップ、
元内容及び元解析区分が前記記憶ステップに記憶されている複数個の元構造化文書の中から元内容が新構造化文書の内容に最も類似する元構造化文書を最類似構造化文書として選択する最類似構造化文書選択ステップ、及び
一致判定に係る元構造化文書を最類似構造化文書にする前記一致判定ステップ、
を有していることを特徴とする請求項１５記載の構造化文書処理方法。
【請求項１８】
新構造化文書はＷｅｂサービスにおいてクライアントからのリクエストに対するサーバからのレスポンスに係るものであり、該リクエストからリクエスト先のサーバ及びオペレーションを検出するサーバ等検出ステップ、及び
検出したサーバ及びオペレーションに基づいて最類似構造化文書を選択する前記最類似構造化文書選択ステップ、
を有していることを特徴とする請求項１７記載の構造化文書処理方法。
【請求項１９】
新構造化文書はＷｅｂサービスのリクエストに係るものであり、該リクエストの送信先のＵＲＬを検出するＵＲＬ検出ステップ、及び
検出したＵＲＬに基づいて最類似構造化文書を選択する前記最類似構造化文書選択ステップ、
を有していることを特徴とする請求項１７記載の構造化文書処理方法。
【請求項２０】
前記一致判定が否となるごとに、新構造化文書の内容と元構造化文書の内容との差分量を一単位、増大させる差分量計算ステップ、及び
前記差分量が閾値を越えると、最後に一致判定対象となった構造区分から文書末尾の構造区分までの全部の構造区分について第２の分類の構造区分に分類する分類ステップ、
を有していることを特徴とする請求項１５記載の構造化文書処理方法。
【請求項２１】
前記一致判定が否となるごとに、新構造化文書の内容と元構造化文書の内容との差分量を一単位、増大させる差分量計算ステップ、及び
前記差分量が閾値を越えると、現在の元構造化文書を別の元構造化文書へ交換し、新構造化文書と交換前の元構造化文書に対して実施した処理と同一の処理を新構造化文書と交換後の元構造化文書について最初から再実施する前記一致判定ステップ、
を有していることを特徴とする請求項１５記載の構造化文書処理方法。
【請求項２２】
各元構造化文書が、構造区分に係る複数個のノードとしての複数個の元ノードに区分化可能となっている複数個の元構造化文書に対し、各元構造化文書の前記元ノードが前記元構造化文書における先頭からの出現順に遷移する状態遷移図に係る情報を状態遷移図情報として記憶する状態遷移図情報記憶手段であって、複数の元構造化文書に重複する状態遷移は前記状態遷移図上においてを共通化された状態遷移となっている前記状態遷移図情報記憶手段、
構造区分に係る複数個のノードとしての複数個の新ノードに区分化可能となっている新構造化文書に対し、前記新構造化文書における先頭からの前記新ノードの出現順及び前記状態遷移図におけるノード遷移順に従い、それぞれ新構造化文書及び状態遷移図において相互に対応する新ノード及び元ノードの対を選定対として抽出する選定対抽出手段、
選定対の元ノード及び新ノードに対し、それらの一致性の有無をそれらの記述に基づき判定する一致性判定手段、
一致性有りの判定のときには選定対の元ノード及び新ノードに対し該元ノードを該新ノードの被利用ノードに認定するノード認定手段、
前記状態遷移図上の複数個の被利用ノードを遷移順に進む遷移履歴に係る情報を遷移履歴情報として生成する遷移履歴情報生成手段、
前記遷移履歴情報に基づき１個の元構造化文書を前記新構造化文書の被利用構造化文書として選択する被利用構造化文書選択手段、及び
新構造化文書の新ノードに係る構文解析結果として、該新構造化文書の被利用構造化文書における前記新ノードの被利用ノードに係る構文解析結果を利用する元構造化文書利用手段、
を有していることを特徴とする構造化文書処理装置。
【請求項２３】
状態遷移図上のどの元ノードに選定対関係になっても元ノードとの一致性無しである新ノードとしての第１の新ノードに対し、該第１の新ノードを遷移先として遷移元になる状態遷移関係をもつ元ノードであって前記状態遷移図上の元ノードから、前記第１の新ノードへの状態遷移を形成しつつ、前記第１の新ノードを前記状態遷移図上に第１の元ノードとして新規に追加する元ノード追加手段、
前記構造化文書における先頭からのノードの出現順でノードの先後を定義するとともに、コンテキストとは、内容を一意に把握する対象としてのノードを対象ノードと呼ぶことにして、構造化文書先頭から該対象ノードへの到達前までの構造化文書記述に含まれる記述部分であって、該対象ノードの内容を、該対象ノードの記述自体と協働して、一意に規定する記述部分であると定義し、前記第１の新ノードより後ろの新ノードとしての第２の新ノードに対して、該第２の新ノードに係る選定対としての合流判定用選定対では、記述と共にコンテキストに関しても元ノードと新ノードとの一致性を判定する前記一致性判定手段、及び
前記合流判定用選定対における前記第２の新ノード及び第２の元ノードが記述及びコンテキストの両方に関して一致性有りとする判定がなされたときには、前記第１の元ノードから第２の元ノードへの状態遷移経路を新規に追加する状態遷移経路追加手段、
を有していることを特徴とする請求項２２記載の構造化文書処理装置。
【請求項２４】
前記状態遷移図上の所定の元ノードは、所定の属性を属性変数とする属性変数付き元ノードに設定されている前記状態遷移図情報記憶手段、
選定対における元ノードが属性変数付き元ノードであり、かつ前記選定対における元ノード及び新ノードの要素名及び属性名が同一であるとき、前記選定対における前記元ノード及び前記新ノードの一致性が有りとする前記一致性判定手段、
一致性有りの選定対に対し、該選定対の元ノードが属性変数付き元ノードであるとき、前記選定対の新ノードの属性値を属性変数値として記憶する属性変数値記憶手段、及び
前記新構造化文書の新ノードに係る構文解析結果として、該新構造化文書の被利用構造化文書のノードであって該新構造化文書の新ノードの被利用ノードに係る構文解析結果を使用する場合に、前記被利用ノードが属性変数付き元ノードであるとき、前記新構造化文書の新ノードの被利用ノードに係る構文解析結果における属性変数に、前記属性変数値を代入した構文解析結果を、前記新構造化文書の新ノードの被利用ノードに係る構文解析結果として使用する前記元構造化文書利用手段、
を有していることを特徴とする請求項２２記載の構造化文書処理装置。
【請求項２５】
前記状態遷移図上の所定のテキスト・ノードとしての元ノードはテキスト・ノード変数に設定されている前記状態遷移図情報記憶手段、
選定対における元ノード及び新ノードがそれぞれテキスト・ノード変数及びテキスト・ノードであるとき、前記元ノード及び前記新ノードの一致性が有りとする前記一致性判定手段、
一致性有りの選定対に対し、該選定対の元ノードがテキスト・ノード変数であるとき、前記選定対の新ノードのテキストをテキスト・ノード変数値として記憶するテキスト・ノード変数値記憶手段、及び
前記新構造化文書の新ノードに係る構文解析結果として、該新構造化文書の被利用構造化文書のノードであって該新構造化文書の新ノードの被利用ノードに係る構文解析結果を使用する場合に、前記被利用ノードがテキスト・ノード変数であるとき、前記新構造化文書の新ノードの被利用ノードに係る構文解析結果におけるテキスト・ノード変数にテキスト・ノード変数値を代入した構文解析結果を、前記新構造化文書の新ノードの被利用ノードに係る構文解析結果として使用する前記元構造化文書利用手段、
を有していることを特徴とする請求項２２記載の構造化文書処理装置。
【請求項２６】
各元構造化文書が、構造区分に係る複数個のノードとしての複数個の元ノードに区分化可能となっている複数個の元構造化文書に対し、各元構造化文書の前記元ノードが前記元構造化文書における先頭からの出現順に遷移する状態遷移図に係る情報を状態遷移図情報として記憶する状態遷移図情報記憶ステップであって、複数の元構造化文書に重複する状態遷移は前記状態遷移図上においてを共通化された状態遷移となっている前記状態遷移図情報記憶ステップ、
構造区分に係る複数個のノードとしての複数個の新ノードに区分化可能となっている新構造化文書に対し、前記新構造化文書における先頭からの前記新ノードの出現順及び前記状態遷移図におけるノード遷移順に従い、それぞれ新構造化文書及び状態遷移図において相互に対応する新ノード及び元ノードの対を選定対として抽出する選定対抽出ステップ、
選定対の元ノード及び新ノードに対し、それらの一致性の有無をそれらの記述に基づき判定する一致性判定ステップ、
一致性有りの判定のときには選定対の元ノード及び新ノードに対し該元ノードを該新ノードの被利用ノードに認定するノード認定ステップ、
前記状態遷移図上の複数個の被利用ノードを遷移順に進む遷移履歴に係る情報を遷移履歴情報として生成する遷移履歴情報生成ステップ、
前記遷移履歴情報に基づき１個の元構造化文書を前記新構造化文書の被利用構造化文書として選択する被利用構造化文書選択ステップ、及び
新構造化文書の新ノードに係る構文解析結果として、該新構造化文書の被利用構造化文書における前記新ノードの被利用ノードに係る構文解析結果を利用する元構造化文書利用ステップ、
を有していることを特徴とする構造化文書処理方法。
【請求項２７】
状態遷移図上のどの元ノードに選定対関係になっても元ノードとの一致性無しである新ノードとしての第１の新ノードに対し、該第１の新ノードを遷移先として遷移元になる状態遷移関係をもつ元ノードであって前記状態遷移図上の元ノードから、前記第１の新ノードへの状態遷移を形成しつつ、前記第１の新ノードを前記状態遷移図上に第１の元ノードとして新規に追加する元ノード追加ステップ、
前記構造化文書における先頭からのノードの出現順でノードの先後を定義するとともに、コンテキストとは、内容を一意に把握する対象としてのノードを対象ノードと呼ぶことにして、構造化文書先頭から該対象ノードへの到達前までの構造化文書記述に含まれる記述部分であって、該対象ノードの内容を、該対象ノードの記述自体と協働して、一意に規定する記述部分であると定義し、前記第１の新ノードより後ろの新ノードとしての第２の新ノードに対して、該第２の新ノードに係る選定対としての合流判定用選定対では、記述と共にコンテキストに関しても元ノードと新ノードとの一致性を判定する前記一致性判定ステップ、及び
前記合流判定用選定対における前記第２の新ノード及び第２の元ノードが記述及びコンテキストの両方に関して一致性有りとする判定がなされたときには、前記第１の元ノードから第２の元ノードへの状態遷移経路を新規に追加する状態遷移経路追加ステップ、
を有していることを特徴とする請求項２６記載の構造化文書処理方法。
【請求項２８】
前記状態遷移図上の所定の元ノードは、所定の属性を属性変数とする属性変数付き元ノードに設定されている前記状態遷移図情報記憶ステップ、
選定対における元ノードが属性変数付き元ノードであり、かつ前記選定対における元ノード及び新ノードの要素名及び属性名が同一であるとき、前記選定対における前記元ノード及び前記新ノードの一致性が有りとする前記一致性判定ステップ、
一致性有りの選定対に対し、該選定対の元ノードが属性変数付き元ノードであるとき、前記選定対の新ノードの属性値を属性変数値として記憶する属性変数値記憶ステップ、及び
前記新構造化文書の新ノードに係る構文解析結果として、該新構造化文書の被利用構造化文書のノードであって該新構造化文書の新ノードの被利用ノードに係る構文解析結果を使用する場合に、前記被利用ノードが属性変数付き元ノードであるとき、前記新構造化文書の新ノードの被利用ノードに係る構文解析結果における属性変数に、前記属性変数値を代入した構文解析結果を、前記新構造化文書の新ノードの被利用ノードに係る構文解析結果として使用する前記元構造化文書利用ステップ、
を有していることを特徴とする請求項２６記載の構造化文書処理装置。
【請求項２９】
前記状態遷移図上の所定のテキスト・ノードとしての元ノードはテキスト・ノード変数に設定されている前記状態遷移図情報記憶ステップ、
選定対における元ノード及び新ノードがそれぞれテキスト・ノード変数及びテキスト・ノードであるとき、前記元ノード及び前記新ノードの一致性が有りとする前記一致性判定ステップ、
一致性有りの選定対に対し、該選定対の元ノードがテキスト・ノード変数であるとき、前記選定対の新ノードのテキストをテキスト・ノード変数値として記憶するテキスト・ノード変数値記憶ステップ、及び
前記新構造化文書の新ノードに係る構文解析結果として、該新構造化文書の被利用構造化文書のノードであって該新構造化文書の新ノードの被利用ノードに係る構文解析結果を使用する場合に、前記被利用ノードがテキスト・ノード変数であるとき、前記新構造化文書の新ノードの被利用ノードに係る構文解析結果におけるテキスト・ノード変数にテキスト・ノード変数値を代入した構文解析結果を、前記新構造化文書の新ノードの被利用ノードに係る構文解析結果として使用する前記元構造化文書利用ステップ、
を有していることを特徴とする請求項２６記載の構造化文書処理装置。
【請求項３０】
請求項１、２、５〜１２及び２２〜２５のいずれかに記載の構造化文書処理装置の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＭＬ（eXtensible Markup Language）文書等の構造化文書を処理する装置、方法、及びプログラムに係り、詳しくは解析済みの構造化文書と新規構造化文書との対比に基づく処理を行う構造化文書処理装置、構造化文書処理方法及びプログラムに関するものである。
【背景技術】
【０００２】
特許文献１は、ＳＧＭＬ（Standard Generalized Markup Language）等の構造化文書が、版ごとに、削除、挿入、変更等の編集を加えられるときに、各版がどのようになっていたかの情報を表示する版管理方法を開示する。該版管理方法では、記憶するデータ量を低減しつつ、各版における変更点を具体的に示すために、初版は、構造化文書の全内容を保存するものの、２版以降の各版は、前版との差分情報のみを保存している。そして、従来の差分情報の表示態様では、本版における変更前の内容及び変更後の内容が、その表示エリアを別々にしてかつタグ付きのテキストで表示するもので（特許文献１の図４（ｂ））、対比の視認性が悪かったのに対し、特許文献１に係る版管理方法では、各構造箇所ごとに、削除、挿入、変更内容が対比されるようにして（特許文献１の図２３）、対比の視認性を高めている。すなわち、特許文献１の発明では、差分情報自体を、構造化文書により保存している（特許文献１の図６及び図１８）。
【０００３】
特許文献２は、構造化文書の構文解析を高速化するために、１個のアプリケーション・プログラムから繰返し、構文解析を要求される１個の構造化文書について、あるいは相互に異なる複数個のアプリケーション・プログラムから共通に、構文解析を要求される１個の構造化文書について、該構造化文書の構文解析結果としてのイベント・セット情報を予め記憶しておき、その後、該構造化文書について構文解析をアプリケーション・プログラムから再度、要求されるときには、該構造化文書について再度、構文解析することなく、記憶中のイベント・セット情報を読み出して、該イベント・セット情報から一連のイベントを再生して、該アプリケーション・プログラムへ通知している。
【０００４】
一方、通常のテキスト文書において類似度の高い文書を高速に検出する手法はいくつか提案されている（例：非特許文献１，２）。
【０００５】
また、オートマトンを適応的に用いる方法は、学習オートマトンとして既に研究された領域である（例：非特許文献３）。
【０００６】
さらに、ＳＩＡ(System Integrated Automaton for SAX)パーサ（Parser）がある（非特許文献４）。
【０００７】
解析済みＸＭＬ文書に対して類似度の高いものから差分を取り出す単純かつ自明な方法は、バイト列もしくは文字列に対して単純に差分を取っていけばよい。この差分解析方法については、古くからいくつも提案がある（非特許文献５）。
【特許文献１】特開平９−３１９６３２号公報
【特許文献２】特開２００４−６２７１６公報
【非特許文献１】米国ＣｉｔｅＳｅｅｒ．ＩＳＴ（科学文献ディジタル図書館：scientific literature digital library ）、”類似木マッチング・システム（A System for Approximate Tree Matching）［online］、［平成１６年９月１日検索］、インターネット＜http://citeseer.ist.psu.edu/tsong−li９２system.html＞
【非特許文献２】米国ＣｉｔｅＳｅｅｒ．ＩＳＴ（科学文献ディジタル図書館：scientific literature digital library ）、”無方向非サイクリック・グラフと関連問題との編集距離について（On the editing distance between undirected acyclic graphs and related problems）［online］、［平成１６年９月１日検索］、インターネット＜http://citeseer.ist.psu.edu/zhang９５editing.html＞
【非特許文献３】ツセッツリン（Ｍ．Ｌ．）著「生物学システムにおけるオートマトン理論及びモデリング」、ニューヨーク及びロンドンのアカデミック・プレス社、１９７３年。(Tsetlin, M.L., "Automaton Theory and the Modelling of Biological Systems," New York and London, Academic Press, １９７３.)
【非特許文献４】”ＳＡＸ用システム統合オートマトン（System Integrated Automaton for SAX）［online］、［平成１６年９月１日検索］、インターネット＜http://www.geocities.com/siaparser/resources/siaidea.html＞
【非特許文献５】Ｐ．ヘッケル著、「ファイル間の相違を分離する技術」、ＡＣＭコミュニケーション出版社、１９７８年４月。(P.Heckel, "A Technique for Isolating Differences Between Files." Communication of the ACM, Apr78)
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特許文献１の版管理装置は、版管理における情報記憶量を節約するために、差分情報を利用することを開示するものの、構造化文書の構文解析を高速化するための具体的技術についてはなんら言及していない。
【０００９】
特許文献２の構造化文書処理装置は、すでに構文解析済みの構造化文書について、アプリケーション・プログラムより再度、構文解析要求があったときの高速化には、適用できるが、構文解析済みの構造化文書とは異なる構造化文書について、構文解析要求があったときには、それに対処できない。
【００１０】
ＸＭＬの類似文書の従来の検索技術（非特許文献１，非特許文献２）はすべてパース済みの文書に対して類似度を判定するものであり、パース処理を効率化するという目的には用いることができない。
【００１１】
オートマトンを文書に単純に適用するだけでは（非特許文献３）、ＸＭＬの構造やＸＭＬの整形式を考慮されないので、整形式かどうかの検証などの時間のかかる操作を必要としてしまい、効率の面で大きな問題がある。
【００１２】
ＳＩＡパーサ（非特許文献４）は、ＳＡＸイベントに対して、オートマトン(学習可)を利用して、ＸＭＬの木構造自身の文法を認識して処理しようとするものであり、パース（構文解析）を行っていないテキストからそのまま適用できるものではない。
【００１３】
非特許文献５等には、未解析ＸＭＬ文書の構文解析の高速化についての示唆はない。
【００１４】
本発明の目的は、構造化文書間の類似関係を効率的に検出する構造化文書処理装置、構造化文書処理方法及びプログラムを提供することである。
【００１５】
本発明の他の目的は、新規構造化文書の構文解析を高速化することができる構造化文書処理装置、構造化文書処理方法及びプログラムを提供することである。
【００１６】
本発明のさらに他の目的は、他の構造化文書の構文解析を利用して、新規構造化文書の構文解析を高速化する際に、適切な他の構造化文書を高速で探し出すことのできる構造化文書処理装置、構造化文書処理方法及びプログラムを提供することである。
【課題を解決するための手段】
【００１７】
本発明の構造化文書処理装置、構造化文書処理方法及びプログラムでは、元構造化文書と新構造化文書との類似度を調べるために、状態遷移機械（オートマトン）を利用する。すなわち、元構造化文書は、その構造区分に係る複数個のノードとしての複数個の元ノードに区分され、それら元ノードは、状態遷移図上の各状態（本明細書では、状態遷移図上の状態を、「ノード」とも呼んでいる。）に対応させられて、状態遷移図が作成される。状態遷移図では、それら元ノードの状態遷移は、元構造化文書の先頭から末尾への出現順に対応付けられている。新構造化文書は、同様に、その構造区分に係る複数個のノードとしての複数個の新ノードに区分され、それら新ノードは、新構造化文書の先頭から末尾への出現順に順番付けされる。新構造化文書における新ノード及び状態遷移図上の元ノードが、それらの順番に従って選択対として抽出され、各選択対の元ノード及び新ノードの相互の一致性が調べられる。
【００１８】
構造化文書には、階層化された構造化文書が含まれ、階層化された構造化文書とは、例えば、ＸＭＬ文書やＳＧＭＬ文書である。なお、「一致性」とは、典型的には、完全一致を意味するが、これに限定されない。選択対の元ノード及び新ノードが、ノードの属性値のみが相違するときも、一致性有りとすることもできる。例えば、ＸＭＬパーサ等への本発明の適用において、元構造化文書の構文解析結果を新構造化文書の構文解析結果として利用するか否かについての基準を設け、選択対の元ノード及び新ノードが、完全一致ではなく、相違点があるものの、該基準を満足できる程度の相違であるならば、両者は一致性有りと判定することができる。
【００１９】
本発明の適用例として、ＸＭＬパーサ、構造化文書の相互の類似度に基づく構造化文書クラスの推測装置、構造化文書の相互の類似度に基づく構造化文書間の関連付け装置、及び大学教授が、学生より新規提出されたレポート（＝構造化文書）について、他の学生から既提出済みのレポート（＝構造化文書）に対する同一部分及び相違部分を把握することを支援する装置がある。
【００２０】
本発明としての構造化文書用構文解析装置、方法及びプログラムでは、元構造化文書は、すでに構文解析が済まされた構造化文書であり、これに対して、新構造化文書は、これから構文解析を行なおうとするものである。元構造化文書及び新構造化文書は、元構造化文書の構文解析結果を新構造化文書の構文解析結果として再利用するのに都合のよい内容部分単位に区分される。該内容部分単位は、例えば構造化文書の構造区分（例：構造化文書のノード）であってよい。そして、元構造化文書及び新構造化文書は、それらの内容部分単位同士で、先頭から末尾への順番に基づき、記述の観点から一致性を調べられる。元構造化文書及び新構造化文書は、幾つかの内容部分単位において一致性がなくても、文書全体において所定の一致性が認められるならば、元構造化文書の構文解析結果を利用して、新構造化文書の構文解析結果を行なう。例えば、新構造化文書の内容部分単位に係る構文解析結果として、元構造化文書の内容部分単位に係る構文解析結果をそのまま使用する。元構造化文書の内容部分単位の構文解析結果を構文解析結果として利用できない新構造化文書の内容部分単位については、もし、その解析結果が必要であるときには、それを構文解析することになる。
【００２１】
本発明では、複数個の元構造化文書の中から、新構造化文書の構文解析に利用する適切な元構造化文書を探し出すために、状態遷移機械を利用する。状態遷移機械は、新構造化文書の各新ノードに対して、それと一致性のある、状態遷移図上の元ノードを探し出し、状態遷移図上において、一致性のある元ノードについての遷移履歴を調べる。該遷移履歴に基づき所定の１個の元構造化文書が選択される。該元構造化文書は、好ましくは、記述内容が新構造化文書に最類似する元構造化文書であるが、新構造化文書に対する元構造化文書の類似度が基準値以上であるときは、該元構造化文書が、該新構造化文書に最類似の元構造化文書でなくても、選択されてよいとする。基準値とは、例えば、状態遷移図上の元ノードに一致性有りと判定された新構造化文書の新ノードの個数を計数し、計数値が、該新構造化文書の新ノードの総数に対する割合に対し、該割合の値である。
【発明の効果】
【００２２】
本発明によれば、元構造化文書の類似関係を、状態遷移機械を用いて効率的に検出することができる。
【００２３】
本発明によれば、元構造化文書及び新構造化文書を、内容部分単位で対比し、この対比結果から元構造化文書及び新構造化文書の全体の一致性が認められると、新構造化文書の各内容部分単位の構文解析として、既解析済みの元構造化文書の対応の内容部分単位の構文解析結果を利用する。これにより、新構造化文書は、その全部について構文解析することを省略され、新構造化文書の構文解析の高速化を図ることができる。
【００２４】
本発明によれば、複数個の元構造化文書の状態遷移情報が１個の状態遷移図にまとめられ、状態遷移機械は、新構造化文書のノードに基づき状態遷移図上のノードを辿ることにより、新構造化文書の構文解析に利用できる適切な元構造化文書を探し出す。したがって、元構造化文書の個数に対する状態遷移図情報記憶量の低減化、及び複数個の元構造化文書の中から所望の元構造化文書の抽出の高速化を実現できる。
【発明を実施するための最良の形態】
【００２５】
図１は構造化文書処理装置１００の機能ブロック図である。構造化文書処理装置１００は、状態遷移図情報記憶手段１０１、選定対抽出手段１０２、一致性判定手段１０３、ノード認定手段１０４、遷移履歴情報生成手段１０５、及び類似度検出手段１０６を有している。状態遷移図情報記憶手段１０１は、構造区分に係る複数個のノードとしての複数個の元ノードに区分化可能となっている元構造化文書１０９に対し、該元構造化文書１０９の元ノードが元構造化文書１０９の先頭からの出現順に遷移する状態遷移図に係る情報を状態遷移図情報として記憶する。選定対抽出手段１０２は、構造区分に係る複数個のノードとしての複数個の新ノードに区分化可能となっている新構造化文書１１０に対し、新構造化文書１１０の先頭からの新ノードの出現順及び状態遷移図におけるノード遷移順に従い、それぞれ新構造化文書１１０及び状態遷移図において相互に対応する新ノード及び元ノードの対を選定対として抽出する。一致性判定手段１０３は、選定対の元ノード及び新ノードに対し、それらの一致性の有無をそれらの記述に基づき判定する。ノード認定手段１０４は、一致性有りの判定のときには選定対の元ノード及び新ノードに対し、元ノードを新ノードの被利用ノードに認定する。遷移履歴情報生成手段１０５は、状態遷移図上の複数個の被利用ノードを遷移順に進む遷移履歴に係る情報を遷移履歴情報として生成する。類似度検出手段１０６は、遷移履歴情報に基づき元構造化文書１０９と新構造化文書１１０との類似度を検出する。
【００２６】
図１の構造化文書処理装置１００と後述の図３の構造化文書処理方法１３０とは、発明のカテゴリがそれぞれ装置及び方法と相違するのみで、実質的な技術内容は同一であるので、両者を代表して構造化文書処理装置１００について説明を行なう。元構造化文書１０９及び新構造化文書１１０は例えばＸＭＬ文書やＳＧＭＬ文書である。ＸＭＬ文書では、ノードとは、例えば、後述の図１８や図２７のリーフ・ノードに相当するものであり、例えば、ＳＡＸインターフェースのイベントに対応する。すなわち、ＸＭＬ文書のノードとは、タグ（”<”から次の”>”までの記述部分）又はコンテント部分（タグの外の記述部分）である。元構造化文書１０９は典型的には、複数個であって、この場合、構造化文書処理装置１００は、例えば、複数個の元構造化文書１０９の中から新構造化文書１１０に最類似の元構造化文書１０９、又は基準を満足する程度に類似している１個の元構造化文書１０９を探し出したりする。
【００２７】
図１では、元構造化文書１０９及び新構造化文書１１０は１：１となっているが、ｎ（ｎは２以上の整数）：１の関係であることを除外しない。元構造化文書１０９が１個である場合は、新構造化文書１１０に対する該１個の元構造化文書１０９の類似度が調べられる。元構造化文書１０９がｎ個である場合は、新構造化文書１１０に対する全部又は幾つかの元構造化文書１０９の類似度が調べられる。
【００２８】
典型的には、選定対抽出手段１０２は、それが抽出した選定対に対して、一致性判定手段１０３が一致性無しと判定すると、一致性無しと判定された選定対については、その新ノードは変更せずに維持して、元ノードはノード遷移順番が次の元ノードへ抽出して、すなわち選定対の中身を更新させて、一致性判定手段１０３に再度の一致性判定を行なわせる。新ノードが状態遷移図のどの元ノードに対しても一致性無しということが判明すると、選定対抽出手段１０２は、選定対の新ノードを出現順番が次のものへ変更する。
【００２９】
元構造化文書１０９が複数個存在するとき、状態遷移図は、各元構造化文書１０９ごとに存在してもよいし、全部の元構造化文書１０９に共通に存在してもよい（例：図３２）。状態遷移図が各元構造化文書１０９ごとに存在する場合には、選定対抽出手段１０２は、新構造化文書１１０に対する類似度を現在、調べようとしている元構造化文書１０９専用の状態遷移図を使用して、選定対における元構造化文書１０９側の元ノードを捜索することになる。状態遷移図が全部の元構造化文書１０９に共通に存在するときは、典型的には、複数の元構造化文書１０９に重複する状態遷移は状態遷移図において１個にまとめられている（例：図３２において構造化文書Ａ，Ｂに対して状態６１５→６１６）。
【００３０】
選定対における元ノード及び新ノードの一致性は、典型的には記述の完全一致であるが、これに限定しない。後述の図４３のように、要素名（例：ds:Reference）が同一であるが、属性（例：URI）の値が異なる相違が選定対における元ノード及び新ノードにあったとしても、両者は一致性有りと判定することができる。元構造化文書１０９の構文解析結果を新構造化文書１１０の構文解析結果として利用するか否かについての基準を設け、選択対の元ノード及び新ノードの相違が、該基準をクリアできる範囲であれば、新構造化文書１１０の構文解析について、元構造化文書１０９の構文解析結果に利用価値があると認めて、両者は一致性有りと判定するのが好ましい。
【００３１】
構造化文書処理装置１００の利用例として次のものが挙げられる。
（ａ１）１個の元構造化文書１０９と新構造化文書１１０との類似度を調べ、類似度が基準値以上であれば、元構造化文書１０９の構文解析結果を新構造化文書１１０の構文解析結果として利用するＳＡＸ（Simple API for XML）インターフェース
（ａ２）複数個の元構造化文書１０９の中から最類似の元構造化文書１０９又は基準値以上の類似度をもつ１個の元構造化文書１０９を探し出し、該元構造化文書１０９の構文解析結果を新構造化文書１１０の構文解析結果として利用するＳＡＸインターフェース
（ｂ）各元構造化文書１０９への類似度に基づく新構造化文書１１０の文書クラスの推測又は元構造化文書１０９−新構造化文書１１０間の関連付け
（ｃ）大学教授が、新しく提出されたレポートに対し、すでに提出済みの多数のレポートのどれに類似するかを知る際の支援装置や、さらに、類似する提出済みのレポートのどこが同一で、どこが異なるかを知る際の支援装置
【００３２】
こうして、構造化文書処理装置１００は、状態遷移機械を利用して、１個又は複数個の元構造化文書１０９と新構造化文書１１０との類似度を効率的かつ高速に検出することができる。
【００３３】
図２は構造化文書処理装置１２０の機能ブロック図である。構造化文書処理装置１２０は、状態遷移図情報記憶手段１０１、選定対抽出手段１０２、一致性判定手段１０３、ノード認定手段１０４、遷移履歴情報生成手段１０５、類似度検出手段１０６、構文解析結果記憶手段１２１、利用認定手段１２２及び元構造化文書利用手段１２３を有している。構造化文書処理装置１２０の状態遷移図情報記憶手段１０１〜類似度検出手段１０６は、図１の構造化文書処理装置１００のそれらと同一である。構造化文書処理装置１００との相違点について述べる。構文解析結果記憶手段１２１は、元構造化文書１０９の各ノードについての構文解析結果を記憶する。利用認定手段１２２は、元構造化文書１０９及び新構造化文書１１０の類似度が基準値以上であるときには、元構造化文書１０９を新構造化文書１１０の被利用構造化文書と認定する。元構造化文書利用手段１２３は、新構造化文書１１０の新ノードに係る構文解析結果として、該新構造化文書１１０の被利用構造化文書におけるノードであって該新ノードの被利用ノードに係る構文解析結果を利用する。
【００３４】
図２の構造化文書処理装置１２０と後述の図４の構造化文書処理方法１４０とは、発明のカテゴリがそれぞれ装置及び方法と相違するのみで、実質的な技術内容は同一であるので、両者を代表して構造化文書処理装置１２０について説明を行なう。「元構造化文書１０９及び新構造化文書１１０の類似度が基準値以上であるとき」とは、元構造化文書１０９が複数個ある場合に、最類似の元構造化文書１０９であるときを除外しない。ただし、該最類似の元構造化文書１０９は、「新構造化文書１１０との類似度が基準値以上であるとき」の条件を具備する必要がある。新構造化文書１１０の被利用構造化文書と認定された元構造化文書１０９は、その所定の元ノード（被利用ノード）に係る構文解析結果が、新構造化文書１１０の対応の新ノードに係る構文解析結果として利用されるが、この理由は、元構造化文書１０９及び新構造化文書１１０の類似度が基準値以上であるときには、新構造化文書１１０の全体を構文解析するよりも、すでに構文解析済みの元構造化文書１０９の構文解析結果を利用して、新構造化文書１１０の構文解析を行った方が構文解析を高速化することができるからである。したがって、利用認定手段１２２における基準値は、元構造化文書１０９の構文解析結果の利用が新構造化文書１１０の構文解析の高速化に寄与できるかの観点から設定される。構造化文書処理装置１２０をＳＡＸインターフェースに適用する場合、元構造化文書１０９に、新ノードの被利用ノードに相当する元ノードがないときには、該新ノードについては、新規に構文解析することになる。構造化文書処理装置１２０をＷｅｂサービスにおけるＳＯＡＰメッセージの構文解析に適用する場合、元構造化文書１０９の構文解析結果は、例えばテンプレート（例：図４０）としてあらかじめ用意され、新構造化文書１１０から適宜抽出したデータを該テンプレートの空白部に記入して、新構造化文書１１０用の構文解析結果を完成させる。
【００３５】
構造化文書処理装置１２０では、状態遷移機械を利用して、これにより、新構造化文書１１０の構文解析結果として利用できる構文解析結果をもつ元構造化文書１０９を高速に探し出したり、ＳＯＡＰメッセージの構文解析に利用できるテンプレートを高速に探し出すことができる。
【００３６】
図３は構造化文書処理方法１３０のフローチャートである。Ｓ１３１（状態遷移図情報記憶ステップ）では、構造区分に係る複数個のノードとしての複数個の元ノードに区分化可能となっている元構造化文書に対し、該元構造化文書の元ノードが元構造化文書における先頭からの出現順に遷移する状態遷移図に係る情報を状態遷移図情報として記憶する。Ｓ１３２（選定対抽出ステップ）では、構造区分に係る複数個のノードとしての複数個の新ノードに区分化可能となっている新構造化文書に対し、新構造化文書における先頭からの新ノードの出現順及び状態遷移図におけるノード遷移順に従い、それぞれ新構造化文書及び状態遷移図において相互に対応する新ノード及び元ノードの対を選定対として抽出する。Ｓ１３３（一致性判定ステップ）では、選定対の元ノード及び新ノードに対し、それらの一致性の有無をそれらの記述に基づき判定する。Ｓ１３４（ノード認定ステップ）では、一致性有りの判定のときには選定対の元ノード及び新ノードに対し該元ノードを該新ノードの被利用ノードに認定する。
【００３７】
Ｓ１３５では、一致性判定を終了するか否かを判定し、該判定の結果が正であれば、Ｓ１３６へ進み、否であれば、Ｓ１３２へ戻る。Ｓ１３５における判定が正になる場合とは、例えば、新構造化文書１１０の全部のノードについて、一致性判定を終了したとか、新構造化文書１１０において、状態遷移図のどの元ノードにも一致性の無い新ノードが所定値以上に達し、該新構造化文書１１０について、これ以上、一致性判定を続けるのに意義がないと判断したときとかである。
【００３８】
Ｓ１３６（遷移履歴情報生成ステップ）では、状態遷移図上の複数個の被利用ノードを遷移順に進む遷移履歴に係る情報を遷移履歴情報として生成する。Ｓ１３７（類似度検出ステップ）では、遷移履歴情報に基づき元構造化文書と新構造化文書との類似度を検出する。
【００３９】
図４は別の構造化文書処理方法１４０のフローチャートである。構造化文書処理方法１４０において、構造化文書処理方法１３０（図３）のステップと同一のステップについては同符号を指示し、構造化文書処理方法１３０との相違点について説明する。
【００４０】
Ｓ１４１（構文解析結果記憶ステップ）では、元構造化文書の各ノードについての構文解析結果を記憶する。なお、Ｓ１３１とＳ１４１との順番は入れ替えてもよい。Ｓ１４２では、Ｓ１３７で検出した類似度か基準値以上であるか否かを判定し、該判定の結果が正であるときのみ、以降の処理としての元構造化文書１０９の利用処理へ進む。
【００４１】
Ｓ１４３（利用認定ステップ）では、元構造化文書及び新構造化文書の類似度が基準値以上であるときには（Ｓ１４２の判定が正）、元構造化文書を新構造化文書の被利用構造化文書と認定する。Ｓ１４４（元構造化文書利用ステップ）では、新構造化文書の新ノードに係る構文解析結果として、該新構造化文書の被利用構造化文書における新ノードの被利用ノードに係る構文解析結果を利用する。
【００４２】
ここで、「構造化文書処理装置１００等」とは、前述した構造化文書処理装置１００（図１）及び構造化文書処理装置１２０（図２）、並びに後述の構造化文書処理装置２１０（図６）、構造化文書処理装置２２０（図７）、構造化文書処理装置３００（図１３）及び構造化文書処理装置３２０（図１４）を指すものとする。また、「構造化文書処理方法１３０等」とは、前述した構造化文書処理方法１３０（図３）及び構造化文書処理方法１４０（図４）、並びに後述する構造化文書処理方法２５０（図８）、構造化文書処理方法２６０（図９）、構造化文書処理方法２７０（図１０〜図１２）、構造化文書処理方法３４０（図１５）、構造化文書処理方法３６０（図１６）及び構造化文書処理方法３８０（図１７）を指すものとする。構造化文書処理装置１００等及び構造化文書処理方法１３０等は、ハードウェア、ソフトウェア、又はそれらの組み合わせにより実現可能である。ハードウェアとソフトウェアとの組み合わせによる実行において、所定のプログラムを有するコンピュータシステムにおける実行が典型的な例と挙げられる。かかる場合、該所定プログラムが該コンピュータシステムにロードされ実行されることにより、該プログラムは、コンピュータシステムを制御し、これら構造化文書処理装置１００等に係る処理を実行させる。このプログラムは、任意の言語・コード・表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接、又は（ａ）他の言語・コード・表記への変換、（ｃ）他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。もちろん、構造化文書処理装置１００等は、そのようなプログラム自体のみならず、プログラムを記録した媒体もその範囲に含むものである。構造化文書処理装置１００等の機能を実行するためのプログラムは、フレキシブル・ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ、ハード・ディスク装置、ＲＯＭ、ＭＲＡＭ、ＲＡＭ等の任意のコンピュータ読み取り可能な記録媒体に格納することができる。かかるプログラムは、記録媒体への格納のために、通信回線で接続する他のコンピュータシステムからダウンロードしたり、他の記録媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、又は複数に分割して、単一又は複数の記録媒体に格納することもできる。
【００４３】
図５は構造化文書処理装置１００等や構造化文書処理方法１３０等のためのプログラムが実装されるコンピュータ１６０の概略構成図である。該プログラムは、構造化文書処理装置１００等の各手段としてコンピュータ１６０を機能させる。また、該プログラムは、構造化文書処理方法１３０等の各ステップをコンピュータ１６０に実行させる。コンピュータ本体１６１はＣＰＵ１６２及び主記憶装置１６３を含み、ＣＰＵ１６２はさらに演算装置１６４及び制御装置１６５を含む。演算装置１６４は、演算、比較及び判断等を行い、制御装置１６５は主記憶装置１６３や演算装置１６４等を制御する。システム・バス１７０は、データ・バス、アドレス・バス及び制御バスから成り、ＣＰＵ１６２、主記憶装置１６３、入力インターフェース１７５、入出力インターフェース１７６、及び出力インターフェース１７７が接続されている。入力装置１８０は例えばキー・ボードや読出し専用ＣＤドライブ等であり、データを入力インターフェース１７５を介してシステム・バス１７０へ送る。外部記憶装置１７７は、例えば、ＨＤ（ハードディスク）装置や読書き可能なＣＤドライブ等であり、入出力インターフェース１７６を介してシステム・バス１７０とデータを送受する。出力装置１８２は、例えばディスプレイやプリンタであり、出力インターフェース１７７を介してシステム・バス１７０からのデータを受ける。１００等のプログラムは、例えばＨＤ装置等の外部記憶装置１８１に保存され、実行時には主記憶装置１６３へ読み込まれる。
【００４４】
図６は構造化文書処理装置２１０の機能ブロック図である。構造化文書処理装置２１０は、アプリケーション・プログラムからの構造化文書の構文解析要求に対し、該構造化文書を構文解析して、その構文解析結果をアプリケーション・プログラムへ通知するものであり、記憶手段２１２、判別手段２１３、解析手段２１４、及び通知手段２１５を有している。記憶手段２１２は、構文解析済みの構造化文書としての元構造化文書についてその内容及びその構文解析結果をそれぞれ元内容及び元解析結果として記憶する。判別手段２１３は、アプリケーション・プログラムから構文解析を要求された構造化文書としての新構造化文書に対し、該新構造化文書の内容と元構造化文書の元内容とを、所定の対応関係を持つ内容部分同士で対比して、新構造化文書の各内容部分が、元構造化文書の元解析結果を利用できる第１の内容部分となっているか、又は元構造化文書の元解析結果を利用できない第２の内容部分となっているかを判別する。解析手段２１４は、新構造化文書の第２の内容部分を構文解析してその構文解析結果としての新解析部分を出力する。通知手段２１５は、は記新構造化文書の第１の内容部分の構文解析結果としては、該第１の内容部分に対応する元構造化文書の元解析結果の部分をアプリケーション・プログラムへ通知し、また新構造化文書の第２の内容部分の構文解析結果としては新解析部分をアプリケーション・プログラムへ通知する。
【００４５】
構造化文書処理装置２１０のみならず、後述の構造化文書処理装置２０及び構造化文書処理方法において、構造化文書とは、例えばＳＧＭＬ（Standard Generalized Markup Language）文書やＸＭＬ文書である。記憶手段２１２及び後述の記憶手段２１とは、例えばハード・ディスク装置やキャッシュ・メモリである。キャッシュ・メモリの記憶は、コンピュータの電源オフに伴い、消失するので、コンピュータの次の作動時にも、元構造化文書の構文解析結果を利用するためには、キャッシュ・メモリ上の元構造化文書の構文解析結果に係るデータはバックアップのためハード・ディスク装置へ適宜、保存する必要がある。
【００４６】
通常、構造化文書を構文解析するには、構造化文書の字句解析や構造化文書の整形式検査も必要になる。したがって、構造化文書の構文解析の処理には構造化文書の字句解析の処理や整形式の検査処理が包含される。そして、構文解析結果が記憶手段２１２，２２１に記憶される元構造化文書は、当然に字句解析及び整形式検査が済まされたものとなっている。字句解析や整形式検査を包含する典型的な構文解析には次の処理が含まれる。
（ａ）ＸＭＬ文書の文字コードをユニコード（Unicode）の所定の文字に復号する。
（ｂ）ＸＭＬ文書内の文字列に対して、タグを認識し、この認識に基づき、要素名、属性名、属性値、テキスト・ノードの文字列について、ＸＭＬの生成規則に適合しているか否かを検査する。
（ｃ）名前空間の処理では、名前空間の宣言を認識し、それぞれの要素、属性の接頭辞から名前空間のＵＲＩをバインドする。
【００４７】
記憶手段２１２に記憶される元構造化文書の構文解析結果は、ＤＯＭ（Document Object Model）インターフェースのツリー構造に係る情報であってもよいし、ＳＡＸ（Simple API for XML）インターフェースの一連のイベントに係る情報であってもよい。判別手段２１３における第１及び第２の内容部分の判別は、例えば、相互に対比する新構造化文書及び元構造化文書の内容部分同士が一致するか否かが基準とされ、一致すれば、新構造化文書の該当内容部分は、第１の内容部分であると判断され、不一致であれば、新構造化文書の該当内容部分は、第２の内容部分であると判断される。構文解析結果をイベントの情報形式とする場合、相互に対比する新構造化文書及び元構造化文書の内容部分はイベントに対応するものとすることができる。
【００４８】
こうして、新構造化文書の構文解析結果をアプリケーション・プログラムへ通知する場合に、新構造化文書の内容の内、第１の内容部分は、新たに構文解析することなく、その構文解析結果としてすでに構文解析済みの元構造化文書の対応構文解析結果部分を代替できるので、新構造化文書全体の構文解析処理時間が短縮される。
【００４９】
図７は別の構造化文書処理装置２２０の機能ブロック図である。構造化文書処理装置２２０は、アプリケーション・プログラムからの構造化文書の構文解析要求に対し、該構造化文書を構文解析し、その構文解析結果としての一連のイベントをアプリケーション・プログラムへ通知する。構造化文書処理装置２２０は、記憶手段２２１、一致判定手段２２２、分類手段２２３、解析手段２２４、及び通知手段２２５を有している。記憶手段２２１は、構文解析済みの構造化文書としての元構造化文書についてその内容と各構造区分に係る構文解析結果とをそれぞれ元内容及び各元解析区分として記憶する。一致判定手段２２２は、元構造化文書の元内容とアプリケーション・プログラムから構文解析を要求された構造化文書としての新構造化文書の内容とを、それらの相互に対応する構造区分同士でかつ文書の先頭側にある構造区分同士から順番に、相互に一致するか否かの一致判定を実施する。分類手段２２３は、新構造化文書の各構造区分を、該構造区分に係る一致判定の正否によりそれぞれ第１の分類の構造区分と第２の分類の構造区分とに分類する。解析手段２２４は、分類手段２２３により第２の分類の構造区分と分類された構造区分を構文解析してその構文解析結果としての新解析区分を生成する。通知手段２２５は、新構造化文書の先頭の構造区分から末尾の構造区分の方への順番に各構造区分に係るイベントをアプリケーション・プログラムへ通知する。通知手段２２５は、新構造化文書の各構造区分が、第１の分類の構造区分であれば、該構造区分の構文解析結果として、該構造区分に対応する元構造化文書の元解析区分に係るイベントをアプリケーション・プログラムへ通知する。通知手段２２５は、第２の分類の構造区分であれば、該構造区分の構文解析結果として、該構造区分についての新解析区分に係るイベントをアプリケーション・プログラムへ通知する。
【００５０】
構造化文書処理装置２２０は例えばＳＡＸインターフェースである。構造区分とは、例えばＳＡＸのイベントに対応付けることのできる区分である。構造区分は、ＳＡＸで定義されているイベントだけに対応つけてもよいし、設計者がＳＡＸで定義されているイベントに新規のイベントを追加したり、複数個のイベントを統合したりしてもよい。ただし、設計者がイベントを追加したり、統合したりするときは、それら変更イベントからＳＡＸ定義のイベントへ変換できるものである必要がある。後述するように、ＳＡＸのイベントと設計者が追加したり統合したイベントとを併せて、「イベントの種類」と呼んでいる。
【００５１】
構造化文書処理装置２２０では、新構造化文書の内容を全部、構文解析することなく、新構造化文書において元構造化文書の内容との不一致が生じた構造区分のみが構文解析され、新構造化文書の残りの内容部分は、該内容部分に対応する元構造化文書に係る元解析区分を使用して、アプリケーション・プログラムへのイベントの通知に対処する。したがって、新構造化文書の構文解析時間を短縮できる。
【００５２】
構造化文書処理装置２２０には、次に機能ごとに説明するそれら各機能を任意の組み合わせで、適宜、追加できる。それら各機能には、新たに追加された機能だけでなく、実装済みの機能の具体化したものも含まれる。それら各機能は、手段を追加したり、及び／又は、実装済みの手段の処理内容を具体化したりすることにより達成される。
【００５３】
解析手段２２４、一致判定手段２２２、及び通知手段２２５が寄与する機能について説明する。解析手段２２４は、構造区分の構文解析には該構文解析の結果に基づいて判明する検査であって新構造化文書が非整形式の構造化文書であるか否かの検査を含む。一致判定手段２２２は、新構造化文書の構造区分についての一致判定の結果が否であれば、該構造区分についての解析手段による非整形式の検査が終了するまで該構造区分の次の構造区分についての一致判定を保留し、検査により新構造化文書が非整形式であると判明すれば、新構造化文書に係る一致判定を中止する。通知手段２２５は、検査により新構造化文書が非整形式であると判明すれば、アプリケーション・プログラムへ、イベントの代わりに該新構造化文書が非整形式の構造化文書である旨を通知する。
【００５４】
ＳＡＸの規定では、アプリケーション・プログラムから構文解析を要求された構造化文書が非整形式の構造化文書である場合には、アプリケーション・プログラムへ構文解析結果としての一連のイベントを構造化文書の構造区分に係る順番で通知する代わりに、整形式の構造化文書である旨を通知することになっている。具体的な非整形式の構造化文書とは、例えば、開始タグと終了タグとの名前が不一致であるものとか、１個の要素に、同じ名前の属性名が２個以上、存在するものとかである。なお、妥当な（Valid）ＸＭＬ文書は、整形式のＸＭＬ文書の内の特殊なものである。通常の整形式のＸＭＬ文書を構文解析する場合には、ＸＭＬの構文規則だけが必要であるが、妥当なＸＭＬ文書を構文解析する場合には、ＸＭＬの構文規則の他に、ＤＴＤ（Document Type Definition）が必要になる。構造化文書が整形式であるか否かは、通常、新構造化文書において整形式の検査中の構造区分単独では検査できず、新構造化文書の先頭の構造区分から検査中の構造区分までの範囲の構文解析結果情報が必要になる。該範囲の構文解析結果情報の内、第１の分類の各構造区分の構文解析結果情報については、元構造化文書の対応する元解析区分が利用される。
【００５５】
新構造化文書が非整形式の構造化文書であるかは、新構造化文書の先頭から末尾の方へ新構造化文書の内容を所定の判明箇所まで検査していく必要があり、従来の構造化文書処理装置の整形式検査過程では、新構造化文書をその先頭から判明箇所まで全部の内容を構文解析しなければならなかったの対し、構造化文書処理装置２２０における整形式検査過程では、元構造化文書の構造区分と同一の新構造化文書の構造区分については、その構文解析を省略して、判明箇所へ到達するので、到達時間が早まる。結果、新構造化文書が非整形式であるか否かの検査を早めて、アプリケーション・プログラムに通知することができる。
【００５６】
一致判定手段２２２が寄与する構造化文書処理装置２２０の機能について説明する。一致判定手段２２２において、一致判定は、新構造化文書の内容と元構造化文書の内容との相互に対応する構造区分同士内で、先頭から末尾の方へ１バイト又は１文字のデータを単位として一致するか否かを判定していくものとなっている。
【００５７】
先頭から末尾の方へ１バイト又は１文字のデータ単位で、元構造化文書及び新構造化文書の内容が一致するか否かを検査する場合、構造化文書における各データの位置は、構造化文書の先頭からのバイト数及び文字数で把握でき、検査が能率的となる。
【００５８】
次に、記憶手段２２１、最類似構造化文書選択手段３１、及び一致判定手段２２２が寄与する構造化文書処理装置２２０の機能について説明する。記憶手段２２１は、相互に異なる複数個の元構造化文書に係る元内容及び元解析区分を記憶する。最類似構造化文書選択手段３１は、元内容及び元解析区分が記憶手段２２１に記憶されている複数個の元構造化文書の中から元内容が新構造化文書の内容に最も類似する元構造化文書を最類似構造化文書として選択する。一致判定手段２２２は、一致判定に係る元構造化文書を最類似構造化文書にする。
【００５９】
新構造化文書に対して最類似の元構造化文書がどれかは例えば後述する基準により決定される。最類似の元構造化文書でなくても、新構造化文書に対する差分量が所定内の元構造化文書であれば、新構造化文書の構文解析の高速化に十分に寄与することができる。
【００６０】
サーバ等検出手段２３２及び最類似構造化文書選択手段２３１が寄与する構造化文書処理装置２２０の機能について説明する。サーバ等検出手段２３２は、新構造化文書はＷｅｂサービスにおいてクライアントからのリクエストに対するサーバからのレスポンスに係るものであり、該リクエストからリクエスト先のサーバ及びオペレーションを検出する。最類似構造化文書選択手段２３１は、検出したサーバ及びオペレーションに基づいて最類似構造化文書を選択する。
【００６１】
Ｗｅｂサービスでは、クライアント（リクエスタ）がサーバ（プロバイダ）にリクエストを送信し、これに対して、サーバがクライアントへレスポンスを送信するようになっている。クライアント側において、サーバ及びオペレーションが新構造化文書に係るものと同一である元構造化文書は、新構造化文書と類似することは容易に予想が着く。なぜなら、ＸＭＬ文書はアプリケーション・プログラムによって生成されるが、アプリケーション・プログラムはＸＭＬでエンコードされたメッセージを生成する処理はライブラリやアプリケーション・サーバなどのミドルウェアに任されていることが多いからである。すなわち、同じライブラリによって生成された同様の内容のＸＭＬ文書のバイト列や文字列は似通ってくる。したがって、サーバ及びオペレーションが新構造化文書に係るものと同一である元構造化文書を最類似構造化文書に選択することにより、新構造化文書の構文解析の処理時間を短縮できる。
【００６２】
ＵＲＬ検出手段２３３及び最類似構造化文書選択手段２３１が寄与する構造化文書処理装置２２０の機能について説明する。ＵＲＬ検出手段２３３は、新構造化文書はＷｅｂサービスのリクエストに係るものであり、該リクエストの送信先のＵＲＬを検出する。最類似構造化文書選択手段２３１は、検出したＵＲＬに基づいて最類似構造化文書を選択する。
【００６３】
典型的なサーバでは、１個のオペレーションに対して１個のＵＲＬを割当てる。したがって、サーバ側において、ＵＲＬが新構造化文書に係るものと同一である元構造化文書は、新構造化文書と類似することは容易に予想が着く。したがって、ＵＲＬが新構造化文書に係るものと同一である元構造化文書を最類似構造化文書に選択することにより、新構造化文書の構文解析の処理時間を短縮できる。
【００６４】
差分量計算手段２３４及び分類手段２２３が寄与する構造化文書処理装置２２０の機能について説明する。差分量計算手段２３４は、一致判定が否となるごとに、新構造化文書の内容と元構造化文書の内容との差分量を一単位、増大させる。分類手段２２３は、差分量が閾値を越えると、最後に一致判定対象となった構造区分から文書末尾の構造区分までの全部の構造区分について第２の分類の構造区分に分類する。
【００６５】
閾値は任意に設定できる。閾値は例えば新構造化文書のサイズの増大に応じて大きい値にすることができる。新構造化文書の内容と元構造化文書の内容との差分量は、両者における対応構造区分が不一致となっている個数に比例するとともに、新構造化文書の内容の先頭から末尾へ向かって差分量が計算されていく。そして、新構造化文書の文書途中において、差分量が閾値を越えると、新構造化文書に対する元構造化文書の類似度は低いとして、すなわち該元構造化文書の構文解析結果を該新構造化文書の構文解析結果に利用することは難が多いとして、両者の対比は取止め、新構造化文書において最後の一致判定対象となった構造区分から文書末尾の構造区分までの全部の構造区分は第２の分類の構造区分に分類される。これにより、それら全部の構造区分は、解析手段２２４により解析されて、それらの新解析区分が生成され、新解析区分に係るイベントがアプリケーション・プログラムへ通知される。なお、新構造化文書において、最後の一致判定対象となった構造区分から文書末尾の構造区分までの全部の構造区分に限定せず、新構造化文書の全部の構造区分を第２の分類の構造区分に分類して、すなわち、新構造化文書全体を構文解析することも可能である。
【００６６】
差分量計算手段２３４及び一致判定手段２２２が寄与する構造化文書処理装置２２０の機能について説明する。差分量計算手段２３４は、一致判定が否となるごとに、新構造化文書の内容と元構造化文書の内容との差分量を一単位、増大させる。一致判定手段２２２は、差分量が閾値を越えると、現在の元構造化文書を別の元構造化文書へ交換し、新構造化文書と交換前の元構造化文書に対して実施した処理と同一の処理を新構造化文書と交換後の元構造化文書について最初から再実施する。
【００６７】
元構造化文書の選択によっては、選択がまずく、元構造化文書が予想に反して新構造化文書と類似していない場合がある。また、新構造化文書のサイズが大きい場合には、元構造化文書の交換回数を所定値以内とすれば、結局、元構造化文書の構文解析結果を利用しての新構造化文書の構文解析の方が、該新構造化文書を丸々構造化文書するよりも構文解析処理時間の短縮が見込まれる場合がある。元構造化文書の交換回数を所定値以内に制限しつつ、新構造化文書の構文解析に元構造化文書の構文解析結果を利用することにより、新構造化文書の構文解析処理速度を速めることができる。
【００６８】
図８は構造化文書処理方法２５０のフローチャートである。該構造化文書処理方法は、アプリケーション・プログラムからの構造化文書の構文解析要求に対し、該構造化文書を構文解析して、その構文解析結果をアプリケーション・プログラムへ通知する。構造化文書処理方法は、Ｓ２５２（記憶ステップ）、Ｓ２５３（判別ステップ）、Ｓ２５４（解析ステップ）、及びＳ２５５（通知ステップ）を有している。Ｓ２５２（記憶ステップ）では、構文解析済みの構造化文書としての元構造化文書についてその内容及びその構文解析結果をそれぞれ元内容及び元解析結果として記憶する。Ｓ２５３（判別ステップ）では、アプリケーション・プログラムから構文解析を要求された構造化文書としての新構造化文書に対し、該新構造化文書の内容と元構造化文書の元内容とを、所定の対応関係を持つ内容部分同士で対比して、新構造化文書の各内容部分が、元構造化文書の元解析結果を利用できる第１の内容部分となっているか、又は元構造化文書の元解析結果を利用できない第２の内容部分となっているかを判別する。Ｓ２５４（解析ステップ）では、新構造化文書の第２の内容部分を構文解析してその構文解析結果としての新解析部分を出力する。Ｓ２５５（通知ステップ）では、新構造化文書の第１の内容部分の構文解析結果としては、該第１の内容部分に対応する元構造化文書の元解析結果の部分をアプリケーション・プログラムへ通知し、また新構造化文書の第２の内容部分の構文解析結果としては新解析部分をアプリケーション・プログラムへ通知する。
【００６９】
図９は別の構造化文書処理方法２６０のフローチャートである。該別の構造化文書処理方法は、アプリケーション・プログラムからの構造化文書の構文解析要求に対し、該構造化文書を構文解析し、その構文解析結果としての一連のイベントをアプリケーション・プログラムへ通知するものである。構造化文書処理方法は、Ｓ２６１（記憶ステップ）、Ｓ２６２（一致判定ステップ）、Ｓ２６３，Ｓ２６４（分類ステップ）、Ｓ２６５（解析ステップ）、及びＳ２６６（通知ステップ）を有している。Ｓ２６１（記憶ステップ）では、構文解析済みの構造化文書としての元構造化文書についてその内容と各構造区分に係る構文解析結果とをそれぞれ元内容及び各元解析区分として記憶する。Ｓ２６２（一致判定ステップ）では、元構造化文書の元内容とアプリケーション・プログラムから構文解析を要求された構造化文書としての新構造化文書の内容とを、それらの相互に対応する構造区分同士でかつ文書の先頭側にある構造区分同士から順番に、相互に一致するか否かの一致判定を実施する。Ｓ２６３，Ｓ２６４（分類ステップ）では、新構造化文書の各構造区分を、該構造区分に係る一致判定の正否によりそれぞれ第１の分類の構造区分と第２の分類の構造区分とに分類する。Ｓ２６５（解析ステップ）では、Ｓ２６３，Ｓ２６４（分類ステップ）において第２の分類の構造区分と分類された構造区分を構文解析してその構文解析結果としての新解析区分を生成する。Ｓ２６６（通知ステップ）では、新構造化文書の先頭の構造区分から末尾の構造区分の方への順番に各構造区分に係るイベントをアプリケーション・プログラムへ通知する。Ｓ２６６（通知ステップ）では、構造化文書の各構造区分が、第１の分類の構造区分であれば、該構造区分の構文解析結果として、該構造区分に対応する元構造化文書の元解析区分に係るイベントをアプリケーション・プログラムへ通知し、また、第２の分類の構造区分であれば、該構造区分の構文解析結果として、該構造区分についての新解析区分に係るイベントをアプリケーション・プログラムへ通知する。
【００７０】
ここで、説明の便宜上、元構造化文書及び新構造化文書の「現在位置」について定義する。元構造化文書及び新構造化文書の「現在位置」とは、Ｓ２６２において一致判定を行なう元構造化文書及び新構造化文書における対応構造区分に係る位置を、それぞれいうものとする。Ｓ２６７（末尾到達判定ステップ）では、元構造化文書及び新構造化文書の現在位置を、Ｓ２６６においてアプリケーション・プログラムへイベントを通知した構造区分に対応する分だけ、文書末尾の方へ移動させ、該移動の結果、現在位置が元構造化文書及び新構造化文書の末尾になったか否かを判定する。そして、該判定が正であるならば、該ルーチンを終了し、否であるならば、Ｓ２６２へ戻る。
【００７１】
図９に係る別の構造化文書処理方法は、さらに、種々の機能を任意の組み合わせで追加可能になっている。それら各機能は、新しいステップを追加したり、又は装備済みのステップの処理内容を具体化したりすることにより実現される。図１０〜図１２は図９に係る構造化文書処理方法２６０に対し、種々の機能を追加した構造化文書処理方法２７０のフローチャートの部分図である。以下、図９〜図１２のいずれかを参照しつつ、該構造化文書処理方法２７０の追加機能について説明する。
【００７２】
追加機能の１つは、Ｓ２６５（解析ステップ）、Ｓ２６２（一致判定ステップ）、Ｓ２７１（非整形式判定ステップ）及びＳ２７２（通知ステップ）により実現される。図１０において、Ｓ２６５（解析ステップ）では、構造区分の構文解析には該構文解析の結果に基づいて判明する検査であって新構造化文書が非整形式の構造化文書であるか否かの検査を含ませる。Ｓ２７１（非整形式判定ステップ）では、該構造区分についてのＳ２６５（解析ステップ）における構文解析の結果、新構造化文書が非整形式であるか否かの非整形式判定を実施する。Ｓ２７１において、判定結果が正であれば、Ｓ２７２（通知ステップ）へ進んでから、該ルーチンを終了する。すなわち、Ｓ２６２（一致判定ステップ）では、新構造化文書の構造区分についての一致判定の結果が否であれば、該構造区分についての解析手段による非整形式の検査が終了するまで該構造区分の次の構造区分についての一致判定を保留し、検査により新構造化文書が非整形式であると判明すれば、新構造化文書に係る一致判定を中止する。Ｓ２７２（通知ステップ）では、検査により新構造化文書が非整形式であると判明すれば、アプリケーション・プログラムへ、イベントの代わりに該新構造化文書が非整形式の構造化文書である旨を通知する。
【００７３】
別の追加機能はＳ２６２（一致判定ステップ）により実現される。図９において、Ｓ２６２（一致判定ステップ）では、一致判定は、新構造化文書の内容と元構造化文書の内容との相互に対応する構造区分同士内で、先頭から末尾の方へ１バイト又は１文字のデータを単位として一致するか否かを判定していくものである。
【００７４】
他の追加機能は、Ｓ２６１（記憶ステップ）、Ｓ２７６（最類似構造化文書選択ステップ）及びＳ２６２（一致判定ステップ）により実現される。図１１において、Ｓ２６１（記憶ステップ）では、相互に異なる複数個の元構造化文書についてその内容とその元解析区分とを記憶する。Ｓ２７６（最類似構造化文書選択ステップ）では、Ｓ２６１（記憶ステップ）において記憶した複数個の元構造化文書の中から元内容が新構造化文書の内容に最も類似する元構造化文書を最類似構造化文書として選択する。Ｓ２６２（一致判定ステップ）では、一致判定に係る元構造化文書を最類似構造化文書にする。
【００７５】
別の機能はＳ２７８（サーバ等検出ステップ）及びＳ２７６（最類似構造化文書選択ステップ）により実現される。図１１において、Ｓ２７８（サーバ等検出ステップ）では、新構造化文書はＷｅｂサービスにおいてクライアントからのリクエストに対するサーバからのレスポンスに係るものであり、該リクエストからリクエスト先のサーバ及びオペレーションを検出する。Ｓ２７６（最類似構造化文書選択ステップ）では、検出したサーバ及びオペレーションに基づいて最類似構造化文書を選択する。
【００７６】
別の機能はＳ２８０（ＵＲＬ検出ステップ）及びＳ２７６（最類似構造化文書選択ステップ）により実現される。Ｓ２８０（ＵＲＬ検出ステップ）では、新構造化文書はＷｅｂサービスのリクエストに係るものであり、該リクエストの送信先のＵＲＬを検出する。Ｓ２７６（最類似構造化文書選択ステップ）では、検出したＵＲＬに基づいて最類似構造化文書を選択する。
【００７７】
別の機能は、Ｓ２８３、Ｓ２６２内の２個のサブステップＳ２８４，Ｓ２８５、及びＳ２８７により実現される。図１２において、Ｓ２８３（差分量初期値設定ステップ）では、差分量に初期値として０が設定される。Ｓ２８４（差分量計算ステップ）では、Ｓ２６２における一致判定が否となるごとに、新構造化文書の内容と元構造化文書の内容との差分量を一単位、増大させる。Ｓ２８５（差分量判定ステップ）では、差分量が閾値より大きいか否かを判定し、判定が正になると、Ｓ２８７へ進む。Ｓ２８７（分類ステップ）では、新構造化文書において、最後に一致判定対象となった構造区分から文書末尾の構造区分までの全部の構造区分について第２の分類の構造区分に分類し、Ｓ２６５へ進む。
【００７８】
別の機能は、Ｓ２８３、Ｓ２６２内の２個のサブステップＳ２８４，Ｓ２８５、及びＳ２８８により実現される。図１２において、Ｓ２８３（差分量初期値設定ステップ）では、差分量に初期値として０が設定される。Ｓ２８４（差分量計算ステップ）では、Ｓ２６２における一致判定が否となるごとに、新構造化文書の内容と元構造化文書の内容との差分量を一単位、増大させる。Ｓ２８５（差分量判定ステップ）では、差分量が閾値より大きいか否かを判定し、判定が正になるや、Ｓ２８８（元構造化文書交換ステップ）へ進む。Ｓ２８８では、現在の元構造化文書を別の元構造化文書へ交換し、Ｓ２８３へ戻る。
【００７９】
Ｓ２８５の判定が正である場合、該ルーチンを終了させてもよい（Ｓ２８５→ＥＮＤ）。
【００８０】
図１３は別の構造化文書処理装置３００の機能ブロック図である。構造化文書処理装置３００は、状態遷移図情報記憶手段３０１、選定対抽出手段３０２、一致性判定手段３０３、ノード認定手段３０４、遷移履歴情報生成手段３０５、被利用構造化文書選択手段３０６及び元構造化文書利用手段３０７を有している。状態遷移図情報記憶手段３０１は、各元構造化文書１０９が構造区分に係る複数個のノードとしての複数個の元ノードに区分化可能となっている複数個の元構造化文書１０９に対し、各元構造化文書１０９の元ノードが元構造化文書１０９の先頭からの出現順に遷移する状態遷移図に係る情報を状態遷移図情報として記憶する。状態遷移図情報記憶手段３０１は、また、複数の元構造化文書１０９の内の複数の元構造化文書１０９に重複する状態遷移は状態遷移図上においてを共通化された状態遷移となっている。選定対抽出手段３０２は、構造区分に係る複数個のノードとしての複数個の新ノードに区分化可能となっている新構造化文書１１０に対し、新構造化文書１１０の先頭からの新ノードの出現順及び状態遷移図におけるノード遷移順に従い、それぞれ新構造化文書１１０及び状態遷移図において相互に対応する新ノード及び元ノードの対を選定対として抽出する。一致性判定手段３０３は、選定対の元ノード及び新ノードに対し、それらの一致性の有無をそれらの記述に基づき判定する。ノード認定手段３０４は、一致性有りの判定のときには選定対の元ノード及び新ノードに対し該元ノードを該新ノードの被利用ノードに認定する。遷移履歴情報生成手段３０５は、状態遷移図上の複数個の被利用ノードを遷移順に進む遷移履歴に係る情報を遷移履歴情報として生成する。被利用構造化文書選択手段３０６は、遷移履歴情報に基づき１個の元構造化文書１０９を新構造化文書１１０の被利用構造化文書として選択する。元構造化文書利用手段３０７は、新構造化文書１１０の新ノードに係る構文解析結果として、該新構造化文書１１０の被利用構造化文書におけるノードであって該新ノードの被利用ノードに係る構文解析結果を利用する。
【００８１】
図１３の構造化文書処理装置３００と後述の図１５の構造化文書処理方法３４０とは、発明のカテゴリがそれぞれ装置及び方法と相違するのみで、実質的な技術内容は同一であるので、両者を代表して構造化文書処理装置３００について説明を行なう。状態遷移図（例：図３２）は、複数個ｎ（図３２では、ｎ＝３）の元構造化文書１０９に係る状態遷移を含んでいる。複数個ｍ（ｍ≦ｎ。図３２では、ｍ＝２）の元構造化文書１０９に重複する状態遷移（図３２では、元構造化文書Ａ，Ｂについての状態６１５→状態６１６）は、状態遷移図においてまとめられ、すなわち共通化されている。この共通化により、状態遷移図情報の記憶のために必要な量を、元構造化文書１０９の総個数及び総ノード数の割りに低減することができる。なお、複数個の元構造化文書１０９に重複する状態遷移は、状態遷移図上で必ず共通化されていなければならないとは限定していない。典型的には、選定対抽出手段３０２は、それが認定した選定対に対して、一致性判定手段３０３が一致性無しと判定すると、不一致判定の選定対の元ノードはそのままとしつつ、被利用ノードを遷移順番が次の被利用ノードへ変更して、選定対を更新する。そして、新ノードが状態遷移図のどの元ノードに対しても一致性無しということが判明すると、選定対の新ノードが出現順番が次のものに変更される。
【００８２】
例えば、状態遷移図上の状態遷移が後述の図３１の状態遷移図６００における状態６０１から状態６０２又は状態６０８へのように分岐する場合がある。これに対して、状態遷移機械が状態６０１まで進み、新構造化文書の次のノードが「<y/>」であるとき、「<y/>」の全部を認知してから、該「<y/>」としての新ノードに対応する元ノードが状態６０２か状態６０８かを探すのは、状態遷移図上の分岐先の元ノードが多数になるに連れて、処理時間が膨大になってしまう。そこで、分岐点では、各状態を予めソーティングしておき、新ノードの「<」が出現した時点で（新ノードのバイト列の１番目のバイト又は文字列の１番目の文字が判明した時点で）、すなわち、状態６０２の「text」とは異なることが分かるや、状態６０２は一致性判定の候補から外し、状態６０８だけを一致性判定の候補に絞り、これにより、処理速度を高速化するのが好ましい。これに対処するため、構造化文書処理装置３００の発展型では、状態遷移図情報記憶手段３０１は、状態遷移図情報について、状態遷移の分岐部分では、分岐先の複数個のノードの記述（該記述はバイト列又は文字列）をソーティングして記憶している。また、選定対抽出手段３０２は、分岐先の全部のノードを選定対の元ノードとし、すなわち、選定対では、１個の新ノードに対して元ノードは複数個として、選定対を抽出し、一致性判定手段３０３へ手渡す。一致性判定手段３０３は、１個の新ノードとしてのバイト列又は文字列を最初のバイト又は文字から順に見つつ、各バイト又は各文字に一致する元ノードのみへ一致性判定の候補を順次、絞り込み（この絞込みは元ノードのソーティングのために高速に進むことができる。）、最後まで候補として残った１個の元ノードと、新ノードに対する一致性判定を行う。
【００８３】
被利用構造化文書選択手段３０６が新構造化文書１１０の被利用構造化文書として選定する元構造化文書１０９とは、例えば、状態遷移が状態遷移図における新構造化文書１１０の遷移履歴と最も多く重複する元構造化文書１０９であり、状態遷移が状態遷移図における新構造化文書１１０の遷移履歴と最も多く重複する元構造化文書１０９とは例えば、該遷移履歴上に新構造化文書１１０に対して最も多くの被利用ノードをもつ元構造化文書１０９である。
【００８４】
新構造化文書の新ノードに対応する被利用ノードが被利用構造化文書に存在しない場合には、該新ノードは、被利用構造化文書に対する差分となる。差分と相当する新ノードに係る構文解析結果は、元構造化文書１０９の構文解析結果を利用できないので、もし、該差分に該当する新ノードに係る構文解析結果が必要である場合には、該新ノードは、それ自体を構文解析して、構文解析結果を得る。
【００８５】
こうして、状態遷移機械を使用することにより、新構造化文書１１０の構文解析のために、適切に利用できる構文解析結果をもつ元構造化文書１０９を効率的に見つけ出し、該元構造化文書１０９の構文解析結果を利用して、新構造化文書１１０の構文解析を高速化することができる。
【００８６】
図１４は別の構造化文書処理装置３２０の機能ブロック図である。構造化文書処理装置３２０は、状態遷移図情報記憶手段３０１、選定対抽出手段３０２、一致性判定手段３０３、ノード認定手段３０４、遷移履歴情報生成手段３０５、被利用構造化文書選択手段３０６及び元構造化文書利用手段３０７の他に、元ノード追加手段３２１、状態遷移経路追加手段３２２、属性変数値記憶手段３２６及びテキスト・ノード変数値記憶手段３２７を追加されている。状態遷移図情報記憶手段３０１〜元構造化文書利用手段３０７は、図１３の構造化文書処理装置３００のそれらとほぼ同一である。また、元ノード追加手段３２１、状態遷移経路追加手段３２２、属性変数値記憶手段３２６及びテキスト・ノード変数値記憶手段３２７は、それらの全部が構造化文書処理装置３２０に装備される必要はなく、（ａ）元ノード追加手段３２１と状態遷移経路追加手段３２２だけ、（ｂ）属性変数値記憶手段３２６だけ、（ｃ）テキスト・ノード変数値記憶手段３２７だけ、及び（ａ）〜（ｃ）の任意の組み合わせで構造化文書処理装置３２０に装備することができる。
【００８７】
元ノード追加手段３２１は、状態遷移図上のどの元ノードに選定対関係になっても元ノードとの一致性無しである新ノードとしての第１の新ノードに対し、該第１の新ノードを遷移先として遷移元になる状態遷移関係をもつ元ノードであって状態遷移図上の元ノードから、第１の新ノードへの状態遷移を形成しつつ、第１の新ノードを状態遷移図上に第１の元ノードとして新規に追加する（例：図３０の状態６０８）。構造化文書における先頭からのノードの出現順でノードの先後を定義するとともに、コンテキストとは、内容を一意に把握する対象としてのノードを対象ノードと呼ぶことにして、構造化文書先頭から該対象ノードへの到達前までの構造化文書記述に含まれる記述部分であって、該対象ノードの内容を、該対象ノードの記述自体と協働して、一意に規定する記述部分と定義する。この定義は、後述の構造化文書処理方法３６０においても使用する。一致性判定手段３０３は、第１の新ノードより後ろの新ノードとしての第２の新ノードに対して、該第２の新ノードに係る選定対としての合流判定用選定対では、記述と共にコンテキストに関しても元ノードと新ノードとの一致性を判定する。状態遷移経路追加手段３２２は、合流判定用選定対における第２の新ノード及び第２の元ノードが記述及びコンテキストの両方に関して一致性有りとする判定がなされたときには、第１の元ノードから第２の元ノードへの状態遷移経路を新規に追加する（例：図３１の状態６０８→状態６０３）。
【００８８】
元ノード追加手段３２１等を追加装備した構造化文書処理装置３２０と後述の図１６の構造化文書処理方法３６０とは、発明のカテゴリがそれぞれ装置及び方法と相違するのみで、実質的な技術内容は同一であるので、両者を代表して構造化文書処理装置３２０について説明を行なう。「第１の新ノードより後ろの新ノードとしての第２の新ノード」と限定している理由は、第２の新ノードが第１の新ノードの次の新ノードとは限らないからである。第１の新ノードの次の新ノードは、対応する元ノードが状態遷移図上になく、かつ後述の（ａ）〜（ｃ）等の理由により、状態遷移図に追加されないことがあるからである。
【００８９】
構造化文書処理装置３２０は、記述の観点で、新構造化文書と一致する元構造化文書が状態遷移図上に登録されていないときに、該新構造化文書の構文解析を状態遷移図に追加する機能を有している。これにより、状態遷移図に登録されている元構造化文書を豊富化し、追加登録後は、元構造化文書として追加登録した新構造化文書に類似する新構造化文書を受け付けたときに適切に対処できる。なお、状態遷移図に元ノードとして新ノードを追加される新構造化文書には、適当な条件を付けることが望ましい。条件としては、例えば、構文解析結果について既登録済みの元構造化文書に係る構文解析結果とは十分に相違する新構造化文書であって、今後、類似の新構造化文書の頻繁な到来が予想される新構造化文書であるということである。
【００９０】
元ノード追加手段３２１は、新構造化文書１１０の新ノードが第１の新ノードであれば、必ず、第１の新ノードを状態遷移図に第１の元ノードとして新規に追加するものではない。第１の新ノードであっても、状態遷移図に登録しない方が、すなわち、今後に受け付ける新構造化文書１１０において、該第１の新ノードについては、元構造化文書１０９の被利用ノードに係る構文解析結果を利用せずに、構文解析しても、構文解析の処理速度がさほど低下しないことが予想される場合や、相互にさほど相違しない元構造化文書１０９は状態遷移図にむやみに登録しない方が、処理速度を改善できる場合があるからである。第１の新ノードを登録しない例として次のものが挙げられる。
【００９１】
（ａ）短いＴｅｘｔイベント(例えば４文字より短いもの)
（ｂ）既に状態遷移機械中に多数の重複状態として出現するイベント
（ｃ）規則性に乏しいＰＩ（Processing Information）イベントやＣｏｍｍｅｎｔイベント（ＸＭＬ文書では、<!--〜-->の記述となる。）
【００９２】
状態遷移経路追加手段３２２では、選択対の元ノード及び新ノードの一致性について、記述の観点のみならず、コンテキストの観点からも検査（check）される。コンテキストには、例えば、実体宣言のリスト、現在有効な名前空間、ノードの階層などが含まれる。元ノード及び新ノードの記述が形式的に同一であっても、コンテキストによっては、実質的な内容が同一にならないことがあり、内容の同一を検査するために、コンテキストについての一致性も検査している、コンテキストについての一致性検査により、新構造化文書１１０について、整形式の検査が、状態遷移図上の遷移先の元構造化文書の決定と併せて行われることになり、新構造化文書１１０の構文解析を速めることができる。なお、元ノード追加手段３２１では、コンテキストの観点からの一致性検査が省略されているのは、状態遷移図上の元構造化文書１０９は整形式を保証されており、新構造化文書１１０の状態遷移図が状態遷移図上の元ノードから分岐するまでは、整形式を保証された元ノードを辿っているので、記述のみの一致性があれば、元構造化文書１０９が整形式であることを保証されるからである。
【００９３】
整形式（Well-formed）のＸＭＬ文書を認識する状態遷移機械（オートマトン）を構築するためには、少なくとも実体参照宣言、名前空間宣言及び要素（ノード）の階層をコンテキストにすればよい。しかしながら、コンテキストの定義を緩める(＝より多くの場所で合流ができるようにする)と、状態遷移機械の状態が担っているコンテキストの空間を広げることができる。
【００９４】
状態遷移図情報は例えば辞書で管理されるのが好ましい。「×」を直積演算記号として、項目１（ノードの記述）×項目２（該ノードのコンテキスト）→状態とする。辞書では、状態を登録するとともに、項目１，２に基づき状態を引くことができるようになっている。例えば、一致性判定手段３０３は、一致性検定手段を内蔵し、一致性検定手段は、第２の新ノードに対して、その記述及びコンテキストを項目として辞書を引き、辞書における状態（ノード）の有無を調べることができるように、なっている。状態が辞書に存在していれば、一致性判定手段３０３における判定は一致性有りとされる。こうして、第２の元ノードの検索を高速化できる。また、これに対応して、元ノード追加手段３２１は、元ノードを状態遷移図上に追加する際は、該追加の処理と共に、該追加した元ノードを項目１，２を使用して辞書から探し出せるように辞書に該元ノードを登録する。
【００９５】
属性変数値記憶手段３２６を追加装備した構造化文書処理装置３２０と後述の図１７の構造化文書処理方法３８０（特にＳ３８４及びＳ３８５の範囲）とは、発明のカテゴリがそれぞれ装置及び方法と相違するのみで、実質的な技術内容は同一であるので、両者を代表して構造化文書処理装置３２０について説明を行なう。属性変数値記憶手段３２６を装備する構造化文書処理装置３２０は、選定対における元ノード及び新ノードが、完全一致でなく、多少相違していても、一致性有りと判断して、被利用構造化文書の元構造化文書１０９の解析済みの構文解析結果を新構造化文書１１０の構文解析に利用することかできる。
【００９６】
図１３の構造化文書処理装置３００に対する属性変数値記憶手段３２６付き構造化文書処理装置３２０の相違点について述べる。状態遷移図情報記憶手段３０１が記憶する状態遷移図情報では、状態遷移図上の所定の元ノードは、所定の属性を属性変数とする属性変数付き元ノードに設定されている。一致性判定手段３０３は、選定対における元ノードが属性変数付き元ノードであり、かつ選定対における元ノード及び新ノードの要素名及び属性名が同一であるとき、選定対における元ノード及び新ノードの一致性が有りとする。属性変数値記憶手段３２６は、一致性有りの選定対に対し、該選定対の元ノードが属性変数付き元ノードであるとき、選定対の新ノードの属性値を属性変数値として記憶する。元構造化文書利用手段３０７は、新構造化文書１１０の新ノードに係る構文解析結果として、該新構造化文書１１０の被利用構造化文書のノードであって該新構造化文書１１０の新ノードの被利用ノードに係る構文解析結果を使用する場合に、被利用ノードが属性変数付き元ノードであるとき、新構造化文書１１０の新ノードの被利用ノードに係る構文解析結果における属性変数に、属性変数値を代入した構文解析結果を、新構造化文書１１０の新ノードの被利用ノードに係る構文解析結果として使用する。
【００９７】
ノードの属性値の関数化については、後述の図４３及び図４５に詳細に説明するとおりである。具体的には、状態遷移図上の属性変数付き元ノードには、属性変数（図４３の例では属性名URIの属性変数$some−variable）が設定され、状態遷移図上の属性変数付き元ノードに対して一致性有りの選定対関係にある新構造化文書１１０の新ノードの属性値（図４３の例では、#myBody）が属性変数に対応付けられて記憶される。新構造化文書１１０の被利用構造化文書となった元構造化文書１０９に対し、元構造化文書１０９の属性変数付き元ノードに係る構文解析結果の属性変数の該当位置に、新ノードの属性値（図４３の例では、#myBody）が代入され、該新ノードに係る構文解析結果とされる。
【００９８】
テキスト・ノード変数値記憶手段３２７を追加装備した構造化文書処理装置３２０と後述の図１７の構造化文書処理方法３８０（特にＳ３８８及びＳ３８９の範囲）とは、発明のカテゴリがそれぞれ装置及び方法と相違するのみで、実質的な技術内容は同一であるので、両者を代表して構造化文書処理装置３２０について説明を行なう。テキスト・ノード変数値記憶手段３２７を装備する構造化文書処理装置３２０は、選定対における元ノード及び新ノードが、共にテキスト・ノードであるものの、内容についてはまったく相違していても、一致性有りと判断して、被利用構造化文書の元構造化文書１０９の解析済みの構文解析結果を新構造化文書１１０の構文解析に利用する。
【００９９】
図１３の構造化文書処理装置３００に対するテキスト・ノード変数値記憶手段３２７付き構造化文書処理装置３２０の相違点について述べる。状態遷移図情報記憶手段３０１は、状態遷移図上の所定のテキスト・ノードとしての元ノードはテキスト・ノード変数に設定されている。一致性判定手段３０３は、選定対における元ノード及び新ノードがそれぞれテキスト・ノード変数及びテキスト・ノードであるとき、元ノード及び新ノードの一致性が有りとする。テキスト・ノード変数値記憶手段３２７は、一致性有りの選定対に対し、該選定対の元ノードがテキスト・ノード変数であるとき、選定対の新ノードのテキストをテキスト・ノード変数値として記憶する。元構造化文書利用手段３０７は、新構造化文書１１０の新ノードに係る構文解析結果として、該新構造化文書１１０の被利用構造化文書のノードであって該新構造化文書１１０の新ノードの被利用ノードに係る構文解析結果を使用する場合に、被利用ノードがテキスト・ノード変数であるとき、新構造化文書１１０の新ノードの被利用ノードに係る構文解析結果におけるテキスト・ノード変数にテキスト・ノード変数値を代入した構文解析結果を、新構造化文書１１０の新ノードの被利用ノードに係る構文解析結果として使用する。
【０１００】
テキスト・ノードの関数化については、後述の図４４及び図４５に詳細に説明するとおりである。具体的には、状態遷移図上の所定のテキスト・ノードには、テキスト・ノード変数（図４４の例ではテキスト・ノード変数$some−variableが設定され、状態遷移図上のテキスト・ノード変数に対して一致性有りの選定対関係にある新構造化文書１１０の新ノードのテキスト内容（図ａ４４の例では、EULddytSo1...）がテキスト・ノード変数に対応付けられて記憶される。新構造化文書１１０の被利用構造化文書となった元構造化文書１０９に対し、そのテキスト・ノード変数に対応付けられて記憶されている新構造化文書１１０のテキスト内容があるとき、被利用構造化文書としての元構造化文書１０９におけるテキスト・ノード変数の箇所に、テキスト内容EULddytSo1...が代入されて、該属性変数付き元ノードに係る構文解析結果が新構造化文書１１０の新ノードに係る構文解析結果として利用される。
【０１０１】
ＳＯＡＰメッセージ、特にＷＳ−Ｓｅｃｕｒｉｔｙ付きＳＯＡＰメッセージの構文解析処理への構造化文書処理装置３２０の適用では、各元構造化文書はそれぞれテンプレート化（図４０）されているのが好ましい。また、構造化文書処理装置３２０は、また、遷移履歴の各遷移履歴部分に対応するモジュールであってＷＳ−Ｓｅｃｕｒｉｔｙの処理に必要なモジュール（図４６のトークン・コンシューマ７０３及び署名コンシューマ７０４，暗号コンシューマ７０５）を呼び出して、各モジュールに新構造化文書としてのＳＯＡＰメッセージのメッセージ部分の構文解析についての処理を任せる。テープレートは、各モジュール専用に複数、用意され、モジュールごとに適切な１個のテンプレートが選択される。トークン・コンシューマ７０３と署名コンシューマ７０４とは、テンプレートの使用に当たり、ＳＯＡＰメッセージのモジュール該当部分の正規化が行なわれる。正規化とは、名前空間宣言の追加、属性の並べ替えである（正規化の具体的処理は図４７及び図４８に関連して後述する。）。すなわち、構造化文書処理装置３２０は、新構造化文書としてのＳＯＡＰメッセージの構文解析を省略できる元構造化文書としての（非正規化）テンプレートの他に、それら（非正規化）テンプレートに対応する正規化されたテンプレート（例：図４７のテンプレート７４５）を用意して、正規化されたテンプレートのブランク部に、ＳＯＡＰメッセージから抽出した属性値やテキスト・ノード変数値を書き込み、その後、ダイジェスト値等を算出する。
【０１０２】
構造化文書処理装置３２０では、さらに、ＷＳ−Ｓｅｃｕｒｉｔｙ付きＳＯＡＰメッセージを復号化したデータ用にテンプレートを用意し、状態遷移機械することができる（詳説は図４９に関連して後述する。）。すなわち、コンテンツ部（図４９のテンプレート内の$contents）をテキスト・ノード変数とし、その他のノードは構文解析済みとしている復号データ用テンプレートが用意され、復号したＳＯＡＰメッセージ（ＸＭＬ文書）に基づき、復号したコンテンツ値を抽出するとともに、状態繊維機械を用いて所望の復号データ用テンプレートを選択し、該選択した復号データ用テンプレートのコンテンツ部にコンテンツ値を代入する。
【０１０３】
図１５は構造化文書処理方法３４０のフローチャートである。Ｓ３４２（状態遷移図情報記憶ステップ）では、各元構造化文書が、構造区分に係る複数個のノードとしての複数個の元ノードに区分化可能となっている複数個の元構造化文書に対し、各元構造化文書の元ノードが元構造化文書における先頭からの出現順に遷移する状態遷移図に係る情報を状態遷移図情報として記憶する。Ｓ３４２では、また、複数の元構造化文書に重複する状態遷移は状態遷移図上においてを共通化された状態遷移となっている。Ｓ３４３（選定対抽出ステップ）では、構造区分に係る複数個のノードとしての複数個の新ノードに区分化可能となっている新構造化文書に対し、新構造化文書における先頭からの新ノードの出現順及び状態遷移図におけるノード遷移順に従い、それぞれ新構造化文書及び状態遷移図において相互に対応する新ノード及び元ノードの対を選定対として抽出する。Ｓ３４４（一致性判定ステップ）では、選定対の元ノード及び新ノードに対し、それらの一致性の有無をそれらの記述に基づき判定する。Ｓ３４５（ノード認定ステップ）では、一致性有りの判定のときには選定対の元ノード及び新ノードに対し該元ノードを該新ノードの被利用ノードに認定する。
【０１０４】
Ｓ３４６では、一致性判定を終了するか否かを判定し、終了するならば、Ｓ３４７へ進み、続行するならば、Ｓ３４３へ戻る。Ｓ３４６において一致性判定を終了するときとは、例えば、（ａ）新構造化文書１１０の全部の新ノードについて一致性判定が終了したとき、（ｂ）今回の新構造化文書１１０が、特異であって、状態遷移図上に一致性のある元ノードが見つからない新ノードの個数が閾値以上となったときである。（ｂ）の場合には、今回の新構造化文書１１０における不一致の新ノードについては、後述の構造化文書処理方法３６０のように、状態遷移図上に元ノードとして追加してもよい。
【０１０５】
Ｓ３４７（遷移履歴情報生成ステップ）では、状態遷移図上の複数個の被利用ノードを遷移順に進む遷移履歴に係る情報を遷移履歴情報として生成する。Ｓ３４８（被利用構造化文書選択ステップ）では、遷移履歴情報に基づき１個の元構造化文書を新構造化文書の被利用構造化文書として選択する。Ｓ３４９（元構造化文書利用ステップ）では、新構造化文書の新ノードに係る構文解析結果として、該新構造化文書の被利用構造化文書における新ノードの被利用ノードに係る構文解析結果を利用する。
【０１０６】
図１６は構造化文書処理方法３６０の主要部のフローチャートである。構造化文書処理方法３６０において、Ｓ３４２以前のステップ及びＳ３４７以後のステップは、図１５の構造化文書処理方法３４０のステップと同一であり、図示を省略している。構造化文書処理方法３４０との相違点について説明する。
【０１０７】
構造化文書処理方法３６０において、Ｓ３６５（元ノード追加ステップ）では、状態遷移図上のどの元ノードに選定対関係になっても元ノードとの一致性無しである新ノードとしての第１の新ノードに対し、該第１の新ノードを遷移先として遷移元になる状態遷移関係をもつ元ノードであって状態遷移図上の元ノードから、第１の新ノードへの状態遷移を形成しつつ、第１の新ノードを状態遷移図上に第１の元ノードとして新規に追加する。Ｓ３４４（一致性判定ステップ）のＳ３６７では、第１の新ノードより後ろの新ノードとしての第２の新ノードに対して、該第２の新ノードに係る選定対としての合流判定用選定対では、記述と共にコンテキストに関しても元ノードと新ノードとの一致性を判定する。Ｓ３６８（状態遷移経路追加ステップ）では、合流判定用選定対における第２の新ノード及び第２の元ノードが記述及びコンテキストの両方に関して一致性有りとする判定がなされたときには（Ｓ３６７の判定結果が正）、第１の元ノードから第２の元ノードへの状態遷移経路を新規に追加する。
【０１０８】
図１６では、構造化文書処理方法３６０におけるＳ３４４の中身の詳細及びＳ３６８等の進行経路が示されている。Ｓ３６１，Ｓ３６２，Ｓ３６７はＳ３４４のサブステップとなっている。また、Ｓ３６５の処理後は、Ｓ３４３へ戻る。Ｓ３６８の処理後は、Ｓ３４３へ戻る。Ｓ３６７における判定が否であれば、Ｓ３６５へ進み、Ｓ３６７における新ノードを第１の元ノードとして状態遷移図に追加される。Ｓ３６７における判定が否であるとき、Ｓ３６５ではなく、Ｓ３４３へ戻ることもできる。Ｓ３６５，Ｓ３６８を有しない構造化文書処理方法３４０（図１５）のＳ３４４は、その中身がＳ３６２のみであると考えることができる。Ｓ３６２では、選定対の元ノード及び新ノードは記述のみの観点から一致性が判定される。
【０１０９】
図１７は構造化文書処理方法３８０のフローチャートである。構造化文書処理方法３４０（図１５）のステップと同一のステップは、構造化文書処理方法３４０のステップと同一のステップ番号で指示している。構造化文書処理方法３８０において、構造化文書処理方法３４０のステップに対して処理内容を具体化又は付加したステップについては、構造化文書処理方法３４０のステップのステップ番号に”ｂ”を添えた番号で指示している。構造化文書処理方法３４０に対する構造化文書処理方法３８０の相違点について説明する。構造化文書処理方法３８０では、構造化文書処理方法３４０に対して、Ｓ３８４，Ｓ３８５，Ｓ３８８，Ｓ３８９が追加されているが、（ａ）Ｓ３８４，３８５のみの追加、又は（ｂ）Ｓ３８８，Ｓ３８９のみの追加であってもよい。
【０１１０】
所定の要素名における所定の属性値の相違は一致性の範囲とする構造化文書処理方法３８０において、Ｓ３４１ｂ（状態遷移図情報記憶ステップ）では、状態遷移図上の所定の元ノードは、所定の属性を属性変数とする属性変数付き元ノードに設定されている。Ｓ３４３ｂ（一致性判定ステップ）では、選定対における元ノードが属性変数付き元ノードであり、かつ選定対における元ノード及び新ノードの要素名及び属性名が同一であるとき、選定対における元ノード及び新ノードの一致性が有りとする。Ｓ３８５（属性変数値記憶ステップ）では、一致性有りの選定対に対し、該選定対の元ノードが属性変数付き元ノードであるとき（Ｓ３８４）、選定対の新ノードの属性値を属性変数値として記憶する。Ｓ３４９ｂ（元構造化文書利用ステップ）では、新構造化文書の新ノードに係る構文解析結果として、該新構造化文書の被利用構造化文書のノードであって該新構造化文書の新ノードの被利用ノードに係る構文解析結果を使用する場合に、被利用ノードが属性変数付き元ノードであるとき、新構造化文書の新ノードの被利用ノードに係る構文解析結果における属性変数に、属性変数値を代入した構文解析結果を、新構造化文書の新ノードの被利用ノードに係る構文解析結果として使用する。
【０１１１】
所定のテキスト・ノードのテキストの相違は一致性の範囲とする構造化文書処理方法３８０において、Ｓ３４１ｂ（状態遷移図情報記憶ステップ）では、状態遷移図上の所定のテキスト・ノードとしての元ノードはテキスト・ノード変数に設定されている。Ｓ３４３ｂ（一致性判定ステップ）では、選定対における元ノード及び新ノードがそれぞれテキスト・ノード変数及びテキスト・ノードであるとき、元ノード及び新ノードの一致性が有りとする。Ｓ３８９（テキスト・ノード変数値記憶ステップ）では、一致性有りの選定対に対し、該選定対の元ノードがテキスト・ノード変数であるとき（Ｓ３８８）、選定対の新ノードのテキストをテキスト・ノード変数値として記憶する。Ｓ３４９ｂ（元構造化文書利用ステップ）では、新構造化文書の新ノードに係る構文解析結果として、該新構造化文書の被利用構造化文書のノードであって該新構造化文書の新ノードの被利用ノードに係る構文解析結果を使用する場合に、被利用ノードがテキスト・ノード変数であるとき、新構造化文書の新ノードの被利用ノードに係る構文解析結果を、新ノードのテキスト・ノード変数値とする。
【実施例１】
【０１１２】
実施例１では、元構造化文書と新構造化文書とは、構造に係る区分としての構造区分（例えばノード）同士で対比される場合において、元構造化文書の状態遷移図を利用することなく、記述内容としてのバイト列又は文字を直接、対比される。すなわち、新構造化文書の構造区分のバイト列又は文字は、元構造化文書の対応する構造区分のバイト列又は文字列と対比され、この対比に基づき新構造化文書の各構造区分の解析結果として、利用できる元構造化文書の構造区分の有無が調べられる。なお、実施例１において、構造化文書としてＸＭＬが採用されている。
【０１１３】
ＸＭＬ文書の構文解析は大きな計算時間を必要とする。大量のＸＭＬ文書を処理するシステムではこの負荷を軽減することが求められている。 ＸＭＬ文書は、人間が書きやすく読みやすい形式であり、その性質から機械が読み書きする形式の構文としては冗長性が非常に高い。冗長性が高いことによって生じる具体的な負荷は次のようなものである。
（ａ）文字コードの復号化のステップにおいて、ＸＭＬの文法はUnicodeの文字セットを用いて記述されているため、それぞれの文字コード（ASCII、ISO-8859-1、UTF-8、Shift-JIS など）をUnicodeのどの文字に当たるかを復号化する必要がある。
（ｂ）字句解析及び構文解析のステップでは、ＸＭＬ文書の文字列に対して、タグを認識し、それぞれの要素名や属性名、属性値、テキスト・ノードの文字列などがそこで用いて良い文字集合以外の文字を使っていないか、などＸＭＬの生成規則に照らして構文が間違っていないかの検査が行われる。
（ｃ）整形式の検査では開始タグと終了タグの名前が一致しているか、一つの要素に同じ名前の属性名が2つ以上存在しないか、などが確かめられる。
（ｄ）名前空間の処理では名前空間の宣言を認識し、それぞれの要素、属性の接頭辞から名前空間のURIをバインドする、また、宣言されていない接頭辞が使われていないか検査する必要がある。
【０１１４】
ＸＭＬでは同様のことは様々なバイト列、文字列で表すことができるが、実際に流通しているバイト列や文字列は似通っている。特にＸＭＬのＷｅｂサービスなどの場合、その傾向は顕著である。ＸＭＬ文書はアプリケーション・プログラムによって生成されるが、アプリケーション・プログラムはＸＭＬでエンコードされたメッセージを生成する処理はライブラリやアプリケーション・サーバなどのミドルウェアに任されていることが多い。したがって、同じライブラリによって生成された同様の内容のＸＭＬ文書のバイト列や文字列は似通ってくる。ＸＭＬ文書の従来の構文解析では、このような類似性を利用してこなかったのに対し、本発明はこのような類似性を活用するを着眼している。
【０１１５】
本発明によるＸＭＬ構文解析器において、１回目のＸＭＬ文書の処理では既存のＸＭＬ構文解析器と同様の構文解析を行い、それに加えてバイト列（又は文字列）としてそのＸＭＬ文書を所定の記憶装置に保存する。
【０１１６】
図１８はＸＭＬ文書の構文解析結果を保存するデータ構造を示している。図１８はＵＭＬ（Unified Modeling Language）のクラス図に準拠した表記形式で記載されている。ＸＭＬ文書の構文解析結果は、該クラス図に基づくデータ構造としてのイベントに分解されて、所定の記憶装置に保存される。本発明では、ＸＭＬ文書を所定の構造区分により区分化するが、該区分化は例えば、図１８のクラス図のツリー構造においてリーフの位置にあるクラスのイベントに基づき行なわれる。該クラス図において、定義されているイベントは、ＳＡＸ（Simple API for XML）で定義されているイベントとは完全に一致させてもよいが、適宜変更することも可能である。元ＸＭＬ文書の構文解析結果を新ＸＭＬ文書の構文解析に効率的に利用するために、ＳＡＸで定義されているイベントとは別に新たに追加したり、ＳＡＸで定義されている複数個のイベントを１個に統合したりすることも可能である。
【０１１７】
図１９はイベントとＸＭＬ文書の構文解析結果との対応関係を示すマッピング・オブジェクト図である。該オブジェクト図もＵＭＬの表記形式に準拠している。
【０１１８】
構文解析結果の記録では、解析結果であるすべてのイベントを記録し、それぞれのイベント位置、つまりＸＭＬ文書の何バイト目（何文字目）から何バイト目（何文字目）の部分に当たるかを記録する。
【０１１９】
差分抽出（差分抽出のアルゴリズムと差分保存のデータ構造）について説明する。ＸＭＬ文書についての２回目以降の処理では、まず保存されている構文解析済みのＸＭＬ文書との比較処理を行う。この比較処理にはバイト単位（あるいは文字単位）の差分を計算する。ここでの差分計算では計算時間の効率的なものが求められる。この差分計算には既存のさまざまなアルゴリズムを用いることが可能であるが、本発明ではＸＭＬ構文解析器に特化した効率的な差分生成を行う。
【０１２０】
あらかじめある閾値を決めておき、差分計算の途中でもその時点での差分の大きさがその閾値を越えた場合に類似性が低いと判断し処理を打ち切る。本来厳密に差分を計算する場合、比較する文書の長さをＮとすると最悪の場合Ｎの二乗オーダーの比較回数が必要である。しかし、比較する2つの文書がほとんど同じである場合、その比較回数は非常に少なくなる。例えばＭ(M<<N)の長さ以上の差分がない場合には、比較回数は最悪でもＭの二乗のオーダーとなる。このように非常に類似性が高いもののみを対象にすることで効率化が可能である。本発明における差分計算は非常に類似性が高いもののみを取り出すことを目的としている。
【０１２１】
図２０は差分を取る際に、差分量が閾値を越えていないかどうかを判定するルーチンのフローチャートである。まず、Ｓ４０１において、現在位置（両ＸＭＬ文書の現在の対比位置）が両ＸＭＬ文書の末尾に到達したか否かを判定し、判定が正なら、該ルーチンを終了し、否であれば、Ｓ４０２へ進む。Ｓ４０２では、両ＸＭＬ文書において、現在位置に係る区分の内容が相互に一致するか否かを判定する。Ｓ４０２の判定が正であれば、Ｓ４０３へ進み、否であればＳ４０４へ進む。Ｓ４０３では、両ＸＭＬ文書において、現在位置を次の区分の先頭へ進める。Ｓ４０４では、両ＸＭＬ文書の差分を抽出する。Ｓ４０５では、差分の量を計算し、該計算した差分量が所定の閾値を越えていないかを判定する。差分量の計算は、例えば、更新前の差分量と、Ｓ４０４で計算した区分の差分に係る量との和を更新後の差分量とするものである。例えば、差分量の初期値を０とし、Ｓ４０２の判定が否となるごとに、差分量を１ずつインクリメントするように、差分量を計算することもできる。Ｓ４０５の判定が正であれば、該ルーチンを終了し、否であれば、Ｓ４０６へ進む。Ｓ４０６では、両ＸＭＬ文書において現在位置を差分抽出区分だけそれぞれ文書末尾の方へ進め、Ｓ４０１へ戻る。
【０１２２】
実際に差分を抽出する際は、ＸＭＬの構造を認識しながら行う。具体的には、ＸＭＬ文書の内容が食い違ったところで、対応する解析済みのイベントを取り出し、そのイベントの開始点から新しい文書に対して部分的にパースを行う。このパース結果によってその後の処理が分かれる。
【０１２３】
図２１は元ＸＭＬ文書と新ＸＭＬ文書とのイベントが相違したときのパース処理ルーチンのフローチャートである。元ＸＭＬ文書ｃ１と新ＸＭＬ文書ｃ２との一致・不一致の判定における対比単位は、１バイト又は１文字とされ、ｃ１において、不一致の対比単位が属するイベントｅｖ１を抽出する（Ｓ４１１）。次に、ｃ２において、ｃ１のｅｖ１の開始点に対応する位置から１イベント分、ｃ２をパースする。この時に、パースが行なわれたｃ２のイベントをｅｖ２と呼ぶことにする。ｅｖ２のパースにより、ｃ２が整形式であるか非整形式であるかも判明する。Ｓ４１５において、ｃ２が整形式であると判定された場合には、Ｓ４１８へ進み、ｃ２が非整形式であると判定された場合には、Ｓ４１６へ進む。Ｓ４１６では、アプリケーション・プログラムへイベントの通知に代えて、ｃ２が非整形式である旨の通知を行って、該ルーチンを終了する。
【０１２４】
Ｓ４１８以降は、ｅｖ１，ｅｖ２の内容によって、処理は以下のように場合分けされる。
【０１２５】
（１）ｅｖ２がDT(Document Type：文書タイプ)であり、しかも、ｅｖ１がｅｖ２と同一のイベントではない場合（Ｓ４１８→Ｓ４１９）：DTは文書全体に対して実体参照に影響を与えるので、この部分が変更されていた場合にはすべて通常のパースを行う（Ｓ４１９）。
（２）ｅｖ１がEndElementの場合（Ｓ４２２→Ｓ４２３）：この場合、新文書が整形式であるならば、かならず（ＸＭＬ文書のツリー構造における）同一の深さでｅｖ１と同一のEndElementが出現するはずなので、深さが同一でｅｖ１とｅｖ２が一致するところまで新文書に対して部分パースを行い（Ｓ４２３）、生成されたイベント列を差分イベント列（具体的には、後述の図２４のＳ４７１で説明するevidiff[j]の部分イベント列のこと）とする。
【０１２６】
（３）イベントの種類が同一である場合（Ｓ４２５の判定が正）：単にイベントというと、ＳＡＸで定義されているイベントに限定される虞があるので、ここで、イベントの種類を定義する。イベントの種類とは、図１８のクラス図におけるリーフに相当するイベントのことである。前述したように、該リーフに相当するイベントは、ＳＡＸのイベントとは厳密に一致させる必要がなく、元ＸＭＬ文書の構文解析結果としてのイベントを十分に利用したり、出現頻度の少ないイベントをまとめることにより、処理時間を速めたりするために、ＳＡＸのイベントの他に、イベントを適宜追加したり、ＳＡＸの複数個のイベントを１個に統合したりしたイベントを含むものである。
（３−１）ｅｖ２がStartElementであり、ｅｖ１，ｅｖ２の名前空間宣言が相互に異なるとき（Ｓ４２５→Ｓ４２６→Ｓ４２７）：
［具体例］
元ＸＭＬ文書:<a xmlns="ns1"> <b/> </a>
新ＸＭＬ文書:<a xmlns="ns2"> <b/> </a>
この場合には要素中にあるQNameがすべて異なる可能性があるので、要素内をすべてパースする（Ｓ４２７）。(部分木の解析)
（３−２） それ以外のとき（Ｓ４２５→Ｓ４２６→Ｓ４２８）：ｅｖ１とｅｖ２とで、非局所的に影響が異なるものは何もないので、ｅｖ２をｅｖ１の差分として採用する（Ｓ４２８）。
【０１２７】
（４）イベントの種類が異なる場合（Ｓ４２５の判定が否）：
（４−１） ｅｖ２がStartElementであるとき（Ｓ４３１→Ｓ４２７）：（３−１）と同様にｅｖ２に対応する要素をパースする（Ｓ４２７）。結果は差分として採用する。
［具体例］
元ＸＭＬ文書:<a> <b/> </a>
新ＸＭＬ文書:<a> <b> test </b> </a>
（４−２） それ以外のとき（Ｓ４３１→Ｓ４２８）：ｅｖ２は非局所的に影響を与えないので、ｅｖ２を差分として採用する（Ｓ４２８）。
【０１２８】
このようにして差分量を計算し、差分量がある決められた閾値よりも大きくなった場合には処理を切り替える。差分量に応じて、新ＸＭＬ文書に対する処理は次のように場合分けされる。
（ａ）差分が十分に小さい比較対象のＸＭＬ文書が見つかった場合：生成された差分を元に、元のイベント列とマージし、アプリケーション・プログラムに通知する。この場合、生成済みイベントのほとんどが再利用されることが期待される。
（ｂ）差分が十分に小さい比較対象のＸＭＬ文書が見つからなかった場合：差分による構文解析はあきらめ、１回目のＸＭＬ文書の解析と同じように、既存のＸＭＬ構文解析器と同様の構文解析を行い、それに加えてバイト列（又は文字列）としてそのＸＭＬ文書を保存し、構文解析結果を記録する。これによってこのＸＭＬ文書も以降の構文解析の比較対象に加えられ、以後このＸＭＬ文書に対し類似性の高い文書の構文解析も効率化することができる。
【０１２９】
図２２は差分量に基づくＸＭＬ文書の処理に係るルーチンのフローチャートである。元ＸＭＬ文書及び新ＸＭＬ文書の対応構造区分同士について一致及び不一致が検査され、元ＸＭＬ文書に対する新ＸＭＬ文書の差分量が計算される（Ｓ４３５）。差分量が閾値を越えると、又は元ＸＭＬ文書と新ＸＭＬ文書との全部の対応構造区分同士の一致及び不一致の検査が終了すると、Ｓ４３６において、差分量が閾値を越えているか否かの判定が行なわれ、判定が否であれば、Ｓ４３７へ進み、また、判定が正であれば、Ｓ４３８へ進む。Ｓ４３７では、元ＸＭＬ文書の構文解析結果を利用した通知がアプリケーション・プログラムへ行われる。Ｓ４３８では、新ＸＭＬ文書について通常の構文解析、すなわち、構文解析を、その文書先頭から又は元構文解析の構文解析結果の利用を断念したイベントから、文書末尾まで、構文解析する処理を実施する。Ｓ４３９では、新ＸＭＬ文書について、Ｓ４３８の構文解析結果を記憶装置に保存する。こうして、新ＸＭＬ文書は、以降、元ＸＭＬ文書としての役割を果たす。図２３は最終的な差分情報を表現したクラス図である。
【０１３０】
図２４は新ＸＭＬ文書についての構文解析結果生成（リプレイ）に係るフローチャートである。SAXとして動作する場合には、解析済みのＸＭＬ文書のイベント列をSAXイベントに変換しながら、順に再通知し、差分があるイベントに関してはそのイベントを差分と合成し、アプリケーション・プログラムに通知する。図２４において、表記はオブジェクト指向型の言語、例えばＪａｖａ（登録商標）の規定に従っている。すなわち「.」はインスタンスのメソドを表す。「.length」は配列の長さを返す。配列は0から(*.length-1)まで定義される。Ｓ４６０では、配列events1[ ]には、元ＸＭＬ文書のイベント列を代入し、配列evdiff[ ]には 新ＸＭＬ文書の差分に係るイベント列を代入し、i及びjには初期値として０を代入する。１６１において、新ＸＭＬ文書に関して全部のイベントの通知が終了したか否かを検査し、未終了であれば、Ｓ４６２以降へ進む。Ｓ４６２において、新ＸＭＬ文書の現在の差分（evdiff[j]）が元ＸＭＬ文書の現在のイベント（events[i]）に対応しているか、すなわち、現在のevdiff[j]が現在のevents[i]に代替されるべきものであるかを調べ、また、現在のevdiff[j]が配列evdiff[ ]内であるかを調べ、共に正であるならば、Ｓ４７０へ進み、いずれか一方が否であるならば、Ｓ４６３へ進む。
【０１３１】
Ｓ４６２の判定が否であるならば、現在のevents1[i]をアプリケーション・プログラムへ通知して（Ｓ４６３，Ｓ４６４）、iをインクリメントして（Ｓ４６５）、Ｓ４６１へ戻る。
【０１３２】
Ｓ４６２の判定が正であるならば、kに０を代入してする（Ｓ４７０）。各evdiff[j}には、その部分イベント配列event_j_sub[k]が対応付けられており、該event_j_sub[k]は、新ＸＭＬ文書においてevent[j]に対応して新規に構文解析して得たイベントに対応している。こうして、現在のevdiff[j}に対応する部分イベント列event_j_sub[k]の各々をアプリケーション・プログラムへ通知する（Ｓ４７１→Ｓ４７２→Ｓ４７３→Ｓ４７４→Ｓ４７１・・・）。通知対象の部分イベント列に対応する通知が終了すると、iをevdiff[j]に対応する、evetnts[]の長さ分だけインクリメントし（Ｓ４７９）、さらに、jをインクリメントし（Ｓ４８０）、Ｓ４６１へ戻る。
【０１３３】
さらに、具体的に説明する。
［実施例１の構文解析処理例１］
１回目に以下のようなＸＭＬ文書を元ＸＭＬ文書として構文解析したとする。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas．xmlsoap．org/soap/envelope/" xmlns:xsi="http://www．w3．org/1999/XMLSchema-instance" xmlns:xsd="http://www．w3．org/1999/XMLSchema">
<SOAP-ENV:Body>
<ns1:doGetCachedPage xmlns:ns1="urn:GoogleSearch" 
SOAP-ENV:encodingStyle="http://schemas．xmlsoap．org/soap/encoding/">
<key xsi:type="xsd:string">00000000000000000000000000000000</key>
<url xsi:type="xsd:string">http://www．google．com/</url>
</ns1:doGetCachedPage>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
【０１３４】
この時保存される解析結果は以下のようになる。
00: Start Document: (0, 0), -
01: Start Element: (0, 88), "SOAP-ENV:Envelope" ..
..(省略)..
12: Characters: (777, 22), "http://www．google．com/"
..(省略)..
20: End Document: (2109, 0), -
【０１３５】
例えば、12行の(777, 22)とは、"http://www．google．com/"の先頭の"h"が元ＸＭＬ文書の最初の文字から777番目にあり、"http://www．google．com/"の合計文字数は22個であることを意味している。
【０１３６】
次に以下のようなＸＭＬ文書を新ＸＭＬ文書として構文解析する場合を考える、
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas．xmlsoap．org/soap/envelope/" xmlns:xsi="http://www．w3．org/1999/XMLSchema-instance" xmlns:xsd="http://www．w3．org/1999/XMLSchema">
<SOAP-ENV:Body>
<ns1:doGetCachedPage xmlns:ns1="http://www.yahoo.com/"
SOAP-ENV:encodingStyle="http://schemas．xmlsoap．org/soap/encoding/">
<key xsi:type="xsd:string">00000000000000000000000000000000</key>
<url xsi:type="xsd:string">http://www．yahoo．com/</url>
</ns1:doGetCachedPage>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
【０１３７】
新ＸＭＬ文書では、元ＸＭＬ文書の「http://www.google.com/」が「http://www.yahoo.com/」に変わっているだけである。
【０１３８】
差分抽出：
このとき、本発明の処理系は、解析済みの文書と比較していって、787文字目まで（http://www.yahoo.com/のうちhttp://www.まで）は一致していることを確認し、788文字目が異なっている（解析済みＸＭＬ文書では「g」、新ＸＭＬ文書では「y」）ことを発見する。
【０１３９】
保存されている処理結果から、777文字目からの22文字に含まれる788文字目は、テキスト・ノード（Characters）中にあることが分かる。新規文書の777文字目から、テキスト・ノードとして部分ＸＭＬ文書解析を行い、798文字目（「</url>」の先頭）まで進む。部分ＸＭＬ文書解析により得られたテキスト・ノード「http://www.yahoo.com」を、解析済み文書中のテキスト・ノード「http://www.google.com/」の代替であるとして記憶し、差分量変数を０から１にする。
【０１４０】
差分量が閾値を越えていないため、バイト列比較を続ける。解析済み文書の799文字目（次のイベントの始まり）と、新規文書の798文字目から、一致していることを確認していく。両者の終わりまで一致していることを確認し、差分抽出処理を終える。
【０１４１】
これによって得られた差分結果を以下に示す。
Offset 12 length 1 => length 1
< Characters "http://www.google.com/"
> Characters "http://www.yahoo.com/"
【０１４２】
「Offset 12 length 1 => length 1」において、「Offset 12」は元ＸＭＬ文書における前述解析結果の12行目を意味し、新ＸＭＬ文書では、元ＸＭＬ文書の解析結果の12行目が変更されて、元ＸＭＬ文書における12行目の１個（「=>」の左のlength 1）のイベントが、新ＸＭＬ文書の１個（「 =>」の右のlength 1）のイベントと置き換えられていることを意味している。
【０１４３】
結果生成：
SAXイベントとして、0番目から11番目までは、解析済みの文書のものを利用する。12番目のイベントは新規に部分処理したテキスト・ノード「http://www.yahoo.com/」を用いる。13番目から20番目は、解析済みの文書のものを利用する。
【０１４４】
［実施例１の構文解析処理例２］
次の例として、以下の文章が既に解析済みであったとする。
<aaa>
<bbb xxx="xxx"/>
</aaa>
【０１４５】
この時保存されている解析結果は以下のようになっている。
00: Start Document: (0, 0), -
01: Start Element: (0, 5), "aaa"
02: Characters: (5, 3), "\n  "
03: Empty Element: (8, 16), "bbb", [Attribute Name "xxx", Value "xxx"]
04: Characters: (24, 1), "\n"
05: End Element: (25, 6), "aaa"
06: End Document: (31, 0), -
【０１４６】
次に以下のような新ＸＭＬ文書の対応文章を構文解析する場合を考える。
<aaa>
<ccc yyy="zzz"> test </ccc>
</aaa>
【０１４７】
この文書では、9文字目（半角スペースを１文字として計算。\nは改行を意味し、１文字として計算。）が「b」と「c」で異なっていることがまず発見される。保存されている解析結果から、9文字目は解析済み文書のEmptyElementイベント「<bbb xxx="xxx"/>」に当たることが分かる。新文書では9文字目を含むイベントを解析するとStartElementイベント「<ccc yyy="zzz">」であることが分かる。イベントの種類が異なり、新文書側のイベントがStartElementであることから部分木の解析を行う。このStartElementに対応するEndElementまで、つまり「<ccc yyy="zzz"> test </ccc>」の部分の解析を行う。その後、文字列の差分計算に戻る。このような計算により、この例では次のようなイベントの差分が得られる。
【０１４８】
Offset 3 length 1 => length 3
< EmptyElement "bbb", [Attribute Name "xxx", Value "xxx"]
> StartElement "ccc", [Attribute Name "yyy", Value "zzz"]
> Characters " test "
> EndElement "ccc"
【０１４９】
結果生成：
SAXイベントとして、0番目から2番目までは、解析済みの文書のものを利用する。3番目から5番目のイベントは新規に部分処理した3つのイベントを用いる。6番目から8番目は、解析済みの文書の4番目から6番目ものを利用する。
【０１５０】
［実施例１の構文解析処理例３］
次の例として、以下の文章が既に解析済みであったとする。
<aaa>
<bbb xxx="xxx"/>
</aaa>
【０１５１】
この時、以下の新ＸＭＬ文書の文章を差分解析することを考える。
<aaa>
<bbb xxx="xxx"> </ccc>
</aaa>
【０１５２】
新ＸＭＬ文書では、22文字目が「/」と「>」で異なっていることがまず発見される。保存されている解析結果から、22文字目は解析済み文書のEmptyElementイベント「<bbb xxx="xxx"/>」に当たることが分かる。新文書では23文字目を含むイベントを解析するとStartElementイベント「<bbb xxx="xxx">」であることが分かる。イベントの種類が異なり、新文書側のイベントがStartElementであることから部分木の解析を行う。このStartElementに対応するEndElementまで、つまり「<bbb xxx="xxx"> </ccc>」の部分の解析を行う。ところが、このEndElementはエレメント名がStartElementと対応していないため、非整形式であることが分かり、解析結果はエラーとなる。
【０１５３】
［Ｗｅｂサービスへの実施例１の適用例］
本発明が有効に機能する場面を挙げる。図２５はＷｅｂサービスのシステム構成図である。インターネット５００又はイントラネットには、複数個のサーバ（プロバイダ）５０１ａ〜５０１ｎと共に、複数個のクライアント（リクエスタ）５０２ａ〜５０２ｍが接続されている。Ｗｅｂサービスでは、各サーバ５０１ａ〜５０１ｎは、各クライアント５０２ａ〜５０２ｍからのリクエストのメッセージを受け付け、それに対してレスポンスのメッセージを返すようになっている。これらメッセージは、ＳＯＡＰにより規定されるＸＭＬ文書となっている。本発明の構造化文書処理装置は、例えば、これらサーバ５０１ａ〜５０１ｎ及びクライアント５０２ａ〜５０２ｍに実装されて、メッセージの構文解析を行なう。Ｗｅｂサービスでは、構文解析するＸＭＬ文書は、Ｗｅｂサービスの相手方（サーバが本人であれば、相手方はクライアントであり、クライアントが本人であれば、相手方はサーバとなる。）が作成したものであるが、本発明の構造化文書処理装置において構文解析するＸＭＬ文書（新構造化文書）は、構造化文書処理装置が実装されているコンピュータ本人の所定のアプリケーション・プログラムが作成したり、コンピュータ自身のハード・ディスク装置に格納されているＸＭＬ文書のこともあり得ることに注意されたい。Ｗｅｂサービスにおける本発明の適用の具体例を説明する。
【０１５４】
（ａ）Ｗｅｂサービスのクライアントにおいて、サーバからのレスポンスのＸＭＬ文書を構文解析する場合。この場合、クライアント側ではどのサーバのどのオペレーションに対してリクエストしたかはあらかじめ分かっているので、クライアントでどのＸＭＬ文書と比較すればよいかは分かっていることになる。つまり、クライアントではオペレーションごとに最初の１つのＸＭＬ文書を比較対象として保存し、以後そのオペレーションを呼ぶ場合は選択的にそのＸＭＬ文書と比較すればよいことになる。このように処理することで比較対象が増加することはない。
【０１５５】
（ｂ）Ｗｅｂサービスでのサーバにおいて、クライアントからのリクエストのＸＭＬ文書を構文解析する場合。サーバではあらかじめ１つのオペレーションに対しては１つのURLを割り当てる構成をとる。この場合、リクエストのURLによって比較対象のＸＭＬ文書を切り替えることで比較対象の数を減らすことが可能である。また、リクエスト元のIPアドレス、リクエストのUser-Agentヘッダなどの情報を元にどのクライアントからのリクエストかを判断し、比較対象を減らすことも可能である。このように処理することで比較対象が増加することはない。
【０１５６】
［実施例１の改良例］
本発明では構文解析を繰り返し行ううちに、比較対象のＸＭＬ文書の数が増加し処理が非効率になる場合が考えられる。しかし、類似性の非常に高い文書が１つ見つかった時点で以降の比較は必要なく、また類似性の低いＸＭＬ文書との比較では早い段階で類似性の閾値を越え、処理を打ち切ることができるため大きな負荷とはならない。
【０１５７】
それでも途中までほぼ同じであり、それ以降大きく異なるようなＸＭＬ文書との比較ではある程度の時間がかかり非効率になる。そのような場合のための工夫として、比較するＸＭＬ文書の比較順を変更することや、比較対象のＸＭＬ文書の数に上限を定めておくことなどが挙げられる。比較順の変更や比較対象ＸＭＬの削除には、それまでにその構文解析結果がどれくらい使われているかの統計情報を用いる手法や、LRU(Least Recently Used)、FIFO(First In First Out)などのキャッシュ・エントリの交換アルゴリズムを流用することもできる。
【０１５８】
［実施例１の実験結果］
ある処理系で作られたＸＭＬ文書を解析済みの場合、同じ処理系で作られたＸＭＬ文書を解析する処理が高速化される。解析済みでない文書を解析する処理は遅くなる。同じ処理系で作られた類似の文書を頻繁に処理する場合には、全体として解析処理が高速化されることになる。
【０１５９】
本発明は、WebSphere（米国ＩＢＭ社の販売するサーバ名）のようなアプリケーション・サーバにおけるＷｅｂサービスの処理を高速化する上で非常に有効である。Ｗｅｂサービスの処理では、ＸＭＬ処理のオーバーヘッドが大きいことが問題となっているが、本発明はこの問題に対処するものである。
【０１６０】
図２６は従来技術と本発明とでの構文解析結果の処理時間を対比した実験グラフである。最も普遍的に使われている従来型のSAXパーサであるApache Xerces 2.6.2のSAXパーサ（Xerces2 SAX）と、本発明（Diff+EventReplay）により、様々なＸＭＬ文書(579 bytes + 1 change、974 bytes + 8 changes、5024bytes + 16 changes)を処理した時間を計測した。処理時間は構文解析を同一処理を１０００回繰返した総計時間である。changeとは、元ＸＭＬ文書と新ＸＭＬ文書とで相違するイベント数である。元ＸＭＬ文書の１個のイベントが新ＸＭＬ文書では複数個のイベントに置き換わる場合もあるが、実験では、元ＸＭＬ文書と新ＸＭＬ文書とで相違するイベントは１：１に対応しており、例えば、8 changesとは、８個のイベントにおいて、元ＸＭＬ文書と新ＸＭＬ文書とて相違していることを意味する。実験環境は、ノートパソコンThink Pad T30（クロック周波数1.8GHz、メモリ512MB。"Think Pad"はＩＢＭ社製ノートパソコンの登録商標。）上のSun JDK1.3である。各サイズのＸＭＬ文書において、左から順番にＴ１〜Ｔ５とし、Ｔ１は新ＸＭＬ文書のバイト形式で読み取るのに要する時間、Ｔ２は新ＸＭＬ文書を文字形式で読み取る時間、Ｔ３は従来のSAXパーサ（Xerces2 SAX）での処理時間、Ｔ４は新ＸＭＬ文書における差分部分を構文解析するのに要した時間、Ｔ５はＴ４＋リプレイ（イベント列の通知時間）である。本発明の処理時間は、Ｔ１＋Ｔ５又は、Ｔ２＋Ｔ５となるが、従来の処理時間Ｔ４に対して処理時間を短縮できた。
【実施例２】
【０１６１】
実施例２では、元構造化文書及び新構造化文書について、それらの構造区分（例えばノード）を単位として対比する場合には、状態遷移機械の状態遷移図が利用される。該実施例では、ＸＭＬ文書が構造化文書として採用されている。なお、状態遷移機械の状態遷移図における各状態を、被利用構造化文書の構造区分に対応付けて、適宜、「ノード」と呼ぶことにする。
【０１６２】
図２７は状態遷移機械の状態遷移図において状態として登録されるノードについて、図１８と同様に、ＵＭＬのクラス図形式で示したものである。ツリー構造のリーフに相当するノードが状態遷移図に登録される。これらリーフに相当するノードは、ＳＡＸのイベントに対応付けられている。
【０１６３】
例として、次のＸＭＬ文書ｃ２１を考える。
ｃ２１：<p:e xmlns:p="urn:example">text<x a="ccc" p:b="ddd"/></p:e>
【０１６４】
ＸＭＬ文書ｃ２１を、図２７のＵＭＬ図のリーフ・ノードに係るイベントにパースした場合には、次のような結果を得る。なお、各行において、左端の番号は、説明の便宜のための行番号である。
【０１６５】
801:[StartTag: name="e" uri="urn:example"
802:  {Attributes: } 
803:  {NSDecls: (prefix="p", uri="urn:example")}]
804:[Text: value="text"]
805: [EmptyElementTag: name="x" uri=""
806:  {Attribute: (name="a", uri="", value="ccc")
807:              (name="b", uri="urn:example", value="ddd"}]
808: [EndTag: name="e" uri="urn:example"]
【０１６６】
行番号８０１〜８０３，８０４，８０５〜８０７，８０８が状態遷移図の各ノードに対応している。状態遷移機械を作成するときには、これらのイベントの列を状態（ノード）の列とみなし、それらを単に文書の順序で並べればよい。図２８はＸＭＬ文書ｃ２１に係る状態遷移図６００である。ＸＭＬ文書ｃ２１は、状態６０１〜状態６０４をもつ。
【０１６７】
図２９は状態遷移機械の制御方法６３０のフローチャートである。最初に、状態遷移機械を始状態に設定する（Ｓ６３１）。Ｓ６３２では、状態遷移機械において、次に遷移可能な状態（以下、「Ｃｎ」と呼ぶ。）が存在するか否かを判定する。Ｓ６３２の判定が正である場合には、Ｓ６３５へ進み、否である場合にはＳ６４５へ進む。Ｓ６３５では、状態遷移機械における状態Ｃｎを構成するバイト列Ｂｏと、Ｂｏに対応する新構造化文書の対応バイト列Ｂｎであって新構造化文書の現在位置としてのバイトから始まるバイト列Ｂｎとをバイト単位で対比する。具体的には、Ｂｎにおいて現在位置としてのバイトと、該バイトと対比するＢｏのバイトとを、バイト列Ｂｎ，Ｂｏの先頭から末尾の方へ１個ずつ進める。Ｓ６３６では、バイト列Ｂｏ，Ｂｎが完全に一致したか否かを判定し、該判定の結果が正であれば、Ｓ６３７へ進み、否であれば、Ｓ６４６へ進む。Ｓ６３７では、状態遷移機械の状態をＣｎへ遷移させる。すなわち、状態遷移機械の現在状態をＣｎにする。Ｓ６３８では、状態遷移機械において現在状態が終状態か否かを判定し、該判定の結果が正であれば、制御方法６３０を終了し、否であれば、Ｓ６３２へ戻る。
【０１６８】
Ｓ６４５では、新構造化文書の現在位置としてのバイトを先頭バイトとするバイト列Ｂｎであって新構造化文書の現在位置が存在するノードに係るバイト列Ｂｎについて、パースを行う（１個のノードに係るバイト列のパースのことを適宜、「部分パース」と呼ぶことにする。）。該部分パースでは、新構造化文書の現在位置に係るコンテキスト（コンテキストの例：現在有効な実体宣言・名前空間宣言・要素の階層から構成される。）を使用する。Ｓ６４６では、Ｓ６４５の部分パースに基づき、辞書を使って、該部分パース結果にコンテキスト及び記述の一致するノードとしての遷移先ノードが状態遷移機械の状態遷移図上にあるかを調べる。Ｓ６４７では、Ｓ６４６の調査により遷移先ノードか見つかったか否かを判定し、該判定の結果が正であれば、Ｓ６４８へ進み、否であれば、Ｓ６４９へ進む。Ｓ６４８では、状態遷移機械の現在のノードを遷移先ノードへ変更する。また、必要であれば、状態遷移図上に遷移先ノードへの遷移経路を作成する（例：図３０の状態６０８から状態６０３へ引いた経路）。Ｓ６４８の後は、Ｓ６３２へ戻る。Ｓ６４９では、部分パース結果に基づき状態遷移図上にノードを追加する（例：図３０の状態６０８）。また、該追加ノードに対して遷移元になっているノードから該追加ノードへ遷移経路を作成する（例：図３０の状態６０１から状態６０８へ引いた経路）。Ｓ６４９の後、Ｓ６４５へ戻る。
【０１６９】
例として、図２８の状態遷移図を備える状態遷移機械を次の新ＸＭＬ文書ｃ２２に対して適用した場合を考える。図３０及び図３１は、状態遷移機械の作動に伴う状態遷移図の更新状態を示している。
【０１７０】
ｃ２２：<p:e xmlns:p="urn:example"><y/><x a="ccc" p:b="ddd"/></p:e>
【０１７１】
まず、状態遷移は、現在解析している場所から、次に遷移可能な状態が持っているバイト列に対してマッチした場合にのみ行えるものとする。初期状態（図３０の上端の二重丸）の次の状態６０１は「<p:e xmlns:p="urn:example">」というバイト列を持っているので、文書の先頭から見て同じバイト列に文書がマッチした場合にのみ、状態遷移が行える。ＸＭＬ文書ｃ２２でもバイト列は一致しているので、解析中のＸＭＬ文書ｃ２２の位置は以下の▽で示した場所に移り、状態遷移機械は状態６０１に遷移する。
【０１７２】
<p:e xmlns:p="urn:example">▽<y/><x a="ccc" p:b="ddd"/></p:e>
【０１７３】
次の状態は「text」というバイト列を持っているので、"t"と、"<"の比較が行われるが、これはマッチしないので、状態を遷移することができない。状態遷移ができなかった場合には、現在の状態が持っているコンテキスト(現在有効な実体宣言・名前空間宣言・要素の階層から構成される)から部分パースを行う(各状態はその状態に対応するイベントおよびコンテキストが保持されているものとする)。パースした結果、下記のイベントを得る。
[EmptyElementTag: name="y" uri="" {Attribute: }]
【０１７４】
そして、そのイベントに対して合流できる状態がないかどうかを探し出す。現状態と合流できる状態とはコンテキストが一致していなくてはならない。なぜなら、この条件を破ってしまうと、状態遷移機械の遷移履歴からXML全体が整形式であることを保証することができず、毎回遷移履歴に対して整形式をチェックする必要があるからである。このためには、ハッシュによる辞書を利用する。イベント及びコンテキストに対しては適切なハッシュ関数を定義しておき、ハッシュ値が計算されているとする。いま、状態遷移機械に対する辞書として、「(コンテキスト × イベント) → 状態」というような対応が用意されているとする。いま、イベントとしては、「<y/>」を用い、コンテキストとしては、「要素"e"の下であり、名前空間としては接頭辞"p"にたいして"urn:example"が定義されており、実体宣言は空」というものを用いて、この辞書を用いて対応する状態を探す。当然、「<y/>」をイベントとして持つ状態は存在しないので、合流することはできないまま、部分パースが続けられることになる。この時、状態遷移機械を更新しながらパースする場合は(もちろん、解析時にできパース速度を上げるために、状態遷移機械をこの時点では更新しないということもできる)、図３０のように状態遷移機械を更新する。
【０１７５】
そして、引き続き部分パースがおこなわれる。次は下記のイベントを得る。
[EmptyElementTag: name="x" uri=""
{Attribute: (name="a", uri="", value="ccc")
(name="b", uri="urn:example", value="ddd"}]
【０１７６】
さきほどと同じように辞書から対応する状態を見つけ出す。今回は、対応する状態を見つけ出すことができ、次の状態は、図３０の状態６０３となる。
【０１７７】
もし、状態遷移機械を更新する場合には、図３１のように、状態状態６０８，６０３をそれぞれ遷移元及び遷移先とする遷経路を新規に作成する。なお、この合流できる状態が複数見つかった場合には、適当に一つを選び出す方法でもかまわないが、分岐したところから最も近い状態に合流すると効率がよいので、距離を計算して最も近い場所を選び出すという方法を取るとよい。
【０１７８】
この走査の結果、次に遷移する可能性のある状態Ｃｎとして、「</p:e>」があることになり、新ＸＭＬ文書の現在位置に係るノードに対して、この状態Ｃｎが持つバイト列とのマッチ判定が行われる。新ＸＭＬ文書ｃ２２もこれとマッチするので、遷移が行われ、最後に終状態（図３１の下端の二重丸）に到達し、この時点で新ＸＭＬ文書ｃ２２も終了するので、解析が完了する。元ＸＭＬ文書ｃ２１としての解析済み文書とどのように対応するかは、遷移履歴から分かる。新しく作られたのではない状態に対応するところが、解析済み文書と対応するところであり、新しく作られるか、もしくは対応する状態がない部分が、差分情報ということになる。
【０１７９】
状態遷移機械に対応する辞書で無駄な項目を追加しない手法について説明する。
【０１８０】
本発明では、状態遷移機械の更新時、新しい状態に対応する項目を辞書に追加するのだが、あまり特徴のないイベント、頻繁に出現する割には文書の構造に影響を与えないイベント、様々なコンテキストに出現するイベントに対しては新たに辞書登録を行わないようにすることもできる。これにより、無駄な合流の操作や無駄な分岐先の増加によって効率が低下することを避けられる。
【０１８１】
状態遷移機械を更新する際には、その新しい状態に対応する項目を辞書に追加しておく。このことにより、合流先を高速に見つけ出すことができる。しかし、この手法は、ＸＭＬ文書において同一のイベントがあったときはその後の文書構造も類似している可能性が高いという性質を利用しているため、例えば、改行のみのテキストイベントなどを、この辞書に登録しておくと、無駄に合流の操作を行ったり、無駄に分岐先を増やしてしまったりすることにつながり、効率が悪くなってしまう。これを避けるためには、あまり特徴のないイベント、頻繁に出現する割には、様々なコンテキストに出現するイベントに対しては新たに辞書登録を行わない、もしくは辞書から削除するなどの手法を取るとよい。具体的には、以下のようなイベントを辞書に登録しない、もしくは削除するなどの手法が考えられる。
【０１８２】
（ａ）短いTextイベント(例えば４文字より短いもの)
（ｂ）既に状態遷移機械中に多数の重複状態として出現するイベント
（ｃ）規則性に乏しいPIイベントやCommentイベント
【０１８３】
分岐点で高速に分岐先を探索する手法について説明する。
【０１８４】
本発明では、状態遷移機械中の状態遷移の分岐について、あらかじめ、分岐できる状態のバイト列に関してはソートをしておき、解析しようとする文書のバイト列を利用して、バイナリサーチを行うこともできる。これにより、いくつも分岐がある場合にも、対数時間で効率に遷移することができる。
【０１８５】
いま、図３１の状態を備える状態遷移機械が既に用意されていたとする。この状態遷移機械を用いて、記述が下記のものとなっている文書ｃ２３を解析するものとする。
【０１８６】
ｃ２３：<p:e xmlns:p="urn:example"><y/>xyz</p:e>
【０１８７】
既に述べたような方法で、最初の状態にはすぐに遷移される。したがって、状態遷移機械は状態状態６０１に行き着く。ここで遷移可能な状態は「text」および「<y/>」であるが、バイト列単位のマッチングをこの２個のイベント双方で単純に行う場合、分岐が２個の場合はよいが、いくつも分岐がある場合には０（Ｎ）の時間を要することになってしまい、効率的でない。この場合、あらかじめ、分岐できる状態のバイト列に関してはソートをしておき、解析しようとする文書のバイト列を利用してバイナリサーチを行う。つまり、まず、"<"が来た時点で"t"よりも"<"のほうが小さいのでバイナリサーチにおいて、すぐに「<y/>」だけに候補を絞ることができる。
【０１８８】
次に、最類似する解析済み文書を見つける手法について説明する。
【０１８９】
実施例２では、状態遷移機械に対して、文書を解析したときに作った状態や遷移したことを記録しておくことにより、新規文書と最も類似する解析済み文書を得るようにする。新規文書がどの状態を遷移したかを、記録されている状態や遷移と比較することにより、最も多く対応する状態や遷移の記録されている文書が、最も類似する解析済み文書であることが分かる。
【０１９０】
例えば、以下の３個のＸＭＬ文書Ａ，Ｂ，Ｃがあったとする。図３２はそれらＡ〜Ｃを解析して生成した状態遷移図である。
文書Ａ: <a>x<b>y</b></a>
文書Ｂ: <a>x<c>z</c></a>
文書Ｃ: <d>z</d>
【０１９１】
そして、新しく次の文書Ｄを解析するものとする。
文書Ｄ: <a><b>y</b><c>x</c></a>
【０１９２】
図３３は前述した手法（状態遷移図への状態の追加、合流）を用いて、ＸＭＬ文書Ｄの状態の遷移を示したものである。図３３において、太い線は解析した結果の遷移履歴を表している。この中で、文書Ａに該当する状態は５個、文書Ｂに該当する状態は４個、文書Ｃに該当する状態はまったくないので、文書Ｄに最も類似する文書は文書Ａであると結論付けられる。
【０１９３】
［実施例２の利用例：その１］
この機構は既存文書の類似構造と、その差分を高速に抽出することができるので、差分処理に適している。例えば、類似したクエリを多量に処理するべきウェブ・サービスに適用すると、パースする部分を最小限に抑えられるため、速度は飛躍的に向上する。しかも、キャッシュしておく解析済み文書を増やしても分岐探索には高々Ｏ（ｌｏｇＮ）しかかからないため、最悪でも速度はＯ（ｌｏｇＮ）しかかからない。実際には同一の状態は新たに作られないので、効率はもっとよいことが期待される。
【０１９４】
例えば、差分パーサとしてこの技術を適用した場合には、具体的には以下のような構成をとることになる。
（ａ）キャッシュするＸＭＬ文書をもとにして、図３３で説明した機構をもとづいて状態遷移機械を作成する。
（ｂ）新規に解析するＸＭＬ文書に対して、図３３で説明した方法で差分を抽出し、差分部分だけを部分パースする。
（ｃ）解析結果は、状態遷移機械の各状態の遷移履歴に基づいて全体をパーサ利用側に返却する。
【０１９５】
一般的に、この手法が有効であることは言えないが、ある局面で非常に有効であるということに関しては、定性的に大きな根拠がある。ここでは、ウェブ・サービスについてその根拠を説明する。
【０１９６】
処理対象のＸＭＬ文書のバイト列表現がバリエーションに富む場合には、オートマトン中の既存パスに対応する場合が少なくなってマッチする頻度が下がり、またオートマトンの状態数が爆発して大量の記憶域を消費することになる。Ｗｅｂサービスの場合に問題となるのは、異なるスキーマ間、および異なるシリアライザ実装間での、バイト列表現のバリエーションであると考えてよい。Ｗｅｂサービスでは、ＸＭＬ文書(ＳＯＡＰメッセージ)生成側は通常WSDLで指示されたスキーマに基づいてデータバインディングが行われ、パラメータからＸＭＬ文書が生成されるからである。
【０１９７】
しかしながら、現実的なＷｅｂサービスにおいては、このバリエーション爆発は問題とならない。本処理系を用いるようなＷｅｂサービス・ミドルウェアが取り扱うスキーマは少数であることが普通である。これは、一つのＷｅｂサービス・プロバイダが提供するサービスは、ルーター的なものを除けば、固定であり、数も多くないからである。また、シリアライザ実装数は、少なくはないが、爆発するほどではない。ある一時期に用いられる実装系は、いくつかのベンダーの、最新に近い版のものに集中するからである。
【０１９８】
実際上、処理対象は、いくつかの文法（３型文法のバリエーション）クラスに収まり、クラスごとに大量の（バイト列表現の似た）ＸＭＬ文書があることになる。類似文書の処理は実施例１などを用いて高速に処理できるため、全体として高速な処理が可能になる。
【０１９９】
［実施例２の利用例：その２）
例えば、多量のＸＭＬ文書を、この形式の状態遷移機械に登録しておいて、類似文書を検索するために用いることができる。これによって、下記の処理（ａ）及び（ｂ）に用いることができる。これは特にスキーマが固定されていて、大量の３型文法の枠内で収まる類似文書を処理しなくてはならないときに有効な手段である。
【０２００】
（ａ）文書編集時に類似文書との変更点などを提示する。これによって、テンプレート的に類似文書を活用することできたり、既存文書から見た履歴を抽出して提示することができたりするようになる。
（ｂ）文書クラスを推測し、その文書クラスに沿った適切な処理にわたす。例えば、レポート用の文書と判別すれば、そのレポート用のマークアップ定義を見て、処理を行うなどの補助ができるようになる。
【０２０１】
［実施例２の利用例：その３］
この手法の状態遷移機械だけでは、類似度の高い実際の文書インスタンスを復元することはできない。このためには、「最類似する解析済み文書を見つける手法」で説明したように、文書インスタンスＩＤを状態に記憶させておいて、適切なデータベースなどでその文書インスタンスＩＤから文書インスタンスを取り出すことができるようにしておけばよい。
【０２０２】
もしくは、このようなデータベースをそのまま持たせては効率的ではないという用途の場合には、文書インスタンスＩＤから、状態遷移機械の遷移パスに対応する辞書を作るという方法でもよい。なお、遷移パスは、各状態へのリファレンスの列で定義することができるため、一文書につき高々n個のリファレンスですみ、記憶効率もよい。
【０２０３】
［実施例２の利点：整形式検証の効率化］
本発明の処理系では、以下の処理を同時に高速にこなしている点に大きな意義がある。
（ａ）新規文書との類似文書の特定
（ｂ）新規文書との差分抽出
（ｃ）新規文書の整形式検証
【０２０４】
（ｃ）の整形式検証を（ａ）及び（ｂ）と同時に行わないとすると、別途、整形式検証を行う必要がでてくるが、その処理は重い。
【０２０５】
例えば、９７４ｂｙｔｅｓのＳＯＡＰメッセージ(doGoogleSearch)について、本発明を利用して、同時に整形式検証を行った場合と、別途整形式検証を行った場合の処理時間を比較すると、別途整形式検証を行った場合には、全体で１．７倍の処理時間を要している。本発明では、コンテキストが一致するように状態遷移を制限することによって、マッチした新規文書は、常に整形式であることを保証している。そのため、既処理文書とマッチすることがわかった時点で、その新規文書に対して別途製形式検証を行う必要はなく、そのコストはかからずに済む。
【０２０６】
［実施例２の利点：複数文書の解析に対する意義］
図３４は実施例２を実際にウェブ・サービスのクエリに対して用いて、差分解析を行った場合の実験例を示す。キャッシュ済みの文書数が増えても、処理時間にはほとんど変化がないことが分かる。なお、図３４において、縦軸の単位としての「ｕｓ」とはマイクロ・セカンドを意味している。処理済の文書を１つ１つ比較していく従来技術では、文書数が増えると処理時間は線形的に増加してしまうが、実施例２に係る状態遷移機械を適用すれば、文書数が増えてもほとんど処理時間は増加しない。
【０２０７】
図３５は、処理対象の（互いに類似でない）文書の種類（サービスの違い、実装系の違い）が増えていった場合に、既存の従来技術を適用したパーサでは、実施例２に係る状態遷移機械を適用したパーサに比べて、処理速度が低下していく様子を示している。既存技術については、論理値である。文書の種類間で、バイト列レベルの違いが甚だしい場合、２文書を比較して類似でないことを早く検出できる。グラフでは、その平均コストが全体のマッチングの何パーセントになるかによって、既存技術の場合の処理速度を４つ（１％、５％、１０％、２０％）示した。
【０２０８】
［実施例２の利点： 記憶領域］
Ａｍａｚｏｎ  Ｗｅｂサービスのリクエスト・メッセージ１５種類に対し、メッセージを生成するＳＯＡＰ処理系を４種類仮定し、１５×４＝６０種類のＸＭＬ文書を生成した。図３６はこの６０種類のＸＭＬ文書を記憶した場合のメモリ使用量を示している。
【０２０９】
状態遷移機械を利用する実施例２の場合にも、記憶する文書数が増えるに従い必要とする記憶領域は増加する。しかし、記憶領域の増加量は記憶する文書の数にほぼ比例しており、記憶量が爆発するようなことはない。システムのメモリ量を勘案して記憶文書数の最大値を設定することで、メモリ不足による性能低下は避けることが可能である。また、メモリに制限があるときには、最も利用頻度の高い遷移のみを残し、参照の消えた状態を削除することによってメモリ量を抑えることができる。
【０２１０】
［実施例２の利点：記憶していない文書に対する処理時間］
図３７は前述の６０文書に対して、あらかじめ記憶している文書数を０文書から６０文書まで変化させて処理時間を計測した。そのグラフを以下に示す。計測には６０文書すべてが用いられ、全体で１００００文書の処理を行っている。計測時には状態遷移機械の更新は行われず。あらかじめ生成済みの状態遷移機械が常に使われている。なお、グラフにはないが、差分パーサを用いない場合の解析時間は１３００ｍｓ程度であり、１２文書以上、つまり全体の５分の１程度の類似文書を記憶している場合に差分パーサの方が高速に処理を行えることが分かる。０文書つまり一つも記憶していない場合に非常に値が悪いが、これは部分パーサの実装が不完全で、余計な処理が入っているためではある。しかし、グラフから分かるとおり、少しでも再利用できる部分があれば差分パーサの効果が現れていることが読み取れる。さらに、実際の使用状況では動的に類似度の高い文書に対して状態遷移機械が更新されるため、文書の類似率は比較的高い値になることが予想される。
【実施例３】
【０２１１】
図３８はＳＯＡＰメッセージ処理装置７００の構成図である。ＳＯＡＰエンジン７０１は、ＳＯＡＰメッセージを受信すると、ＷＳＳコンシューマ７０２(Web services security Consumer)を呼び出し、セキュリティの処理はその中で実行される。その後、ＳＯＡＰエンジン７０１は、メッセージ中のアプリケーション・データを処理するために、デシリアライザ７０９を呼び出してから、アプリケーション・オブジェクト７１０を呼び出す。実施例３は、ＷＳＳコンシューマ７０２での処理を効率化するものであり、以下ではその中味を説明する。
【０２１２】
図３８にもあるように、ＷＳＳコンシューマ７０２では、受信したメッセージの内容により、トークン・コンシューマ７０３、 署名コンシューマ７０４及び 暗号コンシューマ７０５を呼び出しながら処理を進める。例えば、メッセージがセキュリティ・トークンと署名のみを含んでいる場合、暗号コンシューマ７０５は呼び出されない。
【０２１３】
図３９はＷＳＳコンシューマ７０２の処理部分のフローチャートである。実施例３では、後述するように一旦処理したメッセージからテンプレートを抽出して、これを再利用する。抽出されたテンプレートは利便性の点から、状態遷移マシン(Automaton)にまとめられており、これにより、受信したメッセージにマッチするテンプレートを効率的に選択することができる。マッチするテンプレートがない場合には、通常の方法で処理されるが、この際にテンプレートを抽出して状態マシンに追加する。マッチするテンプレートが有る場合には、トークン、署名、暗号化などの構成要素に応じて、それぞれの処理を呼び出し、テンプレートを利用しながら効率的に処理を進めていく。
【０２１４】
図４０はテンプレートの概念的に示した図である。この図は、Ｘ．５０９証明書をセキュリティ・トークンとして、それを利用した署名を含んだメッセージから抽出されるテンプレートになっている。受信したメッセージの中で、属性やテキスト・ノードを変化する部分（変数）として捉えることにより、テンプレートは生成される。但し、名前空間宣言と、変換（Transform）アルゴリズムは変数ではなく、固定値として扱っている。
【０２１５】
図４０のようなテンプレートが複数ある場合、受信したメッセージと個別にマッチングするのは効率が悪い。そこで、実施例３では、これらのテンプレートは図４１のような状態遷移機械としてまとめられている。この例では、名前空間接頭子が違う２つのテンプレートがまとめられている(wsseとsecが違う)。
【０２１６】
実施例３において、状態遷移機械のノードは以下の４種類がある。
（ａ）開始タグ・ノード：開始タグに対応している。名前空間宣言、属性などを含んでいる。属性の通常変数として表現されており、受信したメッセージとのマッチングにより、値が代入される。
（ｂ）終了タグ・ノード：終了タグに対応している。開始タグとは違い属性などはないので、変数も定義されていない。
（ｃ）空タグ・ノード：空タグに対応している。開始タグと同様に、属性などに関する変数を含んでいる。
（ｄ）コンテント・ノード：テキスト・ノードに対応している。受信したメッセージとのマッチングにより、テキストが抽出される。マッチングの際に、この部分にＸＭＬの部分木が対応することが分かった場合には、状態遷移機械の更新を行う。
【０２１７】
図４２は状態遷移機械を利用して、受信したメッセージを処理する方法に係る説明図である。受信した（incoming）メッセージを前から順に、各状態とマッチングして、状態をたどっていく様子が示されている。マッチングを進める際には、開始タグ・ノードやテキスト・ノードで定義されている変数への代入も行われる。図４３及び図４４は受信メッセージからそれぞれ属性値及びテキストを抽出する説明図である。
【０２１８】
受信したメッセージを状態遷移機械とマッチングして成功した場合、マッチングの結果は状態ノードの列として表現される。このようなノードの列をテンプレート・インスタンスと呼び、ノードの列に加えて、代入された値も表現するようにしている。図４５はテンプレート・インスタンスの一例を示している。
【０２１９】
図４６はテンプレート・インスタンスの処理に係る説明図である。図３８及び図３９に示したように、ＷＳＳコンシューマ７０２は、受信したメッセージの内容に応じて、トークン、暗号、署名を処理するモジュール適宜呼び出すようになっている。図４６に示すように、何を呼び出すかはテンプレート・インスタンスに基づいて決められており、ここでは、単純に出現した順に対応したモジュールを呼び出す様子が示されている。
【０２２０】
図４６において、セキュリティの構成要素に応じて、処理モジュールが呼び出されるようになっているが、署名検証と復号化モジュールに関しては、これまで述べてきた方法だけでは十分には対処できない。署名検証では、署名対象を正規化 (Canonicalize) する処理が必要である。例えば、以下のようなメッセージを考えてみる。なお、左端の数字８５０〜８５５は、説明の便宜上、付加した行番号である。
【０２２１】
850:<S:Envelope xmlns:S="http://www.w3.org/2001/12/soap-envelope" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"….>
851:    <S:Header> …. </S:Header>
852:    <S:Body  wsu:Id="myBody">
853:        <tru:StockSymbol xmlns:tru="http://www.fabrikam123.com/payloads">QQQ</tru:StockSymbol>
854:    </S:Body>
855:</S:Envelope>
【０２２２】
ボディ要素が署名対象であるとすると、この部分を正規化する必要があり、名前空間宣言の追加、属性の並べ替えなどの処理が必要である。その結果、上記のメッセージは以下のようになる。
【０２２３】
860:<S:Envelope xmlns:S="http://www.w3.org/2001/12/soap-envelope" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"….>
861:    <S:Header> …. </S:Header>
862:    <S:Body xmlns:S="http://www.w3.org/2001/12/soap-envelope"                    
863:                   xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"
864:                   wsu:Id="myBody">
865:        <tru:StockSymbol xmlns:tru="http://www.fabrikam123.com/payloads">QQQ</tru:StockSymbol>
866:    </S:Body>
867:</S:Envelope>
【０２２４】
変換前の８５２行が変換後では、８６２〜８６４行となっており、８６２行及び８６３行において、名前空間の定義が追加されていることに注意されたい。このような処理をするには、図４１ のような状態遷移機械だけでは不十分であり、署名対象の解析処理が必要になってしまう。そこで、実施例３では、署名対象処理に関しては、図４７に示すように正規化されたテンプレート７４５を用意して対処する。この中では、署名対象に関しては、もともとのメッセージから抽出したテンプレート７４４に加え、それを正規化したものから作られたテンプレート７４５も用意しておく(Ｓ７５１)。メッセージを受信すると、元のテンプレートとのマッチングにより、変数部分を抽出する(Ｓ７５２)。そして、抽出した変数部分を正規化されたテンプレート７４５に埋め込み(Ｓ７５３)、最後にダイジェスト値を計算する(Ｓ７５４)。このような手順により、ＸＭＬの解析は一切せずに、署名検証に必要なダイジェスト値の計算が可能になる。
【０２２５】
図４８は正規化されたテンプレートと状態遷移機械の関連付けに係る説明図である。署名対象の始まりの部分（<S:Body wsu:Id="$id"）において正規化されたテンプレート（Ｃ１４Ｎのテンプレート）を状態遷移機械の対応ノードへリンクし、各状態（ノード）においては変数の対応関係も表現するようにしている。
【０２２６】
復号化に関しても、ＸＭＬの解析を避ける方が望ましい。ＸＭＬ暗号化では、復号化したものは、ＵＴＦ−８のバイト列であり、改めてＸＭＬの解析をする必要がある。このような解析を避けるために、実施例３では、復号化した部分に関してのテンプレートも用意し、バイト列のマッチングにより通常のＸＭＬ解析を回避する。図４９は復号化処理におけるテンプレート使用の説明図である。暗号データ（EncryptedData）に対応するバイト列に対応して、復号化データのためのテンプレートが用意されており、受信したメッセージの復号化された部分はこのテンプレートとマッチングが行われる。
【０２２７】
ＸＭＬの解析は重い処理であり、さらに WS−Securityでは、それに加えて、正規化の処理や復号化後のＸＭＬの解析も必要である。本発明により、これらのＸＭＬの解析処理を省くことができ、性能向上に大きく貢献できる。
【図面の簡単な説明】
【０２２８】
【図１】構造化文書処理装置の機能ブロック図である。
【図２】別の構造化文書処理装置の機能ブロック図である。
【図３】構造化文書処理方法のフローチャートである。
【図４】別の構造化文書処理方法のフローチャートである。
【図５】構造化文書処理装置等や構造化文書処理方法等のプログラムが実装されるコンピュータの概略構成図である。
【図６】他の構造化文書処理装置の機能ブロック図である。
【図７】別の構造化文書処理装置の機能ブロック図である。
【図８】他の構造化文書処理方法のフローチャートである。
【図９】別の構造化文書処理方法のフローチャートである。
【図１０】図９に係る別の構造化文書用構文解析方法に種々の機能を追加した場合のフローチャートの第１の部分図である。
【０２２９】
【図１１】図９に係る別の構造化文書用構文解析方法に種々の機能を追加した場合のフローチャートの第２の部分図である。
【図１２】図９に係る別の構造化文書用構文解析方法に種々の機能を追加した場合のフローチャートの第３の部分図である。トの部分図である。
【図１３】さらに別の構造化文書処理装置の機能ブロック図である。
【図１４】さらに他の構造化文書処理装置の機能ブロック図である。
【図１５】さらに別の構造化文書処理方法のフローチャートである。
【図１６】さらに他の構造化文書処理方法の主要部のフローチャートである。
【図１７】別の構造化文書処理方法のフローチャートである。
【図１８】ＸＭＬ文書の構文解析結果を保存するデータ構造を示す図である。
【図１９】イベントとＸＭＬ文書の構文解析結果との対応関係を示すマッピング・オブジェクト図である。
【図２０】差分を取る際に、差分量が閾値を越えていないかどうかを判定するルーチンのフローチャートである。
【０２３０】
【図２１】元ＸＭＬ文書と新ＸＭＬ文書とのイベントが相違したときのパース処理ルーチンのフローチャートである。
【図２２】差分量に基づくＸＭＬ文書の処理に係るルーチンのフローチャートである。
【図２３】最終的な差分情報を表現したクラス図である。
【図２４】新ＸＭＬ文書についての構文解析結果生成（リプレイ）に係るフローチャートである。
【図２５】Ｗｅｂサービスのシステム構成図である。
【図２６】従来技術と本発明とでの構文解析結果の処理時間を対比した実験グラフである。
【図２７】状態遷移機械の状態遷移図において状態として登録されるノードについてＵＭＬのクラス図形式で示したものである。
【図２８】ＸＭＬ文書ｃ２１に係る状態遷移図である。
【図２９】状態遷移機械の制御方法のフローチャートである。
【図３０】状態遷移図上にノードを追加する説明図である。
【０２３１】
【図３１】状態遷移機械の作動に伴う状態遷移図の更新状態を示す図である。
【図３２】複数個のＸＭＬ文書に係る状態遷移図である。
【図３３】状態遷移図への状態の追加、合流の手法によるＸＭＬ文書Ｄの状態の遷移を示したものである。
【図３４】実施例２を実際にウェブ・サービスのクエリに対して用いて差分解析を行った場合の実験例を示す図である。
【図３５】実施例２に係る状態遷移機械を適用したパーサに比べて、処理速度が低下していく様子を示す図である。
【図３６】この６０種類のＸＭＬ文書を記憶した場合のメモリ使用量を示す図である。
【図３７】前述の６０文書に対して、あらかじめ記憶している文書数を０文書から６０文書まで変化させて処理時間を計測した
【図３８】ＳＯＡＰメッセージ処理装置の構成図である。
【図３９】ＷＳＳコンシューマの処理部分のフローチャートである。
【図４０】テンプレートの概念的に示した図である。
【０２３２】
【図４１】複数個のテンプレートをまとめた状態遷移図である。
【図４２】状態遷移機械を利用して、受信したメッセージを処理する方法に係る説明図である。
【図４３】受信メッセージから属性値及びテキストを抽出する説明図である。
【図４４】受信メッセージからテキストを抽出する説明図である。
【図４５】テンプレート・インスタンスの一例を示す図である。
【図４６】テンプレート・インスタンスの処理に係る説明図である。
【図４７】正規化されたテンプレートを利用してダイジェスト値を計算する説明図である。
【図４８】正規化されたテンプレートと状態遷移機械の関連付けに係る説明図である。
【図４９】復号化処理におけるテンプレート使用の説明図である。
【符号の説明】
【０２３３】
１００：構造化文書処理装置、１０１：状態遷移図情報記憶手段、１０２：選定対認定手段、１０３：一致性判定手段、１０４：ノード認定手段、１０５：遷移履歴情報生成手段、１０６：類似度検出手段、１０９：元構造化文書、１１０：新構造化文書、１２０：構造化文書処理装置、１２１：構文解析結果記憶手段、１２２：利用認定手段、１２３：元構造化文書利用手段、１３０：構造化文書処理方法、１４０：構造化文書処理方法、２１０：構造化文書用構文解析装置、２１２：記憶手段、２１３：判別手段、２１４：解析手段、２１５：通知手段、２０：構造化文書用構文解析装置、２１：記憶手段、２２：一致判定手段、２３：分類手段、２４：解析手段、２５：通知手段、３１：最類似構造化文書選択手段、３２：サーバ等検出手段、３３：ＵＲＬ検出手段、３４：差分量計算手段、３００：構造化文書処理装置、３０１：状態遷移図情報記憶手段、３０２：選定対認定手段、３０３：一致性判定手段、３０４：ノード認定手段、３０５：遷移履歴情報生成手段、３０６：被利用構造化文書選択手段、３０７：元構造化文書利用手段、３２０：構造化文書処理装置、３２１：元ノード追加手段、３２２：状態遷移経路追加手段、３２６：属性変数値記憶手段、３２７：テキスト・ノード変数値記憶手段、３４０：構造化文書処理方法、３６０：構造化文書処理方法、３８０：構造化文書処理方法。
【図１】
2006024179.tif 000003
【図２】
2006024179.tif 000004
【図３】
2006024179.tif 000005
【図４】
2006024179.tif 000006
【図５】
2006024179.tif 000007
【図６】
2006024179.tif 000008
【図７】
2006024179.tif 000009
【図８】
2006024179.tif 000010
【図９】
2006024179.tif 000011
【図１０】
2006024179.tif 000012
【図１１】
2006024179.tif 000013
【図１２】
2006024179.tif 000014
【図１３】
2006024179.tif 000015
【図１４】
2006024179.tif 000016
【図１５】
2006024179.tif 000017
【図１６】
2006024179.tif 000018
【図１７】
2006024179.tif 000019
【図１８】
2006024179.tif 000020
【図１９】
2006024179.tif 000021
【図２０】
2006024179.tif 000022
【図２１】
2006024179.tif 000023
【図２２】
2006024179.tif 000024
【図２３】
2006024179.tif 000025
【図２４】
2006024179.tif 000026
【図２５】
2006024179.tif 000027
【図２６】
2006024179.tif 000028
【図２７】
2006024179.tif 000029
【図２８】
2006024179.tif 000030
【図２９】
2006024179.tif 000031
【図３０】
2006024179.tif 000032
【図３１】
2006024179.tif 000033
【図３２】
2006024179.tif 000034
【図３３】
2006024179.tif 000035
【図３４】
2006024179.tif 000036
【図３５】
2006024179.tif 000037
【図３６】
2006024179.tif 000038
【図３７】
2006024179.tif 000039
【図３８】
2006024179.tif 000040
【図３９】
2006024179.tif 000041
【図４０】
2006024179.tif 000042
【図４１】
2006024179.tif 000043
【図４２】
2006024179.tif 000044
【図４３】
2006024179.tif 000045
【図４４】
2006024179.tif 000046
【図４５】
2006024179.tif 000047
【図４６】
2006024179.tif 000048
【図４７】
2006024179.tif 000049
【図４８】
2006024179.tif 000050
【図４９】
2006024179.tif 000051