JP5102067B2 - 情報処理装置、情報処理方法、プログラムおよび記録媒体 - Google Patents

情報処理装置、情報処理方法、プログラムおよび記録媒体 Download PDF

Info

Publication number
JP5102067B2
JP5102067B2 JP2008046413A JP2008046413A JP5102067B2 JP 5102067 B2 JP5102067 B2 JP 5102067B2 JP 2008046413 A JP2008046413 A JP 2008046413A JP 2008046413 A JP2008046413 A JP 2008046413A JP 5102067 B2 JP5102067 B2 JP 5102067B2
Authority
JP
Japan
Prior art keywords
interpretation
node
document data
nodes
importance
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.)
Expired - Fee Related
Application number
JP2008046413A
Other languages
English (en)
Other versions
JP2009205382A (ja
Inventor
クリストフ スーリエ
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2008046413A priority Critical patent/JP5102067B2/ja
Priority to US12/379,711 priority patent/US8601362B2/en
Publication of JP2009205382A publication Critical patent/JP2009205382A/ja
Application granted granted Critical
Publication of JP5102067B2 publication Critical patent/JP5102067B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing

Description

本発明は、構造化言語により記述された文書データの解釈処理に関し、より詳細には、構造化言語により記述された文書データを解釈し情報を抽出するための情報処理装置、情報処理方法、プログラムおよび記録媒体に関する。
近年、インターネットの普及、ウェブ・サービスの発展にともなって、種々のアプリケーションにおける情報を保存または通信するための最も有用な手段のひとつとして、XML(eXtensible Markup Language)などの構造化言語が注目されている。例えば、特開2004−46817号公報(特許文献1)は、データ蓄積装置とコンピュータとのデータ授受の際のコマンド送信および応答データ受信にXMLなどの構造化文書形式を用いる技術を開示している。
そして、XMLで記述された文書データを解釈するために、現在のところ、主に2つの手段が提案されている。第1の手段は、オブジェクトモデル・ベースのDOM(Document Object Model)であり、XMLにより記述された文書データを構文解析して、木構造ネットワークとしてメモリ上に保持し、木構造のノードを経由してナビゲーションすることにより、XMLにより構造化された情報への容易なアクセスを提供する(非特許文献1)。第2の手段は、イベント・ベースのSAX(Simple API for XML)であり、DOMよりも軽量に動作し、取得したままのデータを処理できるため、部分的な文書を扱うことも可能である。一方、SAXは、大規模な文書を扱う際は、実行にかなりの時間を要することとなる。なお、上記DOMやSAXは、API(Application Programming Interface)などとして実装され、上位のホスト・アプリケーションにより利用される。
図11(A)は、XMLファイルのデータ構造を一例として示す図である。一例として、従業員名簿をXML文書データとして蓄積した場合を考えると、各従業員の名前、年齢、性別などを主要ノードとして蓄積し、より詳細な情報、例えば従業員が携わった過去すべてのプロジェクト、その他、該従業員が受けた過去すべての昇進および褒賞、該従業員の月給の履歴などを、主要ノード下位の子ノードとして蓄積することができる。
DOMを用いる場合、XMLファイル全体が解釈され、全従業員に関するすべての情報がメモリ上に保持された後、一度に全ノードに対してアクセス可能な状態となる。しかしながら、DOMは、ファイルに含まれる従業員数が膨大な場合、ファイル全体が解釈されてアクセス可能となるまでに、かなりの時間を要することとなる。一方、SAXは、XML文書データの先頭から順次解釈して行き、要素開始タグや要素終了タグの検出イベントなどをホスト・アプリケーションに通知する。上記の例では、SAXは、ファイルの先頭から順に各従業員名簿のノードを解釈して行き、所定の従業員のデータが解釈されると、直ちに当該所定の従業員の情報(当該従業員についてのすべての情報を含む)にアクセス可能となる。図11(B)は、図11(A)に示すXMLファイルをSAXにて解釈した場合の解釈の順序を示す図である。図11(B)に示すように、SAXは、XMLファイルのデータを先頭から順に処理して行く。
特開2004−46817号公報 W3C Recommendation: Document Object Model Level 3 Core, 7 April 2004.
しかしながら、上述した従来技術では、XML文書データのすべてのノードがフラットに取り扱われ、XML文書データ中のノードの重要度を考慮するものではなかった。上述した従来技術では、すべてのノードは、所定の名前を有し、いくつかの子ノードや、基本的に同一なメソッドおよびプロパティなどを含み得る均質なノードとされる。一方、詳細なデータは不要であっても、蓄積データの全体像、より具体的には上記例では従業員全員の名前リストを、迅速に把握したいという要望がある。しかしながら、上記従来技術のDOMおよびSAXのいずれも、これらの要望に答えられるものではなかった。さらに、ファイルまたはストリームとして入力されるXML文書データ以外にも、ライブ・ストリーム形式のXML文書データを処理させたいという要望があるが、上記従来技術のDOMおよびSAXは、この要望に充分に対応できるものではなかった。
本発明は、上記問題点に鑑みてなされたものであり、SAXが有する短時間にアクセス可能とする特徴と、DOMが有する容易な誘導可能性(navigability)とを兼ね備え、さらに構造化言語により記述された文書データの操作において、情報の重要度を考慮する新規なパーサの様式を提供し、もって、構造化言語により記述された文書データから、省メモリかつ低CPU使用率で高速に、重要度に応じて情報を利用可能とすることができる情報処理装置、情報処理方法、プログラムおよび記録媒体を提供することを目的とする。
本発明では、上記課題を解決するために、構造化言語により記述された文書データの少なくとも一部を記憶手段に記憶し、文書データを構文解析して、該文書データが表現するネットワーク構造上の上位の重要度を有するノードから下位の重要度を有するノードへ、同一の重要度を有する一群のノード毎に解釈対象を進めながら、文書データに含まれる情報を解釈する構成を採用する。
上記構成により、構造化言語により記述された文書データは、その少なくとも一部が記憶手段に記憶されながら、該文書データに含まれる情報の重要度に応じて解釈が進められるため、省メモリかつ低CPU使用率に、重要度の高い情報を可能な限り迅速に利用可能とすることができる解釈処理が実現され、もって構造化文書の利便性を向上させることが可能となる。
また本発明では、上記解釈手段は、指定ノードの優先解釈の指令に応答して、当該指定ノードを基点として、それより下位の重要度を有するノードを優先して解釈を進めることができる。これにより、解釈済みのノードを指定して、その下位の情報を優先的に利用可能とすることができるため、上位アプリケーションやユーザが必要とする情報へ、より効率的に誘導することが可能となる。
さらに本発明では、上記解釈手段は、指定ノードの優先解釈解除の指令に応答して、または指定ノードを基点とした該指定ノードより下位の重要度を有するノードすべての解釈が完了したことに応答して、優先解釈の指令前の解釈対象に処理を復帰させることができる。これにより、優先解釈が終了した後に、通常の解釈処理に自動的に復帰させることができ、効率的な解釈処理が実現される。また本発明では、優先解釈処理の開始と終了をネスト(入れ子)可能に構成することができる。
また本発明では、上記文書データは、木構造のネットワーク構造を表現し、上記重要度は、ノードの該木構造上の階層により規定することができる。上記ノードは、文書データにおいて、要素開始標識および対応する要素終了標識により規定することができる。上記解釈手段は、要素開始標識および要素終了標識の入れ子構造から重要度を決定することができる。上記情報処理装置は、さらに解釈手段に解釈を指令し解釈結果を利用するアプリケーション手段を含み、上記解釈手段は、各ノード毎に解釈結果をアプリケーション手段に通知することができる。
以下、本発明の実施形態を説明するが、本発明の実施形態は、以下の実施形態に限定されるものではない。なお本実施形態では、情報処理装置の一例として、コンピュータ装置10を用いた例を説明する。
図1は、コンピュータ装置10の概略的ハードウェア構成の実施形態を示した図である。コンピュータ装置10は、マイクロプロセッサ・ユニット(MPU)12と、BIOS(Basic Input Output System)を格納する不揮発性メモリ14と、MPU12によるプログラム処理を可能とする作業記憶空間を提供するRAMなどのメモリ16を含んで構成されており、起動時にMPU12は、不揮発性メモリ14からBIOSを読み出してシステム診断を行なうとともに入出力装置26の管理を行っている。
MPU12には、内部バス22を介して記憶制御用インタフェース18に接続され、ハードディスクなどから形成される記憶装置20が、MPU12からの入出力要求に応答してデータの書込または読み出しを実行している。本実施形態では、記憶制御用インタフェース18としては、IDE(Integrated Device Electronics)、ATA(AT Attachment)、シリアルATA、UltraATAなどの規格により、記憶装置20の入出力を管理するインタフェースを使用することもできる。MPU12は、内部バス22を介してUSB、IEEE1164などのシリアルまたはパラレル・インタフェース24を制御して、キーボード、マウス、プリンタなどの入出力装置26と通信して、ユーザからの入力を受け取り、またユーザに対してプリンタなどを介した出力を提供している。
コンピュータ装置10は、さらにVRAM28とグラフィック・チップ30とを含んでおり、MPU12からの指令に応答してビデオ信号を処理し、ディスプレイ装置32へと表示させている。また、MPU12は、内部バス22を介してネットワークI/F(NIC;Network Interface Card)34と通信し、コンピュータ装置10を、ネットワーク36を通して外部と通信させる。本実施形態のコンピュータ装置10は、ネットワーク36を介して他のコンピュータ装置(図示せず)と接続し、他のコンピュータからのXML文書へのアクセス要求を受け取り、応答することもできる。
コンピュータ装置10は、不揮発性メモリ14や記憶装置20、その他、NV−RAM(図示せず)やSDカード(図示せず)などの記憶装置に格納されたプログラム(図示せず)を読み出し、メモリ16のメモリ領域に展開することにより、適切なオペレーティング・システム(OS)のもとで、後述する各機能手段および各処理を実現している。なお、本実施形態では、コンピュータ装置10がUNIX(登録商標)またはAIXまたはLINUX(登録商標)などのアーキテクチャを有している場合であっても、各OSが同様の機能を提供する限り、情報処理装置のアーキテクチャに限定されるものではない。
図2は、XML文書データの構文解析処理に関するデータフロー図である。図2には、XML構文解析を実行するXMLパーサ50が示されている。XMLパーサ50は、ファイルまたはストリームとして入力されるXMLリソース100を参照して、XML文書データを構文解析し、結果をXML解釈データ110として生成する。記録装置20などに格納されていたXMLリソース100は、解釈中、その少なくとも一部がメモリ16に展開される。XML文書データから抽出される情報を利用するホスト・アプリケーション(図示せず)は、構文解析の指令とともに、XMLリソース100のファイル・パスやURI(Uniform Resource Identifier)や入力ストリームなどをXMLパーサ50に引渡し、XMLリソース100の先端から終端までの構文解析の結果であるXML解釈データ110を受け取る。
本実施形態のXMLパーサ50は、XMLリソース100の入力とともに構文解析が指令されると、ノードの重要度に従い、重要度の高いものから低いものへと順に、XML文書データ中に含まれるノードの値および属性を読み出してゆく。なお、上記ノードとは、XML文書データ中、要素開始タグおよび要素終了タグの組み合わせにより規定される個々の要素のことをいい、XML文書データは、個々の要素から構成される木構造ネットワークを表現している。また本実施形態では、上記ノードの重要度を、木構造ネットワークにおけるノードが属する階層に応じて決定することができる。この場合、XMLパーサ50は、ルートノードから下位の階層へ、各階層毎にノードを解釈してゆくこととなる。なお、上記ルートノードとは、XML文書データ中にただ1つ含まれるルート要素に対応するノードをいい、木構造ネットワークの頂点となるノードに対応する。以下の説明では、ルートノードが属する階層を第0階層(N=0)とし、ルートノードを親とするノードが属する階層を第1階層(N=1)とし、階層が下位となるにつれNが増加するものとする。
さらに、XMLパーサ50は、データ長が無制限のストリーム形式(ライブ・ストリームを含む。)のXMLリソース100を取り扱い可能に構成することができる。例えば、リアルタイムに生成される時間依存情報がストリームとして入力され、リアルタイムに解釈する場合、ストリームの開始および終了が明示されないが、XMLパーサ50は、ホスト・アプリケーションによる使用により構文解析処理を開始し、ホスト・アプリケーションからの使用の停止により構文解析処理を終了する。このように、XMLパーサ50は、いつでも容易に停止することができるが、開始あるいは再開時に同期をとることが好ましい。データ長が無制限のストリーム形式のXMLリソース100が入力される場合、XMLパーサ50は、開始後最先に解釈したノードをルートノード直下のノードと見なすように構成することができ、その場合、ホスト・アプリケーションは、XMLパーサ50が各ノードの属する階層を判断できるように、XMLパーサ50の使用を開始する際に、最初にルートノード直下のノードを確実に送信するように構成される。
さらに本実施形態のXMLパーサ50は、上位階層から下位階層へと順に自動的にノードを解釈する自動モードと、上位階層から下位階層へと順にノードを解釈している間に、ユーザ指令やホスト・アプリケーションからの指令に従って、指定ノードを基点とする下位ノードを優先的に解釈する手動モードを有すことができる。本実施形態では、予めまたは構文解析処理中に、入力装置26やNIC34を介したユーザ設定を受けるユーザ入力部52からの要求、またはホスト・アプリケーションの内部処理に従って発行される要求を受信して、モードを切り替えるように構成することができる。
以下、本実施形態のXMLパーサ50が処理するXMLリソース100のデータ構造について、一例を説明する。図3(A)は、XMLファイルのデータ構造を一例として示す図である。なお、図3(A)では、ルート要素の開始タグおよび終了タグの記載が省略され、各要素が属する階層の相違がインデントにより強調されて示されている。図3(A)に示すXMLファイルは、従業員名簿をXML文書データとして蓄積した場合のものに対応し、第1階層の<Employee>ノードに各従業員の名前(name)および年齢(age)を属性として蓄積し、第3階層の<Project>ノードに従業員が携わった過去すべてのプロジェクトのプロジェクト名(name)、開始年月日(start)および終了年月日(stop)を属性として蓄積し、該第3階層の<Project>ノードの親要素および第1階層の<Employee>ノードの子要素として第2階層の<Projects>ノードを含んで構成されている。
図3(B)は、図3(A)に示すXMLファイルを、本実施形態のXMLパーサで構文解析する際の解釈の順序を示す図である。図3(B)に示すように、本実施形態のXMLパーサ50は、第1階層の<Employee>ノードすべてを先ず解釈し、次いで、第2階層の<Projects>ノードすべてを解釈し、最後に第3階層の<Project>ノードを解釈するといった順に、上位階層から下位階層へと解釈の対象を進めてゆく。以下、構文解析処理の詳細について説明する。
図4は、XMLパーサが実行する構文解析処理の第1実施形態を示すフローチャートである。図4に示す処理は、例えばホスト・アプリケーションからのXML文書データの構文解釈処理開始の指令に応答して、ステップS100から開始される。続いてステップS101では、ルートノード直下の第1階層(N=1)のノードを解釈対象に設定し、ステップS102で、現在の解釈対象である階層Nのノード全体の解釈処理を実行する。なお、階層Nノード全体の解釈処理の詳細については後述する。
階層Nノード全体の解釈処理が完了した後、ステップS103では、現在対象となっていた階層Nの下位に次階層が存在するか否かを判定する。なお、ステップS103の判定は、例えば、次階層(N+1)に属するノードを検索し、少なくとも1つのノードが検索されたか否かを判定することにより行なうことができる。この場合、少なくとも1つのノードが検索された場合には「次階層が存在する」と判定され、検索されなかった場合には「次階層が存在しない」と判定されることとなる。
ステップS103で、次階層が存在しないと判定された場合(NO)には、ステップS104へ処理を分岐させ、構文解析処理を完了させる。一方、ステップS103で、次階層が存在すると判定された場合(YES)には、ステップS105へ処理を分岐させ、解釈対象を次階層(N=N+1)へ進め、さらにステップS102へ処理を分岐させ、処理を繰り返させる。図4に示した処理ルーチンでは、XML文書データ中の木構造ネットワークにおいて、ルートノード直下の第1階層から、木構造ネットワークの末端の最下位階層まで、各階層毎に解釈処理が実施されてゆくこととなる。なお、すべての階層につきすべてのノードの解釈が完了した際には、XMLパーサ50は、コールバック関数を呼び出して、入力ストリームをクローズ可能である旨をホスト・アプリケーションに通知し、メモリ16およびMPU12の使用を解放させることができる。
以下、階層Nノード全体の解釈処理の詳細を説明する。図5は、XMLパーサが実行する階層Nのノードの解釈処理の第1実施形態を示すフローチャートである。図5に示す処理は、図4に示したステップS102の処理により呼び出され、ステップS200から開始される。続いてステップS201では、階層Nのノードを検索する。なお、階層Nに属するノードの検索は、例えば、XML文書データの先頭または前回の検索位置から処理を開始し、要素開始タグにより規定されるノードを検出し、要素開始タグおよび要素終了タグの入れ子構造から、該検出されたノードが属する階層が階層Nであるか否かを判定することにより行なうことができる。
続いてステップS202では、検索の結果、階層Nに属するノードが検索されたか否かを判定する。ステップS202で、階層Nに属するノードが検索された場合(YES)には、ステップS203へ処理を分岐させる。ステップS203では、検索されたノードの値および属性を読み出して、ステップS204で、該ノードの値および属性を含む階層NのXML解析データ110をホスト・アプリケーションに通知し、ステップS201へ処理を戻し、引き続いて対象階層Nに属する次ノードを検索させる。
一方、ステップS202で、階層Nに属するノードが検索されずにデータの終端に至った場合(NO)には、これ以上当該階層Nに属するノードがデータ中に含まれないため、処理をステップS205へ分岐させ、当該処理ルーチンを終了させ、図4に示す処理フローに制御を戻す。本実施形態の構文解釈処理では、XMLパーサ50がひとつのノードに関するすべての属性および値を検出する毎に、コールバック関数を呼び出してホスト・アプリケーションに通知するため、非同期ストリームに対して適用可能である。ホスト・アプリケーションは、このコールバック関数の呼び出しにより、検索されたノードの値および属性へアクセス可能とされる。
図6は、本実施形態のXMLパーサによるXMLリソースの第1実施形態の構文解釈処理のシーケンス図を示す。図6には、ホスト・アプリケーション60とXMLパーサ50とのデータ交換が示されている。ホスト・アプリケーション60は、先ずステップS300で、XMLリソース100をXMLパーサに引き渡すとともに、該リソースの構文解析処理を指令する。指令を受けたXMLパーサ50は、構文解析処理を開始し、ステップS301で、先ず第1階層を解釈して、解釈データ110をホスト・アプリケーション60に順次通知して行く。第1階層の解釈が完了した後、ステップS302でXMLパーサ50は、第2階層を解釈して解釈データをホスト・アプリケーション60に通知し、ステップS303で、第3階層を解釈して、解釈データをホスト・アプリケーション60に通知する。ホスト・アプリケーション60は、受け取った解釈データに基づいて、例えばブラウザ上に表示させることができる。
図4〜図6を参照して説明した処理により、重要度が高いノードから解釈され、該重要度の高いノードが迅速にホスト・アプリケーションによりアクセス可能となる。例えば、図3(A)に示した従業員名簿が記述されたXMLファイルでは、重要度が高い第1階層の<Employee>ノードが先ず解釈対象とされるため、ホスト・アプリケーションは、従業員の名前(name)や年齢(age)にアクセス可能となり、従業員全体の一覧を早期に得てディスプレイ装置32に表示させることが可能となる。つまり、本実施形態のXMLパーサによれば、XML文書データ全体が解釈される前に、重要度の高い情報からアクセス可能とされ、重要度の高い情報を高速に抽出することが可能となる。本実施形態のXMLパーサ50は、DOMのように木構造ネットワーク全体をメモリ上に保持する必要が無いため、省メモリおよび低CPU使用率にて動作することが可能である。また本実施形態のXMLパーサ50は、非同期的に処理を行なうため、非同期ストリームを取り扱うことが可能とされる。
上述まで図4〜図6を参照し、上位階層から下位階層へと順に自動的にノードを解釈してゆく自動モードにおける処理フローを説明してきた。以下に説明する第2実施形態の構文解析処理では、上位階層から下位階層へと解釈対象を進行させている間に、指令に応じて指定ノードMを基点とする下位ノードを優先的に解釈することが可能な手動モードをサポートする。
第2実施形態の構文解析処理では、構文解析中に、指定ノードMの下位ノードの優先解釈を指令するコマンド(以下、ENTERコマンドとして参照する。)により、指定ノードMを基点とした下位ノードを優先的に解釈を進める優先解釈処理を実行させることができる。この場合、現在進行中であった上位階層から下位階層への通常の解釈処理を、現在の対象位置をメモリ16に保持して、一時中断させることができる。さらに第2実施形態では、上記優先解釈中、当該優先解釈の解除を指令するコマンド(以下、EXITコマンドとして参照する。)、または指定ノードMの全下位ノードの解釈完了に応答して、優先解釈を終了させ、ENTERコマンド発行時の対象位置に処理を戻し、通常の解釈処理に復帰させることができる。なお、他の実施形態では、通常の解釈処理を中断せずに、優先解釈処理を優先させつつも通常の解釈処理とともに並列処理するよう構成することもできる。ホスト・アプリケーションは、ユーザ指令または該ホスト・アプリケーションの内部処理の結果に応答して、ENTERコマンドおよびEXITコマンドを発行できる。
図7は、XMLパーサが実行する構文解析処理の第2実施形態を示すフローチャートである。図7に示す処理は、例えば構文解釈処理開始の指令に応答して、ステップS400から開始される。ステップS401では、第1階層(N=1)のノードを解釈対象に設定し、ステップS402で、指定ノードMにルートノードを指定して、現在の解釈対象である階層Nのルートノード下位の解釈処理を実行する。なお、階層Nの指定ノードMの下位ノードの解釈処理の詳細については後述する。
階層Nのルートノード下位の解釈処理が完了した後、ステップS403では、ルートノード下位において、現在対象であった階層Nに少なくとも1つのノードが存在したか否かを判定する。ステップS403で、1つもノードが存在しないと判定された場合(NO)には、ステップS404へ処理を分岐させ、構文解析処理を完了させる。一方、ステップS403で、ルートノード下位において階層Nに、少なくとも1つのノードが存在すると判定された場合(YES)には、ステップS405へ処理を分岐させ、解釈対象を次階層(N=N+1)へ進め、さらにステップS402へ処理を分岐させ、処理を繰り返させる。図7に示した処理ルーチンでは、第1階層からXML文書データ中の最下位層まで、各階層毎に、ノード全体の解釈処理が実施されてゆくこととなる。
以下、階層Nの指定ノードM下位の解釈処理の詳細を説明する。図8は、XMLパーサが実行する階層Nのノードの解釈処理の第2実施形態を示すフローチャートである。図8に示す処理は、図7に示したステップS402の処理または後述の図9に示すステップS603の処理により呼び出され、ステップS500から開始する。なお、図7に示したステップS402の処理により呼び出される場合は、指定ノードはルートノード、対象階層は階層Nである。後述の図9に示すステップS603の処理により呼び出される場合には、指定ノードおよび対象階層は、該ステップS603の処理で指定されたノードM2および階層N2である。
ステップS501では、優先解釈を指令するENTERコマンドが発行されたか否かを判定する。ステップS501で、ENTERコマンドが発行されていないと判定された場合(NO)には、ステップS502へ処理を分岐させ、指定ノードM下位において、階層Nのノードを検索する。ステップS503では、検索の結果、指定ノードMを基点とする下位において、階層Nに属するノードが検索されたか否かを判定する。ステップS503で、階層Nに属する指定ノードM下位のノードが検索されたと判定された場合(YES)には、ステップS504へ処理を分岐させる。ステップS504では、検索されたノードの値および属性を読み出して、ステップS505で、ホスト・アプリケーションに階層Nの解析データ110を通知し、ステップS501へ処理を戻し、引き続いて指定ノードM下位において、階層Nに属する次ノードを検索させる。
一方、ステップS503で、階層Nに属する指定ノードM下位のノードが検索されずに指定ノードMの要素終了タグに至った場合(NO)には、これ以上、該階層Nに属する指定ノードMの下位ノードが存在しないため、処理をステップS506へ分岐させ、当該処理ルーチンを終了させ、図7または図9に示す、当該図8の処理の呼び出し元のルーチンに制御を戻す。
上記ステップS501で、ENTERコマンドが発行されたと判定された場合(YES)には、ステップS507へ処理を分岐させる。ステップS507では、通常の解釈処理を一時中断し、中断時の対象位置をメモリ16上に保持して、ENTERコマンドの引数として指定されるノードM2の優先解釈処理を実行し、優先解釈処理の完了を待って、ステップS501へ処理を戻す。以下、指定ノードM2を基点とした優先解釈処理を説明する。
図9は、第2実施形態の構文解析処理における優先解釈処理を示すフローチャートである。図9に示す処理は、図8に示したステップS507の処理により呼び出され、ステップS600から開始される。ステップS601では、指定ノードM2が属する階層の下位階層N2(N2=n(M2)+1:ここで指定ノードM2が属する階層がn(M2)である。)のノードを解釈対象に設定する。続いてステップS602では、優先解釈の解除を指令するEXITコマンドが発行されたか否かを判定する。ステップS602で、EXITコマンドが発行されていないと判定された場合(NO)には、ステップS603へ処理を分岐させる。ステップS603では、現在の解釈対象である階層N2の指定ノードM2下位の解釈処理を実行する。なお、ステップS603では、図8に示す処理を再帰的に呼び出し、階層N2の指定ノードM2下位の解釈処理を実行させる。すなわち、指定ノードの優先解釈中、さらにENTERコマンドによる他の指定ノードの優先解釈が指令可能な構成とされている。
階層N2の指定ノードM2下位の解釈処理が完了した後、ステップS604では、指定ノードM2下位において、階層N2に少なくとも1つのノードが存在したか否かを判定する。ステップS604で、1つもノードが存在しないと判定された場合(NO)には、優先解釈が完了したことを意味するため、ステップS605へ処理を分岐させ、優先解釈処理を終了させ、図8に示す処理ルーチンに制御を移す。一方、ステップS604で、指定ノードM2下位において、階層N2に少なくとも1つのノードが存在すると判定された場合(YES)には、ステップS606へ処理を分岐させ、解釈対象を次階層(N2=N2+1)へ進め、さらにステップS602へ処理を分岐させ、処理を繰り返させる。図9に示した処理ルーチンでは、指定ノードM2直下の階層から、指定ノードM2を基点とする末端の階層まで、各階層毎に指定ノードM2下位の全ノードの解釈処理が実施されてゆくこととなる。
上記ステップS602で、EXITコマンドが発行されたと判定された場合(YES)には、ステップS605へ処理を分岐させ、優先解釈処理を途中で終了させ、図8に示す処理ルーチンに制御を移す。
上記優先解釈の開始および終了(優先解釈の解除または完了による)は、ネスト(入れ子)可能とされている。例えば、第1階層のノードXを優先解釈中に、さらにノードX下位の第2階層のノードY下位を優先解釈するよう指令できる。この場合、第2階層のノードY下位の優先解釈が終了した後、第1階層のノードX下位を優先解釈に復帰し、さらに第1階層のノードX下位の優先解釈が終了した後、通常の解釈処理に復帰することとなる。
図10は、XMLパーサによるXMLリソースの第2実施形態の構文解釈処理のシーケンス図を示す。なお、図10(A)は、ENTERコマンドにより第1階層のノード2の優先解釈が指令された場合のものに対応し、図10(B)は、ENTERコマンドにより第1階層のノード2の優先解釈が指定され、続いてEXITコマンドにより優先解釈の解除が指令された場合のものに対応する。
図10(A)に示すシーケンスでは、ホスト・アプリケーション60は、ステップS700で、先ず、XMLリソース100をXMLパーサ50に引き渡すとともに、該リソースの構文解析処理を指令する。指令を受けたXMLパーサ50は、構文解析処理を開始し、ステップS701で、先ず第1階層を解釈して、第1階層の解釈データをホスト・アプリケーションに順次通知して行く。第1階層の解釈中、ステップS702でノード2を指定するENTERコマンドが発行されると、XMLパーサ50は、第1階層の解釈を中断し、ステップS703で、ノード2下位の第2階層を解釈し、ノード2下位の第2階層の解釈データをホスト・アプリケーションに順次通知する。続いて、XMLパーサ50は、ステップS704で、ノード2下位の第3階層を解釈し、ノード2下位の第3階層の解釈データをホスト・アプリケーションに順次通知する。
ノード2を基点とする末端の階層までの解釈が完了した後、ステップS705でXMLパーサ50は、ENTERコマンドが発行された時点の位置に解釈対象を戻し、第1階層につき残りの解釈を実行させ、解釈データをホスト・アプリケーション60に通知する。引き続いてステップS706では、XMLパーサ50は、第2階層を解釈して解釈データをホスト・アプリケーションに通知し、ステップS707で、第3階層を解釈して解釈データをホスト・アプリケーションに通知する。なお、上記例では、ノード2下位のノードが重複して解釈される可能性があるが、特定の用途に依存する搭載メモリ容量に応じて、優先解釈時のデータをメモリ16上にキャッシュしておき、重複する処理を省略する構成とすることもできる。
図10(B)に示すシーケンスでは、ホスト・アプリケーション60は、ステップS800で、先ず、XMLリソース100をXMLパーサ50に引き渡すとともに、該リソースの構文解析処理を指令する。指令を受けたXMLパーサ50は、構文解析処理を開始し、ステップS801で、先ず第1階層を解釈して、第1階層の解釈データをホスト・アプリケーションに順次通知する。第1階層の解釈中、ステップS802で、ノード2を指定するENTERコマンドが発行されると、XMLパーサ50は、第1階層の解釈を中断して、ステップS803で、ノード2下位の第2階層を優先解釈し、ノード2下位の第2階層の解釈データをホスト・アプリケーションに順次通知する。ノード2下位の第2階層を解釈中、ステップS804で、EXITコマンドによりノード2下位の優先解釈の解除が指令されると、優先解釈を中断および終了させ、ステップS805で、XMLパーサ50は、ENTERコマンドが呼び出された時点の位置に解釈対象を戻し、第1階層につき残りの解釈を実行させ、解釈データをホスト・アプリケーション60に通知する。引き続いてステップS806では、XMLパーサ50は、第2階層全体を解釈して解釈データをホスト・アプリケーションに通知し、ステップS807で、第3階層全体を解釈し解釈データをホスト・アプリケーションに通知する。
図7〜図10を参照して説明した処理により、重要度が高いノードが優先的に解釈され、該重要度の高いノードが優先的にホスト・アプリケーションによりアクセス可能となるとともに、解釈済みの結果に基づいて、柔軟に解釈済ノードを基点として下位構造へ解釈対象を誘導することが可能となる。例えば、図3(A)に示した従業員名簿が記述されたXMLファイルでは、重要度が高い第1階層の<Employee>ノードが先ず解釈対象とされ、ホスト・アプリケーションは、従業員の名前(name)や年齢(age)にアクセス可能となるが、この際に、解釈済みの特定従業員を指定する優先解釈を実施することにより、当該特定従業員の詳細データを優先的に解釈させてアクセス可能とすることができる。
すなわち、第2実施形態の構文解析処理によれば、XML文書データ全体を解釈する前に、重要度の高い情報からアクセス可能とされ、さらに解釈済みの情報を基点としてその下位構造を優先的に解釈させることが可能となり、もって、ユーザやホスト・アプリケーションにとって重要な情報に、より迅速にナビゲートすることが可能となる。第2実施形態の構文解析処理によれば、XMLパーサは、省メモリおよび低CPU使用量にて実行することが可能であり、かつ、DOMが有するような高い容易な誘導可能性(Navigability)を実現することができる。
以上説明したように本実施形態によれば、SAXが有する短時間にアクセス可能とする特徴と、DOMが有する容易な誘導可能性(navigability)とを兼ね備え、さらに構造化言語により記述された文書データの操作において、情報の重要度を考慮する新規なパーサの様式を提供し、もって、構造化言語により記述された文書データから、省メモリかつ低CPU使用率で高速に、重要度に応じて情報を利用可能とすることができる情報処理装置、情報処理方法、プログラムおよび記録媒体を提供することができる。
なお、情報処理装置としては、上述した実施形態のコンピュータ装置に限定されるものではなく、特定の用途に応じて、パーソナル・コンピュータ、アプリケーション・サーバ、データベース・サーバなどの他の情報処理装置、デジタル複合機、デジタル複写機などの画像形成装置などとして構成することができる。
さらに上記構造化言語としては、XMLの他、解釈中に更新可能なダイナミックXML(Dynamic XML)、HTML(Hyper Text Markup Language)およびXHTML(eXtensible HTML)など、如何なる構造化言語を採用することができる。
上記機能は、アセンブラ、C、C++、C#、Java(登録商標)、などのレガシープログラミング言語やオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、ROM、EEPROM、EPROM、フラッシュメモリ、フレキシブルディスク、CD−ROM、CD−RW、DVD、SDメモリ、MOなど装置可読な記録媒体に格納して頒布することができる。
以上本発明の特定の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
コンピュータ装置の概略的ハードウェア構成の実施形態を示す図。 XML文書データの構文解析処理に関するデータフロー図。 (A)XMLファイルのデータ構造を一例として示す図、および(B)XMLファイルを構文解析する際の解釈の順序を示す図。 構文解析処理の第1実施形態を示すフローチャート。 階層Nのノードの解釈処理の第1実施形態を示すフローチャート。 XMLリソースの第1実施形態の構文解釈処理のシーケンス図。 構文解析処理の第2実施形態を示すフローチャートである。 階層Nのノードの解釈処理の第2実施形態を示すフローチャート。 第2実施形態の構文解析処理における優先解釈処理を示すフローチャート。 XMLリソースの第2実施形態の構文解釈処理のシーケンス図。 (A)XMLファイルのデータ構造を一例として示す図、および(B)XMLファイルをSAXにて解釈した場合の解釈の順序を示す図。
符号の説明
10…コンピュータ装置、12…MPU、14…不揮発性メモリ、16…メモリ、18…記憶制御用インタフェース、20…記憶装置、22…内部バス、24…インタフェース、26…入出力装置、28…VRAM、30…グラフィック・チップ、32…ディスプレイ装置、34…NIC、36…ネットワーク、50…XMLパーサ、52…ユーザ入力部、60…ホスト・アプリケーション、100…XMLリソース、110…XML解釈データ

Claims (12)

  1. 構造化言語により記述された文書データを処理する情報処理装置であって、
    文書データの少なくとも一部を記憶する記憶手段と、
    前記文書データを構文解析して、該文書データが表現するネットワーク構造上の上位の重要度を有するノードの要素から下位の重要度を有するノードの要素へ、同一の重要度を有する一群のノードの要素毎に解釈対象を進めながら、前記文書データに含まれる各要素の情報を抽出する解釈手段と
    を含み、前記解釈手段は、
    解釈済みのノードのうちから指定された指定ノード下の優先解釈の指令に応答して、解釈対象の位置を保存して、前記指定ノードより下位の重要度を有するノードの要素へ解釈対象を進め、
    前記優先解釈の終了に応答して、保存された前記解釈対象の位置に基づき前記指令前の解釈対象に処理を復帰させる、情報処理装置。
  2. 前記解釈手段は、指定ノードの優先解釈解除の指令に応答して、前記優先解釈を終了させる、請求項に記載の情報処理装置。
  3. 前記解釈手段は、前記指定ノードより下位の重要度を有するノードの要素すべての解釈が完了したことに応答して、前記優先解釈を終了させる、請求項1または2に記載の情報処理装置。
  4. 前記文書データは、木構造のネットワーク構造を表現し、前記重要度は、ノードの該木構造上の階層により規定される、請求項1〜のいずれか1項に記載の情報処理装置。
  5. 前記文書データは、XML文書またはダイナミックXML文書のファイル、ストリームまたはライブ・ストリームである、請求項1〜のいずれか1項に記載の情報処理装置。
  6. 構造化言語により記述された文書データを処理する情報処理方法であって、
    コンピュータが、文書データの少なくとも一部を記憶手段に記憶するステップと、
    コンピュータが、前記文書データを前記記憶手段から読み出して構文解析し、該文書データが表現するネットワーク構造上の上位の重要度を有する一群のノードの要素を解釈するステップと、
    コンピュータが、前記上位の重要度を有する一群のノードより下位の重要度を有するノードの要素が存在するか否かを判定するステップと、
    コンピュータが、下位のノードの要素が存在した場合に、前記文書データを構文解析して、前記上位の重要度を有する一群のノードより下位の重要度を有する一群のノードの要素を解釈するステップと、
    コンピュータが、解釈済みのノードのうちから指定された指定ノード下の優先解釈の指令に応答して、解釈対象の位置を保存して、前記指定ノードより下位の重要度を有するノードの要素へ解釈対象を進めるステップと、
    コンピュータが、前記優先解釈の終了に応答して、保存された前記解釈対象の位置に基づき前記指令前の解釈対象に処理を復帰させるステップと
    を含む、情報処理方法。
  7. 前記復帰させるステップは、指定ノードの優先解釈解除の指令に応答して、または、前記指定ノードより下位の重要度を有するノードの要素すべての解釈が完了したことに応答して、前記優先解釈を終了させるステップを含む、請求項に記載の情報処理方法。
  8. 構造化言語により記述された文書データを処理するためのプログラムであって、コンピュータを
    文書データの少なくとも一部を記憶する記憶手段、および
    前記文書データを構文解析して、該文書データが表現するネットワーク構造上の上位の重要度を有するノードの要素から下位の重要度を有するノードの要素へ、同一の重要度を有する一群のノードの要素毎に解釈対象を進めながら、前記文書データに含まれる各要素の情報を抽出する解釈手段であって、解釈済みのノードのうちから指定された指定ノード下の優先解釈の指令に応答して、解釈対象の位置を保存して、前記指定ノードより下位の重要度を有するノードの要素へ解釈対象を進め、前記優先解釈の終了に応答して、保存された前記解釈対象の位置に基づき前記指令前の解釈対象に処理を復帰させる、当該解釈手段
    として機能させるためのプログラム
  9. 前記解釈手段は、指定ノードの優先解釈解除の指令に応答して、または、前記指定ノードより下位の重要度を有するノードの要素すべての解釈が完了したことに応答して、前記優先解釈を終了させる、請求項に記載のプログラム。
  10. 前記文書データは、木構造のネットワーク構造を表現し、前記重要度は、ノードの該木構造上の階層により規定される、請求項8または9に記載のプログラム。
  11. 前記文書データは、XML文書またはダイナミックXML文書のファイル、ストリームまたはライブ・ストリームである、請求項8〜10のいずれか1項に記載のプログラム。
  12. 請求項8〜11のいずれか1項に記載のプログラムを記録したコンピュータ可読な記録媒体。
JP2008046413A 2008-02-27 2008-02-27 情報処理装置、情報処理方法、プログラムおよび記録媒体 Expired - Fee Related JP5102067B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008046413A JP5102067B2 (ja) 2008-02-27 2008-02-27 情報処理装置、情報処理方法、プログラムおよび記録媒体
US12/379,711 US8601362B2 (en) 2008-02-27 2009-02-27 Information processing apparatus, information processing method, and computer-readable recording medium storing an information processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008046413A JP5102067B2 (ja) 2008-02-27 2008-02-27 情報処理装置、情報処理方法、プログラムおよび記録媒体

Publications (2)

Publication Number Publication Date
JP2009205382A JP2009205382A (ja) 2009-09-10
JP5102067B2 true JP5102067B2 (ja) 2012-12-19

Family

ID=41147581

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008046413A Expired - Fee Related JP5102067B2 (ja) 2008-02-27 2008-02-27 情報処理装置、情報処理方法、プログラムおよび記録媒体

Country Status (2)

Country Link
US (1) US8601362B2 (ja)
JP (1) JP5102067B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102071335B1 (ko) * 2015-06-11 2020-03-02 한국전자통신연구원 워크플로우 모델 생성 방법과 워크플로우 모델 실행 방법 및 장치
CN112740635B (zh) * 2019-02-21 2022-04-05 华为技术有限公司 报文解析的方法、数据发送端、数据接收端和系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5893131A (en) * 1996-12-23 1999-04-06 Kornfeld; William Method and apparatus for parsing data
JP2002032364A (ja) * 2000-07-14 2002-01-31 Ricoh Co Ltd 文書情報処理方法、文書情報処理装置及び記録媒体
JP2004046817A (ja) 2002-05-23 2004-02-12 Ricoh Co Ltd プログラム、記憶媒体、データ管理装置及びデータ管理システム
KR100472458B1 (ko) * 2002-06-26 2005-03-10 삼성전자주식회사 외부 xml유효성 검증 장치를 이용하는 xml파싱 장치및 방법
US7124147B2 (en) * 2003-04-29 2006-10-17 Hewlett-Packard Development Company, L.P. Data structures related to documents, and querying such data structures
JP2005196638A (ja) * 2004-01-09 2005-07-21 Seiko Epson Corp 構造化文書処理装置及び構造化文書処理方法ならびにそのプログラム
JP2005242427A (ja) * 2004-02-24 2005-09-08 Sony Corp 情報処理装置および方法、並びにプログラム
US7818666B2 (en) * 2005-01-27 2010-10-19 Symyx Solutions, Inc. Parsing, evaluating leaf, and branch nodes, and navigating the nodes based on the evaluation
US7962919B2 (en) * 2006-03-29 2011-06-14 Intel Corporation Apparatus and method for modifying an initial event queue for extending an XML processor's feature set

Also Published As

Publication number Publication date
US8601362B2 (en) 2013-12-03
JP2009205382A (ja) 2009-09-10
US20090300477A1 (en) 2009-12-03

Similar Documents

Publication Publication Date Title
US20110258538A1 (en) Capturing DOM Modifications Mediated by Decoupled Change Mechanism
US20160062707A1 (en) Information processing apparatus, and print control method
JP2004127133A (ja) 画像形成装置及び画像形成制御方法
JP2007264792A (ja) 音声ブラウザプログラム
CN102033723A (zh) 信息处理装置及其方法
WO2007105577A1 (en) Printing controller, gui display method, printer driver, and recording medium
JPH09222974A (ja) 言語解釈表示方法とその方法を用いた装置およびシステム
JP2005234837A (ja) 構造化文書処理方法、構造化文書処理システム及びそのプログラム
US20110035433A1 (en) Webpage display method, computer system, and program
JP3905851B2 (ja) 構造化文書の分割方法及びプログラム
JP5102067B2 (ja) 情報処理装置、情報処理方法、プログラムおよび記録媒体
CN112433995B (zh) 文件格式转换方法、系统、计算机设备及存储介质
CN110020279B (zh) 页面数据处理方法、装置及存储介质
US20090259931A1 (en) Table generating method and table generating apparatus
JP2008305021A (ja) 情報処理装置及びアプリケーション管理方法
JP2009087289A (ja) ドキュメント作成管理システム、端末、サーバ、ドキュメント作成管理方法およびそのプログラム
JP2005063243A (ja) 情報処理装置、プログラム及びコンピュータ読み取り可能な記録媒体
JP2018514843A (ja) スタイルのための宣言型カスケード再順序付け
JPWO2005101210A1 (ja) データ解析装置およびデータ解析プログラム
JP4184155B2 (ja) データ処理装置、データ処理方法、データ処理プログラム、およびデータ処理プログラムを記録したコンピュータ読取可能な記録媒体
JP2010128527A (ja) 文書表示システム、文書表示方法およびプログラム
JP5012760B2 (ja) 情報処理装置
JP2004145736A (ja) 文字認識装置および文字認識データ出力方法およびプログラムおよび記録媒体
JP4265300B2 (ja) 情報処理装置及び情報処理方法
JP4411994B2 (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100702

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120815

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120904

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120927

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151005

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5102067

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees