(57)【要約】【課題】  手続きを記述したスクリプトを用いることなしに、構造文書から文書部品を抽出し、各文書部品を雛型文書中に挿入・置換して、文書合成処理を行う。【解決手段】  構造化文書中には、文書部品を取り出す抽出命令と、反復複写と挿入置換命令が付与されている。したがって、文書部品の取り出しの指定と、反復複写の指定と、文書部品を挿入または置換する文書部品（個所）の指定を行ない、入力した複数の構造化文書から取り出した命令を動的に合成して文書処理記述を作成するようにした結果、文書処理記述スクリプトが不要となる。したがって、元の文書と別にスクリプトを管理するという手間が省略される。【選択図】  図１
2006309792.tif 000002
【特許請求の範囲】
【請求項１】
構造的に表現され１以上の文書部品を含んだ構造化文書を処理するための構造化文書処理システムであって、
構造化文書の構造を解析して構文解析木を生成する解析手段と、
前記解析手段により生成された構文解析木を基に構造化文書に付与された命令と文書部品を分離して命令を取り出すとともに、命令の文法的なエラーを検出してエラー情報を出力する命令分離手段と、
エラー情報を入力してエラー通知を行なう文書を合成するエラー通知文書合成手段と、
構造化文書から取り出された各命令を併合・整列して構造化文書を処理するための命令列からなる文書処理記述を生成するとともに、エラー通知文書へのアクセス情報を生成する処理起動記述合成手段と、
処理起動記述を解釈して、エラー通知文書を取り出す処理起動記述解析手段と、
エラー通知文書を保持する保持手段と、
を具備することを特徴とする構造化文書処理システム。
【請求項２】
コンピュータを用いて構成される構造化文書処理システム上で、構造的に表現され１以上の文書部品を含んだ構造化文書を処理するための構造化文書処理方法であって、
前記コンピュータが備える解析手段が、構造化文書の構造を解析して構文解析木を生成する解析ステップと、
前記コンピュータが備える命令分離手段が、前記解析ステップにおいて生成された構文解析木を基に構造化文書に付与された命令と文書部品を分離して命令を取り出すとともに、命令の文法的なエラーを検出してエラー情報を出力する命令分離ステップと、
前記コンピュータが備えるエラー通知文書合成手段が、エラー情報を入力してエラー通知を行なう文書を合成するエラー通知文書合成ステップと、
前記コンピュータが備える処理起動記述合成手段が、構造化文書から取り出された各命令を併合・整列して構造化文書を処理するための命令列からなる文書処理記述を生成するとともに、エラー通知文書へのアクセス情報を生成する処理起動記述合成ステップと、
前記コンピュータが備える処理起動記述解析手段が、処理起動記述を解釈して、エラー通知文書を取り出す処理起動記述解析ステップと、
前記コンピュータが備える保持手段が、エラー通知文書を保持する保持ステップと、
を具備することを特徴とする構造化文書処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書を章、節、段落、図表、あるいは表題や章題、概要などの複数の素片に分解し各素片をノードとするツリー構造やグラフ構造などのように構造的に表現して取り扱う構造化文書の処理技術に係り、特に、複数の構造化文書を基にして新たに文書を合成する構造化文書の処理技術に関する。
【０００２】
さらに詳しくは、本発明は、複数の構造文書から特定の条件を満たす文書部分（「文書部品」）を取り出すとともに文書部品を別の文書中に挿入又は置換して合成を行なう構造化文書の処理技術に係り、構造化文書から文書部品を抽出したり、各文書部品を雛型文書中に挿入又は置換したりする手続きを記述したスクリプトを用いることなしに文書の合成処理を行なう構造化文書の処理技術に関する。
【背景技術】
【０００３】
一般に、文書がテキスト文字列のみで構成されることは稀であり、章や節、段落という区切りを持ったり、図表などのコンテンツが挿入されていたり、あるいは表題や章題、概要などの素片を含むことが多い。
【０００４】
このため、単一の文書を章、節、段落、図表、あるいは表題や章題、概要などの複数の素片に分解し、各素片をノードとするツリー構造やグラフ構造などのように構造的に表現して取り扱う文書処理技術が開発されてきた。このように構造化された文書は一般に「構造化文書」と呼ばれ、計算機システムを用いてさまざまの処理を行なうことが可能である。
【０００５】
構造化文書では、各ノードとリンクで表現される親子関係は、文書の論理的な構造を表現する。例えば、「章題」、「図」、「章」などの属性が付与されたノードに対して、印刷のため各ノードの単位のレイアウト処理や、版下作成の処理、ノードの属性を手がかりにして抄録集や目次を自動的に作成する処理などが可能になる。
【０００６】
現在、構造化文書を記述するフォーマットとしては、ＳＧＭＬ（Ｓｔａｎｄａｒｄ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）やＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ＨＴＭＬ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）などの記述言語がよく知られている。例えば、ＨＴＭＬは、表（ＴＡＢＬＥ）や箇条書き（ＵＬ）を指示する記法がある。
【０００７】
プレーンなテキスト・ファイルに構造を指示する方法の１つとして、マークアップと呼ばれる方法がある。マークアップは、あらかじめ取り決められた規則に基づいて、特定の論理的な構造の開始を表すタグ記号と終了を表すタグ記号で文書の一部分を挟むことで構造を定める。例えばＨＴＭＬでは、箇条書きの開始タグを＜ＵＬ＞とし、終了タグを＜／ＵＬ＞として、箇条を立てる項目の開始タグを＜ＬＩ＞終了タグを＜／ＬＩ＞とすると、次のように表記される。
【０００８】
【数１】
2006309792.tif 000003
【０００９】
このような構造化文書に対して、文書の構造を利用した検索を行なって、複数の文書から特定の条件を満たす文書部分（以下では、「文書部品」と呼ぶ）を取り出し、取り出した文書部品を別の文書中に挿入して合成を行なう方式が提案されている。例えば、ツリー又はグラフで表現された構造化文書に対して、ノードとして表される文書部品（同公報中では「構成子」と呼ばれている）のタイプを指定して検索するｓｅｌｅｃｔ−ｔｙｐｅ命令によって、所定の属性を持つ文書部品を取り出して、第２の文書に挿入すること文書処理方式について提案がなされている（例えば、特許文献１を参照のこと）。例えば、ｓｅｌｅｃｔ−ｔｙｐｅ命令の引数として、‘Ｆｉｇｕｒｅ’や‘Ｓｅｇｍｅｎｔ’を指定することで、それぞれ図と節を検索して取り出すことができる。また、文書部品の挿入に関しては、挿入先の文書の特定のノードを指定し、指定したノードの末子に挿入する例が記述されている。また、ノードの親子関係を判定して、これによって特定の構造パターンを有するノードを検索することができる。
【００１０】
富士ゼロックス株式会社の製品“Ａｋａｎｅ”は、ウィンドウ・システム上で動作する構造化文書エディタを中心とした文書処理アプリケーション・ソフトウェアである。Ａｋａｎｅの周辺ツールとして、文書処理コマンド・セットが提供されている。「Ａｋａｎｅ文書操作コマンドセットプログラマーズガイド」第３章応用事例（ｐ．２−９５〜２−９６）には、文書の論理構造をパターンで指定して、特定の条件を満たす構造を有するノードを文書部品として取り出し、１つの文書として合成する例が記述されている。
【００１１】
このように、あらかじめ検索式を指定したプログラムと、検索結果として取り出された文書部品を処理するプログラムをパイプラインで結合し、入力とする原料文書から、特定の条件を満たす文書部品を取り出して新たな構造化文書や文書部品を合成することができる。
【００１２】
ＸＭＬが構造化文書を記述可能な言語であることは既に述べた通りである。「ＸＭＬ開発事例」（株式会社ＡＳＣＩＩ  ＩＳＢＮ４−７５６１−３１１２−３）には、ＸＭＬで記述された構造化文書を入力し、処理を行なうＸＳＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｓｔｙｌｅｓｈｅｅｔ  Ｌａｎｇｕａｇｅ）言語とそのプロセッサによる構造化文書の扱いが開示されている。ＸＳＬの構文は、例えば次のような構造をとる。
【００１３】
【数２】
2006309792.tif 000004
【００１４】
ここで、［ｐａｔｔｅｒｎ］は、処理の対象とする文書部品の検索式を記述する。また、［ａｃｔｉｏｎ］は、検索された文書部品に対する処理を記述する。検索式の例を以下に示す。
【００１５】
【数３】
2006309792.tif 000005
【００１６】
＜ｔａｒｇｅｔ−ｅｌｅｍｅｎｔ  ｔｙｐｅ＝“ｓｅｃｔｉｏｎ”／＞は、検索する文書部品のノードの型が“ｓｅｃｔｉｏｎ”であり、次の＜ｅｌｅｍｅｎｔ  ｔｙｐｅ＝“ｆｉｇｕｒｅ”＞は、文書部品のノードの型が“ｆｉｇｕｒｅ”である子ノードを含むように限定することを示す検索式である。
【００１７】
また、次に示す例は、ノードの型が“ｅｍｐｌｏｙｅｅ”であって、且つ、親ノードの型が“ｐｅｒｓｏｎ”であるような文書部品を検索する式である。
【００１８】
【数４】
2006309792.tif 000006
【００１９】
このように、検索式と、検索結果として取り出された文書部品を処理するアクションとをあらかじめ記述したスクリプトを解釈実行することで、入力とする原料文書から、特定の条件を満たす文書部品を取り出して新たな構造化文書や文書部品を合成することができる。
【００２０】
また、構造化文書から複数の文書部品を抽出して列にして出力する部分構造列抽出部と、文書部品の列を入力して処理を行なう処理実行部を備えた構造化文書処理装置について提案がなされている（例えば、特許文献２を参照のこと）。かかる構成の文書処理装置によれば、抽出指示部と処理指示部を別々に管理することで、原料とする文書の構造の変更に対して、文書処理の変更を抽出指示部だけにとどめることができる。例えば、上記した各従来技術に対してシステムや文書の改変と維持管理が簡単になる。
【００２１】
上述した従来技術は、要するに図２６又は図２７のようなシステム構成となる。例えば、図２６に示す構造文書処理システムの場合、まず、原料文書と雛型文書（テンプレート）が抽出／合成プログラムに投入される。抽出／合成プログラムは、原料文書からの文書部品の抽出や雛型文書への文書部品の挿入・置換などの手続きをスクリプト形式で記述した「抽出／合成スクリプト」に従って処理を実行し、合成文書を生成する。
【００２２】
また、図２７に示す構造文書処理システムの場合、まず、抽出プログラムが抽出スクリプトで記述された手続きに従い原料プログラムから文書部品の抽出処理を行なう。抽出された各文書部品は、雛型文書とともに合成プログラムに投入される。そして、合成プログラムは、合成スクリプトで記述された手続きに従って各文書部品の雛型文書への挿入・置換処理を実行して、合成文書を生成する。
【００２３】
これら上記した技術はいずれも、原料文書から文書部品を抽出するための手続きを記述したスクリプト（抽出スクリプト）や、結果として出力する文書の基になる雛形文書に対して、原料文書から抽出した文書部品を挿入又は置換するためのスクリプト（合成スクリプト）を使用するものである。言い換えれば、これら従来技術は、元の文書とは別にこれらスクリプトを管理する必要があり、以下に示す問題を包含する。
【００２４】
１． 原料から文書部品を取り出すため、文書部品の構造やパターンを特定する検索式をスクリプト中に記述する必要がある。したがって、原料文書の構造を変更すると、スクリプト中の検索式もこれに合わせて変更しなくてはならない。
【００２５】
２．構造が異なる複数の原料文書を混在させて処理するには、異なる構造毎にスクリプトを用意しなくてはならない。
【００２６】
３．文書部品の構造やパターンを特定する検索式や、取り出した文書部品を処理する手順を手続きとして記述することが難しい。一般には、「条件Ａを満たす文書部品を検索して、得られた結果に処理Ｂを行なう」という手続き的な指示をスクリプトとして記述する必要がある。また、文書部品の数が原料文書によって変わる場合に、文書部品の数を数え、繰り返しを行なうｆｏｒ文やｒｅｐｅａｔ文などの繰り返し命令と、所望の処理を実際に行なう命令（例えば挿入命令）とを組み合わせて、繰り返し処理（例えば挿入や置換）を行なう指示をスクリプトとして記述する必要がある。このような記述やスクリプトの作成には、プログラミングの相当程度の知識が必要であり、一般ユーザが広く行なうことは難しく、あまり普及しないと思料される。
【００２７】
４． 文書処理の中間結果（例えば検索処理によって抽出された文書部品）を簡単に再利用する機構について言及していない。例えば、上述したＡｋａｎｅの場合には、中間結果をファイルに保存するスクリプトを明示的に記述する必要がある。
【００２８】
第１の問題点に関しては、原料文書の構造を変更した際に、これを処理するスクリプトを網羅的に探す必要があり、スクリプトの変更を忘れると文書処理が動作不良を起こすなどの不具合が発生する。
【００２９】
また、第２の問題点に関しては、構造が相違する入力文書毎にそれを処理する専用のスクリプトの開発とその維持管理に手間や労力が掛かるという不具合がある。また、利用者にとっては、適切なスクリプトを選んで利用する必要がある。スクリプトの選択を誤ると、文書処理が正しく動作しないなどの不具合が発生する。
【００３０】
また、第３の問題点に関しては、それぞれの目的に適合した構造化文書処理のアプリケーションを作成することができる文書処理システムを、利用者自らが実装することが極めて困難となる。
【００３１】
また、第４の問題点に関しては、効率の良いアプリケーションの開発に手間がかかるという不具合がある。
【００３２】
【特許文献１】特開平６−５２１６１号公報
【特許文献２】特開平７−５６９２０号公報
【発明の開示】
【発明が解決しようとする課題】
【００３３】
本発明の目的は、文書を章、節、段落、図表、あるいは表題や章題、概要などの複数の素片に分解し各素片をノードとするツリー構造やグラフ構造などのように構造的に表現して取り扱うことができる、優れた構造化文書処理システム及び構造化文書処理方法を提供することにある。
【００３４】
本発明のさらなる目的は、複数の構造化文書を基にして新たに文書を合成することができる、優れた構造化文書処理システム及び構造化文書処理方法を提供することにある。
【００３５】
本発明のさらなる目的は、複数の構造化文書から特定の条件を満たす文書部分（「文書部品」）を取り出すとともに文書部品を別の文書中に挿入又は置換して合成を行なうことができる、優れた構造化文書処理システム及び構造化文書処理方法を提供することにある。
【００３６】
本発明のさらなる目的は、構造化文書から文書部品を抽出したり、各文書部品を雛型文書中に挿入又は置換したりする手続きを記述したスクリプトを用いることなしに構造化文書の合成処理を行うことができる、優れた構造化文書処理システム及び構造化文書処理方法を提供することにある。
【課題を解決するための手段】
【００３７】
本発明は、上記課題を参酌しなされたものであり、その第１の側面は、構造的に表現され１以上の文書部品を含んだ構造化文書を処理するための構造化文書処理システムであって、
文書部品の抽出を指定する抽出命令又は文書部品の所定回数の複写を指定する反復複写命令又は文書部品の挿入若しくは置換を指定する挿入置換命令を該当する文書部品に付与する命令付与手段と、
構造化文書の構造を解析して構文解析木を生成する解析手段と、
前記解析手段により生成された構文解析木を基に構造化文書に付与された命令と文書部品を分離して命令を取り出す命令分離手段と、
抽出命令が付与された第１の構造化文書から前記命令分離手段によって取り出された抽出命令と、反復複写命令及び／又は挿入置換命令が付与された第２の構造化文書から前記命令分離手段によって取り出された反復複写命令及び／又は挿入置換命令とを併合・整列して、該第１及び第２の構造化文書を処理するための命令列からなる文書処理記述を生成する文書処理記述生成手段と、
抽出命令の対象である第１の文書部品を第１の構造化文書から取り出す抽出手段と、
反復複写命令の対象である文書部品と該文書部品付与された命令を所定回数だけ反復複写する反復複写手段と、
第１の文書部品を、挿入置換命令の対象である第２の文書部品の前又は後に挿入するか又は該第２の文書部品と置換する挿入置換手段と、
文書処理記述を順次解釈して、前記抽出手段、前記反復複写手段、及び／又は前記挿入置換手段を用いて文書部品を合成するインタプリタと、
を具備することを特徴とする構造化文書処理システムである。
【００３８】
本発明の第１の側面に係る構造化文書処理システムは、命令付与手段によって文書部品の抽出を指定する抽出命令や、文書部品の所定回数の複写を指定する反復複写命令、文書部品の挿入若しくは置換を指定する挿入置換命令を、構造化文書中の該当する文書部品に付与することができる。
【００３９】
また、この構造化文書処理システムに対して、抽出命令が付与された第１の構造化文書と、反復複写命令及び／又は挿入置換命令が付与された第２の構造化文書の各々を投入すると、解析手段によって構造化文書毎に文書解析木が構成され、命令分離手段によって各構造化文書に付与された命令列を取り出される。さらに、取り出された複数の命令列の併合・整列、及び変換が行なわれ、文書処理記述が文書処理記述合成手段によって合成される。
【００４０】
インタプリタは、文書処理記述を順に走査して、文書処理記述中に含まれる各命令に従って抽出手段によって第１の文書部品を第１の文書から抽出し、反復複写手段によって第２の構造化文書の文書部品を第１の文書部品の数に依存して定まる回数だけ反復複写し、また、挿入置換手段によって第２の構造化文書に第１の文書部品を挿入又は置換することで、構造化文書の合成を行なうことができる。
【００４１】
本発明の第１の側面に係る構造化文書処理システムによれば、以下に示す作用効果を奏することができる。すなわち、
【００４２】
１． 原料文書の構造を変更した際に、これを処理するための別に管理されるスクリプトを用意しなくてよい。
２． 構造が異なる複数の原料文書を混在させて文書部品を取り出すには、文書毎に文書部品に抽出命令を付与することで行なうので、文書毎の抽出の処理を個別に指定しなくてよい。同様に、文書部品を挿入又は置換する処理の指定も不要である。また、ユーザは、文書の構造が変わる度に適切なスクリプトを指定する必要がない。
３．文書部品は、所望の命令を元の文書中に直接的に付与することと、取り出した文書部品と挿入置換される文書部品の条件の指定（例えばラベル文字列が一致するなど）によって作成することができる。また、各ユーザがそれぞれの目的に応じて雛型文書をデザイン（作成）したり、所望の処理を行なう命令が組み込まれた雛型文書を選択したりして、ユーザ自らが原料文書と組み合わせることで文書処理アプリケーションを構成することができる。このように、手続き的でない、言い換えれば宣言的な方法で文書処理を構成することができるので、プログラミングの知識を充分に持たないユーザが広く文書処理を行なうことができる。すなわち、各ユーザがそれぞれの目的に合わせた構造化文書処理のアプリケーションを容易に作成することができる構造化文書処理システムが実現できる。
【００４３】
本発明の第１の側面に係る構造化文書処理システムにおいて、前記抽出命令は文書部品の属性の取り出しを指定する属性抽出命令であり、また、前記挿入置換命令は文書部品の属性の置換を指定する属性置換命令であってもよい。このような場合、前記命令分離手段は構造化文書から属性抽出命令と属性挿入置換命令を取り出し、前記挿入置換手段は第１の文書部品の属性を属性置換命令の対象である第２の文書部品の属性と置換する属性置換手段であるとともに、前記インタプリタは前記文書処理記述合成手段が合成した文書処理記述を解釈して属性抽出命令で指定された文書部品の所定のノードの属性を抽出するようにしてもよい。この結果、該抽出された属性を属性置換命令で指定された文書部品の所定のノードに設定することができる。
【００４４】
この場合、前記属性置換手段は、属性置換命令に対して、文書部品にあらかじめ設定されている属性値文字列とシステムの状態から得られる文字列を組み合わせて合成される文字列に置き換える属性置換手段であってもよい。
【００４５】
あるいは、前記抽出命令はパス名付き抽出命令であり、また、前記反復複写命令及び挿入置換命令はそれぞれパターン式付き反復複写命令及びパターン式付き挿入置換命令であってもよい。このような場合、前記命令分離手段は、構造化文書から、抽出命令とパス名を取り出すか、又は、反復複写命令と挿入置換命令とパターン式を取り出し、前記反復複写手段は、抽出した文書部品に付与されたパス名とパターン式とのパターン・マッチングを行ない、マッチするパス名を持つ文書部品の個数だけ反復複写を実行し、また、前記挿入置換手段は、抽出した文書部品に付与されたパス名とパターン式とのパターン・マッチングを行い、マッチするパス名を持つ文書部品を挿入又は置換するようにすればよい。
【００４６】
また、前記挿入置換手段は、前記抽出手段によって取り出された文書部品に付与された抽出命令を挿入又は置換するようにしてもよい。この結果、構造化文書処理システムを複数段接続してパイプラインを構成することができる。この機能によって、より柔軟で複雑な構造化文書処理を実現することが可能となる。
【００４７】
このような場合、前記挿入置換手段は、抽出命令を挿入又は置換する際に、パス名付き抽出命令のパス名を変更してから挿入置換するようにしてもよい。この結果、最初の構造化文書処理システムで出力された原料文書に含まれている文書部品は、２段目以降の構造化文書処理ではパス名を調べることで識別することができる。
【００４８】
また、本発明の第２の側面は、ネットワーク接続された２以上のコンピュータで構成される分散ネットワーク・システム上におけるコンピュータ通信による協調的な処理によって実現される、構造的に表現され１以上の文書部品を含んだ構造化文書処理システムであって、
構造化文書を所定フォーマットのファイルとして格納するとともに、ファイル名を受信したことに応答して該当するファイルを前記ネットワーク経由で送信するファイル・サーバと、ファイルに対して文書処理を行なう構造化文書処理サーバとを少なくとも含み、前記構造化文書処理サーバは、
文書部品の抽出を指定した抽出命令が付与された第１の構造化文書のファイル名と反復複写命令又は挿入置換命令を付与した第２の構造化文書のファイル名を含む処理起動記述を入力し解析して、該処理起動記述に含まれるファイル名を前記ファイル・サーバに前記ネットワーク経由で送信し、ファイル名に該当する各ファイルを前記ファイル・サーバからネットワーク経由で入力する入力手段と、
第１の構造化文書及び第２の構造化文書を解析して構文解析木を生成し、構文解析木を探索して文書部品と命令とを分離して命令を取り出し、各命令を併合・整列して構造化文書を処理するための命令列からなる文書処理記述を生成し、該文書処理記述を解釈して構造化文書を合成処理する文書処理手段と、
前記文書処理手段で処理して得られた構造化文書又は文書部品を、所定フォーマットのファイルとしてネットワーク経由で出力する出力手段と
を具備することを特徴とする構造化文書処理システムである。
【００４９】
ここで言うネットワークとは、例えば、インターネットのように複数のコンピュータがＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）接続して構成される分散ネットワークである。このような場合、構造化文書は、例えばＨＴＭＬのようなマークアップ言語によって記述される。また、ファイル・サーバは、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）プロトコルに従ってＨＴＭＬファイルを提供するＨＴＴＰサーバとして構成される。また、ファイル名は、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）のような資源アクセス識別子の形式で表記される。
【００５０】
また、構造化文書処理サーバは、ＨＴＴＰリクエストの形式で処理起動記述を入力することができる。この処理起動記述は、ＨＴＴＰリクエストのＵＲＬ中に別のＵＲＬを埋め込んだ記述形式の「ヴァーチャルＵＲＬ」として構成される。より具体的には、第１の構造化文書及び第２の構造化文書それぞれのファイル名、すなわちＵＲＬを含んだヴァーチャルＵＲＬである。したがって、構造化文書処理サーバは、このようなヴァーチャルＵＲＬを基にして、該当するファイル・サーバすなわちＨＴＴＰサーバから第１及び第２の構造化文書をネットワーク経由で取得することができる。
【００５１】
さらに、構造化文書処理サーバは、第１の構造化文書及び第２の構造化文書を解析してそれぞれの構文解析木を生成し、構文解析木を探索して文書部品と命令とを分離して命令を取り出し、各命令を併合・整列して構造化文書を処理するための命令列からなる文書処理記述を生成し、該文書処理記述を解釈して、構造化文書を合成処理することができる。
【００５２】
このようにして得られた構造化文書又は文書部品は、ＨＴＭＬフォーマットのファイルとして、すなわちＨＴＴＰレスポンスとしてネットワーク経由で出力することができる。
【００５３】
本発明の第２の側面に係る構造化文書処理システムでは、処理起動記述は構造化文書処理サーバのサーバ名を含む形式で前記ネットワーク上の分散ファイル名を規定することを許容してもよい。
【００５４】
例えば、前記ネットワーク上に構造化文書を処理する第１及び第２の構造化文書処理サーバが存在する場合、第１の構造化文書処理サーバに入力される第１の処理起動記述において、文書処理の対象となる第１の原料文書及び／又は第１の雛型文書のファイル名を第２の構造化文書処理サーバのサーバ名を含む第２の処理起動記述の形式で記述することができる。
【００５５】
第１の構造化文書処理サーバは、第１の処理起動記述を入力したことに応答して、第１の原料文書及び／又は第１の雛型文書のファイル名として記述された第２の処理起動記述を抜き出して、これを第２の構造化文書処理サーバに前記ネットワーク経由で送信すればよい。第２の構造化文書処理サーバは、第２の処理起動記述を解釈して処理を起動し、処理結果としての構造化文書又は文書部品を含むファイルをネットワーク経由で返信する。第１の構造化文書処理サーバは、該ファイルを第２の構造化文書処理サーバから受信して、第１の原料文書及び／又は第１の雛型文書として使用することができる。
【００５６】
また、第２の処理起動記述を入力する第２の構造化文書処理サーバは、前記ネットワーク経由の通信を必要としない第１の構造化文書処理サーバと同一のコンピュータ・システム上で構成されてもよい。この場合、第１の構造化文書処理サーバは、構造化文書又は文書部品を含むファイルに替えて、第２の構造化文書処理サーバによる処理結果である構造化文書又は文書部品を構文解析木として入力する切り替え手段を備えていてもよい。この結果、解析手段による重複した構文解析処理を省略することができ、処理速度が向上するとともに計算機負荷や通信負荷が軽減される。
【００５７】
また、本発明の第２の側面に係る構造化文書処理システムは、さらに、前記ファイル・サーバから入力した原料文書又は雛型文書の構文解析木をファイル名又は処理起動記述と対応付けて保持する保持手段と、ファイル名に対応する構造化文書ファイルを前記ファイル・サーバから入力する代わりに該当する構文解析木を前記保持手段から入力する入力手段とを備えていてもよい。この結果、保持手段にキャッシュされた構文解析木を有効に活用して、処理速度を向上させることができる。
【００５８】
また、本発明の第１の側面に係る構造化文書処理システムも、文書部品の抽出を指定した抽出命令が付与された第１の構造化文書のファイル名と反復複写命令又は属性置換命令を付与した第２の構造化文書のファイル名を含む処理起動記述を入力として用いることができる。この場合、属性置換手段は、処理起動記述の一部と、文書部品にあらかじめ設定されている属性文字列と、置き換えてえられる文字列を、該文書部品の属性文字列として設定するようにしてもよい。
【００５９】
また、本発明の第３の側面は、構造的に表現され１以上の文書部品を含んだ構造化文書を処理するための構造化文書処理システムであって、
構造化文書の構造を解析して構文解析木を生成する解析手段と、
前記解析手段により生成された構文解析木を基に構造化文書に付与された命令と文書部品を分離して命令を取り出すとともに、命令の文法的なエラーを検出してエラー情報を出力する命令分離手段と、
エラー情報を入力してエラー通知を行なう文書を合成するエラー通知文書合成手段と、
エラー通知文書へのアクセス情報を生成する処理起動記述合成手段と、
処理起動記述を解釈して、エラー通知文書を取り出す処理起動記述解析手段と、
エラー通知文書を保持する保持手段と、
を具備することを特徴とする構造化文書処理システムである。
【００６０】
ここで言うエラー情報は、エラーの種類やエラーの検出された文書中の位置（行数）など、通常のエラー処理でよく扱われるものでよい。
【００６１】
エラー通知文書合成手段は、エラー情報を入力して、エラー通知を行なう文書を合成する。エラー情報は例えばエラー番号とし、エラー文書はエラー番号をファイル名とするファイルとする。エラー通知文書合成手段は、命令解析手段から入力されたエラー番号をファイル名とみなして、ファイルからエラー通知文書の１つを入力する。入力された文書は、解析手段を用いて構文解析木が作られる。構文解析木は保持手段に保持されるが、必ずしも構文解析木を作る必要はなく、文字列情報のまま保持手段に保持してもよい。
【００６２】
処理起動記述合成手段が生成するエラー通知文書へのアクセス情報は、例えば、エラー通知ページにアクセスするためのＵＲＬとして記述される。エラー通知文書は、処理起動記述合成手段で合成されたＵＲＬをキー情報として、保持手段に格納される。
【００６３】
本発明の第３の側面によれば、文書処理の途中で発生したエラーを、文書処理の合成結果とは別にして利用者に通知することができる。したがって、高度で柔軟な文書処理アプリケーションを構成することができる。さらに、エラーが発生した時点でエラー通知文書を生成して、文書処理の結果を一時的に格納する保持手段に（エラー通知文書のリクエストに先行して）格納し、後のエラー通知文書の要求に対して出力するように動作することができる。このため、エラーを発生したプロセスとエラーの種類やエラーに関する情報を対応付けて保持するような機構を用意する必要がなくなる。
【００６４】
また、本発明の第４の側面は、構造的に表現され１以上の文書部品を含んだ構造化文書を処理するための構造化文書処理方法であって、
命令が付与された構造化文書を解析して構文解析木を生成するステップと、
構文解析木を探索して、文書部品と命令とを分離して命令を取り出すステップと、
構造化文書から取り出された各命令を併合・整列して、構造化文書を処理するための命令列からなる文書処理記述を生成するステップ、
文書処理記述を解釈して、構造化文書を合成処理するステップと、
を具備することを特徴とする構造化文書処理方法である。
【００６５】
また、本発明の第５の側面は、構造的に表現され１以上の文書部品を含んだ構造化文書を処理するための構造化文書処理方法であって、
（ａ）文書部品の抽出を指定する抽出命令が付与された第１の構造化文書を解析して構文解析木を生成するステップと、
（ｂ）文書部品の所定回数の複写を指定する反復複写命令又は文書部品の挿入若しくは置換を指定する挿入置換命令が付与された第２の構造化文書を解析して構文解析木を生成するステップと、
（ｃ）構文解析木を探索して、文書部品と命令とを分離して命令を取り出すステップと、
（ｄ）抽出命令が付与された第１の構造化文書から取り出された抽出命令と、反復複写命令及び／又は挿入置換命令が付与された第２の構造化文書から取り出された反復複写命令及び／又は挿入置換命令とを併合・整列して、該第１及び第２の構造化文書を処理するための命令列からなる文書処理記述を生成するステップと、
（ｅ）文書処理記述を解釈して、抽出命令の対象である第１の文書部品を第１の構造化文書から取り出すステップと、
（ｆ）文書処理記述を解釈して、反復複写命令の対象である文書部品と該文書部品付与された命令を所定回数だけ反復複写するステップと、
（ｇ）文書処理記述を解釈して、第１の文書部品を、挿入置換命令の対象である第２の文書部品の前又は後に挿入するか又は該第２の文書部品と置換するステップと、
（ｈ）前記ステップ（ｅ）乃至（ｇ）の結果得られた構文解析木を出力するステップと、
を具備することを特徴とする構造化文書処理方法である。
【発明の効果】
【００６６】
従来の構造化文書処理方式では、原料文書や雛形文書と別に文書を処理するためのスクリプトを作成し、これを管理することが問題の原因であった。
【００６７】
これに対し、本発明では、スクリプトのように手続きの体裁を備えた命令を用いずに構造化文書の処理を行なうものである。
【００６８】
図１には、本発明に係る構造化文書処理システムの基本概念を図解している。同図に示すように、この構造化文書処理システムは、命令付与手段と、解析手段と、命令分離手段と、文書処理記述合成手段と、インタプリタと、抽出手段と、反復複写手段と、挿入置換手段とで構成される。これら各手段は、例えば、計算機システム上の処理プロセスとして実現することができる。
【００６９】
命令付与手段は、原料文書としての構造化文書内に各命令を埋め込む。ここで言う命令には、構造化文書の文書部品の取り出しを指定する抽出命令と、文書部品を所定の回数の反復複写の指定をする反復複写命令と、文書部品の挿入又は置換を指定する挿入置換命令が含まれる。
【００７０】
これら各命令はそれ自体では、スクリプトのように処理を記述した「手続き」としての体裁を整えていない。例えば、構造化文書がＨＴＭＬやＸＭＬなどのマークアップ言語で記述されている場合には、いわゆるコメント文の形式で元の文書内に埋め込まれる。
【００７１】
解析手段は、各命令が埋め込まれた第１の構造化文書と第２の構造化文書とを受け取って、これらを解析する。
【００７２】
命令分離手段は、入力された第１及び第２の構造化文書を文書部品と命令に分離して、各命令を取り出す。
【００７３】
文書処理記述合成手段は、取り出した各命令を併合し、所定の順に並べて文書処理記述を合成する。
【００７４】
インタプリタは、一般に、前記文書処理記述に含まれる命令列を順に解釈実行する。本発明においては、インタプリタは、抽出手段に文書部品を指定して、原料文書から文書部品を取り出させる。また、インタプリタは、反復複写手段に文書部品を指定して、文書部品や各命令を反復複写せしめる。さらに、挿入置換手段に２つの文書部品を指定して、文書部品の挿入又は置換を行なわせる。この結果、文書部品同士を合成するという構造化文書の処理が実現する。
【００７５】
本発明に係る構造化文書処理システムに入力されたそれぞれの構造化文書中には、文書部品を取り出す抽出命令と、反復複写と挿入置換命令が付与されている。したがって、文書部品の取り出しの指定と、反復複写の指定と、文書部品を挿入または置換する文書部品（個所）の指定を行ない、入力した複数の構造化文書から取り出した命令を動的に合成して文書処理記述を作成するようにした結果、文書処理記述スクリプトが不要となる。したがって、元の文書と別にスクリプトを管理するという手間が省略される。
【００７６】
本発明によれば、文書処理記述は、入力文書の構造に合わせた抽出命令（列）と、反復複写命令（列）や挿入置換命令（列）とから合成される。本発明に係る構造化文書処理システムに構造化文書が入力されると、命令（列）が文書から分離され併合され、文書を処理する前に文書処理記述が動的に合成される。したがって、合成された文書処理記述は、複数の入力文書の処理に適合した処理記述となっている。
【００７７】
本発明によれば、文書処理の度に入力文書に合わせた処理記述が動的に構成される。したがって、従来は必要であった文書処理スクリプトが不要となり、必然的に、文書と別にスクリプトを管理するという労力からも解放される。
【００７８】
本発明によれば、スクリプトを開発するためのプログラミングが不要になる。また、構造的に異なる文書が入力される毎に異なるスクリプトを用意する必要がない。利用者は、これらのスクリプトを入力文書に合わせて選択する必要がない。
【００７９】
また、入力文書の構造の変更に伴うスクリプトの変更の必要がないので、変更を必要とするスクリプトを探したり、スクリプトの変更し忘れによる不具合が発生したりしない。したがって、構造化文書の利用者にとっては、それぞれの目的に合わせた構造化文書処理のアプリケーションを作成して、出力結果を所望の目的に合致した形に簡単にカスタマイズできるシステムの実現が容易になる。すなわち、効率のよいアプリケーションの開発が簡単になる。
【００８０】
総じて、本発明によれば、構造化文書処理システムの開発や維持管理や利用が簡単である。
【００８１】
本発明によれば、文書を章、節、段落、図表、あるいは表題や章題、概要などの複数の素片に分解し各素片をノードとするツリー構造やグラフ構造などのように構造的に表現して取り扱うことができる、優れた構造化文書処理システム及び構造化文書処理方法を提供することができる。
【００８２】
また、本発明によれば、複数の構造化文書を基にして新たに文書を合成することができる、優れた構造化文書処理システム及び構造化文書処理方法を提供することができる。
【００８３】
また、本発明によれば、複数の構造化文書から特定の条件を満たす文書部分（「文書部品」）を取り出すとともに文書部品を別の文書中に挿入又は置換して合成を行なうことができる、優れた構造化文書処理システム及び構造化文書処理方法を提供することができる。
【００８４】
また、本発明によれば、構造化文書から文書部品を抽出したり、各文書部品を雛型文書中に挿入又は置換したりする手続きを記述したスクリプトを用いることなしに構造化文書の合成処理を行なうことができる、優れた構造化文書処理システム及び構造化文書処理方法を提供することができる。
【００８５】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【発明を実施するための最良の形態】
【００８６】
以下では、説明の便宜上、構造化文書（以下、単に「文書」とする）としてＨＴＭＬ言語で記述されたＨＴＭＬファイルであるとする。但し、ＸＭＬやその他の言語で記述された構造化文書に対して本発明を適用できることは言うまでもない。
【００８７】
図２には、本発明の第１の実施例に係る構造化文書処理システムの構成を模式的に示している。以下、同図を参照しながら、各ブロックについて説明する。
【００８８】
命令付与手段は、入力される文書内に、抽出命令、反復複写命令、挿入置換命令（以下では、これらをまとめて単に「各命令」とする）を埋め込む。各命令は、次のように記述される。
【００８９】
【数５】
2006309792.tif 000007
【００９０】
【数６】
2006309792.tif 000008
【００９１】
【数７】
2006309792.tif 000009
【００９２】
この例では、‘ＯＵＴ’が抽出命令を、‘ＲＰ’が反復複写命令を、‘ＩＮ’が挿入置換命令を、それぞれ表すものとする。また、ＬＡＢＥＬは任意の文字列でよい。＜！−−＃ＯＵＴＬＡＢＥＬ−−＞を抽出命令開始タグ、＜！−−＃／ＯＵＴ−−＞を抽出命令終了タグと呼ぶ。同様に、＜！−−＃ＲＰ ＬＡＢＥＬ−−＞及び＜！−−＃／ＲＰ−−＞を反復複写命令開始タグ及び反復複写命令終了タグとし、＜！−−＃ＩＮＬＡＢＥＬ−−＞及び＜！−−＃／ＩＮ−−＞を挿入置換命令開始タグ及び挿入置換命令終了タグとする。挿入置換命令開始タグと挿入置換命令終了タグの間には、何も書かなくてもよい。その場合には、文書合成処理以前には正しいＨＴＭＬファイルにならない場合もある。
【００９３】
本実施例では、抽出命令を付与した構造化文書を原料文書とする。第１の原料文書のＨＴＭＬファイルを以下に示す。
【００９４】
【数８】
2006309792.tif 000010
【００９５】
第１の原料文書を解析木の形式で表現すると図３のようになる。また、この第１の原料文書を標準的なＨＴＭＬブラウザに表示した結果は、図１８に示した通りとなる。該原料文書に埋め込まれた抽出命令“ＯＵＴ”は、このうち破線で囲まれた部分の取り出しを要求するものである。
【００９６】
また、第２の原料文書のＨＴＭＬファイルを以下に示す。
【００９７】
【数９】
2006309792.tif 000011
【００９８】
第２の原料文書を解析木の形式で表現すると図４のようになる。また、この第２の原料文書を標準的なＨＴＭＬブラウザに表示した結果は、図１９に示した通りとなる。該原料文書に埋め込まれた抽出命令“ＯＵＴ”は、このうち破線で囲まれた部分の取り出しを要求するものである。
【００９９】
また、本実施例では、反復複写命令“ＲＰ”と挿入置換命令“ＩＮ”を付与した構造化文書を雛型文書とする。本実施例において使用する第１の雛型文書のＨＴＭＬファイルを以下に示しておく。
【０１００】
【数１０】
2006309792.tif 000012
【０１０１】
第１の雛型文書を解析木の形式で表現すると図５のようになる。
【０１０２】
また、本実施例において使用する第２の雛型文書のＨＴＭＬファイルを以下に示しておく。
【０１０３】
【数１１】
2006309792.tif 000013
【０１０４】
第２の雛型文書を解析木の形式で表現すると図６のようになる。
【０１０５】
雛型文書において、ＬＡＢＥＬは、抽出命令と、反復複写命令または挿入置換命令の対応を指定するのに用いる。
【０１０６】
特定のＬＡＢＥＬ引数が指定された抽出命令の数によって、同じラベルを有する反復複写命令の反復回数を定める。［数１０］で示した第１の雛型文書の場合には、原料文書におけるＬＡＢＥＬ引数「グループ」のみ反復複写される。これに対し、［数１１］で示した第２の雛型文書の場合には、原料文書におけるＬＡＢＥＬ引数「グループ」及び「サマリ」の双方が反復複写される。
【０１０７】
また、特定のＬＡＢＥＬが指定された抽出命令によって抽出された文書部品は、同じＬＡＢＥＬ引数を有する挿入置換命令によって挿入又は置換挿入される。［数１０］及び［数１１］で示した各雛型文書の場合には、原料文書におけるＬＡＢＥＬ引数「グループ」及び「サマリ」の双方に関して挿入又は置換挿入される。
【０１０８】
また、すべてのＬＡＢＥＬ文字列が同一であるときは、ＬＡＢＥＬ文字列を省略したのと同等の効果をもたらす。
【０１０９】
本実施例において、各命令は、ＨＴＭＬファイルの注釈（コメント文）として構成される。したがって、ＨＴＭＬブラウザを始めとするＨＴＭＬを取り扱う標準的なアプリケーション上では、これら各命令は無視されるので、文書の内容を表示したり、処理するアプリケーションに対して実質的に影響を及ぼしたりしない。各命令は、後続の命令分離手段によって各ＨＴＭＬで記述された文書から分離され、取り出される。
【０１１０】
命令付与手段は、本実施例では、ＨＴＭＬファイルを編集可能なエディタとして構成される。各命令は、単にＨＴＭＬファイル中に挿入された注釈タグなので、通常のテキスト・エディタあるいはＨＴＭＬエディタ上の編集作業を介して容易に付与することができる。例えば、ユーザは、テキスト・エディタを用いて、ＨＴＭＬファイル中で取り出したい文書部品の前後それぞれに、抽出命令開始に相当する注釈タグ＜！−−＃ＯＵＴＬＡＢＥＬ−−＞、及び、抽出命令終了に相当する注釈タグ＜！−−＃／ＯＵＴ−−＞をマニュアルで挿入することによって、命令を付与することができる。以下、＜！−−＃ＯＵＴＬＡＢＥＬ−−＞を抽出命令開始タグと呼び、＜！−−＃／ＯＵＴ−−＞を抽出命令終了タグと呼ぶことにする。これら挿入される命令自体は、手続きの体裁をなしていないという点を充分理解されたい。なお、ここで用いられるテキスト・エディタは、一般的なエディタでよく、本明細書中ではこれ以上説明しない。
【０１１１】
また、別の実現方法としては、計算機システム上で文書の構造を自動的に解析して、特定のマークアップで挟まれた文書部品の前後に、同様な各命令を挿入することも可能である。すなわち、特開平６−５２１６１号公報（前述）において開示された方式を用いて構造を指定した検索を行ない、所望の文書部品の前後に所望の各命令の開始タグと終了タグを文書に流し込み合成を行なうことによっても、文書に対して命令を付与することができる。また、通常のテキスト処理によっても可能である。以下にｐｅｒｌ言語のスクリプトで記述した例を示す（ｐｅｒｌは米ＮｅｔＬａｂｓ社のＬａｒｒｙ  Ｗａｌｌ氏が開発したインタプリタ言語であり、主としてＵＮＩＸ（登録商標）系のオペレーティング・システム上で使用される）。
【０１１２】
【数１２】
2006309792.tif 000014
【０１１３】
上記の例では、正規表現によるパターン・マッチを用いて文書部品の検索を行なう。前記スクリプトは、ＨＴＭＬファイルを入力して、＜ＴＡＢＬＥ＞タグを検索してその直前に＜！−−＃ＯＵＴＬＡＢＥＬ−−＞を挿入するとともに、＜／ＴＡＢＬＥ＞タグを検索してその直後に＜！――＃／ＯＵＴ――＞を挿入して、結果を出力する。
【０１１４】
次いで、入力手段と出力手段について説明する。
【０１１５】
入力手段は、ファイル名を指定して、ファイル・サーバからＨＴＭＬファイルを入力する。ファイル・サーバは例えばＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）サーバである。ＷＷＷ空間上では、ＵＲＬをＨＴＭＬファイルの名前としてアクセスすることができる。
【０１１６】
入力手段は、ネットワークに接続されたＷＷＷサーバにネットワーク・コネクションを構成しており、ＨＴＴＰとして知られるプロトコルでＨＴＭＬファイルを転送する。すなわち入力手段は、ＨＴＭＬファイル名を含むＨＴＴＰリクエストをＷＷＷサーバに送信するとともに、ＷＷＷサーバからはＨＴＭＬファイルを含むＨＴＴＰレスポンスを受信する。より具体的には、所定のポート番号で待ち受けるＷＷＷサーバに対して、ＴＣＰ／ＩＰコネクションを形成し、ＨＴＴＰのリクエストを入力する。ＨＴＴＰリクエストには、ＵＲＬとして与えられたファイル識別子が含まれている。これに対し、ＷＷＷサーバは、ＵＲＬに基づいて、ＨＴＭＬファイルをローカルなファイル・システムから読み出すか、所定のプログラムを起動してＨＴＭＬファイルを合成するか、又は、他のＷＷＷサーバからＨＴＭＬファイルを入力するかして、ＨＴＴＰリクエストで指定されたＵＲＬに対するＨＴＭＬファイルを用意し、これをＨＴＴＰレスポンスに含めて入力手段に出力する。
【０１１７】
このような入力手段の実装は、例えば米サンマイクロシステムズ社のＪＤＫ（Ｊａｖａ（登録商標）  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ）に含まれる、ｊａｖａ．ｎｅｔ．ＵＲＬ、及び、Ｊａｖａ．ｎｅｔ．ＵＲＬＣｏｎｎｅｃｔｉｏｎクラスの実装を用いればよい。
【０１１８】
出力手段は、構造化文書をＨＴＭＬ形式に変換したものを、ＨＴＴＰレスポンスの本体すなわちｂｏｄｙ部として、ネットワークを経由して出力する。すなわち、本実施例の構造化文書処理システムは、クライアントからネットワークを経由して適当なリクエストを受信し、ファイル・サーバから原料文書と雛型文書を入力して処理を行ない、処理結果をレスポンスとしてクライアントに出力する構造化文書処理サーバとして実現される。特に、本実施例に係る構造化文書処理サーバは、ＨＴＴＰリクエストを入力して所定の構造化文書の処理を行ない、ＨＴＴＰレスポンスを出力するＨＴＴＰサーバとして実現する。
【０１１９】
出力手段に送られる構造化文書は、該構造化文書の構文解析木とする。構文解析木については後述する。構文解析木をＨＴＭＬに変換するには、該構文解析木を深さ優先順に走査して、開始タグ、テキスト・コンテント、及び、終了タグを出力する。走査において訪れたノードがテキスト・コンテントを保持するノードである場合には、テキスト文字列を出力する。そうでなければ、開始タグ（例えばＴＡＢＬＥタグなら“＜ＴＡＢＬＥ＞”）を出力し、次に子ノードを順に走査し、各子ノードについて再帰的に開始タグと終了タグとテキスト・コンテントをＨＴＭＬとして出力する。子ノードの出力の後に、該ノードを上向きに訪れるときに終了タグ（例えばＴＢＡＬＥタグなら“＜／ＴＡＢＬＥ＞”）を出力する。ＨＴＭＬをＨＴＴＰレスポンスに含めて出力することは、通常のＨＴＰＰサーバの場合と同様なので、本明細書中ではこれ以上説明しない。また、ＨＴＴＰリクエストを入力する部分については、本発明の要旨とは直接関係しないので、説明を省略する。このようなＨＴＴＰサーバの実現例としては、Ａｐａｃｈｅ  ＷＷＷサーバがよく知られている。
【０１２０】
次いで、解析手段と分離手段について説明する。
【０１２１】
解析手段は、テキスト形式で記述されたＨＴＭＬファイルを入力し、ＨＴＭＬの文法（構文）に従って解析し、構文解析木を構成するＨＴＭＬパーザである。本発明を実現する上で、従来技術と同様のＨＴＭＬパーザを利用することができるので、本明細書中では詳しく説明しない。（ＨＴＭＬパーザの実現例については、Ｃｏｒｐｏｒａｔｉｏｎ  ｆｏｒ  Ｎａｔｉｏｎａｌ  Ｒｅｓｅａｒｃｈ  Ｉｎｉｔｉａｔｉｖｅｓ，「Ｐｙｔｈｏｎ  Ｌｉｂｒａｒｙ  Ｒｅｆｅｒｅｎｃｅ  Ｒｅｌｅａｓｅ  １．５．２」１２．２節  ｈｔｍｌｌｉｂ−Ａ  ｐａｒｓｅｒ  ｆｏｒ  ＨＴＭＬ  ｄｏｃｕｍｅｎｔｓなどに記載されている。また、構文解析の方式については、Ａ．Ｖ．エイホ他、コンパイラ１サイエンス社４章に詳述されている）。
【０１２２】
本実施例で用いるＨＴＭＬパーザは、テキスト形式のＨＴＭＬファイルを入力すると、木構造のデータを出力する。木構造の各ノードはメモリに一時格納される。各ノードは、ＨＴＭＬタグ名又は‘ＴＥＸＴ’をノード名として属性に持つ。この場合、各ノードがＨＴＭＬタグのマークアップ又はテキスト・コンテンツに対応する。また、ＨＴＭＬタグの属性（Ａｔｔｒｉｂｕｔｅ）を属性に持つ。さらに子ノードへのポインタの配列を持つ。この配列は、第１の要素、第２の要素…の順に、第２子ノード、第２子ノード…へのポインタが格納される。解析木中の任意のノードを指定することで、該ノード以下のサブツリーが文書部品として定まる。（木構造の実現については、例えば「アルゴリズムとデータ構造」岩波書店、ｐ．４８〜ｐ．５４に詳解されている。）
【０１２３】
第１の原料文書、第２の原料文書、第１の雛型文書、第２の雛型文書の構文解析木（以下、「文書解析木」と呼ぶ）は、それぞれ図３、図４、図５、図６に示してある通りである。
【０１２４】
次いで、解析手段としてのＨＴＭＬパーザは、構文解析木を行きがけ順（ｐｒｅｆｉｘ  ｏｒｄｅｒ）に巡回し、ノード名が注釈タグであって、注釈タグの中に記述されている注釈文字列が、次の規則のいずれかに該当するか否かを、文字列のパターン・マッチによって調べる。但し、「→」記号の左辺がパターンであり、右辺が各命令のいずれかである。また、＜空白＞は１以上の空白記号を意味し、＜ＬＡＢＥＬ文字列＞は、空白を含まない任意の文字列を意味するものとする（木構造を行きがけ順に巡回する方法については、例えば「アルゴリズムとデータ構造」岩波書店、ｐ．５２〜ｐ．５３に木構造の前順走査として記載されている）。
【０１２５】
【数１３】
2006309792.tif 000015
【０１２６】
このようなパターン・マッチは、正規表現による文字列マッチを用いて実現可能である。Ｐｅｒｌ言語で利用可能なパターン・マッチによって各命令の開始タグと終了タグを抽出するプログラムの例を、以下に示しておく。
【０１２７】
【数１４】
2006309792.tif 000016
【０１２８】
文書解析木中のアドレスは、文書部品のノードの位置を解析木のルート・ノードからのパスを示したベクトルによって表される。ベクトルの各要素はパス上に存在するノードに対応する。深さが３の位置にある文書部品のアドレスは、３次元のベクトルで表現され、ベクトルの各要素は、それぞれのノードの親に対して（長子を０と数えて、）何番目の子であるかを表す数とする。例えば、［０  １  ２］というアドレス表現は、ルートの第２子の第３子に位置するノード以下のサブツリーで表される文書部品のアドレスである。所望のノードのアドレスが指定されれば、次のステップではルート・ノードから該所望のノードを対象ノードとする。
【０１２９】
【数１５】
2006309792.tif 000017
【０１３０】
このような解析木のアドレス表現について、図５を参照しながら説明する。同図においては、反復複写命令［０  １  １  １］が付与された文書部品は、［０  １  １  ２］のノード以下のサブツリーであり、第１の挿入置換命令［０  １  １  ２  ００］が付与された文書部品は、［０  １  １  ２  ０ １］のノード以下のサブツリーであり、第２の挿入置換命令［０  １  １  ２  １  ０］が付与された文書部品は、［０  １  １  ２  １  １］のノード以下のサブツリーである。
【０１３１】
文書部品ＩＤは、文書部品を識別するためのもので、このＩＤを指定して文書部品を取り出すことができる。本実施例では、文書解析木ＩＤと文書部品のアドレスの組で文書部品ＩＤを表すものとする。文書解析木のＩＤは、例えば、構成した解析木の順に割り振った番号としてもよいし、文書解析木を格納したメモリ上のアドレスとして、例えば文書解析木のルート・ノードへのポインタでもよい。
【０１３２】
次いで、命令分離手段について説明する。本実施例の命令分離手段は、文書解析木を行きがけ順に巡回し、各命令に対するオペコードと、ラベル文字列と、各命令が付与された文書部品のＩＤを前記オペコードに対するオペランドとする３項目からなる命令列を出力する。オペコードは、抽出命令はＯＵＴ、反復複写命令はＲＰ、挿入置換命令はＩＮとする。文書解析木のＩＤは、第１の原料文書を１、第２の原料文書を２、第１の雛型文書を３、第２の雛型文書を４とする。それぞれの文書から分離した命令列を以下に示す。
【０１３３】
【数１６】
2006309792.tif 000018
【０１３４】
【数１７】
2006309792.tif 000019
【０１３５】
【数１８】
2006309792.tif 000020
【０１３６】
【数１９】
2006309792.tif 000021
【０１３７】
次いで、文書処理記述合成手段について説明する。文書処理記述合成手段は、複数の原料文書又は雛型文書から分離した命令列を入力し、命令列を併合し、順序の変更をし、変換と合成を行なって文書処理記述を出力する。
【０１３８】
ここで、原料文書１と原料文書２と雛型文書１のそれぞれから分離した命令列から文書処理記述を構成する処理を例にとって、文書処理記述合成手段の動作について説明する。文書処理記述合成手段は、以下に示す処理Ａ〜処理Ｃを順に行なう。
【０１３９】
■処理Ａ：  ＯＵＴの計数
原料文書１と原料文書２のそれぞれから分離した命令列に含まれるＯＵＴの個数をラベル文字列毎に数える。これは、以下に示すように、命令列を走査して、オペコードがＯＵＴである命令について、ラベル文字列をキーとして、整数値を値とする連想配列をインクリメントすることで実現できる。走査が終了した後で、ラベル文字列をキーとしてＯＵＴ命令の個数をラベル文字列毎に取り出すことができる。
【０１４０】
【数２０】
2006309792.tif 000022
【０１４１】
■処理Ｂ：  ＲＰによる各命令の複写
雛型文書１の命令列において、命令列中にＲＰが含まれていた場合、すべてのＲＰのオペランドの文書部品中に含まれるＩＮとＯＵＴとＲＰを、原料文書のＯＵＴ命令の数に従って複写する。この複写は１つの雛型文書について、以下に示す手順Ｓｔｅｐ２１〜Ｓｔｅｐ２６を実行することで行われる。
【０１４２】
【数２１】
2006309792.tif 000023
【０１４３】
複写された命令以外のすべての命令について、オペランドの文書部品のアドレス（第３のアドレス）の先頭ｋ−１個が一致し、且つ、ｋ番目がＡkより大きいものについて、アドレスの付け替えを行なう。
【０１４４】
【数２２】
2006309792.tif 000024
【０１４５】
この付け替えは、反復複写によるアドレスのずれを補正する処理となる。複写した命令がＲＰの場合は、Ｓｔｅｐ２１で作成したＲＰリストに追加する。
【０１４６】
【数２３】
2006309792.tif 000025
【０１４７】
【数２４】
2006309792.tif 000026
【０１４８】
■処理Ｃ：  命令の合成
すべての原料文書のＯＵＴと、雛型文書のＩＮとを、ラベル文字列が一致するものどうしでペアを構成して各ペアから新しい命令を合成する。この動作手順について以下に説明する。
【０１４９】
本実施例では、例えば“ＯＵＴ  ＬＡＢＥＬ  文書部品１”と“ＩＮ  ＬＡＢＥＬ  文書部品２”というペアから“ＦＩＬＬ  文書部品１  文書部品２”を合成する。ＦＩＬＬは、文書部品１を文書部品２と置換する命令を表す。この動作によって原料文書に出現する文書部品の出現順に拘わらず、雛型文書の中のユーザが所望する位置に、前記原料文書の文書部品を置換又は挿入することが可能になる。
【０１５０】
【数２５】
2006309792.tif 000027
【０１５１】
また、文書部品に含まれるコンテンツ、例えば「社員番号」を取り出して、社員番号順にＯＵＴ命令を整列してＯＵＴ配列を構成し、雛型文書中のＩＮ命令の出現順に構成したＩＮ配列に対応付けて、ＦＩＬＬを構成することも可能である。このように、原料文書のＯＵＴ命令で抽出される文書部品と、ＩＮ命令で指定される挿入置換の場所との対応付けは、ラベル文字列の対応付けや、コンテンツの内容による整列だけにとどまらず、さまざまな方法が実施可能である。例えば、テーブルを検索して、順序を決めることもできるし、どのようなサーバから得られた原料文書か（例えばホスト名）によって、挿入置換場所を変更することも可能である。この場合は、例えばＩＮ命令のラベル文字列をホスト名にしておき、ＯＵＴ命令のオペランドの文書ＩＤと、ホスト名の対応表を基に、同様の処理をすることで実現できる。
【０１５２】
これらの処理によって文書処理記述が合成される。文書処理記述の例を以下に示しておく。
【０１５３】
【数２６】
2006309792.tif 000028
【０１５４】
【数２７】
2006309792.tif 000029
【０１５５】
上記の例では、１つのＲＰ命令は、２つの連続する文書部品に付与されているので、ＲＰ命令のオペランドは２個指定されていることに注意する。また、ＦＩＬＬ命令を合成するのではなく、文書部品を格納する一時領域を指定するラベルを用意することで、次のような文書合成記述を出力してもよい。
【０１５６】
【数２８】
2006309792.tif 000030
【０１５７】
次に、インタプリタと、抽出手段と、反復複写手段と、挿入置換手段の動作について説明する。
【０１５８】
上述した文書処理記述がインタプリタに入力されると、インタプリタは、文書処理記述の先頭から順に走査し、オペコードを判定して、抽出手段、反復複写手段、又は挿入置換手段のいずれかに、オペランドで指定された文書部品ＩＤを入力する。ＯＵＴ命令には抽出手段が、ＲＰ命令には反復複写手段が、ＩＮ命令には挿入置換手段が、それぞれ対応するものとする。挿入置換手段には、文書部品のＩＤに加えて、挿入または置換する文書部品を入力する。ＦＩＬＬの場合には、第１のオペランドで指定された文書部品ＩＤが抽出手段に入力され、その結果として得られた文書部品と、第２のオペランドで指定された文書部品ＩＤを挿入置換手段に入力する。
【０１５９】
本実施例のインタプリタは、命令記述を読み込んで、各命令を１ステップ毎に順次解釈して所定の処理を実行する処理を行なうような通常のインタプリタでよい。かかるタイプのインタプリタの実現は当業界において既に周知なので、本明細書では説明を省略する（例えば、インタプリタの実現方法は、滝口政光、「作りながら学ぶコンパイラ／インタプリタ」（ＣＱ出版株式会社）に詳しく説明されている）。本実施例では、文書処理記述内の命令ステップの順に、各オペコードに対して所定の処理手段が選択され、各処理手段にオペランドとして文書部品のＩＤが入力される。
【０１６０】
抽出手段は、入力された文書部品のＩＤから、指定された文書解析木のノードを見つけて、コピーした文書部品を返す。コピーは該ノード以下のすべてのノードを行きがけ順に巡回し、ノード毎にコピーするものとする。コピーした文書部品は、メモリ上に格納されてポインタが返されるように実装してもよい．先の文書処理記述例３の一時格納領域として指定したｔｍｐは、このようなコピーした文書部品を格納できるように実装してもよいし、前記ポインタであってもよい。
【０１６１】
反復複写手段は、入力された文書部品のＩＤから、指定された文書解析木のノードを見つけて、該文書解析木上で反復複写する（反復複写した結果、アドレスがずれるノードがあるため、先の処理ＢのＳｔｅｐ２４で、オペランドに指定された文書部品のアドレスの付け替えを行なっていることに留意されたい）。
【０１６２】
図７には、雛型文書１に対して、文書処理記述例１のＲＰ命令で反復複写した結果の文書解析木の例を示している。また、図８には、雛型文書２に対して、文書処理記述例２のＲＰ命令で反復複写した結果の文書解析木の例を示している。太枠で囲まれた部分が反復複写された部分を表している。
【０１６３】
挿入置換手段には、挿入又は置換する第１の文書部品（又はそのＩＤ)に加えて、挿入置換をする個所を示す第２の文書部品のＩＤを入力する。入力された第２の文書部品のＩＤから、指定された文書解析木のノードを見つけて、前（兄ノード）又は後ろ（弟ノード）に、指定した第１の文書部品のノードを挿入する。置換動作の場合は、第２の文書部品として指定されたノードを削除して、その代りに指定した別の文書部品のノードを挿入する。第１又は第２の文書部品の代りに複数の文書部品を指定して、挿入又は置換するように実現してもよい。抽出手段、反復複写手段、挿入置換手段の各々は、上記のように単に文書解析木のツリー構造の変形や変換を行なうものであり、その実現は当業界において既に周知なので、本発明ではこれ以上説明しない（木構造に対する要素の挿入や削除については、例えば「アルゴリズムとデータ構造」（岩波書店）、２．４節に説明されている）。
【０１６４】
インタプリタによって、文書処理記述が解釈され雛型文書から構成された解析木が処理され、文書が合成される。図９には、第１の原料文書と第２の原料文書と第１の雛型文書から合成した文書の解析木を示している。同図において、網掛けを付されたノードが、置換された文書部品に相当する。合成結果のＨＴＭＬファイルを以下に示しておく。
【０１６５】
【数２９】
2006309792.tif 000031
【０１６６】
上記のＨＴＭＬファイルを標準的なＨＴＭＬブラウザで表示した結果を図２０に示しておく。
【０１６７】
同様に、第１の原料文書と第２の原料文書と第２の雛型文書から合成した文書のＨＴＭＬファイルを以下に示す。
【０１６８】
【数３０】
2006309792.tif 000032
【０１６９】
上記のＨＴＭＬファイルを標準的なＨＴＭＬブラウザで表示した結果を図２１に示しておくが、これは図２０に示した文書の合成結果とは明らかに相違する。すなわち、同じ原料文書１及び原料文書２に対して本実施例に係る構造化文書処理を実行した場合であっても、適用した雛型文書が相違すれば合成文書も異なるという点を理解されたい。
【０１７０】
以上説明したように、本実施例に係る構造化文書処理システムは、命令付与手段によって抽出命令が付与された第１の構造化文書と、同じく命令付与手段によって反復複写命令と挿入置換命令が付与された第２の構造化文書とを入力とし、解析手段によって文書毎に文書解析木を構成して、命令分離手段によって各文書から命令列を取り出し、取り出した複数の該命令列を文書処理記述合成手段によって併合、整列、及び変換を行なって文書処理記述を合成し、インタプリタによって文書処理記述を順に走査し、文書処理記述中に含まれる各命令に従って抽出手段によって第１の文書部品を第１の文書から抽出し、反復複写手段によって第２の構造化文書の文書部品を第１の文書部品の数に依存して定まる回数だけ反復複写し、挿入置換手段によって第２の構造化文書に第１の文書部品を挿入又は置換することで、構造化文書の合成を行なうことができる。
【０１７１】
本実施例に係る構造化文書処理システムによれば、
１．原料文書の構造を変更した際に、これを処理するための別に管理されるスクリプトを用意しなくてよい。
２．構造が異なる複数の原料文書を混在させて文書部品を取り出すには、各文書毎に文書部品に抽出命令を付与することで行なうので、文書毎の抽出の処理を個別に指定しなくてよい。同様に、文書部品を挿入又は置換する処理の指定も不要である。また、ユーザは、文書の構造が変わる度に適切なスクリプトを指定する必要がない。
３．文書部品は、所望の命令を元の文書中に直接的に付与することと、取り出した文書部品と挿入置換される文書部品の条件を指定すること（例えばラベル文字列が一致するなど）によって作成することができる。また、各ユーザがそれぞれの目的に応じて雛型文書をデザイン（作成）したり、所望の処理を行なう命令が組み込まれた雛型文書を選択して、ユーザ自らが原料文書と組み合わせたりすることで、文書処理アプリケーションを構成することができる。このように手続き的でない、言い換えれば宣言的な方法で文書処理を構成することができるので、プログラミングの知識を充分に持たないユーザが広く文書処理を行なうことができる。すなわち、各ユーザがそれぞれの目的に合わせた構造化文書処理のアプリケーションを容易に作成できる文書処理システムが実現できる。
【０１７２】
次いで、本発明の第２の実施例について説明する。
【０１７３】
図１０には、本発明の第２の実施例に係る構造化文書処理システムの構成を模式的に示している。本実施例では、抽出命令に代えて属性抽出命令が、挿入置換命令に代えて属性置換命令が、それぞれ付与された構造化文書に対して文書処理を実行するものである。以下、第１の実施例との相違点を中心に本実施例に関して説明する。
【０１７４】
命令付与手段は、第１の実施例と同様に、ＨＴＭＬエディタによって構成される。本実施例に係る命令付与手段は、入力される文書内に、抽出命令に代えて属性抽出命令を、挿入置換命令に代えて属性置換命令を、それぞれ埋め込む。各命令は、次のように記述される。
【０１７５】
【数３１】
2006309792.tif 000033
【０１７６】
【数３２】
2006309792.tif 000034
【０１７７】
上記において、‘ＧＥＴ’が属性抽出命令を、‘ＰＵＴ’が属性置換命令を、それぞれ表わすものとする。ここで、＜！−−＃ＧＥＴＬＡＢＥＬ タグ名−−＞及び＜！−−＃／ＧＥＴ−−＞をそれぞれ属性抽出命令開始タグ及び属性抽出命令終了タグとし、同様に、＜！−−＃ＰＵＴ ＬＡＢＥＬ タグ名 属性名−−＞及び＜！−−＃／ＰＵＴ−−＞をそれぞれ属性置換命令開始タグ及び属性置換命令終了タグとする。
【０１７８】
属性抽出命令を付与したＨＴＭＬファイルの例を以下に示す。本明細書中では、該ＨＴＭＬファイルを第３の原料文書とする。
【０１７９】
【数３３】
2006309792.tif 000035
【０１８０】
この第３の原料文書を標準的なＨＴＭＬブラウザで表示した様子を図２２に示しておく。
【０１８１】
また、属性置換命令を付与したＨＴＭＬファイルの例を以下に示す。本明細書では、該ＨＴＭＬファイルを第３の雛型文書とする。
【０１８２】
【数３４】
2006309792.tif 000036
【０１８３】
命令付与手段及び入力手段の構成及び動作特性は上記した第１の実施例と略同一なので、ここでは説明を省略する。
【０１８４】
解析手段についても第１の実施例と同様である。但し、本実施例に係る解析手段は、注釈タグについては以下の規則に従うか否かを解析する。
【０１８５】
【数３５】
2006309792.tif 000037
【０１８６】
図１１には第３の原料文書の解析木を、また、図１２には第３の雛型文書の解析木をそれぞれ示している。
【０１８７】
図１１において、属性抽出命令［０  １  ２］が付与された文書部品は［０  １  ３］のノードである。同様に、図１２において属性置換命令［０  １  ３０］が付与された文書部品は［０  １  ３ １］のノードである。これら文書部品中において、属性抽出命令又は属性置換命令で指定されたタグ名のタグをそれぞれ属性抽出命令、属性置換命令の対象タグとする。本実施例では、属性抽出命令の対象タグは＜Ａ＞タグであり、また、属性置換命令の対象タグは＜ＡＲＥＡ＞タグである。文書部品中に複数の対象タグがあってもよい。対象タグの検索は、上記した第１の実施例の場合と同様に、ツリーを行きがけ順に巡回して行ない、引数で指定されたタグ名のタグを集めることができる。
【０１８８】
命令分離手段もまた、第１の実施例のそれと略同一である。但し、第１の実施例とは相違して、オペコードは属性抽出命令であるＧＥＴと、属性挿入命令であるＰＵＴとなる。また、属性抽出命令にはタグ名、属性挿入命令にはタグ名と属性名がそれぞれ該命令の引数として付与されているため、それらをオペランドとして出力する。
【０１８９】
命令分離手段によって、第３の原料文書及び第３の雛型文書の各々から分離した命令列を以下に示す。但し、文書解析木のＩＤをそれぞれ５及び６とする。
【０１９０】
【数３６】
2006309792.tif 000038
【０１９１】
【数３７】
2006309792.tif 000039
【０１９２】
文書処理記述合成手段は、複数の原料文書または雛型文書から分離した命令列を入力し、命令列を併合し、順序の変更をし、変換と合成を行なって文書処理記述を出力する。以下で説明する点を除いては、文書処理記述合成手段は第１の実施例と同様である。
【０１９３】
■処理Ｃ：命令の合成
原料文書のＧＥＴと雛型文書のＰＵＴのすべての組み合わせのうち、ラベル文字列が一致するものでペアを構成し、これらのペアから新しい命令を合成する。この動作手順について以下に説明する。
【０１９４】
本実施例では、例えば“ＧＥＴ  ＬＡＢＥＬ  タグ名１  文書部品１”と“ＰＵＴ  ＬＡＢＥＬ  タグ名２  属性名  文書部品２”というペアから“ＳＵＢＳＴ  タグ名１  文書部品１  タグ名２  文書部品２  属性名”を合成する。ＳＵＢＳＴは、文書部品１に含まれるタグ名１のノードの属性フィールドから、属性名で指定した属性値を選択して、文書部品２に含まれるタグ名２のノードの属性フィールドに設定する命令である。この動作によって、雛型文書に含まれるタグの属性値を別のものに置き換えることが可能になる。属性値の置き換えは、タグ名が異なるペアであっても同じ名前の属性フィールドがあれば行なわれる。
【０１９５】
【数３８】
2006309792.tif 000040
【０１９６】
上記の処理によって、第３の原料文書と第３の雛型文書とから合成される文書処理記述の例を以下に示しておく。
【０１９７】
【数３９】
2006309792.tif 000041
【０１９８】
この命令は、文書５（図１１を参照のこと）のノード［０  １  ３］以下のＡタグのＨＲＥＦ属性の値を文書６（図１２を参照のこと）のノード［０  １  ３１］以下のＡＲＥＡタグのＨＲＥＦ属性に設定することを指示するものである。
【０１９９】
図１１及び図１２に示した例では、原料文書中の文書部品にＧＥＴ命令が付与されている場合を対象としたが、本実施例に係る構造化文書処理システムは、ＧＥＴ命令が雛型文書中の文書部品に付与されている場合であっても同様の処理を実現することができる。その場合、前述した命令の合成処理のＳｔｅｐ４２において、ＧＥＴ命令の配列とＰＵＴ命令の配列を別個に作成して、ＧＥＴ命令の配列をＳｔｅｐ４１で作成した配列に追加すればよい。
【０２００】
また、上述では置換する属性名がただ１つの場合について説明したが、属性置換開始命令中に属性名を“，”記号で区切って複数記述することによって、複数の属性値を一度に置き換えるようにしてもよい。
【０２０１】
次いで、インタプリタと属性抽出手段、及び属性置換手段の動作について説明する。
【０２０２】
インタプリタの基本動作は第１の実施例のそれと略同一であるので、相違する点を中心に説明する。インタプリタは、入力された文書処理記述のオペコードがＳＵＢＳＴであれば、オペランドで指定された文書部品１の文書部品ＩＤとタグ名１を属性抽出手段へ入力する。また、文書部品２の文書部品ＩＤとタグ名２、及び属性名を属性置換手段へ入力する。
【０２０３】
属性抽出手段は、インタプリタから入力された文書部品ＩＤから、指定された文書解析木のノードをアドレスに従って取り出す。そして、そのノード以下から、入力されたタグ名に一致する対象タグ１のノードを行きがけ順に探索して、最初に見つかったノードを返す。
【０２０４】
属性置換手段は、インタプリタから入力された文書部品ＩＤから、指定された文書解析木のノードをアドレスに従って取り出す。そして、そのノード以下のすべてのノードの中から、入力されたタグ名に一致する対象タグ２のノードを行きがけ順に探索する。そして、見つかった対象タグ２のノードの属性フィールドの中で、インタプリタから入力された属性名と一致するものの属性値を、対象タグ１の属性名のものの属性値で置き換える。対象タグ２が複数ある場合は、この置き換える処理を繰り返す。
【０２０５】
また、前記Ｓｔｅｐ４６とＳｔｅｐ４７に代えて、以下のＳｔｅｐ４６ａとＳｔｅｐ４７ａとしてもよい。
【０２０６】
Ｓｔｅｐ４６ａ：ＧＥＴ配列のｍ番目の要素として格納されたＧＥＴ命令オペランド中のタグ名であるタグ名１と、文書部品ＩＤである文書部品１を取り出す。文書部品１のノードから、解析木を行きがけ順に巡回して、タグ名１の対象タグ１を検索する。ＰＵＴ配列のｍ番目の要素として格納されたＰＩＴ命令オペランド中のタグ名であるタグ名２と属性名と文書部品ＩＤである文書部品２を取り出す。文書部品２のノードから、解析木を行きがけ順に巡回して、タグ名２の対象タグ２を検索する。
Ｓｔｅｐ４７ａ： 文書処理記述に次の命令を追加する。この例では、オペコードはＳＵＢＳＴで、オペランドは、対象タグ１（の文書部品ＩＤ）、対象タグ２（の文書部品ＩＤ）、属性名である。
ＳＵＢＳＴ    対象タグ１    対象タグ２    属性名
【０２０７】
上記の処理によって、第３の原料文書と、第３の雛型文書とから合成される別の文書処理記述例を示す。
【０２０８】
【数４０】
2006309792.tif 000042
【０２０９】
この命令は、文書５（図１１を参照のこと）のノード［０  １  ２］の（Ａタグの）ＨＲＥＦ属性値を文書６（図１２を参照のこと）のノード［０  １  ３１］の（ＡＲＥＡタグの）ＨＲＥＦ属性に設定するものである。
【０２１０】
インタプリタは、入力された文書処理記述のオペコードＳＵＢＳＴのオペランドで指定された対象タグ１の文書部品ＩＤと属性名を属性抽出手段へ入力する。また対象タグ２の文書部品ＩＤと属性名を属性置換手段へ入力する。
【０２１１】
属性抽出手段と属性置換手段は、入力された文書部品ＩＤからアドレスに従って対象タグ１又は対象タグ２を取り出した後、対象タグ１の指定された属性名の属性値を取り出し、又は対象タグ２の属性値と置換する。
【０２１２】
第３の原料文書と第３の雛型文書とから合成した結果のＨＴＭＬファイルを以下に示す。
【０２１３】
【数４１】
2006309792.tif 000043
【０２１４】
また、第３の原料文書と第３の雛型文書とから合成した結果のＨＴＭＬファイルを標準的なＨＴＭＬブラウザで表示した様子を図２３に示しておく。
【０２１５】
第３の雛型文書の例では、表示される画像（チャート：ｉｍａｇｅｓ／ｃｈａｒｔ．ｇｉｆ）の指定された座標位置（ｃｏｏｒｄｓ＝０，２０，２００，８５）をクリックすることにより、リンク先のページをたどっていくことができる。本実施例の文書処理によって、第３の雛型文書では指定されていなかったリンク先が第３の原料文書で指定されていたもの（ｈｔｔｐ：／／ｓａｍｐｌｅ．ｃｏｍ）に置換されている。
【０２１６】
次いで、本発明の第３の実施例について説明する。本実施例では、抽出命令に代えてパス名付き抽出命令が、反復複写命令に代えてパターン式付き反復複写命令が、挿入置換命令に代えてパターン式付き挿入置換命令が、それぞれ付与された構造化文書に対して文書処理を実行するものである。以下、第１の実施例との相違点を中心に本実施例に関して説明する。
【０２１７】
命令付与手段は、第１の実施例と同様に、ＨＴＭＬエディタによって構成される。本実施例に係る命令付与手段は、入力される文書内に、抽出命令に代えてパス名付き抽出命令を、反復複写命令に代えてパターン式付き反復複写命令を、挿入置換命令に代えてパターン式付き挿入置換命令を、それぞれ埋め込む。各命令は、次のように記述される。
【０２１８】
【数４２】
2006309792.tif 000044
【０２１９】
【数４３】
2006309792.tif 000045
【０２２０】
【数４４】
2006309792.tif 000046
【０２２１】
入力手段、解析手段、及び命令分離手段の各々は第１の実施例と略同一である。但し、命令分離手段については、ラベル文字列の代りにパス名又はパターン式をオペランドとして抽出する。これは、上記第１の実施例において説明した正規表現による文字列マッチを用いて容易に実現可能であるので、ここでは詳しく説明しない。
【０２２２】
本実施例では、第１の原料文書（図３を参照のこと）のラベル文字列の「グループ」及び「サマリ」に代えて、パス名として「月報／グループＡ」及び「月報／サマリＡ」にした構造化文書を第４の原料文書（原料文書４）として用いる。また、第２の原料文書（図４を参照のこと）のラベル文字列「グループ」及び「サマリ」に代えて、パス名「月報／グループＢ」及び「月報／サマリＢ」にした構造化文書を第５の原料文書（原料文書５）とする。また、第２の原料文書のラベル文字列「グループ」及び「サマリ」に代えて、パス名「月報／グループＥ」及び「月報／サマリＥ」にした構造化文書を第６の原料文書（原料文書６）とする。
【０２２３】
本実施例では、パターン式は正規表現とする。
【０２２４】
また、第１の雛型文書のラベル文字列の「グループ」及び「サマリ」に代えて、パターン式として「．＊／グループ［Ａ−Ｄ］」、「．＊／サマリ［Ａ−Ｄ］」にした構造化文書を第４の雛型文書（雛型文書４）とする。ここで言う正規表現「．＊／グループ［Ａ−Ｄ］」の意味は、任意の文字列（．＊）の後に‘／グループ’が続き、次に、‘Ａ’か‘Ｂ’か‘Ｃ’か‘Ｄ’のいずれかが続く文字列とマッチするパターンである。
【０２２５】
命令分離手段によってそれぞれの文書から分離した命令列を以下に示す。
【０２２６】
【数４５】
2006309792.tif 000047
【０２２７】
【数４６】
2006309792.tif 000048
【０２２８】
【数４７】
2006309792.tif 000049
【０２２９】
【数４８】
2006309792.tif 000050
【０２３０】
次いで、本実施例の文書処理記述合成手段について説明する。但し、本実施例では、ラベル文字列の一致に代えて、パス名とパターン式のパターン・マッチを行なう以外は、第１の実施例における文書処理記述合成手段と略同一の処理を行なう。ここでは、原料文書４と原料文書５と雛型文書４のそれぞれから分離した命令列から文書処理記述を構成する処理を例にとってその動作特性について説明することにする。
【０２３１】
■処理Ａ：  ＯＵＴの計数
第１の実施例の処理Ａで行なったＯＵＴの計数は行なわない。
【０２３２】
■処理Ｂ：  ＲＰによる各命令の複写
雛型文書１の命令列において、命令列中にＲＰが含まれていた場合、すべてのＲＰのオペランドの文書部品中に含まれるＩＮとＯＵＴとＲＰを、原料文書のＯＵＴ命令のうち、パス名とパターン式のパターン・マッチングを行なって、マッチが成功した個数に従って複写する。この複写は各１つの雛型文書について、次のＳｔｅｐ５１〜Ｓｔｅｐ５６を実行することで行なわれる。正規表現のパターン・マッチングは、例えば、ＵＮＩＸ（登録商標）上のｇｒｅｐコマンド（周知）などを用いることで実現される。
【０２３３】
【数４９】
2006309792.tif 000051
【０２３４】
パターン式「．＊／グループ［Ａ−Ｄ］」は、「月報／グループＡ」と「月報／グループＢ」とのパターン・マッチは成功するが、「月報／グループＥ」とのパターン・マッチは失敗する。したがって、上述の例では複写回数ｔ＝２となる。
【０２３５】
【数５０】
2006309792.tif 000052
【０２３６】
■処理Ｃ：命令の合成
原料文書中のＯＵＴ命令と雛型文書中のＩＮ命令とのすべての組み合わせのうち、パス名とパターン式のパターン・マッチングが成功するもの同士でペアを構成し、これらのペアから新しい命令を合成する。以下、この命令の合成動作について説明する。
【０２３７】
本実施例では、例えば“ＯＵＴ  パス名  文書部品１”と“ＩＮ  パターン式  文書部品２”というペアから“ＦＩＬＬ  文書部品１  文書部品２”を合成する。ＦＩＬＬは、文書部品２を文書部品２と置換する命令を表す。この動作によって、原料文書に出現する文書部品の出現順にかかわらず、雛型文書の中でユーザが所望する任意の位置に、原料文書の文書部品を置換又は挿入することが可能になる。
【０２３８】
【数５１】
2006309792.tif 000053
【０２３９】
上記の処理手順によって文書処理記述が合成される。合成された文書処理記述の例を以下に示す。
【０２４０】
【数５２】
2006309792.tif 000054
【０２４１】
上述した例では、パターン・マッチに失敗したＯＵＴ命令のオペランドで指定された文書部品は、雛型文書に挿入又は置換が行なわれないことに留意されたい。
【０２４２】
本実施例に係る構造化文書処理システムによって、原料文書４と原料文書５と原料文書６と雛型文書４から合成されるＨＴＭＬファイルを以下に示す。
【０２４３】
【数５３】
2006309792.tif 000055
【０２４４】
図２４には、上記のＨＴＭＬファイルを標準的なＨＴＭＬブラウザ上で表示した様子を示している。
【０２４５】
本発明の第３の実施例は、第１の実施例と同様の作用効果を奏することができる。但し、ラベル文字列に代えてパターン式を用いたことにより、より柔軟で複雑な文書処理記述を合成することが可能となる点には充分理解されたい。
【０２４６】
次いで、本発明の第４の実施例について説明する。本実施例は、文書処理記述合成手段と挿入置換手段に代えて、以下に説明する文書処理記述合成手段と挿入置換手段を有するという点で、上記の第３の実施例とは顕著に相違する。
【０２４７】
本実施例における命令文書処理記述合成手段が実行する処理Ｃについて以下に説明する。
【０２４８】
■処理Ｃ：  命令の合成
原料文書中のＯＵＴ命令と雛型文書中のＩＮ命令とのすべての組み合わせのうち、パス名とパターン式のパターン・マッチングが成功するもの同士でペアを構成し、これらペアから新しい命令を合成する。以下、この命令の合成動作について説明する。
【０２４９】
本実施例では、例えば“ＯＵＴ  パス名  文書部品１”と“ＩＮ  パターン式  文書部品２”というペアから“ＦＩＬＬ  文書部品１  文書部品２  パス名”を合成する。ＦＩＬＬは、文書部品２を文書部品２と置換する命令を表す。ＦＩＬＬは、文書部品１を文書部品２と置換する命令を表す。加えて、挿入置換命令開始タグと挿入置換命令終了タグを、抽出命令開始タグと抽出命令終了タグにそれぞれ置換する命令を表す。この動作によって原料文書に出現する文書部品の出現順にかかわらず、雛型文書中でユーザが所望する任意の位置に、原料文書の文書部品を置換又は挿入することが可能になる。加えて、処理をした結果合成された文書を入力とし、本実施例に係る構造化文書処理システムによって再び処理する際には、元の原料文書に含まれる文書部品を識別することが可能になる。
【０２５０】
【数５４】
2006309792.tif 000056
【０２５１】
パス名は、原料文書から分離した抽出命令（ＩＮ命令）のオペランドから取り出したパス名文字列に加えて、所定の名前の環境変数やグローバル変数に代入されている文字列、あるいは、本実施例に係る構造化文書処理システムを起動した際に引数として引き渡される文字列を、適当な区切り文字で区切って付与してもよい。付与する前記文字列を履歴文字列と呼ぶ。上述した例では、区切り文字として“／”を用い、履歴文字列としてホスト名を与えている。但し、ホスト名は“総務部”とする。この処理によって合成された文書処理記述の例を示す。
【０２５２】
【数５５】
2006309792.tif 000057
【０２５３】
次いで、インタプリタと挿入置換手段について説明する。
【０２５４】
インタプリタは、文書処理記述のＦＩＬＬ命令を解釈して、挿入置換手段に、文書部品１と文書部品２とパス名を入力する。これ以外の点については実施例１のインタプリタと略同一である。
【０２５５】
挿入置換手段は、文書部品２で指定されるＩＤの文書部品にもともと付与されている挿入置換命令である挿入置換命令開始タグと挿入置換命令終了タグを、それぞれ抽出命令開始タグと抽出命令終了タグに置き換える。また、インタプリタから入力されたパス名を抽出命令開始タグに付与する。この置き換え処理は、ＨＴＭＬファイル中のそれぞれの注釈タグの注釈文字列を置き換えることによって容易に実現できる。この点以外は、上述した第１の実施例における挿入置換手段と略同一である。
【０２５６】
本実施例に係る構造化文書処理システムによって、原料文書４と原料文書５と雛型文書４から合成されるＨＴＭＬファイルを以下に示す。
【０２５７】
【数５６】
2006309792.tif 000058
【０２５８】
図２５には、上記のＨＴＭＬファイルを標準的なＨＴＭＬブラウザ上で表示した様子を示している。
【０２５９】
本発明の第４の実施例は、第１の実施例と同様の作用効果を奏することができるとともに、さらに、原料文書の抽出命令とパス名を合成結果の構造化文書の文書部品に継承して付与することができる。
【０２６０】
本実施例に係る構造化文書処理システムを複数段接続してパイプラインを構成することによって、最初の構造化文書処理システムで出力された原料文書に含まれている文書部品は、２段目以降の構造化文書処理ではパス名を調べることで識別することができる。この機能によって、より柔軟で複雑な構造化文書処理を実現することが可能となる。
【０２６１】
次いで、本発明の第５の実施例について説明する。
【０２６２】
上述した第１の実施例では、構造化文書処理システムは、ＨＴＴＰリクエストを入力して、所定の構造化文書の処理を行ない、合成した構造化文書をＨＴＴＰレスポンスとして出力するＨＴＴＰサーバとして構成される。これに対し、本実施例では、ＨＴＴＰリクエストに処理起動記述が埋め込まれている。ここで言う処理起動記述は、原料文書のＵＲＬと雛型文書のＵＲＬの双方を含むものとする。
【０２６３】
本実施例に係る構造化文書処理システムは、このような処理起動記述を解析して、原料文書のＵＲＬと雛型文書のＵＲＬとを取り出す処理起動記述解析手段をさらに具備している。そして、処理起動記述解析手段によって解析した結果として取り出されたＵＲＬに基づいて、入力手段により原料文書や雛型文書を入力して処理することができる。図１３には、本実施例に係る構造化文書処理システムの構成を模式的に示している。以下、第１の実施例と相違する点を中心に該システムの構成及び動作特性について説明する。
【０２６４】
処理起動記述は、ＨＴＴＰリクエストに、構造化文書処理装置の原料文書のＵＲＬと、雛型文書のＵＲＬを埋め込むことで構成される。本実施例では、特に、ＨＴＴＰリクエストに含まれているＵＲＬ文字列中に、所定の文法形式で、原料文書のＵＲＬと雛型文書のＵＲＬが埋め込まれる。
【０２６５】
ＨＴＴＰリクエストのＵＲＬ中に別のＵＲＬを埋め込んだものを「ヴァーチャルＵＲＬ」と呼ぶ。すなわち、本実施例に係る処理起動記述はヴァーチャルＵＲＬとして構成される。なお、処理起動記述の文法と、該文法に従って埋め込む方法と取り出す方法に関しては、例えば、本出願人に既に譲渡されている特許第２７４６２１８号公報（特開平８−２９２９１０号）「資源管理装置および資源管理方法」に詳述されているので、必要であれば参照されたい。
【０２６６】
処理起動記述解析手段は、ＨＴＴＰリクエストを所定の文法形式に従って解析して、原料文書のＵＲＬと雛型文書のＵＲＬの各々を取り出す。構造化文書処理システムにおける処理起動記述解析手段以外の機能ブロックの構成及び動作特性は、第１の実施例と略同一である。
【０２６７】
構造化文書処理サーバは、ＨＴＴＰリクエストのＵＲＬ中に原料文書のＵＲＬと雛型文書のＵＲＬを含んだ形式の処理起動記述を受け取って、この処理起動記述に指定された原料文書と雛型文書を入力して文書処理記述を合成して、さらに該文書処理記述を解釈して構造化文書処理を行なうことができる。
【０２６８】
本実施例において利用される処理起動記述の例を以下に示す。
【０２６９】
【数５７】
2006309792.tif 000059
【０２７０】
上記に示した処理起動記述の例では、雛型文書のＵＲＬは、文字列“ｔｅｍｐｌａｔｅ＝”以降で、次の“＆”の前までに埋め込まれている。元々のＵＲＬに含まれていた“：”と“／”は、それぞれ“％３Ａ”と“％２Ｆ”にエンドコードされ変換されている。また、原料文書１と原料文書２に関するＵＲＬについても同様に、それぞれ文字列“ｆｉｌｅ１＝”以降から次の“＆”の前まで、並びに、文字列“ｆｉｌｅ２＝”以降に埋め込まれている。
【０２７１】
特許第２７４６２１８号公報に示すようなＵＲＬの表記方式によれば、２段階に構造化文書処理サーバを起動するヴァーチャルＵＲＬを階層的に構成することができる。例えば、原料文書や雛型文書は既に他の構造化文書処理サーバで処理した結果であってもよい。但し、この場合の原料文書や雛型文書のＵＲＬは、第２の構造化文書処理サーバのＵＲＬに基づくヴァーチャルＵＲＬである。
【０２７２】
【数５８】
2006309792.tif 000060
【０２７３】
図１４には、上述したような第２の処理起動記述によって起動される処理の流れを示している。
【０２７４】
第２の構造化文書処理サーバ（ｓｅｒｖｅｒ２）には、雛型文書２（Ｔｅｍｐｌａｔｅ２．ｈｔｍｌ）を用いて原料文書３を処理する旨のＨＴＴＰリクエストが入力される。このＨＴＴＰリクエストはヴァーチャルＵＲＬを用いて記述される。
【０２７５】
雛型文書２（Ｔｅｍｐｌａｔｅ２．ｈｔｍｌ）は、ＷＷＷサーバ（ｈｏｓｔ３）によって提供されており、通常のＵＲＬ表記“ｈｔｔｐ：／／ｈｏｓｔ３／Ｔｅｍｐｌａｔｅ２．ｈｔｍｌ”によって指定される。
【０２７６】
他方、原料文書３は、第１の構造化文書処理サーバ（ｓｅｒｖｅｒ１）によって処理された結果である。より具体的には、該処理結果とは、ＷＷＷサーバ（ｈｏｓｔ１）の資源である原料文書１（Ｓａｍｐｌｅ１．ｈｔｍｌ）と、ＷＷＷサーバ（ｈｏｓｔ２）の資源である原料文書２（Ｓａｍｐｌｅ２．ｈｔｍｌ）とを、ＷＷＷサーバ（ｈｏｓｔ３）の資源である雛型文書１（Ｔｅｍｐｌａｔｅ１．ｈｔｍｌ）を用いて処理したものである。
【０２７７】
したがって、第１の構造化文書処理サーバは、原料文書１、原料文書２、及び雛型文書１を各ＷＷＷサーバから入力して、その処理結果である原料文書３を第２の構造化文書処理サーバに渡す。
【０２７８】
次いで、第２の構造化文書処理サーバは、さらにＷＷＷサーバ（ｈｏｓｔ３）から原料文書２を入力して、原料文書３を処理して、この処理結果である構造化文書をＨＴＴＰレスポンスとして要求元に返す。
【０２７９】
図１３に示したような構造化文書処理システムによれば、分散的に文書処理命令を管理し処理することができる。したがって、文書の改定や処理システムの変更に対して、より柔軟な文書処理を提供することができる。文書を処理するサーバをモジュールとして取り扱うことができるので、原料文書や雛形文書と文書処理モジュールを文書処理記述上で組み合わせることで、エンド・ユーザが容易にカストマイズすることができる柔軟な文書処理システムを構築することができる。
【０２８０】
次いで、本発明の第６の実施例について説明する。
【０２８１】
本実施例は、上記第５の実施例に係る第１の構造化文書処理サーバ及び第２の構造化文書処理サーバが、単一のデータベースを共有する構成を備えているものである。
【０２８２】
データベースには、識別子としてＵＲＬ又は処理起動記述をキーとして、このＵＲＬ又は処理起動記述に対応する構造化文書の解析木が格納されている。したがって、ＵＲＬ又は処理起動記述を指定することで、所望の構文解析木を取り出すことができる。このようなデータベースは、ＵＲＬ又は処理起動記述から適当なハッシュ値を計算し、解析木を実現するデータへのポインタを格納したハッシュ法による表の探索で実現できる（ハッシュ法については、例えば「岩波書店アルゴリズムとデータ構造」２．７節 ｐ１２３−１３７に詳述されている）。
【０２８３】
図１５には、本実施例に係る第１の合成サーバの機能ブロック図を示している。本実施例においては、第２の（すなわち後続の）合成サーバは、第１の合成サーバと略同一の構成及び動作特性を有するものと理解されたい。
【０２８４】
第１の合成サーバは、ＨＴＴＰリクエストを入力して、所定の構造化文書の処理を行ない、合成した構造化文書をＨＴＴＰレスポンスとして出力するＨＴＴＰサーバとして実現されている。本実施例は、以下の２点を除き、第１の実施例と略同一である。
【０２８５】
（１）抽出手段、反復複写手段、並びに置換挿入手段は、解析手段から構文解析木を入力する代わりに、切り替え手段を経由して構文解析木を入力する。
（２）切り替え手段は、システムの状態を調べて、解析手段から構文解析木を入力するか、又は、保持手段から構文解析木を入力するかを切り替える。
【０２８６】
システムの状態は、例えば、処理中の処理起動記述をキーとして、保持手段の中に該当する構文解析木があるかどうかを調べることで判定できる。
【０２８７】
保持手段に該当する構文解析木が格納されていれば、改めて構造文書を解析する必要はないので、保持手段から構文解析木を入力するように切り替える。この場合、構文解析木は、図１５中の記号（い）で示された一点破線の矢印方向に従って処理される。
【０２８８】
他方、保持手段に該当する構文解析木が格納されていない場合には、切り替え手段は、解析手段から新たに構文解析木を入力するように切り替える。この場合、図１５中の記号（ろ）で示された一点破線の矢印方向に従って、入出力が行なわれる。
【０２８９】
本実施例に係る構造化文書処理システムの構成によれば、第１の合成サーバで処理した結果は、構文解析木のまま第２（後続）の合成サーバに入力することができる。したがって、出力手段による構造化文書のＨＴＭＬへの変換と、解析手段によるＨＴＭＬの解析という２つの処理を省略することができる。
【０２９０】
また、第１の合成サーバにおいて一旦計算した結果は保持手段に格納されるので、第２の合成サーバが第１の合成サーバに処理起動記述を入力して第１の合成サーバが改めて処理を行なう代わりに、既に計算されている前記処理起動記述に対応する構文解析木を利用することで、第１の合成サーバでの計算や合成処理を省略することができる。
【０２９１】
したがって、従来に比べ処理性能の優れた効率的な分散文書処理を実現することができる。
【０２９２】
次いで、本発明の第７の実施例について説明する。
【０２９３】
図１６には、本発明の第７の実施例に係る構造化文書処理システムの構成を模式的に示している。本実施例は、上述した第２の実施例の構成に対して、第５の実施例に係る処理起動記述解析手段をさらに追加したものである。
【０２９４】
第２の実施例では、属性抽出命令及び属性置換命令がそれぞれ指定していた文書部品の間で属性置換を行なっていた。これに対し、本実施例では、属性抽出命令が文書部品ではなく手続き名を指定する。属性置換命令は、指定した文書部品の属性を、属性抽出命令で指定された手続きで変換したものに置き換える。処理起動記述解析手段については第５の実施例のそれと略同一であるので、以下では第２の実施例との相違点を中心に説明することにする。
【０２９５】
本実施例では、属性抽出命令を以下のような形式で記述する。
【０２９６】
【数５９】
2006309792.tif 000061
【０２９７】
第２の実施例の場合とは相違し、属性抽出命令には置換する対象のタグ名を指定する必要がなく、開始タグと終了タグの間に文書部品を挟む必要もない。属性置換命令は、第２の実施例と同一である。
【０２９８】
属性抽出命令を付与したＨＴＭＬファイルを第４の原料文書とし、以下に示す。
【０２９９】
【数６０】
2006309792.tif 000062
【０３００】
解析手段は、注釈タグが以下の規則に従うかを解析する。
【０３０１】
【数６１】
2006309792.tif 000063
【０３０２】
属性抽出命令には対象タグがないので、文書部品から対象タグを探す処理も行なわない。
【０３０３】
命令分離手段も第２の実施例と同様であるが、属性抽出命令にはタグ名ではなく手続き名が引数として付与されているため、これをオペランドとして出力する。命令分離手段によって第４の原料文書から分離した命令列を以下に示す。
【０３０４】
【数６２】
2006309792.tif 000064
【０３０５】
文書処理記述合成手段は、処理Ｃすなわち命令の合成において、第２の実施例と相違する。文書処理記述合成手段は、属性抽出命令と属性置換命令とのペアから新しい命令を合成するが、例えば、“ＧＥＴ  ＬＡＢＥＬ  手続き名”と“ＰＵＴ  ＬＡＢＥＬ  タグ名  属性名  文書部品”のペアから、“ＳＵＢＳＴ  手続き名  タグ名  文書部品  属性名”を合成する。ＳＵＢＳＴは、文書部品に含まれるタグ名のノードの属性フィールドから属性名で指定した属性値を選択して、手続き名で指定した手続きで属性値を変換する命令である。
【０３０６】
処理手順は、Ｓｔｅｐ４６以降が第２の実施例とは相違し、以下の通りとなる。
【０３０７】
【数６３】
2006309792.tif 000065
【０３０８】
上記の処理によって、第４の原料文書と第３の雛型文書とから合成される文書処理記述例を以下に示す。
【０３０９】
【数６４】
2006309792.tif 000066
【０３１０】
この命令は、文書６のノード［０  １  ３ １］以下のＡＲＥＡタグのＨＲＥＦ属性の値をＰｒｏｃ１で変換したものに置き換えることを指示するものである。
【０３１１】
インタプリタは、ＳＵＢＳＴ命令を属性置換手段に入力する。本実施例の属性置換手段の動作は、第２の実施例のそれとは異なり、ＳＵＢＳＴ命令を解釈して次のように動作する。すなわち、対象タグのＨＲＥＦ属性の属性値を第１の引数として、手続きＰｒｏｃ１を呼び出して、Ｐｒｏｃ１の返り値として得られた文字列を新たなＨＲＥＦ属性として対象タグに設定する。但し、手続きの呼び出しは普通に知られる手続き呼び出し（サブルーチン・コール）であり、ＨＲＥＦ属性の取り出しやＨＲＥＦ属性の設定は通常の文字列の分離又は結合である。
【０３１２】
属性値を変換する手続きとしては、例えば次のようなものが考えられる。属性置換命令を付与した文書部品が属性値フィールドにＵＲＬを設定できる種類のタグのノードを含んでいる場合には、そのＵＲＬ文字列を第５の実施例で説明した処理起動記述（ヴァーチャルＵＲＬ）に変換する。例えば、元のＵＲＬに設定されている雛型文書と文書を特定する文字列を解析し、それらを元に新たな処理起動記述を合成して返すような手続きである。このようなＵＲＬ文字列は、手続きの引数として受け渡される。
【０３１３】
ここで、変換前のＵＲＬの記述例と変換後の処理起動記述の例を示す。但し、この例では、処理起動記述解析手段に入力された処理起動記述が含んでいる原料文書のうち２番目のものを、新たに合成する処理起動記述に含める原料文書とする。また、新たに合成する処理起動記述に含める雛型文書は、入力された処理起動記述が含んでいる雛型文書とは別のものにする。
【０３１４】
【数６５】
2006309792.tif 000067
【０３１５】
【数６６】
2006309792.tif 000068
【０３１６】
【数６７】
2006309792.tif 000069
【０３１７】
また、手続きの別の例として、新たに処理起動記述を合成するのではなく、元の処理起動記述に含まれる原料文書のＵＲＬをそのまま返すようなものも考えられる。
【０３１８】
変換前のＵＲＬの記述例と変換後の処理起動記述の例を以下に示す。但し、処理起動記述解析手段に入力された処理起動記述が含んでいる原料文書のうちの最初のものを原料文書とする。
【０３１９】
【数６８】
2006309792.tif 000070
【０３２０】
【数６９】
2006309792.tif 000071
【０３２１】
【数７０】
2006309792.tif 000072
【０３２２】
上記の例で示した変換前のＵＲＬは、ここで定義した独自の記述方法である。変換前のＵＲＬは、第３の雛型文書の例ではＡＲＥＡタグのＨＲＥＦ属性値として設定すればよい。
【０３２３】
また、手続きの引数としてＯＳのシステム・コールを用いて得られる日時やシステムの状態変数などを利用するようにしてもよい。
【０３２４】
次いで、本発明の第８の実施例について説明する。
【０３２５】
図１７には、本発明の第８の実施例に係る構造化文書処理システムの構成を模式的に示している。本実施例は、上述した第６の実施例の構成に対して、処理起動記述合成手段と、エラー通知文書合成手段をさらに追加したものである。
【０３２６】
本実施例の命令分離手段は、第１の実施例に係る命令分離手段が有する動作に加え、命令列を抽出する際に検出される命令の文法的なエラーを検出して、エラー情報をエラー通知文書合成手段に入力するようになっている。ここで言うエラー情報は、エラーの種類やエラーの検出された文書中の位置（行数）など、通常のエラー処理でよく扱われるものとする（命令分離手段におけるエラーの検出やエラー処理の実現方法については、例えば、岩波講座ソフトウェア科学５「プログラミング言語処理系」（岩波書店）のＰ８９，Ｐ１２３−１２５，２０６−２０８に詳解されている）。
【０３２７】
また、本実施例の出力手段は、第１の実施例に係る出力手段が持つ機能に加えて、処理起動記述合成手段によって合成された処理起動記述を、出力結果としてのＨＴＭＬ形式文書に挿入するように動作するようになっている。この動作手順について以下に説明する。
【０３２８】
エラー通知文書合成手段は、エラー情報を入力して、エラー通知を行なう文書を合成する。エラー情報は例えばエラー番号とし、エラー文書はエラー番号をファイル名とするファイルとする。エラー通知文書合成手段は、命令解析手段から入力されたエラー番号をファイル名とみなして、ファイルからエラー通知文書の１つを入力する。入力された文書は、解析手段を用いて構文解析木が作られる。構文解析木を作る動作は、第１の実施例の場合と同様である。構文解析木は後述するように保持手段に保持されるが、必ずしも構文解析木を作る必要はなく、文字列情報のまま保持手段に保持してもよい。例えば、エラー番号１は、抽出命令開始タグと抽出命令終了タグの対応がとれないエラーであるとし、エラー通知文書のファイル名はファイル１．ｈｔｍｌとする。ファイルの例を示す。
【０３２９】
【数７１】
2006309792.tif 000073
【０３３０】
処理起動記述合成手段は、エラー通知ページをアクセスするためのＵＲＬを合成する。例えば、この文書処理を行なった合成サーバが“ｓｅｒｖｅｒ”であって、文書処理を行なったプロセスのプロセス番号が１２３４５番であったとすると、以下に示すようにプロセス番号を含むＵＲＬを合成する。
【０３３１】
【数７２】
2006309792.tif 000074
【０３３２】
次いで、本実施例の出力手段の動作について、第１の実施例との相違点を中心に説明する。例えば、上述したような処理起動記述が入力されると、文字列＜ＭＥＴＡ  ＵＳＥＲＬＯＧ＝“ｈｔｔｐ：／／ｓｅｒｖｅｒ／ＨＴＭＬＴｏｏｌｓ？ｍｅｔｈｏｄ＝ｕｓｅｒｌｏｇ＆ｐｉｄ＝１２３４５”＞を合成して、出力されるＨＴＭＬ形式の文書に挿入する。このような挿入は、通常知られる単純な文字列合成や文字列挿入処理である。挿入された結果のＨＴＭＬ形式の文書の一部（例７−Ａ）を以下に例示しておく。
【０３３３】
【数７３】
2006309792.tif 000075
【０３３４】
また、別の文字列を合成して挿入した例７−Ｂを以下に示す。
【０３３５】
【数７４】
2006309792.tif 000076
【０３３６】
エラー通知文書合成手段で合成されたエラー通知文書は、処理起動記述合成手段で合成されたＵＲＬをキー情報として、保持手段に格納され保持される。この保持手段に文書を格納する動作は第６の実施例とは相違する。
【０３３７】
上述した第６の実施例では、ＷＷＷクライアントからのリクエストすなわちＨＴＴＰリクエストとして、第１の処理起動記述が与えられる。次いで、処理起動記述処理が行なわれ、処理結果として合成された文書が第１の処理起動記述をキーとして保持手段に格納される。これに対し、本実施例では、後のエラー通知文書を得るための第２の処理起動記述を、エラー通知文書のリクエストに先行して合成サーバ側で合成し、（実際のリクエストが入力されるより前に）保持手段に格納するように動作するようになっている。
【０３３８】
合成サーバｓｅｒｖｅｒにおいて文書処理を実行した際にエラーが発生した場合を例にとって以下に説明してみる。
【０３３９】
上述した例７−Ａのタイプの場合には、利用者は、ｓｅｒｖｅｒから出力されるＨＴＴＰレスポンスによって送信されるＨＴＭＬ形式の文書の内容からＵＳＥＲＬＯＧ属性を有するＭＥＴＡタグを検索して、エラー通知文書の処理起動記述に相当するＵＲＬを得る。利用者は、このＵＲＬを含む第２のＨＴＴＰリクエストをｓｅｒｖｅｒに送信する。合成サーバは、処理起動記述解析手段によりＨＴＴＰリクエストに含まれる処理起動記述を取り出し、これをキーとして保持手段から文書を検索し、エラー通知文書を得る。それ以降は、第１の実施例の場合と同様の動作手順を実行して、新たなＨＴＴＰレスポンスとしてエラー通知文書を出力する。
【０３４０】
エラー通知文書を雛型文書として取り扱えば、適当な文書処理が行なわれて、出力される。この場合、エラーが発生した位置（行数）やエラーが発生した文書のＩＤなどを挿入することが考えられる。このような文書処理に対する引数（入力パラメータ）は、ＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）として当業界において広く知られているＨＴＴＰサーバに対するＵＲＬの記述方法に従って文書処理記述中に含めることができる。
【０３４１】
また、例７−Ｂに示すようなタイプの場合には、ＵＲＬを含む第２のＨＴＴＰリクエストを自動的に送信するスクリプト記述（例えばＪａｖａＳｃｒｉｐｔ言語）をｓｅｒｖｅｒが出力する（第１の）ＨＴＴＰレスポンスによって送信されるＨＴＭＬ文書中に挿入することで、人手の介入をすることなく自動的にエラー通知文書を得ることができる。例えば、ＷＷＷブラウザ側では、第１のＨＴＴＰレスポンスを受信すると、ＨＴＭＬ形式の文書に含まれるスクリプトを実行する。そのスクリプトは、前記処理起動記述をｓｅｒｖｅｒに送って得られるエラー通知文書を、所定のウィンドウを開いて表示するものとなっている。それ以外の動作は、例７−Ａと略同一であると理解されたい。
【０３４２】
要言すれば、本実施例の構成では文書処理の途中で発生したエラーを、文書処理の合成結果とは別にして利用者に通知することができる。したがって、高度で柔軟な文書処理アプリケーションを構成できる。さらに、エラーが発生した時点でエラー通知文書を生成して、文書処理の結果を一時的に格納する保持手段に（エラー通知文書のリクエストに先行して）格納し、後のエラー通知文書の要求に対して出力するように動作することができる。このため、エラーを発生したプロセスとエラーの種類やエラーに関する情報を対応付けて保持するような機構を用意する必要がなくなる。
【産業上の利用可能性】
【０３４３】
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。
【図面の簡単な説明】
【０３４４】
【図１】本発明に係る構造化文書処理システムの基本概念を示した機能ブロック図である。
【図２】本発明の第１の実施例に係る構造化文書処理システムの構成を模式的に示した機能ブロック図である。
【図３】第１の原料文書を解析木として表現した図である。
【図４】第２の原料文書を解析木として表現した図である。
【図５】第１の雛型文書を解析木として表現した図である。
【図６】第２の雛型文書を解析木として表現した図である。
【図７】雛型文書１に対して、文書処理記述例１のＲＰ命令で反復複写した結果の文書解析木の例を示した図である。
【図８】雛型文書２に対して、文書処理記述例２のＲＰ命令で反復複写した結果の文書解析木の例を示した図である。
【図９】第１の原料文書と第２の原料文書と第１の雛型文書から合成した文書の解析木を示した図である。
【図１０】本発明の第２の実施例に係る構造化文書処理システムの構成を模式的に示した機能ブロック図である。
【図１１】第３の原料文書の解析木を示した図である。
【図１２】第３の雛型文書の解析木を示した図である。
【図１３】本発明の第５の実施例に係る構造化文書処理システムの構成を模式的に示した機能ブロック図である。
【図１４】第２の処理起動記述によって起動される処理の流れを示した図である。
【図１５】本発明の第６の実施例に係る構造化文書処理システムの構成を模式的に示した機能ブロック図である。
【図１６】本発明の第７の実施例に係る構造化文書処理システムの構成を模式的に示した機能ブロック図である。
【図１７】本発明の第８の実施例に係る構造化文書処理システムの構成を模式的に示した機能ブロック図である。
【図１８】第１の原料文書を標準的なＨＴＭＬブラウザで表示した結果を示した図である。
【図１９】第２の原料文書を標準的なＨＴＭＬブラウザで表示した結果を示した図である。
【図２０】第１の原料文書と第２の原料文書と第１の雛型文書から合成して生成されたＨＴＭＬファイルを標準的なＨＴＭＬブラウザで表示した結果を示した図である。
【図２１】第１の原料文書と第２の原料文書と第２の雛型文書から合成して生成されたＨＴＭＬファイルを標準的なＨＴＭＬブラウザで表示した結果を示した図（第１の実施例）である。
【図２２】第３の原料文書を標準的なＨＴＭＬブラウザで表示した結果を示した図である。
【図２３】第３の原料文書と第３の雛型文書から合成して生成されたＨＴＭＬファイルを標準的なＨＴＭＬブラウザで表示した結果を示した図（第２の実施例）である。
【図２４】原料文書４と原料文書５と原料文書６と雛型文書４から合成されるＨＴＭＬファイルを標準的なＨＴＭＬブラウザで表示した結果を示した図（第３の実施例）である。
【図２５】原料文書４と原料文書５と雛型文書４から合成されるＨＴＭＬファイルを標準的なＨＴＭＬブラウザで表示した結果を示した図（第４の実施例）である。
【図２６】従来技術に係る構造文書処理システムの構成例を示した図である。
【図２７】従来技術に係る構造文書処理システムの構成例を示した図である。
【図１】
2006309792.tif 000077
【図２】
2006309792.tif 000078
【図３】
2006309792.tif 000079
【図４】
2006309792.tif 000080
【図５】
2006309792.tif 000081
【図６】
2006309792.tif 000082
【図７】
2006309792.tif 000083
【図８】
2006309792.tif 000084
【図９】
2006309792.tif 000085
【図１０】
2006309792.tif 000086
【図１１】
2006309792.tif 000087
【図１２】
2006309792.tif 000088
【図１３】
2006309792.tif 000089
【図１４】
2006309792.tif 000090
【図１５】
2006309792.tif 000091
【図１６】
2006309792.tif 000092
【図１７】
2006309792.tif 000093
【図１８】
2006309792.tif 000094
【図１９】
2006309792.tif 000095
【図２０】
2006309792.tif 000096
【図２１】
2006309792.tif 000097
【図２２】
2006309792.tif 000098
【図２３】
2006309792.tif 000099
【図２４】
2006309792.tif 000100
【図２５】
2006309792.tif 000101
【図２６】
2006309792.tif 000102
【図２７】
2006309792.tif 000103