(57)【特許請求の範囲】
【請求項１】
出力要求を受け付けた場合に、該出力要求に含まれる出力項目にタグが存在するか否かを判定し、前記出力項目に前記タグが存在する場合には、前記タグ間の接続関係を示す出力項目ツリーに登録済みのタグであるか否かを判定し、前記タグが前記出力項目ツリーに登録済みのタグでない場合には、前記出力項目ツリーに前記タグの登録を行うとともに、前記タグと他のタグとを接続するチェーンを前記出力項目ツリーに作成することで、検索対象となる階層構造のデータからツリー構造のデータを作成し、要素の取得を示す要素フラグがオンの場合には、前記出力項目に対応する要素を取得するツリー作成手順と、
前記ツリー作成手順によって作成されたツリー構造のデータを走査して、前記出力項目ごとに対応するデータを検索し、取得された前記要素を前記出力項目に対応付けてバッファに設定するツリー走査手順と、
前記ツリー走査手順によって検索されて、前記バッファに設定された出力項目および対応する要素を出力する出力手順と
をコンピュータに実行させることを特徴とする検索プログラム。
【請求項２】
前記ツリー作成手順は、前記階層構造のデータから前記ツリー構造のデータを作成するとともに、該ツリー構造のデータにおける出力項目のタグの配下にある複数のデータのうち、先頭にあるデータの記憶位置と最後尾にあるデータの記憶位置とを示すファストパス情報を作成し、
前記ツリー走査手順は、前記ツリー作成手順によって作成されたファストパス情報を用いて、前記ツリー構造のデータを走査して、前記出力項目に対応するデータを検索することを特徴とする請求項１に記載の検索プログラム。
【請求項３】
出力要求を受け付けた場合に、該出力要求に含まれる出力項目にタグが存在するか否かを判定し、前記出力項目に前記タグが存在する場合には、前記タグ間の接続関係を示す出力項目ツリーに登録済みのタグであるか否かを判定し、前記タグが前記出力項目ツリーに登録済みのタグでない場合には、前記出力項目ツリーに前記タグの登録を行うとともに、前記タグと他のタグとを接続するチェーンを前記出力項目ツリーに作成することで、検索対象となる階層構造のデータからツリー構造のデータを作成し、要素の取得を示す要素フラグがオンの場合には、前記出力項目に対応する要素を取得するツリー作成手段と、
前記ツリー作成手段によって作成されたツリー構造のデータを走査して、前記出力項目ごとに対応するデータを検索し、取得された前記要素を前記出力項目に対応付けてバッファに設定するツリー走査手段と、
前記ツリー走査手段によって検索されて、前記バッファに設定された出力項目および対応する要素を出力する出力手段と
を有することを特徴とする検索装置。
【請求項４】
コンピュータが、
出力要求を受け付けた場合に、該出力要求に含まれる出力項目にタグが存在するか否かを判定し、前記出力項目に前記タグが存在する場合には、前記タグ間の接続関係を示す出力項目ツリーに登録済みのタグであるか否かを判定し、前記タグが前記出力項目ツリーに登録済みのタグでない場合には、前記出力項目ツリーに前記タグの登録を行うとともに、前記タグと他のタグとを接続するチェーンを前記出力項目ツリーに作成することで、検索対象となる階層構造のデータからツリー構造のデータを作成し、要素の取得を示す要素フラグがオンの場合には、前記出力項目に対応する要素を取得するツリー作成ステップと、
前記ツリー作成ステップによって作成されたツリー構造のデータを走査して、前記出力項目ごとに対応するデータを検索し、取得された前記要素を前記出力項目に対応付けてバッファに設定するツリー走査ステップと、
前記ツリー走査ステップによって検索されて、前記バッファに設定された出力項目および対応する要素を出力する出力ステップと
を実行することを特徴とする検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索プログラム、検索装置および検索方法に関する。
【背景技術】
【０００２】
近年、利用者からの検索要求に応じて、階層構造のデータ（例えば、ＸＭＬ形式のデータ）を表形式のデータ（例えば、ＣＳＶ形式のデータ）に変換して、検索結果を出力することが実施されている。
【０００３】
ここで、ＸＭＬ形式のデータを検索対象データとして保持する情報処理装置の検索処理について具体的に説明する。情報処理装置は、ＸＭＬ形式のデータを検索対象のデータとした検索要求を受け付けると、図１３に例示するように、ＸＭＬ形式の全データからツリー構造のデータを作成する。図１３は、検索対象データのツリー構造を説明するための図である。
【０００４】
そして、情報処理装置は、ツリー構造のデータを走査して出力する項目を検索する。例えば、図１４の例を用いて説明すると、情報処理装置は、検索結果として出力する出力項目が「文書ヘッダ」、「明細ヘッダ」、「最後から２番目の値」である場合に、出力項目に該当する項目をツリー構造のデータ全てを走査して検索する（図１４の（１）〜（２０参照））。そして、情報処理装置は、検索されたデータをＣＳＶ形式のデータで出力する。
【０００５】
また、このようなツリー構造のデータから検索対象となる可能性のある一部分のツリー構造のデータを抽出し、検索対象となる可能性のある一部分のツリー構造のデータをまとめて格納する技術が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−３４８０３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述したツリーを作成して検索する技術では、ツリー構造のデータのサイズが大きくなり、メモリの消費量が大きくなるとともに、検索処理の時間が掛かるという課題があった。
【０００８】
つまり、上述したツリーを作成して検索する技術では、ＸＭＬ形式の全データからツリー構造のデータを作成するので、ツリー構造のデータのサイズが大きくなり、メモリの消費量が大きくなる。また、サイズが大きいツリー構造のデータを走査して検索するので、検索処理に時間が掛かる。
【０００９】
なお、一部分のツリー構造のデータの情報をまとめて格納する技術についても同様に、検索対象となる可能性のあるデータが多く存在する場合には、データのサイズが大きくなり、メモリの消費量が大きくなるとともに、検索処理に時間が掛かる。
【００１０】
メモリの消費量を低減させるとともに、検索処理に掛かる時間を短縮することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、この装置は、出力要求を受け付けた場合に、出力要求に含まれる出力項目に応じて、階層構造のデータから必要最小限のツリー構造のデータを作成する。そして、作成されたツリー構造のデータを走査して、出力項目に対応するデータを検索し、出力項目を出力する。
【発明の効果】
【００１２】
メモリの消費量を低減させるとともに、検索処理に掛かる時間を短縮することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係る検索装置を説明するためのブロック図である。
【図２】図２は、実施例２に係る情報処理装置を説明するためのブロック図である。
【図３】図３は、出力項目を説明するための図である。
【図４】図４は、出力項目ツリーの作成処理を説明するための図である。
【図５】図５は、ＸＭＬ文章の一例を説明するための図である。
【図６】図６は、データツリーの作成処理を説明するための図である。
【図７】図７は、データツリーの走査処理を説明するための図である。
【図８】図８は、処理結果を説明するための図である。
【図９】図９は、出力項目ツリーの作成処理を説明するためのフローチャートである。
【図１０】図１０は、データツリーの作成処理を説明するためのフローチャートである。
【図１１】図１１は、データツリーの走査処理を説明するためのフローチャートである。
【図１２】図１２は、検索プログラムを実行するコンピュータの一例を説明するための図である。
【図１３】図１３は、検索対象データのツリー構造を説明するための図である。
【図１４】図１４は、従来の走査方法を説明するための図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する検索プログラム、検索装置および検索方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１５】
まず、図１を用いて、実施例１に係る検索装置の構成について説明する。図１は、実施例１に係る検索装置の構成を示すブロック図である。
【００１６】
実施例１の検索装置１は、ツリー作成部２、ツリー走査部３および出力部４を有する。ツリー作成部２は、出力要求を受け付けた場合に、出力要求に含まれる出力項目に応じて、検索対象となる階層構造のデータ（図１では、検索対象データと記載）からツリー構造のデータを作成する。
【００１７】
ツリー走査部３は、ツリー作成部２によって作成されたツリー構造のデータを走査して、出力項目に対応するデータを検索する。出力部４は、ツリー走査部３によって検索された出力項目を出力する。
【００１８】
つまり、検索装置１は、全ての検索対象データからツリー構造のデータを作成するのではなく、利用者が要求する出力項目に応じた必要最小限のツリー構造のデータを作成するので、メモリの消費量を低減させることができる。また、検索装置１は、必要最小限の大きさで作成されたツリーを走査するので、検索処理にかかる時間を短縮することができる。
【００１９】
このように、検索処理装置１は、出力要求を受け付けた場合に、出力要求に含まれる出力項目に応じて、階層構造のデータからツリー構造のデータを作成する。そして、検索処理装置１は、作成されたツリー構造のデータを走査して、出力項目に対応するデータを検索し、出力項目を出力する。このため、検索処理装置１は、必要最小限の大きさのデータツリーを作成し、必要最小限の大きさで作成されたツリーを走査するので、メモリの消費量を低減させるとともに、検索処理に掛かる時間を短縮することが可能である。
【実施例２】
【００２０】
以下の実施例では、実施例２に係る情報処理装置の構成および処理の流れを順に説明し、最後に実施例２による効果を説明する。
【００２１】
［監視装置の構成］
次に、図２を用いて、情報処理装置１０の構成を説明する。図２は、実施例２の情報処理装置を説明するためのブロック図である。図２に示すように、情報処理装置１０は、出力項目ツリー作成部１１、データ読込み処理部１２、データツリー作成部１３、走査部１４、出力部１５、メモリ１６を有する。以下にこれらの各部の処理を説明する。
【００２２】
出力項目ツリー作成部１１は、利用者からの出力要求として出力項目一覧ファイル２０を受け付け、出力項目一覧ファイル２０を用いて、データツリーを作成するために必要な項目を示す出力項目ツリーを作成する。ここで、出力項目ツリーとは、出力項目のタグとタグ同士の接続関係とを示すツリー構造のデータである。具体的には、出力項目ツリー作成部１１は、図３に例示するように、出力項目一覧ファイル２０を受け付ける。図３は、出力項目を説明するための図である。
【００２３】
図３の例では、出力項目一覧ファイル２０は、出力項目の決定タグを示す「／文書／伝票／明細」が記述されている。また、出力項目一覧ファイル２０は、出力項目として「．．／．．／文書タグ：＝文書タグヘッダ」、「．／明細ヘッダ：＝明細ヘッダ」、「．／値［ｌａｓｔ−１］：＝値［最後］から２番目」が記述されている。ここで、「．．／」とは、逆行軸を示している。つまり、「．．／．．／文書タグ：＝文書タグヘッダ」とは、文書、伝票、明細を辿った後に、文書に一旦逆戻りし、文書の配下に存在する文書ヘッダの要素内容を出力項目として出力することを示している。
【００２４】
また、「．／明細ヘッダ：＝明細ヘッダ」とは、明細の配下に存在する明細ヘッダの要素内容を出力項目として出力することを示している。また、「．／値［ｌａｓｔ−１］：＝値［最後］から２番目」とは、明細の配下に存在する値のうち、最後から２番目の値を出力項目として出力することを示している。なお、図３において下線が引かれたタグ「文書ヘッダ」、「明細ヘッダ」、「値［ｌａｓｔ−１］」は、出力する要素内容を配下にする最終タグであることを示す。
【００２５】
そして、出力項目ツリー作成部１１は、出力項目一覧ファイル２０を受け付けると、出力する項目を解析し、出力項目一覧ファイル２０に記述されたタグの登録とそのタグ同士との接続関係を示すチェーンとを作成して、出力項目ツリーを作成する。
【００２６】
ここで、図４を用いて出力項目ツリーの作成処理について説明する。図４に示すように、出力項目ツリー作成部１１は、出力項目一覧ファイル２０を解析して、出力する項目を示す出力項目表を作成する。図４に例示する表は、図３に例示する出力項目一覧ファイル２０から作成された表であり、決定タグ「／文書／伝票／明細」と出力項目「．．／．．／文書タグ：＝文書タグヘッダ」とが出力する項目「／文書／文書ヘッダ」に対応している。
【００２７】
また、決定タグ「／文書／伝票／明細」と出力項目「．／明細ヘッダ：＝明細ヘッダ」とが出力する項目「／文書／伝票／明細／明細ヘッダ」に対応している。また、決定タグ「／文書／伝票／明細」と出力項目「．／値［ｌａｓｔ−１］とが出力する項目「／文書／伝票／明細／明細ヘッダ」に対応している。例えば、「／文書／文書ヘッダ」とは、文書タグの配下にある文書ヘッダのタグから文書ヘッダの要素内容を出力することを示している。
【００２８】
そして、出力項目ツリー作成部１１は、出力項目表から上位のタグを一つ取り出し、タグの登録とチェーン作成を行い、下位のタグに移動して、出力項目表から上位のタグを一つ取り出し、出力項目ツリーにタグの登録とチェーンの作成を行う処理を繰り返す。ここで、出力項目ツリー作成部１１は、すでに登録済みのタグについては、重複しないようにタグを登録しない。
【００２９】
図４の例を用いて具体的に説明すると、出力項目ツリー作成部１１は、出力項目表の出力する項目「／文書／文書ヘッダ」から「文書」のタグを一つ取り出し、出力項目ツリーに登録する。ここで、先頭のタグについて、以下ルートタグという。そして、下位のタグに移動して、「文書ヘッダ」のタグを取り出し、出力項目ツリーに登録するとともに、文書タグとの接続を示すチェーンを作成する。
【００３０】
ここで、出力項目ツリー作成部１１は、次の下位のタグが存在しない場合には、図４に示すように、「文書ヘッダ」のタグについて要素獲得フラグをＯＮにする。ここで、要素獲得フラグがＯＮのタグについては、後述するように、タグの要素内容を取得してデータツリーを作成する。
【００３１】
そして、出力項目ツリー作成部１１は、図４に示すように、次の出力する項目に移動し、出力する項目「／文書／伝票／明細／明細ヘッダ」から「文書」のタグを一つ取り出す。ここで、出力項目ツリー作成部１１は、「文書」のタグについて出力項目ツリーに作成済みであるので、作成せずに次の「伝票」タグへ移動する。このように、出力項目ツリー作成部１１は、上述した処理を繰り返して、図４に例示するように、出力項目ツリーを作成する。その後、出力項目ツリー作成部１１は、出力項目ツリーをメモリ１６に記憶させる。
【００３２】
データ読込み処理部１２は、出力要求を受け付けると、階層構造を有し繰り返し項目が存在するＸＭＬ形式の入力ファイル２１のデータを出力対象データとして読み出す。例えば、データ読込み処理部１２は、図５に例示するように、ＸＭＬ形式の入力ファイル２１のデータを読み出して、読み出したデータをデータツリー作成部１３に通知する。
【００３３】
データツリー作成部１３は、出力項目一覧ファイル２０に含まれる出力項目に応じて作成された出力項目ツリーを用いて、ＸＭＬ形式のデータからツリー構造のデータを作成する。具体的には、データツリー作成部１３は、データ読込み処理部１２からＸＭＬ形式のデータを受信し、ＸＭＬ形式のデータから先頭のタグ名であるルートタグ名を取り出し、メモリ１６に記憶された出力項目ツリーのルートタグ名と一致するか比較する。
【００３４】
例えば、データツリー作成部１３は、図４および図５の例では、ＸＭＬ形式のデータのルートタグ名が「文書」であり、出力項目ツリーのルートタグ名も「文書」であり、一致する。この結果、情報処理装置１０は、出力項目ツリーのルートタグ名と一致しない場合には、データツリーの作成処理を終了する。
【００３５】
また、データツリー作成部１３は、出力項目ツリーのルートタグ名と一致する場合には、出力項目ツリーのカレント位置をルートタグ名にセットし、ルートタグをデータツリーに登録する。そして、データツリー作成部１３は、ＸＭＬ形式のデータにおいて、ルートタグの次の下位のタグに移動し、移動先のタグと同じタグが出力項目ツリーと同じタグが存在するか判定する。
【００３６】
この結果、データツリー作成部１３は、出力項目ツリーと同じタグが存在しない場合には、終了タグまで読み飛ばして、次の下位のタグに移動する。また、データツリー作成部１３は、出力項目ツリーと同じタグが存在する場合には、出力項目ツリーのカレント位置を移動するとともに、タグをデータツリーに登録し、前ツリーと双方向チェーンを作成する。
【００３７】
そして、データツリー作成部１３は、前ツリーのファストパス１７を設定する。また、データツリー作成部１３は、要素取得フラグがＯＮの場合には、要素を取得する。ここで、ファストパス１７とは、データツリーにおける出力項目のタグの配下にある複数の要素のうち、先頭にある要素内容のメモリアドレスと最後尾にある要素内容のメモリアドレスとを示す情報であり、メモリ１６に記憶されている。
【００３８】
ここで、図４に例示する出力項目ツリーおよび図５に例示するＸＭＬ形式のデータから図６に例示するデータツリーを作成する処理について具体的に説明する。データツリー作成部１３は、図６に示すように、ＸＭＬ形式のデータのルートタグ名「文書」（図５の例参照）と、出力項目ツリーのルートタグ名「文書」（図４の例参照）とが一致するので、ルートタグ「文書」を登録する。
【００３９】
そして、データツリー作成部１３は、図５に示すように、ルートタグ名「文書」の次の下位のタグ「文書ヘッダ」に移動し、図４の出力項目ツリーと同じタグが存在するか判定する。この結果、データツリー作成部１３は、出力項目ツリーに「文書ヘッダ」が存在するので、タグ「文書ヘッダ」をデータツリーに登録するとともに、ルートタグ「文書」との双方向チェーンを作成する。
【００４０】
そして、データツリー作成部１３は、図６に示すように、前のツリーのファストパス１７を作成する。ここで、データツリー作成部１３は、ファストパス１７として、図６に示すように、下位のタグの先頭にある要素のメモリアドレスを示す「先頭パス」と、下位のタグの最終にある要素のメモリアドレスを示す「最終パス」とを対応付けたファストパス１７を作成する。なお、要素が一つしかない場合には、先頭パスと最終パスが同じメモリアドレスとなる。
【００４１】
そして、データツリー作成部１３は、図４に示すように、「文書ヘッダ」の要素取得フラグがＯＮであるので、要素「Ａ社取り引き帳票」を取得してデータツリーに登録する。その後、データツリー作成部１３は、全てのタグについて上記のデータツリー作成処理を繰り返し、データツリーを作成して、メモリ１６に記憶させる。
【００４２】
このように、データツリー作成部１３は、出力項目ツリーからデータツリーを作成するので、利用者が要求する出力項目に基づいて必要最小限のデータツリーを作成する結果、メモリ１６の消費量を低減させることができる。
【００４３】
走査部１４は、データツリー作成部１３によって作成されたツリー構造のデータを走査して、出力項目一覧ファイル２０に対応するデータを検索する。具体的には、走査部１４は、メモリ１６からデータツリーを読み出し、出力項目レコードの決定タグまで移動する。例えば、走査部１４は、出力項目レコードの決定タグが「／文書／伝票／明細」である場合には、文書、伝票を辿って明細のタグに移動する。ここで、辿るとは、データツリー上のチェーンで接続されたタグに沿って検索することをいう。
【００４４】
そして、走査部１４は、一つの出力項目の一つのタグを取り出し、タグに「ｌａｓｔ」の記述があるか判定し、タグに「ｌａｓｔ」が記述されている場合には、ファストパス情報を用いて、データツリーを最終パスからタグに移動する。また、走査部１４は、タグに「ｌａｓｔ」が記述されていない場合には、ファストパス情報を用いて、データツリーを先頭パスから移動する。
【００４５】
そして、走査部１４は、移動先のタグが最終のタグであるか判定し、最終のタグでない場合には、次の下位のタグに移動して一つの出力項目の一つのタグを取り出して上述の処理を繰り返す。また、走査部１４は、最終タグである場合には、走査部１４が保持する書き出しバッファに最終タグの配下にある要素内容を設定する。
【００４６】
ここで、図７を用いて、データツリーの走査について具体的に説明する。例えば、走査部１４は、出力項目レコードの決定タグが「／文書／伝票／明細」である場合には、「文書」、「伝票」を辿って「明細」のタグに移動する（図７の（１）、（２）参照）。
【００４７】
そして、走査部１４は、一つの出力項目の一つのタグとして「明細ヘッダ」を取り出した場合に、出力項目の「．／明細ヘッダ：＝明細ヘッダ」に「ｌａｓｔ」の記述はないので、データツリーを先頭パスから「明細ヘッダ」に移動する（図７の（３）参照）。ここで、走査部１４は、「明細ヘッダ」は、最終タグであるので、書き出しバッファに「明細ヘッダ」の要素内容である「テレビ」を設定する。
【００４８】
次に、走査部１４は、次の出力項目のタグとして「値［ｌａｓｔ−１］」を取り出した場合に、出力項目の「．／値［ｌａｓｔ−１］：＝値［最後から２番目］」に「ｌａｓｔ」の文字がある。この場合には、走査部１４は、ファストパス１７から最終パスのメモリアドレスを読み出し、最終パスのメモリアドレスから辿って「最後から２番目の値」に移動する（図７の（４）、（５）参照）。
【００４９】
ここで、走査部１４は、「値［ｌａｓｔ−１］」は、最終タグであるので、書き出しバッファに「最後から２番目の値」の要素内容である値「０」を設定して、「明細」タグに戻る（図７の（６）参照）。その後、走査部１４は、同様の走査処理を行って、「明細ヘッダ」および「最後から２番目の値」のタグに移動して（図７の（７）〜（１７）参照）、要素内容を書き出しバッファに設定する。
【００５０】
このように、走査部１４は、ファストパス１７を利用して走査を行うことで、例えば、「先頭から２番目」や「最後から５番目」などの利用者の幅広いニーズに対しても、高速に検索結果を出力することができる。なお、走査部１４は、データツリーから出力項目を検索する方法として、上記の走査処理に限定されるものではなく、他の検索方法を用いてもよい。
【００５１】
出力部１５は、検索された出力項目を出力する。具体的には、走査部１４は、走査部１４に設定された要素内容を書き出し、図８に例示するように、ＣＳＶ形式の出力ファイル２２のデータを出力結果として出力する。例えば、図８に例示するように、出力部１５は、出力項目「文書ヘッダ」について要素「Ａ社取り引き帳票」、出力項目「明細ヘッダ」について要素「テレビ」、出力項目「値［最後から２番目］」について要素「０」をそれぞれ対応付けて出力する。
【００５２】
また、図８に例示するように、出力部１５は、出力項目「文書ヘッダ」について要素「Ａ社取り引き帳票」、出力項目「明細ヘッダ」について要素「カメラ」、出力項目「値［最後から２番目］」について要素「３０」をそれぞれ対応付けて出力する。また、図８に例示するように、出力部１５は、出力項目「文書ヘッダ」について要素「Ａ社取り引き帳票」、出力項目「明細ヘッダ」について要素「エアコン」、出力項目「値［最後から２番目］」について要素「３０」をそれぞれ対応付けて出力する。
【００５３】
［情報処理装置による処理］
次に、図９〜図１１を用いて、実施例２に係る情報処理装置１０による処理を説明する。図９は、出力項目ツリーの作成処理を説明するためのフローチャートである。図１０は、データツリーの作成処理を説明するためのフローチャートである。図１１は、データツリーの走査処理を説明するためのフローチャートである。
【００５４】
図９に示すように、情報処理装置１０は、出力項目一覧ファイル２０から出力する項目があるか判定し（ステップＳ１０１）、出力する項目があると判定した場合には（ステップＳ１０１肯定）、タグが存在するか判定する（ステップＳ１０２）。この結果、情報処理装置１０は、タグが存在すると判定した場合には（ステップＳ１０２肯定）、すでに登録済みのタグであるか判定する（ステップＳ１０３）。
【００５５】
この結果、情報処理装置１０は、登録済みのタグでない場合には（ステップＳ１０３否定）、出力項目ツリーにタグの登録を行うとともに、他のタグとを接続するチェーンを作成する（ステップＳ１０４）。そして、下位のタグに移動して（ステップＳ１０５）、ステップＳ１０５に戻る。また、情報処理装置１０は、すでに登録済みのタグである場合には（ステップＳ１０３肯定）、タグの登録を行わずに、ステップＳ１０２に戻る。
【００５６】
また、Ｓ１０２の説明に戻って、情報処理装置１０は、全てのタグについて登録を行った結果、タグが存在しないと判定した場合には（ステップＳ１０２否定）、要素獲得フラグをＯＮにし、次の項目に移動して（ステップＳ１０６）、ステップＳ１０１に戻る。また、Ｓ１０１の説明に戻って、情報処理装置１０は、出力する項目がないと判定した場合には（ステップＳ１０１否定）、出力項目ツリー作成処理を終了する。
【００５７】
次に、図１０を用いて、データツリーの作成処理について説明する。図１０に示すように、情報処理装置１０は、ＸＭＬデータを読み込むと（ステップＳ２０１）、ＸＭＬデータから先頭のタグ名であるルートタグ名を取り出し（ステップＳ２０２）、出力項目ツリーのルートタグ名と一致するか比較する（ステップＳ２０３）。この結果、情報処理装置１０は、出力項目ツリーのルートタグ名と一致しない場合には（ステップＳ２０３否定）、データツリーの作成処理を終了する。
【００５８】
また、情報処理装置１０は、出力項目ツリーのルートタグ名と一致する場合には（ステップＳ２０３肯定）、出力項目ツリーのカレント位置をルートタグ名にセットする（ステップＳ２０４）。そして、情報処理装置１０は、ルートタグをデータツリーに登録してデータツリーを作成し、ファストパス情報を記憶する領域を獲得する（ステップＳ２０５）。続いて、情報処理装置１０は、ルートタグの要素取得フラグがＯＮの場合には、要素を取得して（ステップＳ２０６）、ＸＭＬデータの下位のタグに移動する（ステップＳ２０７）。
【００５９】
そして、情報処理装置１０は、下位のタグに移動した際に、ＸＭＬデータにタグがあるか判定し（ステップＳ２０８）、タグがないと判定した場合には（ステップＳ２０８否定）、データツリーの作成処理を終了する。また、情報処理装置１０は、タグがあると判定した場合には（ステップＳ２０８肯定）、出力項目ツリーと同じタグが存在するか判定する（ステップＳ２０９）。この結果、情報処理装置１０は、出力項目ツリーと同じタグが存在しないと判定した場合には（ステップＳ２０９否定）、終了タグまで読み飛ばして（ステップＳ２１７）、次の下位のタグに移動する（ステップＳ２０７）。
【００６０】
また、情報処理装置１０は、出力項目ツリーと同じタグが存在すると判定した場合には（ステップＳ２０９肯定）、出力項目ツリーのカレント位置を移動し（ステップＳ２１０）、データツリーを作成して前ツリーと双方向チェーンを作成する（ステップＳ２１１）。
【００６１】
そして、情報処理装置１０は、前ツリーのファストパス１７を設定し（ステップＳ２１２）、要素取得フラグがＯＮの場合には、要素を取得して（ステップＳ２１３）、新たに開始タグを検出する（ステップＳ２１４）。そして、情報処理装置１０は、新たに開始タグを検出した場合に（ステップＳ２１４肯定）、Ｓ２０７に戻って処理を繰り返す。
【００６２】
また、情報処理装置１０は、新たに開始タグが検索されず（ステップＳ２１４否定）、終了タグを検出すると（ステップＳ２１５）、出力項目ツリーのカレント位置を一つ上の階層に戻して（ステップＳ２１６）、ステップＳ２０７に戻る。
【００６３】
次に、図１１を用いて、データツリーの走査処理を説明する。図１１に示すように、情報処理装置１０は、出力項目レコードの決定タグまで移動し（ステップＳ３０１）、決定タグがあるか判定する（ステップＳ３０２）。この結果、情報処理装置１０は、決定タグがないと判定した場合には（ステップＳ３０２否定）、書き出しバッファの内容を書き出して（ステップＳ３１６）、処理を終了する。
【００６４】
また、情報処理装置１０は、決定タグがあると判定した場合には（ステップＳ３０２肯定）、データツリーに決定タグが存在するか判定する（ステップＳ３０３）。この結果、情報処理装置１０は、データツリーに決定タグが存在しないと判定した場合には（ステップＳ３０３否定）、書き出しバッファの内容を書き出して（ステップＳ３１６）、処理を終了する。
【００６５】
また、情報処理装置１０は、データツリーに決定タグが存在すると判定した場合には（ステップＳ３０３肯定）、出力項目数だけループしたか判定する（ステップＳ３０４）。この結果、情報処理装置１０は、出力項目数だけループしていないと判定した場合には（ステップＳ３０４否定）、次の決定タグに移動して（ステップＳ３１５）、ステップＳ３０２に戻る。また、情報処理装置１０は、出力項目数だけループしたと判定した場合には（ステップＳ３０４肯定）、一つの出力項目の一つのタグを取り出す（ステップＳ３０５）。そして、情報処理装置１０は、タグに「ｌａｓｔ」が記述されているか判定し（ステップＳ３０６）、タグに「ｌａｓｔ」が記述されている場合には（ステップＳ３０６肯定）、ファストパス情報を用いて、データツリーを最終パスから移動する（ステップＳ３０７）。
【００６６】
また、情報処理装置１０は、タグに「ｌａｓｔ」が記述されていない場合には（ステップＳ３０６否定）、ファストパス情報を用いて、データツリーを先頭パスから移動する（ステップＳ３０８）。その後、情報処理装置１０は、タグが存在するか判定し（ステップＳ３０９）、タグが存在しないと判定した場合には（ステップＳ３０９否定）、書き出しバッファにエラーを示す「””」を設定し（ステップＳ３１４）、次の項目に移動する（ステップＳ３１２）。
【００６７】
また、情報処理装置１０は、タグが存在すると判定した場合には（ステップＳ３０９肯定）、そのタグが最終タグであるか判定する（ステップＳ３１０）。この結果、情報処理装置１０は、最終タグでないと判定した場合には（ステップＳ３１０否定）、下位のタグに移動し（ステップＳ３１３）、ステップＳ３０５に戻る。
【００６８】
また、情報処理装置１０は、最終タグであると判定した場合には（ステップＳ３１０肯定）、書き出しバッファに要素内容を設定し（ステップＳ３１１）、次の出力項目に移動して（ステップＳ３１２）、ステップＳ３０４に戻る。
【００６９】
[実施例２の効果]
上述してきたように、情報処理装置１０は、出力要求を受け付けた場合に、出力要求に含まれる出力項目に応じて、階層構造のデータからツリー構造のデータを作成する。そして、作成されたツリー構造のデータを走査して、出力項目に対応するデータを検索し、出力項目を出力する。このため、情報処理装置１０は、必要最小限の大きさのデータツリーを作成し、必要最小限の大きさで作成されたツリーを走査するので、メモリ１６の消費量を低減させるとともに、検索処理に掛かる時間を短縮することが可能である。
【００７０】
また、実施例２によれば、情報処理装置１０は、出力要求に含まれる出力項目のタグ情報とタグ情報同士の接続関係とを示すツリー構造のデータである出力項目ツリー情報を作成する。そして、情報処理装置１０は、出力項目ツリー情報を用いて、検索対象となる階層構造のデータからツリー構造のデータを作成する。このため、情報処理装置１０は、出力項目ツリーから必要最小限の大きさのツリーを作成するので、メモリ１６の消費量を低減させるとともに、検索処理に掛かる時間を短縮することが可能である。
【００７１】
また、実施例２によれば、情報処理装置１０は、階層構造のデータからツリー構造のデータを作成するとともに、ツリー構造のデータにおける出力項目のタグの配下にある複数のデータのうち、先頭にあるデータの記憶位置と最後尾にあるデータの記憶位置とを示すファストパス情報を作成する。そして、情報処理装置１０は、作成されたファストパス情報を用いて、ツリー構造のデータを走査して、出力項目に対応するデータを検索する。このため、検索処理をより高速に行うことが可能である。
【実施例３】
【００７２】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例３として本発明に含まれる他の実施例を説明する。
【００７３】
（１）システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、出力項目ツリー作成部１１とデータツリー作成部１３を統合してもよい。
【００７４】
（２）プログラム
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図１２を用いて、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１２は、検索プログラムを実行するコンピュータを示す図である。
【００７５】
図１２に示すように、検索プログラムを実行するコンピュータ６００は、ＨＤＤ６１０、ＲＡＭ６２０、ＲＯＭ６３０およびＣＰＵ６４０をバス６５０で接続して構成される。
【００７６】
そして、ＲＯＭ６３０には、上記の実施例と同様の機能を発揮する検索プログラム、つまり、図１２に示すように、ツリー作成プログラム６３１、ツリー走査プログラム６３２、出力プログラム６３３が予め記憶されている。なお、プログラム６３１〜６３３については、図２に示した情報処理装置の各構成要素と同様、適宜統合または分散してもよい。
【００７７】
そして、ＣＰＵ６４０が、これらのプログラム６３１〜６３３をＲＯＭ６３０から読み出して実行することで、図１２に示すように、各プログラム６３１〜６３３は、ツリー作成プロセス６４１、ツリー走査プロセス６４２、出力プロセス６４３として機能するようになる。
【００７８】
また、ＨＤＤ６１０には、図１２に示すように、検索対象データ６１１が設けられる。そして、ＣＰＵ６４０は、検索対象データ６１１を登録するとともに、検索対象データ６１１を読み出してＲＡＭ６２０に格納し、ＲＡＭ６２０に格納されたデータに基づいて処理を実行する。
【００７９】
なお、検索プログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータ６００の読出部６６０によって記録媒体から読み出されることによっても実行することもできる。
【符号の説明】
【００８０】
１  検索装置
２  ツリー作成部
３  ツリー走査部
４  出力部
１０  情報処理装置
１１  出力項目ツリー作成部
１２  データ読込み処理部
１３  データツリー作成部
１４  走査部
１５  出力部
１６  メモリ
１７  ファストパス
２０  出力項目一覧ファイル
２１  入力ファイル
２２  出力ファイル
【図１】
0005526947.tif 000002
【図２】
0005526947.tif 000003
【図３】
0005526947.tif 000004
【図４】
0005526947.tif 000005
【図５】
0005526947.tif 000006
【図６】
0005526947.tif 000007
【図７】
0005526947.tif 000008
【図８】
0005526947.tif 000009
【図９】
0005526947.tif 000010
【図１０】
0005526947.tif 000011
【図１１】
0005526947.tif 000012
【図１２】
0005526947.tif 000013
【図１３】
0005526947.tif 000014
【図１４】
0005526947.tif 000015