(57)【特許請求の範囲】
【請求項１】
処理装置と、記憶装置と、入出力装置を備え、複数の文書部品から構成される文書の格納・管理を行なう文書管理装置であって、
文書の登録を行なう前記処理装置が、該文書を構成する文書部品それぞれについて、
指定文書部品の内容データを読み込み記憶手段中に格納する手段と、
指定文書部品に対応する電子署名を読み込み記憶手段中に格納する手段と、
前記格納した前記文書部品の内容データと前記電子署名との対応関係を示す電子署名対応関係データを記憶手段中に格納する手段と、
これらの文書部品群を文書ごとにまとめて記憶手段中に管理する文書部品群管理手段を備え、
文書の参照を行なう前記処理装置が、
参照対象となる文書部品の内容データを記憶手段から読み出して出力する手段と、
前記電子署名対応関係データを用いて、参照対象となる文書部品に対応する電子署名を記憶手段から読み出して出力する手段を備え、
文書の更新を行なう前記処理装置が、
更新対象となる文書部品の内容データを記憶手段から読み出して出力する手段と、
前記電子署名対応関係データを用いて、更新対象となる文書部品に対応する電子署名を記憶手段から読み出して出力する手段と、
編集・更新された文書部品の内容データを読み込む手段と、
読み込んだ内容データによって記憶手段中に格納された前記文書部品の内容データを置換する手段と、
該編集・更新された文書部品の内容データに対応する電子署名を読み込む手段と、
記憶手段中に格納された前記電子署名を読み込んだ電子署名で置換する手段と、
前記更新された文書部品の内容データと前記更新された電子署名との対応関係を示す電子署名対応関係データによって記憶手段中に格納された前記電子署名対応関係データを置換する手段、
を備えた文書管理装置。
【請求項２】
処理装置と、記憶装置と、入出力装置を備える、複数の文書部品から構成される文書の格納・管理を行なう文書管理装置であって、
文書の登録を行なう前記処理装置が、該文書を構成する文書部品それぞれについて、
指定文書部品の内容データを読み込み記憶手段中に格納する手段と、
署名者の秘密鍵を用いて、前記読み込んだ内容データから電子署名を生成する手段と、
生成した電子署名を記憶手段中に格納する手段と、
前記格納した文書部品の内容データと前記電子署名との対応関係を示す電子署名対応関係データを記憶手段中に格納する手段と、
これらの文書部品群を文書ごとにまとめて記憶手段中に管理する文書部品群管理手段を備え、
文書の参照を行なう前記処理装置が、
参照対象となる文書部品の内容データを記憶手段から読み出して出力する手段と、
署名者の公開鍵と、前記電子署名対応関係データを用いて記憶手段から読み出した文書部品の内容データと、記憶手段から読み出した電子署名に対して、署名の認証を行なう手段を備え、
文書の更新を行なう前記処理装置が、
更新対象となる文書部品の内容データを記憶手段から読み出して出力する手段と、
署名者の公開鍵と、前記電子署名対応関係データを用いて記憶手段から読み出した文書部品の内容データと、記憶手段から読み出した電子署名に対して、署名の認証を行なう手段と、
編集・更新された文書部品の内容データを読み込む手段と、
読み込んだ内容データによって、記憶手段中に格納された前記文書部品の内容データを置換する手段と、
署名者の秘密鍵を用いて、前記読み込んだ内容データから電子署名を生成する電子署名生成手段と、
記憶手段中に格納された前記電子署名を、前記生成した電子署名で置換する手段と、
前記更新された文書部品の内容データと更新された電子署名との対応関係を示す電子署名対応関係データによって、記憶手段中に格納された前記電子署名対応関係データを置換する手段、
を備えた文書管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ装置を用いた電子化文書データの管理システムに係わり、特に、構造化文書にデジタル署名を付加して管理する方法および装置に関する。
【０００２】
【従来の技術】
情報化社会の本格的進展に伴い、ワードプロセッサ、パーソナルコンピュータ等を用いて作成された電子化文書データが爆発的な勢いで増加しつつある。
文書の電子化に伴い、紙の文書に署名を記入する従来の方法に代わって、電子署名と呼ばれる電子データを電子ファイルに対して付与する、デジタル署名と呼ばれる技術が使われ始めている。
【０００３】
デジタル署名とは、文書の作成者が本人であること、およびその文書の内容が改ざんされていない正当なものであることを証明する技術であり、主に非対称暗号系を利用する。
その一例として、図１を用いて、電子署名照合方式によるデジタル署名の例を説明する。
この方式では、まず署名者が、署名を付与したいファイル１０１に一方向ハッシュ関数を適用してファイルサイズの圧縮を行ない、圧縮済みファイル１０２を生成する。
さらに、その圧縮済みファイル１０２を公開鍵暗号の秘密鍵を用いて暗号化し、電子署名（署名）１０３を生成する。
署名者は、署名が付与された署名文として、元のファイル１０１と電子署名１０３をセットにして配布する。
【０００４】
認証者は、ファイル１０１のコピーである配布されたファイル１０４と、電子署名１０３のコピーである配布された電子署名１０５を受け取る。
次に認証者は、署名者がファイル１０１の圧縮に用いたのと同じ一方向ハッシュ関数をファイル１０４に適用してファイルサイズの圧縮を行ない、圧縮済みファイル１０６を生成する。
また、電子署名１０５に対して、認証者の公開鍵を用いて復号化を行ない、復号済みファイル１０７を生成する。
次に認証者は、ファイル１０６とファイル１０７の内容を比較する。
両者の内容が一致している場合、ファイル１０４は確かに署名者によって作成されたものであり、その内容が署名時から変更されていないことが証明される。
【０００５】
デジタル署名については、例えば「分散コンピューティング環境−実現と戦略−」(Raman Khanna 編、１９９６年、プレンティスホール出版)の 4.6.7.2 で詳しく述べられている。
また、デジタル署名に関する従来技術としては、特開平9-311854号公報に示される発明（以後、これを公知例１と呼ぶ）などがある。
この発明は、文書ファイルからデジタル署名を生成する機能、文書ファイルとデジタル署名を分離して送信・受信する機能、および署名の認証を行なう機能を備えている。
この発明によって、単一のファイルに関してはバイナリデータとしての同一性を証明するための署名の生成、送受信、認証を行なうことができる。
【０００６】
また、文書の電子化は、従来のような単なる清書手段の段階を脱し、組織の業務上重要な役割を果たす文書（ミッションクリティカル文書）を電子的に作成し、それらの文書を取り扱う業務全体を電子化することによって、業務効率の大幅な向上を実現する方向に進みつつある。
このようなミッションクリティカル文書は、SGML (Standard Generalized Markup Language)、XML (eXtensible Markup Language)等の文書記述言語を用いて、容易に機械処理可能な構造化文書データとして作成することで、文書内部からのデータの抽出、派生文書の作成や表示体裁を変えての再利用など、さまざまな処理が可能となる。
これらのミッションクリティカルな構造化文書を扱う文書管理システムは、構造化文書を格納・管理し、構造情報の参照、文書内容の編集・改訂、バージョン履歴の管理等を行う機能を備えている。
構造化文書を中心としたミッションクリティカル文書を扱う文書管理システムでは、セキュリティ機能の一環として、構造化文書にデジタル署名を付加して管理する機能を備えていることが望ましい。
【０００７】
ここで、SGML文書について、図２を用いて説明する。
SGMLでは、文書を構成する物理的な個々のデータ単位（通常のコンピュータシステムではファイルに格納されるようなもの）をエンティティと呼ぶ。
SGML文書は、一個以上のテキストエンティティと任意個のバイナリエンティティ（図データなど）から構成される複合文書である。
図２に示すSGML文書は、四つのテキストエンティティと、一つのバイナリエンティティから構成されている。
SGMLでは、構文解析の出発点となるテキストエンティティを特にSGML文書エンティティと呼び、そこから他のテキストエンティティやバイナリエンティティが参照される。
【０００８】
図２の場合、エンティティ２０１（ファイル"doc.sgm"）がSGML文書エンティティ、エンティティ２０２（ファイル"part1.sgm"）、エンティティ２０３（ファイル"note.sgm"）、およびエンティティ２０５（ファイル"doc.dtd"）がテキストエンティティ、エンティティ２０４（ファイル"fig1.bmp"）がバイナリエンティティである。
この例では、SGML文書エンティティ２０１から他のエンティティ２０２、２０３、２０４、２０５が参照されている。
また、テキストエンティティ２０３はエンティティ２０２からも参照されている。
すなわち、テキストエンティティ２０３はエンティティ２０１と２０２の両方から参照され、両者の間で共有されている。
また、個々のエンティティは、SGML文書を構成している部品という意味で文書部品とも呼ばれる。
またSGML文書は、文書全体で一つの階層的な論理構造を持っており、木構造のモデルで表現することができる。
図２のSGML文書の論理構造を、木構造で図式化したものを図３に示す。
SGMLでは、それぞれの論理的な構造の範囲を示す目印として、タグと呼ぶマークを用いる。
論理構造を構成する要素の名前（要素型名）を、文字列 "<" と ">" で囲ったものを開始タグ、文字列 "</" と ">" で囲ったものを終了タグと呼び、開始タグと終了タグに囲まれた部分が、その要素の内容となる。
また、図３のような木構造をSGML文書の解析木と呼ぶ。
図３において、楕円形のノードが要素、矩形のノードが内容データ（解析済み文字列データまたは非SGMLデータ）を表わしている。
また、図中で点線で囲った範囲は、それぞれノードの集合を表わしている。
ここで、ノード集合３０１は前記SGML文書エンティティ２０１に対応しており、ノード集合３０２はテキストエンティティ２０２、ノード集合３０３および３０４はテキストエンティティ２０３、ノード集合３０５はデータエンティティ２０４に対応している。
エンティティとノード集合との対応関係が示すとおり、エンティティ参照によって呼び出されたエンティティの内容をその呼び出し位置に展開し、結果として得られる展開済みテキストを構文解析することにより、SGML文書の論理構造が得られる。
【０００９】
構造化文書の管理機能を備えた文書管理装置では、単なるファイルの管理とは異なり、登録された文書の論理的な構造を解析し、上記で示した解析木のようなかたちで要素を分割して管理することによって、論理構造単位の木目細かなアクセスを提供できるようにしている。
このように、構造化文書は、テキストとバイナリデータの混在した複数のエンティティから構成することができる。
さらに、論理構造を表現することも可能である。
【００１０】
また、SGMLは、文書の論理構造を定義した文書型定義（DTD:Document Type Definition）と呼ばれるメタ情報を持つ。
図２における２０６および２０７に示す領域が、この文書の文書型定義である。
この文書型定義によって、文書全体の論理構造の整合性を維持しながら構造化文書を作成することができる。
また、文書型定義に適合している文書は、SGMLブラウザやSGMLエディタといった専用のSGML処理系を用いて参照・編集することができる。
例えば、図３において、ノード集合３０３および３０４の内容文字列を編集したい場合に、単にノード集合３０３に相当する情報をテキストエンティティ２０３としてデータベースからファイルに取出したとしても、このテキストエンティティのファイルは文書型宣言を含んでいないため、SGMLブラウザで閲覧することはできない。
【００１１】
この問題を回避する方法として、対象とするエンティティだけでなく、そのエンティティを部品として含むSGML文書全体をデータベースから取り出す方法が考えられる。
しかしながら、この方法では、対象のエンティティだけでなく、全てのエンティティをデータベースから取り出すことになるため、対象とする文書がマニュアルや書籍といった大規模な文書の場合、取り出し、および取り出し後の構文解析に要する時間が膨大になり、構文解析時に使用するメモリも大量に必要とする。
従って、性能面、メモリ容量面への影響が大きいため、実用的ではない。
上記問題のもう一つの回避策として、対象とする部分を部分文書として、SGML文書として閉じた形式で取り出す方法がある。
【００１２】
SGML文書の一部分を抽出して取り扱う発明としては、特開平10-143507号公報に示される発明（以後、これを公知例２と呼ぶ）などがある。
公知例２に示す発明は、以下の機構を備えることを特徴とする。
（１）SGML文書を要素単位で格納し、要素それぞれに、文書型定義中のメタ情報を対応付けて管理する機構
（２）SGML文書中の編集対象部分に対応する部分編集用文書型定義を一時的に生成することにより、該当部分のみ独立に構文解析を可能とする機構
（３）上位要素および前後の要素を編集可能にしたまま、部分編集用文書型定義に違反しない範囲において、編集中の最上位要素の削除、タグ(総称識別子）の変更およびその前後への新たな要素の追加を可能にする機構
上記の機構により、編集対象とする部分範囲に対応する文書型定義を生成し、その範囲の部分文書を編集可能な形式で出力することを可能としている。
ただし、デジタル署名を有効にするには、署名対象となる文書を登録時と全く同じ内容で取り出す必要があるが、前記公知例２で取得する部分文書は登録時の内容とは異なっているため、前記公知例１のデジタル署名の技術を適用することはできない。
【００１３】
構造化文書を構成する各エンティティを原データのまま保持し、かつ論理構造の参照を可能にする発明として、特願平10-360110号に示される発明（以後、これを公知例３と呼ぶ）がある。
公知例３の発明は、文書登録時に、解析済み論理構造データと物理構造データの両方をデータベース中に格納し、これらの対応関係を管理することによって、文書の解析済み論理構造データへのアクセス、および原データのままのエンティティの取り出し、編集を可能としている。
前記公知例３で取得するエンティティは、原データのままであるため、公知例１のデジタル署名が適用できる。
ただし、前記公知例３で取得するエンティティは、SGML文書として扱う場合に必須となるSGML文書エンティティを含んでいないため、SGML文書として利用できない。
【００１４】
【発明が解決しようとする課題】
前記公知例１の従来技術によって、文書の改ざん防止、真正性の証明のために、単一のファイルに署名を付加して管理する方法は示されているが、構造化文書に対する署名の管理方法が示されているわけではない。
本発明の目的は、構造化文書に対して電子署名を関連付けて管理することにある。
次に、前記公知例２に示された発明により、SGML文書の論理構造の一部分から部分文書を生成して取り出し、編集することはできるが、本公知例ではSGML文書のエンティティ構成および各エンティティのテキストとしての内容を維持することには配慮されておらず、特定のエンティティを登録時の内容のまま取り出すことはできない。
また、前記公知例３に示す発明は、構造化文書の論理構造とエンティティ構成の両方のデータを保持・管理しているが、エンティティの内容を独立して参照・編集可能なSGML文書として取り出す機能は備えていない。
従って、公知例２、公知例３のいずれによっても、またこれらの組み合わせによっても、登録されたSGML文書を構成するエンティティの一つを、その内容を変更せずに独立したSGML文書の形で外部に取り出し、また取り出したSGML文書の編集後に、変更されたエンティティの内容と、その内容に対する署名とを対応付けてデータベースを更新することはできない。
また、デジタル署名はファイルに対して電子署名を付与するものであり、ファイルの内容が一文字でも変更された場合には、改ざんされたとしてこれを検出する。
従って、複合文書の各エンティティに署名を付加して管理している場合、これらのエンティティを個別に取り出して参照・編集・更新するためには、指定されたエンティティを一文字も変更せずに外部に取り出して参照・編集し、また他のエンティティに影響を与えることなく、そのエンティティの編集後の内容（および更新された内容に付加された署名）を再登録できなければならない。
本発明の他の目的は、個別に指定されたエンティティを一文字も変更せずに外部に取り出して参照・編集し、また他のエンティティに影響を与えることなく、そのエンティティの編集後の内容（および更新された内容に付加された署名）を再登録可能することにある。
【００１５】
【課題を解決するための手段】
上記目的を達成するため、本発明は、
処理装置と、記憶装置と、入出力装置を備える文書管理システムにおける文書のデジタル署名付き管理方法であり、
前記処理装置における文書の登録を行なう処理が、該文書を構成する文書部品それぞれについて、
指定文書部品の内容データを読み込み記憶手段中に格納するステップと、指定文書部品に対応する電子署名を読み込み記憶手段中に格納するステップと、前記格納した前記文書部品の内容データと前記電子署名との対応関係を示す電子署名対応関係データを記憶手段中に格納するステップと、これらの文書部品群を文書ごとにまとめて記憶手段中に管理する文書部品群管理ステップを有し、
前記処理装置における文書の参照を行なう処理が、
参照対象となる文書部品の内容データを記憶手段から読み出して出力するステップと、前記電子署名対応関係データを用いて、参照対象となる文書部品に対応する電子署名を記憶手段から読み出して出力するステップを有し、
前記処理装置における文書の更新を行なう処理が、
前記文書の参照を行う処理と同様の処理により更新対象文書部品の内容データおよび該文書部品の電子署名の参照をするステップと、編集・更新された文書部品の内容データを読み込むステップと、読み込んだ内容データによって記憶手段中に格納された前記文書部品の内容データを置換するステップと、該編集・更新された文書部品の内容データに対応する電子署名を読み込むステップと、記憶手段中に格納された前記電子署名を読み込んだ電子署名で置換するステップと、前記更新された文書部品の内容データと前記更新された電子署名との対応関係を示す電子署名対応関係データによって記憶手段中に格納された前記電子署名対応関係データを置換するステップを有するようにしている。
【００１６】
また、処理装置と、記憶装置と、入出力装置を備える文書管理システムにおける文書のデジタル署名付き管理方法であり、
前記処理装置における文書の登録を行なう処理が、該文書を構成する文書部品それぞれについて、
指定文書部品の内容データを読み込み記憶手段中に格納するステップと、署名者の秘密鍵を用いて、前記読み込んだ内容データから電子署名を生成するステップと、生成した電子署名を記憶手段中に格納するステップと、前記格納した文書部品の内容データと前記電子署名との対応関係を示す電子署名対応関係データを記憶手段中に格納するステップと、これらの文書部品群を文書ごとにまとめて記憶手段中に管理する文書部品群管理ステップを有し、
前記処理装置における文書の参照を行なう処理が、
参照対象となる文書部品の内容データを記憶手段から読み出して出力するステップと、署名者の公開鍵と、前記電子署名対応関係データを用いて記憶手段から読み出した文書部品の内容データと、記憶手段から読み出した電子署名に対して、署名の認証を行なうステップを有し、
前記処理装置における文書の更新を行なう処理が、
前記文書の参照を行う処理と同様の処理により更新対象文書部品の内容データの読み出しと署名の認証を行うステップと、編集・更新された文書部品の内容データを読み込むステップと、読み込んだ内容データによって、記憶手段中に格納された前記文書部品の内容データを置換するステップと、署名者の秘密鍵を用いて、前記読み込んだ内容データから電子署名を生成する電子署名生成ステップと、記憶手段中に格納された前記電子署名を、前記生成した電子署名で置換するステップと、前記更新された文書部品の内容データと更新された電子署名との対応関係を示す電子署名対応関係データによって、記憶手段中に格納された前記電子署名対応関係データを置換するステップを有するようにしている。
【００１７】
また、処理装置と、記憶装置と、入出力装置を備える文書管理システムにおける文書のデジタル署名付き管理方法であり、
前記処理装置における文書の登録を行なう処理が、該文書を構成する文書部品それぞれについて、
指定文書部品の内容データを読み込み記憶手段中に格納するステップと、指定文書部品に対応する電子署名を読み込み記憶手段中に格納するステップと、前記格納した文書部品の内容データと前記電子署名との対応関係を示す電子署名対応関係データを記憶手段中に格納するステップと、これらの文書部品群を文書ごとにまとめて記憶手段中に管理する文書部品群管理ステップと、登録対象文書の構文解析を行ない、該構文解析の結果を参照して該文書の持つ論理構造を抽出し、解析済み論理構造データを記憶手段中に格納するステップと、前記解析済み論理構造データを参照して登録対象文書の持つ論理構造と物理構造との対応関係を抽出し、該文書を構成する各エンティティ（文書部品）と前記論理構造データ中の部分範囲との物理論理対応関係データを記憶手段中に格納するステップを有し、
前記処理装置における文書の参照を行なう処理が、
参照対象となる文書部品の内容データを記憶手段から読み出して出力するステップと、前記電子署名対応関係データを用いて、参照対象となる文書部品に対応する電子署名を記憶手段から読み出して出力するステップと、前記解析済み論理構造データを参照して、出力対象となるエンティティ（文書部品）を内容として持つ文書構造定義を生成するステップと、該生成された文書構造定義と、前記解析済み論理構造データを参照して、前記出力対象となるエンティティ（文書部品）を文書内容として参照する文書エンティティを生成、出力するステップと、前記解析済み論理構造データを参照して、出力対象となるエンティティ（文書部品）から直接または間接に参照されるエンティティ（文書部品）群の内容データを記憶手段から読み出して出力するステップを有し、
前記処理装置における文書の更新を行なう処理が、
更新対象文書部品について、前記文書の参照を行う処理と同様の処理を行うステップと、前記物理論理対応関係データを参照して前記更新されたエンティティ（文書部品）に対応する全ての論理構造部分範囲の集合を求める対応部分範囲集合決定ステップと、編集・更新された文書部品の内容データを読み込み、該内容データによって記憶手段中に格納された前記文書部品の内容データを置換するステップと、該編集・更新された文書部品の内容データに対応する電子署名を読み込み、該電子署名によって記憶手段中に格納された前記電子署名を置換するステップと、前記更新された文書部品の内容データと更新された電子署名との対応関係を示す電子署名対応関係データによって、記憶手段中に格納された前記電子署名対応関係データを置換するステップと、前記更新されたエンティティ（文書部品）内容データの構文解析を行うステップと、該構文解析の結果を参照して前記更新されたエンティティ（文書部品）中に含まれる論理構造データを抽出し、該抽出した論理構造データによって記憶手段中に格納された前記対応部分範囲決定ステップにおいて求めたすべての論理構造部分範囲に対応する論理構造データを置換するステップと、前記構文解析の結果を参照して、更新対象エンティティ（文書部品）の論理構造と物理構造との対応関係を抽出し、更新対象エンティティ（文書部品）と前記論理構造データ中の部分範囲との対応関係データを記憶手段中に格納するステップを有するようにしている。
【００１８】
また、処理装置と、記憶装置と、入出力装置を備える文書管理システムにおける文書のデジタル署名付き管理方法であり、
前記処理装置における文書の登録を行なう処理が、該文書を構成する文書部品それぞれについて、
指定文書部品の内容データを読み込み記憶手段中に格納するステップと、指定文書部品に対応する電子署名を読み込み記憶手段中に格納するステップと、前記格納した前記文書部品の内容データと前記電子署名との対応関係を示す電子署名対応関係データを記憶手段中に格納するステップと、これらの文書部品群を文書ごとにまとめて記憶手段中に管理する文書部品群管理ステップと、登録対象文書の構文解析を行ない、該構文解析の結果を参照して該文書の持つ論理構造を抽出し、該文書中に含まれる内容文字列、構造情報に加えて、前記文書記述言語による文書記述言語による文書記述を再現するのに必要となる全ての構文情報を含んだ解析済み論理構造データを記憶手段中に格納するステップと、該構文解析の結果を参照して登録対象文書の持つ論理構造と物理構造との対応関係を抽出し、該文書を構成する各エンティティ（文書部品）と前記論理構造データ中の部分範囲との物理論理対応関係データを記憶手段中に格納するステップを有し、
前記処理装置における文書の参照を行なう処理が、
参照対象となる文書部品について、記憶手段から前記解析済み論理構造データを読み出し、該解析済み論理構造データを参照して、原文通りのエンティティ（文書部品）の内容データを生成し出力するステップと、前記電子署名対応関係データを用いて、参照対象となる文書部品に対応する電子署名を記憶手段から読み出して出力するステップを有し、
前記処理装置における文書の更新を行なう処理が、
更新対象となる文書部品について、記憶手段から前記解析済み論理構造データを読み出し、該解析済み論理構造データを参照して、原文通りのエンティティ（文書部品）の内容データを生成し出力するステップと、前記電子署名対応関係データを用いて、参照対象となる文書部品に対応する電子署名を記憶手段から読み出して出力するステップと、前記物理論理対応関係データを参照して前記更新されたエンティティ（文書部品）に対応する全ての論理構造部分範囲の集合を求める対応部分範囲集合決定ステップと、前記更新されたエンティティ（文書部品）の内容データの構文解析を行うステップと、該構文解析の結果を参照して前記更新されたエンティティ（文書部品）中に含まれる論理構造データを抽出し、抽出した該エンティティ（文書部品）に含まれる内容文字列、構造情報、および構文情報を含んだ解析済み論理構造データによって、前記対応部分範囲決定ステップにおいて求めたすべての論理構造部分範囲に対応する論理構造データを置換するステップと、前記構文解析の結果を参照して、更新対象エンティティ（文書部品）論理構造と物理構造との対応関係を抽出し、更新対象エンティティ（文書部品）と前記論理構造データ中の部分範囲との対応関係データによって、記憶手段に格納された前記物理論理対応関係データを置換するステップと、該編集・更新された文書部品の内容データに対応する電子署名を読み込み、該電子署名により記憶手段中に格納された前記電子署名を置換するステップと、前記更新された文書部品の内容データと更新された電子署名との対応関係を示す電子署名対応関係データによって、記憶手段中に格納された前記電子署名対応関係データを置換するステップを有するようにしている。
【００１９】
また、更に、処理装置における文書の参照を行なう処理が、
前記解析済み論理構造データを参照して、出力対象となるエンティティ（文書部品）を内容として持つ構造化文書の構造を規定する文書構造定義を生成するステップと、該文書構造定義と、前記解析済み論理構造データを参照して、前記出力対象となるエンティティ（文書部品）を文書内容として参照する文書エンティティを生成し、出力するステップと、参照対象となるエンティティ（文書部品）から直接または間接に参照されるエンティティ（文書部品）群について、前記解析済み論理構造データを参照して、原文書通りのエンティティ（文書部品）の内容データを生成し、出力するステップを有し、
処理装置における文書の更新を行なう処理が、
前記解析済み論理構造データを参照して、更新対象となるエンティティ（文書部品）を内容として持つ構造化文書の構造を規定する文書構造定義を生成するステップと、該文書構造定義と、前記解析済み論理構造データを参照して、前記更新対象となるエンティティ（文書部品）を文書内容として参照する文書エンティティを生成し、出力するステップと、参照対象となるエンティティ（文書部品）から直接または間接に参照されるエンティティ（文書部品）群について、前記解析済み論理構造データを参照して、原文書通りのエンティティ（文書部品）の内容データを生成し、出力するステップを有するようにしている。
【００２０】
また、処理装置と、記憶装置と、入出力装置を備え、複数の文書部品から構成される文書の格納・管理を行なう文書管理装置であり、
文書の登録を行なう前記処理装置が、該文書を構成する文書部品それぞれについて、
指定文書部品の内容データを読み込み記憶手段中に格納する手段と、指定文書部品に対応する電子署名を読み込み記憶手段中に格納する手段と、前記格納した前記文書部品の内容データと前記電子署名との対応関係を示す電子署名対応関係データを記憶手段中に格納する手段と、これらの文書部品群を文書ごとにまとめて記憶手段中に管理する文書部品群管理手段を備え、
文書の参照を行なう前記処理装置が、
参照対象となる文書部品の内容データを記憶手段から読み出して出力する手段と、前記電子署名対応関係データを用いて、参照対象となる文書部品に対応する電子署名を記憶手段から読み出して出力する手段を備え、
文書更新を行なう前記処理装置が、
前記文書の参照を行う処理と同様の処理により更新対象文書部品の内容データおよび該文書部品の電子署名の参照をする手段と、編集・更新された文書部品の内容データを読み込む手段と、読み込んだ内容データによって記憶手段中に格納された前記文書部品の内容データを置換する手段と、該編集・更新された文書部品の内容データに対応する電子署名を読み込む手段と、記憶手段中に格納された前記電子署名を読み込んだ電子署名で置換する手段と、前記更新された文書部品の内容データと前記更新された電子署名との対応関係を示す電子署名対応関係データによって記憶手段中に格納された前記電子署名対応関係データを置換する手段を備えるようにしている。
【００２１】
また、処理装置と、記憶装置と、入出力装置を備える、複数の文書部品から構成される文書の格納・管理を行なう文書管理装置であり、
文書の登録を行なう前記処理装置が、該文書を構成する文書部品それぞれについて、
指定文書部品の内容データを読み込み記憶手段中に格納する手段と、署名者の秘密鍵を用いて、前記読み込んだ内容データから電子署名を生成する手段と、生成した電子署名を記憶手段中に格納する手段と、前記格納した文書部品の内容データと前記電子署名との対応関係を示す電子署名対応関係データを記憶手段中に格納する手段と、これらの文書部品群を文書ごとにまとめて記憶手段中に管理する文書部品群管理手段を備え、
文書の参照を行なう前記処理装置が、
参照対象となる文書部品の内容データを記憶手段から読み出して出力する手段と、署名者の公開鍵と、前記電子署名対応関係データを用いて記憶手段から読み出した文書部品の内容データと、記憶手段から読み出した電子署名に対して、署名の認証を行なう手段を備え、
文書の更新を行なう前記処理装置が、
前記文書の参照を行う処理と同様の処理により更新対象文書部品の内容データの読み出しと署名の認証を行う手段と、編集・更新された文書部品の内容データを読み込む手段と、読み込んだ内容データによって、記憶手段中に格納された前記文書部品の内容データを置換する手段と、署名者の秘密鍵を用いて、前記読み込んだ内容データから電子署名を生成する電子署名生成手段と、記憶手段中に格納された前記電子署名を、前記生成した電子署名で置換する手段と、前記更新された文書部品の内容データと更新された電子署名との対応関係を示す電子署名対応関係データによって、記憶手段中に格納された前記電子署名対応関係データを置換する手段を備えるようにしている。
【００２２】
また、文書管理プログラムを記録したコンピュータ読み取り可能な記録媒体であり、
該文書管理プログラムは、
文書の登録処理として該文書を構成する文書部品それぞれについて、
指定文書部品の内容データを読み込み記憶手段中に格納する手順と、指定文書部品に対応する電子署名を読み込み記憶手段中に格納する手順と、前記格納した前記文書部品の内容データと前記電子署名との対応関係を示す電子署名対応関係データを記憶手段中に格納する手順と、これらの文書部品群を文書ごとにまとめて記憶手段中に管理する文書部品群管理手順を有し、
文書の参照処理として、
参照対象となる文書部品の内容データを記憶手段から読み出して出力する手順と、前記電子署名対応関係データを用いて、参照対象となる文書部品に対応する電子署名を記憶手段から読み出して出力する手順を有し、
文書の更新処理として、
前記文書の参照を行う処理と同様の処理により更新対象文書部品の内容データおよび該文書部品の電子署名の参照をする手順と、編集・更新された文書部品の内容データを読み込む手順と、読み込んだ内容データによって記憶手段中に格納された前記文書部品の内容データを置換する手順と、該編集・更新された文書部品の内容データに対応する電子署名を読み込む手順と、記憶手段中に格納された前記電子署名を読み込んだ電子署名で置換する手順と、前記更新された文書部品の内容データと前記更新された電子署名との対応関係を示す電子署名対応関係データによって記憶手段中に格納された前記電子署名対応関係データを置換する手順を有するようにしている。
【００２３】
また、文書管理プログラムを記録したコンピュータ読み取り可能な記録媒体であり、
該文書管理プログラムは、
文書の登録処理として該文書を構成する文書部品それぞれについて、
指定文書部品の内容データを読み込み記憶手段中に格納する手順と、署名者の秘密鍵を用いて、前記読み込んだ内容データから電子署名を生成する手順と、生成した電子署名を記憶手段中に格納する手順と、前記格納した文書部品の内容データと前記電子署名との対応関係を示す電子署名対応関係データを記憶手段中に格納する手順と、これらの文書部品群を文書ごとにまとめて記憶手段中に管理する文書部品群管理手順を有し、
文書の参照処理として、
参照対象となる文書部品の内容データを記憶手段から読み出して出力する手順と、署名者の公開鍵と、前記電子署名対応関係データを用いて記憶手段から読み出した文書部品の内容データと、記憶手段から読み出した電子署名に対して、署名の認証を行なう手順を有し、
文書の更新処理として、
前記文書の参照を行う処理と同様の処理により更新対象文書部品の内容データの読み出しと署名の認証を行う手順と、編集・更新された文書部品の内容データを読み込む手順と、読み込んだ内容データによって、記憶手段中に格納された前記文書部品の内容データを置換する手順と、署名者の秘密鍵を用いて、前記読み込んだ内容データから電子署名を生成する電子署名生成手順と、記憶手段中に格納された前記電子署名を、前記生成した電子署名で置換する手順と、前記更新された文書部品の内容データと更新された電子署名との対応関係を示す電子署名対応関係データによって、記憶手段中に格納された前記電子署名対応関係データを置換する手順を有するようにしている。
【００２４】
【発明の実施の形態】
以下、本発明を適用した第１の実施例について、図面を用いて説明する。
はじめに、本実施例のシステム構成について説明する。
図４は、第１の実施例における文書管理システムの全体構成を示す図である。
図４に示すとおり、文書管理システムは、文書管理サーバ４０１、文書管理クライアント４０２、業務処理システム４０３、およびネットワーク４０４から構成される。
【００２５】
文書管理サーバ４０１は、管理対象文書および対応する電子署名の登録・格納、登録済み文書の構造および内容データに対する参照および更新、特定の属性または内容文字列を持つ文書の検索、登録済み文書の削除など、文書管理に関する主要な処理を実行する。
文書管理クライアント４０２は、文書管理サーバ４０１が管理する文書群を操作するためのGUI (Graphical User Interface)を提供し、ユーザからの指示に従って、文書の登録、参照、更新、署名の認証等の処理を行うための指令およびデータをネットワーク４０４を介して文書管理サーバ４０１に転送し、前記指令を実行させる。
業務処理システム４０３は、前記文書管理クライアント４０２と同様にユーザからの指示に従って指令およびデータを文書管理サーバに転送して該指令を実行させるが、一般的な文書管理用GUIではなく、特定の業務を実行するための専用GUIをユーザに提供する。
ネットワーク４０４は、局所ネットワーク（LAN: Local Area Network）または広域ネットワーク(WAN: Wide Area Network)であって、複数のコンピュータ装置を接続し、相互に指令およびデータを転送する手段を提供する。
【００２６】
なお、図４には文書管理クライアント４０２および業務処理システム４０３の２台のコンピュータを文書管理サーバ４０１に対するクライアントとして使用する構成例を示したが、クライアントは１台のみの構成とすることも、３台以上とする構成をとってもよい。
また、クライアントは文書管理クライアントだけであってもよく、業務処理システムだけであってもよい。
また、図４では文書管理クライアント４０２および業務処理システム４０３から文書管理サーバ４０１に指令およびデータを転送する手段としてネットワーク４０４を使用するものとしたが、代わりにフロッピーディスク、光磁気ディスク、追記型光ディスク等の可搬型媒体を使用する構成をとってもよく、可搬型媒体とネットワークを併用する構成をとってもよい。
あるいは、クライアントを文書管理サーバ４０１と同一のコンピュータ上で実行し、データ転送を行わない構成をとってもよい。
【００２７】
以下、本発明による構造化文書の管理方法の適用対象であり、本実施例の主要な構成要素である文書管理サーバ、すなわち図４の４０１について説明する。
図５は、本実施例における文書管理サーバ４０１の構成を示す図である。
図５に示す文書管理サーバ４０１は、ディスプレイ５０１、キーボード５０２、中央処理装置（ＣＰＵ）５０３、フロッピーディスクドライブ５０４、フロッピーディスク５０５、通信制御装置５０６、主メモリ５０７、磁気ディスク装置５０８、システムバス５０９から構成される。
【００２８】
ディスプレイ５０１は、本サーバにおける処理の実行状況等を表示する。
キーボード５０２は、文書管理サーバの起動・終了等を指示するコマンドの入力を受け付ける。
中央処理装置５０３は、主メモリ５０７に格納された本サーバを構成する各種プログラムを読み出し、実行する。
フロッピーディスクドライブ５０４は、フロッピーディスク５０５に対するデータの読み書きのために使用する。
フロッピーディスク５０５は、登録対象文書など、他のシステムとの間でデータ交換を行うために使用する。
通信制御装置５０６は、ネットワーク４０４を介して前記文書管理クライアント４０２および業務処理システム４０３と通信し、指令およびデータの交換を行うために使用する。
主メモリ５０７は、本サーバにおける処理を実行するための各種プログラムおよび一時的なデータを保持する。
磁気ディスク装置５０８は、登録された文書データおよび本サーバが文書管理用に使用する各種データを記憶する手段として使用する。
システムバス５０９は、これらの各種装置を相互に接続する。
【００２９】
主メモリ５０７中には、文書登録制御プログラム５１０、文書参照制御プログラム５１１、文書更新制御プログラム５１２、文書空間管理プログラム５１３、データベース管理システム５１４およびオペレーティングシステム５１５が保持される。
磁気ディスク装置５０８中には、文書空間データベース格納領域５１６、プログラム格納領域５１７およびデータファイル格納領域５１８が確保される。
主メモリ５０７に保持されるプログラム（５１０〜５１３）は、オペレーティングシステム５１５により、プログラム格納領域５１７から転送される。
【００３０】
文書登録制御プログラム５１０は、文書記述言語SGMLを用いて記述された登録対象文書と電子署名を、フロッピーディスク５０５、データファイル格納領域５１８、またはネットワーク４０４から読み込み、その構文解析を行い、登録対象文書の持つエンティティデータ、論理構造データおよび両者の対応関係、登録対象文書の持つエンティティデータに対応する電子署名および両者の対応関係を、文書空間データベース格納領域５１６に格納する。
文書参照制御プログラム５１１は、文書空間データベース格納領域５１６に格納された登録済み文書のエンティティデータ、電子署名またはその両方を読み出し、それらのデータを構成する情報の一部または全部を抽出して、フロッピーディスク５０５またはデータファイル格納領域５１８に出力するか、あるいはネットワーク４０４を介して要求元クライアント（文書管理クライアント４０２または業務処理プログラム４０３）に転送する。
文書更新制御プログラム５１２は、文書空間データベース格納領域５１６に格納された登録済み文書のエンティティデータ、電子署名またはその両方に対して、そのデータ内容を更新する処理を行う。
【００３１】
文書空間管理プログラム５１３は、ネットワーク４０４を介してクライアント（文書管理クライアント４０２または業務処理プログラム４０３）からの指令を受信し、該指令の種別に対応して文書登録プログラム５１０、文書参照制御プログラム５１１、または文書更新制御プログラム５１２を起動し、該指令の内容に従った処理を実行させる。
また、登録済み文書群を分類整理するためのフォルダオブジェクトを生成して文書空間データベース格納領域５１６に格納する処理や、登録済み文書の一部を文書空間データベース格納領域５１６から削除する処理など、一部の処理については文書空間管理プログラム５１３自身が実行する。
【００３２】
データベース管理システム５１４は、文書空間データベース格納領域５１６に対するデータの格納、更新、削除、検索に関するすべての処理を制御する。
文書空間データベース格納領域５１６にアクセスするすべてのプログラムは、そのすべての処理をデータベース管理システム５１４を介して行う。
オペレーティングシステム５１５は、システムの起動・初期化、各種周辺装置との間のデータ転送など、コンピュータ上で本サーバを構成する各プログラムを実行するための基本機能を提供する。
【００３３】
文書空間データベース格納領域５１６は、本サーバに登録されたすべての文書に関するデータ、および本サーバが文書管理を行うために必要とするすべての関連データを格納するデータベースである。
プログラム格納領域５１７は、本サーバを構成するすべてのプログラムを格納する。
データファイル格納領域５１８は、オペレーティングシステム５１５または本サーバ上で実行される各種ユーティリティプログラムが使用するデータファイルを格納する。
なお、本実施例ではデータ交換のための可搬型媒体としてフロッピーディスク５０５を使用する構成としたが、光磁気ディスク、追記型光ディスク等、他種の可搬型媒体を利用する構成としてもよい。
また、本実施例では文書データおよび文書管理用データをデータベース中に格納する構成としたが、データベース管理システムを使用せず、これらのデータをファイルとしてデータファイル格納領域５１８に格納する構成としてもよい。
【００３４】
次に、本実施例における文書管理システムの基本処理手順について説明する。図６は、文書管理システム全体の動作を制御する文書空間管理プログラム５１３の概略処理手順を示すPAD（Problem Analysis Diagram）図である。
キーボード５０２からのサーバ起動コマンド等により、まず文書空間管理プログラム５１３が起動される。
本プログラムはサーバとしてクライアント（文書管理クライアント４０２または業務処理システム４０３）から指令を受信してはその処理を行うループに入る（ステップ６０１）。
このループは、キーボード５０２からサーバの停止を指示するコマンドが入力されるまで継続する。
ステップ６０１のループは、クライアントからの指令を受信する処理（ステップ６０２）と、受信した指令の種別を判定し、該種別に対応する処理に分岐する処理（ステップ６０３）を繰り返す。
【００３５】
ステップ６０３では、受信した指令の種別を判定し、該指令の種別に応じてステップ６０４からステップ６０６までのいずれかの処理を選択して実行する。
ここで、前記指令が、新たな文書の登録を求める指令であった場合、文書登録制御プログラム５１０を実行して指定された文書を文書空間データベース格納領域５１６に格納する(ステップ６０４)。
また、前記指令が、特定の登録済み文書の持つ内容データへの参照を求める指令であった場合、文書参照制御プログラム５１１を実行して要求されたデータを文書空間データベース格納領域５１６から読み出し、該データをフロッピーディスク５０５またはデータファイル格納領域５１８に出力するか、あるいはネットワーク４０４を介して要求元クライアントに返信する(ステップ６０５)。
また、前記指令が、特定の登録済み文書の持つ内容データの更新を求める指令であった場合、文書更新制御プログラム５１２を実行して、文書空間データベース格納領域５１６に格納された登録済み文書の内容データを更新する(ステップ６０６)。
【００３６】
次に、本実施例における文書登録制御プログラム５１０の動作手順を説明する。  図７は、文書登録制御プログラム５１０の概略処理手順を示すPAD図である。
本プログラムは、文書の登録を求めるクライアントからの指令に対応して、文書空間管理プログラム５１３から呼び出される。
本プログラムは、呼び出されると、まず登録対象文書を構成するエンティティの一覧を呼び出しパラメタとして入手する(ステップ７０１)。
ここで、該一覧には、登録対象文書を構成する各エンティティの内容データを保持しているリソースのリソース名と、各エンティティに対応する電子署名のリソース名、および登録対象文書が複数のエンティティから構成される場合に、そのいずれがSGML文書エンティティであるかを識別する情報を含んでいる。
エンティティの内容データおよび電子署名の入手元となるリソースは、フロッピーディスク５０５またはデータファイル格納領域５１８上に格納されたデータファイル、またはネットワーク４０４を介してアクセスできるネットワークリソース、または文書空間データベース格納領域５１６中に格納されている登録済みエンティティおよび登録済み電子署名が使用できる。
リソース名としては、リソースがデータファイルである場合にはそのパス名、ネットワーク上のリソースである場合にはその位置情報（ＵＲＬ等）、登録済みエンティティまたは登録済み電子署名である場合には該エンティティを他の登録済みエンティティから区別して一意に識別するエンティティ識別子または電子署名識別子を指定する。
【００３７】
図８に、該一覧の例として、文書部品リストファイル８０１を示す。
文書部品リストファイル８０１には、DOCUMENTエントリと、SYSTEMエントリの二種類のエントリがある。
DOCUMENTエントリとは、SGML文書エンティティに対応するエントリであり、"DOCUMENT"というキーワードで始まり、ダブルクォーテーションで括られた二つのパラメタを持つ。
一番目のパラメタは、その内容が登録文書中のSGML文書エンティティのリソース名（位置情報）を示し、二番目のパラメタは、SGML文書エンティティに対応する電子署名のリソース名（位置情報）を示している。
図２のSGML文書エンティティ２０１に対応するものが、DOCUMENTエントリ８０２である。
また、SGML文書エンティティ以外のエンティティに対応するエントリがSYSTEMエントリであり、"SYSTEM"というキーワードで始まり、ダブルクォーテーションで括られた三つのパラメタを持つ。
一番目のパラメタは、そのエンティティのシステム識別子を示し、二番目のパラメタは、該エンティティのリソース名（位置情報）を示し、三番目のパラメタは、該エンティティに対応する電子署名のリソース名（位置情報）を示している。
図２のエンティティ２０２、２０３、２０４、２０５に対応するSYSTEMエントリが、それぞれSYSTEMエントリ８０３、８０４、８０５、８０６である。
【００３８】
次に、登録対象文書に対して、該文書を一意に識別する文書識別子を割り当てる(ステップ７０２)。
次に、登録対象文書のSGML文書エンティティから出発してその構文解析を行う(ステップ７０３)。
なお、この構文解析の過程で、登録対象文書を構成するエンティティのうち、登録済みエンティティを除くすべてのエンティティに対して、該エンティティを一意に識別するエンティティ識別子を割り当てる。
また、この構文解析において、図３に示す論理構造情報に加えて、各エンティティの範囲を示す情報を含んだデータを生成する。
【００３９】
次に、前記ステップ７０１で入手したエンティティの一覧の情報と、前記ステップ７０３の構文解析処理にて生成したデータを参照して、登録対象文書を構成する全てのエンティティについて、ステップ７０５からステップ７１１までの処理を繰り返し実行する(ステップ７０４)。
ここで、ステップ７０５では、処理対象となるエンティティの内容データが、既に登録されているかどうかを判定する。
登録されていない場合、ステップ７０６およびステップ７０７を実行する。
ここで、ステップ７０６では、処理対象となるエンティティの内容データを対応するリソースから読み出す。
ステップ７０７では、処理対象となるエンティティのエンティティ識別子とその内容データへの参照の組となるエンティティ識別子対応表９０１、および内容データそのものを、文書空間データベース格納領域５１６に格納してエンティティの登録を行なう。
図２のSGML文書の各文書部品を格納した例を図９に示す。
【００４０】
また、ステップ７０８では、処理対象となるエンティティに対応する電子署名が、既に登録されているかどうかを判定する。
登録されていない場合、ステップ７０９およびステップ７１０を実行する。
ここで、ステップ７０９では、処理対象となるエンティティに対応する電子署名を、対応するリソースから読み出す。
ステップ７１０では、処理対象となるエンティティに対応する電子署名を一意に識別する電子署名識別子を割り当て、図１０に示すように、該電子署名識別子と電子署名への参照の組となる電子署名識別子対応表１００１、および電子署名そのものを、文書空間データベース格納領域５１６に格納して電子署名の登録を行なう。
図１０は、図２のSGML文書の各文書部品に対応する電子署名を格納した例である。
【００４１】
ステップ７１１では、図１１に示す、登録対象エンティティの一覧を表わすエンティティ構成表１１０５の各レコードを生成し、これを文書空間データベース格納領域５１６に格納する。
ここで、図１１は、登録文書と、該文書を構成するエンティティの一覧、および解析済み論理構造データとの対応関係を示す図である。
エンティティ構成表に関する説明は後述する。
次に、ステップ７１２では、前記ステップ７０３の構文解析処理の結果を参照して、図１１に示す登録対象文書の解析済み論理構造データ１１１１を生成する。
なお、本実施例では、ステップ７０３で行なった構文解析処理の結果をステップ７１２で参照して解析済み論理構造データを生成しているが、ステップ７０３中において、構文解析処理と並行して解析済み論理構造データを生成する処理手順としてもよい。
次に、ステップ７１３において、図１１に示す、登録対象文書に割り当てた文書識別子１１０２と、前記エンティティ構成表への参照１１０３、前記解析済み論理構造データへの参照１１０４の組からなる登録文書一覧表１１０１を文書空間データベース格納領域５１６に格納して文書の登録を行い、処理を終了する。
【００４２】
次に、図１１におけるエンティティ構成表１１０５について説明する。
エンティティ構成表１１０５は、登録対象文書を構成するすべてのエンティティについて、そのエンティティ種別１１０６、エンティティ名１１０７、エンティティ識別子１１０８、リソース名１１０９および電子署名識別子１１１０を表形式でまとめたデータである。
ここで、項目「エンティティ種別」は、そのエンティティが文書エンティティ(DOC)、テキストエンティティ(TEXT)、非SGMLデータエンティティ(NDATA)、および文書型定義(DTD)のいずれであるかを記号によって示す。
項目「エンティティ名」は、登録対象文書中でそのエンティティを参照するために用いられているエンティティ名を、文字列として示す。
ただし、そのエンティティがSGML文書エンティティであった場合、またはDOCTYPE宣言から参照される外部DTDであった場合、本項目は空欄となる。
項目「エンティティ識別子」は、そのエンティティに割り当てられたエンティティ識別子を示す。
項目「リソース名」は、そのエンティティの内容データを保持するリソースのリソース名を、文字列として示す。
ただし、そのエンティティが登録済みエンティティであった場合、本項目は空欄となる。
項目「電子署名識別子」は、そのエンティティに対応する電子署名に割り当てられた電子署名識別子を示す。
【００４３】
図１２は、図１１における１１０５、すなわちエンティティ構成表の具体例を示した図である。
図１２は、図２に示すSGML文書を構文解析した結果として生成されるエンティティ構成表の状態を示している。
図１２における行１２０１、１２０２、１２０３、１２０４、１２０５が、それぞれ図２に示すエンティティ２０１、２０２、２０３、２０４、２０５に対応する。
【００４４】
図１３は、文書登録制御プログラム５１０の前記ステップ７１２において、構文解析処理の結果を参照して生成する解析済み論理構造データのデータ構造を示す図である。
この図では、図２に示すSGML文書を登録対象文書として処理した場合に生成される解析済み論理構造データを例として示している。
図１３に示すとおり、解析済み論理構造データ１３０１は木構造として表現される。
図１３において、楕円形のノードは要素を表しており、ノード中の文字列はその要素の要素型を示している。
矩形のノードは内容データを表しており、ノード中の文字列は内容データの種別（解析済み文字列データPCDATA、または非SGMLデータNDATA）を示している。
また、菱形のノードはエンティティ遷移を表しており、ノード中の文字列はエンティティ識別子を示している。
ここで、あるエンティティ遷移ノードを根とする部分木から、下位のエンティティ遷移ノードを根とするすべての部分木を除いた部分が、そのエンティティ遷移ノードに対応するエンティティに内容として含まれる部分になる。
すなわち、本実施例の文書登録制御プログラム５１０が生成する解析済み論理構造データは、論理構造と物理構造（エンティティ構成）との対応関係を、エンティティ遷移ノードという形でその内部に含んでいる。
図１３の例では、E0002のエンティティ遷移ノードを根とする部分木から、下位のE0003のエンティティ遷移ノードを根とするすべての部分木を除いた部分が、そのエンティティ遷移ノードに対応するエンティティに内容として含まれる部分になる。すなわち、鎖線で囲った部分範囲１３０２が、エンティティE0002（図１２に示すテキストエンティティ１２０２）の内容に対応することになる。
【００４５】
次に、本実施例における文書参照制御プログラム５１１の動作手順を説明する。
図１４は、文書参照制御プログラム５１１の概略処理手順を示すPAD図である。
本プログラムは、文書の参照を求めるクライアントからの指令に対応して、文書空間管理プログラム５１３から呼び出される。
【００４６】
本プログラムは、まず、参照対象となるエンティティの情報を入手する（ステップ１４０１）。
ここで、該情報には、参照対象エンティティを特定するための文書識別子とエンティティ識別子、参照対象エンティティの出力先となるリソースのリソース名と、対応する電子署名の出力先となるリソースのリソース名を含んでいる。
また、エンティティの内容データおよび電子署名の出力先となるリソースとしては、フロッピーディスク５０５またはデータファイル格納領域５１８上に格納されたデータファイルまたはネットワーク４０４を介してアクセスできるネットワークリソースが使用できる。
リソース名としては、リソースがデータファイルである場合にはそのパス名、ネットワーク上のリソースである場合にはその位置情報（ＵＲＬ等）を指定する。
ステップ１４０２では、参照対象として指定されたエンティティの内容データを、登録文書一覧表１１０１、エンティティ構成表１１０５、およびエンティティ識別子対応表９０１を参照して、文書空間データベース格納領域５１６から読み出し、読み出したデータをステップ１４０１で入手した参照対象エンティティの出力先リソースに出力する。
上記の、参照対象として指定されたエンティティの内容データは、例えば、図２に示すSGML文書エンティティ２０１や、テキストエンティティ２０２である。
ステップ１４０３では、エンティティ構成表１１０５、および電子署名識別子対応表１００１を参照して、参照対象として指定されたエンティティに対応する電子署名を取得して、文書空間データベース格納領域５１６から読み出し、読み出した電子署名をステップ１４０１で入手した電子署名の出力先リソースに出力する。
【００４７】
ステップ１４０４では、エンティティ構成表１１０５のエンティティ種別１１０６を参照して、参照対象エンティティのエンティティ種別を判定し、この種別に応じてステップ１４０５、ステップ１４０７のいずれかの処理を実行するか、あるいは何も実行しないかを選択する。
ここで、SGML文書エンティティが指定されている場合、ステップ１４０５を実行する。
テキストエンティティが指定されている場合、ステップ１４０８およびステップ１４０９を実行する。
非SGMLデータエンティティが指定されている場合は、何も実行しない。
【００４８】
ステップ１４０５では、エンティティ構成表１１０５を参照して、該構成表に登録された全ての文書部品に対して、ステップ１４０６を実行する。
ステップ１４０６では、対象とするエンティティの内容データを文書空間データベース格納領域５１６から読み出し、読み出したデータを、ステップ１４０１で入手した参照対象エンティティの出力先リソースと同一ディレクトリに出力する。
ただし、ファイル名は、エンティティ構成表１１０５のリソース名１１０９の値とする。
【００４９】
上記のステップ１４０６で出力されるエンティティの内容データとは、例えば、SGML文書エンティティとして図２のSGML文書エンティティ２０１が指定されている場合、SGML文書エンティティ２０１から矢印で指し示されている各テキストエンティティ２０２、２０３、２０４、２０５の内容データである。
【００５０】
ステップ１４０８では、解析済み論理構造データを参照して、参照対象として指定されたエンティティを参照する一時的なSGML文書エンティティを生成し、これをステップ１４０１で入手した参照対象エンティティの出力先リソースと同一ディレクトリに出力する。
ここで生成する一時的なSGML文書エンティティの生成手順は、図１５を用いて後述する。
また、ファイル名は、エンティティ構成表１１０５のリソース名１１０９のリストに存在するファイル名とマッチングしないようなファイル名を生成し、これを一時的なSGML文書エンティティのファイル名とする。
ステップ１４０８では、エンティティ構成表１１０５および解析済み論理構造データを参照して、参照対象エンティティから直接または間接に参照される文書部品について、ステップ１４０９を繰り返し実行する。
ここでは、解析済み論理構造データの参照対象エンティティに対応する木構造のノードを辿りながら、エンティティ参照のノードを探していくことで、対象エンティティから参照される文書部品を見つけていく。
ステップ１４０９では、ステップ１４０８で指定されたエンティティの内容データを文書空間データベース格納領域５１６から読み出し、読み出したデータを、ステップ１４０１で入手した参照対象エンティティの出力先リソースと同一ディレクトリに出力する。
ただし、ファイル名は、エンティティ構成表１１０５のリソース名１１０９の値とする。
上記のステップ１４０９で出力されるエンティティの内容データとは、例えば、テキストエンティティとして図２のテキストエンティティ２０２が指定されている場合、テキストエンティティ２０２から矢印で指し示されているテキストエンティティ２０３の内容データである。
ステップ１４０４が終了した時点で処理を終了する。
なお、ステップ１４０２とステップ１４０３で外部領域に出力したエンティティの内容データと電子署名について、出力先の外部プログラムによってデジタル署名の認証をおこなってもよい。
これにより、本処理で出力したエンティティの真正性を検証することが可能である。
【００５１】
次に、図１４におけるステップ１４０８、すなわち、解析済み論理構造を参照して、一時的なSGML文書エンティティを生成し、外部領域に出力する処理について、その詳細を説明する。
図１５は、この処理の手順を示すPAD図である。
ここでは、図２のテキストエンティティ２０２を参照対象エンティティとした場合を例とし、生成するSGML文書エンティティを図１６の１６０１に示す。
ステップ１５０１では、解析済み論理構造データと、エンティティ構成表１１０５を参照して、DOCTYPE宣言の先頭部分（領域１６０２が示す部分）を生成する。
ここで、最上位要素の要素型名は、本来の文書中に含まれる要素型名としては存在しない要素型名（本来の文書中に含まれる要素型名と一致しないような要素型名）を一時的に生成して用いる。
ステップ１５０２では、前記のダミー要素の要素型宣言を生成する。
これは、解析済み論理構造データ１３０２を用いて、参照対象エンティティに対応する論理構造に含まれている最上位ノードの要素型名を、"，" で区切って並べたものを内容モデルとして生成する。
テキストエンティティ２０２に対応する論理構造１３０２に含まれる最上位ノードは、要素型名ｓｅｃの要素２つである。
そのため、この要素型ｓｅｃを "，" で区切って二つ並べた "(ｓｅｃ ，ｓｅｃ）" が生成される内容モデルとなり、生成される要素型宣言は、図１６における領域１６０３に示される要素型宣言となる。
【００５２】
ステップ１５０３では、原文書のSGML文書エンティティ中の内部DTDサブセットの内容をコピーする。（このステップによって生成されるデータが図１６の領域１６０４となる。）
ステップ１５０４では、DOCTYPE宣言の終了部分（領域１６０５が示す部分）を生成する。
ステップ１５０５では、前記のダミー要素の開始タグ（領域１６０６が示す部分）を生成する。
ステップ１５０６では、参照対象エンティティへのエンティティ参照（領域１６０７が示す部分）を生成する。
ステップ１５０７では、前記のダミー要素の終了タグ（領域１６０８が示す部分）を生成する。
ステップ１５０８では、ステップ１５０１からステップ１５０７までの処理で生成したSGML文書エンティティのデータを出力する。
出力先および出力ファイル名については、前記ステップ１４０７で示したとおり。
ステップ１５０８が終了した時点で処理を終了する。
【００５３】
次に、本実施例における文書更新制御プログラム５１２の動作手順を説明する。
図１７は、文書更新制御プログラム５１２の概略処理手順を示すPAD図である。
本プログラムは、文書の更新を求めるクライアントからの指令に対応して、文書空間管理プログラム５１３から呼び出される。
図１７に示す、被選択エンティティに対応する解析済み論理構造データの更新処理では、複数のユーザによって同じ解析済み論理構造データが同時に更新されることを防ぐため、まず更新対象エンティティに対してロックを設定する(ステップ１７０１)。
次に、ロックの設定に成功したかどうかをチェックし(ステップ１７０２)、成功した場合にはステップ１７０３からステップ１７１５までの更新処理を実行する。
失敗した場合には、既にロックが設定されていて更新ができない旨のエラーコードを返却して処理を終了する(ステップ１７１６)。
【００５４】
ステップ１７０３では、更新処理に必要な文書部品群と電子署名を、外部プログラムを用いて編集可能な領域に出力する。
このステップは、前記図１４に示したPAD図に示す文書参照時の処理と同様の手順で実現できる。
ただし、図１４中の「参照対象エンティティ」は、「更新対象エンティティ」の意味となる。
ステップ１７０４では、出力した内容データの外部プログラム（例えばSGMLエディタ）による編集および電子署名の生成の終了を待つ。
外部プログラムによる編集および電子署名の生成処理が終了した旨の通知を受けると、ステップ１７０５に進む。
ステップ１７０５では、編集後の内容データをステップ１７０３で出力した領域から読み込み、該読み込んだデータによって、更新対象エンティティの内容データを置換して文書空間データベース格納領域５１６に格納する。
ステップ１７０６では、更新対象エンティティに対応する電子署名を外部領域から読み込み、該読み込んだ電子署名によって、更新対象の電子署名を置換して文書空間データベース格納領域５１６に格納する。
ステップ１７０７では、更新対象エンティティのエンティティ識別子とエンティティの内容データ、および電子署名と電子署名識別子との組を、文書空間データベース格納領域５１６に格納してエンティティおよび電子署名の更新を行なう。
【００５５】
ステップ１７０８では、更新対象エンティティの種別を判定する。
更新対象エンティティが文書エンティティまたはテキストエンティティだった場合には、ステップ１７０９からステップ１７１１までの処理を実行し、非SGMLデータエンティティだった場合にはステップ１７１２を実行する。
ここで、ステップ１７０９では、更新対象エンティティの更新された内容データを含めた、文書全体の構文解析を行なう。
このとき、更新対象エンティティ以外のエンティティに関しては、文書空間データベース格納領域５１６から内容データを読み出す。
ステップ１７１０では、構文解析処理の結果を参照して、更新対象エンティティの更新された内容データに対応する、部分的な解析済み論理構造データを生成する。
なお、本実施例では、構文解析の結果を一時的に生成しているが、該構文解析処理の中で、構文解析処理と並行して解析済み論理構造データを生成するようにしてもよい。
ステップ１７１１では、更新対象エンティティに割り当てたエンティティ識別子と前記部分的な解析済み論理構造データとの組を文書空間データベース格納領域５１６に格納して文書の登録を行なう。
ステップ１７１２では、更新された内容データそのものを、前記の部分的な解析済み論理構造データの部分要素として設定する。
【００５６】
次に、ステップ１７１３では、すべての登録済み文書の論理構造データに対する検索を行い、更新対象エンティティに対応する（更新対象エンティティのエンティティ識別子を保持する）すべてのエンティティ遷移ノードを検出する。
そして、検出されたすべてのエンティティ遷移ノードに関して、ステップ１７１４を繰り返し実行する。
ここで、ステップ１７１４では、選択されたエンティティ遷移ノードの下位にある部分的な論理構造データを、ステップ１７１０またはステップ１７１２で設定された部分的な解析済み論理構造データによって置換し、これを文書空間データベース格納領域中に格納することによって、更新されたエンティティに対応する、登録済み文書の論理構造データを更新する。
最後に、ステップ１７１５において、更新対象エンティティに設定したロックを解除し、処理を終了する。
【００５７】
なお、本実施例ではSGMLを用いて記述された構造化文書を登録対象文書として処理する構成をとったが、XML、HTMLなど、他の文書記述言語を用いて記述された構造化文書を管理対象とするように構成してもよい。
また、本実施例は、構造定義として文書型定義（DTD）を用いることを前提として記述したが、文書型定義だけでなく、XSchema、DCD(Document Content Description)等、他の形式の文書構造定義を用いる構成としてもよい。
【００５８】
本実施例により、複数のエンティティから構成される構造化文書について、参照・更新対象エンティティを文書管理サーバから取り出す際に、対応する電子署名も同時に取り出すことができる。
取り出し先でデジタル署名の認証を行なうことにより、取り出したエンティティの真正性を証明することができるようになる。
さらに、テキストエンティティを参照・更新する場合には、取り出したエンティティを参照する一時的なSGML文書エンティティが生成され、関連する文書部品も同時に取り出される。
これにより、取り出し先のSGML処理系で、参照・更新対象エンティティの内容を独立したSGML文書として扱い、参照・編集することが可能となる。
【００５９】
以下、本発明を適用した第２の実施例について、図面を用いて説明する。
本実施例は、システムの構成およびデータ構造のいずれも前記第１の実施例と同一であるが、プログラムの処理手順が前記第１の実施例と異なっている。
本実施例が前記第１の実施例と異なっている点を示す。
前記第１の実施例では、各エンティティの電子署名は、作成時にシステムの外部で既に生成されており、また参照・更新時の認証や電子署名の生成は当該システムの外部で行なわれることを前提としている。
これに対し、本実施例では、外部から与えられたユーザ情報や秘密鍵などのパラメータによって、当該システムの中で登録文書に対する電子署名の生成・認証を行なう。
これにより、認証用の鍵を持つ利用者だけが登録文書を参照できる。
【００６０】
図１８に、本実施例における文書の登録処理制御プログラム５１０の処理手順を示すPAD図を示す。
図１８の処理手順は、前記第１の実施例における図７の処理に相当する。
ここでは、前記第１の実施例における文書登録制御プログラム（図７）との差異だけを述べる。
ステップ１８０１は、ステップ７０１に相当する処理である。
ただし、ステップ７０１では、各エンティティに対応する電子署名のリソース名を入手していたのに対して、ステップ１８０１では、電子署名を生成する際に用いる署名者の秘密鍵を呼び出しパラメータとして入手する。
エンティティの内容データの読み込み等、他の処理はステップ７０１と同様である。
ステップ１８０２からステップ１８０７までの処理は、ステップ７０２からステップ７０７までの処理と同様である。
ステップ１８０８では、処理対象エンティティの内容データと、ステップ１８０１で取得した署名者の秘密鍵を用いて、電子署名を生成する。
ステップ１８０９の処理は、ステップ７１０の処理と同様である。
ステップ１８１０、ステップ１８１１、ステップ１８１２の処理は、ステップ７１１、ステップ７１２、ステップ７１３の処理と同様である。
【００６１】
次に、本実施例における文書参照制御プログラム５１１の処理手順を示すPAD図を図３４と図１９に示す。
図３４は、文書参照制御プログラム５１１の概略処理手順を示すPAD図である。本プログラムは、文書の参照を求めるクライアントからの指令に対応して、文書空間管理プログラム５１３から呼び出される。
ステップ３４０１では、まず参照対象となるエンティティを識別するための文書識別子とエンティティ識別子を入手する。
ステップ３４０２では、エンティティ構成表１１０５のエンティティ種別１１０６を参照して、参照対象エンティティのエンティティ種別を判定し、この種別に応じて、ステップ３４０３、ステップ３４０４のいずれかの処理を実行するか、あるいは何も実行しないかを選択する。ここで、SGML文書エンティティが指定されている場合、ステップ３４０３を実行する。テキストエンティティが指定されている場合、ステップ３４０４を実行する。非SGMLデータエンティティが指定されている場合は、何も実行しない。
ステップ３４０３では、エンティティ構成表１１０５を参照して、SGML文書エンティティ以外の全ての文書部品のエンティティ識別子のリストを返却する。  ステップ３４０４では、エンティティ構成表１１０５および解析済み論理構造データを参照して、解析済み論理構造データの参照対象エンティティに対応する木構造のノードを辿りながらエンティティ参照のノードを探すことで、参照対象エンティティから直接または間接に参照される文書部品を探し出し、これらの文書部品のエンティティ識別子のリストを返却する。
【００６２】
図１９の処理手順は、前記第１の実施例における図１４の処理に相当する。このでは、前記第１の実施例における文書参照制御プログラム（図１４）との差異だけを述べる。
ステップ１９０１は、ステップ１４０１に相当する処理である。ただし、ステップ１９０１では呼び出しパラメータとして、以下の情報を入手する。
・参照対象エンティティの文書識別子とエンティティ識別子、署名者の公開鍵、出力先となるリソースのリソース名
・参照対象エンティティの文書部品となるエンティティ群の、エンティティ識別子と署名者の公開鍵の対応関係のリスト
ここで、参照対象エンティティの文書部品となるエンティティ群と、各エンティティのエンティティ識別子は、ステップ３４０３（またはステップ３４０４）で得た情報を用いる。
ステップ１９０２では、参照対象として指定されたエンティティの内容データを文書空間データベース格納領域５１６から読み出す。
ステップ１９０３では、参照対象エンティティに対応する電子署名を、文書空間データベース格納領域５１６から読み出す。
ステップ１９０４では、読み出した参照対象エンティティの内容データと、該読み出した電子署名、および該公開鍵を用いてデジタル署名の認証を行なう。認証が失敗した場合は、認証が失敗した旨のエラーコードを返却して処理を終了する（ステップ１９０５）。
ステップ１９０６では、ステップ１９０２で文書空間データベース格納領域から読み出した参照対象エンティティの内容データを、ステップ１９０１で入手した参照対象エンティティの出力先リソースに出力する。
ステップ１９０７の処理は、ステップ１４０４の処理と同様である。
ステップ１９０８は、ステップ１９０１のパラメータによって指定された全ての文書部品のエンティティについて、ステップ１９０９を実行する。
ステップ１９０９は、対象とする文書部品の認証、および取り出しを行なう処理である。本処理の手順は、図３３を用いて後述する。
ステップ１９１０の処理は、ステップ１４０８の処理と同様である。
ステップ１９１１は、ステップ１９０１のパラメータによって指定された全ての文書部品のエンティティについて、ステップ１９１２を実行する。
ステップ１９１２は、対象とする文書部品の認証、および取り出しを行なう処理である。本処理の手順は、図３３を用いて後述する。
【００６３】
次に、図１９におけるステップ１９０９およびステップ１９１２、すなわち、対象エンティティの認証・取り出し処理について、その詳細を説明する。図３３は、この処理の手順を示すPAD図である。
ステップ３３０１では、対象エンティティの内容データを文書空間データベース格納領域５１６から読み出す。
ステップ３３０２では、対象エンティティに対応する電子署名を、文書空間データベース格納領域５１６から読み出す。
ステップ３３０３では、読み出した対象エンティティの内容データと、該読み出した電子署名、およびステップ１９０１で得た公開鍵を用いてデジタル署名の認証を行なう。認証が失敗した場合は、認証が失敗した旨のエラーコードを返却して処理を終了する（ステップ３３０４）。
ステップ３３０５では、ステップ３３０１で文書空間データベース格納領域から読み出した参照対象エンティティの内容データを、ステップ１９０１で入手した参照対象エンティティの出力先リソースと同一のディレクトリに出力する。ただし、ファイル名は、エンティティ構成表１１０５のリソース名１１０９の値とする。
【００６４】
次に、本実施例における文書更新制御プログラム５１２の概要処理手順を示すPAD図を図２０に示す。
図２０の処理手順は、前記第１の実施例における図１７の処理に相当する。
ここでは、前記第１の実施例における文書更新制御プログラム（図１７）との差異だけを述べる。
ステップ２００１とステップ２００２の処理は、それぞれステップ１７０１とステップ１７０２の処理と同様である。
ステップ２００３では、更新処理に必要な文書部品群を、外部プログラムを用いて編集可能な領域に出力する。
このステップは、前記図１９に示したPAD図に示す文書参照時の処理と同様の手順で実現できる。
ただし、図１９中の「参照対象エンティティ」は、「更新対象エンティティ」の意味となる。
ステップ２００４とステップ２００５の処理は、それぞれステップ１７０４とステップ１７０５の処理と同様である。
ステップ２００６では、更新対象エンティティの内容データと、署名者の秘密鍵を用いて、電子署名を生成する。
そして、該生成した電子署名によって、更新対象の電子署名を置換して文書空間データベース格納領域５１６に格納する。
なお、電子署名を生成する際に用いる署名者の秘密鍵は、呼び出しパラメータとして入手する。
ステップ２００７からステップ２０１６までの処理は、ステップ１７０７からステップ１７１６までの処理と同様である。
【００６５】
本実施例により、複数のエンティティから構成される構造化文書について、参照・更新対象エンティティを文書管理サーバから取り出す際に署名者の公開鍵を与えると、文書管理サーバ内部でデジタル署名の認証を行なうことができる。
これにより、エンティティの真正性が証明（保証）された状態で、参照・更新対象エンティティを取り出せるようになる。
SGML文書エンティティの生成に関しては、前記第１の実施例の構成を取った場合との間で、機能的な差異は生じない。
【００６６】
以下、本発明を適用した第３の実施例について、図面を用いて説明する。
本実施例は、システムの構成は前記第１の実施例と同一であるが、データ構造及びプログラムの処理手順が前記第１の実施例と異なっている。
本実施例が前記第１の実施例と異なっている点を以下に示す。
前記第１の実施例では、登録済みの文書データとしては、各エンティティの内容データと、解析済み論理構造データの両方を保持していた。
これに対し、本実施例では、解析済み論理構造データのみを保持し、エンティティの内容データは保持しない。
その代わり、前記解析済み論理構造データは、取り出し時に、原文書を構成していた任意のエンティティを指定して、該エンティティが登録時に保持していた内容データと全く同じものが取り出せるように、該文書中に含まれる内容文字列および構造情報に加えて、復元に必要となる構文情報（原文書通りの要素型名、エンティティ参照（エンティティ開始情報およびエンティティ終了情報）、構文情報としての空白文字（空白類文字）、文字参照、属性の省略時値、文字参照、マーク済みセクション、処理命令、コメント宣言、リテラル区切り子の種類、属性名・表記法名・短縮参照表名・固有識別子（ID）・エンティティ名の原文書通りの名前、省略されていたタグの情報、短縮形のタグの情報、開始タグ中で要素型名と属性指定との間、および属性指定同士の間を区切っている空白文字列、省略されていたエンティティ参照の末尾のREFC（；）に相当する省略データの情報、短縮参照）を識別して解析済み論理構造データ中に保持する。
【００６７】
図２１に、本実施例における文書の登録処理制御プログラム５１０の処理手順を示すPAD図を示す。
図２１の処理手順は、前記第１の実施例における図７の処理に相当する。
ここでは、前記第１の実施例における文書登録制御プログラム（図７）との差異だけを述べる。
ステップ２１０１からステップ２１０４までの処理は、ステップ７０１からステップ７０４までの処理と同様である。
ステップ２１０５からステップ２１０８までの処理は、ステップ７０８からステップ７１１までの処理と同様である。
ステップ２１０９は、ステップ７１２に相当する処理である。
ただし、ステップ２１０９では、取り出し時に原文書通りの内容に復元できるように、登録対象文書中に含まれる内容文字列、構造情報に加えて、復元に必要な構文情報も解析済み論理構造データとして保持する。
ステップ２１１０の処理は、ステップ７１３の処理と同様である。
【００６８】
次に、本実施例における文書参照制御プログラム５１１の処理手順を示すPAD図を図２２に示す。
図２２の処理手順は、前記第１の実施例における図１４の処理に相当する。
ここでは、前記第１の実施例における文書参照制御プログラム（図１４）との差異だけを述べる。
ステップ２２０１の処理は、ステップ１４０１の処理と同様である。
ステップ２２０２では、参照対象として指定されたエンティティの内容データを、解析済み論理構造データから生成して、この復元した内容データをステップ２２０１で入手した参照対象エンティティの出力先リソースに出力する。
ここで生成する参照対象エンティティの生成、出力の手順は、図２７を用いて後述する。
ステップ２２０３からステップ２２０５までの処理は、ステップ１４０３からステップ１４０５までの処理と同様である。
ステップ２２０６では、対象とするエンティティの内容データを、解析済み論理構造データから生成して、この復元した内容データをステップ２２０１で入手した参照対象エンティティの出力先リソースと同一ディレクトリに出力する。
ただし、ファイル名は、エンティティ構成表１１０５のリソース名１１０９の値とする。
ここで生成する参照対象エンティティの生成、出力の手順は、図２７を用いて後述する。
ステップ２２０７とステップ２２０８の処理は、ステップ１４０７とステップ１４０８の処理と同様である。
ステップ２２０９は、ステップ２２０６の処理と同様である。
【００６９】
次に、本実施例における文書更新制御プログラム５１２の概要処理手順を示すPAD図を図２３に示す。
図２３の処理手順は、前記第１の実施例における図１７の処理に相当する。
ここでは、前記第１の実施例における文書更新制御プログラム（図１７）との差異だけを述べる。
ステップ２３０１とステップ２３０２の処理は、それぞれステップ１７０１とステップ１７０２の処理と同様である。
ステップ２３０３では、更新処理に必要な文書部品群を、外部プログラムを用いて編集可能な領域に出力する。
このステップは、前記図２２のPAD図に示す文書参照時の処理と同様の手順で実現できる。
ただし、図２２中の「参照対象エンティティ」は、「更新対象エンティティ」の意味となる。
ステップ２３０４は、ステップ１７０４の処理と同様である。
ステップ２３０５からステップ２３１５までの処理は、ステップ１７０６からステップ１７１６までの処理と同様である。
ただし、ステップ２３０９で生成する解析済み論理構造データは、文書登録時と同様、取り出し時に原文書通りの内容に復元できるように、登録対象文書中に含まれる内容文字列、構造情報に加えて、復元に必要な構文情報も解析済み論理構造データとして保持する。
【００７０】
図２４は、本実施例における文書登録制御プログラム５１０が、前記ステップ２１０３の構文解析処理の結果を参照して生成する解析済み論理構造データのデータ構造を示す図である。
この図では、図２に示すSGML文書を登録対象文書として処理した場合に生成される解析済み論理構造データを例として示している。
本実施例における解析済み論理構造データ中の各ノードのデータ構造を、図２５、図２６に示す。
なお、ノードは六種類あり、それぞれ、要素ノード２５０１、文字列ノード２６０１、改行文字ノード２６０４、非SGMLデータノード２６０７、エンティティ参照ノード２６１０、文字参照ノード２６１６のいずれかである。
【００７１】
以下に、指定されたエンティティの内容データを、本実施例における解析済み論理構造データを参照して生成、出力する処理を説明する。
この処理は、前記図２２のPAD図におけるステップ２２０２、ステップ２２０６、ステップ２２０９の内容データを生成し、出力する処理である。
図２７は、指定エンティティの内容データを外部に出力する処理手順を示したPAD図である。
ステップ２７０１は、指定エンティティの解析済み論理構造データ中の各最上位ノードに対して、ステップ２７０２を繰り返し実行する処理である。
ステップ２７０２は、対象ノードの内容を生成する処理である。
本処理の手順は、図２８を用いて後述する。
ステップ２７０３では、ステップ２７０１、ステップ２７０２で生成した内容データを、指定されたリソースに出力する。
【００７２】
次に、図２７におけるステップ２７０２、すなわちノードの内容の生成処理について、その詳細を説明する。
図２８は、この処理の手順を示すPAD図である。
ステップ２８０１では、対象ノードが持つノード種別（図２５、図２６におけるノード種別２５０２、２６０２、２６０５、２６０８、２６１１、２６１７）を判別し、該ノード種別に応じてステップ２８０２からステップ２８０７までのいずれかの処理を選択して実行する。
ここで、前記ノード種別が要素であった場合、その要素の内容を生成する（ステップ２８０２）。
本処理の手順は、図２９を用いて後述する。
また、前記ノード種別が文字列であった場合、内容文字列２６０３を用いてその文字列の内容を生成する（ステップ２８０３）。
また、前記ノード種別が改行文字であった場合、改行文字コード２６０６を用いて改行文字を出力する（ステップ２８０４）。
また、前記ノード種別が非SGMLデータであった場合、内容データ２６０９を用いて改行文字を出力する（ステップ２８０５）。
また、前記ノード種別がエンティティ参照であった場合、エンティティ参照を生成する（ステップ２８０６）。
ここで、エンティティ参照の生成は、"&"文字に続けて、エンティティ名２６１２、そして、（省略されていなければ）参照終了文字 ";" を生成する。
また、前記ノード種別が文字参照であった場合、文字参照を生成して出力する（ステップ２８０７）。
ここで、文字参照の生成は、"&#" 文字列に続けて、機能名２６１９もしくは文字番号２６２０を生成する。
機能名と文字番号の判別には、種別２６１８を用いる。
その後、（省略されていなければ）参照終了文字 ";" を生成する。
【００７３】
次に、図２８におけるステップ２８０２、すなわち要素の内容の生成処理について、その詳細を説明する。
図２９は、この処理の手順を示すPAD図である。
ステップ２９０１は、対象要素の開始タグを生成する。
本処理の手順は、図３０を用いて後述する。
ステップ２９０２では、対象要素の下位ノードへの参照２５１０を参照して、対象要素の各下位ノードに対して、ステップ２９０３を実行する。
ここで、ステップ２９０３は、前述した図２８に示すPAD図の処理を実行する。
すなわち、再帰的に図２８のPAD図を実行する。
ステップ２９０４は、対象要素の終了タグを生成する。
本処理の手順は、図３２を用いて後述する。
【００７４】
次に、図２９におけるステップ２９０１、すなわち、対象要素の開始タグの生成処理について、その詳細を説明する。
図３０は、この処理の手順を示すPAD図である。
ステップ３００１では、原文書において、指定要素の開始タグが省略されていたかどうかを、開始タグの省略２５０４のデータを参照することによって判別し、省略されていなければ（値が NO であれば）、ステップ３００２からステップ３０１０までの処理を実行する。
ステップ３００２では、開始タグの "<" 文字を出力する。
ステップ３００３では、開始タグの総称識別子２５０５を参照して、対象要素の要素型名を出力する。
ステップ３００４では、対象要素が持つ属性のリスト２５１１を参照し、対象要素が属性を持つ場合、対象要素の各属性について、ステップ３００５を実行する。
本処理の手順は、図３１を用いて後述する。
ステップ３００６では、空白類文字２５０６を参照して、原文書の該当位置に存在した空白類文字を生成する。
ステップ３００７では、開始タグの ">" 文字を生成する。
【００７５】
次に、図３０におけるステップ３００５、すなわち、対象要素の各属性の生成処理について、その詳細を説明する。
図３１は、この処理の手順を示すPAD図である。
ステップ３１０１では、属性の省略２５１２の値を参照し、対象属性が原文書において省略されていたかどうか判別する。
省略されていなければ、ステップ３１０２からステップ３１０９までの処理を実行する。
ステップ３１０２では、空白類文字２５１３を参照して、原文書の該当位置に存在した空白類文字を生成する。
ステップ３１０３では、属性名２５１４を参照して、対象属性の属性名を生成する。
ステップ３１０４では、空白類文字２５１５を参照して、原文書の該当位置に存在した空白類文字を生成する。
ステップ３１０５では、"=" 文字を出力する。
ステップ３１０６では、空白類文字２５１７を参照して、原文書の該当位置に存在した空白類文字を生成する。
ステップ３１０７では、リテラル種別２５１８を参照して、原文書と同じリテラル区切り子（LIT、LITA、または省略のいずれか）を生成する。
ステップ３１０８では、属性値２５１９を参照して、対象属性の属性値（リストを含む）を生成する。
ステップ３１０９では、リテラル種別２５１８を参照して、原文書と同じリテラル区切り子（LIT、LITA、または省略のいずれか）を生成する。
【００７６】
次に、図２９におけるステップ２９０４、すなわち、対象要素の終了タグの生成処理について、その詳細を説明する。
図３２は、この処理の手順を示すPAD図である。
ステップ３２０１では、原文書において、指定要素の開始タグが省略されていたかどうかを、終了タグの省略２５０７のデータを参照することによって判別し、省略されていなければ（値が NO であれば）、ステップ３２０２からステップ３２０５までの処理を実行する。
ステップ３２０２では、終了タグの "</" 文字を生成する。
ステップ３２０３では、終了タグの総称識別子２５０８を参照して、対象要素の要素型名を生成する。
ステップ３２０４では、空白類文字２５０９を参照して、原文書の該当位置に存在した空白類文字を生成する。
ステップ３２０５では、終了タグの ">" 文字を出力する。
【００７７】
本実施例の場合、解析済み論理構造データ中に、登録文書中に含まれる内容文字列および構造情報に加えて、復元に必要となる構文情報も保持するため、前記第１の実施例および第２の実施例の場合に比べて解析済み論理構造データのデータ量は大きくなる。
その代わり、エンティティの内容データは解析済み論理構造データとして一元管理されており、前記第１の実施例のような内容データと解析済み論理構造データの二重管理は行なっていないため、両データの不整合の問題は発生しなくなるという利点がある。
本実施例の構成を取った場合と、前記第１の実施例および第２の実施例の構成を取った場合との間で、機能的な差異は生じない。
【００７８】
【発明の効果】
以上説明したように、本発明による構造化文書のデジタル署名付き管理方法によれば、文書を構成する各エンティティに対して、電子署名とエンティティを対応付けて管理することによって、個々のエンティティ単位に署名を付与して、エンティティ単位での文書の改ざん防止、真正性の証明の機能を実現することができる。
また、一時的なSGML文書エンティティを生成する機能を備えることによって、エンティティの内容を独立して参照・編集可能なSGML文書として取り出すことができる。
【図面の簡単な説明】
【図１】デジタル署名の認証方法の仕組を示す図である。
【図２】文書記述言語SGMLによって記述された構造化文書の一例を示す図である。
【図３】  SGML文書を解析して得られる論理構造の一例を示す図である。
【図４】第１の実施例の全体構成を示す図である。
【図５】第１の実施例における文書管理サーバの構成を示す図である。
【図６】第１の実施例における文書空間管理プログラムの概略処理手順を示すPAD図である。
【図７】第１の実施例における文書登録制御プログラムの概略処理手順を示すPAD図である。
【図８】第１の実施例における文書登録制御プログラムにおいて、文書登録時に登録対象文書を構成するエンティティの一覧を受け渡すために用いるリスト形式の一例を示す図である。
【図９】第１の実施例における文書登録制御プログラムが生成するエンティティ識別子対応表と登録されるエンティティの内容データとの対応関係を示す図である。
【図１０】第１の実施例における文書登録制御プログラムが生成する電子署名識別子対応表と登録される電子署名との対応関係を示す図である。
【図１１】第１の実施例における文書登録制御プログラムが生成する登録文書一覧表のデータ構造を示す図である。
【図１２】第１の実施例における文書登録制御プログラムが生成する構文解析結果データの一部であるエンティティ構成表の具体例を示した図である。
【図１３】第１の実施例における文書登録制御プログラムが生成する解析済み論理構造データのデータ構造を示す図である。
【図１４】第１の実施例における文書参照制御プログラムの概略処理手順を示すPAD図である。
【図１５】第１の実施例における文書参照制御プログラムにおいて、参照時に一時的に生成するSGML文書エンティティの生成、出力を行なう処理の手順を示すPAD図である。
【図１６】第１の実施例における文書参照制御プログラムにおいて、参照時に一時的に生成するSGML文書エンティティの一例を示す図である。
【図１７】第１の実施例における文書更新制御プログラムの概略処理手順を示すPAD図である。
【図１８】第２の実施例における文書登録制御プログラムの概略処理手順を示すPAD図である。
【図１９】第２の実施例における文書参照制御プログラムの概略処理手順を示すPAD図である。
【図２０】第２の実施例における文書更新制御プログラムの概略処理手順を示すPAD図である。
【図２１】第３の実施例における文書登録制御プログラムの概略処理手順を示すPAD図である。
【図２２】第３の実施例における文書参照制御プログラムの概略処理手順を示すPAD図である。
【図２３】第３の実施例における文書更新制御プログラムの概略処理手順を示すPAD図である。
【図２４】第３の実施例における文書登録制御プログラムが生成する解析済み論理構造データのデータ構造を示す図である。
【図２５】第３の実施例における文書登録制御プログラムが生成する解析済み論理構造データの要素ノードのデータ構造を示す図である。
【図２６】第３の実施例における文書登録制御プログラムが生成する解析済み論理構造データの文字列ノード、改行文字ノード、非SGMLデータノード、エンティティ参照ノード、および文字参照ノードのデータ構造を示す図である。
【図２７】第３の実施例における文書参照制御プログラムの解析済み論理構造データから内容データを生成、出力する処理手順を示すPAD図である。
【図２８】第３の実施例における文書参照制御プログラムの解析済み論理構造データ中の各ノードのノード種別に応じて内容データを生成する処理手順を示すPAD図である。
【図２９】第３の実施例における文書参照制御プログラムの解析済み論理構造データ中の要素ノードから内容を生成する処理手順を示すPAD図である。
【図３０】第３の実施例における文書参照制御プログラムの解析済み論理構造データ中の要素ノードから開始タグを生成する処理手順を示すPAD図である。
【図３１】第３の実施例における文書参照制御プログラムの解析済み論理構造データ中の要素ノードから属性情報を生成する処理手順を示すPAD図である。
【図３２】第３の実施例における文書参照制御プログラムの解析済み論理構造データ中の要素ノードから終了タグを生成する処理手順を示すPAD図である。
【図３３】第２の実施例における文書参照制御プログラムの対象エンティティの認証、および取り出し処理手順を示すPAD図である。
【図３４】第２の実施例における文書参照制御プログラムの対象エンティティの文書部品群の取得処理手順を示すPAD図である。
【符号の説明】
４０１  文書管理サーバ
４０２  文書管理クライアント
４０３  業務処理システム
５１０  文書登録制御プログラム
５１１  文書登録制御プログラム
５１２  文書更新制御プログラム
５１３  文書空間管理プログラム
５１６  文書空間データベース格納領域
１１０１  登録文書一覧表
１１０５  エンティティ構成表
１３０１  解析済み論理構造データ
【図１】
0003868171.tif 000002
【図２】
0003868171.tif 000003
【図３】
0003868171.tif 000004
【図４】
0003868171.tif 000005
【図５】
0003868171.tif 000006
【図６】
0003868171.tif 000007
【図７】
0003868171.tif 000008
【図８】
0003868171.tif 000009
【図９】
0003868171.tif 000010
【図１０】
0003868171.tif 000011
【図１１】
0003868171.tif 000012
【図１２】
0003868171.tif 000013
【図１３】
0003868171.tif 000014
【図１４】
0003868171.tif 000015
【図１５】
0003868171.tif 000016
【図１６】
0003868171.tif 000017
【図１７】
0003868171.tif 000018
【図１８】
0003868171.tif 000019
【図１９】
0003868171.tif 000020
【図２０】
0003868171.tif 000021
【図２１】
0003868171.tif 000022
【図２２】
0003868171.tif 000023
【図２３】
0003868171.tif 000024
【図２４】
0003868171.tif 000025
【図２５】
0003868171.tif 000026
【図２６】
0003868171.tif 000027
【図２７】
0003868171.tif 000028
【図２８】
0003868171.tif 000029
【図２９】
0003868171.tif 000030
【図３０】
0003868171.tif 000031
【図３１】
0003868171.tif 000032
【図３２】
0003868171.tif 000033
【図３３】
0003868171.tif 000034
【図３４】
0003868171.tif 000035