(57)【要約】【課題】  大規模なＸＭＬ文書であっても高速に検索することができ、かつ任意のキーワードに応じた並べ替えを容易に行うことができるテーブル形式のＸＭＬ文書のランダムアクセス方法及びそのプログラムを提供する。【解決手段】  ＤＯＭ１２を解析してテーブル１４を生成するための解析部１３と、メモリ２上に展開されたＤＯＭ１２及びテーブル１４に基づいて表示を行なうために編集を行なう編集部１５と、表示部１６の表示に応じた所定の指示に基づいてＤＯＭ１２及びテーブル１４を操作するための操作部１７とにおいて処理を行なわせるテーブル形式のＸＭＬ文書のランダムアクセス方法及びそのプログラムを提供する。【選択図】図２
2005284417.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによる、テーブル形式のＸＭＬ文書のランダムアクセス方法であって、
前記コンピュータの第１の記憶手段に格納されたＸＭＬ文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第１の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して、前記コンピュータの第２の記憶手段に格納し、
該第２の記憶手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスすることを特徴とするテーブル形式のＸＭＬ文書のランダムアクセス方法。
【請求項２】
前記テーブルには連想記憶配列を使用し、
該連想記憶配列のキーを前記上位構造の要素とし前記連想記憶配列の値を前記下位構造の要素のアドレスとして格納することを特徴とする請求項１に記載のテーブル形式のＸＭＬ文書のランダムアクセス方法。
【請求項３】
前記上位構造の要素は、下位構造の要素を分類するためのインデックスであることを特徴とする請求項１に記載のテーブル形式のＸＭＬ文書のランダムアクセス方法。
【請求項４】
前記上位構造の要素は、最上位の要素の次の階層にある要素であって下位構造の要素を分類するためのインデックスであることを特徴とする請求項１から３のいずれか一項に記載のテーブル形式のＸＭＬ文書のランダムアクセス方法。
【請求項５】
コンピュータにテーブル形式のＸＭＬ文書のランダムアクセスを実行させるためのプログラムであって、
前記コンピュータの第１の記憶手段に格納されたＸＭＬ文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第１の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して、前記コンピュータの第２の記憶手段に格納するテーブル化処理と、
該第２の記憶手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスする処理と、
をコンピュータに実行させることを特徴とするテーブル形式のＸＭＬ文書のランダムアクセス方法を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テーブル形式のＸＭＬ文書のランダムアクセス方法、及びそのプログラムに関する。
【背景技術】
【０００２】
近年では、その拡張性や自由度の高さからＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）に換えてＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）を用いた文書化が進んできている。
【０００３】
例えば、ＸＭＬ文書の情報単位である要素や属性等をスキーマ言語であるＤＴＤ等で定義することによってＸＭＬ文書の取り得る構造を自由に定義することが可能となっている。また、ＸＭＬのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）であるＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）やＳＡＸ（Ｓｉｍｐｌｅ  ＡＰＩ  ｆｏｒ  ＸＭＬ）を用いることによってＸＭＬ文書の要素を簡単に検索することが可能となっている。
【特許文献１】特開２００３−２７１６５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、例えば上記のＤＯＭでは、ＸＭＬ文書をＤＯＭツリーと呼ばれるツリー構造のデータとして扱われ、ＸＭＬ文書の要素を検索する場合にはＤＯＭツリーのルート（根）から順に全ての要素（タグ）についてトラバースを行なっている。このため、大規模なＸＭＬ文書に対して検索を行なわせようとするとＸＭＬ文書の容量の大きさに比例して検索に時間がかかってしまうという問題点がある。
【０００５】
特許文献１には、画像データベースの記述にＸＭＬ文書を使用し、その情報とデータの重み付けの情報を加味することによって検索を高速に行なう方法が開示されているが、検索結果を高速に表すことはできるが、その結果を特定のキーワードを元に並び替える等の手段がないため前述のようなＸＭＬの拡張性や自由度の高い機能を十分に活用することが困難である。
【０００６】
本発明は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、大規模なＸＭＬ文書であっても高速に検索することが可能であり、かつ任意のキーワードに応じた並べ替えを容易に行うことが可能であるテーブル形式のＸＭＬ文書のランダムアクセス方法及びそのプログラムを提供することである。
【課題を解決するための手段】
【０００７】
請求項１に記載の発明は、コンピュータによる、テーブル形式のＸＭＬ文書のランダムアクセス方法であって、前記コンピュータの第１の記憶手段に格納されたＸＭＬ文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第１の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して、前記コンピュータの第２の記憶手段に格納し、該第２の記憶手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスすることを特徴とするテーブル形式のＸＭＬ文書のランダムアクセス方法である。
【０００８】
請求項１に記載の発明によると、第１の記憶手段に格納されたＸＭＬ文書に基づいて前記上位構造の要素と該上位構造の要素に対する前記第１の記憶手段に格納された前記下位構造の要素のアドレスとをテーブル化して関連づけることによって、第２の記憶手段に格納されたテーブルに格納された前記アドレスを参照することで前記上位構造の要素に対応した前記下位構造の要素へのアクセスを直接行なうことができるようになり、前記ツリー構造をトラバースすることなく所望の要素に高速にアクセスすることが可能となる。したがって、所望の要素に対するキーワード検索を高速に行なうことが可能となる。
【０００９】
また、前記テーブルの前記上位構造の要素を所望のキーワードに対して並べ替えることによって容易に並べ替え処理を行なうことができる。
請求項２に記載の発明は、前記テーブルには連想記憶配列を使用し、該連想記憶配列のキーを前記上位構造の要素とし前記連想記憶配列の値を前記下位構造の要素のアドレスとして格納することを特徴とする請求項１に記載のテーブル形式のＸＭＬ文書のランダムアクセス方法である。
【００１０】
請求項２に記載の発明によると、前記テーブルに前記連想記憶配列を使用し、前記上位構造の要素と前記下位構造の要素のアドレスをキーと値の関係になるように前記連想記憶配列に格納することによって、前記上位構造の要素に対応した前記下位構造の要素へのアクセスを直接行なうことが容易となり、前記ツリー構造をトラバースすることなく所望の要素に高速にアクセスすることが可能となる。
【００１１】
請求項３に記載の発明は、前記上位構造の要素は、下位構造の要素を分類するためのインデックスであることを特徴とする請求項１に記載のテーブル形式のＸＭＬ文書のランダムアクセス方法である。
【００１２】
請求項３に記載の発明によると、前記テーブルによって前記上位構造の要素が前記下位構造の要素を分類するためのインデックスとなる関係を有することによって、前記上位構造の要素に対応した前記下位構造の要素へのアクセスを直接行なうことができるようになり、前記ツリー構造をトラバースすることなく所望の要素に高速にアクセスすることが可能となる。
【００１３】
請求項４に記載の発明は、前記上位構造の要素は、最上位の要素の次の階層にある要素であって下位構造の要素を分類するためのインデックスであることを特徴とする請求項１から３のいずれか一項に記載のテーブル形式のＸＭＬ文書のランダムアクセス方法である。
【００１４】
請求項４に記載の発明によると、前記上位構造の要素が最上位の要素の次の階層にある要素であって前記下位構造の要素を分類するためのインデックスとすることによって請求項１から３に記載の発明と同様の効果を奏する。
【００１５】
請求項５に記載の発明は、コンピュータにテーブル形式のＸＭＬ文書のランダムアクセスを実行させるためのプログラムであって、前記コンピュータの第１の記憶手段に格納されたＸＭＬ文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第１の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して、前記コンピュータの第２の記憶手段に格納するテーブル化処理と、該第２の記憶手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスする処理と、をコンピュータに実行させることを特徴とするテーブル形式のＸＭＬ文書のランダムアクセス方法を実現させるためのプログラムである。
【００１６】
請求項５に記載の発明によると、請求項１と同様に、前記上位構造の要素と該上位構造の要素に対する前記第１の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して関連づけることによって、前記上位構造の要素に対応した前記下位構造の要素へのアクセスを直接行なうことができるようになり、前記ツリー構造をトラバースすることなく所望の要素に高速にアクセスすることが可能となる。
【発明の効果】
【００１７】
以上のように、本発明によると、大規模なＸＭＬ文書であっても高速に検索することが可能であり、かつ任意のキーワードに応じた並べ替えを容易に行うことが可能であるテーブル形式のＸＭＬ文書のランダムアクセス方法及びそのプログラムを提供することが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施形態について図１から図１０に基づいて説明する。
図１は、本実施例に係る情報処理装置の構成例を示す図である。
同図は、周辺機器や各種ソフトウェアを実行する他に本実施例に係るテーブル形式のＸＭＬ文書のランダムアクセス方法を実現するためのプログラムを実行するＣＰＵ１と、プログラムを実行するために使用される揮発性のメモリ２（例えばＲＡＭ）と、外部からのデータ入力手段である入力装置３（例えばキーボードやマウス）と、データ等を表示するための出力装置４と、情報処理装置が動作するために必要なプログラムやデータの他に本実施例に係るテーブル形式のＸＭＬ文書のランダムアクセス方法を実現するためのプログラムを記録するための外部記録装置５と、メモリ２や外部記録装置５のデータを可搬記録媒体７（例えばフロッピイディスクやＭＯディスク、ＣＤ−ＲやＤＶＤ−Ｒなど）に出力したり可搬記録媒体７からプログラムやデータ等を読み出すための媒体駆動装置６と、ネットワーク９に接続するためのネットワーク接続装置８とを有し、これらの装置がバス１０に接続されて相互にデータの受け渡しが行える構成となっている。
【００１９】
図２は、本実施例に係るテーブル形式のＸＭＬ文書のランダムアクセス方法及びそのプログラムを実施するための構成図の一例を示す概略図である。
同図に示す本実施例に係るテーブル形式のＸＭＬ文書のランダムアクセス方法及びそのプログラムを実施するための構成は、ＸＭＬ文書を記録するための記憶装置５と、ＸＭＬ文書からＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）をメモリ２上に展開するためのＸＭＬパーサ１１と、ＸＭＬパーサ１１を介して展開されるＤＯＭ１２と、ＤＯＭ１２を解析してテーブル１４を生成するための解析部１３と、解析部１３によってメモリ２上に展開されるテーブル１４と、メモリ２上に展開されたＤＯＭ１２及びテーブル１４に基づいて表示を行なうために編集を行なう編集部１５と、編集部１５で編集されたデータを表示するための表示部１６と、表示部１６の表示に応じた所定の指示に基づいてＤＯＭ１２及びテーブル１４を操作するための操作部１７とを少なくとも有し、さらにＤＯＭ１２と記憶装置５に格納されているＸＭＬ文書との同期をとるためのＸＭＬシリアライザ１８を有している。
【００２０】
本実施例に係るＸＭＬパーサ１１は、一般的に使用されているＸＭＬパーサが使用され、記憶装置５に格納されているＸＭＬ文書データを読み出してＤＯＭ１２を生成してメモリ２上に展開する。
【００２１】
解析部１３は、メモリ２上に展開されたＤＯＭ１２のＤＯＭツリーをトラバースして上位要素と下位要素との対応関係に基づいてテーブル１４を生成し、生成したテーブル１４をメモリ２上に展開する。
【００２２】
編集部１５は、メモリ２上に展開されたＤＯＭ１２やテーブル１４を参照して例えばＷｅｂブラウザに表示させるためにＨＴＭＬ文書を生成する。生成されたＨＴＭＬ文書は表示部１６に送られてＷｅｂブラウザによって表示されることとなる。
【００２３】
操作者が表示部１６の表示に応じて例えば検索処理等の所定の指示を行なうと、操作部１７はテーブル１４からどのＤＯＭツリーを検索すればよいかを参照して、ＤＯＭ１２を検索する処理を行なう。検索処理の結果は、編集部１５によって例えばＨＴＭＬ文書化されて表示部１６に表示される。また、操作部１７は、表示部１６の表示に応じてソートやＤＯＭツリーの要素の追加・変更・削除等の指示に応じてＤＯＭ１２及びテーブル１４のデータを追加・変更・削除等の処理を行なう。
【００２４】
以上の説明において、同図に示したＸＭＬパーサ１１、解析部１３、編集部１５、操作部１７、ＸＭＬシリアライザ１８で行なわれる処理は、例えば図１に示したＣＰＵ１が外部記憶装置５に格納されている本実施例に係るプログラムをメモリ２に読出してプログラムにしたがって処理が実行される。したがって、上記各処理部（ＸＭＬパーサ１１、解析部１３、編集部１５、操作部１７、ＸＭＬシリアライザ１８）での処理の主体はＣＰＵ１であるが、どの処理部で行なわれているかを明確にするために以下の説明では、処理の主体を各処理部として説明する。
【００２５】
また、同図に示す構成の各要素は、１つの情報処理装置で全ての要素を構成してもよく、ネットワーク上に分散した状態で構成してもよい。例えば、クライアント・サーバモデルにおいては、クライアント側では表示部１６による表示と操作部１７への所定の指示のみを行ない、その他の構成要素をサーバ側で構成してもよく、また、ＸＭＬ文書を格納する記憶装置１１のみをサーバ側で構成し、その他の構成要素をクライアント側で構成してもよい。
【００２６】
図３は、メモリ２上に展開されるＤＯＭ１２の概念を示すＤＯＭツリーの一例を示す図である。
同図に示すＤＯＭツリーは、ＤＯＭツリーの最上位の要素を示すルート１９と、ルート１９の下位の要素である要素「記事」とで構成される。さらに、各要素「記事」はその下位に要素「見出し」を有し、要素「見出し」はその下位に要素「Ｎｏ」「投稿日」「本文」を有する。
【００２７】
同図は、要素「記事」をｎ個（ｎは任意の自然数）有し（記事２０〜記事２１）、各要素「記事」に対して要素「見出し」を３個（例えば、見出し２２ａから見出し２２ｃ）有する場合のＤＯＭツリーを示している。
【００２８】
さらに、要素「見出し」は下位要素として記事番号を示す要素「Ｎｏ］、記事の投稿日を示す要素「投稿日」、記事の本文を示す要素「本文」を有している。
ここで、本実施例に係るＤＯＭツリーは、上位要素と下位要素とに分けられる。上位要素は、特定の下位要素の集合の内容を表す（又は識別できる）要素である。同図では、要素「記事」を上位要素とし、要素「記事」より下位の要素（要素「見出し」及びその下位の要素である要素「Ｎｏ」、「投稿日」、「本文」）を下位要素としている。
【００２９】
また、同図に示すＤＯＭツリーは１つのオブジェクトとして扱うことが可能であるが、上位要素のオブジェクト及び下位要素のオブジェクトとで構成されているオブジェクトとして扱うことも可能である。以下の説明においては、各要素を必要に応じてオブジェクトとして取り扱っているが、一般的に使用されているオブジェクト指向型のプログラミング言語（例えば、Ｊａｖａ（登録商標）やＪａｖａ（登録商標）Ｓｃｒｉｐｔ、Ｐｅｒｌ、Ｃ＋＋等）を使用することで容易に実現することが可能である。
【００３０】
図４は、図２に示したテーブル１４の構成例を示している。
同図（ａ）に示すテーブルは、「キー」と「値」で構成される連想記憶配列（ハッシュ）で構成され、上位要素を「キー」として格納する上位要素用配列２６と上位要素用配列２６に対応する下位要素のアドレスを「値」として格納する下位要素用配列２７とで構成される。
【００３１】
同図（ａ）に示すように、連想記憶配列にデータを格納する場合には、入力された「キー」に対してハッシュ値を計算し、計算したハッシュ値と入力された「値」とが関連づけられた記憶される。また、連想記憶配列から「キー」に対応する「値」を取り出す場合には、入力された「キー」からハッシュ値を計算し、上述の関連づけられたハッシュ値と一致するハッシュ値に関連づけられた「値」を取り出すことができる。このため、所望の「キー」に対応する「値」を容易に取り出すことが可能である。
【００３２】
上位要素用配列２６には、「キー」として上位要素が格納される。例えば、図３に示したＤＯＭツリーにおいては、上位要素である記事２０〜記事２１が格納されることとなる。
【００３３】
下位要素用配列２７は、上位要素用配列２６に格納された「キー」に対応する「値」を格納する。すなわち、上位要素に対する下位要素（又は下位要素を構成するオブジェクト）へのアドレスが格納される。例えば、図３に示したＤＯＭツリーにおいては、上位要素である記事２０の下位要素のオブジェクトへのアドレスが格納される。すなわち、見出し２２ａ及びその下位の要素２３ａ〜２３ｃで構成されるオブジェクトへのアドレスと、見出し２２ｂ及びその下位の要素２３ｄから２３ｆで構成されるオブジェクトへのアドレスと、見出し２２ｃ及びその下位の要素２３ｇ〜２３ｉで構成されるオブジェクトへのアドレスとが「値」として格納される。
【００３４】
以上に示したように、テーブル１４に連想記憶配列を用いることによって所望の下位要素へのアクセスが容易となる。例えば、図３のＤＯＭツリーにおいて、本文２３ｃにアクセスする場合には、連想記憶配列の「キー」である記事２０に対応する「値」（下位要素のオブジェクトへのアドレス）を取り出すことが可能となるので（オブジェクト指向型プログラム言語の機能によってオブジェクトの要素である本文２３ｃの直接アクセスすることが可能とるので）、下位要素のオブジェクトを構成する要素である本文２３ｃに直接アクセスすることが可能となる。
【００３５】
なお、以上に説明した連想記憶配列は、例えばプログラム言語であるＰｅｒｌ等に標準実装されている連想記憶配列と同様の機能で実現されている。
本実施例では、テーブル１４に連想記憶配列（ハッシュ）を使用しているが、これに限定されない。例えば、図４（ｂ）に示すように連想記憶配列の代りに通常の配列を使用してもよい。同図（ｂ）は、配列番号０から連続したメモリ領域に確保された配列である上位要素用配列２８と、上位要素用配列２８でポイントされた配列の下位要素用配列２９とで構成される配列を示している。この場合、各上位要素は、上位要素用配列２８の配列番号で表すことができる。例えば図３に示した左から１番目の記事２０は配列０番目に対応し、左からｎ番目の記事２１は配列ｎ−１番目に対応する。
【００３６】
また、上位要素用配列２８には、下位要素用配列２９をポイントするためのデータを格納する。すなわち、下位要素用配列２９の先頭アドレスを格納する。そして、下位要素用配列２９には、上位要素に対する各下位要素のオブジェクトへのアドレスを格納する。
【００３７】
以上のように配列を構成することによって所望の下位要素へのアクセスが容易となる。例えば、図３のＤＯＭツリーにおいて、本文２３ｃにアクセスする場合には、記事２０に対応する上位要素用配列の０番目の配列から（０番目の配列に格納されている下位要素のオブジェクトの先頭アドレスを参照することによって）、下位要素のオブジェクトを構成する要素である本文２３ｃに直接アクセスすることが可能となる。
【００３８】
図５は、図４（ａ）に示したテーブル１４を生成する処理を示すフローチャートである。
図２に示したように記憶装置５に格納されているＸＭＬ文書は、ＸＭＬパーサ１１によってメモリ２上にＤＯＭとして展開される。メモリ２上に展開されているＤＯＭは論理的には図３に示したＤＯＭツリー構造となっている。
【００３９】
解析部１３は、図４（ａ）に示した上位要素用配列２６及び下位要素用配列２７の領域をメモリ２上に確保した後、ステップＳ５０１においてメモリ２上に展開されているＤＯＭツリーに対してトラバース（ＤＯＭツリーのルートから処理を開始して上位から下位の要素、又は下位から上位の要素をたどる処理）を行ない、上位要素の検出処理を行なう。
【００４０】
例えば、図３に示したＤＯＭツリーでは、ルート１９⇒記事２０⇒見出し２２ａ⇒本文２３ｃのようにＤＯＭツリーに沿って順次要素を検索して上位要素を検出する処理を行なう。
【００４１】
なお、上位要素は前もってルート１９から所定の階層までトラバースした要素と決めておいてもよく、またその都度トラバース処理を行なって判別してもよい。
本実施例に係る上位要素は、前もってルート１９から一階層下位の要素として処理を行なっている。
【００４２】
ステップＳ５０２の処理によって最初の子ノード（ルート１９から一階層下位の要素であって、本実施例に係る上位要素）が特定されると（ステップＳ５０２）、そのノードがＮｕｌｌであるかをチェックする（ステップＳ５０３）。この場合のＮｕｌｌは、ノードが存在しないことを示すための文字コードである。したがって、ノードがＮｕｌｌの場合には、ステップＳ５０８の処理に移行して終了する。
【００４３】
ステップＳ５０３でノードがＮｕｌｌでない場合には、ステップＳ５０４に処理が移行して特定されたノードが記事であるかを判別する。特定されたノードが記事である場合には、ステップＳ５０５において、そのノードの下位要素（オブジェクト）である見出しが格納されているアドレスを図４（ａ）に示した連想記憶配列に格納する。この時、要素「記事」を「キー」として上位要素用配列２６に格納し、その配列から上述の特定されたノードをポイントする。すなわち、要素「記事」を「キー」、オブジェクトである見出しのアドレスを「値」として連想記憶配列に格納する。ここで、オブジェクトである見出しとは、要素見出しを含む要素見出しより下位の要素全てを含むオブジェクトを言う。
【００４４】
例えば、ステップＳ５０４において図３に示した記事２０を検出した場合には、ステップＳ５０５において、記事２０を図４（ａ）に示した連想記憶配列の「キー」とし、記事２０の下位要素（オブジェクト）である見出し２２ａ、見出し２２ｂ、見出し２２ｃが格納されているアドレスを「値」として格納する。
【００４５】
ステップＳ５０５又はステップＳ５０６の処理が終了すると、Ｓ５０７の処理に移行して次ぎの兄弟ノードを特定してステップＳ５０３からステップＳ５０７の処理を繰り返すこととなる。
【００４６】
たとえば、ステップＳ５０７において、図３に示す記事ｎ−１が特定されると、ステップＳ５０３の処理に移行する。記事ｎ−１はＮｕｌｌではないので、ステップＳ５０４の処理に移行する。また、記事ｎ−１の要素は記事であるのでステップＳ５０５に移行する。ステップＳ５０５では、記事２１を図４（ａ）に示した連想配列の「キー」とし、見出し２４ａ、見出し２４ｂ、見出し２４ｃが格納されているアドレスを「値」として格納する。
【００４７】
また、ステップＳ５０４においてノードが記事でない場合には、ステップＳ５０６において、特定されたノードの下位のノード（要素）に対して再帰的に同図に示すトラバース処理が行なわれる。
この処理は、図３に示す本実施例に係るＤＯＭツリーの例では不要な処理となるが、より複雑なＤＯＭツリーが構成されている場合には、ルート１９の直下に目的の要素である記事があるとは限らないため図５に示したトラバース処理を再帰的に実施することが必要となる（トラバース処理を再帰的に実施することによって目的の要素である記事を検出してテーブル１４を生成することが必要となる）。
【００４８】
ここで、以上に説明したテーブル生成処理は、図４（ａ）に示した連想記憶配列を使用した場合の説明であるが、図４（ｂ）に示した配列についても同様の処理によってテーブルを生成することが可能である。
【００４９】
すなわち、ステップＳ５０５において、ステップＳ５０３で特定されたノードが記事である場合には、そのノードの下位要素（オブジェクト）である見出しが格納されているアドレスを図４（ｂ）に示した下位要素用配列２９に格納して、下位要素用配列２９から上述の特定されたノード（ノード）をポイントすればよい。
【００５０】
以上に説明した処理によって、記憶装置１１に格納されたＸＭＬ文書に基づいてメモリ２上にＤＯＭ１２及びテーブル１４が展開されることとなる。
さらに、編集部１５ではＤＯＭ１２及びテーブル１４に基づいて、例えばＨＴＭＬデータを生成して表示部１６に表示されることとなる。
【００５１】
図６は、本実施例に係る表示部への表示処理を示すフローチャートである。
編集部１５は、メモリ２に展開されているテーブル１４を参照して最初の表示行と最後の表示行とを決定する（ステップＳ６０２）。ここで、最初の表示行と最後の表示行は、例えば図４（ａ）に示した上位要素用配列２６に基づいて決定される。すなわち、上位要素用配列２６の１番目から５番目の要素を表示したい場合には最初の表示行は０となり、最後の表示行は４となる。同様に上位要素用配列２６の６番目から１０番目までを表示したい場合には最初の表示行は５となり、最後の表示行は９となる。
【００５２】
ステップＳ６０２の処理で最後の表示行が決定されると、決定された最後の表示行の値が正しい値かをチェックする（ステップＳ６０３）。本実施例では、最後の表示行の要素が格納されているアドレスをチェックし、その値が負の場合には最後の表示行が正しくないと判断する。すなわち、該当する表示データが存在しないと判断して以降の処理が行なわれる。
【００５３】
ステップＳ６０３の処理で該当する表示データが存在しないと判断されると、処理がステップＳ６０４に移行し、文字列「該当するデータはありません。」を表示するためのＨＴＭＬデータ生成されてメモリ２上に格納される。さらに、メモリ２上格納されたＨＴＭＬデータは表示部１６に出力されて表示されることとなる（ステップＳ６０５、ステップＳ６０６）。
【００５４】
一方、ステップＳ６０３において、該当する表示データが存在すると判断されると、編集部１５は現在処理を行なっている行数の情報を保持するための変数ｐの領域をメモリ２に確保して、最初の表示行の要素が格納されているアドレスの値を変数ｐに格納する（ステップＳ６０７）。
【００５５】
そして、ステップＳ６０８において、最後の表示行の要素が格納されているアドレスと変数ｐに格納された値（現在処理を行なっている行数）とを比較し、変数ｐが最後の表示行の要素が格納されているアドレスより大きい場合には全ての表示行について編集処理が行なわれたと判断してステップＳ６０５の処理に移行し、メモリ２上に出力されたＨＴＭＬデータが表示部１６に送信されて表示されることとなる（ステップＳ６０６）。
【００５６】
ステップＳ６０８において、まだ全ての表示行について編集処理が行なわれていないと判断された場合には、ステップＳ６０９に処理が移行して表示項目の編集が行なわれる。
ステップＳ６０９において、現在処理対象となっている行についての表示項目の編集処理が終了すると、ステップＳ６１０に処理が移行し次の表示行を処理対象とするために変数ｐの値が１だけインクリメントされ、ステップＳ６０８に処理が移行する。
【００５７】
以上のステップＳ６０８からステップＳ６１０の処理を最後の表示行まで繰り返すことによってメモリ２上にＨＴＭＬデータが出力される。メモリ２に出力されたＨＴＭＬデータは、ステップＳ６０５において表示部１６に出力されて表示されることとなる（ステップＳ６０６）。
【００５８】
図７は、図６に示した本実施例に係る表示処理によって表示部１６に表示される表示の一例を示している。
同図は、Ｎｏ３０、投稿日３１、投稿者３２及びタイトル３３が表示されている。Ｎｏ３０、投稿日３１、投稿者３２、タイトル３３は、図３に示したそれぞれの要素「Ｎｏ」、「投稿日」「投稿者」「見出し」を図６に示したステップＳ６０９の処理によってＨＴＭＬデータに編集して表示されてものである。
【００５９】
また、同図に示すＮｏ３０、投稿日３１、投稿者３２及びタイトル３３はソートボタンとなっており、各ボタンをマウス等で押下することによって昇順又は降順にソートされる。
【００６０】
さらに、前ページの５件を表示するための前ページ表示用ボタン３４、次ページの５件を表示するための次ページ表示用ボタン３５、検索範囲を指定するための検索範囲指定欄３６、検索したいキーワードを入力するための検索キーワード入力欄３７、検索を指示するための検索指示ボタン３８、入力欄をクリアするための入力クリア用ボタン３９が表示されている。
【００６１】
図８は、本実施例に係る全文検索処理のフローチャートを示す図である。
同図は、操作者が表示部１６に表示された表示に応じてタイトル及び本文を対象に全文検索の指示を行なった場合の検索処理を示している。
【００６２】
操作者が、入力装置３であるマウスやキーボード等によって検索範囲指定欄に「タイトル」及び「本文」と入力し、検索キーワード入力欄３７にキーワードを入力して検索指示ボタンを押下すると、操作部１７によって全文検索処理が開始される（ステップＳ８０１）。
【００６３】
ステップＳ８０２において、図４（ａ）に示した「キー」に格納されている上位要素から第一番目の「キー」に対応する要素が格納されているアドレスを変数ｐに格納して初期化する。
【００６４】
ステップＳ８０３において、テーブル１４に格納した全ての要素に対して検索処理が終了したかをチェックし、全ての要素に対して検索処理が終了した場合にはステップＳ８０８に処理が移行する。
【００６５】
ステップＳ８０３において、全ての要素に対して検索処理が終了していない場合には、ステップＳ８０４に処理が移行する。
ステップＳ８０４では、図４（ａ）に示した連想記憶配列から変数ｐが示す上位要素に対応する「値」である下位要素のオブジェクトが格納されているアドレスを取り出し、そのオブジェクトの要素である「見出し」に対して正規表現による検索を実施する。その結果、要素「見出し」内にキーワードにマッチする文字列が含まれている場合には、ステップＳ８０５に処理が移行して変数ｐをメモリ２上の退避域に記憶する。なお、メモリ２の退避域には、図４（ａ）と同様の連想記憶配列を生成しておき、この退避用の連想記憶配列に変数ｐを「キー」とした場合の「キー」及び「値」が代入されて退避される。また、本実施例に係る正規表現による検索は、例えばプログラム言語であるＰｅｒｌ等に標準で備わっている機能によって実現される。
【００６６】
ステップＳ８０４において、キーワードにマッチする文字列がない場合には、ステップＳ８０６に処理が移行する。ステップＳ８０６では、ステップＳ８０４の処理と同様に、図４（ａ）に示した連想記憶配列から変数ｐが示す上位要素に対応する「値」である下位要素のオブジェクトが格納されているアドレスを取り出し、そのオブジェクトの要素である「本文」に対して正規表現による検索を実施する。
【００６７】
要素「本文」内の文字列にキーワードにマッチする文字列がある場合には、ステップＳ８０５に処理が移行し、メモリ２上の退避域に変数ｐを記憶する。
以上の処理によって、変数ｐが示す図４（ａ）に示した「キー」に格納されている第一番目の上位要素に対応する下位要素（要素「見出し」、要素「本文」）について検索が終了し、ステップＳ８０７に処理が移行する。そして、ステップＳ８０７では、図４（ａ）に示した「キー」に格納されている上位要素から第二番目の「キー」に対応する要素が格納されているアドレスを変数ｐに代入する。
【００６８】
以上説明したステップＳ８０３〜ステップＳ８０７の処理を行なうことによって、図４（ａ）に示した「キー」に格納されている全ての上位要素に対応する下位要素についてキーワード検索が終了することとなる。
【００６９】
ステップＳ８０８において、テーブル１４をメモリ２の退避域に生成された退避用の連想記憶配列と置き換え、図６に示した表示処理によって全文検索の結果が表示部１６に表示される。
【００７０】
以上に説明したように、従来は全ての要素に対してトラバース処理を行なわなければできなかった全文検索処理が、テーブル１４を使用することによって検索対象のみ（図８に示した例では要素「見出し」及び「本文」）について全文検索が可能となり、処理速度を向上することが可能なる。
【００７１】
図９は、本実施例に係るソート処理を示すフローチャートである。
図７において、ソートボタン３０から３３のいずれかのボタンが操作者によって押下されると、操作部１７に通知されてソート処理が開始される（ステップＳ９０１）。
【００７２】
ステップＳ９０２において、昇順にソートするのか降順にソートするのかを判別して、昇順にソートする場合にはステップＳ９０３の処理い移行し、降順にソートする場合にはステップＳ９０４に処理が移行される。
【００７３】
ステップ９０３では、図４（ａ）に示した連想記憶配列の「キー」又は「値」が示す要素（オブジェクト）に対してソート処理を行なう。例えば連想配列の「キー」である上位要素をａｂｃ順に（昇順に）ソートしたのち、ステップＳ９０５の表示処理によって表示を行なう。又はステップＳ９０４において、例えば連想配列の「キー」である上位要素をａｂｃの降順にソートしたのち、ステップＳ９０５の表示処理によって表示を行なう。
【００７４】
以上に説明したように、テーブル１４を構成する連想記憶配列（又は配列）と連想記憶配列をソートするための標準ＡＰＩ（例えばプログラミング言語Ｐｅｒｌに標準で備わっているソート関数など）を使用することによって任意の要素を対象としてソート処理が可能となる。また、テーブル１４についてのみソート処理を行なえばよいので、処理速度が向上する効果を奏する。
【００７５】
図１０は、本実施例に係る表示ページ切替え処理を示すフローチャートである。
例えば、操作者が図７に示した前ページ表示用ボタン３４や次ページ表示用ボタン３５を押下することによって表示ページ切替え処理が開始される。
【００７６】
同図（ａ）は、前ページ表示用ボタン３４が押下された場合の表示ページ切替え処理を示し、同図（ｂ）は、次ページ表示用ボタン３５が押下された場合の表示ページ切替え処理を示している。
【００７７】
同図（ａ）において、前ページ表示用ボタン３４が押下されると、現在表示されている上位要素を示す変数ｐから表示行数だけデクリメントされ（ステップＳ１００２）、処理がステップＳ１００３に移行される。ステップＳ１００３では、変数ｐに基づいて図６に示した表示処理が行なわれ、表示部１６に表示される。
【００７８】
同様に、同図（ｂ）においても、次ページ表示用ボタン３５が押下されると、現在表示されている上位要素を示す変数ｐから表示行だけインクリメントされ（ステップＳ１０６）、処理がステップＳ１０７に移行される。ステップＳ１００７では、変数ｐに基づいて図６に示した表示処理が行なわれ、表示部１６に表示される。
（付記１）  コンピュータによる、テーブル形式のＸＭＬ文書のランダムアクセス方法であって、
前記コンピュータの第１の記憶手段に格納されたＸＭＬ文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第１の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して、前記コンピュータの第２の記憶手段に格納し、
該第２の記憶手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスすることを特徴とするテーブル形式のＸＭＬ文書のランダムアクセス方法。
（付記２）  前記テーブルには連想記憶配列を使用し、
該連想記憶配列のキーを前記上位構造の要素とし前記連想記憶配列の値を前記下位構造の要素のアドレスとして格納することを特徴とする付記１に記載のテーブル形式のＸＭＬ文書のランダムアクセス方法。
（付記３）  前記上位構造の要素は、下位構造の要素を分類するためのインデックスであることを特徴とする付記１に記載のテーブル形式のＸＭＬ文書のランダムアクセス方法。
（付記４）  前記上位構造の要素は、最上位の要素の次の階層にある要素であって下位構造の要素を分類するためのインデックスであることを特徴とする付記１から３のいずれか一項に記載のテーブル形式のＸＭＬ文書のランダムアクセス方法。
（付記５）  コンピュータにテーブル形式のＸＭＬ文書のランダムアクセスを実行させるためのプログラムであって、
前記コンピュータの第１の記憶手段に格納されたＸＭＬ文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第１の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して、前記コンピュータの第２の記憶手段に格納するテーブル化処理と、
該第２の記憶手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスする処理と、
をコンピュータに実行させることを特徴とするテーブル形式のＸＭＬ文書のランダムアクセスを実現させるためのプログラム。
（付記６）  前記テーブルには連想記憶配列を使用し、
該連想記憶配列のキーを前記上位構造の要素とし前記連想記憶配列の値を前記下位構造の要素のアドレスとして格納する処理をコンピュータに実行させることを特徴とする付記５に記載のテーブル形式のＸＭＬ文書のランダムアクセスを実現させるためのプログラム。
（付記７）  前記上位構造の要素は、下位構造の要素を分類するためのインデックスであることを特徴とする付記５に記載のテーブル形式のＸＭＬ文書のランダムアクセスを実現させるためのプログラム。
（付記８）  前記上位構造の要素は、最上位の要素の次の階層にある要素であって下位構造の要素を分類するためのインデックスであることを特徴とする付記５から７のいずれか一項に記載のテーブル形式のＸＭＬ文書のランダムアクセスを実現させるためのプログラム。
（付記９）  ＸＭＬ文書を格納する第１の格納手段と、
該第１の格納手段に格納されたＸＭＬ文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第１の格納手段に格納された下位構造の要素のアドレスとをテーブル化するテーブル化手段と、
該テーブル化手段で得られたテーブルを格納する第２の格納手段と、
該第２の格納手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスするアクセス手段と、
を備えることを特徴とする情報処理装置。
（付記１０）  前記テーブルには連想記憶配列を使用し、
該連想記憶配列のキーを前記上位構造の要素とし前記連想記憶配列の値を前記下位構造の要素のアドレスとして格納することを特徴とする付記９に記載の情報処理装置。
（付記１１）  前記上位構造の要素は、下位構造の要素を分類するためのインデックスであることを特徴とする付記９に記載の情報処理装置。
（付記１２）
前記上位構造の要素は、最上位の要素の次の階層にある要素であって下位構造の要素を分類するためのインデックスであることを特徴とする付記９から１１のいずれか一項に記載の情報処理装置。
【図面の簡単な説明】
【００７９】
【図１】本実施例に係る情報処理装置の構成例を示す図である。
【図２】本実施例に係るテーブル形式のＸＭＬ文書のランダムアクセス方法及びそのプログラムを実施するための構成図の一例を示す概略図である。
【図３】本実施例に係るＤＯＭの概念を示すＤＯＭツリーの一例を示す図である。
【図４】本実施例に係る配列データの構成例を示す図である。
【図５】本実施例に係るテーブル生成処理を示すフローチャートである。
【図６】本実施例に係る表示部への表示処理を示すフローチャートである。
【図７】図６に示した本実施例に係る表示処理によって表示部に表示される表示の一例を示している。
【図８】本実施例に係る全文検索処理を示すフローチャートである。
【図９】本実施例に係るソート処理を示すフローチャートである。
【図１０】本実施例に係る表示ページ切替え処理を示すフローチャートである。
【符号の説明】
【００８０】
１      ＣＰＵ
２      メモリ
３      入力装置
４      出力装置
５      外部記憶装置
６      媒体駆動装置
７      可搬記憶媒体
８      ネットワーク接続装置
９      ネットワーク
１０      バス
１１      ＸＭＬパーサ
１２      ＤＯＭ
１３      解析部
１４      テーブル
１５      編集部
１６      表示部
１７      操作部
１８      ＸＭＬシリアライザ
１９      ルート
２０〜２１      上位要素
２２ａ〜２２ｃ  下位要素
２３ａ〜２３ｉ  下位要素
２４ａ〜２４ｃ  下位要素
２５ａ〜２５ｉ  下位要素
２６      上位要素用配列
２７      下位要素用配列
２８      上位要素用配列
２９      下位要素用配列
３０      Ｎｏ．ソート用ボタン
３１      投稿日ソート用ボタン
３２      投稿者ソート用ボタン
３３      タイトルソート用ボタン
３４      前ページ表示用ボタン
３５      次ページ表示用ボタン
３６      検索範囲指定欄
３７      検索キーワード入力欄
３８      検索指示ボタン
３９      入力欄クリア用ボタン
【図１】
2005284417.tif 000003
【図２】
2005284417.tif 000004
【図３】
2005284417.tif 000005
【図４】
2005284417.tif 000006
【図５】
2005284417.tif 000007
【図６】
2005284417.tif 000008
【図７】
2005284417.tif 000009
【図８】
2005284417.tif 000010
【図９】
2005284417.tif 000011
【図１０】
2005284417.tif 000012