(57)【要約】【課題】法律や条例の改訂の作業や、法律文書、特許文書、業界規則文書、金融商品取り扱い文書、各種マニュアル、仕様書、説明書、業務規定書、社内規定など改訂の履歴を厳密に管理したいという要求、また、書籍の出版等において、編集作業の履歴管理をより厳密に行う。【解決手段】改訂対象の文書をＸＭＬ形式で、編章節目、条項号などに対応した木構造で表現したデータをコンピュータの記憶装置内に構成し、それらの木構造データのノードに当る要素に対して、その改正毎に、一意の改正ＩＤと改正の種別を表わす属性を組のリスト構造として与えると共に、改正前の原文を当該要素内に保存し、これらの情報を用いて当該要素の改正作業を操作するシステムを提供する。【選択図】　図３
2004126903.tif 000002
【特許請求の範囲】
【請求項１】
文書の改訂を支援するために、コンピュータを、
改訂対象文書を入力する手段と、
入力された改訂対象文書を、木構造で表現したデータに変換する手段と、
変換されたデータを記憶する手段と、
記憶されたデータの要素を指定して改訂を指示する手段と、
指示された改訂のバージョンを一意に表す改訂ＩＤと、その要素に対する改訂の種別を表わす属性を、リスト構造データとして、前記木構造データ内に記憶する手段と、
当該改訂の改訂前の原文を当該要素内に保存する手段と、
特定の改訂を指定して、該当する前記改訂ＩＤ、属性を削除すると共に、保存した原文を復帰することによって、当該改訂をキャンセルする手段と、
特定の改訂を指定して、該当する前記改訂ＩＤ、属性及び保存した原文を削除すると共に、当該属性で表される改訂を原文に反映させる手段と、
として機能させるための文書改訂支援プログラム。
【請求項２】
請求項１に記載のプログラムにおいて、前記リスト構造データが、
改訂ＩＤと改訂種別を表す属性の一対のデータを、改訂の順番に並べたものであることを特徴とする、
文書改訂支援プログラム。
【請求項３】
請求項１または２に記載のプログラムにおいて、更に、特定の改訂を指定して、前記要素及び属性を用いて当該改訂を表す文書を生成する手段を有することを特徴とする、
文書改訂支援プログラム。
【請求項４】
請求項１、２または３に記載のプログラムにおいて、更に、特定の改訂を指定して、前記要素及び保存された原文を用いて当該改訂箇所の改訂前後を対照する表を生成する手段を有することを特徴とする、
文書改訂支援プログラム。
【請求項５】
文書の改訂を支援するために、コンピュータを、
改訂対象文書を入力する手段と、
入力された改訂対象文書を、木構造で表現したデータに変換する手段と、
変換されたデータを記憶する手段と、
記憶されたデータの要素を指定して改訂を指示する手段と、
指示された改訂のバージョンを一意に表す改訂ＩＤと、その要素に対する改訂の種別を表わす属性を、リスト構造データとして、前記木構造データ内に記憶する手段と、
当該改訂の改訂前の原文を当該要素内に保存する手段と、
特定の改訂を指定して、該当する前記改訂ＩＤ、属性を削除すると共に、保存した原文を復帰することによって、当該改訂をキャンセルする手段と、
特定の改訂を指定して、該当する前記改訂ＩＤ、属性及び保存した原文を削除すると共に、当該属性で表される改訂を原文に反映させる手段と、
として機能させるための文書改訂支援プログラムを記録したコンピュータ読み取り可能媒体。
【請求項６】
請求項５に記載の媒体において、前記リスト構造データが、改訂ＩＤと改訂種別を表す属性の一対のデータを、改訂の順番に並べたものであることを特徴とする、
文書改訂支援プログラムを記録したコンピュータ読み取り可能媒体。
【請求項７】
請求項５または６に記載の媒体において、更に、特定の改訂を指定して、前記要素及び属性を用いて当該改訂を表す文書を生成する手段を有することを特徴とする、
文書改訂支援プログラムを記録したコンピュータ読み取り可能媒体。
【請求項８】
請求項５、６または７に記載のプログラムにおいて、更に、特定の改訂を指定して、前記要素及び保存された原文を用いて当該改訂箇所の改訂前後を対照する表を生成する手段を有することを特徴とする、
文書改訂支援プログラムを記録したコンピュータ読み取り可能媒体。
【請求項９】
文書の改訂を支援する装置であって、
改訂対象文書を入力する手段と、
入力された改訂対象文書を、木構造で表現したデータに変換する手段と、
変換されたデータを記憶する手段と、
記憶されたデータの要素を指定して改訂を指示する手段と、
指示された改訂のバージョンを一意に表す改訂ＩＤと、その要素に対する改訂の種別を表わす属性を、リスト構造データとして、前記木構造データ内に記憶する手段と、
当該改訂の改訂前の原文を当該要素内に保存する手段と、
特定の改訂を指定して、該当する前記改訂ＩＤ、属性を削除すると共に、保存した原文を復帰することによって、当該改訂をキャンセルする手段と、
特定の改訂を指定して、該当する前記改訂ＩＤ、属性及び保存した原文を削除すると共に、当該属性で表される改訂を原文に反映させる手段と、
からなる文書改訂支援装置。
【請求項１０】
請求項９に記載の装置において、前記リスト構造データが、
改訂ＩＤと改訂種別を表す属性の一対のデータを、改訂の順番に並べたものであることを特徴とする、
文書改訂支援装置。
【請求項１１】
請求項９または１０に記載の装置において、更に、特定の改訂を指定して、前記要素及び属性を用いて当該改訂を表す文書を生成する手段を有することを特徴とする、
文書改訂支援装置。
【請求項１２】
請求項９、１０または１１に記載の装置において、更に、特定の改訂を指定して、前記要素及び保存された原文を用いて当該改訂箇所の改訂前後を対照する表を生成する手段を有することを特徴とする、
文書改訂支援装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、文書の改訂作業を支援するシステムに関する。
【０００２】
【従来の技術】
従来、文書の改訂作業において、改訂の履歴を残して後に利用したいという要求があった。従来は、紙の文書に書き込んで改訂の履歴を残したり、改訂された文書の世代毎のコピーを残したり、ワードプロセッサのファイル機能で改訂の世代毎の文書ファイルを残す等で行っていた。更に進んだ方法としては、電子ファイルの変更毎に、もとの文書と改訂された文書の差分を残す技術もあった。現在特に普及しているものとしては、マイクロソフト社のワードにおける履歴機能と履歴保存時のフォーマットがある。
【０００３】
【発明が解決しようとする課題】
しかしながら、このような従来の技術は、紙の文書を用いる場合には、管理そのものが難しいと共に、保管場所を必要とする等の欠点があり、ワードプロセッサ等の電子ファイルを利用する場合でも、文書の改訂の履歴を管理するとはいっても、単に改訂の世代を適当な時刻において記録して、その間の比較をしたり、世代をさかのぼって元に戻したり、世代を下って変更のやり直しをしたりすることを実現するだけで、例えば、法律や条例の改訂の作業や、法律文書、特許文書、業界規則文書、金融商品取り扱い文書、各種マニュアル、仕様書、説明書、業務規定書、社内規定文書など改訂の履歴を厳密に管理したいという要求には不十分であった。即ちこの要求には従来不可能であった以下のような機能を実現する必要がある。
１．記録した履歴から、特定時点における改訂内容を説明する「改訂文」を自動的に生成すること。
２．複数の複雑に関係しあった改訂の内から特定のものを選択的にキャンセルすること。
３．ある文書に関する同時並行的な複数の改訂作業を実現すること。
４．複数の改訂を独立して管理し、それらの改訂内容を選択的に元の文書に反映すること。
５．改訂前後の新旧の対照表を自動的に作成すること。
６．文書中の任意の改訂内容を閲覧すること。
【０００４】
これらの機能は、特に法律の改正、条例の改正等の作業において必要欠くべからざるものであって、従来の技術では多大な労力と時間がかかり、作業担当者の負担が重く、間違いが起こりがちなことが問題であった。
【０００５】
【課題を解決するための手段】
本発明による文書改訂支援システムは、このような従来技術の欠点を解決することを目的とするもので、文書をＸＭＬ形式で保存し、その文書中にすべての編集履歴を保存する手段を提供すると共に、その様なＸＭＬ文書の処理システムを提供してこの目的を達成する。
【０００６】
より詳細に言えば、文書を保存するために定めたＸＭＬのスキーマ（ＤＴＤ）において、更に編集履歴を保存するための属性及び要素を追加することによって、当該文書の編集履歴を、その順序を含めて細大余さず記録保存する手段を提供する。即ちＸＭＬ文書の構造単位で差分を参照・管理する手段を提供する。更にそのＸＭＬ文書の、記録保存された履歴データを用いて、特定時点における改訂内容を説明する「改訂文」を自動的に生成すること、複数の複雑に関係しあった改訂の内から特定のものを選択的にキャンセルすること、ある文書に関する同時並行的な複数の改訂作業を実現すること、複数の改訂を独立して管理し、それらの改訂内容を選択的に元の文書に反映すること、改訂前後の新旧の対照表を自動的に作成すること、文書中の任意の改訂内容を閲覧するシステムを実現する。
【０００７】
【発明の実施の形態】
本発明による文書改訂支援システムは、前述のような改訂の履歴を厳密に管理しなければならない各種文書の改訂作業を支援することが出来るが、その中でも特に形式が厳密に定められ、複雑な改訂作業を必要とする法律及び条例などの改正の支援に有用である。
【０００８】
法律及び条例などの改正作業においては、文書を改正した内容及び順序を詳細に履歴として残し、その記録した履歴から、特定時点における改正内容を簡潔に説明する「改正文（改正法乃至改正条例）」を生成し、さらにその改正前後の新旧の対照表を作成する必要がある。また、必要に応じて文書中の任意の改正内容を閲覧することも必要である。
【０００９】
そして、それらの文書に基づいた改正の可否に応じて、複数の複雑に関係しあった改正の内から特定のものを選択的にキャンセル（廃案処理）したり、選択的に元の文書に反映（溶け込まし処理）することが必要である。
【００１０】
この作業のフローを図１に示す。図中（１１）は、改正対象の元の条例であり、これを改正作業（１２）を介して改正案（１３）を作る。これら元の条例と改正案との関係を、一部改正条例（１４）として表現すると共に、新旧対照表（１５）を作成し、議会等の決定機関における審議を経て、成立ならば、改正条例（１６）として公布し、廃案ならば、元の条例（１１）に戻す作業をする。新たな改正条例（１６）は、次期の改正（１７）において元の条例となる。
【００１１】
しかも、これらの改正作業は、図２に示すように、一つの文書に関して同時並行的に複数の改正作業がなされる場合があるので、その様な場合にも相互の矛盾なく上記機能を実現しなければならない。
【００１２】
これらの要件を実現するために、本願発明の文書改訂支援システムは、改訂対象の文書をＸＭＬ形式で、編章節目、条項号などに対応した木構造で表現したデータをコンピュータの記憶装置内に構成し、それらの木構造データのノードに当る要素に対して、その改正毎に、一意の改正ＩＤと改正の種別を表わす属性を組のリスト構造として与えると共に、改正前の原文を当該要素内に保存し、これらの情報を用いて当該要素の改正作業を操作するシステムを提供する。
【００１３】
以下この情報の構造とその操作システムの実施例を条例の改正作業を例として説明する。
【００１４】
【実施例】
改正文・新旧対照表・公布文生成処理のシステム化に当って、例規（条例規則）全体または例規部分構造に対する廃案処理、溶け込まし処理の自動化を実現するために、例規ＸＭＬ（条例規則の文書を編章節目、条項号などに対応した木構造で表現した表現するＸＭＬデータ）中に、改正箇所（バージョン）毎に、その改正箇所を一意に識別可能な改正ＩＤを与える。一度割り当てられた改正ＩＤは決して変更しないものとする。
【００１５】
この改正ＩＤを指定して廃案・溶け込まし処理を行う。この処理には指定された改正ＩＤ以降の溶け込まし処理、指定された改正ＩＤ以前の廃案処理を含む。更に、前記改正ＩＤと組になる情報として、前記例規ＸＭＬの文書スキーマ（ＤＴＤ）に対して、必要に応じて以下のような属性と改正種別の内の少なくとも１つを付加する。
（１）ｒｅｖｉｓｅ属性
これは、改正箇所に改正情報を付加するための属性であって、文書に対する編集を表す改正ＩＤ（バージョン情報）と、各要素について行われた改正の種別をあらわす改正種別の組のリストである。例えば要素Ｘに対して２度の改正Ａ及びＢが行われた場合のリストの書式は次の通りである。
＜要素Ｘ　ｒｅｖｉｓｅ＝”改正Ａ　ａｄｄｅｄ　改正Ｂ　ｅｒａｓｅｄ”＞
ここにおいて、要素Ｘは、例規文書の要素である「編」「章」「節」「目」「条」「項」「号」等を表し、（改正Ａ　ａｄｄｅｄ）、（改正Ｂ　ｅｒａｓｅｄ）は、それぞれの改正の改正ＩＤと改正種別の組を表わし、その出現順序は改正の順序を表わす。これは例規文書の場合であるが、通常の文書の「章」「節」「段落」などの一般的な文書要素であってもよく、以下の例示において、＜要素Ｘ＞．．．＜／要素Ｘ＞　等の表示は、適宜＜章＞．．．　＜／章＞、＜条＞．．．＜／条＞、＜段落＞．．．＜／段落＞　等のように読み替えることができる。この様に表現することによって、文書中の要素に対して複数の改正をその順番を含めて表現することが可能となった。
【００１６】
改正種別には以下のものを定義する。
（ａ）ｒｅｍｏｖｅｄ：要素の削除を意味する。
（ｂ）ｅｒａｓｅｄ：要素の削るを意味。番号の繰り上げが発生する。
（ｃ）ａｄｄｅｄ：要素の追加を意味する。番号の繰り下げが発生する。
（ｄ）ｐａｒｔｉａｌ：一部改正（字句改正）を意味する。
（ｅ）ｏｖｅｒａｌｌ：全部改正を意味。オリジナルの文書を退避する。
（ｆ）ｒｅｖｉｖａｌ：削除されていた要素の全部改正を行う（ｏｖｅｒａｌｌとほぼ同意）。
（ｇ）ｃｏｌｌａｐｓｅｄ：編章節目、条に対して有効。章名や条名の削除を意味する。
（ｈ）ｄｉｖｉｄｅｄ：編、章、節、款、目、条の分割を意味する。
【００１７】
次にこれらの改正種別のそれぞれについて説明する。文書、文書中の要素に対して行われた個々の改正種別に対して、適用（溶け込まし処理）、キャンセル（廃案処理）のアルゴリズムも示す。
（ａ）ｒｅｍｏｖｅｄ
要素Ｘが「削除」されたことを表す。要素の「削除」は、文書中からその要素が除去されることを表すのではなく、要素Ｘの内容が文書中で無効になることをあらわす。これは例えば、条文の番号を残して、その内容を『削除』と表記する場合に該当する。（下向き矢印の前は改正前のＸＭＬ文であり、矢印の後は改正後のＸＭＬ文を表す。以下同じ。）
2004126903.tif 000003
文書中で無効か否かを表すフラグはｒｅｍｏｖｅｄ属性値である。
【００１８】
これは削除されることのある要素がｒｅｍｏｖｅｄ属性を持つことを表す。
削除の変更（改正Ａ）が適用（ａｐｐｌｙ）されたときは、ｒｅｖｉｓｅ属性から　”改正Ａ　ｒｅｍｏｖｅｄ”　を削除し、更にｒｅｖｉｓｅ属性値が　””　となった場合、ｒｅｖｉｓｅ属性を要素Ｘから除去して以下のようにする。
＜要素Ｘ　ｒｅｍｏｖｅｄ＝”ｙｅｓ”＞
＜要素Ｙ＞．．．＜／要素Ｙ＞
＜／要素Ｘ＞
このようにしてｒｅｍｏｖｅｄ属性がｙｅｓとなり、文書中、この要素が無効となる。
【００１９】
一方、削除の変更（改正Ａ）がキャンセルされた場合、同様にｒｅｖｉｓｅ属性中から　”改正Ａ　ｒｅｍｏｖｅｄ”　を除去し、ｒｅｍｏｖｅｄ属性値をｎｏにする。
このように改正ＩＤを指定して、全ての属性において同様に、その改正の適用または廃案処理を一括して行うことができる。
（ｂ）ｅｒａｓｅｄ
要素Ｘを「削る」ことを表す。要素の「削る」は、文書中からその要素が除去されることを表す。これは例えば、条文の番号も含めて、その内容を除去する場合に該当する。この時は「削られた」条文以下の番号の繰り上げが生ずるが、この処理については後述する。
2004126903.tif 000004
削るを行った改正Ａが適用（ａｐｐｌｙ）されたとき、要素Ｘを文書中から完全に除去し、以下のようにする。
＜要素Ｗ＞．．．＜／要素Ｗ＞
＜要素Ｙ＞．．．＜／要素Ｙ＞
削るを行った改正Ａがキャンセルされた場合、ｒｅｖｉｓｅ属性中から　”改正Ａ　ｅｒａｓｅｄ”　を除去し、更にｒｅｖｉｓｅ属性値が　””　となった場合、ｒｅｖｉｓｅ属性を要素Ｘから除去する。
（ｃ）ａｄｄｅｄ
要素Ｘが追加されたことを表す。この時は「追加された」条文以下の番号の繰り下げが生ずるが、この処理については後述する。
2004126903.tif 000005
追加を行った改正Ａが適用（ａｐｐｌｙ）されたとき、要素Ｘのｒｅｖｉｓｅ属性中から　”改正Ａ　ａｄｄｅｄ”　を除去し、更にｒｅｖｉｓｅ属性値が　””　となった場合、ｒｅｖｉｓｅ属性を要素Ｘから除去して以下のようにする。
＜要素Ｗ＞．．．＜／要素Ｗ＞
＜要素Ｘ＞．．．＜／要素Ｘ＞
＜要素Ｙ＞．．．＜／要素Ｙ＞
一方、追加を行った改正Ａをキャンセルするとき、要素Ｘを文書中から完全に除去する。
（ｄ）ｐａｒｔｉａｌ
ＸＭＬ文書内のＰＣＤＡＴＡ（テキスト）と文字装飾タグなどが混在する要素に対して、一部字句の改正を行うことを表す。以下は「本日は晴天ですね。」を「本日も晴天ですね。」に字句改正を行った場合を例示する。
2004126903.tif 000006
字句改正では挿入された文字列はｉｎｓタグ、削除された文字列はｄｅｌタグで表現する。またそれぞれ改正Ａを表すｒｅｖｉｓｅ＿ｉｄ属性を持たせる。
【００２０】
字句改正を行った改正Ａが適用（ａｐｐｌｙ）された場合、ｒｅｖｉｓｅ属性中から　”改正Ａ　ｐａｒｔｉａｌ”　を削除する。さらに、ｒｅｖｉｓｅ＿ｉｄ属性値が　”改正Ａ”　であるｄｅｌタグを削除し、同じくｒｅｖｉｓｅ＿ｉｄ属性値が　”改正Ａ”　であるｉｎｓタグの子供を、そのｉｎｓタグの前に挿入し、最後にそのｉｎｓタグを削除する。
＜要素Ｘ　ｒｅｖｉｓｅ＝”改正Ａ　ｐａｒｔｉａｌ”＞
本日も＜ｅｍ＞晴天＜／ｅｍ＞ですね。
＜／要素Ｘ＞
字句改正を行った改正Ａをキャンセルする場合も同様に、ｒｅｖｉｓｅ属性中から　”改正Ａ　ｐａｒｔｉａｌ”　を削除する。さらに、ｒｅｖｉｓｅ＿ｉｄ属性値が　”改正Ａ”　であるｉｎｓタグを削除し、同じくｒｅｖｉｓｅ＿ｉｄ属性値が　”改正Ａ”　であるｄｅｌタグの子供を、そのｄｅｌタグの前に挿入し、最後にそのｄｅｌタグを削除する。
（ｅ）ｏｖｅｒａｌｌ
要素を、全部改正することを表す。以前の内容を保存するために、ｐａｒｔｉａｌのように以前の内容との差を保存するのではなく、以前の内容全てをｏｒｉｇｉｎａｌ要素に保存する。ｏｒｉｇｉｎａｌ要素のｒｅｖｉｓｅ＿ｉｄ属性に改正ＩＤを保存する。以下は、要素Ｚの全文を要素ＺＺ（ここでは「あああああ」という文字列）に改正する場合を例示する。
2004126903.tif 000007
全部改正を適用（ａｐｐｌｙ）するとき、要素Ｘのｒｅｖｉｓｅ属性中の　”改正Ａ　ｏｖｅｒａｌｌ”を除去し、更にｒｅｖｉｓｅ属性値が　””　となった場合、ｒｅｖｉｓｅ属性を要素Ｘから除去し、またｏｒｉｇｉｎａｌ要素を除去して以下のようにする。
＜要素Ｘ＞
＜要素ＺＺ＞あああああ＜／要素ＺＺ＞
＜／要素Ｘ＞
一方、全部改正をキャンセルするときは、要素Ｘをｏｒｉｇｉｎａｌ要素中のものと置き換える。
（ｆ）ｒｅｖｉｖａｌ
削除（ｒｅｍｏｖｅｄ＝”ｙｅｓ”）されている要素、つまり文書中で無効になっている要素を再生する。基本的にｏｖｅｒａｌｌと同じ処理であるが、削除されている要素に対してのみ有効とする。これは、条例の改正で削除が一旦決定された後に、何らかの理由でもとの条文が復活させられる場合に該当する。
（ｇ）ｃｏｌｌａｐｓｅｄ
同種の要素Ｘ１と要素Ｘ２が連続している場合、要素Ｘ２による区分を削ることを表す。これは、編、章、節、目、条等に対して、それらを削除する場合に該当する。
2004126903.tif 000008
要素Ｘ２の区分を削る改正Ａが適用（ａｐｐｌｙ）されたとき、要素Ｘ２の子供を兄に相当する要素Ｘ１の子供の末尾に追加移動し、要素Ｘ２を文書中から除去して、以下のようにする。
＜要素Ｘ１＞
＜要素Ｚ１＞．．．＜／要素Ｚ１＞
＜要素Ｚ２＞．．．＜／要素Ｚ２＞
＜／要素Ｘ１＞
要素Ｘ２の区分を削る改正Ａがキャンセルされると、要素Ｘ２のｒｅｖｉｓｅ属性から　”改正Ａ　ｃｏｌｌｐａｓｅｄ”　を除去し、更にｒｅｖｉｓｅ属性値が　””　となった場合、ｒｅｖｉｓｅ属性を要素Ｘ２から除去する。
（ｈ）ｄｅｖｉｄｅｄ
要素の区分を追加し、要素の子供を分割することを表す。これはｃｏｌｌａｐｓｅｄと逆の操作で、編、章、節、目、条等を追加する場合に該当する。
2004126903.tif 000009
区分を追加する改正が適用（ａｐｐｌｙ）されたときは、要素Ｘ２のｒｅｖｉｓｅ属性から　”改正Ａ　ｄｅｖｉｄｅｄ”　を除去する。
【００２１】
一方、区分を追加する改正をキャンセルするときは、要素Ｘ２の子供を、兄に相当する要素Ｘ１の子供の末尾に追加移動し、要素Ｘ２を文書中から除去する。
（２）ｎｕｍ属性
これは条文の番号を表す属性であって、ｘ．ｙ．ｚ　形式で表し、ここでｘを深さ０、ｙを深さ１、ｚを深さ２の枝番号とする。即ち　”２．２．２”　は深さ２の番号、”３．３”　は深さ１の番号、”１”　は深さ０の番号となる。番号の入力及び変更は自動的に行い、矛盾（番号の重複、空き）が発生しないようにする。番号つき要素Ｚの追加は、追加位置を指定するダイアログを用いて、ある番号つき要素Ｘを指定し、その次に挿入する。枝番号を設定する際は、要素Ｘの番号の深さに対して＋１となる枝番号を設定することを可能とする。この例示のような場合（条規文書の番号付け）においては、深さ１以上の枝番号は２から始まるものとする（１は設定されない）。即ち、　ＨＹＰＥＲＬＩＮＫ　”ｍａｉｌｔｏ：Ｘ／＠ｎｕｍ＝￥”５￥”であれば”　Ｘ／＠ｎｕｍ＝”５”であれば、　ＨＹＰＥＲＬＩＮＫ　”ｍａｉｌｔｏ：Ｙ／＠ｎｕｍ＝￥”５．２￥”となる”　Ｙ／＠ｎｕｍ＝”５．２”となり、　ＨＹＰＥＲＬＩＮＫ　”ｍａｉｌｔｏ：Ｘ／＠ｎｕｍ＝￥”４．２￥”であればＹ／＠ｎｕｍ＝￥”４．２．２￥”となる”　Ｘ／＠ｎｕｍ＝”４．２”であればＹ／＠ｎｕｍ＝”４．２．２”となる。
（３）ｐｒｅｓｅｔ属性
番号の繰り上げ及び繰り下げに対応する処理用の属性であって、文書に対する編集を表す改正ＩＤ（バージョン）と、その改正ＩＤにおける要素の番号の組のリストで表す。
【００２２】
改正において、繰上げ繰り下げが発生したとき、番号を管理しているｎｕｍ属性値を直接変更するのではなく、ある改正で、どの番号に変更されたのかをｒｅｖｉｓｅ属性同様、改正毎にその順番を含めて管理するものである。
【００２３】
番号（ｎｕｍ属性）をもつ要素、かつ、他の要素の追加や削るによって番号の繰上げ、繰り下げが行われる要素にｐｒｅｓｅｔ属性を加える。
例えば、
2004126903.tif 000010
に対し、改正Ａで要素Ｘ１の後に新たな要素Ｘ１１が加えられた場合次のようにする。（なお、／／　以下の文章は操作を解りよくするためのコメントである。）
2004126903.tif 000011
さらに同じ改正Ａで要素Ｘ２が削られた場合、以下のようにする。
2004126903.tif 000012
要素Ｘ３はここで４から３に戻ったので、番号が改正前の番号と同じであるためｐｒｅｓｅｔ属性を除去する。
【００２４】
一方、要素Ｘ２が次の改正Ｂで削られた場合は、以下のようにする。
2004126903.tif 000013
改正Ａが適用された場合、ｐｒｅｓｅｔ属性中に改正Ａを含む要素は、その値をｎｕｍ属性の値に変更し、ｒｅｖｉｓｅ属性から　”改正Ａ　番号”　を除去する。上記例示の場合は以下のようになる。
＜要素Ｘ１　ｎｕｍ＝”１”＞．．．＜／要素Ｘ１＞　　　　　　　　　　　　　　　　　　　　　　／／　１
＜要素Ｘ１１　ｎｕｍ＝”２”＞．．．＜／要素Ｘ１＞　　　　　　　　　　　　　　　　　　　　　／／　２
＜要素Ｘ２　ｎｕｍ＝”３”　ｒｅｖｉｓｅ＝”改正Ｂ　ｅｒａｓｅｄ”＞．．．＜／要素Ｘ１＞
＜要素Ｘ３　ｎｕｍ＝”４”　ｐｒｅｓｅｔ＝”改正Ｂ　３”＞．．．＜／要素Ｘ１＞　　　　　　／／　４から３（改正Ｂ）
一方、改正Ｂが廃案された場合、”改正Ｂ　番号”　をｐｒｅｓｅｔ属性から除去する。
この場合、上記例示の要素Ｘ３は以下のようになる。
＜要素Ｘ３　ｎｕｍ＝”４”＞．．．＜／要素Ｘ１＞
このようにして編章節目、条項号などの番号つき要素に対して、削る、加える操作が行われたときに番号の繰り上げ及び繰り下げ処理を行うことができる。
【００２５】
ただし枝番号として条項を追加する場合、繰上げ繰り下げが発生しない場合がある。
例えば、１条、２条とあったときに１．２条を追加する場合、繰り下げは発生しない。このとき１．２条にはｎｕｍ属性に　”１．２”　を設定し、ｐｒｅｓｅｔ属性は付加しない。また、１条、１．２条、１．３条、２条とあったとき、１．３条を削った場合、繰上げは発生しない。
【００２６】
また、現行改正Ａで追加された条項などの要素については、現行改正及び他の箇所で繰上げ、繰上げが発生したとき、ｐｒｅｓｅｔ属性の操作を行わず、ｎｕｍ属性値を直接操作する。例えば、１条、２条の間に新たに２条を追加した場合、
＜条　ｎｕｍ＝”１”＞．．．＜／条＞
＜条　ｎｕｍ＝”２”　ｒｅｖｉｓｅ＝”改正Ａ　ａｄｄｅｄ”＞．．．＜／条＞
＜条　ｎｕｍ＝”２”　ｐｒｅｓｅｔ＝”改正Ａ　３”＞．．．＜／条＞
となるが、ここでさらに１条を削った場合、以下のようにする。
＜条　ｎｕｍ＝”１”　ｒｅｖｉｓｅ＝”改正Ａ　ｅｒａｓｅｄ”＞．．．＜／条＞
＜条　ｎｕｍ＝”１”　ｒｅｖｉｓｅ＝”改正Ａ　ａｄｄｅｄ”＞．．．＜／条＞　　　　　／／　ｎｕｍ属性を変更
＜条　ｎｕｍ＝”２”＞．．．＜／条＞　　　　　　　　　　　　　　　　　　　　　　　　　　／／　改正Ａ以前と同じ番号
これは、現行改正で追加された要素については、「改正前の番号」が存在しないため、保存の必要がないのでｐｒｅｓｅｔ属性を用いる必要がないためである。
【００２７】
以上に説明した様な改正ＩＤ及び属性を組で用いるデータ構造によって、複数の改正を独立させ、個々の改正内容を選択的に文書に反映させることが可能となった。
【００２８】
次に複数の一部改正が同時に進行する場合（ａ）と、一部改正と当該一部改正の一部改正が進行する場合（ｂ）を例に挙げて説明する。
第１条
甲は動物である。
という条文を例に考える。
（ａ）複数の一部改正作業が同時に進行する場合
例えば、改正作業が、次のようなものであるとする。
１．１つめの条文は、２月１４日施行の一部改正内容を反映する。
２．２つめの条文は，３月３１日施行の一部改正内容を反映する。
ここで２月１０日現在、以下の構造がデータ中にあるものとする。
＜条　ｎｕｍ＝”１”　ｒｅｖｉｓｅ＝”ｒ２００２０２１４　ｒ２００２０３３１”　＞
＜ｐ＞＜ｄｅｌ　ｒｅｖｉｓｅ＝”ｒ２００２０２１４”＞甲＜／ｄｅｌ＞＜ｉｎｓ　ｒｅｖｉｓｅ＝”ｒ２００２０２１４”＞乙＜／ｉｎｓ＞は＜ｄｅｌ　ｒｅｖｉｓｅ＝”ｒ２００２０３３１”＞動物＜／ｄｅｌ＞＜ｉｎｓ　ｒｅｖｉｓｅ＝”ｒ２００２０３３１”＞哺乳類＜／ｉｎｓ＞である。＜／ｐ＞
＜／条＞
そこで、ｒｅｖｉｓｅ＝”ｒ２００２０２１４”であるような要素についてのみ、改正文作成実行すると、「第１条の「甲」を「乙」に改める。」が作成される。
【００２９】
２月１４日の施行時に以下の溶け込まし処理を実行。
ｒｅｖｉｓｅ＝”ｒ２００２０２１４”であるような要素について、溶け込まし実行すると、
＜条　ｎｕｍ＝”１”　ｒｅｖｉｓｅ＝”ｒ２００２０３３１”＞
＜ｐ＞乙は，＜ｄｅｌ　ｒｅｖｉｓｅ＝”ｒ２００２０３３１”＞動物＜／ｄｅｌ＞＜ｉｎｓ　ｒｅｖｉｓｅ＝”ｒ２００２０３３１”＞哺乳類＜／ｉｎｓ＞である。＜／ｐ＞
＜／条＞
となる、次にｒｅｖｉｓｅｄ＝”ｒ２００２０３３１”であるような要素についてのみ，改正文作成実行すると、「第１条の「動物」を「哺乳類」に改める。」が作成される。
【００３０】
そして３月３１日の施行時に以下の溶け込まし処理を実行する。即ち、
ｒｅｖｉｓｅ＝”ｒ２００２０３３１”であるような要素について、溶け込まし処理を実行すると、
＜条　ｎｕｍ＝”１”＞
＜ｐ＞乙は哺乳類である。＜／ｐ＞
＜／条＞
となる。
（ｂ）一部改正と一部改正の一部改正作業が進行する場合
現在のデータを次の通りとする。
＜条　ｎｕｍ＝”１”　ｒｅｖｉｓｅ＝”ｒ２００２０２１４”＞
＜ｐ＞＜ｄｅｌ　ｒｅｖｉｓｅ＝”ｒ２００２０２１４”＞甲＜／ｄｅｌ＞＜ｉｎｓ　ｒｅｖｉｓｅ＝”ｒ２００２０２１４”＞乙＜／ｉｎｓ＞は動物である。＜／ｐ＞
＜／条＞
これに対して、
＜条　ｎｕｍ＝”１”　ｒｅｖｉｓｅ＝”ｒ２００２０２１０　ｒ２００２０２１４”＞
＜ｐ＞＜ｄｅｌ　ｒｅｖｉｓｅ＝”ｒ２００２０２１４”＞甲＜／ｄｅｌ＞＜ｉｎｓ　ｒｅｖｉｓｅ＝”ｒ２００２０２１４”＞＜ｄｅｌ　ｒｅｖｉｓｅ＝”ｒ２００２０２１０”＞乙＜／ｄｅｌ＞＜ｉｎｓ　ｒｅｖｉｓｅ＝”ｒ２００２０２１０”＞丙＜／ｉｎｓ＞＜／ｉｎｓ＞は動物である。＜／ｐ＞
＜／条＞
となるような、編集を行う。
これは、２月１４日の以前に施行するような一部改正の一部改正を行うのが適当とされている。そこで２月１０日とする。
ここで、ｒｅｖｉｓｅ＝”ｒ２００２０２１０”であるような要素についてのみ、改正文作成を実行すると、「第１条の「乙」を「丙」に改める。」が作成される。
【００３１】
この改正文は，一部改正の一部改正として正しい内容である。
２月１０日施行時の溶け込まし処理後は、以下のようなデータとなる。
＜条　ｎｕｍ＝”１”　ｒｅｖｉｓｅ＝”ｒ２００２０２１４”＞
＜ｐ＞＜ｄｅｌ　ｒｅｖｉｓｅ＝”ｒ２００２０２１４”＞甲＜／ｄｅｌ＞＜ｉｎｓ　ｒｅｖｉｓｅ＝”ｒ２００２０２１４”＞丙＜／ｉｎｓ＞は動物である。＜／ｐ＞
＜／条＞
ここで改正文作成を実行すると、「第１条の「甲」を「丙」に改める。」が作成される。
【００３２】
この改正文も、一部改正として正しい内容である。
次に２月１４日の施行時に以下の溶け込まし処理が実行される。即ち、
ｒｅｖｉｓｅ＝”ｒ２００２０２１４”であるような要素について、溶け込まし処理を実行した結果。
＜条　ｎｕｍ＝”１”　＞
＜ｐ＞丙は動物である。＜／ｐ＞
＜／条＞
となる。
【００３３】
このようなデータ構造を用いる文書改訂支援システムは、図３に示すようなコンピュータシステムのハードウエア資源とソフトウエアとの協働によって具体的に実現されている。図において、（３０）は本発明による文書改訂支援装置であって、改訂対象文書を入力する手段（３１）と、入力された改訂対象文書やその後の処理途中のデータを記憶する記憶装置（３２）と、入力された改訂対象文書を、木構造で表現したデータに変換する手段と（３３）と、変換されたデータを記憶する手段（３２）と、記憶されたデータの要素を指定して改訂を指示する手段（３１）と、指示された改訂バージョンを一意に表す改訂ＩＤと、その要素に対する改訂の種別を表わす属性を、組のリスト構造として生成し、前記木構造データ内に記憶させる手段（３４）と、当該改訂の改訂前の原文を当該要素内に保存する手段（３５）と、特定の改訂ＩＤを指定して、前記要素及び属性を用いて当該改訂を表す文書や当該改訂箇所の新旧対照表（３６）を生成する手段（３７）と、特定の改訂ＩＤを指定して、前記改訂ＩＤ、属性を削除すると共に、保存した原文を復帰することによって、当該改訂をキャンセルしたり、特定の改訂ＩＤを指定して、前記改訂ＩＤ、属性及び保存した原文を削除すると共に、当該属性で表される改訂を原文に反映させる手段（３８）と、等からなる。
【００３４】
これらの構成要素の内、入力及び指示手段（３１）は、キーボード、スキャナ、音声入力装置、マウス等の入出力装置でよく、記憶装置（３２）は半導体メモリー装置、ハードディスク装置等の記憶装置でよく、変換手段（３３）、生成手段（３４、３７）、保存手段（３５）、キャンセル及び反映手段（３８）等は、ＣＰＵ、種々のソフトウエアモジュール等（ファームウエアを含む）で構成されることが望ましい。なお、これらの構成要素は、単一のコンピュータシステムに実現される他、ネットワーク上に分散した、ハードウエア上に実現することもできる。例えば、記憶手段（３２）をネットワーク上のデータベース・サーバーとし、その上にＸＬＭ文書を蓄積して、ネットワークでつながったクライアント・マシン上にその他の入出力手段、処理手段（３２を除く構成）を実現してもよい。
【００３５】
【発明の効果】
以上のような文書改訂支援システムを実現することによって、従来不可能であった、以下の機能を実現した。
１．記録した履歴から、特定時点における改訂内容を説明する「改訂文」を自動的に生成すること。
２．複数の複雑に関係しあった改訂の内から特定のものを選択的にキャンセルすること。
３．ある文書に関する同時並行的な複数の改訂作業を実現すること。
４．複数の改訂を独立して管理し、それらの改訂内容を選択的に元の文書に反映すること。
５．改訂前後の新旧の対照表を自動的に作成すること。
６．文書中の任意の改訂内容を閲覧すること。
【００３６】
これによって、例えば、法律や条例の改訂の作業や、法律文書、特許文書、各種マニュアル、仕様書、説明書など改訂の履歴を厳密に管理したいという要求、また、書籍の出版等において、編集作業の履歴管理をより厳密に行いたいという要求を満たすことができる。
【図面の簡単な説明】
【図１】文書改訂作業の１例を示すフロー図。
【図２】図１の文書改訂作業の同時並行的進行を示すフロー図。
【図３】本発明による文書改訂支援システムのブロック図。
【図１】
2004126903.tif 000014
【図２】
2004126903.tif 000015
【図３】
2004126903.tif 000016
【手続補正書】
【提出日】平成15年10月3日(2003.10.3)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
字句改正を行った改正Ａが適用（ａｐｐｌｙ）された場合、ｒｅｖｉｓｅ属性中から　¨改正Ａ　ｐａｒｔｉａｌ¨　を削除する。さらに、ｒｅｖｉｓｅ＿ｉｄ属性値が　¨改正Ａ¨　であるｄｅｌタグを削除し、同じくｒｅｖｉｓｅ＿ｉｄ属性値が　¨改正Ａ¨　であるｉｎｓタグの子供を、そのｉｎｓタグの前に挿入し、最後にそのｉｎｓタグを削除する。
＜要素Ｘ　ｒｅｖｉｓｅ＝¨改正Ａ　ｐａｒｔｉａｌ¨＞
本日も＜ｅｍ＞晴天＜／ｅｍ＞ですね。
＜／要素Ｘ＞
字句改正を行った改正Ａをキャンセルする場合も同様に、ｒｅｖｉｓｅ属性中から　¨改正Ａ　ｐａｒｔｉａｌ¨　を削除する。さらに、ｒｅｖｉｓｅ＿ｉｄ属性値が　¨改正Ａ¨　であるｉｎｓタグを削除し、同じくｒｅｖｉｓｅ＿ｉｄ属性値が　¨改正Ａ¨　であるｄｅｌタグの子供を、そのｄｅｌタグの前に挿入し、最後にそのｄｅｌタグを削除する。
（ｅ）ｏｖｅｒａｌｌ
要素を、全部改正することを表す。以前の内容を保存するために、ｐａｒｔｉａｌのように以前の内容との差を保存するのではなく、以前の内容全てをｏｒｉｇｉｎａｌ要素に保存する。ｏｒｉｇｉｎａｌ要素のｒｅｖｉｓｅ＿ｉｄ属性に改正ＩＤを保存する。以下は、要素Ｚの全文を要素ＺＺ（ここでは「あああああ」という文字列）に改正する場合を例示する。
2004126903.tif 000017
全部改正を適用（ａｐｐｌｙ）するとき、要素Ｘのｒｅｖｉｓｅ属性中の　¨改正Ａ　ｏｖｅｒａｌｌ¨　を除去し、更にｒｅｖｉｓｅ属性値が　¨¨　となった場合、ｒｅｖｉｓｅ属性を要素Ｘから除去し、またｏｒｉｇｉｎａｌ要素を除去して以下のようにする。
＜要素Ｘ＞
＜要素ＺＺ＞あああああ＜／要素ＺＺ＞
＜／要素Ｘ＞
一方、全部改正をキャンセルするときは、要素Ｘをｏｒｉｇｉｎａｌ要素中のものと置き換える。
（ｆ）ｒｅｖｉｖａｌ
削除（ｒｅｍｏｖｅｄ＝¨ｙｅｓ¨）されている要素、つまり文書中で無効になっている要素を再生する。基本的にｏｖｅｒａｌｌと同じ処理であるが、削除されている要素に対してのみ有効とする。これは、条例の改正で削除が一旦決定された後に、何らかの理由でもとの条文が復活させられる場合に該当する。
（ｇ）ｃｏｌｌａｐｓｅｄ
同種の要素Ｘ１と要素Ｘ２が連続している場合、要素Ｘ２による区分を削ることを表す。これは、編、章、節、目、条等に対して、それらを削除する場合に該当する。
2004126903.tif 000018
要素Ｘ２の区分を削る改正Ａが適用（ａｐｐｌｙ）されたとき、要素Ｘ２の子供を兄に相当する要素Ｘ１の子供の末尾に追加移動し、要素Ｘ２を文書中から除去して、以下のようにする。
＜要素Ｘ１＞
＜要素Ｚ１＞．．．＜／要素Ｚ１＞
＜要素Ｚ２＞．．．＜／要素Ｚ２＞
＜／要素Ｘ１＞
要素Ｘ２の区分を削る改正Ａがキャンセルされると、要素Ｘ２のｒｅｖｉｓｅ属性から　¨改正Ａ　ｃｏｌｌｐａｓｅｄ¨　を除去し、更にｒｅｖｉｓｅ属性値が　¨¨　となった場合、ｒｅｖｉｓｅ属性を要素Ｘ２から除去する。
（ｈ）ｄｉｖｉｄｅｄ
要素の区分を追加し、要素の子供を分割することを表す。これはｃｏｌｌａｐｓｅｄと逆の操作で、編、章、節、目、条等を追加する場合に該当する。
2004126903.tif 000019
区分を追加する改正が適用（ａｐｐｌｙ）されたときは、要素Ｘ２のｒｅｖｉｓｅ属性から　¨改正Ａ　ｄｉｖｉｄｅｄ¨　を除去する。


【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
一方、区分を追加する改正をキャンセルするときは、要素Ｘ２の子供を、兄に相当する要素Ｘ１の子供の末尾に追加移動し、要素Ｘ２を文書中から除去する。
（２）ｎｕｍ属性
これは条文の番号を表す属性であって、ｘ．ｙ．ｚ　形式で表し、ここでｘを深さ０、ｙを深さ１、ｚを深さ２の枝番号とする。即ち　¨２．２．２¨　は深さ２の番号、¨３．３¨　は深さ１の番号、¨１¨　は深さ０の番号となる。番号の入力及び変更は自動的に行い、矛盾（番号の重複、空き）が発生しないようにする。番号つき要素Ｚの追加は、追加位置を指定するダイアログを用いて、ある番号つき要素Ｘを指定し、その次に挿入する。枝番号を設定する際は、要素Ｘの番号の深さに対して＋１となる枝番号を設定することを可能とする。この例示のような場合（条規文書の番号付け）においては、深さ１以上の枝番号は２から始まるものとする（１は設定されない）。即ち、要素Ｘの枝番号が　¨５¨　であれば、要素Ｚの枝番号は　¨５．２¨　となり、要素Ｘの枝番号が　¨４．２¨　であれば、要素Ｚの枝番号は　¨４．２．２¨　となる。
（３）ｐｒｅｓｅｔ属性
番号の繰り上げ及び繰り下げに対応する処理用の属性であって、文書に対する編集を表す改正ＩＤ（バージョン）と、その改正ＩＤにおける要素の番号の組のリストで表す。


【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
また、現行改正Ａで追加された条項などの要素については、現行改正及び他の箇所で繰上げ、繰下げが発生したとき、ｐｒｅｓｅｔ属性の操作を行わず、ｎｕｍ属性値を直接操作する。
例えば、１条、２条の間に新たに２条を追加した場合、
2004126903.tif 000020
これは、現行改正で追加された要素については、「改正前の番号」が存在しないため、保存の必要がないのでｐｒｅｓｅｔ属性を用いる必要がないためである。