(57)【要約】【課題】構造化文書に対して、プレーンテキスト表現で編集する際に、この編集中の構造化文書の文書構造木を作成して表示することができる構造化文書処理装置を提供する。【解決手段】構造化文書に含まれる複数のタグを一つずつ取得するタグ取得手段（Ｓ１０８）と、タグ取得手段が取得したタグをプレーンテキストで表示するテキスト表示手段（Ｓ１０９）と、タグ取得手段が取得したタグを文書構造木のノードに変換するノード変換手段（Ｓ１１０）と、テキスト表示手段に表示したタグと、ノード変換手段が変換したノードとを関連付けて関連テーブルとして記憶する記憶手段（Ｓ１１２）と、記憶手段が記憶した関連テーブルに基づいて、テキスト表示手段が表示したプレーンテキスト上にノードを表示する構造木表示手段と、を備えた。【選択図】  図４
2008181401.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書に含まれる複数のタグを一つずつ取得するタグ取得手段と、
前記タグ取得手段により取得されたタグをプレーンテキストで表示するテキスト表示手段と、
前記タグ取得手段により取得されたタグを文書構造木のノードに変換するノード変換手段と、
前記テキスト表示手段によりプレーンテキストで表示されたタグと、前記ノード変換手段により変換されたノードとを関連付けて関連テーブルとして記憶する記憶手段と、
前記記憶手段に記憶された関連テーブルに基づいて、前記テキスト表示手段により表示されたプレーンテキスト上に、前記ノード変換手段により変換されたノードを表示する構造木表示手段と、
を備えたことを特徴とする構造化文書処理装置。
【請求項２】
前記テキスト表示手段により表示されるプレーンテキストが変更された際に、
前記記憶手段は、前記関連テーブルに記憶された情報を全て削除し、
前記関連テーブルに記憶された情報を全て削除した後で、前記タグ取得手段が、前記テキスト表示手段に表示されているプレーンテキストに含まれる複数のタグを一つずつ取得するとともに、前記ノード変換手段が、前記タグ取得手段により取得されたタグを文書構造木のノードに変換し、そして前記記憶手段が、前記テキスト表示手段にプレーンテキストで表示されているタグと、前記ノード変換手段により変換されたノードとを関連付けて前記関連テーブルに再度記憶する再記録手段とを備えたことを特徴とする請求項１に記載の構造化文書処理装置。
【請求項３】
前記記憶手段は、前記テキスト表示手段により表示されたプレーンテキストの行番号情報により、前記テキスト表示手段によりプレーンテキストで表示されたタグと、前記ノード変換手段により変換されたノードとを関連付ける請求項１に記載の構造化文書処理装置。
【請求項４】
構造化文書に含まれる複数のタグを一つずつ取得するタグ取得ステップと、
前記タグ取得ステップにて取得されたタグをプレーンテキストで表示するテキスト表示ステップと、
前記タグ取得ステップにて取得されたタグを文書構造木のノードに変換するノード変換ステップと、
前記テキスト表示ステップにてプレーンテキストで表示されたタグと、前記ノード変換ステップにて変換されたノードとを関連付けて関連テーブルを作成するテーブル作成ステップと、
前記テーブル作成ステップにて作成された関連テーブルに基づいて、前記テキスト表示ステップにて表示されたプレーンテキスト上に、前記ノード変換ステップにて変換されたノードを表示する構造木表示ステップと、
をコンピュータに行わせることを特徴とする構造化文書処理プログラム。
【請求項５】
前記テキスト表示ステップにて表示されたプレーンテキストが変更された際に、
前記テーブル作成ステップにて作成された関連テーブル内の情報を全て削除する削除ステップと、
前記テキスト表示ステップにて表示されているプレーンテキストに含まれる複数のタグを一つずつ取得するタグ再取得ステップと、
前記タグ再取得ステップにて取得されたタグを前記文書構造木のノードに変換するノード再変換ステップと、
前記タグ再取得ステップにて取得されたタグと、前記ノード再変換ステップにて変換されたノードとを関連付けて前記関連テーブルに追加するテーブル再作成ステップと、
をコンピュータに行わせる請求項４に記載の構造化文書処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化文書を編集する際に、プレーンテキスト状態で編集中の構造化文書について文書構造木を作成して表示する構造化文書処理装置に関する。
【背景技術】
【０００２】
構造化文書処理システムにおいて、構造化文書をプレーンテキストの状態で表示しながら処理を行う際には、要素間の関連性が把握しにくく、要素間の関連性に関わる処理を行うのが難しい。このため、構造化文書を文書構造木の状態に変換することにより要素間の相対関係を明確にしてから、実際の要素間の関連性に関わる処理を行うことが一般的である。
【０００３】
例えば、構造化文書の文書構造木から複数の構造化文書間の要素を関連付ける処理を行う構造化文書処理システムが提案されている（特許文献１参照）。この構造化文書処理システムでは、構造化文書から文書構造木構築処理手段により文書構造木を生成している。このように構造化文書を木構造表現に変更することで様々な処理を実現することが可能となっている。
【特許文献１】特開２００４−３４８３４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
構造化文書処理システムにおいて、テキストエディタ等を用いてプレーンテキストの状態で構造化文書の編集等の処理を行う場合、プレーンテキストの状態では文書の構造に関連する処理を行うことができないため、一旦、木構造の表現に変換して構造木を作成した後に、再度プレーンテキストの表現に戻すことで、間接的に構造木を利用した処理を行う必要がある。
【０００５】
しかしながら、構造化文書の構造木表現とプレーンテキスト表現との間で要素同士を関連付けすることが困難であるという課題がある。
【０００６】
本発明は、上記課題を鑑みなされたもので、構造化文書に対して、テキストエディタ等を用いてプレーンテキストの状態で編集を行う際に、この編集中の構造化文書の文書構造木を作成して表示することができる構造化文書処理装置及び構造化文書処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明に係る構造化文書処理装置は、構造化文書に含まれる複数のタグを一つずつ取得するタグ取得手段と、前記タグ取得手段により取得されたタグをプレーンテキストで表示するテキスト表示手段と、前記タグ取得手段により取得されたタグを文書構造木のノードに変換するノード変換手段と、前記テキスト表示手段によりプレーンテキストで表示されたタグと、前記ノード変換手段により変換されたノードとを関連付けて関連テーブルとして記憶する記憶手段と、前記記憶手段により記憶された関連テーブルに基づいて、前記テキスト表示手段により表示されたプレーンテキスト上に、前記ノード変換手段により変換されたノードを表示する文書構造木表示手段と、を備えたことを特徴とする。
【発明の効果】
【０００８】
本発明に係る構造化文書処理装置及び構造化文書処理プログラムによると、プレーンテキスト表現の構造化文書から行番号に基づいて文書構造木のノードを取得することにより、構造化文書に対して、テキストエディタ等を用いてプレーンテキストの状態で編集を行う際に、この編集中の構造化文書の文書構造木を作成して表示することが可能となる。
【発明を実施するための最良の形態】
【０００９】
〔第１の実施の形態〕
本発明に係る構造化文書処理装置及び構造化文書処理プログラムの実施形態を、添付図面に基づいて詳細に説明する。なお、本発明に係る構造化文書処理装置及び構造化文書処理プログラムの実施形態として、処理対象となる構造化文書として、Ｗｅｂサービスを行うためのＢＰＥＬ（Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ）を用いた例について説明する。
【００１０】
図１は、本発明に係る構造化文書処理装置１のシステム構成図である。
【００１１】
構造化文書処理装置１は、データの制御や演算などの処理を行うＣＰＵ（中央処理装置）１０と、ＣＰＵ１０が処理するためのデータを一時的に記憶するＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）１１と、処理プログラムなどを記憶するＲＯＭ１２と、ネットワークを介してデータを入出力するネットワークインターフェース１３と、ＣＰＵ１０による処理対象となる構造化文書３０等を長期的に記憶しているハードディスク１４を制御するハードディスク制御回路１５と、プログラム等を記憶しているＣＤ−ＲＯＭを制御するＣＤ−ＲＯＭ制御回路１７とを含んでいる。さらにキーボードやマウス等の入力装置１８の制御を行う入力制御回路１９と、構造化文書３０やその情報を表示するディスプレイ等の表示装置２０を制御する表示器制御回路２１と、を備えている。
【００１２】
ＢＰＥＬは、「Ｗｅｂサービスのためのビジネスプロセス実行言語」という名前の通り、複数のＷｅｂサービスを組み合わせたビジネスプロセス（ワークフロー）を定義するためのＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ベースの言語であり、データの操作や、Ｗｅｂサービスの呼び出し、例外処理などの処理単位を組み合わせた複雑なフローを記述する際に用いられる。
【００１３】
図２に、構造化文書３０として、例えばＢＰＥＬ文書の内容を例示している。なお、図２において、各行の頭（左端）に行番号を表示している。構造化文書３０において、１つの処理要素はＸＭＬのタグの形で記述され、一連の処理内容や、要素の集合は、開始タグ（例えば「＜要素名＞」）と終了タグ（例えば「＜／要素名＞」）に挟まれる形で入れ子にされて表される。例えば、ワークフローの宣言を行う要素「ｐｒｏｃｅｓｓ」は、１行目の開始タグ「＜ｐｒｏｃｅｓｓ＞」と１９行目の終了タグ「＜／ｐｒｏｃｅｓｓ＞」によりワークフロー全体（２〜１８行目）が入れ子にされて表される。また、変数定義の集合を示す要素「ｖａｒｉａｂｌｅｓ」（５〜８行目）は、変数の定義「ｖａｒｉａｂｌｅ」（６、７行目）を入れ子にしている。
【００１４】
また、１つのタグで完結する要素は空要素と呼ばれている。例えば、変数の定義を行う「ｖａｒｉａｂｌｅ」（６、７行目）や、メッセージの受信を行う「ｒｅｃｅｉｖｅ」（１０行目）等が空要素である。また、各要素に必要な情報は属性と呼ばれ、各要素のタグ内において定義される。図２では、例えば「ｐｒｏｃｅｓｓ」（１行目）の「ｎａｍｅ」や「ｘｍｌｎｓ」等の情報が属性に当たる。
【００１５】
また、構造化文書３０は文書構造木の形で表される。構造化文書３０はＸＭＬ文書であるため、ＸＭＬの論理構造に基づいて文書構造木４０の形に変換される。図３は、図２に示す構造化文書３０について、属性部分を除いて、要素の関係のみを文書構造木４０の形で表したものである。文書構造木４０において各要素名の直後の括弧内に示された数字は、図２の構造化文書３０における行番号と対応している（実際の文書構造木には行番号は含まれない）。
【００１６】
ＸＭＬ文書のそれぞれの要素は、文書構造木４０の表現においてはノード４１と呼ばれる。以下、ＸＭＬ文書の要素を、構造化文書３０では要素やタグ、文書構造木４０ではノード４１と呼ぶ。
【００１７】
ここで、ノード４１の相対関係を示す時に、しばしば「親」「子」「子孫」「先祖」といった表現が利用される。親ノードは、対象となるノードの１つ上位のノードを指す。例えば、図３では、「ｖａｒｉａｂｌｅ（６）」の親ノードは「ｖａｒｉａｂｌｅｓ（５）」となる。また、子ノードは対象となる１つ下位のノードを指す。例えば、「ｖａｒｉａｂｌｅｓ（５）」の子ノードは「ｖａｒｉａｂｌｅ（６）」、及び「ｖａｒｉａｂｌｅ（７）」である。先祖ノードは、対象となるノードの全上位ノードを指す。子孫ノードは対象となるノードの全下位ノードを指す。また、「ｐｒｏｃｅｓｓ（１）」のように頂点のノードは、ルートノードと呼ばれる。構造化文書３０を文書構造木４０の形で表現することにより、各ノードの関係性が明確になるため、構造化文書３０に対する処理が容易に行われる。
【００１８】
構造化文書処理装置１は、この構造化文書３０をテキストエディタ上でプレーンテキストの状態で編集する際に、構造化文書３０から文書構造木４０を作成して、文書構造木４０の各ノード４１の関連性、すなわち構造化文書３０の要素の関連性をこのテキストエディタ上に表示する構造化文書処理を行う機能を有している。また、ＲＯＭ１２またはハードディスク１４は、この処理を行うためのプログラムである構造化文書処理プログラムを予め記憶している。
【００１９】
本発明に係る構造化文書処理装置１の第１の実施の形態として、構造化文書処理装置１による構造化文書処理について、図４、図６、図７に示すフローチャートを用いて説明する。この際、入力支援処理の各処理ステップにおいて、例えば「ステップＳ１０１」を「Ｓ１０１」のように、「ステップ」を省略して説明する。構造化文書３０から文書構造木４０を作成する構造木作成処理、及び、文書構造木４０を用いて各ノード４１の関連性を表示する関連性表示処理を行うことにより、構造化文書処理の機能が実現される。
【００２０】
なお、図２に示す構造化文書３０を処理対象とし、具体的には、メッセージ受信要素である「ｒｅｃｅｉｖｅ」（１０行目）についてメッセージを保存するための変数（属性）「ｖａｒｉａｂｌｅ」を設定する場合について説明する。
【００２１】
ＢＰＥＬでは、各要素から参照可能な変数は、参照する要素の先祖ノードの中で、変数を定義可能な要素（「ｐｒｏｃｅｓｓ」等）の子要素「ｖａｒｉａｂｌｅｓ」に記述されている「ｖａｒｉａｂｌｅ」と定められている。第１の実施の形態の場合、図３を参照すると「ｒｅｃｅｉｖｅ（１０）」の先祖ノードで変数を定義可能なノードは「ｐｒｏｃｅｓｓ（１）」であり、変数定義の集合である子ノード「ｖａｒｉａｂｌｅｓ（５）」の子ノードの「ｖａｒｉａｂｌｅ（６）」、「ｖａｒｉａｂｌｅ（７）」が参照対象として選択される。
【００２２】
始めに、図４に示すように、ＣＰＵ１０は、構造化文書の編集指示がされたか否かを判断する（Ｓ１０１）。この編集指示とは、例えば、構造化文書処理プログラムが起動されたりテキストエディタによって構造化文書３０を開かれたりすることによりなされるものである。構造化文書３０の編集指示がされていない場合（Ｓ１０１のＮｏ）は、ＣＰＵ１０は、構造化文書処理を行わずにそのまま待機する。
【００２３】
構造化文書３０の編集指示がされた場合（Ｓ１０１のＹｅｓ）は、ＣＰＵ１０は、ハードディスク１４から構造化文書３０のデータを取得する（Ｓ１０２）。この際、ＣＰＵ１０は、ハードディスク１４に限らず、ＣＤ−ＲＯＭから、あるいはネットワークインターフェース１３を介して構造化文書３０のデータを取得しても良い。
【００２４】
そして、ＣＰＵ１０は、構造化文書３０がスキーマを満たしているか否かを判断する（Ｓ１０３）。スキーマとは、文書の構造及びその内容に関する制約を規定するものである。すなわち、構造化文書３０を作成するためには、文書中でどのようなタグや属性が使われているかなど、具体的な文書構造を定義しなければならず、このデータ構造をスキーマと言う。
【００２５】
構造化文書３０がスキーマを満たしていない場合（Ｓ１０３のＮｏ）、ＣＰＵ１０は、文書構造木４０を作成することができないため構造化文書処理を行わず、通常のテキスト編集処理の際と同様に、この構造化文書３０を表示装置２０にテキストエディタ利用して表示させる（Ｓ１０４）。
【００２６】
構造化文書３０がスキーマを満たしている場合（Ｓ１０３のＹｅｓ）、ＣＰＵ１０は、構造化文書３０の文書構造木４０を作成する（Ｓ１０５）。この文書構造木４０は、ＲＡＭ１１に記憶される。なお、Ｓ１０５の時点では、文書構造木４０にはノードが設定されていない。
【００２７】
また、ＣＰＵ１０は、構造化文書３０から関連テーブル５０を作成する（Ｓ１０６）。すなわち、テキストエディタ上で構造化文書３０におけるノード４１の関連性を参照するためには、対象となる構造化文書３０から文書構造木４０を作成するとともに、プレーンテキストで示された構造化文書３０の各タグと文書構造木４０のノード４１とを関連付ける必要がある。このためＣＰＵ１０は、図５に示すように、行番号情報５１と文書構造木４０のノード情報５２とを関連付けて、関連テーブル５０としてＲＡＭ１１に記憶する。なお、Ｓ１０６の時点において関連テーブル５０にはデータが格納されておらず、空の状態である。
【００２８】
ＣＰＵ１０は、構造化文書３０からデータをタグ単位で取得してノード４１に変換していくが、その際に、構造化文書３０に未だノード４１に変換されていないタグがあるか否かを判断する（Ｓ１０７）。ノード４１に変換されていないタグがある場合（Ｓ１０７のＹｅｓ）は、ＣＰＵ１０は、そのタグを取得する（Ｓ１０８）。以下、このタグをＴａｇ＿Ｎと呼ぶ。なお、このステップＳ１０８の処理がタグ取得手段である。
【００２９】
ＣＰＵ１０は、この読み込んだタグＴａｇ＿Ｎを、テキストエディタを利用して表示装置２０に表示する（Ｓ１０９）。すなわち、このＳ１０９がテキスト表示手段である。また、ＣＰＵ１０は、このタグＴａｇ＿Ｎを文書構造木４０で利用するためのノードＮｏｄｅ＿Ｎに変換する（Ｓ１１０）。すなわち、図２に示すプレーンテキスト表示の構造化文書３０のタグを、図３に示す文書構造木４０のノード４１に変換する。このステップＳ１１０の処理がノード変換手段である。
【００３０】
ＣＰＵ１０は、テキストエディタにおいてタグＴａｇ＿Ｎが記述されている行番号を取得する（Ｓ１１１）。またＣＰＵ１０は、Ｓ１１０で変換して得たノードＮｏｄｅ＿Ｎのノード情報５２とＳ１１１で取得した行番号の行番号情報５１とを、それぞれ関連付けてＳ１０６で作成した関連テーブル５０に記憶する（Ｓ１１２）。タグが数行に渡り記述されている場合は、すべての行番号を行番号情報５１として関連テーブル５０に記憶する。このステップＳ１１２の処理が記憶手段である。またテーブル作成ステップでもある。
【００３１】
そして、ＣＰＵ１０は、構造化文書３０の論理構造に基づき、ノードＮｏｄｅ＿ＮをＳ１０５で作成した文書構造木４０の適切な位置に追加する（Ｓ１１３）。
【００３２】
ＣＰＵ１０は、一つのタグについてＳ１０８〜Ｓ１１３の処理を行うと、再びＳ１０７に戻り、構造化文書３０に未だノード４１に変換されていないタグがあるか否かを判断する（Ｓ１０７）。ＣＰＵ１０は、構造化文書３０の全てのタグについてＳ１０８〜Ｓ１１３の処理を行い、構造化文書３０にノード４１に変換されていないタグがなくなった場合（Ｓ１０７のＮｏ）に、構造木作成処理を終了する。
【００３３】
ＣＰＵ１０は、このように構造木作成処理を行うことにより、文書構造木４０を用いて、ノード４１の関連性を表示させる関連性表示処理を行うことが可能となる。以下、構造化文書処理装置１による関連性表示処理について説明する。
【００３４】
まず、図６に示すように、ＣＰＵ１０は、テキストエディタ上においてデータ取得メニューの表示指示がされたか否かを判断する（Ｓ２０１）。データ取得メニュー表示指示は、例えば、表示装置２０上に特定のキーボードのキーが入力されたりマウスの右ボタンがクリックの指示がされたことに基づき指示がなされる。データ取得メニュー６１の表示指示がされなかった場合（Ｓ２０１のＮｏ）は、ＣＰＵ１０は、関連性表示処理を行わずに、そのまま待機する。
【００３５】
データ取得メニューの表示指示がされた場合（Ｓ２０１のＹｅｓ）は、ＣＰＵ１０は、テキストエディタの現在作業中の位置、すなわちカレントが指す行番号を取得する（Ｓ２０２）。また、ＣＰＵ１０は、構造木作成処理によって作成された関連テーブル５０に、Ｓ２０２で取得した行番号情報５１及びこの行番号情報５１に関連付けられたノード情報５２が存在するか否かを判断する（Ｓ２０３）。行番号情報５１及びノード情報５２が存在しなかった場合（Ｓ２０３のＮｏ）は、ＣＰＵ１０は、ノード４１の関連性を表示することができないので、関連性表示処理を終了する。
【００３６】
行番号情報５１及びノード情報５２が存在した場合（Ｓ２０３のＹｅｓ）は、ＣＰＵ１０は、構造木作成処理によって作成された関連テーブル５０から、Ｓ２０２で取得した行番号情報５１に関連付けられたノード情報５２を取得する（Ｓ２０４）。このＳ２０４で取得されたノード４１を、例えばノードＮｏｄｅ＿Ｔとする。また、ＣＰＵ１０は、データ取得メニューを表示する（Ｓ２０５）。データ取得メニュー６１は、図８に示すように、テキストエディタ上に「切り取り」、「コピー」、「貼り付け」、「データ参照」等の処理のメニューをリストとして示したものである。
【００３７】
ＣＰＵ１０は、データ取得メニュー６１の「データ参照」（または「データ参照」のリストとして表示されるノード４１）が選択されたか否かを判断する（Ｓ２０６）。「データ参照」が選択されていない場合（Ｓ２０６のＮｏ）は、ＣＰＵ１０は、そのまま待機する。
【００３８】
ＣＰＵ１０は、Ｓ２０４で取得したノードＮｏｄｅ＿Ｔに基づいて、関連するノード４１のリストを取得する関連リスト取得処理を行う（Ｓ２０７）。この関連リスト取得処理については、後で説明する。ＣＰＵ１０は、Ｓ２０７の関連リスト取得処理により関連リストが取得できたか否かを判断する（Ｓ２０８）。関連リストが取得できなかった場合（Ｓ２０８のＮｏ）、すなわち後述するＳ３０６にてエラーが発生した場合は、ＣＰＵ１０は、関連性表示手段を終了する。
【００３９】
関連リストが取得できた場合（Ｓ２０８のＹｅｓ）は、ＣＰＵ１０は、この関連リストを表示する（Ｓ２０９）。このステップＳ２０９の処理が構造木表示処理である。このステップＳ２０９の処理により具体的表示内容（図８及び図９）に関しては後述する。
【００４０】
このようにテキストエディタにノード４１の関連性を表示することにより、ユーザが構造化文書３０の編集を行う際に、参照することが可能となる。
【００４１】
ここで、構造化文書処理装置１による関連リスト取得処理について、図７に示すフローチャートに基づいて説明する。
【００４２】
まず、ＣＰＵ１０は、ＲＡＭ１１に記憶された関連テーブル５０を取得する（Ｓ３０１）。ＣＰＵ１０は、Ｓ３０１で取得した関連テーブル５０から、それぞれ関連付けられた行番号情報５１とノード情報５２との組を順次取得していく。まずＣＰＵ１０は、未だ取得されていない組があるか否かを判断する（Ｓ３０２）。未だ取得されていない組がある場合（Ｓ３０２のＹｅｓ）は、ＣＰＵ１０は、その行番号情報５１とノード情報５２との組を１つ取得する（Ｓ３０３）。ＣＰＵ１０は、Ｓ２０２で取得したカレントの行番号とＳ３０３で関連テーブル５０から取得した行番号情報５１とが一致するかを否かを判断する（Ｓ３０４）。行番号が一致しなかった場合（Ｓ３０４のＮｏ）は、Ｓ３０２に戻り、ＣＰＵ１０は、未だ取得されていない行番号情報５１とノード情報５２との組があるか否かを判断する（Ｓ３０２）。
【００４３】
ＣＰＵ１０は、Ｓ３０２〜Ｓ３０４の処理をＳ３０４で行番号が一致するまで行い、行番号が一致した場合（３０４のＹｅｓ）、ＣＰＵ１０は、関連テーブル５０からこの行番号情報５１に関連付けられたノード情報５２を関連リストとして取得する（Ｓ３０５）。
【００４４】
なお、Ｓ３０３にて関連テーブル５０の行番号情報５１とノード情報５２との組を全て取得したが、Ｓ３０４にて行番号が一致する組を取得できなかった場合（Ｓ３０２のＮｏ）は、ＣＰＵ１０はエラーを発生させる（Ｓ３０６）。ただし、ＣＰＵ１０は、関連テーブル５０に構造化文書３０におけるすべての行番号情報５１及びノード情報５２を格納するため、このエラーが発生するのは関連テーブル５０または文書構造木４０の作成処理に失敗した場合に限られる。
【００４５】
この構造化文書処理装置１における関連性表示処理によると、図８に示すように、表示装置２０の表示画面６０データ取得メニュー６１を表示する際にテキストエディタ１０行目にカレントが存在した場合、ＣＰＵ１０は、関連テーブル５０において１０行目に関連付けられたノード「ｒｅｃｅｉｖｅ」を取得する。そして、ＣＰＵ１０は、データ取得メニュー６１の項目としてノード「ｒｅｃｅｉｖｅ」の属性のうち、構造化文書３０内で定義が行われている「ｐａｒｔｎｒＬｉｎｋ」、「ｖａｒｉａｂｌｅ」が参照可能な属性として表示される。データ取得メニュー６１は当該カレントの位置にデータ取得カレント６１が覆うことの無いように制御されている。
【００４６】
さらに、図８に示すデータ取得メニュー６１において、ＣＰＵ１０が、ノード「ｖａｒｉａｂｌｅ」が選択されるのを認識すると、ＣＰＵ１０は、図９に示すように、このノード「ｖａｒｉａｂｌｅ」を基に関連リスト取得処理により参照対象となる変数（例えば「Ｍｒｅｑｕｅｓｔ」及び「Ｍｒｅｓｐｏｎｓｅ」）を取得し、これらの変数をデータ取得メニュー６１に表示する。
【００４７】
実施形態として、構造化文書３０を用いた例に関して説明したが、これに限らず、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）文書やその他のＸＭＬ文書等、構造化文書であれば構わない。
【００４８】
本発明に係る構造化文書処理装置１及び構造化文書処理プログラムの第１の実施の形態によると、プレーンテキスト表現の構造化文書から行番号に基づいて文書構造木４０のノード４１を取得することにより、構造化文書に対して、テキストエディタ６０等を用いてプレーンテキストの編集を行っている際に、この編集中の構造化文書の文書構造木４０を作成して表示することが可能となる。
【００４９】
〔第２の実施の形態〕
次に、本発明に係る構造化文書処理装置１の第２の実施の形態として、構造化文書処理装置１による構造化文書処理の別の実施の形態について、説明する。
【００５０】
構造化文書処理装置１の第１の実施の形態では、構造化文書処理において、構造木作成処理を始めに一回行った後にこの構造木を用いて関連性表示処理が行われたが、構造化文書３０内の要素が追加・削除されるなどの編集（変更）が発生した場合や文書構造木４０に対し処理を実施した場合に、関連テーブル５０に矛盾が発生し、関連付けが機能しなくなる。
【００５１】
そこで、第２の実施の形態では、第１の実施の形態の構造木作成処理を行った上で、その後テキストエディタにおいて構造化文書３０が編集された際に構造木を作成し直す構造木更新処理について説明する。構造化文書処理装置１の第２の実施の形態における関連リスト表示処理は、第１の実施の形態と同様に、図６及び図７に示すフローチャートの手順で行われる為、説明を省略する。
【００５２】
構造化文書３０内の要素が追加・削除されるなどの編集（変更）が発生した場合の構造木更新処理について図１０を用いて説明をする。始めに、ＣＰＵ１０は、テキストエディタ６０上で構造化文書３０が編集されたか否かを判断する（Ｓ４０１）。構造化文書３０が編集されていない場合（Ｓ４０１のＮｏ）、ＣＰＵ１０は構造木更新処理を行わずそのまま終了する。この編集されたか否かの判断は、編集後にカレントが行を移動した際に行っても、キーボードの所定のキーが押されたり所定のボタンが押されたりした際に行っても良い。また、所定時間毎に行っても良い。
【００５３】
構造化文書３０が編集された場合（Ｓ４０１のＹｅｓ）は、ＣＰＵ１０は、Ｓ１０５で作成された関連テーブル５０から全ての行番号情報５１及びノード情報５２を削除することにより、関連テーブル５０を空にする（Ｓ４０２）。すなわち記憶手段によって記憶された情報を全て削除する。これは、関連テーブル５０を構築するための初期化作業に当たる。またＣＰＵ１０は、テキストエディタ６０に表示されている構造化文書３０を取得する（Ｓ４０３）。
【００５４】
ＣＰＵ１０は、図４のＳ１０７と同様に、Ｓ４０３で取得した構造化文書３０において、ノード４１に変換されていないタグがあるか否かを判断する（Ｓ４０４）。ノード４１に変換されていないタグがある場合（Ｓ４０４のＹｅｓ）は、ＣＰＵ１０は、Ｓ１０８と同様に、そのタグを取得する（Ｓ４０５）。ＣＰＵ１０は、Ｓ１１０と同様に、Ｓ４０５が取得したタグを文書構造木４０のノード４１に変換する（Ｓ４０６）。また、ＣＰＵ１０は、Ｓ１１１と同様に、テキストエディタ上でＳ４０５で取得したタグが記述されている行番号を取得する（Ｓ４０７）。
【００５５】
ＣＰＵ１０は、Ｓ１１２と同様に、Ｓ４０６で変換したノード４１のノード情報５２とＳ４０７で取得した行番号の行番号情報５１とを関連付けて関連テーブル５０に記憶する（Ｓ４０８）。テキストエディタ６０において、タグが数行に渡り記述されている場合は、すべての行番号を行番号情報５１として関連テーブル５０に登録する。そして、ＣＰＵ１０は、Ｓ１１３と同様に、構造化文書３０の論理構造に基づき、Ｓ４０６で変換したノード４１をＳ１０５で作成した文書構造木４０の適切な位置に追加する（Ｓ４０９）。すなわちＳ４０５〜Ｓ４０９は再記録手段であり、Ｓ１０８、Ｓ１１０〜Ｓ１１３と同様な処理を行う。
【００５６】
ＣＰＵ１０は、一つのタグについてＳ４０５〜Ｓ４０９の処理を行うと、再びＳ４０４に戻り、構造化文書３０に未だ取得されていないタグがあるか否かを判断する（Ｓ４０４）。ＣＰＵ１０は、構造化文書３０の全てのタグについてＳ４０５〜Ｓ４０９の処理を行い、テキストエディタ６０上の構造化文書３０に未だ取得されていないタグがなくなった場合（Ｓ４０４のＮｏ）に、構造木更新処理を終了する。
【００５７】
本発明に係る構造化文書処理装置１及び構造化文書処理プログラムの第２の実施の形態によると、構造化文書３０がテキストエディタ６０上で編集された場合においても、文書構造木４０ならびに関連テーブル５０を同期して更新することができ、関連リスト表示処理を行う際に、常に正しい文書構造木４０の関連性を表示することが可能となる。
【００５８】
また、第１の実施の形態では、構造化文書３０がスキーマを満たさない場合に文書構造木４０のノード４１の関連性を表示できなくなるが、第２の実施の形態において、文書構造木４０及び関連テーブル５０がテキストエディタ６０上での編集毎に更新されるため、当初にスキーマを満たさない構造化文書３０であっても、テキストエディタ６０上で構造化文書３０をスキーマを満たすように編集することにより、文書構造木４０のノード４１の関連性を表示することが可能となる。
【００５９】
なお、実施形態では、装置内部に発明を実施する機能が予め記録されている場合で説明をしたが、これに限らず、同様の機能をネットワーク３から装置にダウンロードしても良いし、同様の機能を記録媒体に記憶させたものを装置にインストールしてもよい。
【００６０】
記録媒体としては、ＣＤ−ＲＯＭ１６等プログラムを記憶でき、かつ装置が読み取り可能な記録媒体であれば、その形態は何れの形態であっても構わない。
【００６１】
また、このように予めインストールやダウンロードにより得る機能は、装置内部のＯＳ（オペレーティング・システム）等と協働してその機能を実現させるものであってもよい。
【図面の簡単な説明】
【００６２】
【図１】本発明に係る構造化文書処理装置のシステム構成図。
【図２】プレーンテキスト表現の構造化文書の例を示す図。
【図３】構造化文書の文書構造木表現の例を示す図。
【図４】構造化文書処理装置による構造木作成処理の手順を示すフローチャート。
【図５】関連データの例を示す図。
【図６】構造化文書処理装置による関連性表示処理の手順を示すフローチャート。
【図７】構造化文書処理装置による変数参照処理の手順を示すフローチャート。
【図８】データ取得メニュー表示時のテキストエディタ画面を示す画面図。
【図９】参照可能な変数の表示時のテキストエディタ画面を示す画面図。
【図１０】構造化文書処理装置による構造木作成処理の手順を示すフローチャート。
【符号の説明】
【００６３】
１  構造化文書処理装置
４１  ノード
５０  関連テーブル
６１  データ取得メニュー
Ｓ１０８  タグ取得手段
Ｓ１０９  テキスト表示手段
Ｓ１１０  ノード変換手段
Ｓ１１２  記憶手段
Ｓ２０９  構造木表示手段
【図１】
2008181401.tif 000003
【図２】
2008181401.tif 000004
【図３】
2008181401.tif 000005
【図４】
2008181401.tif 000006
【図５】
2008181401.tif 000007
【図６】
2008181401.tif 000008
【図７】
2008181401.tif 000009
【図８】
2008181401.tif 000010
【図９】
2008181401.tif 000011
【図１０】
2008181401.tif 000012