JP2005284417A - テーブル形式のxml文書のランダムアクセス方法、及びそのプログラム - Google Patents

テーブル形式のxml文書のランダムアクセス方法、及びそのプログラム Download PDF

Info

Publication number
JP2005284417A
JP2005284417A JP2004093808A JP2004093808A JP2005284417A JP 2005284417 A JP2005284417 A JP 2005284417A JP 2004093808 A JP2004093808 A JP 2004093808A JP 2004093808 A JP2004093808 A JP 2004093808A JP 2005284417 A JP2005284417 A JP 2005284417A
Authority
JP
Japan
Prior art keywords
stored
xml document
random access
elements
storage means
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004093808A
Other languages
English (en)
Inventor
Hisaaki Goto
久明 後藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2004093808A priority Critical patent/JP2005284417A/ja
Publication of JP2005284417A publication Critical patent/JP2005284417A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 大規模なXML文書であっても高速に検索することができ、かつ任意のキーワードに応じた並べ替えを容易に行うことができるテーブル形式のXML文書のランダムアクセス方法及びそのプログラムを提供する。
【解決手段】 DOM12を解析してテーブル14を生成するための解析部13と、メモリ2上に展開されたDOM12及びテーブル14に基づいて表示を行なうために編集を行なう編集部15と、表示部16の表示に応じた所定の指示に基づいてDOM12及びテーブル14を操作するための操作部17とにおいて処理を行なわせるテーブル形式のXML文書のランダムアクセス方法及びそのプログラムを提供する。
【選択図】図2

Description

本発明は、テーブル形式のXML文書のランダムアクセス方法、及びそのプログラムに関する。
近年では、その拡張性や自由度の高さからHTML(HyperText Markup Language)に換えてXML(eXtensible Markup Language)を用いた文書化が進んできている。
例えば、XML文書の情報単位である要素や属性等をスキーマ言語であるDTD等で定義することによってXML文書の取り得る構造を自由に定義することが可能となっている。また、XMLのAPI(Application Program Interface)であるDOM(Document Object Model)やSAX(Simple API for XML)を用いることによってXML文書の要素を簡単に検索することが可能となっている。
特開2003−271654号公報
しかし、例えば上記のDOMでは、XML文書をDOMツリーと呼ばれるツリー構造のデータとして扱われ、XML文書の要素を検索する場合にはDOMツリーのルート(根)から順に全ての要素(タグ)についてトラバースを行なっている。このため、大規模なXML文書に対して検索を行なわせようとするとXML文書の容量の大きさに比例して検索に時間がかかってしまうという問題点がある。
特許文献1には、画像データベースの記述にXML文書を使用し、その情報とデータの重み付けの情報を加味することによって検索を高速に行なう方法が開示されているが、検索結果を高速に表すことはできるが、その結果を特定のキーワードを元に並び替える等の手段がないため前述のようなXMLの拡張性や自由度の高い機能を十分に活用することが困難である。
本発明は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、大規模なXML文書であっても高速に検索することが可能であり、かつ任意のキーワードに応じた並べ替えを容易に行うことが可能であるテーブル形式のXML文書のランダムアクセス方法及びそのプログラムを提供することである。
請求項1に記載の発明は、コンピュータによる、テーブル形式のXML文書のランダムアクセス方法であって、前記コンピュータの第1の記憶手段に格納されたXML文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第1の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して、前記コンピュータの第2の記憶手段に格納し、該第2の記憶手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスすることを特徴とするテーブル形式のXML文書のランダムアクセス方法である。
請求項1に記載の発明によると、第1の記憶手段に格納されたXML文書に基づいて前記上位構造の要素と該上位構造の要素に対する前記第1の記憶手段に格納された前記下位構造の要素のアドレスとをテーブル化して関連づけることによって、第2の記憶手段に格納されたテーブルに格納された前記アドレスを参照することで前記上位構造の要素に対応した前記下位構造の要素へのアクセスを直接行なうことができるようになり、前記ツリー構造をトラバースすることなく所望の要素に高速にアクセスすることが可能となる。したがって、所望の要素に対するキーワード検索を高速に行なうことが可能となる。
また、前記テーブルの前記上位構造の要素を所望のキーワードに対して並べ替えることによって容易に並べ替え処理を行なうことができる。
請求項2に記載の発明は、前記テーブルには連想記憶配列を使用し、該連想記憶配列のキーを前記上位構造の要素とし前記連想記憶配列の値を前記下位構造の要素のアドレスとして格納することを特徴とする請求項1に記載のテーブル形式のXML文書のランダムアクセス方法である。
請求項2に記載の発明によると、前記テーブルに前記連想記憶配列を使用し、前記上位構造の要素と前記下位構造の要素のアドレスをキーと値の関係になるように前記連想記憶配列に格納することによって、前記上位構造の要素に対応した前記下位構造の要素へのアクセスを直接行なうことが容易となり、前記ツリー構造をトラバースすることなく所望の要素に高速にアクセスすることが可能となる。
請求項3に記載の発明は、前記上位構造の要素は、下位構造の要素を分類するためのインデックスであることを特徴とする請求項1に記載のテーブル形式のXML文書のランダムアクセス方法である。
請求項3に記載の発明によると、前記テーブルによって前記上位構造の要素が前記下位構造の要素を分類するためのインデックスとなる関係を有することによって、前記上位構造の要素に対応した前記下位構造の要素へのアクセスを直接行なうことができるようになり、前記ツリー構造をトラバースすることなく所望の要素に高速にアクセスすることが可能となる。
請求項4に記載の発明は、前記上位構造の要素は、最上位の要素の次の階層にある要素であって下位構造の要素を分類するためのインデックスであることを特徴とする請求項1から3のいずれか一項に記載のテーブル形式のXML文書のランダムアクセス方法である。
請求項4に記載の発明によると、前記上位構造の要素が最上位の要素の次の階層にある要素であって前記下位構造の要素を分類するためのインデックスとすることによって請求項1から3に記載の発明と同様の効果を奏する。
請求項5に記載の発明は、コンピュータにテーブル形式のXML文書のランダムアクセスを実行させるためのプログラムであって、前記コンピュータの第1の記憶手段に格納されたXML文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第1の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して、前記コンピュータの第2の記憶手段に格納するテーブル化処理と、該第2の記憶手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスする処理と、をコンピュータに実行させることを特徴とするテーブル形式のXML文書のランダムアクセス方法を実現させるためのプログラムである。
請求項5に記載の発明によると、請求項1と同様に、前記上位構造の要素と該上位構造の要素に対する前記第1の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して関連づけることによって、前記上位構造の要素に対応した前記下位構造の要素へのアクセスを直接行なうことができるようになり、前記ツリー構造をトラバースすることなく所望の要素に高速にアクセスすることが可能となる。
以上のように、本発明によると、大規模なXML文書であっても高速に検索することが可能であり、かつ任意のキーワードに応じた並べ替えを容易に行うことが可能であるテーブル形式のXML文書のランダムアクセス方法及びそのプログラムを提供することが可能となる。
以下、本発明の実施形態について図1から図10に基づいて説明する。
図1は、本実施例に係る情報処理装置の構成例を示す図である。
同図は、周辺機器や各種ソフトウェアを実行する他に本実施例に係るテーブル形式のXML文書のランダムアクセス方法を実現するためのプログラムを実行するCPU1と、プログラムを実行するために使用される揮発性のメモリ2(例えばRAM)と、外部からのデータ入力手段である入力装置3(例えばキーボードやマウス)と、データ等を表示するための出力装置4と、情報処理装置が動作するために必要なプログラムやデータの他に本実施例に係るテーブル形式のXML文書のランダムアクセス方法を実現するためのプログラムを記録するための外部記録装置5と、メモリ2や外部記録装置5のデータを可搬記録媒体7(例えばフロッピイディスクやMOディスク、CD−RやDVD−Rなど)に出力したり可搬記録媒体7からプログラムやデータ等を読み出すための媒体駆動装置6と、ネットワーク9に接続するためのネットワーク接続装置8とを有し、これらの装置がバス10に接続されて相互にデータの受け渡しが行える構成となっている。
図2は、本実施例に係るテーブル形式のXML文書のランダムアクセス方法及びそのプログラムを実施するための構成図の一例を示す概略図である。
同図に示す本実施例に係るテーブル形式のXML文書のランダムアクセス方法及びそのプログラムを実施するための構成は、XML文書を記録するための記憶装置5と、XML文書からDOM(Document Object Model)をメモリ2上に展開するためのXMLパーサ11と、XMLパーサ11を介して展開されるDOM12と、DOM12を解析してテーブル14を生成するための解析部13と、解析部13によってメモリ2上に展開されるテーブル14と、メモリ2上に展開されたDOM12及びテーブル14に基づいて表示を行なうために編集を行なう編集部15と、編集部15で編集されたデータを表示するための表示部16と、表示部16の表示に応じた所定の指示に基づいてDOM12及びテーブル14を操作するための操作部17とを少なくとも有し、さらにDOM12と記憶装置5に格納されているXML文書との同期をとるためのXMLシリアライザ18を有している。
本実施例に係るXMLパーサ11は、一般的に使用されているXMLパーサが使用され、記憶装置5に格納されているXML文書データを読み出してDOM12を生成してメモリ2上に展開する。
解析部13は、メモリ2上に展開されたDOM12のDOMツリーをトラバースして上位要素と下位要素との対応関係に基づいてテーブル14を生成し、生成したテーブル14をメモリ2上に展開する。
編集部15は、メモリ2上に展開されたDOM12やテーブル14を参照して例えばWebブラウザに表示させるためにHTML文書を生成する。生成されたHTML文書は表示部16に送られてWebブラウザによって表示されることとなる。
操作者が表示部16の表示に応じて例えば検索処理等の所定の指示を行なうと、操作部17はテーブル14からどのDOMツリーを検索すればよいかを参照して、DOM12を検索する処理を行なう。検索処理の結果は、編集部15によって例えばHTML文書化されて表示部16に表示される。また、操作部17は、表示部16の表示に応じてソートやDOMツリーの要素の追加・変更・削除等の指示に応じてDOM12及びテーブル14のデータを追加・変更・削除等の処理を行なう。
以上の説明において、同図に示したXMLパーサ11、解析部13、編集部15、操作部17、XMLシリアライザ18で行なわれる処理は、例えば図1に示したCPU1が外部記憶装置5に格納されている本実施例に係るプログラムをメモリ2に読出してプログラムにしたがって処理が実行される。したがって、上記各処理部(XMLパーサ11、解析部13、編集部15、操作部17、XMLシリアライザ18)での処理の主体はCPU1であるが、どの処理部で行なわれているかを明確にするために以下の説明では、処理の主体を各処理部として説明する。
また、同図に示す構成の各要素は、1つの情報処理装置で全ての要素を構成してもよく、ネットワーク上に分散した状態で構成してもよい。例えば、クライアント・サーバモデルにおいては、クライアント側では表示部16による表示と操作部17への所定の指示のみを行ない、その他の構成要素をサーバ側で構成してもよく、また、XML文書を格納する記憶装置11のみをサーバ側で構成し、その他の構成要素をクライアント側で構成してもよい。
図3は、メモリ2上に展開されるDOM12の概念を示すDOMツリーの一例を示す図である。
同図に示すDOMツリーは、DOMツリーの最上位の要素を示すルート19と、ルート19の下位の要素である要素「記事」とで構成される。さらに、各要素「記事」はその下位に要素「見出し」を有し、要素「見出し」はその下位に要素「No」「投稿日」「本文」を有する。
同図は、要素「記事」をn個(nは任意の自然数)有し(記事20〜記事21)、各要素「記事」に対して要素「見出し」を3個(例えば、見出し22aから見出し22c)有する場合のDOMツリーを示している。
さらに、要素「見出し」は下位要素として記事番号を示す要素「No]、記事の投稿日を示す要素「投稿日」、記事の本文を示す要素「本文」を有している。
ここで、本実施例に係るDOMツリーは、上位要素と下位要素とに分けられる。上位要素は、特定の下位要素の集合の内容を表す(又は識別できる)要素である。同図では、要素「記事」を上位要素とし、要素「記事」より下位の要素(要素「見出し」及びその下位の要素である要素「No」、「投稿日」、「本文」)を下位要素としている。
また、同図に示すDOMツリーは1つのオブジェクトとして扱うことが可能であるが、上位要素のオブジェクト及び下位要素のオブジェクトとで構成されているオブジェクトとして扱うことも可能である。以下の説明においては、各要素を必要に応じてオブジェクトとして取り扱っているが、一般的に使用されているオブジェクト指向型のプログラミング言語(例えば、Java(登録商標)やJava(登録商標)Script、Perl、C++等)を使用することで容易に実現することが可能である。
図4は、図2に示したテーブル14の構成例を示している。
同図(a)に示すテーブルは、「キー」と「値」で構成される連想記憶配列(ハッシュ)で構成され、上位要素を「キー」として格納する上位要素用配列26と上位要素用配列26に対応する下位要素のアドレスを「値」として格納する下位要素用配列27とで構成される。
同図(a)に示すように、連想記憶配列にデータを格納する場合には、入力された「キー」に対してハッシュ値を計算し、計算したハッシュ値と入力された「値」とが関連づけられた記憶される。また、連想記憶配列から「キー」に対応する「値」を取り出す場合には、入力された「キー」からハッシュ値を計算し、上述の関連づけられたハッシュ値と一致するハッシュ値に関連づけられた「値」を取り出すことができる。このため、所望の「キー」に対応する「値」を容易に取り出すことが可能である。
上位要素用配列26には、「キー」として上位要素が格納される。例えば、図3に示したDOMツリーにおいては、上位要素である記事20〜記事21が格納されることとなる。
下位要素用配列27は、上位要素用配列26に格納された「キー」に対応する「値」を格納する。すなわち、上位要素に対する下位要素(又は下位要素を構成するオブジェクト)へのアドレスが格納される。例えば、図3に示したDOMツリーにおいては、上位要素である記事20の下位要素のオブジェクトへのアドレスが格納される。すなわち、見出し22a及びその下位の要素23a〜23cで構成されるオブジェクトへのアドレスと、見出し22b及びその下位の要素23dから23fで構成されるオブジェクトへのアドレスと、見出し22c及びその下位の要素23g〜23iで構成されるオブジェクトへのアドレスとが「値」として格納される。
以上に示したように、テーブル14に連想記憶配列を用いることによって所望の下位要素へのアクセスが容易となる。例えば、図3のDOMツリーにおいて、本文23cにアクセスする場合には、連想記憶配列の「キー」である記事20に対応する「値」(下位要素のオブジェクトへのアドレス)を取り出すことが可能となるので(オブジェクト指向型プログラム言語の機能によってオブジェクトの要素である本文23cの直接アクセスすることが可能とるので)、下位要素のオブジェクトを構成する要素である本文23cに直接アクセスすることが可能となる。
なお、以上に説明した連想記憶配列は、例えばプログラム言語であるPerl等に標準実装されている連想記憶配列と同様の機能で実現されている。
本実施例では、テーブル14に連想記憶配列(ハッシュ)を使用しているが、これに限定されない。例えば、図4(b)に示すように連想記憶配列の代りに通常の配列を使用してもよい。同図(b)は、配列番号0から連続したメモリ領域に確保された配列である上位要素用配列28と、上位要素用配列28でポイントされた配列の下位要素用配列29とで構成される配列を示している。この場合、各上位要素は、上位要素用配列28の配列番号で表すことができる。例えば図3に示した左から1番目の記事20は配列0番目に対応し、左からn番目の記事21は配列n−1番目に対応する。
また、上位要素用配列28には、下位要素用配列29をポイントするためのデータを格納する。すなわち、下位要素用配列29の先頭アドレスを格納する。そして、下位要素用配列29には、上位要素に対する各下位要素のオブジェクトへのアドレスを格納する。
以上のように配列を構成することによって所望の下位要素へのアクセスが容易となる。例えば、図3のDOMツリーにおいて、本文23cにアクセスする場合には、記事20に対応する上位要素用配列の0番目の配列から(0番目の配列に格納されている下位要素のオブジェクトの先頭アドレスを参照することによって)、下位要素のオブジェクトを構成する要素である本文23cに直接アクセスすることが可能となる。
図5は、図4(a)に示したテーブル14を生成する処理を示すフローチャートである。
図2に示したように記憶装置5に格納されているXML文書は、XMLパーサ11によってメモリ2上にDOMとして展開される。メモリ2上に展開されているDOMは論理的には図3に示したDOMツリー構造となっている。
解析部13は、図4(a)に示した上位要素用配列26及び下位要素用配列27の領域をメモリ2上に確保した後、ステップS501においてメモリ2上に展開されているDOMツリーに対してトラバース(DOMツリーのルートから処理を開始して上位から下位の要素、又は下位から上位の要素をたどる処理)を行ない、上位要素の検出処理を行なう。
例えば、図3に示したDOMツリーでは、ルート19⇒記事20⇒見出し22a⇒本文23cのようにDOMツリーに沿って順次要素を検索して上位要素を検出する処理を行なう。
なお、上位要素は前もってルート19から所定の階層までトラバースした要素と決めておいてもよく、またその都度トラバース処理を行なって判別してもよい。
本実施例に係る上位要素は、前もってルート19から一階層下位の要素として処理を行なっている。
ステップS502の処理によって最初の子ノード(ルート19から一階層下位の要素であって、本実施例に係る上位要素)が特定されると(ステップS502)、そのノードがNullであるかをチェックする(ステップS503)。この場合のNullは、ノードが存在しないことを示すための文字コードである。したがって、ノードがNullの場合には、ステップS508の処理に移行して終了する。
ステップS503でノードがNullでない場合には、ステップS504に処理が移行して特定されたノードが記事であるかを判別する。特定されたノードが記事である場合には、ステップS505において、そのノードの下位要素(オブジェクト)である見出しが格納されているアドレスを図4(a)に示した連想記憶配列に格納する。この時、要素「記事」を「キー」として上位要素用配列26に格納し、その配列から上述の特定されたノードをポイントする。すなわち、要素「記事」を「キー」、オブジェクトである見出しのアドレスを「値」として連想記憶配列に格納する。ここで、オブジェクトである見出しとは、要素見出しを含む要素見出しより下位の要素全てを含むオブジェクトを言う。
例えば、ステップS504において図3に示した記事20を検出した場合には、ステップS505において、記事20を図4(a)に示した連想記憶配列の「キー」とし、記事20の下位要素(オブジェクト)である見出し22a、見出し22b、見出し22cが格納されているアドレスを「値」として格納する。
ステップS505又はステップS506の処理が終了すると、S507の処理に移行して次ぎの兄弟ノードを特定してステップS503からステップS507の処理を繰り返すこととなる。
たとえば、ステップS507において、図3に示す記事n−1が特定されると、ステップS503の処理に移行する。記事n−1はNullではないので、ステップS504の処理に移行する。また、記事n−1の要素は記事であるのでステップS505に移行する。ステップS505では、記事21を図4(a)に示した連想配列の「キー」とし、見出し24a、見出し24b、見出し24cが格納されているアドレスを「値」として格納する。
また、ステップS504においてノードが記事でない場合には、ステップS506において、特定されたノードの下位のノード(要素)に対して再帰的に同図に示すトラバース処理が行なわれる。
この処理は、図3に示す本実施例に係るDOMツリーの例では不要な処理となるが、より複雑なDOMツリーが構成されている場合には、ルート19の直下に目的の要素である記事があるとは限らないため図5に示したトラバース処理を再帰的に実施することが必要となる(トラバース処理を再帰的に実施することによって目的の要素である記事を検出してテーブル14を生成することが必要となる)。
ここで、以上に説明したテーブル生成処理は、図4(a)に示した連想記憶配列を使用した場合の説明であるが、図4(b)に示した配列についても同様の処理によってテーブルを生成することが可能である。
すなわち、ステップS505において、ステップS503で特定されたノードが記事である場合には、そのノードの下位要素(オブジェクト)である見出しが格納されているアドレスを図4(b)に示した下位要素用配列29に格納して、下位要素用配列29から上述の特定されたノード(ノード)をポイントすればよい。
以上に説明した処理によって、記憶装置11に格納されたXML文書に基づいてメモリ2上にDOM12及びテーブル14が展開されることとなる。
さらに、編集部15ではDOM12及びテーブル14に基づいて、例えばHTMLデータを生成して表示部16に表示されることとなる。
図6は、本実施例に係る表示部への表示処理を示すフローチャートである。
編集部15は、メモリ2に展開されているテーブル14を参照して最初の表示行と最後の表示行とを決定する(ステップS602)。ここで、最初の表示行と最後の表示行は、例えば図4(a)に示した上位要素用配列26に基づいて決定される。すなわち、上位要素用配列26の1番目から5番目の要素を表示したい場合には最初の表示行は0となり、最後の表示行は4となる。同様に上位要素用配列26の6番目から10番目までを表示したい場合には最初の表示行は5となり、最後の表示行は9となる。
ステップS602の処理で最後の表示行が決定されると、決定された最後の表示行の値が正しい値かをチェックする(ステップS603)。本実施例では、最後の表示行の要素が格納されているアドレスをチェックし、その値が負の場合には最後の表示行が正しくないと判断する。すなわち、該当する表示データが存在しないと判断して以降の処理が行なわれる。
ステップS603の処理で該当する表示データが存在しないと判断されると、処理がステップS604に移行し、文字列「該当するデータはありません。」を表示するためのHTMLデータ生成されてメモリ2上に格納される。さらに、メモリ2上格納されたHTMLデータは表示部16に出力されて表示されることとなる(ステップS605、ステップS606)。
一方、ステップS603において、該当する表示データが存在すると判断されると、編集部15は現在処理を行なっている行数の情報を保持するための変数pの領域をメモリ2に確保して、最初の表示行の要素が格納されているアドレスの値を変数pに格納する(ステップS607)。
そして、ステップS608において、最後の表示行の要素が格納されているアドレスと変数pに格納された値(現在処理を行なっている行数)とを比較し、変数pが最後の表示行の要素が格納されているアドレスより大きい場合には全ての表示行について編集処理が行なわれたと判断してステップS605の処理に移行し、メモリ2上に出力されたHTMLデータが表示部16に送信されて表示されることとなる(ステップS606)。
ステップS608において、まだ全ての表示行について編集処理が行なわれていないと判断された場合には、ステップS609に処理が移行して表示項目の編集が行なわれる。
ステップS609において、現在処理対象となっている行についての表示項目の編集処理が終了すると、ステップS610に処理が移行し次の表示行を処理対象とするために変数pの値が1だけインクリメントされ、ステップS608に処理が移行する。
以上のステップS608からステップS610の処理を最後の表示行まで繰り返すことによってメモリ2上にHTMLデータが出力される。メモリ2に出力されたHTMLデータは、ステップS605において表示部16に出力されて表示されることとなる(ステップS606)。
図7は、図6に示した本実施例に係る表示処理によって表示部16に表示される表示の一例を示している。
同図は、No30、投稿日31、投稿者32及びタイトル33が表示されている。No30、投稿日31、投稿者32、タイトル33は、図3に示したそれぞれの要素「No」、「投稿日」「投稿者」「見出し」を図6に示したステップS609の処理によってHTMLデータに編集して表示されてものである。
また、同図に示すNo30、投稿日31、投稿者32及びタイトル33はソートボタンとなっており、各ボタンをマウス等で押下することによって昇順又は降順にソートされる。
さらに、前ページの5件を表示するための前ページ表示用ボタン34、次ページの5件を表示するための次ページ表示用ボタン35、検索範囲を指定するための検索範囲指定欄36、検索したいキーワードを入力するための検索キーワード入力欄37、検索を指示するための検索指示ボタン38、入力欄をクリアするための入力クリア用ボタン39が表示されている。
図8は、本実施例に係る全文検索処理のフローチャートを示す図である。
同図は、操作者が表示部16に表示された表示に応じてタイトル及び本文を対象に全文検索の指示を行なった場合の検索処理を示している。
操作者が、入力装置3であるマウスやキーボード等によって検索範囲指定欄に「タイトル」及び「本文」と入力し、検索キーワード入力欄37にキーワードを入力して検索指示ボタンを押下すると、操作部17によって全文検索処理が開始される(ステップS801)。
ステップS802において、図4(a)に示した「キー」に格納されている上位要素から第一番目の「キー」に対応する要素が格納されているアドレスを変数pに格納して初期化する。
ステップS803において、テーブル14に格納した全ての要素に対して検索処理が終了したかをチェックし、全ての要素に対して検索処理が終了した場合にはステップS808に処理が移行する。
ステップS803において、全ての要素に対して検索処理が終了していない場合には、ステップS804に処理が移行する。
ステップS804では、図4(a)に示した連想記憶配列から変数pが示す上位要素に対応する「値」である下位要素のオブジェクトが格納されているアドレスを取り出し、そのオブジェクトの要素である「見出し」に対して正規表現による検索を実施する。その結果、要素「見出し」内にキーワードにマッチする文字列が含まれている場合には、ステップS805に処理が移行して変数pをメモリ2上の退避域に記憶する。なお、メモリ2の退避域には、図4(a)と同様の連想記憶配列を生成しておき、この退避用の連想記憶配列に変数pを「キー」とした場合の「キー」及び「値」が代入されて退避される。また、本実施例に係る正規表現による検索は、例えばプログラム言語であるPerl等に標準で備わっている機能によって実現される。
ステップS804において、キーワードにマッチする文字列がない場合には、ステップS806に処理が移行する。ステップS806では、ステップS804の処理と同様に、図4(a)に示した連想記憶配列から変数pが示す上位要素に対応する「値」である下位要素のオブジェクトが格納されているアドレスを取り出し、そのオブジェクトの要素である「本文」に対して正規表現による検索を実施する。
要素「本文」内の文字列にキーワードにマッチする文字列がある場合には、ステップS805に処理が移行し、メモリ2上の退避域に変数pを記憶する。
以上の処理によって、変数pが示す図4(a)に示した「キー」に格納されている第一番目の上位要素に対応する下位要素(要素「見出し」、要素「本文」)について検索が終了し、ステップS807に処理が移行する。そして、ステップS807では、図4(a)に示した「キー」に格納されている上位要素から第二番目の「キー」に対応する要素が格納されているアドレスを変数pに代入する。
以上説明したステップS803〜ステップS807の処理を行なうことによって、図4(a)に示した「キー」に格納されている全ての上位要素に対応する下位要素についてキーワード検索が終了することとなる。
ステップS808において、テーブル14をメモリ2の退避域に生成された退避用の連想記憶配列と置き換え、図6に示した表示処理によって全文検索の結果が表示部16に表示される。
以上に説明したように、従来は全ての要素に対してトラバース処理を行なわなければできなかった全文検索処理が、テーブル14を使用することによって検索対象のみ(図8に示した例では要素「見出し」及び「本文」)について全文検索が可能となり、処理速度を向上することが可能なる。
図9は、本実施例に係るソート処理を示すフローチャートである。
図7において、ソートボタン30から33のいずれかのボタンが操作者によって押下されると、操作部17に通知されてソート処理が開始される(ステップS901)。
ステップS902において、昇順にソートするのか降順にソートするのかを判別して、昇順にソートする場合にはステップS903の処理い移行し、降順にソートする場合にはステップS904に処理が移行される。
ステップ903では、図4(a)に示した連想記憶配列の「キー」又は「値」が示す要素(オブジェクト)に対してソート処理を行なう。例えば連想配列の「キー」である上位要素をabc順に(昇順に)ソートしたのち、ステップS905の表示処理によって表示を行なう。又はステップS904において、例えば連想配列の「キー」である上位要素をabcの降順にソートしたのち、ステップS905の表示処理によって表示を行なう。
以上に説明したように、テーブル14を構成する連想記憶配列(又は配列)と連想記憶配列をソートするための標準API(例えばプログラミング言語Perlに標準で備わっているソート関数など)を使用することによって任意の要素を対象としてソート処理が可能となる。また、テーブル14についてのみソート処理を行なえばよいので、処理速度が向上する効果を奏する。
図10は、本実施例に係る表示ページ切替え処理を示すフローチャートである。
例えば、操作者が図7に示した前ページ表示用ボタン34や次ページ表示用ボタン35を押下することによって表示ページ切替え処理が開始される。
同図(a)は、前ページ表示用ボタン34が押下された場合の表示ページ切替え処理を示し、同図(b)は、次ページ表示用ボタン35が押下された場合の表示ページ切替え処理を示している。
同図(a)において、前ページ表示用ボタン34が押下されると、現在表示されている上位要素を示す変数pから表示行数だけデクリメントされ(ステップS1002)、処理がステップS1003に移行される。ステップS1003では、変数pに基づいて図6に示した表示処理が行なわれ、表示部16に表示される。
同様に、同図(b)においても、次ページ表示用ボタン35が押下されると、現在表示されている上位要素を示す変数pから表示行だけインクリメントされ(ステップS106)、処理がステップS107に移行される。ステップS1007では、変数pに基づいて図6に示した表示処理が行なわれ、表示部16に表示される。
(付記1) コンピュータによる、テーブル形式のXML文書のランダムアクセス方法であって、
前記コンピュータの第1の記憶手段に格納されたXML文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第1の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して、前記コンピュータの第2の記憶手段に格納し、
該第2の記憶手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスすることを特徴とするテーブル形式のXML文書のランダムアクセス方法。
(付記2) 前記テーブルには連想記憶配列を使用し、
該連想記憶配列のキーを前記上位構造の要素とし前記連想記憶配列の値を前記下位構造の要素のアドレスとして格納することを特徴とする付記1に記載のテーブル形式のXML文書のランダムアクセス方法。
(付記3) 前記上位構造の要素は、下位構造の要素を分類するためのインデックスであることを特徴とする付記1に記載のテーブル形式のXML文書のランダムアクセス方法。
(付記4) 前記上位構造の要素は、最上位の要素の次の階層にある要素であって下位構造の要素を分類するためのインデックスであることを特徴とする付記1から3のいずれか一項に記載のテーブル形式のXML文書のランダムアクセス方法。
(付記5) コンピュータにテーブル形式のXML文書のランダムアクセスを実行させるためのプログラムであって、
前記コンピュータの第1の記憶手段に格納されたXML文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第1の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して、前記コンピュータの第2の記憶手段に格納するテーブル化処理と、
該第2の記憶手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスする処理と、
をコンピュータに実行させることを特徴とするテーブル形式のXML文書のランダムアクセスを実現させるためのプログラム。
(付記6) 前記テーブルには連想記憶配列を使用し、
該連想記憶配列のキーを前記上位構造の要素とし前記連想記憶配列の値を前記下位構造の要素のアドレスとして格納する処理をコンピュータに実行させることを特徴とする付記5に記載のテーブル形式のXML文書のランダムアクセスを実現させるためのプログラム。
(付記7) 前記上位構造の要素は、下位構造の要素を分類するためのインデックスであることを特徴とする付記5に記載のテーブル形式のXML文書のランダムアクセスを実現させるためのプログラム。
(付記8) 前記上位構造の要素は、最上位の要素の次の階層にある要素であって下位構造の要素を分類するためのインデックスであることを特徴とする付記5から7のいずれか一項に記載のテーブル形式のXML文書のランダムアクセスを実現させるためのプログラム。
(付記9) XML文書を格納する第1の格納手段と、
該第1の格納手段に格納されたXML文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第1の格納手段に格納された下位構造の要素のアドレスとをテーブル化するテーブル化手段と、
該テーブル化手段で得られたテーブルを格納する第2の格納手段と、
該第2の格納手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスするアクセス手段と、
を備えることを特徴とする情報処理装置。
(付記10) 前記テーブルには連想記憶配列を使用し、
該連想記憶配列のキーを前記上位構造の要素とし前記連想記憶配列の値を前記下位構造の要素のアドレスとして格納することを特徴とする付記9に記載の情報処理装置。
(付記11) 前記上位構造の要素は、下位構造の要素を分類するためのインデックスであることを特徴とする付記9に記載の情報処理装置。
(付記12)
前記上位構造の要素は、最上位の要素の次の階層にある要素であって下位構造の要素を分類するためのインデックスであることを特徴とする付記9から11のいずれか一項に記載の情報処理装置。
本実施例に係る情報処理装置の構成例を示す図である。 本実施例に係るテーブル形式のXML文書のランダムアクセス方法及びそのプログラムを実施するための構成図の一例を示す概略図である。 本実施例に係るDOMの概念を示すDOMツリーの一例を示す図である。 本実施例に係る配列データの構成例を示す図である。 本実施例に係るテーブル生成処理を示すフローチャートである。 本実施例に係る表示部への表示処理を示すフローチャートである。 図6に示した本実施例に係る表示処理によって表示部に表示される表示の一例を示している。 本実施例に係る全文検索処理を示すフローチャートである。 本実施例に係るソート処理を示すフローチャートである。 本実施例に係る表示ページ切替え処理を示すフローチャートである。
符号の説明
1 CPU
2 メモリ
3 入力装置
4 出力装置
5 外部記憶装置
6 媒体駆動装置
7 可搬記憶媒体
8 ネットワーク接続装置
9 ネットワーク
10 バス
11 XMLパーサ
12 DOM
13 解析部
14 テーブル
15 編集部
16 表示部
17 操作部
18 XMLシリアライザ
19 ルート
20〜21 上位要素
22a〜22c 下位要素
23a〜23i 下位要素
24a〜24c 下位要素
25a〜25i 下位要素
26 上位要素用配列
27 下位要素用配列
28 上位要素用配列
29 下位要素用配列
30 No.ソート用ボタン
31 投稿日ソート用ボタン
32 投稿者ソート用ボタン
33 タイトルソート用ボタン
34 前ページ表示用ボタン
35 次ページ表示用ボタン
36 検索範囲指定欄
37 検索キーワード入力欄
38 検索指示ボタン
39 入力欄クリア用ボタン

Claims (5)

  1. コンピュータによる、テーブル形式のXML文書のランダムアクセス方法であって、
    前記コンピュータの第1の記憶手段に格納されたXML文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第1の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して、前記コンピュータの第2の記憶手段に格納し、
    該第2の記憶手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスすることを特徴とするテーブル形式のXML文書のランダムアクセス方法。
  2. 前記テーブルには連想記憶配列を使用し、
    該連想記憶配列のキーを前記上位構造の要素とし前記連想記憶配列の値を前記下位構造の要素のアドレスとして格納することを特徴とする請求項1に記載のテーブル形式のXML文書のランダムアクセス方法。
  3. 前記上位構造の要素は、下位構造の要素を分類するためのインデックスであることを特徴とする請求項1に記載のテーブル形式のXML文書のランダムアクセス方法。
  4. 前記上位構造の要素は、最上位の要素の次の階層にある要素であって下位構造の要素を分類するためのインデックスであることを特徴とする請求項1から3のいずれか一項に記載のテーブル形式のXML文書のランダムアクセス方法。
  5. コンピュータにテーブル形式のXML文書のランダムアクセスを実行させるためのプログラムであって、
    前記コンピュータの第1の記憶手段に格納されたXML文書のツリー構造における上位構造の要素と該上位構造の要素に対する前記第1の記憶手段に格納された下位構造の要素のアドレスとをテーブル化して、前記コンピュータの第2の記憶手段に格納するテーブル化処理と、
    該第2の記憶手段に格納されたテーブルを使用して下位構造の任意の要素にアクセスする処理と、
    をコンピュータに実行させることを特徴とするテーブル形式のXML文書のランダムアクセス方法を実現させるためのプログラム。
JP2004093808A 2004-03-26 2004-03-26 テーブル形式のxml文書のランダムアクセス方法、及びそのプログラム Pending JP2005284417A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004093808A JP2005284417A (ja) 2004-03-26 2004-03-26 テーブル形式のxml文書のランダムアクセス方法、及びそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004093808A JP2005284417A (ja) 2004-03-26 2004-03-26 テーブル形式のxml文書のランダムアクセス方法、及びそのプログラム

Publications (1)

Publication Number Publication Date
JP2005284417A true JP2005284417A (ja) 2005-10-13

Family

ID=35182762

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004093808A Pending JP2005284417A (ja) 2004-03-26 2004-03-26 テーブル形式のxml文書のランダムアクセス方法、及びそのプログラム

Country Status (1)

Country Link
JP (1) JP2005284417A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007114972A (ja) * 2005-10-19 2007-05-10 Fujitsu Ltd 構造化文書のデータ処理方法、データ処理プログラム、およびデータ処理装置
WO2007115496A1 (fr) * 2006-04-10 2007-10-18 Wuxi Evermore Software, Inc Procédé, programme et support de stockage pour stocker un document xlm
JP2009140005A (ja) * 2007-12-03 2009-06-25 Daiwa Securities Group Inc 証券仲介システムおよび証券仲介処理方法、並びにプログラム
JP2016021264A (ja) * 2015-10-23 2016-02-04 株式会社東芝 メモリシステムのデータ管理方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007114972A (ja) * 2005-10-19 2007-05-10 Fujitsu Ltd 構造化文書のデータ処理方法、データ処理プログラム、およびデータ処理装置
WO2007115496A1 (fr) * 2006-04-10 2007-10-18 Wuxi Evermore Software, Inc Procédé, programme et support de stockage pour stocker un document xlm
JP2009140005A (ja) * 2007-12-03 2009-06-25 Daiwa Securities Group Inc 証券仲介システムおよび証券仲介処理方法、並びにプログラム
JP2016021264A (ja) * 2015-10-23 2016-02-04 株式会社東芝 メモリシステムのデータ管理方法

Similar Documents

Publication Publication Date Title
JP5138046B2 (ja) 検索システム、検索方法およびプログラム
KR910003523A (ko) 화상데이타를 이용하는 문서데이타 처리방식
JP2008234148A (ja) 文書表示装置、文書表示方法及び文書表示プログラム
JP4343206B2 (ja) 構造化文書検索支援装置およびプログラム
JP4014160B2 (ja) 情報処理装置、プログラム、及び記録媒体
JP2005284417A (ja) テーブル形式のxml文書のランダムアクセス方法、及びそのプログラム
JP2008181218A (ja) 入力支援方法及び装置
JP2007257369A (ja) 情報検索装置
JPH08161342A (ja) データベース表示装置
JPH0581326A (ja) データベース検索装置
JP5703244B2 (ja) トレース支援装置、トレース支援システム、トレース支援方法、およびトレース支援プログラム
JPH117452A (ja) ネットワークを介した情報収集方法および装置と該方法を実施するプログラムを記録した記録媒体
JP6753190B2 (ja) 文書検索装置及びプログラム
JP5707937B2 (ja) 電子文書変換装置及び電子文書変換方法
JP2002024233A (ja) 辞書データ構造を記録した記録媒体、辞書引き方法、語句取得方法、辞書引き装置、語句取得装置、プログラムを記録した記録媒体
JP2005011301A (ja) 文書処理装置及び文書処理プログラム
JP5184987B2 (ja) 索引情報作成装置、索引情報作成方法及びプログラム
JP2009098829A (ja) 漫画のコマ検索装置
JP7323138B2 (ja) 技術マップ出力装置、技術マップ出力方法、およびプログラム
JP2004334690A (ja) 文字データ入出力装置、文字データ入出力方法、文字データ入出力プログラム、およびコンピュータ読み取り可能な記録媒体
JP2856450B2 (ja) かな漢字変換方式
JP2831837B2 (ja) 文書検索装置
JP6425672B2 (ja) 設計書の入出力装置、設計書の入出力システム及び設計書の入出力方法
JP2008262324A (ja) 情報処理装置及び情報処理方法及びプログラム
JP2007213157A (ja) 用例文検索装置および用例文検索方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060623

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090407

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090605

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090901