(57)【特許請求の範囲】
【請求項１】
複数の構成要素に基づいて構造化された文書情報である構造化文書情報を蓄積する文書蓄積手段と、
前記構造化文書情報を表示するための体裁を前記構成要素毎に定義した体裁定義情報を蓄積する体裁蓄積手段と、
前記構造化文書情報を前記文書蓄積手段から取得し、前記体裁定義情報を前記体裁蓄積手段から取得し、取得した構造化文書情報と前記体裁定義情報とに基づいて表示情報を生成し、表示装置に出力する表示処理装置と、
を含む構造化文書システムの前記表示処理装置が実行する構造化文書の視覚的出力方法であって、
対応する体裁定義情報において段落を形成することが定義された段落形成要素を含む構成要素に基づいて構造化された構造化文書情報を、構成要素毎に取得し、
取得した構造化文書情報の構造解析を、構成要素毎に実行し、
前記構造解析処理が終了している段落形成要素が形成する段落内における前記表示情報の相対的な配置を決定する段落内配置処理を、各段落形成要素より上位にある構成要素の構造解析の終了及び段落内配置処理の終了を待つことなく、段落形成要素が形成する段落毎に並列に実行し、
ある段落形成要素に関して段落内配置処理が完了し、かつその段落形成要素よりも上位にある全ての段落形成要素の段落内配置処理が完了した場合、その段落形成要素及びそれより上位にある全ての段落形成要素に対応する表示情報の前記表示装置上における絶対的な表示位置を決定し、視覚的出力を行う、
構造化文書の視覚的出力方法。
【請求項２】
前記段落内配置処理で決定する表示情報の段落内における相対的な配置は、当該段落に配置される他の表示情報の位置を基準とする座標として表される、請求項１に記載の構造化文書の視覚的出力方法。
【請求項３】
前記段落内配置処理で決定する表示情報の段落内における相対的な配置は、当該段落を配置する領域の開始位置を基準とする座標として表される、請求項１に記載の構造化文書の視覚的出力方法。
【請求項４】
複数の構成要素に基づいて構造化された文書情報である構造化文書情報を蓄積する文書蓄積手段と、
前記構造化文書情報を表示するための体裁を前記構成要素毎に定義した体裁定義情報を蓄積する体裁蓄積手段と、
前記構造化文書情報を前記文書蓄積手段から取得し、前記体裁定義情報を前記体裁蓄積手段から取得し、取得した構造化文書情報と前記体裁定義情報とに基づいて表示情報を生成し、表示装置に出力する表示処理装置と、
を含む構造化文書システムの前記表示処理装置が実行する構造化文書の視覚的出力プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
対応する体裁定義情報において段落を形成することが定義された段落形成要素を含む構成要素に基づいて構造化された構造化文書情報を、構成要素毎に取得する段階と、
取得した構造化文書情報の構造解析を、構成要素毎に実行する段階と、
前記構造解析処理が終了している段落形成要素が形成する段落内における前記表示情報の相対的な配置を決定する段落内配置処理を、各段落形成要素より上位にある構成要素の構造解析の終了及び段落内配置処理の終了を待つことなく、段落形成要素が形成する段落毎に並列に実行する段階と、
ある段落形成要素に関して段落内配置処理が完了し、かつその段落形成要素よりも上位にある全ての段落形成要素の段落内配置処理が完了した場合、その段落形成要素及びそれより上位にある全ての段落形成要素に対応する表示情報の前記表示装置上における絶対的な表示位置を決定し、視覚的出力を行う段階と、
を実行させるための構造化文書の視覚的出力プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項５】
複数の構成要素に基づいて構造化された文書情報である構造化文書情報を蓄積する文書蓄積手段から前記構造化文書情報を取得し、前記構造化文書情報を表示するための体裁を前記構成要素毎に定義した体裁定義情報を蓄積する体裁蓄積手段から前記体裁定義情報を取得し、取得した構造化文書情報と前記体裁定義情報とに基づいて表示情報を生成し、表示装置に出力する表示処理装置であって、
対応する体裁定義情報において段落を形成することが定義された段落形成要素を含む構成要素に基づいて構造化された構造化文書情報を、構成要素毎に取得する段落形成要素取得手段と、
取得した構造化文書情報の構造解析を、構成要素毎に実行する構造解析手段と、
前記構造解析処理が終了している段落形成要素が形成する段落内における前記表示情報の相対的な配置を決定する段落内配置処理を、各段落形成要素より上位にある構成要素の構造解析の終了及び段落内配置処理の終了を待つことなく、段落形成要素が形成する段落毎に並列に実行する配置手段と、
ある段落形成要素に関して段落内配置処理が完了し、かつその段落形成要素よりも上位にある全ての段落形成要素の段落内配置処理が完了した場合、その段落形成要素及びそれより上位にある全ての段落形成要素に対応する表示情報の前記表示装置上における絶対的な表示位置を決定し、視覚的出力を行う出力手段と、
を備える表示処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、所定の構成要素からなる構造化された文書を表示するための技術に関するものであり、特に構造化文書の表示を高速化するための技術に関する。
【０００２】
【従来の技術】
従来、定められた構成要素からなる構造化された文書情報、例えばＳＧＭＬ（Standard Generalized Markup Language）などにより記述された文書は、通常その内容と構造のみで構成され、表示を行うために必要となる体裁定義情報は文書情報と独立に管理されている。このような構造化文書は以下のように表示される。すなわち、文書情報の構造は木構造で表されることが多く、その木構造を上位ノードから下位ノードへ順番に辿っていく。
段落形成要素を有するノードに行き着く度に、その子孫のノードが有する文字データの表示装置上の絶対的な表示位置を決めて表示する。
【０００３】
例えば、図２に示す構造化文書は、構造解析されて図３に示す木構造をなす構造情報に置き換えられる。その後、図４に示す体裁定義情報を元にフォーマットした結果が対象表示装置に表示される。例えば、構成要素"MEMO"のノードN1から構成要素"PARA1"のノードN2に辿り着いたとする。この構成要素に指定されている体裁定義情報を取得すると、段落形成要素であることがわかる。そこで、子孫のノードの中で文字データを有するノード（ノードN21やN241など）を見つけ、表示装置上の絶対的な表示位置を計算して表示する。
これを、木構造中で段落形成要素を有するノードに辿り着く度に繰り返す。従って、上位の段落形成要素に含まれる文字データの表示位置が定まった後、下位の段落形成要素に含まれる文字データの表示位置を計算する。
【０００４】
【発明が解決しようとする課題】
しかし、従来の構造化文書の表示方法では、特にマニュアルや仕様書などの膨大な情報量を持つ文書を表示する場合、前から１つずつ順番に段落形成要素の内容の配置処理を行なうため、多大な時間を要するという問題点がある。
また、構造化文書の内容がネットワーク上のサーバーに分散して保管されている文書を表示する場合がある。この場合、例えばある段落形成要素の内容が保管されているサーバーまでの通信回線の転送速度が著しく遅く、その段落形成要素の内容が揃うまでに多大な時間を要する場合、以降の文書情報が揃っていたとしても何も処理できず、表示処理が遅延するという問題点がある。
【０００５】
本発明は、構造化文書の構造そのものを変えることなく、膨大な量の文書であっても迅速に表示を行う構造化文書の視覚的出力方法、構造化文書の視覚的出力プログラムを記録したコンピュータ読み取り可能な記録媒体及び構造化文書の視覚的出力装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
前記課題を解決するために、本願第１発明は、
複数の構成要素に基づいて構造化された文書情報である構造化文書情報を蓄積する文書蓄積手段と、
前記構造化文書情報を表示するための体裁を前記構成要素毎に定義した体裁定義情報を蓄積する体裁蓄積手段と、
前記構造化文書情報を前記文書蓄積手段から取得し、前記体裁定義情報を前記体裁蓄積手段から取得し、取得した構造化文書情報と前記体裁定義情報とに基づいて表示情報を生成し、表示装置に出力する表示処理装置と、
を含む構造化文書システムの前記表示処理装置が実行する構造化文書の視覚的出力方法を提供する。この方法は下記の段階を含む。
・対応する体裁定義情報において段落を形成することが定義された段落形成要素を含む構成要素に基づいて構造化された構造化文書情報を、構成要素毎に取得し、
・取得した構造化文書情報の構造解析を、構成要素毎に実行し、
・前記構造解析処理が終了している段落形成要素が形成する段落内における前記表示情報の相対的な配置を決定する段落内配置処理を、各段落形成要素より上位にある構成要素の構造解析の終了及び段落内配置処理の終了を待つことなく、段落形成要素が形成する段落毎に並列に実行し、
・ある段落形成要素に関して段落内配置処理が完了し、かつその段落形成要素よりも上位にある全ての段落形成要素の段落内配置処理が完了した場合、その段落形成要素及びそれより上位にある全ての段落形成要素に対応する表示情報の前記表示装置上における絶対的な表示位置を決定し、視覚的出力を行う。
【０００７】
まず、構造化文書の構造情報の中で、対応する体裁定義情報において段落形成が指定されている構成要素を取得する。次に、取得した段落形成要素の表示情報が揃っている場合、各表示情報の段落内における相対的な配置を計算する。ここで段落内における相対的な配置は、段落を配置する領域内における相対的な表示位置で表される。この段落形成要素の段落内配置処理は各段落形成要素ごとに独立に行われる。すなわち、各段落形成要素における段落内配置処理は、当該段落形成要素よりも上位にある段落形成要素の表示情報がまだ揃っていないことや、上位の段落形成要素における配置処理がまだ終了していないことなどには妨げられない。
【０００８】
配置処理が終了した段落形成要素の表示情報の表示装置上における絶対的な表示位置は、その段落形成要素よりも上位にある段落形成要素の配置処理が全て終了することにより定まる。すなわち、配置処理が終了した段落形成要素については、表示装置上に形成する段落の占有領域の大きさが求まる。また、前記占有領域の開始位置は、当該段落形成要素よりも上位にある全ての段落形成要素の占有領域の高さを合計することにより、表示位置の原点を基準とする絶対的な座標で表される。各段落形成要素の開始位置の絶対座標を用いれば、表示情報の出力領域の表示装置上における開始位置を、表示装置の原点を基準とする絶対的な表示座標に変換することができる。従って、配置処理が終了した段落形成要素の表示情報は、それよりも上位にある段落形成要素の配置処理が全て終了した後、絶対的な表示位置を計算してから出力される。
【０００９】
本願第２発明は、前記第１発明において、段落内配置処理で決定する表示情報の段落内における相対的な配置は、当該段落に配置される他の表示情報の位置を基準とする座標として表される構造化文書の視覚的出力方法を提供する。
表示情報の段落内における配置は、例えば１つ上位の表示情報の出力領域の段落内における開始位置を基準とする（ｘ，ｙ）座標で表す。
【００１０】
本願第３発明は、前記第１発明において、段落内配置処理で決定する表示情報の段落内における相対的な配置は、当該段落を配置する領域の開始位置を基準とする座標として表される、構造化文書の視覚的出力方法を提供する。
表示情報の段落内における配置は、例えば表示装置上に形成される段落の占有領域開始位置を基準とする（ｘ，ｙ）座標で表す。
【００１１】
本願第４発明は、
複数の構成要素に基づいて構造化された文書情報である構造化文書情報を蓄積する文書蓄積手段と、
前記構造化文書情報を表示するための体裁を前記構成要素毎に定義した体裁定義情報を蓄積する体裁蓄積手段と、
前記構造化文書情報を前記文書蓄積手段から取得し、前記体裁定義情報を前記体裁蓄積手段から取得し、取得した構造化文書情報と前記体裁定義情報とに基づいて表示情報を生成し、表示装置に出力する表示処理装置と、
を含む構造化文書システムの前記表示処理装置が実行する構造化文書の視覚的出力プログラムを記録したコンピュータ読み取り可能な記録媒体を提供する。このプログラムは、下記の段階を実行する。
・対応する体裁定義情報において段落を形成することが定義された段落形成要素を含む構成要素に基づいて構造化された構造化文書情報を、構成要素毎に取得する段階と、
・取得した構造化文書情報の構造解析を、構成要素毎に実行する段階と、
・前記構造解析処理が終了している段落形成要素が形成する段落内における前記表示情報の相対的な配置を決定する段落内配置処理を、各段落形成要素より上位にある構成要素の構造解析の終了及び段落内配置処理の終了を待つことなく、段落形成要素が形成する段落毎に並列に実行する段階と、
・ある段落形成要素に関して段落内配置処理が完了し、かつその段落形成要素よりも上位にある全ての段落形成要素の段落内配置処理が完了した場合、その段落形成要素及びそれより上位にある全ての段落形成要素に対応する表示情報の前記表示装置上における絶対的な表示位置を決定し、視覚的出力を行う段階。
【００１２】
本願第１発明と同様の作用を有する。
本願第５発明は、複数の構成要素に基づいて構造化された文書情報である構造化文書情報を蓄積する文書蓄積手段から前記構造化文書情報を取得し、前記構造化文書情報を表示するための体裁を前記構成要素毎に定義した体裁定義情報を蓄積する体裁蓄積手段から前記体裁定義情報を取得し、取得した構造化文書情報と前記体裁定義情報とに基づいて表示情報を生成し、表示装置に出力する表示処理装置を提供する。この表示処理装置は下記の手段を備えている。
・対応する体裁定義情報において段落を形成することが定義された段落形成要素を含む構成要素に基づいて構造化された構造化文書情報を、構成要素毎に取得する段落形成要素取得手段、
・取得した構造化文書情報の構造解析を、構成要素毎に実行する構造解析手段、
・前記構造解析処理が終了している段落形成要素が形成する段落内における前記表示情報の相対的な配置を決定する段落内配置処理を、各段落形成要素より上位にある構成要素の構造解析の終了及び段落内配置処理の終了を待つことなく、段落形成要素が形成する段落毎に並列に実行する配置手段、
・ある段落形成要素に関して段落内配置処理が完了し、かつその段落形成要素よりも上位にある全ての段落形成要素の段落内配置処理が完了した場合、その段落形成要素及びそれより上位にある全ての段落形成要素に対応する表示情報の前記表示装置上における絶対的な表示位置を決定し、視覚的出力を行う出力手段。
【００１３】
本願第１発明と同様の作用を有する。
【００１４】
【発明の実施の形態】
次に、本発明について、実施形態例を挙げて図面を参照しつつ具体的に説明する。
＜第１実施形態例＞
［構造化文書システムの構成］
図１に、構造化文書システムＫＳの構成例を示す。構造化文書システムＫＳは、構造化文書１、体裁定義情報２、出力処理部３、表示装置４及び印刷装置５を有し、表示装置４や印刷装置５などへの表示や印刷、構造化文書１の加工や編集を行う。また、構造化文書システムＫＳは、表示装置４及び印刷装置５に対応して設けられた表示バッファ領域６及び印刷バッファ領域７を有している。さらに、構造化文書システムＫＳは、配置バッファ領域８を有している。
【００１５】
構造化文書１は、ＳＧＭＬなど所定の規約に従って記述されている。体裁定義情報２は、ＤＳＳＳＬ（Document Style Semantics and Specification Language）など所定の規約に従って記述されている。出力処理部３については後述する。表示バッファ領域６及び印刷バッファ領域７は、表示及び印刷を行うための表示属性情報及び文字データや画像データなどの表示情報が設定される。配置バッファ領域８は、表示情報の表示装置上の表示位置を決定するための表示属性や一情報などを記憶しておく。
【００１６】
［出力処理部］
図２に構造化文書の一例を、図３に、図２に示す構造化文書を解析した構造情報の概念図を、図４に、図３に示す構成要素と関連付けて定義される体裁定義情報が記述されたスタイルシートの概念図をそれぞれ示す。
出力処理部３は、構造解析部３１、文書構造記憶部３２及び表示処理部３３を有している。構造解析部３１は、図２に例示するＳＧＭＬなどで記述された文書を解析して図３に例示する構造情報に生成し直し、文書構造記憶部３２に出力する。この構造解析部３１の処理については、国際的な標準規格（ISO8879）があり、それに従った解析及び構造情報の生成が行われるので詳細な説明は省略する。文書構造記憶部３２は構造解析部３１から出力された図３の構造情報を記憶する。表示処理部３３は、文書構造記憶部３２に記憶された構造情報に基づいて表示装置４などへ視覚的出力を行う。
【００１７】
［表示処理部］
次に表示処理部３３について、前記図２に示す構造化文書を表示装置４へ表示する場合を例に取り説明する。図５は、表示装置４上に表示された構造化文書を、図６は、段落の占有領域の開始位置を基準として、各文字データの出力領域が前記占有領域内の相対位置に仮想的に配置されている状態を示す説明図である。なお、各段落の占有領域の開始位置は、同領域の左上とする。
【００１８】
表示処理部３３は、解析された木構造を読み込み、段落を形成する構成要素を有するノードの下位にある文字データの出力領域について、前記構成要素が表示装置上に形成する段落の占有領域内における相対位置を算出する。この相対位置について、図５及び図６を用いて説明する。図５において、１番目の段落形成要素により形成される段落の占有領域は、開始位置Ｐ１から幅ｄｗ１，高さｄｈ１の領域に、２番目の段落形成要素により形成される段落の占有領域は、開始位置Ｐ２から幅ｄｗ２，高さｄｈ２の領域にそれぞれ相当する。
【００１９】
図６において、各文字データの出力領域は、各文字データ及びその上位の段落形成要素に定義されている体裁表示情報により決定される。仮想のベースライン（ＢＬ）上に幅ｗ及び高さｈで配置されている。文字データの出力領域の開始位置は、各段落の占有領域の開始位置Ｐ１，Ｐ２…を原点とする相対座標で表される。従って、文字データの出力領域の、表示装置上の原点（Ｐ０）を基準とした絶対位置は、当該文字データが含まれる段落の占有領域の開始位置Ｐ１，Ｐ２…が定まることにより決定する。この各段落の占有領域の開始位置は、当該段落形成要素よりも上位にある全ての段落形成要素の配置処理が終了し、段落の占有領域の幅ｄｗ及び高さｄｈが決定することにより求まる。なお、図５及び図６には文字データのみが例示されているが、画像データなど文字以外の表示データについても同様である。
【００２０】
算出された出力領域の大きさと開始位置は、各文字データと関連付けて図７に例示する文字データ出力領域情報リストに書き込まれる。また、表示処理部３３は、図８に示す構造解析完結状態リスト及び図９に示すノードリストを作成する。図８の構造解析完結状態リストには、各ノードが有する構成要素の内容の構造解析が完結しているか否かの状態が書き込まれる。構造解析が完結している状態とは、構造化文書の解析時に文書中に開始タグと終了タグとが確認されたことを意味する。図８に示す構造解析完結状態リストでは、ノード「Ｎ２」は完結しているが（ＯＮ）、ノード「Ｎ３」は完結していない（ＯＦＦ）ので、ノード「Ｎ２」及びノード「Ｎ３」を下位に有するノード「Ｎ１」は完結していない（ＯＦＦ）ことを示す。図９に示すノードリストには、ノード識別子とノードが有する構成要素とが対応付けて記憶される。
【００２１】
さらに、表示処理部３３は、段落形成要素を有するノードごとに配置処理の状態を監視し、図１０に示す配置処理進行状態リストに書き込む。図１０の配置処理進行状態リストにおいて、”開始待ち”のノード「Ｎ３」は、該当する段落形成要素の表示データが揃っていないために配置処理を実行できないことを示す。また、”実行中”のノード「Ｎ２」は、該当する段落形成要素について配置処理を実行中であることを示す。配置処理が完了すれば、そのノードのエントリは配置処理実行状態リストから削除される。配置処理実行状態リストは、木構造を上位ノードから下位ノードに向かって辿っていく際に作成されるので、ノード識別子が木構造における上位から下位の順に登録される。
【００２２】
［表示処理部の処理の流れ］
次に、表示処理部３３が行う処理の流れを、図１１〜１５に示すフローチャートを用いて説明する。
（１）メインルーチン１
表示処理部３３は、逐次構造解析部３１により解析された構造情報を読み込むことにより処理を開始する。まず、ステップＳ１では、図１０の配置処理進行状態リストを参照し、配置処理の開始待ち状態の段落形成要素を有するノードがあるか否かを判断する。もしあればステップＳ２に移行し、なければ後述するステップＳ７の新規構造情報配置処理に移行する。すなわち、新たに木構造に追加された構造情報について配置処理を行う前に、
今までに構築された木構造の構造情報の中でまだ配置処理が行われていない段落形成要素を有するノードがあれば、その配置処理を優先的に行う。
【００２３】
ステップＳ２では、図１０の配置処理進行状態リストを参照し、「開始待」状態にあるノード識別子を取得する。
ステップＳ３では、取得したノード識別子から図８の構造解析完結状態リストを参照し、そのノードが有する構成要素の内容の構造解析が完結しているか否かを判断する。完結していれば配置処理を行うことができるのでステップＳ４に移行する。完結していなければ後述するステップＳ７に移行する。
【００２４】
ステップＳ４では、図１０の配置処理進行状態リストにおける当該ノードの配置処理進行状態を「実行中」に変更する。
ステップＳ５では、当該構成要素を有するノード識別子を後述する配置処理にわたし、
当該ノードの配置処理を起動する。この配置処理はメインルーチン１とは独立に行われる。配置処理を起動後、再びステップＳ１に戻り、配置処理の開始待ち状態にあるノードの有無を判断する。
【００２５】
ステップＳ１で配置処理の開始待ち状態にあるノードがないと判断されると、ステップＳ６に移行する。
ステップＳ６では、後述する新規構造情報配置処理を行い、新たに木構造に追加された構造情報について、配置処理を行う。
前記のステップＳ３において、当該ノードが有する構成要素の内容の構造解析が完結していないと判断されるとステップＳ７に移行する。ステップＳ７では、エラーにより完結していないのか否かを判断する。エラーであればステップＳ８へ移行し、ステップＳ８においてエラー内容に応じたエラー処理を行う。
【００２６】
例えば、構造解析が完結したとみなしてその配置処理を実行し、存在する表示データだけで配置処理を行うことや、ダイアログボックスなどを用いて表示装置上で利用者に通知することが考えられる。また、他のエラー処理としては、当該ノードが有する構成要素の内容がネットワーク上にある場合、そのままロケーション情報（例えばＶＲＬ）を利用してリンクという形態をとるようにしても良い。エラーでなければ前記のステップＳ６に移行して新規構造情報配置処理を行う。
【００２７】
すなわち、まだ構造解析が完結していないノードについてはそれが完結されるのを待たずに、新たに木構造に追加された構造情報についての配置処理を先に行う。
（２）メインルーチン２
表示処理部３３は、前記のメインルーチン１及び後述する配置処理とは独立に、以下に述べる処理を行う。配置処理からノード識別子を含む配置完了通知を受信することにより処理が開始される。
【００２８】
まず、ステップＳ２１では、配置完了通知に含まれているノード識別子を取得する。
ステップＳ２２では、取得したノード識別子のエントリを図１０の配置処理進行状態リストから削除する。
ステップＳ２３では、配置処理進行状態リストを参照し、削除したノードよりも上位のノードが残っているか否かを判断する。上位のノードがなければ、取得したノードよりも上位のノードは全て配置処理が完了しており、表示装置上における各段落の占有領域の幅及び高さが求められていることになるので、ステップＳ２４に移行する。上位のノードが残っていれば、当該段落の占有領域の開始位置を定めることができないので処理を終了する。
【００２９】
ステップＳ２４では、配置処理進行状態リストを参照し、削除したノードよりも下位のノードが残っているか否かを判断する。下位のノードがなければ、削除したノードから、解析された構造情報が読み込まれている部分の最後まで、配置処理が終了したことになる。下位のノードがあれば、削除したノードからその下位のノードの直前のノードまでの配置処理が終了したことになる。従って、前記配置処理が終了している範囲内のノードが持つ文字データを、表示装置上に表示することができる。
【００３０】
（３）新規構造情報配置処理サブルーチン
前記メインルーチン１においてステップＳ７に移行することにより、図１３に示す新規構造情報配置処理が開始される。
まず、ステップＳ３１において、前回の新規構造情報配置処理において、構造化文書の木構造がどこまで読み込まれて（辿られて）いるかを示す、最終読込ノード識別子を取得する。これをカレントノードとする。
【００３１】
但し、本構造化文書システム起動直後の配置処理においては、前回の最終読込ノード識別子が存在しないため、ルート新規構造情報ノードがカレントノードとなる。
ステップＳ３２では、カレントノードの次（下位レベルの）ノードを読み込めるか否か判断し、読み込めなければステップＳ３３に移行する。読み込めればカレントノードの次のノードをカレントノードとし、ノードリストから構成要素を取得してステップＳ３５に移行する。
【００３２】
ステップＳ３３では、構造化文書が完結しているか否かを判断する。この判断は、構造化文書の解析時に、開始ルートタグと終了ルートタグとが確認されたか否かにより行う。
文書が完結していれば処理を終了し、完結していなければステップＳ３４に移行する。
ステップＳ３４では、カレントノードの識別子を最終読込ノード識別子として記憶し、
処理を終了する。
【００３３】
ステップＳ３５では、カレントノードが有する構成要素に対応する体裁定義情報をスタイルシートから取得する。
ステップＳ３６では、カレントノードが有する構成要素が段落形成要素であるか否かを判断し、段落形成要素でない場合は再びステップＳ３２に戻って次レベルノードを読み込む。段落形成要素である場合は、ステップＳ３７に移行する。
【００３４】
ステップＳ３７では、構造解析完結状態リストを参照し、カレントノードが有する構成要素の内容の構造解析が完結されているか否かを判断する。構造解析が完結されていなければステップＳ３８に移行する。完結されていればステップＳ３９に移行する。
ステップＳ３８では、カレントノードの識別子を、「開始待」として配置処理進行状態リストに登録する。
【００３５】
ステップＳ３９では、カレントノードの識別子を、「実行中」として配置処理進行状態リストに登録する。
ステップＳ４０では、カレントノードが有する段落形成要素の表示データの段落内における相対的な表示位置を決めるため、後述の配置処理を起動する。起動後、再びステップＳ３２に戻り、次のノードを読み込む。
【００３６】
すなわち、新規構造情報配置処理では、表示データの構造解析が完結された段落形成要素のみ配置処理を行う。
（４）配置処理
表示処理部３３は、前記メインルーチン１及び２とは独立に図１４に示す配置処理を行い、段落形成要素の文字データの段落内における相対的な表示位置を決定する。
【００３７】
前記メインルーチン１のステップＳ５または前記新規構造情報配置処理のステップＳ４０において、段落形成要素を有するノードの識別子を渡されて起動されることにより処理が開始される。
まず、ステップＳ４０１では、ノードリストを参照し、渡されたノード識別子から構成要素を取得し、当該構成要素に対応する体裁定義情報を参照して左インデント値ｉｌ、右インデント値ｉｒ、１行目相対左インデント値ｆｉｌ、字送り量ｌｅｓ、行間値ｌｉｓをそれぞれ取得する。
【００３８】
ステップＳ４０２では、表示装置上に当該構成要素が形成する段落の占有領域幅ｄｗを取得する。占有領域幅ｄｗは、体裁定義情報に定義されている場合と、表示装置上の表示可能領域幅に依存する場合とがある。
ステップＳ４０３では、現在の行長ｌｌ及び現在の行数ｌｎの値を初期化する（ｌｌ＝ｉｌ＋ｆｉｌ、ｌｎ＝１）。
【００３９】
ステップＳ４０４では、渡されたノード識別子のノードを読み込む（カレントノードと呼ぶ）。
ステップＳ４０５では、カレントノードが、前に読み込んだノードよりも上位のノードか否かを判断する。前に読み込んだノードよりも上位である場合、ステップＳ４０６に移行する。前に読み込んだノードよりも下位であれば、ステップＳ４０７に移行する。
【００４０】
ステップＳ４０６では、表示属性変更フラグがＯＮか否かを判断する。ここで、表示属性変更フラグは、上位のノードにさかのぼった場合にそれ以前の下位のノードにおいて表示属性が変更されているかどうかを識別するフラグである。ステップＳ４０６で、表示属性変更フラグがＯＮである場合、前回読み込んだ下位のノードと表示属性が異なるのでステップＳ４０７に移行する。ＯＦＦである場合、前回読み込んだ下位のノードと表示属性が変わっていないので、後述するステップＳ４１３に移行する。
【００４１】
ステップＳ４０７では、配置バッファ領域に設定されている、文字サイズ、フォントなど文字修飾情報を取得する。
ステップＳ４０８では、スタイルシートを参照し、カレントノードが有する構成要素に対応する文字サイズ、フォントなどの文字修飾に関する体裁定義情報を取得する。
【００４２】
ステップＳ４０９では、現在の文字修飾情報と配置バッファ領域に設定されている文字修飾情報とが一致するか否かを比較する。一致していれば表示属性は変化していないのでステップＳ４１０へ移行し、ステップＳ４１０で表示属性変更フラグをＯＦＦにする。一致しなければ表示属性が変化しているものと判断して、ステップＳ４１１に移行する。
【００４３】
ステップＳ４１１では、現在のカレントノードに定義されている文字サイズ、フォントなどの文字修飾情報を、配置バッファ領域に設定する。
ステップＳ４１２では表示属性変更フラグをＯＮにする。
ステップＳ４１３では、カレントノードが当該段落形成要素を有するかどうかを判断する。当該段落形成要素を有しないならばステップＳ４１７に移行する。有していれば、ステップＳ４１４に移行する。
【００４４】
ステップＳ４１４では、次に下位の子供ノードが読み込まれるか否かを判断する。読み込めるならば、ステップＳ４１７に移行する。読み込めなければ、ステップＳ４１５に移行する。
ステップＳ４１５では、行数ｌｎから当該段落の表示装置上の占有領域の高さｄｈを求め（ｄｈ＝ｌｎ＊ｌｉｓ）、前記幅ｄｗとともに記憶する。
【００４５】
ステップＳ４１６では、メインルーチン２に対する配置完了通知をカレントノード識別子とともに送出し、処理を終了する。
ステップＳ４１７では、カレントノードの直接下位に、文字データを有するノードがあるか否かを判断し、あればステップＳ４１８に移行する。文字データを有するノードがなければステップＳ４０４に戻り、構造情報に従って次ノードを読み込む。
【００４６】
ステップＳ４１８では、文字データを取得する。
ステップＳ４１９では、取得した文字データの表示装置上の出力領域の幅ｗ及び高さｈを求め、カレントノードの識別子と共に図７の文字データ出力領域情報リストに書き込む。
ステップＳ４２０では、ステップＳ４１８で取得した文字データを加えた一連の文字データ列が、表示装置上で占有する領域の幅ｗｌを計算する。すなわち、ステップＳ４１９で求めた文字データの出力領域幅ｗと字送り量ｌｅｓとを、現在までの占有領域幅ｗｌに加算する。
【００４７】
ステップＳ４２１では、同階層レベルにおけるカレントノードの直接下位に、文字データを有するノードがあるかを判断し、あればステップＳ４１８に戻る。文字データを有するノードがなければステップＳ４２２に移行する。
ステップＳ４２２では、ステップＳ４１８で取得した一連の文字データ列が当該段落の形成途中の仮想行に入りきるかどうかを判断する。すなわち、ステップＳ４２０で計算した文字データ列の占有領域幅を現在の行長に足した値が、当該段落の最大行長（ｄｗ−ｉｌ−ｉｒ）を越えるかどうかを判断する。文字データ列の表示装置上の開始位置は、当該段落の最初の文字データ列であれば左インデント値に１行目相対左インデント値を加えた値（ｉｌ＋ｆｉｌ）で、２行目以降の最初の文字データ列であれば左インデント値（ｉｌ）で、行の途中であれば行長と字送り量との和（ｌｌ＋ｌｅｓ）で表される。文字データ列が当該段落の形成途中の仮想行に収まる場合、ステップＳ４２３に移行する。収まらない場合は、後述するステップＳ４２５の改行処理を行う。
【００４８】
ステップＳ４２３では、行長を（ｌｌ）から（ｌｌ＋ｌｅｓ＋ｗｌ）に更新する。
ステップＳ４２４では、ステップＳ４１８で取得した各文字データの表示装置上の出力領域の開始位置について、当該段落の表示装置上の占有領域の開始点を原点とする（ｘ，ｙ）座標で表される相対位置を求め、図７の文字データ出力領域情報リストに書き込む。
【００４９】
（５）改行処理サブルーチン
前記の配置処理のステップＳ４２２において、文字データ列が当該段落の形成途中の仮想行に収まらないと判断されると、図１５の改行処理サブルーチンが実行される。
まず、ステップＳ５０１では、カレント文字データ列中の最後尾の文字データを取り除いた文字データ列を生成する。改行処理サブルーチンの実行開始時点では、カレント文字データ列はステップＳ４２２より渡された文字データ列となる。
【００５０】
ステップＳ５０２では、削除された文字データを有するノードの識別子を記憶する。
ステップＳ５０３では、図７の文字データ出力領域情報を参照し、カレント文字データ列の表示装置上の占有領域の幅を求める。
ステップＳ５０４では、ステップＳ５０３で求めた文字データ列の占有領域幅を現在の行長（ｌｌ）に足した値が、当該段落の最大行長（ｄｗ−ｉｌ−ｉｒ）を超えるかどうかを判断し、超えなければステップＳ５０５に移行する。超えれば再びステップＳ５０１に戻り、文字データ列を短縮する。
【００５１】
ステップＳ５０５では、前記文字データ列に含まれる各文字データの段落内における出力領域の開始位置を、当該段落の表示装置上の占有領域開始位置を原点とする（ｘ，ｙ）座標で表される相対位置として求める。求めた（ｘ、ｙ）座標は、図７の文字データ出力領域情報リストに書き込む。
ステップＳ５０６では、ステップＳ４２２より渡された文字データ列に含まれる各文字データについて、段落内における出力領域の開始位置が計算されたか否かを判断する。計算されていなければステップＳ５０７に移行する。計算されていれば前記配置処理に戻る。
【００５２】
ステップＳ５０７では、行長を左インデント値ｉｌとし、行数をインクリメントする（ｌｌ＝ｉｌ、ｌｎ＝ｌｎ＋１）。
ステップＳ５０８では、ステップＳ５０２において記憶したノード識別子を基に、それが有する文字データから始まる残りの文字データ列をカレント文字データ列とし、ステップＳ５０３に戻る。
【００５３】
（６）前記配置処理を、図３に示す木構造を有する図２の構造化文書について、図６に示すように、文字データの出力領域の開始位置を、段落の占有領域の開始位置Ｐ１，Ｐ２…を基準とした、段落内における相対座標として求める場合を例に取って説明する。
前記メインルーチン１または新規構造情報配置処理から、段落形成要素を有するノード識別子「Ｎ２」が渡されると、表示装置上に形成される段落の占有領域の幅ｄｗ１を求め、行長さｌｌ＝ｉｌ＋ｆｉｌ、行数ｌｎ＝１とする（ステップＳ４０２，４０３）。さらに、読み込まれた構成要素「PARA1」の体裁定義情報に従って配置バッファ領域に表示属性を設定する（ステップＳ４０５〜Ｓ４１２）。ついで、ノード「Ｎ２」の直接下位に、文字データを含むノードが存在するかどうかを判断する（ステップＳ４１７）。構成要素「PARA１」を有するノードＮ２には、構成要素「emph」を有するノードが途中に存在するため、「emph」の上位の文字データ”こ”、”れ”、”は”を有するノードＮ２１，Ｎ２２，Ｎ２３のみから文字データを取得する（ステップＳ４１８）。
【００５４】
次いで、取得した文字データから、各文字データの表示装置上の出力領域の幅（ｗ１，ｗ２，ｗ３）及び高さ（ｈ１，ｈ２，ｈ３）を求めて文字データ出力領域情報リストに書き込み、文字データ列”これは”の出力領域の幅を求める（ｗｌ＝ｗ１＋ｗ２＋ｗ３＋２＊ｌｅｓ）。次いで、現在の行長ｌｌに文字列長さｗｌを足したものが、当該段落の最大行長（ｄｗ−ｉｌ−ｉｒ）を越していないかを判断する（ステップＳ４２２）。
【００５５】
入っていれば行長さを更新する（ｌｌ＝ｌｌ＋ｗｌ）。文字データ”こ”、”れ” 及び ”は”の出力領域の開始位置を、段落の占有領域の開始位置Ｐ１を基準とした（ｘ，ｙ）座標で求める。図６に示す例では、文字データ”こ”の出力領域の開始位置座標は（ｉｌ＋ｆｉｌ，ｌｉｓ−ｈ１）、”れ”の（ｉｌ＋ｆｉｌ＋ｗ１＋ｌｅｓ，ｌｉｓ−ｈ２）、”は”の（ｉｌ＋ｆｉｌ＋ｗ１＋ｗ２＋２＊ｌｅｓ，ｌｉｓ−ｈ３）となる。求めた開始位置の座標は図７の文字データ出力領域リストに書き込む（ステップＳ４２４）。
【００５６】
次に構成要素「emph」を有するノードＮ２４が読み込まれ、対応する体裁定義情報に従って表示属性が設定される。次いで、ノードＮ２４の直接下位には、文字データを含むノードが２つ存在するので（ステップＳ４１７）、文字データ”第”及び”１”を有するノードＮ２４１及びＮ２４２から文字データを取得する。前記と同様に、表示属性及び個々の文字データの表示装置上の出力領域の幅及び高さを求め、文字データ出力領域情報リストに書き込み、文字データ列”第１”の出力領域の幅ｗｌを求める。次いで、現在の行長（ｌｌ＋ｌｅｓ）を求め、文字データ列”第１”の出力領域の幅を足した値（ｌｌ＋ｌｅｓ＋ｗｌ）が当該段落の最大行長（ｄｗ−ｉｌ−ｉｒ）を越していないかを判断する。越していなければ、行長ｌｌを更新し、文字データ”第”及び”１”の出力領域の開始位置を求め、文字データ出力領域情報リストに書き込む。
【００５７】
次いで、構造情報に従って、再度上位の構成要素「PARA1」を有するノードＮ２を読み込み、ノードＮ１の直接下位の文字データ”段”、”落”…を取得する。取得した各文字データについてそれぞれ出力領域幅ｗ及び高さｈを求めて文字データ出力領域情報リストに書き込み、字送り量ｌｅｓを含めた文字データ列の出力領域の幅ｗｌを計算する。
【００５８】
求めた文字データ列の幅ｗｌと現在の行長（ｌｌ＋ｌｅｓ）との和（ｌｌ＋ｌｅｓ＋ｗｌ）が当該段落の最大行長（ｄｗ−ｉｌ−ｉｒ）を越えた場合、改行処理を行う。すなわち、文字データ列から最後尾の文字データを１つずつ取り除きながら、当該段落の形成途中の仮想行に収まるか否かを判断する。（ｌｌ＋ｌｅｓ＋ｗｌ）＜（ｄｗ−ｉｌ−ｉｒ）となった場合、最後に取り除かれた文字データ以降の文字データ列を次の行に配置する。図６の例では、文字データ列”これは…文字のフォ”までが１行目に収まり、文字データ列”ントファミリ名が…”が２行目以降に配置されることになる。また、１行目に配置された各文字データの出力領域の開始位置を、段落の占有領域の開始位置Ｐ１を基準とした（ｘ，ｙ）座標で求める。求めた開始位置の座標は図７の文字データ出力領域リストに書き込む。
【００５９】
次いで、行長を左インデント値ｉｌ、行数ｌｎ＝２、段落の高さをｌｎ＊ｌｉｓとし、
残りの文字データ列”ントファミリ名が…”の出力領域の幅ｗｌを求める。残りの文字データ列の出力領域の幅ｗｌが当該段落の最大行長（ｄｗ−ｉｌ−ｉｒ）を超える場合、再び文字データ列の最後の文字データを１つずつ取り除く。以下前記と同様の処理を行い、全ての文字データの出力領域の開始位置に関して段落の占有領域の開始位置Ｐ１を基準とする座標を求める。また、最後の行数ｌｎから、その段落の占有領域の高さｄｈがｌｎ＊ｌｉｓと求まる。
【００６０】
前記段落の占有領域幅ｄｗ１及び高さｄｈ１を記憶し、メインルーチン２に対する配置完了通知をノード識別子「Ｎ２」とともに送出する。この通知を受け、図１０の配置処理進行状態リストからノード識別子「Ｎ２」のエントリが削除される。また、段落形成要素「PARA1」から形成される段落の占有領域の幅及び高さが求まることにより、その弟ノードが有する段落形成要素「PARA2」から形成される段落の占有領域の開始位置Ｐ２が、表示装置上の原点Ｐ０より求まる。ここで、弟ノードとは、同階層レベルにおけるカレントノードの直接下位のノードをいう。
【００６１】
従って、例えばノードＮ２が有する段落形成要素「PARA1」の内容よりも先にノードＮ３が有する段落形成要素「PARA2」の内容が揃っていた場合、後者の配置処理を行っておき、前者の内容が揃い配置処理が完了次第、両者に含まれる文字データの出力領域の開始位置について表示装置上の絶対座標を算出し、出力処理を行えばよい。
【００６２】
＜他の実施形態例＞
（Ａ）前記の第１実施形態例では、段落内の各文字データの出力領域の開始位置を段落の占有領域開始位置Ｐ１，Ｐ２…を基準とする座標で表したが、他の方法も考えられる。
例えば、図１６に示すように、個々の文字データの出力領域の開始位置を、直前の文字データの出力領域の開始位置を基準とする座標で表すことも可能である。この場合、当該段落形成要素の最初の文字データの出力領域の開始位置は、段落の占有領域開始位置を基準とする座標で表せばよい。
【００６３】
（Ｂ）前記の第１実施形態例では、文字データ列が現在の行に収まらない場合に、文字データ列の最後尾から文字データを１つずつ取り除いているが、他の方法も可能である。
例えば、取得した文字データ列について、先頭の文字データから１つずつその出力領域の幅を足し、足すたびに文字データ列の出力領域が現在の行に収まるか否かを判断する。収まらなくなった時点でその文字データ以降を次の行以降に配置する。
【００６４】
【発明の効果】
本発明を用いれば、構造化文書の表示可能な部分から仮想的に表示処理を行うことにより、マニュアルや仕様書などの膨大なデータを持つ文書や、構成要素の内容がネットワーク上に分散して保管されている文書などであっても、構造化文書の構造を変えることなく表示を高速化することが可能になる。
【図面の簡単な説明】
【図１】  構造化文書システムＫＳの概念構造図。
【図２】  構造化文書の一例を示す説明図。
【図３】  図２に示す構造化文書を構造解析して得られる構造情報の説明図。
【図４】  図３に示す構造情報と関連付けられて定義される体裁定義情報。
【図５】  表示装置上に表示された図２の構造化文書。
【図６】  図２の構造化文書の仮想配置の一例を示す説明図。
【図７】  段落形成要素内における各文字データの出力領域のサイズと開始位置を示す文字データ出力領域情報リスト。
【図８】  構成要素の内容の構造解析の完結状態を示す構造解析完結状態リスト。
【図９】  ノード識別子と構成要素とが対応付けられたノードリスト。
【図１０】  段落形成要素を有するノードの配置処理の進行状態を示す配置処理進行状態リスト。
【図１１】  表示処理部が行うメイン処理１の流れを示すフローチャート。
【図１２】  表示処理部が行うメイン処理２の流れを示すフローチャート。
【図１３】  表示処理部が行う新規構造情報配置処理の流れを示すフローチャート。
【図１４】  表示処理部が行う配置処理の流れを示すフローチャート。
【図１５】  改行処理サブルーチンの処理の流れを示すフローチャート。
【図１６】  図２の構造化文書の仮想配置の他の一例を示す説明図。
【符号の説明】
１；構造化文書
２；体裁定義情報
３；出力処理部
４；表示装置
５；印刷装置
６；表示バッファ領域
７；印刷バッファ領域
８；配置バッファ領域
【図１】
0003793643.tif 000002
【図２】
0003793643.tif 000003
【図３】
0003793643.tif 000004
【図４】
0003793643.tif 000005
【図５】
0003793643.tif 000006
【図６】
0003793643.tif 000007
【図７】
0003793643.tif 000008
【図８】
0003793643.tif 000009
【図９】
0003793643.tif 000010
【図１０】
0003793643.tif 000011
【図１１】
0003793643.tif 000012
【図１２】
0003793643.tif 000013
【図１３】
0003793643.tif 000014
【図１４】
0003793643.tif 000015
【図１５】
0003793643.tif 000016
【図１６】
0003793643.tif 000017