(57)【特許請求の範囲】
【請求項１】
構造化言語により記述された文書データを処理する情報処理装置であって、
文書データの少なくとも一部を記憶する記憶手段と、
前記文書データを構文解析して、該文書データが表現するネットワーク構造上の上位の重要度を有するノードの要素から下位の重要度を有するノードの要素へ、同一の重要度を有する一群のノードの要素毎に解釈対象を進めながら、前記文書データに含まれる各要素の情報を抽出する解釈手段と
を含み、前記解釈手段は、
解釈済みのノードのうちから指定された指定ノード下の優先解釈の指令に応答して、解釈対象の位置を保存して、前記指定ノードより下位の重要度を有するノードの要素へ解釈対象を進め、
前記優先解釈の終了に応答して、保存された前記解釈対象の位置に基づき前記指令前の解釈対象に処理を復帰させる、情報処理装置。
【請求項２】
前記解釈手段は、指定ノードの優先解釈解除の指令に応答して、前記優先解釈を終了させる、請求項１に記載の情報処理装置。
【請求項３】
前記解釈手段は、前記指定ノードより下位の重要度を有するノードの要素すべての解釈が完了したことに応答して、前記優先解釈を終了させる、請求項１または２に記載の情報処理装置。
【請求項４】
前記文書データは、木構造のネットワーク構造を表現し、前記重要度は、ノードの該木構造上の階層により規定される、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記文書データは、ＸＭＬ文書またはダイナミックＸＭＬ文書のファイル、ストリームまたはライブ・ストリームである、請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
構造化言語により記述された文書データを処理する情報処理方法であって、
コンピュータが、文書データの少なくとも一部を記憶手段に記憶するステップと、
コンピュータが、前記文書データを前記記憶手段から読み出して構文解析し、該文書データが表現するネットワーク構造上の上位の重要度を有する一群のノードの要素を解釈するステップと、
コンピュータが、前記上位の重要度を有する一群のノードより下位の重要度を有するノードの要素が存在するか否かを判定するステップと、
コンピュータが、下位のノードの要素が存在した場合に、前記文書データを構文解析して、前記上位の重要度を有する一群のノードより下位の重要度を有する一群のノードの要素を解釈するステップと、
コンピュータが、解釈済みのノードのうちから指定された指定ノード下の優先解釈の指令に応答して、解釈対象の位置を保存して、前記指定ノードより下位の重要度を有するノードの要素へ解釈対象を進めるステップと、
コンピュータが、前記優先解釈の終了に応答して、保存された前記解釈対象の位置に基づき前記指令前の解釈対象に処理を復帰させるステップと
を含む、情報処理方法。
【請求項７】
前記復帰させるステップは、指定ノードの優先解釈解除の指令に応答して、または、前記指定ノードより下位の重要度を有するノードの要素すべての解釈が完了したことに応答して、前記優先解釈を終了させるステップを含む、請求項６に記載の情報処理方法。
【請求項８】
構造化言語により記述された文書データを処理するためのプログラムであって、コンピュータを、
文書データの少なくとも一部を記憶する記憶手段、および
前記文書データを構文解析して、該文書データが表現するネットワーク構造上の上位の重要度を有するノードの要素から下位の重要度を有するノードの要素へ、同一の重要度を有する一群のノードの要素毎に解釈対象を進めながら、前記文書データに含まれる各要素の情報を抽出する解釈手段であって、解釈済みのノードのうちから指定された指定ノード下の優先解釈の指令に応答して、解釈対象の位置を保存して、前記指定ノードより下位の重要度を有するノードの要素へ解釈対象を進め、前記優先解釈の終了に応答して、保存された前記解釈対象の位置に基づき前記指令前の解釈対象に処理を復帰させる、当該解釈手段
として機能させるためのプログラム。
【請求項９】
前記解釈手段は、指定ノードの優先解釈解除の指令に応答して、または、前記指定ノードより下位の重要度を有するノードの要素すべての解釈が完了したことに応答して、前記優先解釈を終了させる、請求項８に記載のプログラム。
【請求項１０】
前記文書データは、木構造のネットワーク構造を表現し、前記重要度は、ノードの該木構造上の階層により規定される、請求項８または９に記載のプログラム。
【請求項１１】
前記文書データは、ＸＭＬ文書またはダイナミックＸＭＬ文書のファイル、ストリームまたはライブ・ストリームである、請求項８〜１０のいずれか１項に記載のプログラム。
【請求項１２】
請求項８〜１１のいずれか１項に記載のプログラムを記録したコンピュータ可読な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化言語により記述された文書データの解釈処理に関し、より詳細には、構造化言語により記述された文書データを解釈し情報を抽出するための情報処理装置、情報処理方法、プログラムおよび記録媒体に関する。
【背景技術】
【０００２】
近年、インターネットの普及、ウェブ・サービスの発展にともなって、種々のアプリケーションにおける情報を保存または通信するための最も有用な手段のひとつとして、ＸＭＬ（eXtensible Markup Language）などの構造化言語が注目されている。例えば、特開２００４−４６８１７号公報（特許文献１）は、データ蓄積装置とコンピュータとのデータ授受の際のコマンド送信および応答データ受信にＸＭＬなどの構造化文書形式を用いる技術を開示している。
【０００３】
そして、ＸＭＬで記述された文書データを解釈するために、現在のところ、主に２つの手段が提案されている。第１の手段は、オブジェクトモデル・ベースのＤＯＭ（Document Object Model）であり、ＸＭＬにより記述された文書データを構文解析して、木構造ネットワークとしてメモリ上に保持し、木構造のノードを経由してナビゲーションすることにより、ＸＭＬにより構造化された情報への容易なアクセスを提供する（非特許文献１）。第２の手段は、イベント・ベースのＳＡＸ（Simple API for XML）であり、ＤＯＭよりも軽量に動作し、取得したままのデータを処理できるため、部分的な文書を扱うことも可能である。一方、ＳＡＸは、大規模な文書を扱う際は、実行にかなりの時間を要することとなる。なお、上記ＤＯＭやＳＡＸは、ＡＰＩ（Application Programming Interface）などとして実装され、上位のホスト・アプリケーションにより利用される。
【０００４】
図１１（Ａ）は、ＸＭＬファイルのデータ構造を一例として示す図である。一例として、従業員名簿をＸＭＬ文書データとして蓄積した場合を考えると、各従業員の名前、年齢、性別などを主要ノードとして蓄積し、より詳細な情報、例えば従業員が携わった過去すべてのプロジェクト、その他、該従業員が受けた過去すべての昇進および褒賞、該従業員の月給の履歴などを、主要ノード下位の子ノードとして蓄積することができる。
【０００５】
ＤＯＭを用いる場合、ＸＭＬファイル全体が解釈され、全従業員に関するすべての情報がメモリ上に保持された後、一度に全ノードに対してアクセス可能な状態となる。しかしながら、ＤＯＭは、ファイルに含まれる従業員数が膨大な場合、ファイル全体が解釈されてアクセス可能となるまでに、かなりの時間を要することとなる。一方、ＳＡＸは、ＸＭＬ文書データの先頭から順次解釈して行き、要素開始タグや要素終了タグの検出イベントなどをホスト・アプリケーションに通知する。上記の例では、ＳＡＸは、ファイルの先頭から順に各従業員名簿のノードを解釈して行き、所定の従業員のデータが解釈されると、直ちに当該所定の従業員の情報（当該従業員についてのすべての情報を含む）にアクセス可能となる。図１１（Ｂ）は、図１１（Ａ）に示すＸＭＬファイルをＳＡＸにて解釈した場合の解釈の順序を示す図である。図１１（Ｂ）に示すように、ＳＡＸは、ＸＭＬファイルのデータを先頭から順に処理して行く。
【特許文献１】特開２００４−４６８１７号公報
【非特許文献１】W3C Recommendation: Document Object Model Level 3 Core, 7 April 2004.
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術では、ＸＭＬ文書データのすべてのノードがフラットに取り扱われ、ＸＭＬ文書データ中のノードの重要度を考慮するものではなかった。上述した従来技術では、すべてのノードは、所定の名前を有し、いくつかの子ノードや、基本的に同一なメソッドおよびプロパティなどを含み得る均質なノードとされる。一方、詳細なデータは不要であっても、蓄積データの全体像、より具体的には上記例では従業員全員の名前リストを、迅速に把握したいという要望がある。しかしながら、上記従来技術のＤＯＭおよびＳＡＸのいずれも、これらの要望に答えられるものではなかった。さらに、ファイルまたはストリームとして入力されるＸＭＬ文書データ以外にも、ライブ・ストリーム形式のＸＭＬ文書データを処理させたいという要望があるが、上記従来技術のＤＯＭおよびＳＡＸは、この要望に充分に対応できるものではなかった。
【０００７】
本発明は、上記問題点に鑑みてなされたものであり、ＳＡＸが有する短時間にアクセス可能とする特徴と、ＤＯＭが有する容易な誘導可能性（navigability）とを兼ね備え、さらに構造化言語により記述された文書データの操作において、情報の重要度を考慮する新規なパーサの様式を提供し、もって、構造化言語により記述された文書データから、省メモリかつ低ＣＰＵ使用率で高速に、重要度に応じて情報を利用可能とすることができる情報処理装置、情報処理方法、プログラムおよび記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では、上記課題を解決するために、構造化言語により記述された文書データの少なくとも一部を記憶手段に記憶し、文書データを構文解析して、該文書データが表現するネットワーク構造上の上位の重要度を有するノードから下位の重要度を有するノードへ、同一の重要度を有する一群のノード毎に解釈対象を進めながら、文書データに含まれる情報を解釈する構成を採用する。
【０００９】
上記構成により、構造化言語により記述された文書データは、その少なくとも一部が記憶手段に記憶されながら、該文書データに含まれる情報の重要度に応じて解釈が進められるため、省メモリかつ低ＣＰＵ使用率に、重要度の高い情報を可能な限り迅速に利用可能とすることができる解釈処理が実現され、もって構造化文書の利便性を向上させることが可能となる。
【００１０】
また本発明では、上記解釈手段は、指定ノードの優先解釈の指令に応答して、当該指定ノードを基点として、それより下位の重要度を有するノードを優先して解釈を進めることができる。これにより、解釈済みのノードを指定して、その下位の情報を優先的に利用可能とすることができるため、上位アプリケーションやユーザが必要とする情報へ、より効率的に誘導することが可能となる。
【００１１】
さらに本発明では、上記解釈手段は、指定ノードの優先解釈解除の指令に応答して、または指定ノードを基点とした該指定ノードより下位の重要度を有するノードすべての解釈が完了したことに応答して、優先解釈の指令前の解釈対象に処理を復帰させることができる。これにより、優先解釈が終了した後に、通常の解釈処理に自動的に復帰させることができ、効率的な解釈処理が実現される。また本発明では、優先解釈処理の開始と終了をネスト（入れ子）可能に構成することができる。
【００１２】
また本発明では、上記文書データは、木構造のネットワーク構造を表現し、上記重要度は、ノードの該木構造上の階層により規定することができる。上記ノードは、文書データにおいて、要素開始標識および対応する要素終了標識により規定することができる。上記解釈手段は、要素開始標識および要素終了標識の入れ子構造から重要度を決定することができる。上記情報処理装置は、さらに解釈手段に解釈を指令し解釈結果を利用するアプリケーション手段を含み、上記解釈手段は、各ノード毎に解釈結果をアプリケーション手段に通知することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施形態を説明するが、本発明の実施形態は、以下の実施形態に限定されるものではない。なお本実施形態では、情報処理装置の一例として、コンピュータ装置１０を用いた例を説明する。
【００１４】
図１は、コンピュータ装置１０の概略的ハードウェア構成の実施形態を示した図である。コンピュータ装置１０は、マイクロプロセッサ・ユニット（ＭＰＵ)１２と、ＢＩＯＳ（Basic Input Output System）を格納する不揮発性メモリ１４と、ＭＰＵ１２によるプログラム処理を可能とする作業記憶空間を提供するＲＡＭなどのメモリ１６を含んで構成されており、起動時にＭＰＵ１２は、不揮発性メモリ１４からＢＩＯＳを読み出してシステム診断を行なうとともに入出力装置２６の管理を行っている。
【００１５】
ＭＰＵ１２には、内部バス２２を介して記憶制御用インタフェース１８に接続され、ハードディスクなどから形成される記憶装置２０が、ＭＰＵ１２からの入出力要求に応答してデータの書込または読み出しを実行している。本実施形態では、記憶制御用インタフェース１８としては、ＩＤＥ（Integrated Device Electronics）、ＡＴＡ（AT Attachment）、シリアルＡＴＡ、ＵｌｔｒａＡＴＡなどの規格により、記憶装置２０の入出力を管理するインタフェースを使用することもできる。ＭＰＵ１２は、内部バス２２を介してＵＳＢ、ＩＥＥＥ１１６４などのシリアルまたはパラレル・インタフェース２４を制御して、キーボード、マウス、プリンタなどの入出力装置２６と通信して、ユーザからの入力を受け取り、またユーザに対してプリンタなどを介した出力を提供している。
【００１６】
コンピュータ装置１０は、さらにＶＲＡＭ２８とグラフィック・チップ３０とを含んでおり、ＭＰＵ１２からの指令に応答してビデオ信号を処理し、ディスプレイ装置３２へと表示させている。また、ＭＰＵ１２は、内部バス２２を介してネットワークＩ／Ｆ（ＮＩＣ；Network Interface Card）３４と通信し、コンピュータ装置１０を、ネットワーク３６を通して外部と通信させる。本実施形態のコンピュータ装置１０は、ネットワーク３６を介して他のコンピュータ装置（図示せず）と接続し、他のコンピュータからのＸＭＬ文書へのアクセス要求を受け取り、応答することもできる。
【００１７】
コンピュータ装置１０は、不揮発性メモリ１４や記憶装置２０、その他、ＮＶ−ＲＡＭ（図示せず）やＳＤカード（図示せず）などの記憶装置に格納されたプログラム（図示せず）を読み出し、メモリ１６のメモリ領域に展開することにより、適切なオペレーティング・システム（ＯＳ）のもとで、後述する各機能手段および各処理を実現している。なお、本実施形態では、コンピュータ装置１０がＵＮＩＸ（登録商標）またはＡＩＸまたはＬＩＮＵＸ（登録商標）などのアーキテクチャを有している場合であっても、各ＯＳが同様の機能を提供する限り、情報処理装置のアーキテクチャに限定されるものではない。
【００１８】
図２は、ＸＭＬ文書データの構文解析処理に関するデータフロー図である。図２には、ＸＭＬ構文解析を実行するＸＭＬパーサ５０が示されている。ＸＭＬパーサ５０は、ファイルまたはストリームとして入力されるＸＭＬリソース１００を参照して、ＸＭＬ文書データを構文解析し、結果をＸＭＬ解釈データ１１０として生成する。記録装置２０などに格納されていたＸＭＬリソース１００は、解釈中、その少なくとも一部がメモリ１６に展開される。ＸＭＬ文書データから抽出される情報を利用するホスト・アプリケーション（図示せず）は、構文解析の指令とともに、ＸＭＬリソース１００のファイル・パスやＵＲＩ（Uniform Resource Identifier）や入力ストリームなどをＸＭＬパーサ５０に引渡し、ＸＭＬリソース１００の先端から終端までの構文解析の結果であるＸＭＬ解釈データ１１０を受け取る。
【００１９】
本実施形態のＸＭＬパーサ５０は、ＸＭＬリソース１００の入力とともに構文解析が指令されると、ノードの重要度に従い、重要度の高いものから低いものへと順に、ＸＭＬ文書データ中に含まれるノードの値および属性を読み出してゆく。なお、上記ノードとは、ＸＭＬ文書データ中、要素開始タグおよび要素終了タグの組み合わせにより規定される個々の要素のことをいい、ＸＭＬ文書データは、個々の要素から構成される木構造ネットワークを表現している。また本実施形態では、上記ノードの重要度を、木構造ネットワークにおけるノードが属する階層に応じて決定することができる。この場合、ＸＭＬパーサ５０は、ルートノードから下位の階層へ、各階層毎にノードを解釈してゆくこととなる。なお、上記ルートノードとは、ＸＭＬ文書データ中にただ１つ含まれるルート要素に対応するノードをいい、木構造ネットワークの頂点となるノードに対応する。以下の説明では、ルートノードが属する階層を第０階層（Ｎ＝０）とし、ルートノードを親とするノードが属する階層を第１階層（Ｎ＝１）とし、階層が下位となるにつれＮが増加するものとする。
【００２０】
さらに、ＸＭＬパーサ５０は、データ長が無制限のストリーム形式（ライブ・ストリームを含む。）のＸＭＬリソース１００を取り扱い可能に構成することができる。例えば、リアルタイムに生成される時間依存情報がストリームとして入力され、リアルタイムに解釈する場合、ストリームの開始および終了が明示されないが、ＸＭＬパーサ５０は、ホスト・アプリケーションによる使用により構文解析処理を開始し、ホスト・アプリケーションからの使用の停止により構文解析処理を終了する。このように、ＸＭＬパーサ５０は、いつでも容易に停止することができるが、開始あるいは再開時に同期をとることが好ましい。データ長が無制限のストリーム形式のＸＭＬリソース１００が入力される場合、ＸＭＬパーサ５０は、開始後最先に解釈したノードをルートノード直下のノードと見なすように構成することができ、その場合、ホスト・アプリケーションは、ＸＭＬパーサ５０が各ノードの属する階層を判断できるように、ＸＭＬパーサ５０の使用を開始する際に、最初にルートノード直下のノードを確実に送信するように構成される。
【００２１】
さらに本実施形態のＸＭＬパーサ５０は、上位階層から下位階層へと順に自動的にノードを解釈する自動モードと、上位階層から下位階層へと順にノードを解釈している間に、ユーザ指令やホスト・アプリケーションからの指令に従って、指定ノードを基点とする下位ノードを優先的に解釈する手動モードを有すことができる。本実施形態では、予めまたは構文解析処理中に、入力装置２６やＮＩＣ３４を介したユーザ設定を受けるユーザ入力部５２からの要求、またはホスト・アプリケーションの内部処理に従って発行される要求を受信して、モードを切り替えるように構成することができる。
【００２２】
以下、本実施形態のＸＭＬパーサ５０が処理するＸＭＬリソース１００のデータ構造について、一例を説明する。図３（Ａ）は、ＸＭＬファイルのデータ構造を一例として示す図である。なお、図３（Ａ）では、ルート要素の開始タグおよび終了タグの記載が省略され、各要素が属する階層の相違がインデントにより強調されて示されている。図３（Ａ）に示すＸＭＬファイルは、従業員名簿をＸＭＬ文書データとして蓄積した場合のものに対応し、第１階層の＜Ｅｍｐｌｏｙｅｅ＞ノードに各従業員の名前（ｎａｍｅ）および年齢(ａｇｅ)を属性として蓄積し、第３階層の＜Ｐｒｏｊｅｃｔ＞ノードに従業員が携わった過去すべてのプロジェクトのプロジェクト名（ｎａｍｅ）、開始年月日（ｓｔａｒｔ）および終了年月日（ｓｔｏｐ）を属性として蓄積し、該第３階層の＜Ｐｒｏｊｅｃｔ＞ノードの親要素および第１階層の＜Ｅｍｐｌｏｙｅｅ＞ノードの子要素として第２階層の＜Ｐｒｏｊｅｃｔｓ＞ノードを含んで構成されている。
【００２３】
図３（Ｂ）は、図３（Ａ）に示すＸＭＬファイルを、本実施形態のＸＭＬパーサで構文解析する際の解釈の順序を示す図である。図３（Ｂ）に示すように、本実施形態のＸＭＬパーサ５０は、第１階層の＜Ｅｍｐｌｏｙｅｅ＞ノードすべてを先ず解釈し、次いで、第２階層の＜Ｐｒｏｊｅｃｔｓ＞ノードすべてを解釈し、最後に第３階層の＜Ｐｒｏｊｅｃｔ＞ノードを解釈するといった順に、上位階層から下位階層へと解釈の対象を進めてゆく。以下、構文解析処理の詳細について説明する。
【００２４】
図４は、ＸＭＬパーサが実行する構文解析処理の第１実施形態を示すフローチャートである。図４に示す処理は、例えばホスト・アプリケーションからのＸＭＬ文書データの構文解釈処理開始の指令に応答して、ステップＳ１００から開始される。続いてステップＳ１０１では、ルートノード直下の第１階層（Ｎ＝１）のノードを解釈対象に設定し、ステップＳ１０２で、現在の解釈対象である階層Ｎのノード全体の解釈処理を実行する。なお、階層Ｎノード全体の解釈処理の詳細については後述する。
【００２５】
階層Ｎノード全体の解釈処理が完了した後、ステップＳ１０３では、現在対象となっていた階層Ｎの下位に次階層が存在するか否かを判定する。なお、ステップＳ１０３の判定は、例えば、次階層（Ｎ＋１）に属するノードを検索し、少なくとも１つのノードが検索されたか否かを判定することにより行なうことができる。この場合、少なくとも１つのノードが検索された場合には「次階層が存在する」と判定され、検索されなかった場合には「次階層が存在しない」と判定されることとなる。
【００２６】
ステップＳ１０３で、次階層が存在しないと判定された場合（ＮＯ）には、ステップＳ１０４へ処理を分岐させ、構文解析処理を完了させる。一方、ステップＳ１０３で、次階層が存在すると判定された場合（ＹＥＳ）には、ステップＳ１０５へ処理を分岐させ、解釈対象を次階層（Ｎ＝Ｎ＋１）へ進め、さらにステップＳ１０２へ処理を分岐させ、処理を繰り返させる。図４に示した処理ルーチンでは、ＸＭＬ文書データ中の木構造ネットワークにおいて、ルートノード直下の第１階層から、木構造ネットワークの末端の最下位階層まで、各階層毎に解釈処理が実施されてゆくこととなる。なお、すべての階層につきすべてのノードの解釈が完了した際には、ＸＭＬパーサ５０は、コールバック関数を呼び出して、入力ストリームをクローズ可能である旨をホスト・アプリケーションに通知し、メモリ１６およびＭＰＵ１２の使用を解放させることができる。
【００２７】
以下、階層Ｎノード全体の解釈処理の詳細を説明する。図５は、ＸＭＬパーサが実行する階層Ｎのノードの解釈処理の第１実施形態を示すフローチャートである。図５に示す処理は、図４に示したステップＳ１０２の処理により呼び出され、ステップＳ２００から開始される。続いてステップＳ２０１では、階層Ｎのノードを検索する。なお、階層Ｎに属するノードの検索は、例えば、ＸＭＬ文書データの先頭または前回の検索位置から処理を開始し、要素開始タグにより規定されるノードを検出し、要素開始タグおよび要素終了タグの入れ子構造から、該検出されたノードが属する階層が階層Ｎであるか否かを判定することにより行なうことができる。
【００２８】
続いてステップＳ２０２では、検索の結果、階層Ｎに属するノードが検索されたか否かを判定する。ステップＳ２０２で、階層Ｎに属するノードが検索された場合（ＹＥＳ）には、ステップＳ２０３へ処理を分岐させる。ステップＳ２０３では、検索されたノードの値および属性を読み出して、ステップＳ２０４で、該ノードの値および属性を含む階層ＮのＸＭＬ解析データ１１０をホスト・アプリケーションに通知し、ステップＳ２０１へ処理を戻し、引き続いて対象階層Ｎに属する次ノードを検索させる。
【００２９】
一方、ステップＳ２０２で、階層Ｎに属するノードが検索されずにデータの終端に至った場合（ＮＯ）には、これ以上当該階層Ｎに属するノードがデータ中に含まれないため、処理をステップＳ２０５へ分岐させ、当該処理ルーチンを終了させ、図４に示す処理フローに制御を戻す。本実施形態の構文解釈処理では、ＸＭＬパーサ５０がひとつのノードに関するすべての属性および値を検出する毎に、コールバック関数を呼び出してホスト・アプリケーションに通知するため、非同期ストリームに対して適用可能である。ホスト・アプリケーションは、このコールバック関数の呼び出しにより、検索されたノードの値および属性へアクセス可能とされる。
【００３０】
図６は、本実施形態のＸＭＬパーサによるＸＭＬリソースの第１実施形態の構文解釈処理のシーケンス図を示す。図６には、ホスト・アプリケーション６０とＸＭＬパーサ５０とのデータ交換が示されている。ホスト・アプリケーション６０は、先ずステップＳ３００で、ＸＭＬリソース１００をＸＭＬパーサに引き渡すとともに、該リソースの構文解析処理を指令する。指令を受けたＸＭＬパーサ５０は、構文解析処理を開始し、ステップＳ３０１で、先ず第１階層を解釈して、解釈データ１１０をホスト・アプリケーション６０に順次通知して行く。第１階層の解釈が完了した後、ステップＳ３０２でＸＭＬパーサ５０は、第２階層を解釈して解釈データをホスト・アプリケーション６０に通知し、ステップＳ３０３で、第３階層を解釈して、解釈データをホスト・アプリケーション６０に通知する。ホスト・アプリケーション６０は、受け取った解釈データに基づいて、例えばブラウザ上に表示させることができる。
【００３１】
図４〜図６を参照して説明した処理により、重要度が高いノードから解釈され、該重要度の高いノードが迅速にホスト・アプリケーションによりアクセス可能となる。例えば、図３（Ａ）に示した従業員名簿が記述されたＸＭＬファイルでは、重要度が高い第１階層の＜Ｅｍｐｌｏｙｅｅ＞ノードが先ず解釈対象とされるため、ホスト・アプリケーションは、従業員の名前（ｎａｍｅ）や年齢（ａｇｅ）にアクセス可能となり、従業員全体の一覧を早期に得てディスプレイ装置３２に表示させることが可能となる。つまり、本実施形態のＸＭＬパーサによれば、ＸＭＬ文書データ全体が解釈される前に、重要度の高い情報からアクセス可能とされ、重要度の高い情報を高速に抽出することが可能となる。本実施形態のＸＭＬパーサ５０は、ＤＯＭのように木構造ネットワーク全体をメモリ上に保持する必要が無いため、省メモリおよび低ＣＰＵ使用率にて動作することが可能である。また本実施形態のＸＭＬパーサ５０は、非同期的に処理を行なうため、非同期ストリームを取り扱うことが可能とされる。
【００３２】
上述まで図４〜図６を参照し、上位階層から下位階層へと順に自動的にノードを解釈してゆく自動モードにおける処理フローを説明してきた。以下に説明する第２実施形態の構文解析処理では、上位階層から下位階層へと解釈対象を進行させている間に、指令に応じて指定ノードＭを基点とする下位ノードを優先的に解釈することが可能な手動モードをサポートする。
【００３３】
第２実施形態の構文解析処理では、構文解析中に、指定ノードＭの下位ノードの優先解釈を指令するコマンド（以下、ＥＮＴＥＲコマンドとして参照する。）により、指定ノードＭを基点とした下位ノードを優先的に解釈を進める優先解釈処理を実行させることができる。この場合、現在進行中であった上位階層から下位階層への通常の解釈処理を、現在の対象位置をメモリ１６に保持して、一時中断させることができる。さらに第２実施形態では、上記優先解釈中、当該優先解釈の解除を指令するコマンド（以下、ＥＸＩＴコマンドとして参照する。）、または指定ノードＭの全下位ノードの解釈完了に応答して、優先解釈を終了させ、ＥＮＴＥＲコマンド発行時の対象位置に処理を戻し、通常の解釈処理に復帰させることができる。なお、他の実施形態では、通常の解釈処理を中断せずに、優先解釈処理を優先させつつも通常の解釈処理とともに並列処理するよう構成することもできる。ホスト・アプリケーションは、ユーザ指令または該ホスト・アプリケーションの内部処理の結果に応答して、ＥＮＴＥＲコマンドおよびＥＸＩＴコマンドを発行できる。
【００３４】
図７は、ＸＭＬパーサが実行する構文解析処理の第２実施形態を示すフローチャートである。図７に示す処理は、例えば構文解釈処理開始の指令に応答して、ステップＳ４００から開始される。ステップＳ４０１では、第１階層（Ｎ＝１）のノードを解釈対象に設定し、ステップＳ４０２で、指定ノードＭにルートノードを指定して、現在の解釈対象である階層Ｎのルートノード下位の解釈処理を実行する。なお、階層Ｎの指定ノードＭの下位ノードの解釈処理の詳細については後述する。
【００３５】
階層Ｎのルートノード下位の解釈処理が完了した後、ステップＳ４０３では、ルートノード下位において、現在対象であった階層Ｎに少なくとも１つのノードが存在したか否かを判定する。ステップＳ４０３で、１つもノードが存在しないと判定された場合（ＮＯ）には、ステップＳ４０４へ処理を分岐させ、構文解析処理を完了させる。一方、ステップＳ４０３で、ルートノード下位において階層Ｎに、少なくとも１つのノードが存在すると判定された場合（ＹＥＳ）には、ステップＳ４０５へ処理を分岐させ、解釈対象を次階層（Ｎ＝Ｎ＋１）へ進め、さらにステップＳ４０２へ処理を分岐させ、処理を繰り返させる。図７に示した処理ルーチンでは、第１階層からＸＭＬ文書データ中の最下位層まで、各階層毎に、ノード全体の解釈処理が実施されてゆくこととなる。
【００３６】
以下、階層Ｎの指定ノードＭ下位の解釈処理の詳細を説明する。図８は、ＸＭＬパーサが実行する階層Ｎのノードの解釈処理の第２実施形態を示すフローチャートである。図８に示す処理は、図７に示したステップＳ４０２の処理または後述の図９に示すステップＳ６０３の処理により呼び出され、ステップＳ５００から開始する。なお、図７に示したステップＳ４０２の処理により呼び出される場合は、指定ノードはルートノード、対象階層は階層Ｎである。後述の図９に示すステップＳ６０３の処理により呼び出される場合には、指定ノードおよび対象階層は、該ステップＳ６０３の処理で指定されたノードＭ２および階層Ｎ２である。
【００３７】
ステップＳ５０１では、優先解釈を指令するＥＮＴＥＲコマンドが発行されたか否かを判定する。ステップＳ５０１で、ＥＮＴＥＲコマンドが発行されていないと判定された場合（ＮＯ）には、ステップＳ５０２へ処理を分岐させ、指定ノードＭ下位において、階層Ｎのノードを検索する。ステップＳ５０３では、検索の結果、指定ノードＭを基点とする下位において、階層Ｎに属するノードが検索されたか否かを判定する。ステップＳ５０３で、階層Ｎに属する指定ノードＭ下位のノードが検索されたと判定された場合（ＹＥＳ）には、ステップＳ５０４へ処理を分岐させる。ステップＳ５０４では、検索されたノードの値および属性を読み出して、ステップＳ５０５で、ホスト・アプリケーションに階層Ｎの解析データ１１０を通知し、ステップＳ５０１へ処理を戻し、引き続いて指定ノードＭ下位において、階層Ｎに属する次ノードを検索させる。
【００３８】
一方、ステップＳ５０３で、階層Ｎに属する指定ノードＭ下位のノードが検索されずに指定ノードＭの要素終了タグに至った場合（ＮＯ）には、これ以上、該階層Ｎに属する指定ノードＭの下位ノードが存在しないため、処理をステップＳ５０６へ分岐させ、当該処理ルーチンを終了させ、図７または図９に示す、当該図８の処理の呼び出し元のルーチンに制御を戻す。
【００３９】
上記ステップＳ５０１で、ＥＮＴＥＲコマンドが発行されたと判定された場合（ＹＥＳ）には、ステップＳ５０７へ処理を分岐させる。ステップＳ５０７では、通常の解釈処理を一時中断し、中断時の対象位置をメモリ１６上に保持して、ＥＮＴＥＲコマンドの引数として指定されるノードＭ２の優先解釈処理を実行し、優先解釈処理の完了を待って、ステップＳ５０１へ処理を戻す。以下、指定ノードＭ２を基点とした優先解釈処理を説明する。
【００４０】
図９は、第２実施形態の構文解析処理における優先解釈処理を示すフローチャートである。図９に示す処理は、図８に示したステップＳ５０７の処理により呼び出され、ステップＳ６００から開始される。ステップＳ６０１では、指定ノードＭ２が属する階層の下位階層Ｎ２（Ｎ２＝ｎ（Ｍ２）＋１：ここで指定ノードＭ２が属する階層がｎ（Ｍ２）である。）のノードを解釈対象に設定する。続いてステップＳ６０２では、優先解釈の解除を指令するＥＸＩＴコマンドが発行されたか否かを判定する。ステップＳ６０２で、ＥＸＩＴコマンドが発行されていないと判定された場合（ＮＯ）には、ステップＳ６０３へ処理を分岐させる。ステップＳ６０３では、現在の解釈対象である階層Ｎ２の指定ノードＭ２下位の解釈処理を実行する。なお、ステップＳ６０３では、図８に示す処理を再帰的に呼び出し、階層Ｎ２の指定ノードＭ２下位の解釈処理を実行させる。すなわち、指定ノードの優先解釈中、さらにＥＮＴＥＲコマンドによる他の指定ノードの優先解釈が指令可能な構成とされている。
【００４１】
階層Ｎ２の指定ノードＭ２下位の解釈処理が完了した後、ステップＳ６０４では、指定ノードＭ２下位において、階層Ｎ２に少なくとも１つのノードが存在したか否かを判定する。ステップＳ６０４で、１つもノードが存在しないと判定された場合（ＮＯ）には、優先解釈が完了したことを意味するため、ステップＳ６０５へ処理を分岐させ、優先解釈処理を終了させ、図８に示す処理ルーチンに制御を移す。一方、ステップＳ６０４で、指定ノードＭ２下位において、階層Ｎ２に少なくとも１つのノードが存在すると判定された場合（ＹＥＳ）には、ステップＳ６０６へ処理を分岐させ、解釈対象を次階層（Ｎ２＝Ｎ２＋１）へ進め、さらにステップＳ６０２へ処理を分岐させ、処理を繰り返させる。図９に示した処理ルーチンでは、指定ノードＭ２直下の階層から、指定ノードＭ２を基点とする末端の階層まで、各階層毎に指定ノードＭ２下位の全ノードの解釈処理が実施されてゆくこととなる。
【００４２】
上記ステップＳ６０２で、ＥＸＩＴコマンドが発行されたと判定された場合（ＹＥＳ）には、ステップＳ６０５へ処理を分岐させ、優先解釈処理を途中で終了させ、図８に示す処理ルーチンに制御を移す。
【００４３】
上記優先解釈の開始および終了（優先解釈の解除または完了による）は、ネスト（入れ子）可能とされている。例えば、第１階層のノードＸを優先解釈中に、さらにノードＸ下位の第２階層のノードＹ下位を優先解釈するよう指令できる。この場合、第２階層のノードＹ下位の優先解釈が終了した後、第１階層のノードＸ下位を優先解釈に復帰し、さらに第１階層のノードＸ下位の優先解釈が終了した後、通常の解釈処理に復帰することとなる。
【００４４】
図１０は、ＸＭＬパーサによるＸＭＬリソースの第２実施形態の構文解釈処理のシーケンス図を示す。なお、図１０（Ａ）は、ＥＮＴＥＲコマンドにより第１階層のノード２の優先解釈が指令された場合のものに対応し、図１０（Ｂ）は、ＥＮＴＥＲコマンドにより第１階層のノード２の優先解釈が指定され、続いてＥＸＩＴコマンドにより優先解釈の解除が指令された場合のものに対応する。
【００４５】
図１０（Ａ）に示すシーケンスでは、ホスト・アプリケーション６０は、ステップＳ７００で、先ず、ＸＭＬリソース１００をＸＭＬパーサ５０に引き渡すとともに、該リソースの構文解析処理を指令する。指令を受けたＸＭＬパーサ５０は、構文解析処理を開始し、ステップＳ７０１で、先ず第１階層を解釈して、第１階層の解釈データをホスト・アプリケーションに順次通知して行く。第１階層の解釈中、ステップＳ７０２でノード２を指定するＥＮＴＥＲコマンドが発行されると、ＸＭＬパーサ５０は、第１階層の解釈を中断し、ステップＳ７０３で、ノード２下位の第２階層を解釈し、ノード２下位の第２階層の解釈データをホスト・アプリケーションに順次通知する。続いて、ＸＭＬパーサ５０は、ステップＳ７０４で、ノード２下位の第３階層を解釈し、ノード２下位の第３階層の解釈データをホスト・アプリケーションに順次通知する。
【００４６】
ノード２を基点とする末端の階層までの解釈が完了した後、ステップＳ７０５でＸＭＬパーサ５０は、ＥＮＴＥＲコマンドが発行された時点の位置に解釈対象を戻し、第１階層につき残りの解釈を実行させ、解釈データをホスト・アプリケーション６０に通知する。引き続いてステップＳ７０６では、ＸＭＬパーサ５０は、第２階層を解釈して解釈データをホスト・アプリケーションに通知し、ステップＳ７０７で、第３階層を解釈して解釈データをホスト・アプリケーションに通知する。なお、上記例では、ノード２下位のノードが重複して解釈される可能性があるが、特定の用途に依存する搭載メモリ容量に応じて、優先解釈時のデータをメモリ１６上にキャッシュしておき、重複する処理を省略する構成とすることもできる。
【００４７】
図１０（Ｂ）に示すシーケンスでは、ホスト・アプリケーション６０は、ステップＳ８００で、先ず、ＸＭＬリソース１００をＸＭＬパーサ５０に引き渡すとともに、該リソースの構文解析処理を指令する。指令を受けたＸＭＬパーサ５０は、構文解析処理を開始し、ステップＳ８０１で、先ず第１階層を解釈して、第１階層の解釈データをホスト・アプリケーションに順次通知する。第１階層の解釈中、ステップＳ８０２で、ノード２を指定するＥＮＴＥＲコマンドが発行されると、ＸＭＬパーサ５０は、第１階層の解釈を中断して、ステップＳ８０３で、ノード２下位の第２階層を優先解釈し、ノード２下位の第２階層の解釈データをホスト・アプリケーションに順次通知する。ノード２下位の第２階層を解釈中、ステップＳ８０４で、ＥＸＩＴコマンドによりノード２下位の優先解釈の解除が指令されると、優先解釈を中断および終了させ、ステップＳ８０５で、ＸＭＬパーサ５０は、ＥＮＴＥＲコマンドが呼び出された時点の位置に解釈対象を戻し、第１階層につき残りの解釈を実行させ、解釈データをホスト・アプリケーション６０に通知する。引き続いてステップＳ８０６では、ＸＭＬパーサ５０は、第２階層全体を解釈して解釈データをホスト・アプリケーションに通知し、ステップＳ８０７で、第３階層全体を解釈し解釈データをホスト・アプリケーションに通知する。
【００４８】
図７〜図１０を参照して説明した処理により、重要度が高いノードが優先的に解釈され、該重要度の高いノードが優先的にホスト・アプリケーションによりアクセス可能となるとともに、解釈済みの結果に基づいて、柔軟に解釈済ノードを基点として下位構造へ解釈対象を誘導することが可能となる。例えば、図３（Ａ）に示した従業員名簿が記述されたＸＭＬファイルでは、重要度が高い第１階層の＜Ｅｍｐｌｏｙｅｅ＞ノードが先ず解釈対象とされ、ホスト・アプリケーションは、従業員の名前（ｎａｍｅ）や年齢（ａｇｅ）にアクセス可能となるが、この際に、解釈済みの特定従業員を指定する優先解釈を実施することにより、当該特定従業員の詳細データを優先的に解釈させてアクセス可能とすることができる。
【００４９】
すなわち、第２実施形態の構文解析処理によれば、ＸＭＬ文書データ全体を解釈する前に、重要度の高い情報からアクセス可能とされ、さらに解釈済みの情報を基点としてその下位構造を優先的に解釈させることが可能となり、もって、ユーザやホスト・アプリケーションにとって重要な情報に、より迅速にナビゲートすることが可能となる。第２実施形態の構文解析処理によれば、ＸＭＬパーサは、省メモリおよび低ＣＰＵ使用量にて実行することが可能であり、かつ、ＤＯＭが有するような高い容易な誘導可能性（Navigability）を実現することができる。
【００５０】
以上説明したように本実施形態によれば、ＳＡＸが有する短時間にアクセス可能とする特徴と、ＤＯＭが有する容易な誘導可能性（navigability）とを兼ね備え、さらに構造化言語により記述された文書データの操作において、情報の重要度を考慮する新規なパーサの様式を提供し、もって、構造化言語により記述された文書データから、省メモリかつ低ＣＰＵ使用率で高速に、重要度に応じて情報を利用可能とすることができる情報処理装置、情報処理方法、プログラムおよび記録媒体を提供することができる。
【００５１】
なお、情報処理装置としては、上述した実施形態のコンピュータ装置に限定されるものではなく、特定の用途に応じて、パーソナル・コンピュータ、アプリケーション・サーバ、データベース・サーバなどの他の情報処理装置、デジタル複合機、デジタル複写機などの画像形成装置などとして構成することができる。
【００５２】
さらに上記構造化言語としては、ＸＭＬの他、解釈中に更新可能なダイナミックＸＭＬ（Dynamic XML）、ＨＴＭＬ（Hyper Text Markup Language）およびＸＨＴＭＬ（eXtensible HTML）など、如何なる構造化言語を採用することができる。
【００５３】
上記機能は、アセンブラ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）、などのレガシープログラミング言語やオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、ＲＯＭ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、フラッシュメモリ、フレキシブルディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ、ＳＤメモリ、ＭＯなど装置可読な記録媒体に格納して頒布することができる。
【００５４】
以上本発明の特定の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【図面の簡単な説明】
【００５５】
【図１】コンピュータ装置の概略的ハードウェア構成の実施形態を示す図。
【図２】ＸＭＬ文書データの構文解析処理に関するデータフロー図。
【図３】（Ａ）ＸＭＬファイルのデータ構造を一例として示す図、および（Ｂ）ＸＭＬファイルを構文解析する際の解釈の順序を示す図。
【図４】構文解析処理の第１実施形態を示すフローチャート。
【図５】階層Ｎのノードの解釈処理の第１実施形態を示すフローチャート。
【図６】ＸＭＬリソースの第１実施形態の構文解釈処理のシーケンス図。
【図７】構文解析処理の第２実施形態を示すフローチャートである。
【図８】階層Ｎのノードの解釈処理の第２実施形態を示すフローチャート。
【図９】第２実施形態の構文解析処理における優先解釈処理を示すフローチャート。
【図１０】ＸＭＬリソースの第２実施形態の構文解釈処理のシーケンス図。
【図１１】（Ａ）ＸＭＬファイルのデータ構造を一例として示す図、および（Ｂ）ＸＭＬファイルをＳＡＸにて解釈した場合の解釈の順序を示す図。
【符号の説明】
【００５６】
１０…コンピュータ装置、１２…ＭＰＵ、１４…不揮発性メモリ、１６…メモリ、１８…記憶制御用インタフェース、２０…記憶装置、２２…内部バス、２４…インタフェース、２６…入出力装置、２８…ＶＲＡＭ、３０…グラフィック・チップ、３２…ディスプレイ装置、３４…ＮＩＣ、３６…ネットワーク、５０…ＸＭＬパーサ、５２…ユーザ入力部、６０…ホスト・アプリケーション、１００…ＸＭＬリソース、１１０…ＸＭＬ解釈データ
【図１】
0005102067.tif 000002
【図２】
0005102067.tif 000003
【図３】
0005102067.tif 000004
【図４】
0005102067.tif 000005
【図５】
0005102067.tif 000006
【図６】
0005102067.tif 000007
【図７】
0005102067.tif 000008
【図８】
0005102067.tif 000009
【図９】
0005102067.tif 000010
【図１０】
0005102067.tif 000011
【図１１】
0005102067.tif 000012