(57)【特許請求の範囲】
【請求項１】
文書編集装置上で編集される複数の文書を格納し、文書内に含まれる制御情報により範囲が指定された一纏まりの部分である文書断片の単位で、複数の文書間の依存関係に関する管理を行う文書管理装置であって、
複数の前記文書の各々について、当該文書から、他の文書断片に対して依存関係を持つ文書断片を除外して得られたものを、当該文書の文書主部として、当該文書を一意に識別する識別情報に対応付けて記憶するとともに、複数の文書断片の各々について、当該文書断片の属する文書を一意に識別し及び当該文書断片が当該文書断片の属する文書におけるいずれの文書断片であるかを一意に識別する識別情報に対応付けて記憶するための記憶手段と、
各々の前記文書断片に係る前記制御情報であって、当該文書断片が他の文書断片に対して持つ依存関係が一方向複製と双方向複製とのいずれであるかを特定可能にするとともに少なくとも一方向複製について当該文書断片が複製元と複製先とのいずれに該当するかを特定可能にする情報が含まれ、さらに、前記文書断片の全部又は依存関係を持つ文書断片群のうちの一部について、当該文書断片が依存関係を持つ他の文書断片を特定可能にする情報が含まれる制御情報に基づいて、ある文書断片につきその文書断片との間に依存関係を持つ他の文書断片を特定する管理手段と、
前記文書編集装置から所望の文書の要求を受けた場合に、該文書が、前記制御情報を記述することのできる構造をもともと持っていない文書に対して、前記制御情報を記述するための特定の記号列を付与したものであるときは、前記文書編集装置からの指定に応じて、該特定の記号列を含む前記制御情報を付与された状態で該文書を編集用として該文書編集装置へ提供し、または該特定の記号列を含む前記制御情報を削除した状態で該文書を読み出し専用として該文書編集装置へ提供する提供手段とを備え、
前記管理手段は、
前記記憶手段に記憶されている各々の前記文書断片について、当該文書断片に係るバージョンに関する情報を登録した管理テーブルを有し、
前記文書編集装置にて行われた、一方向複製の複製元に該当する文書断片又は双方向複製に係る文書断片に対する編集による該文書断片の内容の変更が受諾できるものであるか否かを、該文書断片の編集前後の内容にかかわらずに、前記管理テーブルに登録されている該文書断片に係るバージョンに関する情報と、前記文書編集装置にて編集された該文書断片に係るバージョンに関する情報との比較結果に基づいて、判断し、該文書断片の内容の変更が受諾できるものであると判断された場合には、該文書断片の内容を更新するとともに、前記制御情報により該書断片が一方向複製の複製元に該当するものであることが示されるときは、該変更を反映させるべき対象となる他の文書断片として、該文書断片に対する一方向複製の複製先に該当するものを、前記制御情報に基づき特定し、特定した該他の文書断片へ該変更を反映させ、前記制御情報により該文書断片が双方向複製に係るものであることが示されるときは、該変更を反映させるべき対象となる他の文書断片として、該編集対象文書断片との間に双方向複製の依存関係を持つものを、前記制御情報に基づき特定し、特定した該他の文書断片へ該変更を反映させることを特徴とする文書管理装置。
【請求項２】
前記管理手段が有する前記管理テーブルは、前記記憶手段に記憶されている各々の前記文書断片について、当該文書断片のバージョンを示す現バージョン、当該文書断片のもととなった文書断片のバージョンを示す前バージョン、当該文書断片に対する最後の編集に係る時刻を示す最終編集時刻、及び当該文書断片に対する最後の編集に係る編集者を示す編集者を登録したものであり、
前記管理手段は、前記判断にあたっては、対象となる前記文書断片について、前記管理テーブルに登録されている該文書断片に係る現バージョンと、前記文書編集装置にて編集された該文書断片に係る前バージョンとが等しい場合、または、それらが等しくなく且つ前記管理テーブルに登録されている該文書断片に係る前バージョン及び編集者と、前記文書編集装置にて編集された該文書断片に係る前バージョン及び編集者とがいずれも等しく且つ前記管理テーブルに登録されている該文書断片に係る最終編集時刻が、前記文書編集装置にて編集された該文書断片に係る最終編集時刻よりも早い場合に、前記文書断片の内容の変更が受諾できるものであると判断することを特徴とする請求項１に記載の文書管理装置。
【請求項３】
前記管理手段は、前記文書編集装置にて行われた前記文書断片に対する編集による該文書断片の内容の変更が受諾できるものでないと判断された場合に、所定の対処手続きを行うための手段を含むことを特徴とする請求項１または２に記載の文書管理装置。
【請求項４】
前記対処手続きを行うための手段は、前記文書編集装置にて行われた前記文書断片に対する編集による該文書断片の内容の変更が受諾できるものでないと判断された旨を前記文書編集装置上へ表示させ、その後に該文書編集装置を介してユーザ入力された該編集を強制的に採用させるかまたは破棄するかの選択指示に従って、前記文書断片の内容の変更が受諾できるものであると判断された場合と同じ処理または該編集の破棄を行うことを特徴とする請求項３に記載の文書管理装置。
【請求項５】
前記対処手続きを行うための手段は、前記文書断片を含む前記文書として、該文書断片の内容の変更を反映させた場合の版と、該文書断片の内容の変更を破棄した場合の版とを記憶しておき、その後に該文書編集装置を介していずれの版を採用するかを選択指示するユーザ入力がなされた際に、該ユーザ入力された選択指示に従って、前記文書断片の版を確定させることを特徴とする請求項３に記載の文書管理装置。
【請求項６】
前記対処手続きを行うための手段は、相互に又は連鎖的に前記依存関係を持つ３以上の前記文書断片のうちの特定のものについてのみ、前記文書編集装置にて行われた該文書断片に対する編集による該文書断片の内容の変更が受諾できるものでないと判断される理由が存在する場合には、該特定の文書断片についてのみ該依存関係を解除するようにしたことを特徴とする請求項３に記載の文書管理装置。
【請求項７】
各々の前記文書断片に、それが最後に前記文書編集装置にて編集された時刻を示す情報を付加しておき、更新後の前記文書断片の持つ前記時刻を示す情報が、更新前の該前記文書断片の持つ前記時刻を示す情報より早くなる場合には、前記文書断片の内容の変更が受諾できるものであると判断された場合と同じ処理を行い、それ以外の場合には、前記編集の破棄を行うことを特徴とする請求項３に記載の文書管理装置。
【請求項８】
前記依存関係には、前記一方向複製及び前記双方向複製の他に、参照が存在し、
前記依存関係が参照である場合、参照に係る前記文書断片の各々に付加される前記制御情報には、当該文書断片が他の文書断片に対して持つ依存関係が参照であることを特定可能にするとともに当該文書断片が参照元であるか参照先であるかを特定可能にする情報が含まれ、
前記文書管理装置は、参照の依存関係における参照元に該当する文書断片の内容が変更される場合にのみ、該変更を通知する情報の前記文書編集装置上での表示を、該参照元の文書断片に対する参照先となる文書断片の前記文書編集装置上での表示と関連付けて行うための処理を行うための手段を更に備えたことを特徴とする請求項１ないし７のいずれか１項に記載の文書管理装置。
【請求項９】
前記文書が構造化文書である場合、該構造化文書の持つ構造の単位を前記文書断片の単位とすることを特徴とする請求項１ないし８のいずれか１項に記載の文書管理装置。
【請求項１０】
前記管理手段を、全文書について１つ設けたことを特徴とする請求項１ないし９のいずれか１項に記載の文書管理装置。
【請求項１１】
前記管理手段を、個々の文書ごとに１つずつ設けたことを特徴とする請求項１ないし９のいずれか１項に記載の文書管理装置。
【請求項１２】
記憶手段と、管理手段と、提供手段とを備え、文書編集装置上で編集される複数の文書を格納し、文書内に含まれる制御情報により範囲が指定された一纏まりの部分である文書断片の単位で、複数の文書間の依存関係に関する管理を行う文書管理装置における文書管理方法であって、
前記記憶手段が、複数の前記文書の各々について、当該文書から、他の文書断片に対して依存関係を持つ文書断片を除外して得られたものを、当該文書の文書主部として、当該文書を一意に識別する識別情報に対応付けて記憶するとともに、複数の文書断片の各々について、当該文書断片の属する文書を一意に識別し及び当該文書断片が当該文書断片の属する文書におけるいずれの文書断片であるかを一意に識別する識別情報に対応付けて記憶手段に記憶するステップと、
前記管理手段が、各々の前記文書断片に係る前記制御情報であって、当該文書断片が他の文書断片に対して持つ依存関係が一方向複製と双方向複製とのいずれであるかを特定可能にするとともに少なくとも一方向複製について当該文書断片が複製元と複製先とのいずれに該当するかを特定可能にする情報が含まれ、さらに、前記文書断片の全部又は依存関係を持つ文書断片群のうちの一部について、当該文書断片が依存関係を持つ他の文書断片を特定可能にする情報が含まれる制御情報に基づいて、ある文書断片につきその文書断片との間に依存関係を持つ他の文書断片を特定する管理ステップと、
前記提供手段が、前記文書編集装置から所望の文書の要求を受けた場合に、該文書が、前記制御情報を記述することのできる構造をもともと持っていない文書に対して、前記制御情報を記述するための特定の記号列を付与したものであるときは、前記文書編集装置からの指定に応じて、該特定の記号列を含む前記制御情報を付与された状態で該文書を編集用として該文書編集装置へ提供し、または該特定の記号列を含む前記制御情報を削除した状態で該文書を読み出し専用として該文書編集装置へ提供するステップとを有し、
前記管理手段は、前記記憶手段に記憶されている各々の前記文書断片について、当該文書断片に係るバージョンに関する情報を登録した管理テーブルを有するものであり、
前記管理ステップは、前記管理手段が、前記文書編集装置にて行われた、一方向複製の複製元に該当する文書断片又は双方向複製に係る文書断片に対する編集による該文書断片の内容の変更が受諾できるものであるか否かを、該文書断片の編集前後の内容にかかわらずに、前記管理テーブルに登録されている該文書断片に係るバージョンに関する情報と、前記文書編集装置にて編集された該文書断片に係るバージョンに関する情報との比較結果に基づいて、判断し、該文書断片の内容の変更が受諾できるものであると判断された場合には、該文書断片の内容を更新するとともに、前記制御情報により該書断片が一方向複製の複製元に該当するものであることが示されるときは、該変更を反映させるべき対象となる他の文書断片として、該文書断片に対する一方向複製の複製先に該当するものを、前記制御情報に基づき特定し、特定した該他の文書断片へ該変更を反映させ、前記制御情報により該文書断片が双方向複製に係るものであることが示されるときは、該変更を反映させるべき対象となる他の文書断片として、該編集対象文書断片との間に双方向複製の依存関係を持つものを、前記制御情報に基づき特定し、特定した該他の文書断片へ該変更を反映させる反映ステップを含むことを特徴とする文書管理方法。
【請求項１３】
前記管理手段が有する前記管理テーブルは、前記記憶手段に記憶されている各々の前記文書断片について、当該文書断片のバージョンを示す現バージョン、当該文書断片のもととなった文書断片のバージョンを示す前バージョン、当該文書断片に対する最後の編集に係る時刻を示す最終編集時刻、及び当該文書断片に対する最後の編集に係る編集者を示す編集者を登録したものであり、
前記反映ステップにおいては、前記管理手段が、前記判断にあたって、対象となる前記文書断片について、前記管理テーブルに登録されている該文書断片に係る現バージョンと、前記文書編集装置にて編集された該文書断片に係る前バージョンとが等しい場合、または、それらが等しくなく且つ前記管理テーブルに登録されている該文書断片に係る前バージョン及び編集者と、前記文書編集装置にて編集された該文書断片に係る前バージョン及び編集者とがいずれも等しく且つ前記管理テーブルに登録されている該文書断片に係る最終編集時刻が、前記文書編集装置にて編集された該文書断片に係る最終編集時刻よりも早い場合に、前記文書断片の内容の変更が受諾できるものであると判断することを特徴とする請求項１２に記載の文書管理方法。
【請求項１４】
文書編集装置上で編集される複数の文書を格納し、文書内に含まれる制御情報により範囲が指定された一纏まりの部分である文書断片の単位で、複数の文書間の依存関係に関する管理を行う文書管理装置としてコンピュータを機能させるためのプログラムであって、
複数の前記文書の各々について、当該文書から、他の文書断片に対して依存関係を持つ文書断片を除外して得られたものを、当該文書の文書主部として、当該文書を一意に識別する識別情報に対応付けて記憶するとともに、複数の文書断片の各々について、当該文書断片の属する文書を一意に識別し及び当該文書断片が当該文書断片の属する文書におけるいずれの文書断片であるかを一意に識別する識別情報に対応付けて記憶手段に記憶するための機能と、
各々の前記文書断片に係る前記制御情報であって、当該文書断片が他の文書断片に対して持つ依存関係が一方向複製と双方向複製とのいずれであるかを特定可能にするとともに少なくとも一方向複製について当該文書断片が複製元と複製先とのいずれに該当するかを特定可能にする情報が含まれ、さらに、前記文書断片の全部又は依存関係を持つ文書断片群のうちの一部について、当該文書断片が依存関係を持つ他の文書断片を特定可能にする情報が含まれる制御情報に基づいて、ある文書断片につきその文書断片との間に依存関係を持つ他の文書断片を特定する管理機能と、
前記文書編集装置から所望の文書の要求を受けた場合に、該文書が、前記制御情報を記述することのできる構造をもともと持っていない文書に対して、前記制御情報を記述するための特定の記号列を付与したものであるときは、前記文書編集装置からの指定に応じて、該特定の記号列を含む前記制御情報を付与された状態で該文書を編集用として該文書編集装置へ提供し、または該特定の記号列を含む前記制御情報を削除した状態で該文書を読み出し専用として該文書編集装置へ提供する機能とをコンピュータに実現させるためのものであるとともに、
前記管理機能は、
前記記憶手段に記憶されている各々の前記文書断片について、当該文書断片に係るバージョンに関する情報を登録した管理テーブルを有するものであり、
前記文書編集装置にて行われた、一方向複製の複製元に該当する文書断片又は双方向複製に係る文書断片に対する編集による該文書断片の内容の変更が受諾できるものであるか否かを、該文書断片の編集前後の内容にかかわらずに、前記管理テーブルに登録されている該文書断片に係るバージョンに関する情報と、前記文書編集装置にて編集された該文書断片に係るバージョンに関する情報との比較結果に基づいて、判断し、該文書断片の内容の変更が受諾できるものであると判断された場合には、該文書断片の内容を更新するとともに、前記制御情報により該書断片が一方向複製の複製元に該当するものであることが示されるときは、該変更を反映させるべき対象となる他の文書断片として、該文書断片に対する一方向複製の複製先に該当するものを、前記制御情報に基づき特定し、特定した該他の文書断片へ該変更を反映させ、前記制御情報により該文書断片が双方向複製に係るものであることが示されるときは、該変更を反映させるべき対象となる他の文書断片として、該編集対象文書断片との間に双方向複製の依存関係を持つものを、前記制御情報に基づき特定し、特定した該他の文書断片へ該変更を反映させるものであることを特徴とするプログラム。
【請求項１５】
前記管理機能が有する前記管理テーブルは、前記記憶手段に記憶されている各々の前記文書断片について、当該文書断片のバージョンを示す現バージョン、当該文書断片のもととなった文書断片のバージョンを示す前バージョン、当該文書断片に対する最後の編集に係る時刻を示す最終編集時刻、及び当該文書断片に対する最後の編集に係る編集者を示す編集者を登録したものであり、
前記管理機能は、前記判断にあたっては、対象となる前記文書断片について、前記管理テーブルに登録されている該文書断片に係る現バージョンと、前記文書編集装置にて編集された該文書断片に係る前バージョンとが等しい場合、または、それらが等しくなく且つ前記管理テーブルに登録されている該文書断片に係る前バージョン及び編集者と、前記文書編集装置にて編集された該文書断片に係る前バージョン及び編集者とがいずれも等しく且つ前記管理テーブルに登録されている該文書断片に係る最終編集時刻が、前記文書編集装置にて編集された該文書断片に係る最終編集時刻よりも早い場合に、前記文書断片の内容の変更が受諾できるものであると判断することを特徴とする請求項１４に記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の文書を管理する文書管理装置、文書管理方法及びプログラムに関する。
【０００２】
【従来の技術】
現在までのデータ管理パラダイムでは、「ファイル」や「データベース」をデータ管理の中心と据え、分散したデータの断片と、ファイルに含まれる断片的な複製を、どのような立場からどのように管理するか、という観点を欠いていた。
【０００３】
しかし、一つの「文書」ないし「ファイル」とは、概念や情報の集合の多様なあり方のうち、一つの形態を示すに過ぎない。例えば、一つのＰＤＡに格納されたスケジュール情報は、そのＰＤＡの使用者の周辺に分散して存在する多種多様なスケジュール情報に対して、その使用者の立場からフィルタをかけて再構成した複製に過ぎない。
【０００４】
【発明が解決しようとする課題】
従来、一つあるいは複数の計算機上に存在する複数の文書の内容の相互無矛盾性を確保する（あるいは、最低限矛盾していることを利用者に明らかにする）ための手法が存在しなかった。特に、一つの文書の中に存在する情報が複数に渡り、それぞれの情報を管理する主体が異なる場合、それぞれの情報の所有者や権限を正しく管理するための手法が存在しなかった。
【０００５】
本発明は、上記事情を考慮してなされたもので、文書間の依存関係を効果的に管理可能な文書管理装置、文書管理方法及びプログラムを提供することを目的とする。
【０００６】
また、本発明は、依存関係を持つ文書間の一貫性を維持することの可能な文書管理装置、文書管理方法及びプログラムを提供することを目的とする。
【０００７】
【課題を解決するための手段】
本発明は、文書編集装置上で編集される複数の文書を格納し、文書内に含まれる制御情報により範囲が指定された一纏まりの部分である文書断片の単位で、複数の文書間の依存関係に関する管理を行う文書管理装置であって、複数の前記文書の各々について、当該文書から、他の文書断片に対して依存関係を持つ文書断片を除外して得られたものを、当該文書の文書主部として、当該文書を一意に識別する識別情報に対応付けて記憶するとともに、複数の文書断片の各々について、当該文書断片の属する文書を一意に識別し及び当該文書断片が当該文書断片の属する文書におけるいずれの文書断片であるかを一意に識別する識別情報に対応付けて記憶するための記憶手段と、各々の前記文書断片に係る前記制御情報であって、当該文書断片が他の文書断片に対して持つ依存関係が一方向複製と双方向複製とのいずれであるかを特定可能にするとともに少なくとも一方向複製について当該文書断片が複製元と複製先とのいずれに該当するかを特定可能にする情報が含まれ、さらに、前記文書断片の全部又は依存関係を持つ文書断片群のうちの一部について、当該文書断片が依存関係を持つ他の文書断片を特定可能にする情報が含まれる制御情報に基づいて、ある文書断片につきその文書断片との間に依存関係を持つ他の文書断片を特定する管理手段と、前記文書編集装置から所望の文書の要求を受けた場合に、該文書が、前記制御情報を記述することのできる構造をもともと持っていない文書に対して、前記制御情報を記述するための特定の記号列を付与したものであるときは、前記文書編集装置からの指定に応じて、該特定の記号列を含む前記制御情報を付与された状態で該文書を編集用として該文書編集装置へ提供し、または該特定の記号列を含む前記制御情報を削除した状態で該文書を読み出し専用として該文書編集装置へ提供する提供手段とを備え、前記管理手段は、前記記憶手段に記憶されている各々の前記文書断片について、当該文書断片に係るバージョンに関する情報を登録した管理テーブルを記憶する手段と、前記文書編集装置にて行われた、一方向複製の複製元に該当する文書断片又は双方向複製に係る文書断片に対する編集による該文書断片の内容の変更が受諾できるものであるか否かを、該文書断片の編集前後の内容にかかわらずに、前記管理テーブルに登録されている該文書断片に係るバージョンに関する情報と、前記文書編集装置にて編集された該文書断片に係るバージョンに関する情報との比較結果に基づいて、判断し、該文書断片の内容の変更が受諾できるものであると判断された場合には、該文書断片の内容を更新するとともに、前記制御情報により該書断片が一方向複製の複製元に該当するものであることが示されるときは、該変更を反映させるべき対象となる他の文書断片として、該文書断片に対する一方向複製の複製先に該当するものを、前記制御情報に基づき特定し、特定した該他の文書断片へ該変更を反映させ、前記制御情報により該文書断片が双方向複製に係るものであることが示されるときは、該変更を反映させるべき対象となる他の文書断片として、該編集対象文書断片との間に双方向複製の依存関係を持つものを、前記制御情報に基づき特定し、特定した該他の文書断片へ該変更を反映させる反映手段とを含むものであることを特徴とする。
【００１１】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。
また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための（あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための）プログラムとしても成立し、該プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
【００１２】
本発明によれば、文書間の依存関係を効果的に管理することが可能になる。
【００１３】
また、本発明によれば、文書の内外に分散して存在する情報に対して統一的な管理手法を提供することができる。例えば、文書／ファイルという計算機にとって利用しやすい形式を利用しつつ、文書を管理主体や内容の起源（ｓｏｕｒｃｅ）別に断片に分割し、それぞれの断片に、他の文書断片との依存情報を埋め込むことで、文書断片の矛盾の検出、自動的な更新等を行い、１つの文書に含まれる多岐に渡る情報をその起源と管理主体を正しく管理することができる。
【００１４】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【００１５】
本発明は、複数の電子文書が部分的に相互に依存する関係を管理するものであるが、電子文書として構造化文書にも構造を持たない文書（以下、非構造化文書）にも適用可能であり、また、具体的な適用分野としては、コンピュータ上のプログラム設定ファイルから、アドレス帳、スケジュールデータの部分的な共有（引用−依存関係の一種）まで多岐に渡るものである。
【００１６】
まず、本発明を電子文書の一例としての構造化文書に適用する場合について説明する。後に、非構造文書に本発明を適用する場合についての説明を行い、最後に本発明に派生する適用についての説明を行う。
【００１７】
近年、インターネットやイントラネットなどの通信路を介して交換される標準的な文書形式の一つに、ＨＴＭＬ文書やＸＭＬ文書などがある。なお、ＨＴＭＬ文書に関しては、「ＨＴＭＬ  ４．０１  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｗ３ＣＲｅｃｏｍｍｅｎｄａｔｉｏｎ  ２４  Ｄｅｃｅｍｂｅｒ  １９９９」に詳しい。ＸＭＬ文書に関しては、「Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＸＭＬ）１．０（Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ）」に詳しい。
【００１８】
まず、本実施形態の概要について説明する。
【００１９】
ある文書の内容が、部分的に他の文書の一部に依存している場合、その依存関係を、該ある文書の作成者ないしは管理者が、後述する依存関係を管理するための依存関係管理機構（あるいは依存関係管理エンジン）に登録する。編集された文書を登録（更新）する際に、依存関係管理機構が依存関係を検査し、矛盾が発生していたら（一貫性が保持されないと判定されたら）、その解消のために必要な動作を行う。
【００２０】
図３２は、相互に相関している文書が編集された場合に、本実施形態において想定する処理の流れの一例を示したものである。図３２の例では、利用者が３名おり（ユーザＡ、ユーザＢ、ユーザＣとする）、それぞれ異なる文書（文書ａ、文書ｂ、文書ｃとする）を所有・編集・参照しているものとする。
【００２１】
まず、（ａ）に示す初期状態（ＩＮＩＴＩＡＬ  ＳＴＡＴＥ）において、文書間には後述する手段により相関関係が定義されている。ここで、双方向の矢印は相互に編集可能（ｓｈａｒｅ）を示し、片方向の矢印は一方向参照（ｍｉｒｒｏｒ）を示す。
【００２２】
ここで、（ｂ）に示すように、ある時点でユーザＢが文書ｂのうちからある断片を編集したとする。
【００２３】
すると、（ｃ）に示すように、編集された文書ｂが、文書ｂを管理する管理機構に渡された時点で、該管理機構により検査され、対応する他の文書ａ，ｃに編集操作の内容を通知する。
【００２４】
そして、（ｄ）に示すように、他の文書ａ，ｃを管理している管理機構は、通知された内容を元に、該当する部分を更新する。
【００２５】
本実施形態では、依存関係の管理のために、文書に対して、「文書断片」という要素を、文書管理の枠組みに導入する。文書断片は、ある文書の任意の一部分を識別する。そして、上記の依存管理は、文書断片単位で行う。なお、文書のうちの文書断片以外の部分は、文書主部と呼ぶ。
【００２６】
この手法で管理できる依存関係には、例えば、「一方向複製（ｍｉｒｒｏｒ）」と「双方向複製（ｓｈａｒｅ）」がある。
【００２７】
「一方向複製（ｍｉｒｒｏｒ）」は、例えば、情報を「カットアンドペースト」のようなインターフェイスを用いて一方の文書（複製元）から他方の文書（複製先）へ複製した場合に、複製元の文書断片には、複製元であること及び依存関係の種類が一方向複製であることを示す情報（例えば、ｍｉｒｒｏｒｅｄ）並びに複製先の文書断片を特定するための情報（例えば、複製先の文書断片を含む文書の識別子と該文書における該文書断片の識別子）を書き込み、複製先の文書断片には、複製先であること及び依存関係の種類が一方向複製であることを示す情報（例えば、ｍｉｒｒｏｒ）並びに複製元の文書断片を特定するための情報（例えば、複製元の文書断片を含む文書の識別子と該文書における該文書断片の識別子）を書き込むことにより（なお、少なくとも複製元か複製先に依存関係を持つ相手を特定するための情報が書き込まれていれば、複製元と複製先との対応を特定できるので、複製先の文書断片を特定するための情報又は複製元の文書断片を特定するための情報のいずれかを省略する方法もある）、設定され、複製元に加えられた変更を、複製先に自動的に反映する機能を持つものである。なお、複製元に加えられた変更が、複製先に自動的に反映された場合には、例えば、複製先に加えられた変更が、破棄されるようにする。あるいは、複製先への変更自体を禁止するようにすることもできる。
【００２８】
「双方向複製（ｓｈａｒｅ）」は、例えば、情報を「カットアンドペースト」のようなインターフェイスを用いて一方の文書（複製元）から他方の文書（複製先）へ複製した場合に、複製元の文書断片には、複製元であること及び依存関係の種類が双方向複製であることを示す情報（例えば、ｓｈａｒｅｄ）並びに複製先の文書断片を特定するための情報を書き込み、複製先の文書断片には、複製先であること及び依存関係の種類が双方向複製であることを示す情報（例えば、ｓｈａｒｅ）並びに複製元の文書断片を特定するための情報を書き込むことにより（なお、上記と同様に、複製先の文書断片を特定するための情報又は複製元の文書断片を特定するための情報のいずれかを省略する方法もある）、設定され、複製元に加えられた変更を複製先に自動的に反映し、かつ、複製先に加えられた変更を複製元に反映する機能を持つものである。この場合、複製元と複製先の両方に同時に加えられた異なる変更が衝突する可能性があるので、本実施形態では、この変更の衝突を回避するための手段（後述する）を設けている。なお、双方向複製のように関係する全ての文書断片が同じ意味を持つ場合には、複製元と複製先とを特に区別しない方法も可能である。
【００２９】
なお、依存関係としては、他の形態も可能であり、例えば、一方向複製（ｍｉｒｒｏｒ）の変形として「参照（ｒｅｆｅｒ）」がある。なお、ｒｅｆｅｒについては後述する。
【００３０】
なお、以下、最初の実施形態では、構造化文書の例としてＸＭＬ文書に対する適用を行う。
【００３１】
ここで、ＸＭＬについて簡単に説明する。
【００３２】
ＸＭＬでは、一つの文書を要素（エレメント（ｅｌｅｍｅｎｔ））の集合として構成する。根要素（ルートエレメント（ｒｏｏｔ  ｅｌｅｍｅｎｔ））と呼ばれる特別な要素以外のすべての要素は、一つの親要素を持つ。また、すべての要素は、複数の属性（ａｔｔｒｉｂｕｔｅ）、および内容として文（ＣＤＡＴＡ）、子要素（サブエレメント（ｓｕｂ−ｅｌｅｍｅｎｔ））の二種類の任意の組合せを持つことができる。
【００３３】
記法は、
<element attribute=“value” ... > (内容) </element>
の形式を取る。ここで、elementは、要素の名前、attribute=“value”は、要素が持つ属性の名前とその値である。また、最初の記号＜から最後の記号＞までが要素である。また、内容が空の場合には、<element></element>の代わりに<element/>という省略記法が許される。
【００３４】
以下に、単純なＸＭＬ文書の一例を示す。
0003934965.tif 000002
ただし、空白文字による字下げはＸＭＬ文書の解釈に全く影響を与えないので、空白文字による字下げを施して記述しても、施さないで記述しても構わない（すなわち、両者は同値である）。例えば、以下の文書は、上記の文書と同値である。
<?xml version=“1.0”>
<root><element><subelement attribute=“value”/></element></root>
なお、本明細書及び図面においては、見やすさを優先して、ＸＭＬ文書の例に字下げ（ｉｎｄｅｎｔ）を施して記述している。
【００３５】
（構造化文書に対する本発明の適用例）
以下では、本実施形態をより詳しく説明する。
【００３６】
なお、以下では、依存関係として、一方向複製（ｍｉｒｒｏｒ）と双方向複製（ｓｈａｒｅ）を例にとって説明する。
【００３７】
また、以下では、異なる文書の文書断片の間の依存関係について説明するが、同一の文書内の文書断片間に依存関係を付与し管理することも可能である。
【００３８】
図１に、本発明の一実施形態に係る電子文書管理システムの構成例を示す。図１に示されるように、本電子文書管理システムは、大きく分けて、ＸＭＬ文書一括管理装置３とＸＭＬ文書参照・編集装置１からなる。
【００３９】
本電子文書管理システムにおいて、ＸＭＬ文書一括管理装置とＸＭＬ文書参照・編集装置の実際の構成方法については、種々のバリエーションが可能である。例えば、
（１−１）ＸＭＬ文書一括管理装置およびＸＭＬ文書参照・編集装置を単一の装置に組み込んで機能させるようにする構成や、
（１−２）それらを別個独立の装置にそれぞれ組み込むとともにそれらがネットワークを通じて結合できるようにする構成、
が考えられる（図１は、後者の場合を例示したものである）。また、
（２−１）１つのＸＭＬ文書一括管理装置に対して１つのＸＭＬ文書参照・編集装置のみが対応する構成や、
（２−２）１つのＸＭＬ文書一括管理装置に対して複数のＸＭＬ文書参照・編集装置が対応する構成が考えられる（図１では、後者の場合を例示したものである）。
【００４０】
以下では、図１に示すように、ＸＭＬ文書一括管理装置とＸＭＬ文書参照・編集装置は独立した装置であり、かつ、１つのＸＭＬ文書一括管理装置に対して複数のＸＭＬ文書参照・編集装置が対応する場合を例にとって説明する（もちろん、他の構成の仕方の組合せを採用しても構わない）。
【００４１】
さて、図１のＸＭＬ文書一括管理装置３は、ＸＭＬ文書を一括管理するための装置であり、他方、ＸＭＬ文書参照・編集装置１は、ＸＭＬ文書一括管理装置３で一括管理しているＸＭＬ文書の参照・編集を行うための装置である。ＸＭＬ文書参照・編集装置１がＸＭＬ文書の参照・編集を行う際には、ＸＭＬ文書一括管理装置３で管理されているＸＭＬ文書に対して直接行うのではなく、ＸＭＬ文書参照・編集装置１上に、（ＸＭＬ文書一括管理装置３で管理されている）ＸＭＬ文書の複製を作成し、この複製に対して参照・編集を実行する。ＸＭＬ文書参照・編集装置１上で行った編集内容は、ＸＭＬ文書一括管理装置３に送信し、ＸＭＬ文書一括管理装置３で一括管理するＸＭＬ文書（オリジナルのＸＭＬ文書）に反映する。
【００４２】
ＸＭＬ文書一括管理装置３で一括管理するＸＭＬ文書の複製をＸＭＬ文書参照・編集装置１上に作成する際には、
（３−１）「ＸＭＬ文書全体」をＸＭＬ文書一括管理装置３からＸＭＬ文書参照・編集装置１へ送信する方法や、
（３−２）ＸＭＬ文書一括管理装置３からＸＭＬ文書一括管理装置１へ「前回」送信したＸＭＬ文書と「今回」送信しようとしているＸＭＬ文書との「差分」のみを、ＸＭＬ文書一括管理装置３からＸＭＬ文書一括管理装置１へ送信する（ただし、まだ該当するＸＭＬ文書を一度も送信しておらず、「前回」送信したＸＭＬ文書に相当するものがない場合には、「ＸＭＬ文書全体」を送信することになる）方法、
が考えられる。
【００４３】
他方、ＸＭＬ文書参照・編集装置１で行った編集内容をＸＭＬ文書一括管理装置３に送信する際には、
（４−１）毎回、「ＸＭＬ文書全体」をＸＭＬ文書参照・編集装置１からＸＭＬ文書一括管理装置３へ送信する方法や、
（４−２）「編集を行う前」のＸＭＬ文書と「編集を行った後」のＸＭＬ文書との「差分」のみを、ＸＭＬ文書参照・編集装置１からＸＭＬ文書一括管理装置３へ送信する（ただし、ＸＭＬ文書参照・編集装置１でＸＭＬ文書の新規作成を行った場合には、「ＸＭＬ文書全体」を送信することになる）方法、
が考えられる。
【００４４】
以下では、（３−１）のＸＭＬ文書全体を送信する場合と、（４−２）の編集前後のＸＭＬ文書の差分のみを送信する場合とを例にとって説明する（もちろん、他の構成の仕方の組合せを採用しても構わない）。
【００４５】
さて、１つのＸＭＬ文書一括管理装置３に対して、複数のＸＭＬ文書参照・編集装置１が対応する場合、ＸＭＬ文書一括管理装置３で一括管理するＸＭＬ文書のうち、１つのＸＭＬ文書が、同時に複数のＸＭＬ文書参照・編集装置１で独立に参照・編集される場合が存在する。このため、複数のＸＭＬ文書参照・編集装置１が同一のＸＭＬ文書に対して、一貫性のない編集を行う場合が発生し得る。そこで、本実施形態のＸＭＬ文書一括管理装置３では、ＸＭＬ文書参照・編集装置１から送信された編集内容を受信した際に、該編集内容を解析し、一貫性を保ちながら更新内容をＸＭＬ文書に反映するようにする。
【００４６】
以下では、電子文書がＸＭＬ文書である場合において、一方向複製（ｍｉｒｒｏｒ）、双方向複製（ｓｈａｒｅ）をどうやって実現するかに関して、具体例を用いて説明する。より具体的には、一方向複製元（ｍｉｒｒｏｒｅｄエレメント）と一方向複製先（ｍｉｒｒｏｒエレメント）の関係、双方向複製元（ｓｈａｒｅｄエレメント）と双方向複製先（ｓｈａｒｅエレメント）の関係をどのようにしてＸＭＬ文書に埋め込むかに関して説明する。
【００４７】
図２および図３に、ＸＭＬ文書参照・編集装置１で編集中のＸＭＬ文書の具体例を示す。
【００４８】
図２に示したＸＭＬ文書は、「スケジュール文書」の例であり、内容としては「下期戦略会議に関する情報」と「定例会議の情報」が格納されている例になっている。このＸＭＬ文書には、「Ｓｃｈｅｄｕｌｅ−１」という文書名（ＸＭＬ文書識別子）が与えられているものとする。
【００４９】
図３に示したＸＭＬ文書は、「メモ文書」の例であり、内容としては「下期戦略会議開催通知」が格納されている例になっている。このＸＭＬ文書には、「ｍｅｍｏ−１」という文書名が与えられているものとする。
【００５０】
ここで、図２のＸＭＬ文書中に記述されている「下期戦略会議」と図３のＸＭＬ文書中に記述されている「下期戦略会議」は、同一の会議を指し示しているものとする。また、この下期戦略会議会議に関する情報のうち、「開催場所」や「開始時刻」など一部のＸＭＬ文書断片は、スケジュール文書とメモ文書の両方に格納されている。
【００５１】
ここで、同一の情報を指し示し、一方向複製元と一方向複製先の関係にあるＸＭＬ文書断片は、「ｍｉｒｒｏｒｅｄエレメント」と「ｍｉｒｒｏｒエレメント」を用いてＸＭＬ文書中に表現するものとする。一方向複製先のＸＭＬ文書断片を含むＸＭＬ文書において、該一方向複製先のＸＭＬ文書断片が参照する「一方向複製元のＸＭＬ文書断片」は、電子文書管理システム中でｍｉｒｒｏｒｅｄエレメントに一意に与えられる識別子を用いて指定する。
【００５２】
例えば、図２中のｉｄ（エレメント識別子）＝“ｅｓ９”を保持するｍｉｒｒｏｒｅｄエレメントと図３中のｉｄ（エレメント識別子）＝“ｅｓ１１”を保持するｍｉｒｒｏｒエレメントは、ともに下期戦略会議の開始時刻を表しており、一方向複製元と一方向複製先の関係にある。この２つのエレメントが一方向複製元と一方向複製先の関係にあることは、図３中の一方向複製エレメントが、値“ｓｃｈｅｄｕｌｅ−１：ｅｓ９”を保持する「ｉｄｒｅｆ属性」（ここでは、“ＸＭＬ文書識別子：エレメント識別子”）を保持することにより、対応付けられている。
【００５３】
また、同一の情報を指し示し、双方向複製元と双方向複製先の関係にあるＸＭＬ文書断片は、「ｓｈａｒｅエレメント」と「ｓｈａｒｅｄエレメント」を用いてＸＭＬ文書中に表現するものとする。双方向複製先のＸＭＬ文書断片を含むＸＭＬ文書において、該双方向複製先のＸＭＬ文書断片が参照する「双方向複製元のＸＭＬ文書断片」は、電子文書管理システム中でｓｈａｒｅｄエレメントに一意に与えられる識別子を用いて指定する。
【００５４】
また、例えば、図２中のｉｄ（エレメント識別子）＝“ｅｓ５”を保持するｓｈａｒｅｄエレメントと図３中のｉｄ（エレメント識別子）＝“ｅｓ１２”を保持するｓｈａｒｅエレメントは、ともに下期戦略会議の開催場所を表しており、双方向複製元と双方向複製先の関係にある。この２つのエレメントが双方向複製元と双方向複製先の関係にあることは、図３中の双方向複製エレメントが、値“ｓｃｈｅｄｕｌｅ−１：ｅｓ５”を保持する「ｉｄｒｅｆ属性」（ここでは、“ＸＭＬ文書識別子：エレメント識別子”）を保持することにより、対応付けられている。
【００５５】
上記では、一方向複製元と一方向複製先の関係や、双方向複製元と双方向複製先の関係を、エレメントが保持する識別子を用いて表すものとしたが、本電子文書管理システムで、エレメントに対して識別子を作成・付与するのは、ＸＭＬ文書一括管理装置３とＸＭＬ文書参照・編集装置１の両方である。
【００５６】
ところで、ＸＭＬ文書一括管理装置で作成する識別子について考えると、これは、ＸＭＬ文書参照・編集装置において作成されるＸＭＬ文書断片をＸＭＬ文書一括管理装置で一括管理するＸＭＬ文書に反映する際に作成されるものであるから、ＸＭＬ文書参照・編集装置で作成した直後でまだＸＭＬ文書一括管理装置に反映されていないｍｉｒｒｏｒｅｄエレメントやｓｈａｒｅｄエレメントをｍｉｒｒｏｒエレメントやｓｈａｒｅエレメントから指定する目的には利用できないことになる。また、ＸＭＬ文書参照・編集装置で作成する識別子について考えると、１つのＸＭＬ文書一括管理装置に対して複数のＸＭＬ文書参照・編集装置が対応することから、システムにおいて一意な識別子を作成しようとすると、ＸＭＬ文書参照・編集装置で作成する識別子は、どうしてもＸＭＬ文書一括管理装置で作成する識別子と比較して、サイズが大きくなってしまう。
【００５７】
そこで、本実施形態の電子文書管理システムでは、ＸＭＬ文書一括管理装置で作成する識別子と、ＸＭＬ文書参照・編集装置で作成する識別子の弱点を相互に補うために、以下のような方法を用いる。すなわち、ＸＭＬ文書断片（ｍｉｒｒｏｒｅｄエレメント、ｓｈａｒｅｄエレメント）がＸＭＬ文書参照・編集装置１において作成されたら、ＸＭＬ文書参照・編集装置１で「仮識別子」を作成し、これを該ＸＭＬ文書断片に付与する。その後、ＸＭＬ文書断片をＸＭＬ文書一括管理装置３において一括管理するＸＭＬ文書に反映する際に、ＸＭＬ文書一括管理装置３で新たに「正式識別子」を作成し、これを該ＸＭＬ文書断片に付与する。その際、該ＸＭＬ文書断片に付与された仮識別子と正式識別子との対応を、識別子対応管理テーブルに登録する。
【００５８】
ｍｉｒｒｏｒｅｄエレメント、ｓｈａｒｅｄエレメント、ｓｈａｒｅｄエレメントは、「ｖｅｒｓｉｏｎ属性」と「ｌａｓｔ−ｍｏｄｉｆｉｅｄ属性」を保持する。
【００５９】
ｖｅｒｓｉｏｎ属性は、ＸＭＬ文書参照・編集装置１で現在編集中のＸＭＬ文書中のＸＭＬ文書断片が、どのバージョンのものをもとにして編集されているかを（すなわち、ＸＭＬ文書一括管理装置３からの読み出し時に持っているバージョンを）表すものである。
【００６０】
ｌａｓｔ−ｍｏｄｉｆｉｅｄ属性は、ＸＭＬ文書参照・編集装置１で編集中のＸＭＬ文書中のＸＭＬ文書断片が、一番最後にＸＭＬ文書参照・編集装置１において編集された時刻を表す。
【００６１】
これらの情報は、ＸＭＬ文書参照・編集装置１における編集内容をＸＭＬ文書一括管理装置３に反映する際に、ＸＭＬ文書の一貫性を保つためのもととなる情報として用いられる。
【００６２】
本電子文書管理システムで双方向複製されるすべてのエレメントは、「バージョン番号」を保持しており、ＸＭＬ文書一括管理装置３からＸＭＬ文書を読み出す際に、その読み出し時にｓｈａｒｅｄエレメントやｓｈａｒｅエレメントが保持しているバージョン番号が、ｖｅｒｓｉｏｎ属性に付与され、ＸＭＬ文書参照・編集装置１に送信される。ただし、ＸＭＬ文書参照・編集装置１で新規に作成されたｍｉｒｒｏｒｅｄエレメントやｓｈａｒｅｄエレメントには、バージョン番号として“１”が付与され、ＸＭＬ文書参照・編集装置１で新規に作成されたｓｈａｒｅエレメントには、双方向複製元のｓｈａｒｅｄエレメントと同一のバージョン番号が付与される。ｖｅｒｓｉｏｎ属性値は、編集のもととなるＸＭＬ文書断片のバージョン番号であるから、ＸＭＬ文書参照・編集装置１でＸＭＬ文書を編集している間に値は変化しない。
【００６３】
本電子文書管理システムで一方向複製あるいは双方向複製されるすべてのエレメントは、「最終編集時刻」を保持しており、ＸＭＬ文書一括管理装置３からＸＭＬ文書を読み出す際に、その読み出し時にｍｉｒｒｏｒｅｄエレメント、ｓｈａｒｅｄエレメントまたはｓｈａｒｅエレメントが保持している最終編集時刻が、ｌａｓｔ−ｍｏｄｉｆｉｅｄ属性に付与され、ＸＭＬ文書参照・編集装置１に送信される。ただし、ＸＭＬ文書参照・編集装置１で新規に作成されたｍｉｒｒｏｒｅｄエレメントやｓｈａｒｅｄエレメントには、当該エレメントの作成時刻が付与され、ＸＭＬ文書参照・編集装置１で新規に作成されたｓｈａｒｅエレメントには、双方向複製元のｓｈａｒｅｄエレメントと同一の最終編集時刻が付与される。ｌａｓｔ−ｍｏｄｉｆｉｅｄ属性は、ＸＭＬ文書断片の最終編集時刻であるから、ＸＭＬ文書断片の値が編集されるごとに、ＸＭＬ文書参照・編集装置１によって編集時刻が与えられて変化する。
【００６４】
ＸＭＬ文書参照・編集装置１において、ＸＭＬ文書の参照・編集が終了したら、ＸＭＬ文書参照・編集装置１からＸＭＬ文書一括管理装置３に編集内容を送信し、ＸＭＬ文書一括管理装置３において一括管理するＸＭＬ文書に編集内容を反映する。前述のように、スケジュール文書やメモ文書など本実施形態で扱うＸＭＬ文書は、ＸＭＬ文書断片と、ＸＭＬ文書主部（ＸＭＬ文書断片以外の部分）からなるが、本実施形態では、ＸＭＬ文書参照・編集装置１で参照・編集したＸＭＬ文書は、ＸＭＬ文書断片とＸＭＬ文書主部を別々にＸＭＬ文書一括管理装置３で一括管理する。
【００６５】
ＸＭＬ文書参照・編集装置１から送信されるＸＭＬ文書の編集内容（ここでは、差分情報）をＸＭＬ文書一括管理装置３で受信した後、ＸＭＬ文書一括管理装置３において該編集内容を、ＸＭＬ文書のＸＭＬ文書断片に関する編集とＸＭＬ文書主部に関する編集とに分離し、それぞれ異なる領域に格納する。この際、複数のＸＭＬ文書参照・編集装置１が同一のＸＭＬ文書に対して、一貫性のない編集を行う場合があり得るので、ＸＭＬ文書一括管理装置３は、ＸＭＬ文書参照・編集装置１から送信される編集内容を受信した後、該編集内容を解析し、一貫性を保ちながら、更新内容を一括管理する情報に反映するようにしている。
【００６６】
例えば、図３に示したＸＭＬ文書をＸＭＬ文書一括管理装置３で一括管理するＸＭＬ文書に反映させた結果を、図４、図５に示す。図４は、ＸＭＬ文書主部を、図５は、ＸＭＬ文書断片を管理するためのＸＭＬ文書断片管理テーブルを表している。
【００６７】
図５の管理テーブルの各ＸＭＬ文書断片は、以下の８つの値を保持する。
「ＸＭＬ文書識別子」は、ＸＭＬ文書断片を含むＸＭＬ文書のＸＭＬ文書識別子である。
「エレメント識別子」は、ＸＭＬ文書断片のエレメント識別子である。つまり、ｍｉｒｒｏｒｅｄエレメントまたはｓｈａｒｅｄエレメントのエレメント識別子のことである。
「タイプ」は、ＸＭＬ文書断片のタイプである。ＸＭＬ文書断片の参照方式により、一方向複製または双方向複製のいずれかに対応する値を取る。
「前バージョン」は、該管理テーブルに登録されているＸＭＬ文書断片のもととなったＸＭＬ文書断片のバージョンである。新規に作成されたＸＭＬ文書断片の前バージョンは０と定めるものとする。
「現バージョン」は、該管理テーブルに登録されているＸＭＬ文書断片のバージョンである。新規に作成されたＸＭＬ文書断片のバージョンは１と定めるものとする。
「最終編集時刻」は、該管理テーブルに登録されているＸＭＬ文書断片をＸＭＬ文書参照・編集装置１で最後に編集した時刻である。
「編集者」は、該管理テーブルに登録されているＸＭＬ文書断片をＸＭＬ文書参照・編集装置１上で最後に編集したユーザを示す情報である。
「ＸＭＬ文書断片の値」は、一方向複製または双方向複製されるテキストである。
【００６８】
ここでは、ＸＭＬ文書識別子とエレメント識別子との組が、ＸＭＬ文書断片を一意に識別する（ｉｄｒｅｆ属性）。
【００６９】
前バージョン、現バージョン、最終編集時刻、編集者の４つの値は、ＸＭＬ文書参照・編集装置１でＸＭＬ文書に対して行われた編集をＸＭＬ文書一括管理装置３に反映する際に、ＸＭＬ文書の一貫性を判定するためのもととなる情報として用いられる。
【００７０】
次に、本電子文書管理システムの構成・動作についてより詳しく説明する。
【００７１】
まず、ＸＭＬ文書一括管理装置３に関して説明する。
【００７２】
図１に示されるように、本実施形態のＸＭＬ文書一括管理装置３は、ＸＭＬ文書主部格納部３０１、ＸＭＬ文書主部格納部制御部３０２、ＸＭＬ文書主部管理部３０３、ＸＭＬ文書断片格納部３１１、ＸＭＬ文書断片格納部制御部３１２、ＸＭＬ文書断片管理部３１３、識別子生成部３０４、一時識別子管理部３０５、ＸＭＬ文書結合部３０６、ＸＭＬ文書送信部３０７、ＸＭＬ文書差分受信部３０８、ＸＭＬ文書差分分離部３０９を備えている。
【００７３】
識別子生成部３０４は、電子文書管理システム中で一意な正式識別子を生成する。生成した正式識別子は、後述するＸＭＬ文書主部管理部３０３において、ＸＭＬ文書のエレメントに付与される。
【００７４】
一時識別子管理部３０５は、ＸＭＬ文書一括管理装置３で作成された正式識別子とＸＭＬ文書参照・編集装置１で作成された仮識別子との対応を管理する。対応は、図６に示した識別子対応管理テーブルで管理される。後述するＸＭＬ文書断片管理部３１３から新しい正式識別子と仮識別子との組が通知されたら、これを該管理テーブルに格納する。また、ＸＭＬ文書断片管理部３１３から新しい仮識別子に対応する正式識別子問い合わせを受信したら、該管理テーブルを検索して正式識別子をＸＭＬ文書断片管理部３１３に送信する。さらに、対応を保持する必要がなくなった（もしくは、必要がなくなったとみなせるような（例えば、登録されてから長時間経っている、最後に参照されてから長時間経っている、など））正式識別子と仮識別子の組を管理テーブルから削除する。
【００７５】
ＸＭＬ文書主部格納部３０１は、ＸＭＬ文書のＸＭＬ文書主部を格納する。そして、ＸＭＬ文書主部格納部制御部３０２に格納しているＸＭＬ文書主部を送信し、また、ＸＭＬ文書主部格納部制御部３０２から送信されるＸＭＬ文書主部を受信し格納する。
【００７６】
ＸＭＬ文書主部格納部制御部３０２は、ＸＭＬ文書主部格納部３０１から送信されるＸＭＬ文書主部を受信し、これをＸＭＬ文書結合部３０６に送信する。また、ＸＭＬ文書主部管理部３０３から送信されるＸＭＬ文書主部を受信し、これをＸＭＬ文書主部格納部制御部３０２に送信する。
【００７７】
ＸＭＬ文書断片格納部３１１は、ＸＭＬ文書のＸＭＬ文書断片を格納する。そして、ＸＭＬ文書断片格納部制御部３１２にＸＭＬ文書断片を送信し、また、ＸＭＬ文書断片格納部制御部３１２から送信されるＸＭＬ文書断片を受信し格納する。
【００７８】
ＸＭＬ文書断片格納部制御部３１２は、ＸＭＬ文書断片格納部３１１から送信されるＸＭＬ文書断片を受信し、これをＸＭＬ文書結合部３０６に送信する。また、ＸＭＬ文書断片管理部３１３から送信されたＸＭＬ文書断片を受信し、これをＸＭＬ文書断片格納部３１１に送信する。
【００７９】
ＸＭＬ文書結合部３０６は、読み出し時において、ＸＭＬ文書主部格納部制御部３０２から送信されるＸＭＬ文書主部とＸＭＬ文書断片格納部制御部３１２から送信されるＸＭＬ文書断片とを受信し、両者を結合して、ＸＭＬ文書を作成する。例えば、図４のようなＸＭＬ文書主部と図５のようなＸＭＬ文書断片を受信し、図３のようなＸＭＬ文書を作成する。また、作成したＸＭＬ文書をＸＭＬ文書送信部３０７に送信する。
【００８０】
ＸＭＬ文書送信部３０７は、読み出し時において、ＸＭＬ文書結合部３０６から送信されるＸＭＬ文書を受信し、これを（例えば、ネットワークを介して）ＸＭＬ文書参照・編集装置１に送信する。
【００８１】
ＸＭＬ文書差分受信部３０８は、書き込み時において、ＸＭＬ文書参照・編集装置１から（例えば、ネットワークを介して）送信されるＸＭＬ文書の差分を受信し、ＸＭＬ文書差分分離部３０９に送信する。
【００８２】
ＸＭＬ文書差分分離部３０９は、書き込み時において、ＸＭＬ文書差分受信部３０８から送信されるＸＭＬ文書の差分を、ＸＭＬ文書主部の差分とＸＭＬ文書断片の差分とに分離する。そして、ＸＭＬ文書主部の差分をＸＭＬ文書主部管理部３０３に送信し、ＸＭＬ文書断片の差分をＸＭＬ文書断片管理部３１３に送信する。
【００８３】
ＸＭＬ文書主部管理部３０３は、書き込み時において、ＸＭＬ文書差分分離部３０９から送信されるＸＭＬ文書主部の差分を受信する。また、ＸＭＬ文書主部のエレメントのうち、正式識別子が付与されていないものに対して、識別子生成部３０４を用いて生成された正式識別子を、付与する。また、ＸＭＬ文書主部の差分を解析し、ＸＭＬ文書の一貫性を崩さないと判断されたもののみを、ＸＭＬ文書主部格納部制御部３０２に送信する。
【００８４】
あるＸＭＬ文書のＸＭＬ文書主部は他のＸＭＬ文書との依存関係を持たないので、ＸＭＬ文書主部の編集については、該あるＸＭＬ文書に閉じて一貫性の判定を行うだけで済む。なお、ＸＭＬ文書主部の差分を反映した場合に一貫性が保持されるか否かの判定方法については、どのような方法を用いても構わない（公知の方法によって構わない）。
【００８５】
あるいは、ＸＭＬ文書主部の編集については、常に一貫性が保持されるものとみなして、一貫性の判定を省き、常に反映するような構成も可能である。
【００８６】
ＸＭＬ文書断片管理部３１３は、書き込み時において、ＸＭＬ文書差分分離部３０９から送信されるＸＭＬ文書断片の差分を受信する。ＸＭＬ文書断片の差分に含まれるＸＭＬ文書断片のエレメントは、識別子を保持しないか、または次のいずれかの識別子を保持する。すなわち、
（１）識別子を保持しない、
（２）正式識別子を保持する、
（３）一時識別子管理部３０５に登録済みの仮識別子を保持する、
（４）一時識別子管理部３０５に未登録の仮識別子を保持する、
のいずれかである。
【００８７】
上記の（２）以外の場合には、それぞれ、以下のような処理を行う。
【００８８】
（１）のようにエレメントが識別子を保持しない場合には、識別子生成部３０４を用いて生成された正式識別子を付与する。
【００８９】
（３）のようにエレメントが一時識別子管理部３０５に登録済みの仮識別子を保持する場合には、仮識別子を正式識別子に置き換える。
【００９０】
（４）のようにエレメントが一時識別子管理部３０５に未登録の仮識別子を保持する場合には、仮識別子を識別子生成部３０４を用いて新たに生成された正式識別子に置き換えるのと同時に、今まで付与されていた仮識別子と新たに付与された正式識別子との組を一時識別子管理部３０５に登録する。
【００９１】
また、ＸＭＬ文書断片管理部３１３は、該ＸＭＬ文書断片の差分を解析し、ＸＭＬ文書断片の差分のうち、ＸＭＬ文書の一貫性を崩さないと判定されたもののみを、ＸＭＬ文書断片格納部制御部３１２に送信する。
【００９２】
この一貫性を保持するか否かの判定を行う際には、ＸＭＬ文書一括管理装置３に現在登録されているＸＭＬ文書断片と、新たにＸＭＬ文書一括管理装置３に反映しようとしているＸＭＬ文書断片とが保持する、所定の情報を用い、差分の反映を実行するかどうか決定する。
【００９３】
以下、差分をＸＭＬ文書断片に反映した場合に、一貫性が保持されているかどうか判定する手続きに関して詳しく説明する。
【００９４】
ＸＭＬ文書一括管理装置３に現在登録されているＸＭＬ文書断片と、新たにＸＭＬ文書一括管理装置３に反映しようとしているＸＭＬ文書断片とが保持する、次の４つの情報を用い、差分の反映を実行するかどうか決定する。
（１）前バージョン
（２）現バージョン
（３）最終編集時刻
（４）編集者
ＸＭＬ文書一括管理装置３に現在登録されているＸＭＬ文書断片が保持する４つの情報は、例えば、図５のテーブルにおける４〜７番目の行に記載されている情報が、これに相当する。
【００９５】
ＸＭＬ文書一括管理装置３に新たに反映しようとしているＸＭＬ文書断片が保持する４つの情報のうち、（１）の前バージョンは、ｖｅｒｓｉｏｎ属性に、（３）の最終編集時刻は、ｌａｓｔ−ｍｏｄｉｆｉｅｄ属性に、それぞれ格納されている。
【００９６】
これらの情報を用いて差分の反映が一貫性を保持するかどうかを判定する処理手順例を以下に示す。もちろん、一貫性判定手順には種々のバリエーションが可能である。例えば、これら４つの情報を用いた他の一貫性判定手順だけでなく、これら４つの情報の一部を用いた方法や、これら４つの情報の全部又は一部に他の情報を加えたものを用いた方法など、種々の方法が可能である。
【００９７】
図７及び図８に、あるエレメント値の編集が一貫性を維持しているか、崩しているかの判定の手続きの処理手順の一例を示す。
【００９８】
まず、ＸＭＬ文書一括管理装置３に登録されているＸＭＬ文書断片の「バージョン」と、ＸＭＬ文書一括管理装置３に反映しようとしているＸＭＬ文書断片の「前バージョン」を比較する（ステップＳ１）。前者の値と後者の値が等しい場合には（ステップＳ２）、差分の反映が一貫性を維持すると判定して（ステップＳ９）、終了する。
【００９９】
ステップＳ１の比較で両者が異なっている場合（ステップＳ２）、ＸＭＬ文書一括管理装置３に登録されているＸＭＬ文書断片の「前バージョン」と、ＸＭＬ文書一括管理装置３に反映しようとしているＸＭＬ文書断片の「前バージョン」を比較する（ステップＳ３）。
【０１００】
そして、前者の値と後者の値が等しいならば（ステップＳ４）、さらに、ＸＭＬ文書一括管理装置３に登録されているＸＭＬ文書断片の「編集者」と、ＸＭＬ文書一括管理装置３に反映しようとしているＸＭＬ文書断片の「編集者」を比較する（ステップＳ５）。
【０１０１】
そして、前者の値と後者の値が等しいならば（ステップＳ６）、さらに、ＸＭＬ文書一括管理装置３に登録されているＸＭＬ文書断片の「最終編集時刻」と、ＸＭＬ文書一括管理装置３に反映しようとしているＸＭＬ文書断片の「最終編集時刻」を比較する（ステップＳ７）。
【０１０２】
前者の最終更新時刻が後者の最終更新時刻よりも早い場合には（ステップＳ８）、差分の反映が一貫性を維持すると判定して（ステップＳ９）、終了する。一方、そうでなければ（ステップＳ８）、一貫性が維持されていないと判定して（ステップＳ１０）、終了する。
なお、ステップＳ３またはステップＳ５の比較で両者が異なっていたならば（ステップＳ４またはステップＳ６）、一貫性が維持されていないと判定して（ステップＳ１０）、終了する。
【０１０３】
ＸＭＬ文書の一貫性を維持すると判定されたＸＭＬ文書断片の差分は、以下の方法で、ＸＭＬ文書断片の管理テーブルに反映する。
【０１０４】
現バージョンは、ＸＭＬ文書断片エレメントが保持するｖｅｒｓｉｏｎ属性の値に１を加えたものに変更する。最終編集時刻は、ＸＭＬ文書断片エレメントが保持するｌａｓｔ−ｍｏｄｉｆｉｅｄ属性の値に変更する。編集者は、ＸＭＬ文書断片エレメントの編集者に変更する。ＸＭＬ文書断片の値は、ＸＭＬ文書断片エレメントの保持するテキストに変更する。
【０１０５】
前バージョンについては、次のようになる。まず、ＸＭＬ文書一括管理装置３に登録されているＸＭＬ文書断片のバージョンと、ＸＭＬ文書一括管理装置３に反映しようとしているＸＭＬ文書断片の前バージョンとを比較する。前者の値と後者の値とが等しい場合には、ＸＭＬ文書断片エレメントが保持するｖｅｒｓｉｏｎ属性の値に変更し、それ以外の場合には、変更を行わない。
【０１０６】
次に、ＸＭＬ文書参照・編集装置１に関して説明する。
【０１０７】
図１に示されるように、ＸＭＬ文書参照・編集装置１は、ＸＭＬ文書一時格納部１０１、ＸＭＬ文書編集部１０２、ＸＭＬ文書断片中継部１０３、一時識別子生成部１０５、ＸＭＬ文書差分演算部１０６、ＸＭＬ文書差分送信部１０７、ＸＭＬ文書受信部１０８を備えている。
【０１０８】
ＸＭＬ文書受信部１０８は、ＸＭＬ文書一括管理装置３から送信されるＸＭＬ文書を受信し、これをＸＭＬ文書一時格納部１０１とＸＭＬ文書編集部１０２に送信する。
【０１０９】
ＸＭＬ文書一時格納部１０１は、ＸＭＬ文書受信部１０８が送信するＸＭＬ文書を受信し格納する。
【０１１０】
ＸＭＬ文書編集部１０２は、ＸＭＬ文書一括管理装置３で一括管理されるＸＭＬ文書の複製を参照し編集する。編集は、ＸＭＬ文書主部の編集とＸＭＬ文書断片の編集（一方向複製元、一方向複製先、双方向複製元、双方向複製先の追加、削除、変更など）の両方を行う。また、新たに作成したエレメントに一時識別子生成部１０５を用いて生成された仮識別子を付与する。
【０１１１】
このＸＭＬ文書編集部１０２は、１つのＸＭＬ文書参照・編集装置１に複数存在し得る。例えば、１つのＸＭＬ文書参照・編集装置１で複数の文書を参照・編集する場合には、個々の文書に対応して専用にＸＭＬ文書編集部１０２が対応する。具体的には、例えば、表示画面上で、ある文書をＸＭＬ文書一括管理装置３から読み込みあるいは新規の文書を作成するにあたって、個々の文書について、ＸＭＬ文書編集部１０２の参照・編集ウィンドウが開き、ユーザは、該参照・編集ウィンドウ上で、該当文書を参照・編集するような場合で、この場合、個々のＸＭＬ文書編集部１０２は、例えば、必要時に起動された個々のプロセスに相当する。
【０１１２】
ＸＭＬ文書断片中継部１０３は、あるＸＭＬ文書編集部１０２で編集中のＸＭＬ文書のｍｉｒｒｏｒｅｄエレメントまたはｓｈａｒｅｄエレメントを参照するｍｉｒｒｏｒエレメントまたはｓｈａｒｅエレメントを、別のＸＭＬ文書編集部１０２で編集中のＸＭＬ文書中に作成する際に、一方のＸＭＬ文書編集部１０２から他方のＸＭＬ文書編集部１０２への参照元ＸＭＬ文書断片情報の転送を中継する。具体的には、例えば、あるＸＭＬ文書編集部１０２の参照・編集ウィンドウＡ上で、文書ａが編集され、他のＸＭＬ文書編集部１０２の参照・編集ウィンドウＢ上で、文書ｂが編集されている際に、ユーザが、該参照・編集ウィンドウＡ上の文書ａの複製元となる部分と、その部分を一方向複製元にする指示（あるいは双方向複製元にする指示）をマウスで選択し、この部分をマウスで、ウィンドウＢ上の文書ｂの所望の箇所に移動させ貼り付けると、該文書ｂの該所望の箇所に、該文書ａの選択された部分が、一方向複製先として設定される。
【０１１３】
また、例えば、参照・編集ウィンドウＣ上で、文書ｃが編集され、参照・編集ウィンドウＤ上で、文書ｄが編集されている際に、ユーザが、該参照・編集ウィンドウＣ上の文書ｃのあるエレメント（このエレメントは、他の文書ｅのｍｉｒｒｏｒｅｄエレメントまたはｓｈａｒｅｄエレメントを複製元とするｍｉｒｒｏｒエレメントまたはｓｈａｒｅエレメントになっているものとする）を複製元にする指示をマウスで選択し、この部分をマウスで、ウィンドウＤ上の文書ｄの所望の箇所に移動させ貼り付けると、該文書ｄの該所望の箇所に、該文書ｃの選択された部分が、（文書ｃの該当エレメントを複製元とするのではなく、その元々の複製元である文書ｅの該当エレメントを複製元として）一方向複製先として設定されるようにしてもよい。
【０１１４】
なお、同一の文書内で、上記の操作を行って、同一の文書内の文書断片間に依存関係を付与することも可能である。
【０１１５】
一時識別子生成部１０５は、電子文書管理システム中で一意な仮識別子を生成する。生成した仮識別子は、ＸＭＬ文書編集部１０２において、ＸＭＬ文書のエレメントに付与される。
【０１１６】
ＸＭＬ文書差分演算部１０６は、ＸＭＬ文書編集部１０２から送信されるＸＭＬ文書とＸＭＬ文書一時格納部１０１から送信されるＸＭＬ文書とを受信し、両者の差分を演算し（この差分がＸＭＬ文書編集部１０２で行った編集に相当する）、求めた該差分を、ＸＭＬ文書差分送信部１０７に送信する。
【０１１７】
ＸＭＬ文書差分送信部１０７は、ＸＭＬ文書差分演算部１０６から送信される差分を受信し、ＸＭＬ文書一括管理装置３に送信する。
【０１１８】
以下では、本実施形態の各種手順について説明する。
【０１１９】
まず、ＸＭＬ文書の読み出し時の手順例を示す。
【０１２０】
図９に、ＸＭＬ文書一括管理装置３に格納されているＸＭＬ文書を読み出し、ＸＭＬ文書参照・編集装置１に表示するまでの処理手順の一例を示す。
【０１２１】
ＸＭＬ文書主部をＸＭＬ文書一括管理装置３のＸＭＬ文書主部格納部３０１から読み出す。読み出したＸＭＬ文書主部は、ＸＭＬ文書主部格納部制御部３０２を経由して、ＸＭＬ文書結合部３０６に送信する（ステップＳ２１）。
【０１２２】
ＸＭＬ文書主部に対するＸＭＬ文書断片をＸＭＬ文書断片格納部３１１から読み出す。読み出したＸＭＬ文書断片は、ＸＭＬ文書断片格納部制御部３１２を経由して、ＸＭＬ文書結合部３０６に送信する（ステップＳ２２）。
【０１２３】
ＸＭＬ文書結合部３０６において、受信したＸＭＬ文書主部とＸＭＬ文書断片を結合し、ＸＭＬ文書を作成する。作成したＸＭＬ文書は、ＸＭＬ文書送信部３０７に送信する（ステップＳ２３）。
【０１２４】
ＸＭＬ文書送信部３０７において、受信したＸＭＬ文書をＸＭＬ文書参照・編集装置１のＸＭＬ文書受信部１０８に送信する（ステップＳ２４）。
【０１２５】
ＸＭＬ文書参照・編集装置１のＸＭＬ文書受信部１０８において、受信したＸＭＬ文書の複製を作成し、ＸＭＬ文書一時格納部１０１に格納する。受信したＸＭＬ文書は、ＸＭＬ文書編集部１０２に送信する（ステップＳ２５）。
【０１２６】
ＸＭＬ文書編集部１０２において、受信したＸＭＬ文書を表示する（ステップＳ２６）。
【０１２７】
次に、ＸＭＬ文書の編集時の手順例を示す。
【０１２８】
図１０及び図１１に、ＸＭＬ文書参照・編集装置１でＸＭＬ文書の編集を行う際の処理手順の一例を示す。
【０１２９】
ユーザがＸＭＬ文書に対して行おうとしている編集を受け付ける（ステップＳ３１）。なお、ユーザがこれ以上の編集を行わない場合には終了する。
【０１３０】
ユーザがＸＭＬ文書に対して行おうとしている編集内容を解析し、ＸＭＬ文書の文書構造を維持する編集であるかどうか判定する（ステップＳ３２）。
【０１３１】
ここで、文書構造を崩している場合には（ステップＳ３３）、ユーザが行おうとしている編集を否認し、ステップＳ３１に戻る。
【０１３２】
一方、文書構造を維持している場合には（ステップＳ３３）、ユーザが行おうとしている編集を承認し、次いで、編集内容がエレメントの新規作成であるかどうか判定する（ステップＳ３４）。
【０１３３】
そして、新規作成以外の場合には（ステップＳ３５）、何もせずに、ステップＳ３１に戻るが、新規作成である場合には（ステップＳ３５）、さらに、新規作成されたエレメントがｍｉｒｒｏｒｅｄエレメントまたはｓｈａｒｅｄエレメントであるかどうか判定する（ステップＳ３６）。
【０１３４】
ここで、ｍｉｒｒｏｒｅｄエレメントまたはｓｈａｒｅｄエレメントである場合には（ステップＳ３７）、一時識別子生成部１０５を用いて一意な仮識別子を作成し、エレメントに付与する（ステップＳ３８）。
【０１３５】
一方、ステップＳ３６でｍｉｒｒｏｒｅｄエレメントまたはｓｈａｒｅｄエレメント以外の場合には（ステップＳ３７）、新規作成されたエレメントがｍｉｒｒｏｒエレメントまたはｓｈａｒｅエレメントであるかどうか判定する。そして、ｍｉｒｒｏｒエレメントまたはｓｈａｒｅエレメントである場合には（ステップＳ４０）、ＸＭＬ文書断片中継部１０３経由で一方向複製元または双方向複製元の情報（識別子、ｖｅｒｓｉｏｎ属性、ｌａｓｔ−ｍｏｄｉｆｉｅｄ属性）を取得し、ｍｉｒｒｏｒエレメントまたはｓｈａｒｅエレメントに付与する（ステップＳ４１）。一方、ｍｉｒｒｏｒエレメントまたはｓｈａｒｅエレメント以外である場合には（ステップＳ４０）、何もせずに、ステップＳ３１に戻る。
【０１３６】
次に、ＸＭＬ文書の書き込み時の手順例を示す。
【０１３７】
図１２〜図１５に、編集が終了したＸＭＬ文書をＸＭＬ文書一括管理装置３に反映するまでの処理手順の一例を示す。
【０１３８】
編集が終了したＸＭＬ文書をＸＭＬ文書参照・編集装置１のＸＭＬ文書編集部１０２からＸＭＬ文書差分演算部１０６に送信する（ステップＳ５１）。
【０１３９】
編集を行う前のＸＭＬ文書をＸＭＬ文書一時格納部１０１からＸＭＬ文書差分演算部１０６に送信する（ステップＳ５２）。
【０１４０】
ＸＭＬ文書差分演算部１０６において、編集の前後のＸＭＬ文書を受信し、両者の差分を演算する（ステップＳ５３）。演算した差分は、ＸＭＬ文書差分送信部１０７に送信する。
【０１４１】
ＸＭＬ文書差分送信部１０７において、受信した差分をＸＭＬ文書一括管理装置３のＸＭＬ文書差分受信部３０８に送信する（ステップＳ５４）。
【０１４２】
ＸＭＬ文書一括管理装置３のＸＭＬ文書差分受信部３０８において、受信した差分をＸＭＬ文書差分分離部３０９に送信する（ステップＳ５５）。
【０１４３】
ＸＭＬ文書差分分離部３０９において、受信した差分をＸＭＬ文書主部に関する差分とＸＭＬ文書断片に関する差分とに分離する（ステップＳ５６）。
【０１４４】
未処理差分が存在するか否か判定する（ステップＳ５７）。
【０１４５】
ここで、未処理差分が存在しない場合には（ステップＳ５８）、終了する。
【０１４６】
一方、未処理の差分が存在する場合には（ステップＳ５８）、その差分がＸＭＬ文書主部に関する差分であるか、ＸＭＬ文書断片に関する差分であるか判定する（ステップＳ５９）。
【０１４７】
そして、ＸＭＬ文書主部に関する差分である場合には（ステップＳ６０）、差分をＸＭＬ文書主部管理部３０３に送信し（ステップＳ６１）、ステップＳ７１へ進み、ＸＭＬ文書主部に関する差分の処理を行う。一方、ＸＭＬ文書断片に関する差分である場合には（ステップＳ６０）、差分をＸＭＬ文書断片管理部３１３に送信し（ステップＳ６２）、ステップＳ８１へ進み、ＸＭＬ文書断片に関する差分の処理を行う。
【０１４８】
第１に、ＸＭＬ文書主部に関する差分の処理について説明する。
【０１４９】
まず、差分をＸＭＬ文書主部に反映した場合に、一貫性が維持されるかどうか判定する（ステップＳ７１）。
【０１５０】
ここで、維持されない場合には（ステップＳ７２）、ユーザが行った編集のうちこの差分で記述される部分を否認し（ステップＳ７３）、ステップＳ５７に戻る。
【０１５１】
一方、維持される場合には（ステップＳ７２）、まず、ユーザが行った編集のうちこの差分で記述される部分を承認し（ステップＳ７４）、差分が識別子を保持しないエレメントを含むならば（つまり、差分がエレメントの新規作成であるならば）（ステップＳ７５）、識別子生成部３０４を用いて一意な正式識別子を作成し、エレメントに付与し（ステップＳ７６）、そうでなければ（ステップＳ７５）、この処理は行わない。
【０１５２】
そして、差分をＸＭＬ文書主部格納部制御部３０２経由でＸＭＬ文書主部格納部３０１に格納されているＸＭＬ文書主部に反映し（ステップＳ７７）、ステップＳ５７に戻る。
【０１５３】
第２に、ＸＭＬ文書断片に関する差分の処理について説明する。
【０１５４】
まず、差分をＸＭＬ文書断片に反映した場合に、一貫性が維持されるかどうか判定する（ステップＳ８１）。
【０１５５】
ここで、維持されない場合には（ステップＳ８２）、ユーザが行った編集のうちこの差分で記述される部分を否認し（ステップＳ８３）、ステップＳ５７に戻る。
【０１５６】
一方、維持される場合には（ステップＳ８２）、まず、ユーザが行った編集のうちこの差分で記述される部分を承認し（ステップＳ８４）、差分が仮識別子を保持または参照するエレメントを含むならば（つまり、差分がｍｉｒｒｏｒｅｄエレメントまたはｓｈａｒｅｄエレメントの新規作成である、またはそれらを一方向複製元または双方向複製元とするｍｉｒｒｏｒエレメントまたはｓｈａｒｅエレメントの新規作成であるならば）（ステップＳ８５）、仮識別子が一時識別子管理部３０５に登録されていないものについては、識別子生成部３０４を用いて一意な正式識別子を作成して、仮識別子と正式識別子の組を一時識別子管理部３０５に登録し、また、エレメントが保持または参照する仮識別子を正式識別子に変更する（ステップＳ８６）。そうでなければ（ステップＳ８５）、この処理は行わない。
【０１５７】
そして、差分をＸＭＬ文書断片格納部制御部３１２経由でＸＭＬ文書断片格納部３１１に格納されているＸＭＬ文書断片に反映し（ステップＳ８７）、ステップＳ５７に戻る。
【０１５８】
ところで、一貫性が維持されないと判定された場合には、システムで強制的に編集を破棄してしまうだけでなく、様々な対処方法が可能である。
【０１５９】
例えば、一貫性が維持されないと判定された場合に、その旨及び該当エレメント等を利用者へ通知し（例えば、ＸＭＬ文書参照・編集装置１の該当するＸＭＬ文書編集部１０２の参照・編集ウィンドウ上に表示させるようにし）、該利用者が判断して、該編集を破棄すること、あるいは該編集をＸＭＬ文書一括管理装置３へ反映させることを決定し、その指示をＸＭＬ文書一括管理装置３へ通知し、ＸＭＬ文書一括管理装置３は、該指示に従って、該編集を破棄し、あるいは反映させるようにしてもよい。
【０１６０】
また、例えば、一貫性が維持されないと判定された場合に、ＸＭＬ文書一括管理装置３にて、該編集を破棄し反映させなかった版と、該編集を反映させた版との両方を保持しておき、利用者が後にいずれを採用するかを選択できるようにしてもよい。この場合、ＸＭＬ文書一括管理装置３は、後で利用者が選択した際に、該編集を破棄した文書、あるいは反映させた文書に、版を確定させるようにしてもよい。
【０１６１】
また、例えば、１つの複製元のエレメントと、複数の複製先のエレメントとのグループにおいて、特定の複製先のエレメントに係る編集について、一貫性が維持されないと判定された場合に、該一貫性が維持されないと判定された特定の複製先のエレメントのみ、該グループから外して（該エレメントを他のエレメントとの間に依存関係を持たないエレメントに変更し、あるいは該エレメントを削除して）、該グループに属する残りの１つの複製元のエレメントと１又は複数の複製先のエレメントの間の依存関係の一貫性を保持するようにしてもよい。
【０１６２】
また、例えば、矛盾を生じた操作のうち、絶対時間の早い方を採用し、遅い方を棄却することによって、矛盾を回避するようにしてもよい。
【０１６３】
さて、以下では、具体例を用いて本実施形態を説明する。
【０１６４】
ＸＭＬ文書一括管理装置３に格納されるＸＭＬ文書をＸＭＬ文書参照・編集装置１に読み出し、該ＸＭＬ文書をＸＭＬ文書参照・編集装置１で編集し、これをＸＭＬ文書一括管理装置３に反映させる際に、ＸＭＬ文書が変化する様子を、具体的なＸＭＬ文書に即して説明する。
【０１６５】
ＸＭＬ文書主部格納部３０１に図１６に示したＸＭＬ文書主部（ＸＭＬ文書識別子はｓｃｈｅｄｕｌｅ−１であるとする）と図１７に示したＸＭＬ文書主部（ＸＭＬ文書識別子はｍｅｍｏ−１であるとする）（図４の例と同じ内容である）が格納されているとし、ＸＭＬ文書断片格納部３１１に図５に示したＸＭＬ文書断片が格納されているとする。
【０１６６】
また、同時に２台のＸＭＬ文書参照・編集装置（以下、一方をａ、他方をｂと呼ぶものとする）で編集を行うものとする。また、ＸＭＬ文書参照・編集装置ａを使う編集者が「木村」、ＸＭＬ文書参照・編集装置ｂを使う編集者が「鳥井」であるとする。
【０１６７】
ここでは、時刻“２００１／９／３０  ２０：００：００”に図１６に示したＸＭＬ文書主部をＸＭＬ文書参照・編集装置ａに読み出し、時刻“２００１／９／３０  ２０：００：３０”に図１７に示したＸＭＬ文書主部をＸＭＬ文書参照・編集装置ｂに読み出したとする。
【０１６８】
図１６に示したＸＭＬ文書主部をＸＭＬ文書参照・編集装置ａに読み出した結果得られるＸＭＬ文書を図１８に示した。
【０１６９】
分かりやすくするために、ｓｈａｒｅｄ，ｍｉｒｒｏｒｅｄエレメント部に下線を引いてあるが、これはあくまで分かりやすいように引いてあるのであり、実際のＸＭＬ文書に下線が引かれる訳ではない。
【０１７０】
図１６に示したＸＭＬ文書主部には、ｉｄ＝“ｅｓ９”を保持するｍｉｒｒｏｒｅｄエレメントとｉｄ＝“ｅｓ５”を保持するｓｈａｒｅｄエレメントの２つのＸＭＬ文書断片が含まれる。そこで、ＸＭＬ文書断片格納部３１１に格納してある図５の管理テーブルから２つのＸＭＬ文書断片の情報を読み出し、ＸＭＬ文書結合部３０６において、ＸＭＬ文書主部とＸＭＬ文書断片の結合を行う。この結果が、図１８に示したＸＭＬ文書（図２の例と同じ内容である）である。
【０１７１】
同様に、図１７に示したＸＭＬ文書をＸＭＬ文書参照・編集装置ｂに読み出した結果得られるＸＭＬ文書を図１９に示した。
【０１７２】
図１７に示したＸＭＬ文書主部には、ｉｄ＝“ｅｓ１１”を保持するｍｉｒｒｏｒエレメントとｉｄ＝“ｅｓ１２”を保持するｓｈａｒｅエレメントの２つのＸＭＬ文書断片が含まれる。そこで、ＸＭＬ文書断片格納部３１１に格納してある図５の管理テーブルから２つのＸＭＬ文書断片の情報を読み出し、ＸＭＬ文書結合部３０６において、ＸＭＬ文書主部とＸＭＬ文書断片の結合を行う。この結果が、図１９に示したＸＭＬ文書（図３の例と同じ内容である）である。
【０１７３】
引き続き、ＸＭＬ文書参照・編集装置ａにおいて、編集者「木村」が、図１８に示したＸＭＬ文書を時刻“２００１／９／３０  ２０：１０：００”に編集し、図２０に示したＸＭＬ文書が得られたとする。具体的には、会議の開催場所を“第３会議室”から“特別会議室”に変更している。
【０１７４】
編集が終了したＸＭＬ文書を時刻“２００１／９／３０  ２０：２０：００”にＸＭＬ文書一括管理装置３に反映するとする。図２０に示したＸＭＬ文書をＸＭＬ文書一括管理装置３に反映する際には、ＸＭＬ文書差分演算部１０６において、図１８に示した編集を行う前のＸＭＬ文書と図２０に示した編集を行った後のＸＭＬ文書の差分を演算し、演算結果をＸＭＬ文書一括管理装置３へ送信する。
【０１７５】
上記編集が行われた部分は、図２１（ａ）に示した通りであり、上記編集を行った結果演算される差分は、図２１（ｂ）に示した通りである。
【０１７６】
求められた差分は、ＸＭＬ文書参照・編集装置ａからＸＭＬ文書一括管理装置３に送信され、ＸＭＬ文書差分分離部３０９において、ＸＭＬ文書主部に関する差分とＸＭＬ文書断片に関する差分とに分離される。
【０１７７】
この例では、ＸＭＬ文書主部に関する差分は存在せず、図２１に示したＸＭＬ文書断片に関する差分のみが存在する。この差分をＸＭＬ文書一括管理装置３に反映させる場合に一貫性を維持するかどうか、ＸＭＬ文書断片管理部３１３で判定する。
【０１７８】
ＸＭＬ文書識別子“ｓｃｈｅｄｕｌｅ−１”を保持するＸＭＬ文書のエレメント識別子“ｅｓ５”を保持するＸＭＬ文書断片は、現在ＸＭＬ文書一括管理装置３に登録されているものが、前バージョン＝“１”、現バージョン＝“２”、最終更新時刻＝“２００１／９／２８  １３：３０：１０”、編集者＝“鳥井”、ＸＭＬ文書断片の値＝“第３会議室”であるのに対して、ＸＭＬ文書参照・編集装置ａで編集された結果は、前バージョン＝“２”、最終更新時刻＝“２００１／９／３０  ２０：１０：００”、編集者＝“木村”、ＸＭＬ文書断片の値＝“特別会議室”である。
【０１７９】
これは一貫性を維持する編集と判断されるので、ＸＭＬ文書一括管理装置３で管理されるＸＭＬ文書断片を更新する。具体的には、図２２に示す通り、管理テーブルが変更される。なお、ここで、バージョン番号が増えている。
【０１８０】
次に、ＸＭＬ文書参照・編集装置ｂにおいて、鳥井が、図１９に示したＸＭＬ文書を時刻“２００１／９／３０  ２０：３０：００”に編集し、図２３に示したＸＭＬ文書が得られるとする。具体的には、会議の開催場所を“第３会議室”から“講堂”に変更している。
【０１８１】
編集が終了したＸＭＬ文書を時刻“２００１／９／３０  ２０：４０：００”にＸＭＬ文書一括管理装置３に反映するとする。図２３に示したＸＭＬ文書をＸＭＬ文書一括管理装置３に反映する際には、ＸＭＬ文書差分演算部１０６において、図１９に示した編集を行う前のＸＭＬ文書と図２３に示した編集を行った後のＸＭＬ文書の差分を計算し、演算結果をＸＭＬ文書一括管理装置３に送信する。
【０１８２】
上記編集が行われた部分は、図２４（ａ）に示した通りであり、上記編集を行った結果演算される差分は、図２４（ｂ）に示した通りである。
【０１８３】
求められた差分は、ＸＭＬ文書参照・編集装置ｂからＸＭＬ文書一括管理装置３に送信され、ＸＭＬ文書差分分離部３０９において、ＸＭＬ文書主部に関する差分とＸＭＬ文書断片に関する差分とに分離される。
【０１８４】
この例では、ＸＭＬ文書主部に関する差分は存在せず、図２４に示したＸＭＬ文書断片に関する差分のみが存在する。この差分をＸＭＬ文書一括管理装置３に反映させる場合に一貫性を維持するかどうか、ＸＭＬ文書断片管理部３１３で判定する。
【０１８５】
ＸＭＬ文書識別子“ｓｃｈｅｄｕｌｅ−１”を保持するＸＭＬ文書のエレメント識別子“ｅｓ５”を保持するＸＭＬ文書断片は、現在ＸＭＬ文書一括管理装置３に登録されているものが、前バージョン＝“２”、現バージョン＝“３”、最終更新時刻＝“２００１／９／３０  ２０：１０：００”、編集者＝“木村”、ＸＭＬ文書断片の値が“特別会議室”であるのに対して、ＸＭＬ文書参照・編集装置ｂで編集された結果は、前バージョン＝“２”、最終更新時刻＝“２００１／９／３０  ２０：３０：００”、編集者＝“鳥井”、ＸＭＬ文書断片の値＝“講堂”である。
【０１８６】
これは一貫性を維持しない編集と判断されるので、更新は拒否され、ＸＭＬ文書一括管理装置３で管理されるＸＭＬ文書断片は変更されない。
【０１８７】
さて、これまでは、電子文書としてＸＭＬ文書を例にとって説明してきたが、もちろん、本発明は、ＨＴＭＬ文書など、他の構造化文書にも適用可能である。
【０１８８】
（非構造化文書に対する本発明の適用例）
また、本発明は、構造化文書だけでなく、非構造化文書にも適用可能である。以下では、本発明を非構造化文書に適用する場合について説明する。
【０１８９】
なお、以下においても、基本的には、これまで説明してきた文書断片間の一方向複製や双方向複製などの依存関係を管理する機構や、一貫性を維持するための機構などを用いるものである。ただし、非構造化文書は、構造化文書と異なって、文書がもともと有する構造を利用して、文書断片間の依存関係を管理するための情報を埋め込むことができないので、例えば、非構造化文書に対して、依存関係を管理するための情報を埋め込むための構造を付与するとともに、該非構造化文書をその本来の目的での利用に供するにあたっては、該付与した依存関係を管理するための情報を埋め込むための構造を除去し、もとの非構造化文書に戻して提供する。
【０１９０】
さて、応用の一つとして、ＵｎｉｘワークステーションやＰＣ  Ｕｎｉｘのような計算機が多数設置されたネットワークシステムを考える。ここで、本発明を適用した依存情報管理エンジンと、依存情報管理エンジンをサポートする編集機能の設置により、管理が容易になることを示す。
【０１９１】
ここでは、前提として、既存のシステムやプログラムを活用することとする。そのため、できるだけ既存のシステムの文法や文脈を阻害しない機構が望ましい。このような場合でも依存情報管理エンジンは、システムを阻害せず以下の方法で設置が可能である。
【０１９２】
まず、依存情報管理エンジンと文書ＤＢを用意する。この依存情報管理エンジンと文書ＤＢは、ネットワーク上に最低一組存在すれば良い。もちろん、ネットワーク上の管理上の都合により、複数必要な場合もある。その場合は、依存情報管理エンジン（内のメッセージ処理部）が互いに異なる依存情報管理エンジン（内の保留処理キュー）にメッセージを送信できるように構成する。
【０１９３】
単一の文書に対して複数の依存関係が存在する場合、複数の依存情報管理エンジンを利用する必要がある。この場合、依存情報管理エンジン内で、文書断片を抽出する部分が他の依存情報管理エンジンと通信する機構を持つ方法や、文書断片を抽出する部分を文書編集側（依存情報管理エンジンの外部）に設け、依存情報管理エンジンとの通信は文書断片単位で行う方法が考えられる。
【０１９４】
さて、ここで問題となるのは既存のシステムの文法、特に可読性の高いテキストファイルとしての設定ファイルである。この設定ファイルは平易なテキストファイルとして作られ、任意のエディタで容易に編集可能である。
【０１９５】
一方、依存情報管理エンジンは、入力として与えられる文書から文書断片を抽出できる必要がある。ここで、構造化文書の場合は、ＸＭＬタグ等をマーカーとして利用することで文書断片の抽出が可能であった。ところが、ここで与えられるのは通常のテキストファイルで、その上で特定の文法を仮定することは非現実的である。
【０１９６】
また、文書操作用のＧＵＩを用意するとしても、ワークステーションにおいてＧＵＩは一般的ではなく、エディタすら必要に応じて使い分けたり、管理者によって好みがあったりと、簡単に統一できる状態ではない。
【０１９７】
一方、ＣＶＳやＲＣＳのような版管理システムはシステム管理において必須とされ、設定ファイルの変更を記録するために広く用いられている。これは皆で同じシステムを同じように使わなければ意味が無く、操作性を簡単に統一できる。
【０１９８】
従って、依存情報管理エンジンへのインタフェースを版管理システムが行う構成が最も可用性が高いと言える。ただし、このままでは依存情報管理エンジンが利用する依存情報のマーカーが流出してしまい、既存のプログラムの動作に支障が生ずる。
【０１９９】
そこで、図２５のように、版管理システムにおいて１つの文書につき２相用意する。１つは、依存情報を含み、文書の内容を書き換え可能としたもので、これを「編集相」と呼ぶものとする。もう１つは、編集相から依存情報を除去し、文書の内容の読み出しのみを可能としたもので、これを「読み出し相」と呼ぶものとする。
【０２００】
管理者は、システム管理のために設定ファイルを編集する際は、版管理システムに対して編集相のファイルを要求する。
【０２０１】
編集相において、依存情報管理エンジンが理解できる形での文法を既存のプログラムの文法に加えて利用する。既存プログラム文法では、プログラムの動作を設定するファイルの一部に依存情報管理エンジン文法による文書断片が記載される。このファイルは、版管理システムに渡され（ＣＯＭＭＩＴ）、その際に依存情報管理エンジンが起動され、依存情報のチェックを行う。また、管理者は、依存情報管理エンジンの文法を理解するものとする。この文法を直接・あるいは支援ソフトの助けを借りて記述することで、設定ファイル中の依存関係を編集できる。
【０２０２】
管理者は、編集を終えると、編集相のファイルを版管理システムに登録（ＣＯＭＭＩＴ）した後、読み出し相ファイルを要求する。
【０２０３】
読み出し相ファイルからは、依存情報に関する記述は一切排除され、既存のプログラムの文法に従う。
【０２０４】
このように２相管理機構を備える版管理システムにより、既存システムの動作を阻害することなく、本発明を適用した依存情報管理エンジンを利用することが可能になる。
【０２０５】
以下、このような文書管理について説明する。
【０２０６】
図２６に、この場合の電子文書管理システムの構成例を示す。図２６に示されるように、本電子文書管理システムは、文書ＤＢ１００１、文書管理要求受付部１００２、文書断片抽出部１００３、前処理部１００４、文書編集部１０３１、文書参照部１０３２、文書断片ＤＢ１０２１、新規文書断片登録部１０２２、既出断片更新検出部１０２３、整合性検査部１０２４、メッセージ処理部１０２５を含む。
【０２０７】
文書断片ＤＢ１０２１、新規文書断片登録部１０２２、既出断片更新検出部１０２３、整合性検査部１０２４、メッセージ処理部１０２５を含む部分を、依存情報管理エンジン１０００と呼ぶ。
【０２０８】
前処理部１００４、文書編集部１０３１、文書参照部１０３２が、例えばサーバ側（あるいは、ＸＭＬ文書一括管理装置側）に搭載され、それ以外が例えばクライアント側（あるいは、文書参照・編集装置側）に搭載されてもよい。また、文書編集部１０３１、文書参照部１０３２が、例えばクライアント側（あるいは、文書参照・編集装置側）に搭載され、それ以外が例えばサーバ側（あるいは、ＸＭＬ文書一括管理装置側）に搭載されてもよい。
【０２０９】
もちろん、上記以外の構成要素の配置方法も可能である。
【０２１０】
また、依存情報管理エンジン１０００は、システム内に１つ設置する構成、システム内部における文書１つ１つに設ける構成、利用者毎に設ける構成、それらの中間的な形態による構成など、変形例が考えられる。文書ＤＢ１００１等についても同様である。そして、それらの組合せ、すなわち文書と依存情報管理エンジン１０００や文書ＤＢ１００１との関係についても、いろいろな変形例が考えられる。
【０２１１】
次に、図２７を参照しながら、利用者による新規文書の登録について説明する。図２７は、この場合におけるデータの流れを示している。
【０２１２】
文書登録におけるデータの流れは、以下の通りである。
・文書編集部１０３１による文書の登録要求を行う。
・文書管理要求受付部１００２による文書ＤＢ１００１の選択と、文書断片抽出部１００３への監査依頼を行う。
・文書断片抽出部１００３による監査を行う。
・各断片に対して、依存情報管理エンジン１０００による処理を行う。
・文書管理要求受付部１００２に処理結果が戻されるので、処理された文書を文書ＤＢ１００１に登録する。
【０２１３】
次に、図２８及び図２９を参照しながら、文書の取り出しについて説明する。
【０２１４】
図２８は、文書を編集可能な状態（編集相）で取り出す場合のデータの流れを示している。
図２８における処理の流れは、以下の通りである。
（１）文書編集部１０３１から文書の識別子を指定して、文書管理要求受付部１００２に要求する。
（２）文書管理要求受付部１００２では、対応する文書ＤＢ１００１を解決し、対応する文書を文書ＤＢ１００１に要求し、取得する。
（３）文書管理要求受付部１００２は、取得した文書を文書断片抽出部１００３に渡す。
（４）文書断片抽出部１００３は、渡された文書から抽出したそれぞれの断片を、対応する依存情報管理エンジン１０００に渡し、結果を得る。得た結果は、渡された文書に反映し、文書管理要求受付部１００２に返却する。
（５）文書管理要求受付部１００２から文書編集部１０３１に文書が渡される。
【０２１５】
一方、図２９は、編集はできないけれども後方互換性の無い相互参照に関するメタ情報を削除した形（読み出し相）で情報を取り出す場合のデータの流れを示している。
【０２１６】
図２９における処理の流れは以下の通りである。
（１）文書参照部１０３２からの文書の識別子を指定して、文書管理要求受付部１００２に要求する。ここで、読み出し専用フラグを指定する。
（２）文書管理要求受付部１００２では、対応する文書ＤＢ１００１を解決し、対応する文書を文書ＤＢ１００１に要求し、取得する。
（３）文書管理要求受付部１００２は、取得した文書を文書断片抽出部１００３に渡す。
（４）文書断片抽出部１００３は、渡された文書から抽出したそれぞれの断片を、対応する依存情報管理エンジン１０００に渡し、結果を得る。得た結果は、渡された文書に反映し、文書管理要求受付部１００２に返却する。
（５）文書管理要求受付部１００２から前処理部１００４が呼び出され、文書が渡される。
（６）前処理部１００４は、依存情報等のメタ情報を文書から削除し、文書参照部１０３２に返す。
【０２１７】
次に、図３０を参照しながら、編集相で取り出した文書の編集結果の再登録について説明する。図３０は、この場合のデータの流れを示している。
【０２１８】
再登録におけるデータの流れは、以下の通りである。
・文書編集部１０３１による文書の更新要求を行う。
・文書管理要求受付部１００２による文書ＤＢ１００１の選択と、文書断片抽出部１００３への監査依頼を行う。
・文書断片抽出部１００３による監査を行う。
・各断片に対して、依存情報管理エンジン１０００による処理を行う。
・文書管理要求受付部１００２に処理結果が戻されるので、処理された文書を文書ＤＢ１００１に登録する。
【０２１９】
以下、図２６の電子文書管理システムにおけるそれぞれの構成要素（あるいは、コンポーネント）について説明する。
【０２２０】
文書ＤＢ１００１は、文書を格納する。
【０２２１】
文書編集部１０３１の動作は、以下の通りである。
（１）新規文書登録の場合には、ユーザから文書登録依頼を受け付け、文書を文書管理要求受付部１００２に送付する（「文書登録」）。
（２）文書更新の場合には、ユーザから文書更新依頼を受け付け、文書を文書管理要求受付部１００２に送付する（「文書更新」）。
（３）文書取得の場合には、ユーザから文書取得依頼を受け付け、文書取得要求を文書管理要求受付部１００２に送付し、文書管理要求受付部１００２から編集相の文書を受信する。
【０２２２】
前処理部１００４は、読み出し相の文書取得の場合に、文書管理要求受付部１００２から編集相の文書を受信し、該文書から依存情報等のメタ情報を削除して、読み出し相の文書とし、これを文書参照部１０３２に送信する。
【０２２３】
文書参照部１０３２は、ユーザから文書取得依頼を受け付け、文書取得要求を文書管理要求受付部１００２に送付し、前処理部１００４から読み出し相の文書を受信する。
【０２２４】
文書管理要求受付部１００２の動作は、以下の通りである。
【０２２５】
（１）文書編集部１０３１からの文書送付を受けた場合には、次のようになる。
（ａ）送付された文書を受け付け、必要ならば所定の機能によって、対応する文書ＤＢ１００１を解決する。
（ｂ）文書を文書断片抽出部１００３に送る。
（ｃ）文書断片抽出部１００３から文書が戻り次第、対応する文書ＤＢ１００１に文書を登録する。
【０２２６】
（２）文書編集部１０３１あるいは文書参照部１０３２からの文書取得要求を受けた場合には、次のようになる。
（ａ）必要があれば所定の機能によって、対応する文書ＤＢ１００１を解決する。
（ｂ）文書ＤＢ１００１から文書を取得する。
（ｃ）文書を文書断片抽出部１００３に渡す。
（ｄ）文書断片抽出部１００３による処理結果を受信する。
【０２２７】
（ｅ）文書取得要求時に読み出し専用フラグが与えられていれば、前処理部１００４に文書を返し、前処理部１００４が文書参照部１０３２に処理された文書を渡す。そうでなければ、文書編集部１０３１に文書を返す。
【０２２８】
文書断片抽出部１００３の動作は、以下の通りである。
（１）文書を監査して、文書断片を抽出する。
（２）それぞれの断片に対して、新規断片（文書断片に対応する依存情報管理エンジン１０００が記述されていない）か、既出断片（文書断片に対応する依存情報管理エンジン１０００が記述されている）かをチェックする。新規断片の場合には、新規文書断片として、所定の機能によって、その断片を管理する依存情報管理エンジン１０００を求め、その依存情報管理エンジン１０００に断片を渡す。既出断片の場合には、断片に記述されている依存情報管理エンジン１０００を発見し、その依存情報管理エンジン１０００に断片を渡す。その後、断片に対して加えられた操作を反映した結果を依存情報管理エンジン１０００から受け取り、文書に反映させる。
（３）監査が終了した文書を文書管理要求受付部１００２に返却する。
【０２２９】
依存情報管理エンジン１０００の各部分（文書断片ＤＢ１０２１、新規文書断片登録部１０２２、既出断片更新検出部１０２３、整合性検査部１０２４、メッセージ処理部１０２５）については、以下の通りである。
【０２３０】
文書断片ＤＢ１０２１は、文書断片を格納する。
【０２３１】
新規文書断片登録部１０２２は、文書断片抽出部１００３から与えられた新しい文書断片を文書断片ＤＢ１０２１に登録する。
【０２３２】
既出断片更新検出部１０２３は、文書断片抽出部１００３から文書断片を与えられる。ここで、文書断片抽出部１００３から与えられた文書断片を「新断片」、文書断片ＤＢ１０２１にある新断片に対応する文書断片を「旧断片」と呼ぶものとする。既出断片更新検出部１０２３は、新断片を整合性検査部１０２４に渡す。次いで、文書断片ＤＢ１０２１から、旧断片の保留処理キュー（図示せず）を取得（ｌｏｃｋ）する。保留処理キューが空になるまで、「保留処理それぞれを引数として、メッセージ処理部１０２５を呼び出す」という処理を行う。そして、保留処理キューを解放（ｕｎｌｏｃｋ）する。
【０２３３】
整合性検査部１０２４は、旧断片と与えられた新断片とを比較する。もし内容あるいは依存情報が更新されていたら、その更新をメッセージ化して、保留処理キューの末尾に追加する。更新メッセージには、旧断片、新断片それぞれの内容と更新日時、更新者が含まれる。
【０２３４】
メッセージ処理部１０２５は、与えられたメッセージに対応する操作を旧断片に対して行い、その結果を文書断片ＤＢ１０２１に還元する。ただし、メッセージおよび操作に対して、次の処理を行う。
（ｉ）操作によって矛盾が発生した場合は、その矛盾が発生したメッセージより後に存在するメッセージの送信元の文書の依存関係がある文書断片の保留処理キューに対して、矛盾を通知する。
（ii）依存関係が存在する断片が文書断片ＤＢ１０２１に記述されている場合は、その断片の保留処理キューに対して更新メッセージの複製を送信する。
（iii）矛盾発生を示すメッセージが存在した場合は、メッセージ処理部１０２５によって矛盾を解消する。解消のアルゴリズムはシステムの既定値として事前に与えておくものとする。アルゴリズムの例として、先に発生した操作を優先させるアルゴリズム、データを併記した形で矛盾を文書化し、ユーザに矛盾の解消を任せるアルゴリズム等がある。なお、矛盾解消のために操作が取り消された場合は、ユーザに電子メール等の外部手段によって取り消しを通知する事が望ましい。
【０２３５】
なお、保留処理キューの更新を文書編集部１０３１が監視することによって、現在登録されている文書断片とその断片に対する操作を監視することが可能である。具体的な手法については、一般的な遠隔手続き呼び出しを用いることで可能である。
【０２３６】
以下では、具体例を用いて説明する。
【０２３７】
ここでは、具体例として、あるＷＷＷページの管理ファイルを示す。
【０２３８】
該あるＷＷＷページには、｛ｔｒｅｅ，ｋｉｍｕｒａ，ｄｏｉ，ｘｙｚ｝というアカウントで示される４人の管理者にのみアクセスを許すものとする。
【０２３９】
次のファイルは、ＡｐａｃｈｅというＷＷＷサーバにおけるアクセス制限の設定例である。
【０２４０】
0003934965.tif 000003
また、このサーバの運用情報が定期的に送信されるアカウントは、以下のようなファイルでメールリストの形で管理されている。ここでは、ｓｅｎｄｍａｉｌ等で利用されるａｌｉａｓｅｓファイルを例にした。
【０２４１】
0003934965.tif 000004
ここで、このページを見ることができる管理者と、サーバの運用情報を受け取る管理者は、同じであるとする。この場合、ｍｉｒｒｏｒ関係を以下のように記述する。もちろん、この記法は、文書断片抽出部１００３、文書編集部１０３１および前処理部１００４が共有していればよく、どのような記法を取っても等価である。
【０２４２】
次のファイルは、アクセス制限をｍｉｒｒｏｒで記述した例である。
【０２４３】
0003934965.tif 000005
また、次のファイルは、メールリストにｍｉｒｒｏｒｄを施した例である。
【０２４４】
0003934965.tif 000006
なお、ここでは、ｍｉｒｒｏｒ／ｍｉｒｒｏｒｄのエスケープ記号（通常の文脈と異なる解釈を要求する記号）として、
＃／．．．／
を用いた。同シーケンスのテキストが既存の文脈に登場する場合は、
＃／／．．．／／
の形式で文書ＤＢ１００１に格納し、文書編集部１０３１および前処理部１００４にて、
＃／．．．／
の形式に変換すればよい。
【０２４５】
また、ｉｄｒｅｆ属性にはＵＲＬの形式を用い、この場合は、“ｓｅｒｖｅｒ．ｎａｍｅ．ｅｘａｍｐｌｅ”というドメイン名のサーバ上に存在する、“／ｅｔｃ／ａｌｉａｓｅｓ”というファイルのブロック“ｆｅ６３ｃ９４ａ”が参照先である。
【０２４６】
さて、ここで、ｘｙｚのアカウントで示される管理者が、異動等により管理者グループから離れることになったとする。そのため、運用情報のメールの受信を提出するためにメールリストを編集し、版管理システムを用いＣＯＭＭＩＴする。このとき、対応するＷＷＷページのアクセス制限は、ｍｉｒｒｏｒ関係により更新される。
【０２４７】
本システムは、例えば、上記の例で示した通り、複数の資源に対するきめ細かなアクセス制御を実現しなければならないときに最も効果を発揮する。もちろん、ＩＰアドレスやディレクトリ・パス、ＷＷＷページのコンテンツ等、幅広い情報に応用可能である。
【０２４８】
（ｒｅｆｅｒ）
さて、これまでは、依存関係についてｓｈａｒｅやｍｉｒｒｏｒを中心に説明してきたが、以下では、ｒｅｆｅｒ（参照）について説明する。
【０２４９】
すなわち、これまで説明したきたｍｉｒｒｏｒの変化例として、ｒｅｆｅｒ関係が考えられる。ｒｅｆｅｒ関係とｍｉｒｒｏｒ関係との相違は、ｍｉｒｒｏｒ関係においては、一方向複製元となるｍｉｒｒｏｒｅｄエレメントのデータが変更された場合に、一方向複製先となるｍｉｒｒｏｒエレメントのデータを自動的に変更するものであったが、参照元となるｒｅｆｅｒｒｅｄエレメントのデータの変更に際して、参照先となるｒｅｆｅｒエレメントのデータは自動的な変更を受けず、参照先となるｒｅｆｅｒエレメント側に対して、参照元となるｒｅｆｅｒｒｅｄエレメント側でデータの変更が行われた旨の通知がなされるだけである、という点である。
【０２５０】
もちろん、このｒｅｆｅｒ関係は、図１のシステム例にも、図２６のシステム例にも適用可能である。
【０２５１】
ｒｅｆｅｒ関係の利点は、利用者がそのデータが変更されたと明示的に気がつくことができる点である。
【０２５２】
例えば、急に打合せの会議室が変更された場合、会議室の打合せ場所の変更はデータの変更ではなくて、実際の利用者のスケジュールに対する意識が変更されなければいけない。この場合、ｒｅｆｅｒ関係を利用すことにより利用者が変更に気がつき、意識的に最新情報を取得し直すという作業により利用者の意識が更新されるという効果を得ることができる。
【０２５３】
また、他の例の一つとして、分散システムの管理項目の一つとしてｍｉｒｒｏｒ関係による他のデータの参照を行っていた場合、データの変更がシステムに思わぬ余波を与えることが考えられる。例えば、システムの防御装置に対するアクセスを許可するアカウントのリストと、システムの防御ポリシを策定する権限を持たせるアカウントのリストをｍｉｒｒｏｒ関係にしておくと、防御装置の保守に来た外部の業者がそのためにアクセス許可を得て、突然防御ポリシーを変更する権限を持ちセキュリティに重大な損失を与える場合も考えられる。これに対して、ｒｅｆｅｒ関係ならば、その文書にアクセスした段階で変更内容を受け入れるか、拒絶して依存関係を断ち切るかを利用者（この場合はシステム管理者）が選択できるので、このような事故の発生を抑える効果が得られる。
【０２５４】
ｒｅｆｅｒ関係は、ｍｉｒｒｏｒ関係に対してｒｅｆｅｒ修飾子を与えることによって行うことができる。この場合、ｒｅｆｅｒ修飾子は、ｍｉｒｒｏｒ要素のｒｅｆｅｒ属性として与えられる。
【０２５５】
ｒｅｆｅｒ属性は、以下のような値のうちの１つを持つが、システムの拡張によってｒｅｆｅｒ属性の値が下記以外の値になることも考えられる。
１．  ＮＯＴＩＦＹ＿ＵＰＤＡＴＥ
２．  ＮＯＴＩＦＹ＿ＡＣＫＮＯＷＬＥＤＧＥ＿ＵＰＤＡＴＥ
３．  ＮＯＴＩＦＹ＿ＯＮＬＹ
４．  ＮＯＴＩＦＹ＿ＥＸＴＡＣＫ
上記の１では、更新と同時に、データ自体を更新する。ただし、ｒｅｆｅｒ＝“ＮＯＴＩＦＹ＿ＵＰＤＡＴＥ”属性を与えられたｍｉｒｒｏｒが内容の変更を検知した場合、ｒｅｆｅｒ＿ｄｉｒｔｙ属性を与える。文書編集部１０３１は、ｒｅｆｅｒ＿ｄｉｒｔｙ属性を持つｍｉｒｒｏｒｅｄ要素において、その要素の内容が更新されたことを利用者に明示する。明示の手法にはダイアログで示すか、色や下線によって示す等が考えられる。
【０２５６】
２では、参照元が更新してもデータの更新は行わない。１と同様にｒｅｆｅｒ＿ｄｉｒｔｙ属性が与えられるが、データの更新は文書編集部１０３１の利用者による明示的な許可（ダイアログボックス等）が必要となる。
【０２５７】
３は、更新があった旨は表示するが、ｍｉｒｒｏｒ要素の内容は全く変更しない。
【０２５８】
４は、更新があった場合に電子メール等の外部手段を用いて変更を利用者に通知する。これは、２と同様の動作を行うが、ｒｅｆｅｒ＿ｄｉｒｔｙ属性が与えられた要素の更新許可は、電子メールを用いる。例えば、図３１に示すように、メッセージ処理部１０２５が外部手段へのアクセスを行うようにしてもよい。
【０２５９】
また、これまでの説明においては、３以上のエレメント間で依存関係を持つ場合には、ある１つのエレメントを複製元とし、他の２以上のエレメントを該ある１つのエレメントを複製元とする複製先のエレメントとする場合について説明したが、もちろん、その他の形態も可能である。
【０２６０】
例えば、エレメントａを複製元、エレメントｂをこれに対する複製先とし、次いで、エレメントｂを複製元、エレメントｃをこれに対する複製先とし、さらに、エレメントｃを複製元、エレメントｄをこれに対する複製先とし、…、というように、連鎖的に依存関係を付与できるようにする構成も可能である。
【０２６１】
また、例えば、エレメントａを複製元、エレメントｂをこれに対する複製先とし、次いで、エレメントｂを複製元、エレメントｃをこれに対する複製先とし、さらに、エレメントｃを複製元、エレメントｄをこれに対する複製先とするとともに、エレメントｃを複製元、エレメントｅをこれに対する複製先とし、…、というように、直線的な連鎖だけでなく、途中で枝分かれするような依存関係を付与できるようにする構成も可能である。
【０２６２】
なお、以上の各機能は、ソフトウェアとして実現可能である。
また、本実施形態は、コンピュータに所定の手段を実行させるための（あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための）プログラムとして実施することもでき、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【０２６３】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
また、この発明の実施の形態は、個別装置としての発明、関連を持つ２以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【０２６４】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【０２６５】
【発明の効果】
本発明によれば、文書間の依存関係を効果的に管理することが可能になる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る電子文書管理システムの構成例を示す図
【図２】同実施形態におけるＸＭＬ文書の一例を示す図
【図３】同実施形態におけるＸＭＬ文書の一例を示す図
【図４】同実施形態におけるＸＭＬ文書のＸＭＬ文書主部の一例を示す図
【図５】同実施形態におけるＸＭＬ文書のＸＭＬ文書断片を管理するためのＸＭＬ文書断片管理テーブルの一例を示す図
【図６】同実施形態における正式識別子と仮識別子との対応を管理するための識別子対応管理テーブルの一例を示す図
【図７】同実施形態における一貫性維持判定手続きの処理手順の一例を示すフローチャート
【図８】同実施形態における一貫性維持判定手続きの処理手順の一例を示すフローチャート
【図９】同実施形態におけるＸＭＬ文書一括管理装置に格納されているＸＭＬ文書を読み出しＸＭＬ文書参照・編集装置に表示するまでの処理手順の一例を示すフローチャート
【図１０】同実施形態におけるＸＭＬ文書参照・編集装置でＸＭＬ文書の編集を行う際の処理手順の一例を示すフローチャート
【図１１】同実施形態におけるＸＭＬ文書参照・編集装置でＸＭＬ文書の編集を行う際の処理手順の一例を示すフローチャート
【図１２】同実施形態における編集が終了したＸＭＬ文書をＸＭＬ文書一括管理装置に反映するまでの処理手順の一例を示すフローチャート
【図１３】同実施形態における編集が終了したＸＭＬ文書をＸＭＬ文書一括管理装置に反映するまでの処理手順の一例を示すフローチャート
【図１４】同実施形態における編集が終了したＸＭＬ文書をＸＭＬ文書一括管理装置に反映するまでの処理手順の一例を示すフローチャート
【図１５】同実施形態における編集が終了したＸＭＬ文書をＸＭＬ文書一括管理装置に反映するまでの処理手順の一例を示すフローチャート
【図１６】同実施形態におけるＸＭＬ文書のＸＭＬ文書主部の一例を示す図
【図１７】同実施形態におけるＸＭＬ文書のＸＭＬ文書主部の一例を示す図
【図１８】同実施形態におけるＸＭＬ文書の一例を示す図
【図１９】同実施形態におけるＸＭＬ文書の一例を示す図
【図２０】同実施形態におけるＸＭＬ文書の一例を示す図
【図２１】同実施形態におけるＸＭＬ文書の差分について説明するための図
【図２２】同実施形態におけるＸＭＬ文書のＸＭＬ文書断片を管理するためのＸＭＬ文書断片管理テーブルの一例を示す図
【図２３】同実施形態におけるＸＭＬ文書の一例を示す図
【図２４】同実施形態におけるＸＭＬ文書の差分について説明するための図
【図２５】同実施形態における編集相と読み出し相について説明するための図
【図２６】同実施形態に係る電子文書管理システムの他の構成例を示す図
【図２７】同実施形態における利用者による新規文書の登録について説明するための図
【図２８】同実施形態における文書を編集相で取り出す場合について説明するための図
【図２９】同実施形態における文書を読み出し相で取り出す場合について説明するための図
【図３０】同実施形態における編集相で取り出した文書の編集結果の再登録について説明するための図
【図３１】同実施形態におけるユーザへの通知方法の一例について説明するための図
【図３２】同実施形態における相互に相関している文書が編集された場合について説明するための図
【符号の説明】
１…ＸＭＬ文書参照・編集装置
３…ＸＭＬ文書一括管理装置
１０１…ＸＭＬ文書一時格納部
１０２…ＸＭＬ文書編集部
１０３…ＸＭＬ文書断片中継部
１０５…一時識別子生成部
１０６…ＸＭＬ文書差分演算部
１０７…ＸＭＬ文書差分送信部
１０８…ＸＭＬ文書受信部
３０１…ＸＭＬ文書主部格納部
３０２…ＸＭＬ文書主部格納部制御部
３０３…ＸＭＬ文書主部管理部
３１１…ＸＭＬ文書断片格納部
３１２…ＸＭＬ文書断片格納部制御部
３１３…ＸＭＬ文書断片管理部
３０４…識別子生成部
３０５…一時識別子管理部
３０６…ＸＭＬ文書結合部
３０７…ＸＭＬ文書送信部
３０８…ＸＭＬ文書差分受信部
３０９…ＸＭＬ文書差分分離部
１０００…依存情報管理エンジン
１００１…文書ＤＢ
１００２…文書管理要求受付部
１００３…文書断片抽出部
１００４…前処理部
１０２１…文書断片ＤＢ
１０２２…新規文書断片登録部
１０２３…既出断片更新検出部
１０２４…整合性検査部
１０２５…メッセージ処理部
１０３１…文書編集部
１０３２…文書参照部
【図１】
0003934965.tif 000007
【図２】
0003934965.tif 000008
【図３】
0003934965.tif 000009
【図４】
0003934965.tif 000010
【図５】
0003934965.tif 000011
【図６】
0003934965.tif 000012
【図７】
0003934965.tif 000013
【図８】
0003934965.tif 000014
【図９】
0003934965.tif 000015
【図１０】
0003934965.tif 000016
【図１１】
0003934965.tif 000017
【図１２】
0003934965.tif 000018
【図１３】
0003934965.tif 000019
【図１４】
0003934965.tif 000020
【図１５】
0003934965.tif 000021
【図１６】
0003934965.tif 000022
【図１７】
0003934965.tif 000023
【図１８】
0003934965.tif 000024
【図１９】
0003934965.tif 000025
【図２０】
0003934965.tif 000026
【図２１】
0003934965.tif 000027
【図２２】
0003934965.tif 000028
【図２３】
0003934965.tif 000029
【図２４】
0003934965.tif 000030
【図２５】
0003934965.tif 000031
【図２６】
0003934965.tif 000032
【図２７】
0003934965.tif 000033
【図２８】
0003934965.tif 000034
【図２９】
0003934965.tif 000035
【図３０】
0003934965.tif 000036
【図３１】
0003934965.tif 000037
【図３２】
0003934965.tif 000038