(57)【要約】【課題】構造化文書に含まれる空白文字のうち整形用の空白文字のみを索引の構成時に取り除くことにより、文書として意味をなす単語による索引を構築できるようにする。【解決手段】第１の空白文字判定部５３１は、構文解析部５２によって検出された構造化文書中のテキストが空白文字のみから構成されるイグノラブル空白文字である場合、当該空白文字を整形用空白文字であるとして、後続する開始タグを含む次の要素の構造情報と対応付けて空白文字情報蓄積部５５に蓄積する。第２の空白文字判定部５３２は、テキスト中の空白文字列及び当該空白文字列と関連した構造の構造情報を空白文字情報蓄積部５５に蓄積されている情報と比較することにより、当該空白文字列が整形用空白文字であるかを判定する。索引作成部５６は、整形用空白文字であると判定された空白文字をテキストから削除して、当該テキストを含む構造化文書の検索に用いられる索引を作成する。【選択図】      図２
2008242743.tif 000002
【特許請求の範囲】
【請求項１】
タグを用いて階層的な構造が表現される、構造化文書データベースに格納されるべき構造化文書の構造を解析し、タグに後続して出現するテキストを検出する構文解析手段と、
前記構文解析手段によって解析された構造化文書に出現する、構造化文書として意味をなさない空白文字列を、当該空白文字列と関連した構造を表す構造情報と対応付けて蓄積するための空白文字情報蓄積手段と、
前記構文解析手段によって検出されたテキストが、空白文字のみから構成されるイグノラブル空白文字であるかを判定するイグノラブル空白文字判定手段と、
前記テキストが前記イグノラブル空白文字であって、当該イグノラブル空白文字に開始タグが後続する場合、当該イグノラブル空白文字を、当該開始タグを含む次の要素の構造に関連する前記整形用空白文字であるとして、当該構造を表す構造情報と対応付けて前記空白文字情報蓄積手段に蓄積する第１の空白文字判定手段と、
前記テキストが前記イグノラブル空白文字でない場合、当該テキスト中に出現する空白文字列及び当該空白文字列と関連した構造の構造情報を、前記空白文字情報蓄積手段に蓄積されている情報と比較することにより、当該空白文字列が整形用空白文字であるかを判定する第２の空白文字判定手段と、
前記テキストを含む前記構造化文書の検索に用いられる索引を、当該テキストから前記整形用空白文字と判定された空白文字列が除かれたテキスト部分に基づいて作成して前記構造化文書データベースに格納する索引作成手段と、
前記テキストを含む前記構造化文書を前記構造化文書データベースに格納する文書格納処理手段と
を具備することを特徴とする構造化文書データベース管理システム。
【請求項２】
前記テキストが前記イグノラブル空白文字でない場合、当該テキストを、空白文字列と、空白文字列を含まないテキスト部分とに分解する分解手段を更に具備し、
前記第２の空白文字判定手段は、少なくとも、前記分解手段によって分解された前記テキストの先頭に空白文字列が出現している場合に、当該空白文字列が前記整形用空白文字であると確定して、当該空白文字列を当該空白文字列と関連した構造を表す構造情報と対応付けて前記空白情報蓄積手段に蓄積する
ことを特徴とする請求項１記載の構造化文書データベース管理システム。
【請求項３】
前記第２の空白文字判定手段は、前記分解手段によって分解された前記テキストの先頭に空白文字列が出現する場合であって、且つ当該空白文字列の文字列長が当該テキストを含む構造の１レベル上位の構造情報に対応付けて前記空白情報蓄積手段に蓄積されている空白文字列の文字列長よりも長い場合に、当該空白文字列が前記整形用空白文字であると確定することを特徴とする請求項２記載の構造化文書データベース管理システム。
【請求項４】
前記空白情報蓄積手段に蓄積される空白文字列には、当該空白文字列が前記整形用空白文字であると確定されているか或いは前記整形用空白文字の候補であるかを示すフラグ情報が対応付けられており、
前記第２の空白文字判定手段は、前記整形用空白文字であると確定された空白文字列を前記空白情報蓄積手段に蓄積する際には、当該空白文字列に確定を示すフラグ情報を対応付け、前記分解手段によって分解された前記テキストの中間部に空白文字列が出現している場合、当該空白文字列及び当該空白文字列と関連した構造の構造情報が対応付けて前記空白文字情報蓄積手段に蓄積されているかを判定し、少なくとも蓄積されていないならば、当該空白文字列を、当該空白文字列と関連した構造の構造情報及び候補を示すフラグ情報と対応付けて前記空白文字情報蓄積手段に蓄積し、蓄積されていて且つ候補を示すフラグ情報と対応付けられているならば、当該フラグ情報を確定を示す状態に変更する
ことを特徴とする請求項２記載の構造化文書データベース管理システム。
【請求項５】
前記第２の空白文字判定手段は、前記テキストの中間部に出現する空白文字列及び当該空白文字列と関連した構造の構造情報が対応付けて前記空白文字情報蓄積手段に蓄積されていない場合であって、且つ当該空白文字列の文字列長が当該テキストを含む構造の１レベル上位の構造情報に対応付けて前記空白情報蓄積手段に蓄積されている空白文字列の文字列長よりも長い場合に、当該空白文字列を、当該空白文字列と関連した構造の構造情報及び候補を示すフラグ情報と対応付けて前記空白文字情報蓄積手段に蓄積する
ことを特徴とする請求項４記載の構造化文書データベース管理システム。
【請求項６】
前記イグノラブル空白文字判定手段によってイグノラブル空白文字であると判定された場合、及び前記分解手段によって分解された前記テキストの末尾に空白文字列が出現している場合に、該当する空白文字列を整形用空白文字として、当該空白文字列を含む要素の構造を表す構造情報に対応付けて一時格納するための空白文字一時格納手段を更に具備し、
前記第１の空白文字判定手段は、前記空白文字一時格納手段に格納されている空白文字列に後続する開始タグが前記構文解析手段によって検出された場合、当該空白文字列を整形用空白文字として、当該開始タグを含む要素の構造を表す構造情報に対応付けて前記空白文字情報蓄蓄積手段に蓄積する
ことを特徴とする請求項２記載の構造化文書データベース管理システム。
【請求項７】
前記構造化文書を読み込む文書読込手段を更に具備し、
前記構文解析手段は前記文書読込手段によって読み込まれた構造化文書の構造を解析する
ことを特徴とする請求項１記載の構造化文書データベース管理システム。
【請求項８】
前記構造化文書を読み込む文書読込手段を更に具備し、
前記構造化文書には当該構造化文書の構造を定義した文書型定義情報が付されており、
前記構文解析手段は前記文書型定義情報を解析することにより、当該文書型定義情報が付されている構造化文書中の文字データが出現する要素及びその構造を予め認識し、前記文書読込手段によって当該構造化文書が読み込まれた際には、当該構造化文書中の前記認識されている要素のタグに後続するテキストを解析する
ことを特徴とする請求項１記載の構造化文書データベース管理システム。
【請求項９】
タグを用いて階層的な構造が表現される構造化文書が格納される構造化文書データベースを管理するデータベースサーバコンピュータであって、前記構造化文書データベースに格納されるべき構造化文書に出現する、構造化文書として意味をなさない空白文字列を、当該空白文字列と関連した構造を表す構造情報と対応付けて蓄積するための空白文字情報蓄積手段を有するデータベースサーバコンピュータを、
前記構造化文書データベースに格納されるべき構造化文書の構造を解析し、タグに後続して出現するテキストを検出する構文解析手段と、
前記構文解析手段によって検出されたテキストが、空白文字のみから構成されるイグノラブル空白文字であるかを判定するイグノラブル空白文字判定手段と、
前記テキストが前記イグノラブル空白文字であって、当該イグノラブル空白文字に開始タグが後続する場合、当該イグノラブル空白文字を、当該開始タグを含む次の要素の構造に関連する前記整形用空白文字であるとして、当該構造を表す構造情報と対応付けて前記空白文字情報蓄積手段に蓄積する第１の空白文字判定手段と、
前記テキストが前記イグノラブル空白文字でない場合、当該テキスト中に出現する空白文字列及び当該空白文字列と関連した構造の構造情報を、前記空白文字情報蓄積手段に蓄積されている情報と比較することにより、当該空白文字列が整形用空白文字であるかを判定する第２の空白文字判定手段と、
前記テキストを含む前記構造化文書の検索に用いられる索引を、当該テキストから前記整形用空白文字と判定された空白文字列が除かれたテキスト部分に基づいて作成して前記構造化文書データベースに格納する索引作成手段と、
前記テキストを含む前記構造化文書を前記構造化文書データベースに格納する文書格納処理手段と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＭＬ文書のような構造化文書が格納される構造化文書データベースを管理する構造化文書データベース管理システムに係り、特に当該データベースに構造化文書を格納する際に当該構造化文書に含まれる単語の索引を作成するのに好適な構造化文書データベース管理システム及びプログラムに関する。
【背景技術】
【０００２】
構造化文書では、タグと呼ばれる文字列で階層的な構造が表現される。構造化文書の代表として、例えばＸＭＬ（Extensible Markup Language）形式の文書、つまりＸＭＬ文書が広く知られている。ＸＭＬは、意味付けされたタグによるデータの階層化や構造の自由な拡張性という特長を持つ。このような特長を生かしたＸＭＬ利用技術として、ＸＭＬデータベース（ＸＭＬＤＢ）が知られている。ＸＭＬデータベースは、ＸＭＬデータベース管理システム（ＸＭＬＤＢＭＳ）によって制御されることにより、ＸＭＬデータの階層構造をそのままの形式で格納し、管理する機能と、問い合わせ言語による検索のための機能とを提供する。
【０００３】
ＸＭＬデータベースでは、当該データベースに格納されたＸＭＬ文書に含まれる単語を条件とした検索を高速に行わせるために、当該文書に含まれる単語による索引を構成する技術が用いられる（例えば、特許文献１参照）。このような索引は、ＸＭＬデータベースにＸＭＬ文書が格納される際に、当該ＸＭＬ文書を解析して文字の並びから単語を判定することにより構築されるのが一般的である。
【０００４】
また、例えば特許文献２には、構造化文書から抽出された単語文字列を当該単語文字列よりも短い短縮文字列に置き換えることにより、当該構造化文書を圧縮する技術が記載されている。この特許文献２には、入力文字が空白かを判別し、空白の場合、その空白が認識されるまでにメモリに蓄積された文字列を置換文字に置き換えることで、つまり空白毎に文字列を区切って、その区切られた文字列毎に置換文字に置き換えることで、構造化文書を短縮することが記載されている。
【特許文献１】特開２００６−１７２２６８号公報
【特許文献２】特開２００１−６７３４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記特許文献１に記載されたような索引構成技術（従来技術）では、スペース（間隔）、タブ、改行文字（ＬＦ（Line Feed））、復帰文字（ＣＲ（Carriage Return））のような）空白文字は他の文字と区別されずに扱われる。つまり従来技術では、空白文字はテキストを構成する１文字に過ぎない。このため、空白文字を含む単語は、そのまま空白文字を含んだ単語としてのみ認識される。
【０００６】
ところで、ユーザがＸＭＬ文書を作成する場合、当該ＸＭＬ文書を表示画面（或いは印刷紙面）上で人間に見やすい形に整形することがある。例えば、意味のある単語の文字列の間に空白文字を挿入することも、文書整形の１つである。従来技術では、このような単語が検索条件として選ばれた場合、該当するＸＭＬ文書は検索されない。
【０００７】
そこで、上記引用文献２に記載された技術を適用して、構造化文書に含まれている文字列を空白文字毎に区切ることにより、索引化すべき単語を抽出することが考えられる。しかし、空白文字は、表示上の整形のためだけに用いられるわけではなく、ＸＭＬ文書として必要な場合もある。このため、単純に空白文字毎に区切ったのでは、必ずしも目的とするＸＭＬ文書を検索することはできない。
【０００８】
本発明は上記事情を考慮してなされたものでその目的は、構造化文書に含まれる空白文字のうち整形のための空白文字のみを索引の構築時に取り除くことにより、文書として意味をなす単語による索引を構築できる構造化文書データベース管理システム及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明の１つの観点によれば、構造化文書データベース管理システムが提供される。この構造化文書データベース管理システムは、タグを用いて階層的な構造が表現される、構造化文書データベースに格納されるべき構造化文書の構造を解析し、タグに後続して出現するテキストを検出する構文解析手段と、前記構文解析手段によって解析された構造化文書に出現する、構造化文書として意味をなさない空白文字列を、当該空白文字列と関連した構造を表す構造情報と対応付けて蓄積するための空白文字情報蓄積手段と、前記構文解析手段によって検出されたテキストが、空白文字のみから構成されるイグノラブル空白文字であるかを判定するイグノラブル空白文字判定手段と、前記テキストが前記イグノラブル空白文字であって、当該イグノラブル空白文字に開始タグが後続する場合、当該イグノラブル空白文字を、当該開始タグを含む次の要素の構造に関連する前記整形用空白文字であるとして、当該構造を表す構造情報と対応付けて前記空白文字情報蓄積手段に蓄積する第１の空白文字判定手段と、前記テキストが前記イグノラブル空白文字でない場合、当該テキスト中に出現する空白文字列及び当該空白文字列と関連した構造の構造情報を、前記空白文字情報蓄積手段に蓄積されている情報と比較することにより、当該空白文字列が整形用空白文字であるかを判定する第２の空白文字判定手段と、前記テキストを含む前記構造化文書の検索に用いられる索引を、当該テキストから前記整形用空白文字と判定された空白文字列が除かれたテキスト部分に基づいて作成して前記構造化文書データベースに格納する索引作成手段と、前記テキストを含む前記構造化文書を前記構造化文書データベースに格納する文書格納処理手段とを具備する。
【発明の効果】
【００１０】
本発明によれば、構造化文書の構造の解析によって検出されたテキストから、表示上の整形に使用されている整形用空白文字であると判定された空白文字のみを取り除いて、当該テキストを含む構造化文書の検索に用いられる索引を作成することにより、整形用空白文字を挟む単語も文書として意味をなす単語の形で索引に登録することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係るクライアント−サーバシステムのハードウェア構成を示すブロック図である。クライアント−サーバシステムは、主として、データベースサーバ（データベースサーバコンピュータ）１０と、複数のクライアント端末とから構成される。複数のクライアント端末はクライアント端末２０を含む。クライアント端末２０上では、データベースサーバ１０を利用するアプリケーション（アプリケーションプログラム）が動作する。クライアント端末２０を含む複数のクライアント端末は、ローカルエリアネットワーク（ＬＡＮ）のようなネットワーク３０を介してデータベースサーバ１０と接続されている。なお、図１にはクライアント端末２０以外のクライアント端末は省略されている。
【００１２】
データベースサーバ１０は、主メモリのようなメモリ１１を有している。データベースサーバ１０は、ハードディスクドライブのような外部記憶装置４０と接続されている。この外部記憶装置４０は、ＸＭＬデータベース管理プログラム４１及びＸＭＬデータベース４２を格納する。
【００１３】
ＸＭＬデータベース管理プログラム４１は、データベースサーバ１０によるＸＭＬデータベース４２の管理、及びクライアント端末からの検索要求に基づく検索処理に用いられる。ＸＭＬデータベース４２は検索の対象となる複数のＸＭＬ文書（ＸＭＬ形式の電子文書）を格納する。本実施形態においてＸＭＬデータベース４２は、ネットワーク３０を介して収集されたＸＭＬ文書の集合（ＸＭＬ文書集合）４２１を格納する。ＸＭＬデータベース４２はまた、当該ＸＭＬデータベース４２に格納されているＸＭＬ文書を検索するのに用いられる索引（索引情報）４２２を格納する。
【００１４】
本実施形態では、データベースサーバ１０によってＸＭＬデータベース管理システム５０が実現される。図２はＸＭＬデータベース管理システム５０の主として機能構成を示すブロック図である。ＸＭＬデータベース管理システム５０は、文書読込部５１、構文解析部５２、空白文字判定部５３、空白文字一時格納部５４、空白文字情報蓄積部５５、索引作成部５６、文書格納処理部５７を含む。
【００１５】
文書読込部５１は、ＸＭＬデータベース４２に格納されるべきＸＭＬ文書を読み込む。本実施形態では、文書読込部５１は、ネットワーク３０上に公開されているＸＭＬ文書のうち、予め定められた条件に合致するＸＭＬ文書を読み込む。構文解析部５２は、文書読込部５１によって読み込まれたＸＭＬ文書のＸＭＬとしての構造（構文）を解析する。
【００１６】
空白文字判定部５３は、構文解析部５２によって解析された構造中に出現する空白文字のタイプを判定する。特に空白文字判定部５３は、空白文字が表示上の整形を行うための整形用空白文字であるかを判定する。空白文字判定部５３は、第１の空白文字判定部５３１、第２の空白文字判定部５３２及び分解部５３３を含む。
【００１７】
第１の空白文字判定部５３１は、構文解析部５２によって解析された構造中に出現する空白文字が、「ignorable white space（イグノラブル空白文字）」と呼ばれる、ＸＭＬ文書としては意味をなさない空白文字であるかを判定する。第１の空白文字判定部５３１は、「ignorable white space」と判定された空白文字を、表示上の整形を行うための整形用空白文字であると確定し、当該空白文字（ignorable white space）を、当該空白文字を要素内容として含む構造の構造情報と対応付けて空白文字一時格納部５４に格納する。
【００１８】
第１の空白文字判定部５３１は、整形用空白文字（整形用空白文字列）であると確定されて空白文字一時格納部５４に格納された空白文字（空白文字列）の次に開始タグが現れた場合、当該空白文字を当該開始タグを含む次の要素（構造）に関連する整形用空白文字として、当該次の要素の構造情報と対応付けて空白文字情報蓄積部５５に蓄積する。
【００１９】
分解部５３３は、構文解析部５２によってテキストが解析された場合、当該テキストを空白文字（空白文字列）と空白文字（空白文字列）を含まないテキストとに分解する。
【００２０】
第２の空白文字判定部５３２は、分解部５３３によって分解されたテキスト内の空白文字（空白文字列）の位置、先行する空白文字（空白文字列）との関係、及び当該テキストを含む構造の１レベル上位の構造に関連する整形用空白文字（整形用空白文字列）の文字列長との関係に基づき、当該空白文字（空白文字列）が整形用空白文字（整形用空白文字列）であるか、整形用空白文字（整形用空白文字列）の候補であるか、単にテキスト中に出現する空白文字（空白文字列）であるかを判定する。
【００２１】
第２の空白文字判定部５３２は、テキスト内の空白文字（空白文字列）が当該テキストの先頭に現れ、且つ当該空白文字（空白文字列）の文字列長が当該テキストを含む構造の１レベル上位の構造に関連する整形用空白文字（整形用空白文字列）の文字列長よりも長い場合、当該空白文字（空白文字列）を当該テキストを含む構造（該当構造）に関連する整形用空白文字（整形用空白文字列）と確定する。この場合、第２の空白文字判定部５３２は、確定された空白文字（空白文字列）を整形用空白文字（整形用空白文字列）として該当構造の構造情報と対応付けて空白文字情報蓄積部５５に蓄積する。
【００２２】
テキスト内に最初に現れる空白文字（空白文字列）の位置が、当該テキストの先頭でも末尾でもなく、且つ当該空白文字（空白文字列）の文字列長が当該テキストを含む構造の１レベル上位の構造に関連する整形用空白文字（整形用空白文字列）の文字列長よりも長い場合、第２の空白文字判定部５３２は、当該空白文字（空白文字列）を該当構造に関連する整形用空白文字（整形用空白文字列）の候補と判定する。この場合、第２の空白文字判定部５３２は、判定された空白文字（空白文字列）を整形用空白文字（整形用空白文字列）の候補として該当構造の構造情報と対応付けて空白文字情報蓄積部５５に蓄積する。
【００２３】
第２の空白文字判定部５３２は、整形用空白文字（整形用空白文字列）として確定された、または整形用空白文字（整形用空白文字列）の候補として判定された空白文字（空白文字列）を含むテキスト内の当該空白文字（空白文字列）よりも後方の位置に当該空白文字（空白文字列）と同一の空白文字（空白文字列）が出現した場合、当該出現した空白文字（空白文字列）を整形用空白文字（整形用空白文字列）として判定、または整形用空白文字（整形用空白文字列）の候補を整形用空白文字（整形用空白文字列）として確定する。
【００２４】
空白文字一時格納部５４は、空白文字判定部５３によって整形用空白文字であると判定された空白文字列を、該当構造の構造情報と対応付けて一時格納するのに用いられる。空白文字一時格納部５４には、例えば図１のデータベースサーバ１０が有するメモリ１１上の第１の特定領域が割り当てられる。
【００２５】
空白文字情報蓄積部５５は、空白文字判定部５３によって整形用空白文字または整形用空白文字の候補であると判定された空白文字列（つまりＸＭＬ文書としては意味をなさない空白文字列）を、当該空白文字列と関連する構造を表す構造情報と対応付けて蓄積するのに用いられる。空白文字情報蓄積部５５には、例えば上記メモリ１１上の第２の特定領域が割り当てられる。
【００２６】
索引作成部５６は、構文解析部５２によって構文が解析され、且つ整形用空白文字（として判定された空白文字列）が取り除かれたＸＭＬ文書に基づき、元のＸＭＬ文書（ＸＭＬ文書原文）を検索するのに用いられる索引（索引レコード）を作成する。文書格納処理部５７は、ＸＭＬ文書原文をＸＭＬデータベース４２に格納（登録）する。ＸＭＬデータベース４２に格納されるＸＭＬ文書では、空白文字を挟む前後の文字列は連続しているものとして扱われる。
【００２７】
本実施形態において、文書読込部５１、構文解析部５２、空白文字判定部５３、索引作成部５６及び文書格納処理部５７の各機能部（処理部）は、図１のデータベースサーバ１０が外部記憶装置４０に格納されているＸＭＬデータベース管理プログラム４１を当該サーバ１０内のメモリ（図示せず）に読み込んで実行することにより実現されるものとする。このプログラム４１は、コンパクトディスク、或いはＲＯＭのような、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム４１が、ネットワーク３０を介してデータベースサーバ１０にダウンロードされても構わない。
【００２８】
図３は、ＸＭＬデータベース４２に格納される索引４２２のデータ構造例をＸＭＬ文書集合４２１中のＸＭＬ文書と対応付けて示す。索引４２２は、例えばＢＴｒｅｅを用いてＸＭＬデータベース４２に格納される。索引４２２内では文字列（索引文字列）は当該文字列の順序に従って昇順に整列され、ページと呼ばれる複数の領域に分割して格納されている。ページは外部記憶装置４０から／へのデータの読み出し／書き込みの単位である。
【００２９】
図３では、索引４２２を構成する索引ページ群の１つが索引ページ４２２ａとして示されている。索引ページ４２２ａは、キーワード（を構成する文字列）毎に、そのキーワードの出現位置の情報を持つレコード（索引レコード）の集合からなる。この出現位置の情報には、例えば対応するキーワードが出現するＸＭＬ文書（ＸＭＬ文書原文）のＩＤが用いられる。
【００３０】
次に、図２のＸＭＬデータベース管理システム５０においてＸＭＬ文書をＸＭＬデータベース４２に格納する際に実行される、整形用空白文字判定を含む構文解析処理について図４Ａ及び図４Ｂのフローチャートを参照して説明する。
【００３１】
文書読込部５１は、Ｗｅｂサーバやファイルサーバによってネットワーク３０上に公開されているＸＭＬ文書のうち予め定められた条件に合致するＸＭＬ文書（目的とするＸＭＬ文書）を、ＸＭＬデータベース４２に格納されるべきＸＭＬ文書として、例えば図１のデータベースサーバ１０が有するメモリ１１（ＸＭＬデータベース管理システム５０内のメモリ１１）に読み込む文書読込（ステップＳ１）を開始する。
【００３２】
図５は、文書読込部５１によって読み込みが開始されたＸＭＬ文書（第１のＸＭＬ文書）の一例を示す。  
ＸＭＬ文書（構造化文書）は、周知のように、要素という単位で構成されている。要素は、データに内容を表す名前を付けてタグで挟んだものである。この名前（つまり要素名）は、タグ内に記述される。ＸＭＬ文書では、要素の中に要素を含める、いわゆる入れ子構造とすることもできる。
【００３３】
図５に示すＸＭＬ文書の例では、文書全体が<特許>タグで挟まれた要素であり、その名称を示す<名称>タグに挟まれた「情報処理装置」が、当該文書の構成内容の１つである特許の名称であることを示している。
【００３４】
図５に示されるＸＭＬ文書では、例えば当該ＸＭＬ文書が画面表示されている状態で人が当該文書を見やすいように、<名称>タグ及び<要旨>タグの開始位置（開始タグの位置）が、構造上の上位をなす<特許>タグの開始位置よりも、タブ文字によって１段下げて記述されている。また、<要旨>タグ内の文章、つまり<要旨>タグを含む要素（要旨要素）の内容（値）である文章（テキスト）は、２文字のタブ文字の挿入によって<要旨>タグの開始位置よりも更に１段下げて記述されている。このように、図５に示されるＸＭＬ文書は空白文字を含む。
【００３５】
これらの空白文字（つまり改行文字及びタブ文字）の存在を理解し易くするために、例えば「↓」で改行文字、「ｔ」で１文字のタブ文字を示すならば、図５に示されるＸＭＬ文書は、ＸＭＬデータベース管理システム５０（データベースサーバ１０）によって処理される際に以下のような文書
「<特許>↓ｔ<名称>情報処理装置</名称>↓ｔ<要旨>↓ｔｔこの装置は、文書を読み込んで、その構造を解析し、取り出した構造情↓ｔｔ報と原文をともに外部記憶装置に蓄積する。ユーザはキーワードにより↓ｔｔ必要な情報を取り出すことができる。↓ｔ</要旨>↓</特許>」
として扱われる。  
図６は、図５に示すＸＭＬ文書を、当該ＸＭＬ文書に含まれる改行文字及びタブ文字が記号「↓」及び「ｔ」で置き換えられた形式で示す。
【００３６】
さて文書読込部５１は、図６（図５）に示されるＸＭＬ文書（目的とするＸＭＬ文書）を対象とする文書読込（ステップＳ１）を、当該ＸＭＬ文書の終端に達して読み込むべきデータがなくなるまで、つまり当該ＸＭＬ文書が終了するまで繰り返す。
【００３７】
一方、構文解析部５２は、目的とする文書が終了するまで（ステップＳ２）、文書読込部５１によってメモリ１１に読み込まれた文書データの構造を解析する（ステップＳ３）。
【００３８】
一般に、ＸＭＬ文書内の単語を取り出して索引（索引レコード）を作成するためには、隣接した文字を組み合わせて単語として認識する必要がある。しかし、上述のＸＭＬ文書の例では、「構造情報」の中に含まれる「情報」という単語の中（文字「情」と文字「報」との間）に空白文字（改行文字「↓」及び２つのタブ文字「ｔ」）が挿入されている。このため、例えば単語「構造情報」（または単語「情報」）は索引として取り出されない。そこで本実施形態では、以下に述べるように、文字列「構造情↓ｔｔ報」から「構造情報」を索引として抽出することを可能としている。
【００３９】
構文解析部５２は例えばＸＭＬ文書解析機能を有するＸＭＬパーサである。本実施形態において構文解析部５２は、文書読込部５１によってメモリ１１に読み込まれたＸＭＬ文書を、ＳＡＸ（Simple API for XML）２と呼ばれる周知のアプリケーションインタフェースを用いて取り込んで解析する。この場合、要素の開始(開始タグ)、要素の終了(終了タグ)、文字列（テキスト）及び「ignorable white space」の単位で構文解析部５２に通知される。構文解析部５２は、この通知に従い、開始タグ、終了タグ、テキスト及び「ignorable white space」の単位で、図５に示されるＸＭＬ文書（目的とするＸＭＬ文書）を対象とする構文解析（構造解析）を、当該ＸＭＬ文書の終端まで繰り返す（ステップＳ２，Ｓ３）。
【００４０】
図６のＸＭＬ文書の例では、当該ＸＭＬ文書は、以下に整理して示す文書データ
(1) <特許>    ：最上位（１段目）の構造（階層構造）の要素を示す開始タグ
(2) ↓ｔ        ：<特許>要素の内容であるが、「ignorable white space」である
(3) <名称>    ：２段目の構造の要素を示す開始タグ
(4) 情報処理装置：<名称>要素の内容であるテキスト
(5) </名称>  ：２段目の構造の要素の終わりを示す終了タグ
(6) ↓ｔ        ：<特許>要素の内容であるが、「ignorable white space」である
(7) <要旨>    ：２段目の構造の要素を示す開始タグ
(8) ↓ｔｔこの装置は、文書を読み込んで、その構造を解析し、取り出した構造情↓ｔｔ報と原文をともに外部記憶装置に蓄積する。ユーザはキーワードにより↓ｔｔ必要な情報を取り出すことができる。↓ｔ
：<要旨>要素の内容であるテキスト（以下、テキストＴと表現）
(9) </要旨>  ：２段目の構造の要素の終わり示す終了タグ
(10) ↓          ：<特許>要素の内容であるが、「ignorable white space」である
(11) </特許>  ：最上位の構造の要素の終わりを示す終了タグ
に分解される。ここには、文書データの右側に、当該データに対応する上記単位に関する説明を付してある。
【００４１】
文書格納処理部５７は、構文解析部５２によって分解された文書データを、ＸＭＬ文書集合４２１の一部として、文書読込部５１によって読み込まれた原文の通りにＸＭＬデータベース４２に格納する。
【００４２】
ＸＭＬ文書では、「white space」と呼ばれる空白文字（空白記号）として、周知のように、スペース（半角スペース）、タブ、改行文字（ＬＦ（Line Feed））及び復帰文字（ＣＲ（Carriage Return））が定義されている。改行文字及び復帰文字は、改行を表す空白文字である。
【００４３】
上述の空白文字（white space）は、例えばタグ内で要素名と属性名とを区切るといった、区別するものの間に挿入されて使用されるのが一般的である。しかしながら、タグ同士の見分けを付けやすくしたり、読みやすくするために、つまり整形用に空白文字が挿入されることもある。ＸＭＬでは、このようなＸＭＬの構造に関係なく、意味のあるテキストデータ(要素の構成要素である内容を示すもの)ではない空白文字は、「ignorable white space（イグノラブル空白文字）」と定義されている。「ignorable white space」は、通常はタグ（終了タグ）とタグ（開始タグ）との間に挟まれた空白文字のみで構成されるテキストデータである。
【００４４】
本実施形態において、空白文字判定部５３は、構文解析部５２による構文解析の結果を取得して、当該構造解析結果に基づき空白文字（特に整形用空白文字）を判定する。空白文字判定部５３は、整形用空白文字であると判定された空白文字を、当該空白文字と関連する構造を表す構造情報と対応付けて空白文字情報蓄積部５５に蓄積する。
【００４５】
本実施形態では、以下の２種類が整形用空白文字（または整形用空白文字の候補）として扱われる。
【００４６】
第１は「ignorable white space」である。更に具体的に述べるならば、「ignorable white space」に後続する構造が開始タグである場合、当該開始タグで表現される構造（開始タグを含む要素の構造）に対する整形用空白文字は、その直前に現れた「ignorable white space」である。
【００４７】
第２はテキスト内に存在する空白文字列であって、且つ当該テキストを示す構造の１レベル上の構造に対する整形用空白文字列よりも長い空白文字列である場合、当該テキストを示す構造に対する整形用空白文字は、当該テキスト内に存在する空白文字列である。
【００４８】
以下、構文解析部５２による構文解析結果に基づく整形用空白文字の判定を含む処理の詳細を、図６のＸＭＬ文書（第１のＸＭＬ文書）が上述の文書データ(1)〜(11)に分解して解析される場合について、図４Ａ及び図４Ｂのフローチャートに従い、図７及び図８を参照して順次説明する。図７は空白文字情報蓄積部５５の内容の変化を示す図、図８は空白文字一時格納部５４の内容の変化を示す図である。図７及び図８並びに以下の説明では、解析された構造を表す構造情報をＸＰａｔｈの形式で表す。なお、構造情報として、対応する構造の要素（ノード）に固有のＩＤ（ノードＩＤ）を用いることも可能である
(1) <特許>（/特許）
ＸＭＬ文書の先頭の<特許>タグは、構造情報「/特許」で示される<特許>要素の開始を示す開始タグである（ステップＳ４，Ｓ５）。この場合、空白文字判定部５３内の第１の空白文字判定部５３１は構造情報「/特許」に先行する整形用空白文字が存在するならば、当該構造情報「/特許」を整形用空白文字と対応付けて空白文字情報蓄積部５５に蓄積する（ステップＳ６）。しかし、本実施形態において、構造情報「/特許」は行の先頭であり、当該構造情報「/特許」に先行する整形用空白文字が存在しない。このような場合、第１の空白文字判定部５３１は、構造情報「/特許」のみを空白文字情報蓄積部５５の先頭エントリに蓄積する。
【００４９】
図７（ａ）は、このときの空白文字情報蓄積部５５の内容を示す。この空白文字情報蓄積部５５のエントリには、構造情報及び整形用空白文字（であると判定された空白文字）と組をなしてフラグ（フラグ情報）が格納される。このエントリ内のフラグは、当該エントリに蓄積されている空白文字（空白文字列）が整形用空白文字（整形用空白文字列）として確定されているか否か（整形用空白文字の候補であるか）を示す。但し、本実施形態では、図７（ａ）の例のように整形用空白文字が存在しないエントリ中のフラグは、便宜的に「確定」を示す状態に設定される。
【００５０】
(2) ↓ｔ
構文解析部５２は、構造情報「/特許」が空白文字情報蓄積部５５に蓄積されると（ステップＳ６）、<特許>タグに後続する文書データの構造解析を行う（ステップＳ２，Ｓ３）。<特許>タグに後続する文書データは「↓ｔ」である。この「↓ｔ」は<特許>要素の内容（の一部）であり、「ignorable white space」である（ステップＳ４，Ｓ８）。
【００５１】
この場合、第１の空白文字判定部５３１は、「↓ｔ」が次に出現する要素に関連する整形用空白文字（整形用空白文字列）であると判定する。そこで第１の空白文字判定部５３１は、「↓ｔ」を整形用空白文字として、当該「↓ｔ」を内容（の一部）とする<特許>要素の構造情報（現在処理対象となっている階層の構造情報）「/特許」に対応付けて空白文字一時格納部５４に格納する（ステップＳ９）。図８（ａ）は、このときの空白文字一時格納部５４の内容を示す。なお、ステップＳ８の判定（「ignorable white space」であるかの判定）が第１の空白文字判定部５３１によって行われても、構文解析部５２及び第１の空白文字判定部５３１から独立の判定部（「ignorable white space」判定部）によって行われても構わない。
【００５２】
(3) <名称>（/特許/名称）
構文解析部５２は、整形用空白文字「↓ｔ」が構造情報「/特許」に対応付けて空白文字一時格納部５４に格納されると（ステップＳ９）、「↓ｔ」に後続する文書データの構造解析を行う（ステップＳ２，Ｓ３）。「↓ｔ」に後続する文書データは<名称>タグである。
【００５３】
<名称>タグは、構造情報「/特許/名称」で示される<名称>要素の開始を示す開始タグである（ステップＳ４，Ｓ５）。この場合、第１の空白文字判定部５３１は、空白文字一時格納部５４を参照することにより、構造情報「/特許/名称」が前回取得された文書データである整形用空白文字（ここでは「↓ｔ」）に後続して記述されていること、つまり構造情報「/特許/名称」に先行する整形用空白文字（「↓ｔ」）が存在することを認識する。そこで第１の空白文字判定部５３１は、構造情報「/特許/名称」が、前回取得された整形用空白文字「↓ｔ」に後続して記述されていることを示すために、構造情報「/特許/名称」を先行する整形用空白文字「↓ｔ」と対応付けて空白文字情報蓄積部５５の２番目のエントリに蓄積する（ステップＳ６）。このとき第１の空白文字判定部５３１は、整形用空白文字「↓ｔ」が蓄積された空白文字情報蓄積部５５の２番目のエントリのフラグを、「確定」を示す状態に設定する。図７（ｂ）は、このときの空白文字情報蓄積部５５の内容を示す。
【００５４】
(4) 情報処理装置（テキスト）
<名称>タグに後続する文書データはテキスト「情報処理装置」である（ステップＳ４，Ｓ８）。この場合、空白文字判定部５３内の分解部５３３は、テキストを先頭から順に、空白文字列と、空白文字列を含まないテキスト（テキスト部分）とに分解する（ステップＳ１０，Ｓ１１）。
【００５５】
ここで、テキスト「情報処理装置」は、空白文字列を含まない（ステップＳ１２，Ｓ１３）。この場合、空白文字判定部５３内の第２の空白文字判定部５３２は、「情報処理装置」全体を意味のあるテキストであると判定する（ステップＳ１４）。ステップＳ１４で判定されたテキスト「情報処理装置」が、整形用空白文字を含まないことは明らかである。第２の空白文字判定部５３２は、ステップＳ１４で判定された意味のあるテキスト（つまり空白文字列を含まないテキスト）「情報処理装置」をメモリ１１に確保されたテキスト格納部（図示せず）に格納する。
【００５６】
(5) </名称>（「/特許/名称」の終了）
</名称>は２段目の階層の構造情報「/特許/名称」で示される<名称>要素の終了を示す終了タグである（ステップＳ４，Ｓ５）。この場合、構文解析部５２は、処理対象の階層（対象階層）を１レベル上げる（ステップＳ７）。これにより処理対象となる階層の構造情報は「/特許」となる。そして構文解析部５２は、</名称>タグに後続する文書データの構造解析を行う（ステップＳ２，Ｓ３）。
【００５７】
(6) ↓ｔ
</名称>タグに後続する文書データは「↓ｔ」である。この「↓ｔ」は、現在の処理対象階層をなす<特許>要素の内容（の一部）であり、「ignorable white space」である（ステップＳ４，Ｓ８）。そこで第１の空白文字判定部５３１は、この「ignorable white space」つまり「↓ｔ」を次に出現する要素の整形用空白文字であるとして、当該「↓ｔ」を現在の処理対象階層の構造情報「/特許」に対応付けて空白文字一時格納部５４に格納する（ステップＳ９）。このときの空白文字一時格納部５４の内容は、図８（ａ）と同一となる。
【００５８】
(7) <要旨>（/特許/要旨）
整形用空白文字と判定された「↓ｔ」（ignorable white space）に後続する文書データは<要旨>タグである。<要旨>タグは、構造情報「/特許/要旨」で示される<要旨>要素の開始を示す開始タグである（ステップＳ４，Ｓ５）。
【００５９】
この場合、第１の空白文字判定部５３１は、空白文字一時格納部５４を参照することにより、構造情報「/特許/要旨」が前回取得された文書データである整形用空白文字（ここでは「↓ｔ」）に後続して記述されていることを認識する。そこで第１の空白文字判定部５３１は、構造情報「/特許/要旨」が、前回取得された整形用空白文字「↓ｔ」に後続して記述されていることを示すために、当該構造情報「/特許/要旨」を先行する整形用空白文字「↓ｔ」と対応付けて空白文字情報蓄積部５５の３番目のエントリに蓄積する（ステップＳ６）。このとき第１の空白文字判定部５３１は、整形用空白文字「↓ｔ」が蓄積された空白文字情報蓄積部５５の３番目のエントリのフラグを、「確定」を示す状態に設定する。図７（ｃ）は、このときの空白文字情報蓄積部５５の内容を示す。
【００６０】
(8) Ｔ（テキスト）
<要旨>タグに後続する文書データは、テキストＴ、つまり
「↓ｔｔこの装置は、文書を読み込んで、その構造を解析し、取り出した構造情↓ｔｔ報と原文をともに外部記憶装置に蓄積する。ユーザはキーワードにより↓ｔｔ必要な情報を取り出すことができる。↓ｔ」
である（ステップＳ４，Ｓ８）。この場合、分解部５３３は、テキストＴを先頭から順に、空白文字列と、空白文字列を含まないテキスト部分（以下、意味のあるテキストと称する）とに分解する（ステップＳ１０，Ｓ１１）。
【００６１】
ここでは、テキストＴは、
8-1) 空白文字列「↓ｔｔ」
8-2) 意味のあるテキスト「この装置は、文書を読み込んで、その構造を解析し、取り出した構造情」（以下、意味のあるテキストＴ１と称する）
8-3) 空白文字列「↓ｔｔ」
8-4) 意味のあるテキスト「報と原文をともに外部記憶装置に蓄積する。ユーザはキーワードにより」（以下、意味のあるテキストＴ２と称する）
8-5) 空白文字列「↓ｔｔ」
8-6) 意味のあるテキスト「必要な情報を取り出すことができる。」（以下、意味のあるテキストＴ３と称する）
8-7) 空白文字列「↓ｔ」
に分解される。
【００６２】
以下、テキストＴが分解された上述の8-1)乃至8-7)の各データに対する処理について、順次説明する。
【００６３】
8-1) 空白文字列「↓ｔｔ」
この空白文字列「↓ｔｔ」は、テキストＴの先頭に現れる（ステップＳ１５）。また、この空白文字列「↓ｔｔ」は、テキストＴを含む構造を表す構造情報「/特許/要旨/text()」の１レベル上位の構造を表す構造情報「/特許/要旨」と空白文字情報蓄積部５５内の３番目のエントリで対応付けられている整形用空白文字「↓ｔ」（図７（ｃ）参照）よりも文字列長が長い。この場合、第２の空白文字判定部５３２は、空白文字列「↓ｔｔ」をテキストＴの整形用空白文字であると確定する（ステップＳ１６）。このステップＳ１６において第２の空白文字判定部５３２は、整形用空白文字と確定された「↓ｔｔ」を、テキストＴを含む構造を表す構造情報「/特許/要旨/text()」に対応付けて、空白文字情報蓄積部５５に蓄積する。図７（ｄ）は、このときの空白文字情報蓄積部５５の内容を示す。
【００６４】
8-2) 意味のあるテキストＴ１
テキストＴの先頭の空白文字列「↓ｔｔ」に後続するＴ１は空白文字列ではない（ステップＳ１３）。この場合、第２の空白文字判定部５３２は、「Ｔ１を意味のあるテキストであると判定する（ステップＳ１４）。第２の空白文字判定部５３２は、ステップＳ１４で判定された意味のあるテキストＴ１を、例えば、前記テキスト格納部内の既に格納されているテキスト（「情報処理装置」）の後ろに格納する。
【００６５】
8-3) 空白文字列「↓ｔｔ」
意味のあるテキストＴ１に後続する空白文字列「↓ｔｔ」（つまりテキストＴ内の２番目の空白文字列）は、テキストＴの先頭及び末尾以外（つまりテキストＴの中間部）に現れる（ステップＳ１３，Ｓ１５，Ｓ１７）。このように、空白文字列「↓ｔｔ」がテキストＴの中間部に現れる場合、第２の空白文字判定部５３２は空白文字情報蓄積部５５を参照して、当該テキストＴを含む構造（該当構造）を表す構造情報「/特許/要旨/text()」に対応付けて整形用空白文字（整形用空白文字列）が蓄積されているか（つまり該当構造の整形用空白文字が蓄積されているか）を判定する（ステップＳ１９）。このとき空白文字情報蓄積部５５の４番目のエントリには、テキストＴの先頭の空白文字列「↓ｔｔ」が、図７（ｄ）に示されるように、確定された整形用空白文字列として構造情報「/特許/要旨/text()」に対応付けて蓄積されている。
【００６６】
第２の空白文字判定部５３２は、該当構造の整形用空白文字列が空白文字情報蓄積部５５に蓄積されている場合（ステップＳ１９）、現在処理対象となっている空白文字列「↓ｔｔ」が、当該整形用空白文字（ここでは、整形用空白文字列「↓ｔｔ」）に一致するかを判定する（ステップＳ２１）。
【００６７】
本実施形態のように、現在処理対象となっている空白文字列「↓ｔｔ」が空白文字情報蓄積部５５に蓄積されている該当構造の整形用空白文字列に一致する場合、第２の空白文字判定部５３２は、当該整形用空白文字列が候補であるか否か（確定済みであるか）を判定する（ステップＳ２３）。ここで、該当構造の整形用空白文字列「↓ｔｔ」、つまりテキストＴの先頭の空白文字列「↓ｔｔ」は、図７（ｄ）に示されるように、確定済みである。この場合、第２の空白文字判定部５３２は、現在処理対象となっている空白文字列「↓ｔｔ」（つまりテキストＴ内の２番目の空白文字列）が、空白文字情報蓄積部５５に蓄積されている、テキストＴ内の１番目（先頭）の空白文字列「↓ｔｔ」と同様に、構造情報「/特許/要旨/英文/text()」に関連する整形用空白文字であると判定する（ステップＳ２５）
8-4) 意味のあるテキスト
テキストＴ内の２番目の空白文字列「↓ｔｔ」に後続するＴ２は空白文字列ではない（ステップＳ１３）。この場合、Ｔ２は前記Ｔ１と同様に、意味のあるテキストであると判定される（ステップＳ１４）。第２の空白文字判定部５３２は、ステップＳ１４で判定された意味のあるテキストＴ２を、例えば、前記テキスト格納部に既に格納されているテキストＴ１に後続するように、当該テキスト格納部に格納する。
【００６８】
8-5) 空白文字列「↓ｔｔ」
意味のあるテキストＴ２に後続する空白文字列「↓ｔｔ」、つまりテキストＴ内の３番目の空白文字列「↓ｔｔ」は、当該テキストＴの中間部に現れる（ステップＳ１３，Ｓ１５，Ｓ１７）。この場合、３番目の空白文字列「↓ｔｔ」は、前記した２番目の空白文字列「↓ｔｔ」の場合と同様に処理される。
【００６９】
8-6) 意味のあるテキストＴ３
テキストＴ内の３番目の空白文字列「↓ｔｔ」に後続するＴ３は空白文字列ではない（ステップＳ１３）。この場合、Ｔ３は前記Ｔ１と同様に、意味のあるテキストであると判定される（ステップＳ１４）。テキストＴ３は、前記テキスト格納部に既に格納されているテキストＴ２に後続するように、当該テキスト格納部に格納される。
【００７０】
8-7) 空白文字列「↓ｔ」
意味のあるテキストＴ３に後続する空白文字列「↓ｔ」、つまりテキストＴ内の４番目の空白文字列「↓ｔ」は、当該テキストＴの末尾に現れる（ステップＳ１３，Ｓ１５，Ｓ１７）。この場合、第２の空白文字判定部５３２は、テキストＴの末尾（４番目）の空白文字列「↓ｔ」を、次の要素に関連する整形用空白文字列であると判定して、当該文字列「↓ｔ」を該当構造の構造情報「/特許/要旨/text()」と対応付けて空白文字一時格納部５４に格納する（ステップＳ１８）。空白文字一時格納部５４に格納された空白文字列「↓ｔ」（テキストＴの末尾の空白文字列）の次の文書データは<要旨>要素の終了タグであり、次の要素は存在しないため、当該空白文字列「↓ｔ」は整形用空白文字列として使用されない。  
以上により、テキストＴについての処理が終了する。
【００７１】
(9) </要旨>
構文解析部５２は、テキストＴについての処理が終了すると、当該テキストＴに後続する文書データの構造解析を行う（ステップＳ２，Ｓ３）。テキストＴに後続する文書データは</要旨>タグである。
【００７２】
</要旨>タグは、構造情報「/特許/要旨」で示される<要旨>要素の終了を示す終了タグである（ステップＳ４，Ｓ５）。この場合、構文解析部５２は、対象階層を１レベル上げる（ステップＳ７）。これにより処理対象となる階層の構造情報は「/特許」となる。そして構文解析部５２は、</要旨>タグに後続する文書データの構造解析を行う（ステップＳ２，Ｓ３）。
【００７３】
(10) ↓
</要旨>タグに後続する文書データは「↓」である。この「↓」は、現在の処理対象階層をなす<特許>要素の内容（の一部）であり、「ignorable white space」である（ステップＳ４，Ｓ８）。そこで第１の空白文字判定部５３１は、この「ignorable white space」つまり「↓」を次に出現する要素の整形用空白文字であるとして、当該「↓」を現在の処理対象階層の構造情報「/特許」に対応付けて空白文字一時格納部５４に格納する（ステップＳ９）。図８（ｂ）は、このときの空白文字一時格納部５４の内容を示す。空白文字一時格納部５４に格納された「↓」（ignorable white space）の次の文書データは<特許>要素の終了タグであり、次の要素は存在しないため、当該「↓」は整形用空白文字列として使用されない。
【００７４】
(11) </特許>  
</要素>タグに後続する「ignorable white space」である「↓」が処理されると、構文解析部５２は当該「↓」に後続する文書データの構造解析を行う（ステップＳ２，Ｓ３）。この「↓」（ignorable white space）に後続する文書データは</特許>タグである。</特許>タグは、構造情報「/特許」で示される最上位の階層の<特許>要素の終了を示す終了タグである（ステップＳ４，Ｓ５）。この場合、構文解析部５２は構造情報「/特許」の終了を判定し（ステップＳ２）、ＸＭＬ文書の解析を終了する。
【００７５】
この時点においてテキスト格納部には、テキスト「情報処理装置」が格納されている。テキスト格納部には更に、テキストＴに関して、Ｔ１，Ｔ２及びＴ３が格納されている。即ちテキスト格納部には、テキスト「情報処理装置」に加えて、テキストＴから整形用空白文字列が取り除かれた部分が格納されている。
【００７６】
索引作成部５６は、テキスト格納部に格納されている、テキスト「情報処理装置」と、テキストＴから整形用空白文字列が取り除かれた部分（Ｔ１，Ｔ２及びＴ３）とに基づき、つまり意味のあるテキストに基づき、当該意味のあるテキストを含むＸＭＬ文書の検索に用いられる索引（索引レコード）を作成する。
【００７７】
索引作成部５６は、作成された索引レコードを索引４２２の一部として、ＸＭＬ文書原文に対応付けてＸＭＬデータベース４２に格納する。この場合、テキストＴに含まれている「構造情↓ｔｔ報」は「構造情報」という単語として認識されるため、「構造情報」をキーワードとする索引レコードを作成することができる。
【００７８】
次に、図５に示すＸＭＬ文書（第１のＸＭＬ文書）とは異なるＸＭＬ文書（第２のＸＭＬ文書）が文書読込部５１によって読み込まれたものとする。図９は、この第２のＸＭＬ文書の一例を示す。図９に示す第２のＸＭＬ文書が第５に示す第１のＸＭＬ文書と相違する点は、テキストに空白文字が含まれているものの、当該テキストの先頭には空白文字が含まれておらず、且つ当該テキスト内に要素が現れることである。
【００７９】
図９に示す第２のＸＭＬ文書は、「↓」で改行文字、「ｔ」で１文字のタブ文字を、「ｓ」で空白文字を示すならば、ＸＭＬデータベース管理システム５０によってこの文書を処理する際に以下のような文書
「<特許>↓ｔ<名称>情報処理装置</名称>↓ｔ<要旨>この装置は、文書を読み込んで、その構造を解析し、取り出した構造情↓ｔｓｓｓｓｓｓ報と原文をともに外部記憶装置に蓄積する。ユーザはキーワードにより↓ｔｓｓｓｓｓｓ必要な情報を取り出すことができる。↓ｔｔ<英文>↓ｔｔｔThe device reads a document and stores both the structure information↓ｔｔｔand texts in an external storage. ↓ｔｔ</英文>↓ｔ</要旨>↓</特許>」
として扱われる。  
図１０は、図９に示すＸＭＬ文書を、当該ＸＭＬ文書に含まれる改行文字及びタブ文字が記号「↓」及び「ｔ」で置き換えられた形式で示す。
【００８０】
図１０のＸＭＬ文書（第２のＸＭＬ文書）の例では、当該ＸＭＬ文書は、以下に整理して示す文書データ
(1) <特許>    ：最上位の構造の要素を示す開始タグ
(2) ↓ｔ        ：<特許>要素の内容であるが、「ignorable white space」である
(3) <名称>    ：２段目の構造の要素を示す開始タグ
(4) 情報処理装置：<名称>要素の内容であるテキスト
(5) </名称>  ：２段目の構造の要素の終わり示す終了タグ
(6) ↓ｔ        ：<特許>要素の内容であるが、「ignorable white space」である
(7) <要旨>    ：２段目の構造の要素を示す開始タグ
(8) この装置は、文書を読み込んで、その構造を解析し、取り出した構造情↓ｔｓｓｓｓｓｓ報と原文をともに外部記憶装置に蓄積する。ユーザはキーワードにより↓ｔｓｓｓｓｓｓ必要な情報を取り出すことができる。↓ｔｔ
：<要旨>要素の内容であるテキスト（以下、テキストＴａと表現）
(9) <英文>    ：３段目の構造の要素を示す開始タグ
(10) ↓ｔｔｔThe device reads a document and stores both the structure information↓ｔｔｔand texts in an external storage. ↓ｔｔ
：<英文>要素の内容であるテキスト（以下、テキストＴｂと表現）
(11) </英文>  ：３段目の構造の要素の終わり示す終了タグ
(12) ↓ｔ        ：<要素>要素の内容であるが、「ignorable white space」である
(13) </要旨>  ：２段目の構造の要素の終わり示す終了タグ
(14) ↓          ：<特許>要素の内容であるが、「ignorable white space」である
(15) </特許>  ：最上位の階層の要素の終わりを示す終了タグ
に分解される。
【００８１】
以下、図１０のＸＭＬ文書（第２のＸＭＬ文書）が上述の文書データ(1)〜(15)に分解して解析される場合について、図４Ａ及び図４Ｂのフローチャートに従い、図１１及び図１２を参照して順次説明する。図１１は空白文字情報蓄積部５５の内容の変化を示す図、図１２は空白文字一時格納部５４の内容の変化を示す図である。
【００８２】
図１０のＸＭＬ文書（第２のＸＭＬ文書）における文書データ(1)〜(15)のうち、文書データ(1)〜(7)に対する処理の内容は、図６のＸＭＬ文書（第１のＸＭＬ文書）における文書データ(1)〜(7)に対する処理の内容と同一である。したがって、ここでは図１０のＸＭＬ文書（第２のＸＭＬ文書）における文書データ(8)〜(15)に対する処理について説明する。図１０のＸＭＬ文書（第２のＸＭＬ文書）における文書データ(1)〜(7)に対する処理については、図６のＸＭＬ文書（第１のＸＭＬ文書）における文書データ(1)〜(7)に対する処理に関する説明を参照されたい。
【００８３】
(8) Ｔａ（テキスト）
<要旨>タグに後続する文書データＴａは、構造情報「/特許/要旨」のテキスト、つまり
「この装置は、文書を読み込んで、その構造を解析し、取り出した構造情↓ｔｓｓｓｓｓｓ報と原文をともに外部記憶装置に蓄積する。ユーザはキーワードにより↓ｔｓｓｓｓｓｓ必要な情報を取り出すことができる。↓ｔｔ」
である（ステップＳ４，Ｓ８）。この場合、分解部５３３は、テキストＴａを先頭から順に、空白文字列と、空白文字列を含まないテキスト部分（意味のあるテキスト）とに分解する（ステップＳ１０，Ｓ１１）。
【００８４】
ここでは、テキストＴａは、
8-1) 意味のあるテキスト「この装置は、文書を読み込んで、その構造を解析し、取り出した構造情」（以下、意味のあるテキストＴａ１と称する）
8-2) 空白文字列「↓ｔｓｓｓｓｓｓ」
8-3) 意味のあるテキスト「報と原文をともに外部記憶装置に蓄積する。ユーザはキーワードにより」（以下、意味のあるテキストＴａ２と称する）
8-4) 空白文字列「↓ｔｓｓｓｓｓｓ」
8-5) 意味のあるテキスト「必要な情報を取り出すことができる。」（以下、意味のあるテキストＴａ３と称する）
8-6) 空白文字列「↓ｔｔ」
に分解される。
【００８５】
以下、テキストＴａ（つまり構造情報「/特許/要旨」のテキスト）が分解された上述の8-1)乃至8-6)の各データに対する処理について、順次説明する。
【００８６】
8-1) 意味のあるテキストＴａ１
テキストＴの先頭は意味のあるテキストＴａ１であり、空白文字列ではないため（ステップＳ１３，Ｓ１４）、テキストＴａ１が解析された時点では、次の要素の構造「/特許/要旨/text()」に関連する整形用空白文字は未だ確定されない。テキストＴａ１は、テキスト格納部に格納される。
【００８７】
8-2) 空白文字列「↓ｔｓｓｓｓｓｓ」
意味のあるテキストＴａ１に後続する空白文字列「↓ｔｓｓｓｓｓｓ」は、テキストＴａ１の中間部に現れる（ステップＳ１３，Ｓ１５，Ｓ１７）。この空白文字列「↓ｔｓｓｓｓｓｓ」は、テキストＴａ１において最初（１番目）に現れる空白文字列であり、当該テキストＴａ１に対応する構造情報「/特許/要旨/text()」に関連する整形用空白文字は空白文字情報蓄積部５５に存在しない（ステップＳ１９）。また空白文字列「↓ｔｓｓｓｓｓｓ」は、「/特許/要旨/text()」の１レベル上位の構造を表す構造情報「/特許/要旨」と空白文字情報蓄積部５５内の３番目のエントリで対応付けられている整形用空白文字「↓ｔ」（図７（ｃ）参照）より文字列長が長い。
【００８８】
この場合、第２の空白文字判定部５３２は、空白文字列「↓ｔｓｓｓｓｓｓ」を、構造情報「/特許/要旨/text()」に関連する整形用空白文字の候補として、当該構造情報「/特許/要旨/text()」に対応付けて、図７（ｃ）の状態にある空白文字情報蓄積部５５の４番目のエントリに蓄積する（ステップＳ２０）。
【００８９】
図１１（ａ）は、このときの空白文字情報蓄積部５５の内容を示す。図１１（ａ）では、空白文字情報蓄積部５５の４番目のエントリに含まれるフラグが、「候補（整形用空白文字の候補）」を示す状態に設定されている。
【００９０】
8-3) 意味のあるテキストＴａ２
テキストＴａ内の１番目の空白文字列「↓ｔｓｓｓｓｓｓ」に後続するＴａ２は空白文字列ではない（ステップＳ１３）。この場合、Ｔａ２は意味のあるテキストであると判定される（ステップＳ１４）。テキストＴａ２は、テキスト格納部に既に格納されているテキストＴａ１に後続するように、当該テキスト格納部に格納される。
【００９１】
8-4) 空白文字列「↓ｔｓｓｓｓｓｓ」
意味のあるテキストＴａ１に後続する空白文字列「↓ｔｓｓｓｓｓｓ」、つまりテキストＴａ内の２番目の空白文字列「↓ｔｓｓｓｓｓｓ」は、当該テキストＴａの中間部に現れる（ステップＳ１３，Ｓ１５，Ｓ１７）。この２番目の空白文字列「↓ｔｓｓｓｓｓｓ」は、空白文字情報蓄積部５５の４番目のエントリに整形用空白文字の候補として蓄積されている１番目の空白文字列「↓ｔｓｓｓｓｓｓ」に一致する（ステップＳ１９、Ｓ２１，Ｓ２３）。この場合、第２の空白文字判定部５３２は、１番目の空白文字列及び２番目の空白文字列（つまり現在処理対象となっている空白文字列）は共に整形用空白文字であるとして、空白文字情報蓄積部５５の４番目のエントリに蓄積されている１番目の空白文字列「↓ｔｓｓｓｓｓｓ」を整形用空白文字列と確定する（ステップＳ２４）。つまり第２の空白文字判定部５３２は、空白文字列「↓ｔｓｓｓｓｓｓ」が蓄積されている空白文字情報蓄積部５５の４番目のエントリに含まれるフラグを、図１１（ａ）における「候補」を示す状態から「確定」を示す状態に変更する。図１１（ｂ）は、このときの空白文字情報蓄積部５５の内容を示す。
【００９２】
8-5) 意味のあるテキストＴａ３
テキストＴａ内の２番目の空白文字列「↓ｔｓｓｓｓｓｓ」に後続するＴａ３は空白文字列ではない（ステップＳ１３）。この場合、Ｔａ３は意味のあるテキストであると判定される（ステップＳ１４）。テキストＴａ３は、テキスト格納部に既に格納されているテキストＴａ２に後続するように、当該テキスト格納部に格納される。
【００９３】
8-6) 空白文字列「↓ｔｔ」
意味のあるテキストＴａ３に後続する空白文字列「↓ｔｔ」、つまりテキストＴａ内の３番目の空白文字列「↓ｔｔ」は、当該テキストＴａの末尾に現れる（ステップＳ１３，Ｓ１５，Ｓ１７）。この場合、第２の空白文字判定部５３２は、テキストＴａの末尾（４番目）の空白文字列「↓ｔｔ」を、次の要素に関連する整形用空白文字列であると判定して、当該文字列「↓ｔｔ」を該当構造の構造情報「/特許/要旨/」と対応付けて空白文字一時格納部５４に格納する（ステップＳ１８）。図１２（ａ）は、このときの空白文字一時格納部５４の内容を示す。
【００９４】
以上により、テキストＴａについての処理が終了する。
【００９５】
(9) <英文>（/特許/要旨/英文）
テキストＴａの末尾の（整形用空白文字列と判定された）空白文字列「↓ｔｔ」に後続する文書データは<英文>タグである。<英文>タグは、構造情報「/特許/要旨/英文」で示される<英文>要素の開始を示す開始タグである（ステップＳ４，Ｓ５）。この場合、第１の空白文字判定部５３１は、空白文字一時格納部５４を参照することにより、構造情報「/特許/要旨/英文」が前回取得された文書データである整形用空白文字列（ここでは「↓ｔｔ」）に後続して記述されていることを認識する。そこで第１の空白文字判定部５３１は、構造情報「/特許/要旨/英文」が、前回取得された整形用空白文字列「↓ｔｔ」に後続して記述されていることを示すために、構造情報「/特許/名称/英文」を先行する整形用空白文字列「↓ｔｔ」と対応付けて空白文字情報蓄積部５５の５番目のエントリに蓄積する（ステップＳ６）。このとき第１の空白文字判定部５３１は、整形用空白文字「↓ｔｔ」が蓄積された空白文字情報蓄積部５５の５番目のエントリのフラグを、「確定」を示す状態に設定する。図１１（ｃ）は、このときの空白文字情報蓄積部５５の内容を示す。
【００９６】
(10) Ｔｂ（テキスト）
<英文>タグに後続する文書データは、テキストＴｂ、つまり
「↓ｔｔｔThe device reads a document and stores both the structure information↓ｔｔｔand texts in an external storage. ↓ｔｔ」
である（ステップＳ４，Ｓ８）。この場合、分解部５３３は、テキストＴｂを先頭から順に、空白文字列と、空白文字列を含まないテキスト部分（意味のあるテキスト）とに分解する（ステップＳ１０，Ｓ１１）。
【００９７】
ここでは、テキストＴｂは、
10-1) 空白文字列「↓ｔｔｔ」
10-2) 意味のあるテキスト「The device reads a document and stores both the structure information」（以下、意味のあるテキストＴｂ１と称する）
10-3) 空白文字列「↓ｔｔｔ」
10-4) 意味のあるテキスト「and texts in an external storage.」（以下、意味のあるテキストＴｂ２と称する）
10-5) 空白文字列「↓ｔｔ」
に分解される。
【００９８】
以下、テキストＴｂ（つまり構造情報「/特許/要旨/英文」のテキスト）が分解された上述の10-1)乃至10-5)の各データに対する処理について、順次説明する。
【００９９】
10-1) 空白文字列「↓ｔｔｔ」
この空白文字列「↓ｔｔｔ」は、テキストＴｂの先頭に現れる（ステップＳ１５）。また、この空白文字列「↓ｔｔｔ」は、テキストＴｂを含む構造を表す構造情報「/特許/要旨/英文/text()」の１レベル上位の構造を表す構造情報「/特許/要旨/英文」と空白文字情報蓄積部５５内の５番目のエントリで対応付けられている整形用空白文字「↓ｔｔ」（図１１（ｃ）参照）よりも文字列長が長い。
【０１００】
この場合、第２の空白文字判定部５３２は、空白文字列「↓ｔｔｔ」をテキストＴｂの整形用空白文字であると確定する（ステップＳ１６）。このステップＳ１６において第２の空白文字判定部５３２は、整形用空白文字と確定された「↓ｔｔｔ」を、テキストＴｂを含む構造を表す構造情報「/特許/要旨/英文/text()」に対応付けて、空白文字情報蓄積部５５の６番目のエントリに蓄積する。図１１（ｄ）は、このときの空白文字情報蓄積部５５の内容を示す。
【０１０１】
10-2) 意味のあるテキストＴｂ１
テキストＴｂの先頭の空白文字列「↓ｔｔｔ」に後続するＴｂ１は空白文字列ではない（ステップＳ１３）。この場合、第２の空白文字判定部５３２は、Ｔｂ１を意味のあるテキストであると判定する（ステップＳ１４）。テキストＴｂ１はテキスト格納部に格納される。
【０１０２】
10-3) 空白文字列「↓ｔｔｔ」
意味のあるテキストＴｂ１に後続する空白文字列「↓ｔｔｔ」、つまりテキストＴｂ内の２番目の空白文字列「↓ｔｔｔ」は、当該テキストＴｂの中間部に現れる（ステップＳ１３，Ｓ１５，Ｓ１７）。この２番目の空白文字列「↓ｔｔｔ」は、空白文字情報蓄積部５５の６番目のエントリに整形用空白文字列として確定されて蓄積されている１番目の空白文字列「↓ｔｔｔ」（図１１（ｄ）参照）に一致する（ステップＳ１９，Ｓ２１，Ｓ２３）。この場合、第２の空白文字判定部５３２は、現在処理対象となっている２番目の空白文字列「↓ｔｔｔ」が、空白文字情報蓄積部５５に蓄積されている、テキストＴｂ内の１番目の空白文字列「↓ｔｔｔ」と同様に、構造情報「/特許/要旨/英文/text()」に関連する整形用空白文字列であると判定する（ステップＳ２５）。
【０１０３】
10-4) 意味のあるテキストＴｂ２
テキストＴｂ内の２番目の空白文字列「↓ｔｔｔ」に後続するＴｂ２は空白文字列ではない（ステップＳ１３）。この場合、第２の空白文字判定部５３２は、Ｔｂ２を意味のあるテキストであると判定する（ステップＳ１４）。テキストＴｂ２は、テキスト格納部に既に格納されているテキストＴｂ１に後続するように、当該テキスト格納部に格納される。
【０１０４】
10-5) 空白文字列「↓ｔｔ」
意味のあるテキストＴｂ２に後続する空白文字列「↓ｔｔ」、つまりテキストＴｂ内の３番目の空白文字列「↓ｔｔ」は、当該テキストＴｂの末尾に現れる（ステップＳ１３，Ｓ１５，Ｓ１７）。
【０１０５】
この場合、第２の空白文字判定部５３２は、テキストＴｂの末尾（３番目）の空白文字列「↓ｔｔ」を、次の要素に関連する整形用空白文字列であると判定して、当該文字列「↓ｔｔ」を該当構造の構造情報「/特許/要旨/英文」と対応付けて空白文字一時格納部５４に格納する（ステップＳ１８）。空白文字一時格納部５４に格納された空白文字列「↓ｔｔ」（テキストＴｂの末尾の空白文字列）の次の文書データは<英文>要素の終了タグであり、次の要素は存在しないため、当該空白文字列「↓ｔｔ」は整形用空白文字列として使用されない。  
以上により、テキストＴｂについての処理が終了する。
【０１０６】
(11) </英文>
構文解析部５２は、テキストＴｂについての処理が終了すると、当該テキストＴｂに後続する文書データの構造解析を行う（ステップＳ２，Ｓ３）。テキストＴｂに後続する文書データは</英文>タグである。
【０１０７】
</英文>タグは、構造情報「/特許/要旨/英文」で示される<英文>要素の終了を示す終了タグである（ステップＳ４，Ｓ５）。この場合、構文解析部５２は、対象階層を１レベル上げる（ステップＳ７）。これにより処理対象となる階層の構造情報は「/特許/要旨」となる。
【０１０８】
(12) ↓ｔ
</英文>タグに後続する文書データは「↓ｔ」である。この「↓ｔ」は、現在の処理対象階層をなす<要旨>要素の内容（の一部）であり、「ignorable white space」である（ステップＳ４，Ｓ８）。
【０１０９】
そこで第１の空白文字判定部５３１は、この「ignorable white space」である「↓ｔ」を次に出現する要素の整形用空白文字であるとして、当該「↓ｔ」を現在の処理対象階層の構造情報「/特許/要旨」に対応付けて空白文字一時格納部５４に格納する（ステップＳ９）。図１２（ｂ）は、このときの空白文字一時格納部５４の内容を示す。空白文字一時格納部５４に格納された空白文字列「↓ｔ」の次の文書データは<要素>要素の終了タグであるため、当該空白文字列「↓ｔ」は整形用空白文字列として使用されない。
【０１１０】
(13) </要旨>
</要旨>タグは、構造情報「/特許/要旨」で示される<要旨>要素の終了を示す終了タグである（ステップＳ４，Ｓ５）。この場合、構文解析部５２は、対象階層を１レベル上げる（ステップＳ７）。これにより処理対象となる階層の構造情報は「/特許」となる。
【０１１１】
(14) ↓
</要旨>タグに後続する文書データは「↓」である。この「↓」は、現在の処理対象階層をなす<特許>要素の内容（の一部）であり、「ignorable white space」である（ステップＳ４，Ｓ８）。この場合、「↓」は、現在の処理対象階層の構造情報「/特許」に対応付けて空白文字一時格納部５４に格納される（ステップＳ９）。図１２（ｃ）は、このときの空白文字一時格納部５４の内容を示す。空白文字一時格納部５４に格納された「↓」（ignorable white space）の次の文書データは<特許>要素の終了タグであり、次の要素は存在しないため、当該「↓」は整形用空白文字列として使用されない。
【０１１２】
(15) </特許>
「↓」（ignorable white space）に後続する文書データは</特許>タグである。</特許>タグは、構造情報「/特許」で示される最上位の階層の<特許>要素の終了を示す終了タグである（ステップＳ４，Ｓ５）。この場合、構文解析部５２は構造情報「/特許」の終了を判定し（ステップＳ２）、ＸＭＬ文書の解析を終了する。
【０１１３】
この時点においてテキスト格納部には、テキスト「情報処理装置」が格納されている。テキスト格納部には更に、テキストＴａに関しては、Ｔａ１，Ｔａ２及びＴａ３が格納され、テキストＴｂに関しては、Ｔｂ１及びＴｂ２が格納されている。即ちテキスト格納部には、テキスト「情報処理装置」に加えて、テキストＴａ及びＴｂから整形用空白文字列が取り除かれた部分が格納されている。
【０１１４】
索引作成部５６は、テキスト格納部に格納されている、テキスト「情報処理装置」と、テキストＴａ及びＴｂから整形用空白文字列が取り除かれた部分とに基づき、つまり意味のあるテキストに基づき、当該意味のあるテキストを含むＸＭＬ文書の検索に用いられる索引（索引レコード）を作成する。そして索引作成部５６は、作成された索引レコードを索引４２２の一部として、ＸＭＬ文書原文に対応付けてＸＭＬデータベース４２に格納する。
【０１１５】
なお、上述のＸＭＬ文書の例では、テキストの中間部に含まれる空白文字列が全て整形用空白文字列であると判定されている。もし、テキストの中間部に含まれる空白文字列が、空白文字情報蓄積部５５に蓄積されている該当構造の整形用空白文字列と異なる場合には（ステップＳ１９，Ｓ２１）、上記中間部に含まれる空白文字列は整形用空白文字列ではなくてテキスト（有効なテキスト）であると判定される（ステップＳ２２）。この場合、判定された空白文字列は、索引作成部５６による索引作成の対象となる。
【０１１６】
図１０（図９）に示すＸＭＬ文書（第２のＸＭＬ文書）の例では、説明の簡略化のために、英文のテキストＴａ１及びＴａ２に含まれる空白文字（半角スペース）は有効なテキストの一部として処理されている。しかし、テキストＴａ１及びＴａ２に含まれる半角スペースを空白文字として処理しても構わない。このようにしても、テキストＴａ１及びＴａ２に含まれる半角スペース（空白文字）はテキスト（有効なテキスト）として判定されるため（ステップＳ１９，Ｓ２１，Ｓ２２）、上記の例と同一となる。
【０１１７】
上記実施形態では、構文解析部５２による文書解析処理後に、索引作成部５６による索引作成処理が行われる。しかし、構文解析部５２による文書解析処理と並行して索引作成部５６による索引作成処理が行われても良い。
【０１１８】
次に、上述のようにして作成された索引レコードを含む索引４２２を利用したＸＭＬ文書検索について、図１３のフローチャートを参照して簡単に説明する。  
今、ユーザがクライアント端末２０を操作することにより、当該クライアント端末２０からＸＭＬデータベース管理システム５０（データベースサーバ１０）に対して、ネットワーク３０を介して検索要求が与えられたものとする。ここでは、単語「構造情報」をキーワードとするＸＭＬ文書検索が要求されたものとする。
【０１１９】
ＸＭＬデータベース管理システム５０内の検索部（図示せず）は、クライアント端末２０からの検索要求で指定されたキーワード（検索キーワード）「構造情報」に基づき、索引４２２（に含まれている索引ページ）を検索する（ステップＳ３１）。即ち検索部は、「構造情報」をキーワードとして含む全ての索引レコードを検索する。検索部は、検索された索引レコードにそれぞれ含まれている出現位置の情報に基づき、「構造情報」を含むＸＭＬ文書（の原文）を全て取り出す（ステップＳ３２）。これにより、例えば図６に示されるＸＭＬ文書も、文字列「構造情」と文字「報」との間に改行文字「↓」及び２つのタブ文字「ｔ」）が挿入されているにも拘わらずに、「構造情報」を含むＸＭＬ文書として取り出される。
【０１２０】
［変形例］
次に上記実施形態の変形例について説明する。この変形例の特徴は、ＸＭＬ文書（の実体）に当該ＸＭＬ文書の構造を定義（記述）した文書型定義（Document Type Definition: DTD）と呼ばれるスキーマ情報（文書型定義情報）が付されている場合に、構文解析部５２が、ＸＭＬ文書（の実体）それ自体ではなくて当該スキーマ情報に基づいて当該ＸＭＬ文書の構造を予め解析する点にある。
【０１２１】
図１４は、図６（図５）のＸＭＬ文書の構造を定義したＤＴＤ（文書型定義情報）の一例を示す。ＤＴＤの１行目の
「<！ＥＬＥＭＥＮＴ  特許（名称，要旨）>」
は、<特許>要素には、<名称>要素及び<要旨>要素が、この順番に出現しなければならないことを示す。
【０１２２】
ＤＴＤの２行目の
<！ＥＬＥＭＥＮＴ  名称  （＃ＰＣＤＡＴＡ）>
は、<名称>要素に文字データ（＃ＰＣＤＡＴＡ）が出現することを示す。
【０１２３】
同様に、ＤＴＤの３行目の
<！ＥＬＥＭＥＮＴ  要旨  （＃ＰＣＤＡＴＡ）>
は、<要旨>要素に文字データ（＃ＰＣＤＡＴＡ）が出現することを示す。
【０１２４】
構文解析部５２は、このＤＴＤを解析することで、<特許>タグが最上位（１段目）の構造をなし、<名称>タグ及び<要旨>タグが２段目の構造をなすことを予め認識することができる。<名称>タグ及び<要旨>タグは、それぞれ、文字データが出現する名称要素及び要旨要素のタグである。つまり構文解析部５２は、ＸＭＬ文書（の実体）に付されているＤＴＤを解析することで、文字データが出現する要素（<名称>要素及び<要旨>要素）と、その構造（階層の深さ）を予め認識することができる。
【０１２５】
このため、認識された構造を前提に、文書読込部５１によって読み込まれる図６（図５）に示すＸＭＬ文書（の実体）を解析するならば、構文解析部５２は、文字データが出現する<名称>要素及び<要旨>要素にそれぞれ含まれるテキストノードのみ、つまり<名称>タグに後続する文字列及び<要旨>タグに後続する文字列のみを解析対象とすれば良い。
【０１２６】
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、上記実施形態及びその変形例では、構造化文書としてＸＭＬ文書を例にとって説明したが、これに限るものではない。本発明は、例えば、ＳＧＭＬ（Standard Generalized Markup Language）文書のようなＸＭＬ文書以外の構造化文書にも同様に適用できる。
【０１２７】
また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【０１２８】
【図１】本発明の一実施形態に係るクライアント−サーバシステムのハードウェア構成を示すブロック図。
【図２】図１に示されるＸＭＬデータベース管理システムの主として機能構成を示すブロック図。
【図３】ＸＭＬデータベースに格納される索引のデータ構造例をＸＭＬ文書と対応付けて示す図。
【図４Ａ】上記実施形態で適用される整形用空白文字判定を含む構文解析処理の手順を示すフローチャートの一部を示す図。
【図４Ｂ】上記実施形態で適用される整形用空白文字判定を含む構文解析処理の手順を示すフローチャートの残りを示す図。
【図５】文書読込部によって読み込まれるＸＭＬ文書の一例を示す図。
【図６】図５に示すＸＭＬ文書を、当該ＸＭＬ文書に含まれる改行文字及びタブ文字が記号「↓」及び「ｔ」で置き換えられた形式で示す図。
【図７】図６のＸＭＬ文書の構文解析処理に伴う空白文字情報蓄積部の内容の変化を示す図。
【図８】図６のＸＭＬ文書の構文解析処理に伴う空白文字一時格納部の内容の変化を示す図。
【図９】文書読込部によって読み込まれるＸＭＬ文書の他の例を示す図。
【図１０】図９に示すＸＭＬ文書を、当該ＸＭＬ文書に含まれる改行文字及びタブ文字が記号「↓」及び「ｔ」で置き換えられた形式で示す図。
【図１１】図１０のＸＭＬ文書の構文解析処理に伴う空白文字情報蓄積部の内容の変化を示す図。
【図１２】図１０のＸＭＬ文書の構文解析処理に伴う空白文字一時格納部の内容の変化を示す図。
【図１３】上記実施形態で適用される索引を利用したＸＭＬ文書検索の手順を示すフローチャート。
【図１４】上記実施形態の変形例で適用される文書型定義情報の一例を示す図。
【符号の説明】
【０１２９】
１０…データベースサーバ、１１…メモリ、２０…クライアント端末、３０…ネットワーク、４０…外部記憶装置、４１…ＸＭＬデータベース管理プログラム、４２…ＸＭＬデータベース、５０…ＸＭＬデータベース管理システム、５１…文書読込部、５２…構文解析部（イグノラブル空白文字判定手段）、５３…空白文字判定部、５４…空白文字一時格納部、５５…空白文字情報蓄積部、５６…索引作成部、５７…文書格納処理部、４２１…ＸＭＬ文書集合、４２２…索引、５３１…第１の空白文字判定部、５３２…第２の空白文字判定部、５３３…分解部。
【図１】
2008242743.tif 000003
【図２】
2008242743.tif 000004
【図３】
2008242743.tif 000005
【図４Ａ】
2008242743.tif 000006
【図４Ｂ】
2008242743.tif 000007
【図５】
2008242743.tif 000008
【図６】
2008242743.tif 000009
【図７】
2008242743.tif 000010
【図８】
2008242743.tif 000011
【図９】
2008242743.tif 000012
【図１０】
2008242743.tif 000013
【図１１】
2008242743.tif 000014
【図１２】
2008242743.tif 000015
【図１３】
2008242743.tif 000016
【図１４】
2008242743.tif 000017