(57)【要約】【課題】構造化文書の符号化に関するオブジェクト（例えば符号化テーブル等）に、サイズの大きなデータが含まれている場合でも、少ないメモリリソースで解析できるようにすることを目的とする。【解決手段】符号と値と値に関する属性値とが対応付けられた値データを複数含む値オブジェクトの値データの属性値に基づいて属性値に対応する値を含む値データをメモリに記憶するか否かを判定する記憶判定手段と、記憶判定手段で属性値に対応する値を含む値データをメモリに記憶しないと判定された場合には値を含まない値データをメモリ内のメモリ内値オブジェクトに記憶する記憶手段とを有することによって課題を解決する。【選択図】図８
2010250434.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書に含まれる構造情報と値とを符号化して作成された符号化文書に含まれる符号と、前記値と、前記値に関する属性値と、が対応付けられた値データを複数含む値オブジェクトの前記値データの前記属性値に基づいて、前記属性値に対応する値を含む値データをメモリに記憶するか否かを判定する記憶判定手段と、
前記記憶判定手段で前記属性値に対応する値を含む値データをメモリに記憶すると判定された場合には、前記値を含む値データをメモリ内のメモリ内値オブジェクトに記憶し、前記記憶判定手段で前記属性値に対応する値を含む値データをメモリに記憶しないと判定された場合には、前記値を含まない値データをメモリ内のメモリ内値オブジェクトに記憶する記憶手段と、
を有する、情報処理装置。
【請求項２】
前記メモリ内値オブジェクトの値データに値が含まれているか否かを判定する値判定手段と、
前記値判定手段で前記メモリ内値オブジェクトの値データに値が含まれていると判定された場合には、前記値をアプリケーションに返し、前記値判定手段で前記メモリ内値オブジェクトの値データに値が含まれていないと判定された場合には、前記値データに含まれる符号及び属性値をアプリケーションに返す通知手段と、
を更に有する、請求項１記載の情報処理装置。
【請求項３】
前記アプリケーションから前記符号が渡された場合、前記値オブジェクトを解析し、前記アプリケーションから渡された符号と一致する符号を含む値データの値を前記アプリケーションに渡す値取得手段を更に有する、請求項２記載の情報処理装置。
【請求項４】
前記記憶手段は、値データを前記メモリ内値オブジェクトに記憶する際に、値のオフセットを含めて前記値データに記憶し、
前記メモリ内値オブジェクトの値データに値が含まれているか否かを判定する値判定手段と、
前記値判定手段で前記メモリ内値オブジェクトの値データに値が含まれていると判定された場合には、前記値をアプリケーションに返し、前記値判定手段で前記メモリ内値オブジェクトの値データに値が含まれていないと判定された場合には、前記値データに含まれる属性値及びオフセットをアプリケーションに返す通知手段と、
を更に有する、請求項１記載の情報処理装置。
【請求項５】
前記アプリケーションから前記属性値及び前記オフセットが渡された場合、前記属性値及び前記オフセットに基づいて該当する値を前記値オブジェクトから取得し、取得した値を前記アプリケーションに渡す値取得手段を更に有する、請求項４記載の情報処理装置。
【請求項６】
前記値に関する属性値は、前記値のサイズである、請求項１乃至５何れか１項記載の情報処理装置。
【請求項７】
前記値に関する属性値は、前記値の種類情報である、請求項１記載の情報処理装置。
【請求項８】
構造化文書に含まれる構造情報と値とを符号化して作成された符号化文書に含まれる符号と、前記値と、前記値に関する属性値と、が対応付けられた値データを複数含む値オブジェクトの前記値データの前記属性値に基づいて、前記属性値に対応する値を含む値データをメモリに記憶するか否かを判定する記憶判定ステップと、
前記記憶判定ステップで前記属性値に対応する値を含む値データをメモリに記憶すると判定された場合には、前記値を含む値データをメモリ内のメモリ内値オブジェクトに記憶し、前記記憶判定ステップで前記属性値に対応する値を含む値データをメモリに記憶しないと判定された場合には、前記値を含まない値データをメモリ内のメモリ内値オブジェクトに記憶する記憶ステップと、
を有する、情報処理方法。
【請求項９】
コンピュータを、
構造化文書に含まれる構造情報と値とを符号化して作成された符号化文書に含まれる符号と、前記値と、前記値に関する属性値と、が対応付けられた値データを複数含む値オブジェクトの前記値データの前記属性値に基づいて、前記属性値に対応する値を含む値データをメモリに記憶するか否かを判定する記憶判定手段と、
前記記憶判定手段で前記属性値に対応する値を含む値データをメモリに記憶すると判定された場合には、前記値を含む値データをメモリ内のメモリ内値オブジェクトに記憶し、前記記憶判定手段で前記属性値に対応する値を含む値データをメモリに記憶しないと判定された場合には、前記値を含まない値データをメモリ内のメモリ内値オブジェクトに記憶する記憶手段と、
して機能させるプログラム。
【請求項１０】
請求項９記載のプログラムを記憶した、コンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、プログラム及び記憶媒体に関する。
【背景技術】
【０００２】
これまで、ＸＭＬパーサが解析するＸＭＬデータのフォーマットは、一般的にテキスト形式であった。しかし、ＸＭＬデータは、データ構造を表現するために冗長なデータを必要とし、コンピュータが読み書きするのに時間がかかるという問題があるため、近年バイナリＸＭＬ技術が注目されている。バイナリＸＭＬ技術としては、例えば、Ｗ３Ｃ標準のＥｆｆｉｃｉｅｎｔ  ＸＭＬ  Ｉｎｔｅｒｃｈａｎｇｅや、ＩＳＯ標準のＦａｓｔ  Ｉｎｆｏｓｅｔが挙げられる。これらの技術を用いることによって、ＸＭＬデータに含まれる要素名や属性名等の各ボキャブラリを、ＸＭＬデータ内の出現順に番号を振って符号化し、データサイズを小さくすることができる。符号と各ボキャブラリとの対応を示す表は符号化テーブルと呼ばれる。これらのバイナリＸＭＬデータは、従来のテキスト形式のＸＭＬデータに比べて、高速に読み書きすることができる。
【０００３】
また、属性値や要素内容を従来のような文字列型のデータではなく、整数型、浮動小数点型や、独自形式の圧縮アルゴリズムを用いてエンコードすることにより、データサイズを更に小さくすることができる。また、それらデータを解析する際には、従来のようなアプリケーションによる文字列データから数値データへの変換処理が必要なくなるので、解析全体にかかる処理時間を更に短くすることができる。
また、ＫＤＤＩのＸＥＵＳは、属性値や要素内容に、カンマ等で区切られた数値の配列に対しては、各数値をそれぞれ符号化することによって、ＸＭＬデータを効率的に圧縮することができる。
また、同一の構造を持った複数のＸＭＬデータについて、タグ名をリスト化した共通の１つのタグリストを作成し、それら各タグ名を符号化することで圧縮を行うものがある（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１６３２４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、従来のバイナリＸＭＬパーサは、長い文字列データや、画像データ等サイズの大きなデータを符号化テーブルに含む場合、メモリリソースの限られた環境では、バイナリＸＭＬデータを全て解析することができなかった。
図１は、アドレス帳の内容を記述した、従来のテキスト形式のＸＭＬデータの一例を示す図である。このＸＭＬデータをバイナリＸＭＬ形式で記述したものが、図２、３、４である。図２は、ＸＭＬデータに含まれる要素名や属性名を符号化した符号化テーブルの一例を示す図である。ここでは図２のテーブルを名前テーブルと呼ぶことにする。図３は、ＸＭＬデータに含まれる属性値や要素内容等を符号化した符号化テーブルの一例を示す図である。ここでは図３のテーブルを値テーブルと呼ぶことにする。図４は、テキスト形式の構造化文書を、図２、３の符号化テーブルに含まれる各符号を用いることによってバイナリＸＭＬ形式で記述した内容の一例を示す図である。なお、図４における開始タグ、終了タグ、属性、要素内容等の各イベントの符号は、図５の符号を用いるものとし、これら各イベントの符号はアプリケーションが予め知っている（又はアプリケーションに予め定義されている）ものとする。図５は、各イベントの符号の一例を示す図である。
【０００６】
バイナリＸＭＬパーサがデータを解析する際には、まずデータに含まれる図２の名前テーブルと図３の値テーブルとを解析し、各テーブルの内容を内部メモリに保存しておく。そして、バイナリＸＭＬパーサは、バイナリＸＭＬデータの構造と値とを含むボディ部を解析する際には、その内部メモリに保存したテーブルの各符号と値との組を用いることによって、タグ名や属性名、属性値や要素内容を解決する。
しかし、メモリリソースの限られた組込み機器の環境においては、図３のように値テーブルに画像データのようなサイズの大きなデータを含む場合には、その画像データを内部メモリに保存することができなかった。バイナリＸＭＬデータにそのようなサイズの大きなデータを含む場合、バイナリＸＭＬパーサは、それ以降の解析処理を中断し、アプリケーションに解析エラーを通知するのが一般的だった。
【０００７】
本発明はこのような問題点に鑑みなされたもので、構造化文書の符号化に関するオブジェクト（例えば符号化テーブル等）に、サイズの大きなデータが含まれている場合でも、少ないメモリリソースで解析できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
そこで、本発明の情報処理装置は、構造化文書に含まれる構造情報と値とを符号化して作成された符号化文書に含まれる符号と、前記値と、前記値に関する属性値と、が対応付けられた値データを複数含む値オブジェクトの前記値データの前記属性値に基づいて、前記属性値に対応する値を含む値データをメモリに記憶するか否かを判定する記憶判定手段と、前記記憶判定手段で前記属性値に対応する値を含む値データをメモリに記憶すると判定された場合には、前記値を含む値データをメモリ内のメモリ内値オブジェクトに記憶し、前記記憶判定手段で前記属性値に対応する値を含む値データをメモリに記憶しないと判定された場合には、前記値を含まない値データをメモリ内のメモリ内値オブジェクトに記憶する記憶手段と、を有する。
【発明の効果】
【０００９】
本発明によれば、構造化文書の符号化に関するオブジェクト（例えば符号化テーブル等）に、サイズの大きなデータが含まれている場合でも、少ないメモリリソースで解析できるようにすることができる。
【図面の簡単な説明】
【００１０】
【図１】アドレス帳の内容を記述した、従来のテキスト形式のＸＭＬデータの一例を示す図である。
【図２】ＸＭＬデータに含まれる要素名や属性名を符号化した符号化テーブルの一例を示す図である。
【図３】ＸＭＬデータに含まれる属性値や要素内容等を符号化した符号化テーブルの一例を示す図である。
【図４】テキスト形式の構造化文書を、図２、３の符号化テーブルに含まれる各符号を用いることによってバイナリＸＭＬ形式で記述した内容の一例を示す図である。
【図５】各イベントの符号の一例を示す図である。
【図６】本実施形態に係るシステムのシステム構成の一例を示す図である。
【図７】ＰＣのハードウェア構成の一例を示す図である。
【図８】バイナリＸＭＬデータに含まれる符号化テーブルを解析する処理の一例を示すフローチャート（その１）である。
【図９】内部メモリに保存した値テーブルの一例を示した図（その１）である。
【図１０】ボディ部の解析処理の一例を示すフローチャート（その１）である。
【図１１】値を取得する処理の一例を示すフローチャート（その１）である。
【図１２】バイナリＸＭＬデータに含まれる符号化テーブルを解析する処理の一例を示すフローチャート（その２）である。
【図１３】内部メモリに保存した値テーブルの一例を示した図（その２）である。
【図１４】ボディ部の解析処理の一例を示すフローチャート（その２）である。
【図１５】値を取得する処理の一例を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について図面に基づいて説明する。
【００１２】
＜実施形態１＞
本実施形態では、符号化テーブルにサイズの大きなデータを含むバイナリＸＭＬデータを、少ないメモリリソースで解析する処理について説明する。
図６は、本実施形態に係るシステムのシステム構成の一例を示す図である。
ＰＣ１０１は、ＬＡＮ１０２に接続されている。ＬＡＮ１０２には、デジタルカメラ１０３、複合機１０４、ファイルサーバ１０５が接続されている。
【００１３】
図７は、ＰＣのハードウェア構成の一例を示す図である。
ＣＰＵ２０１は、システム制御部であり、ＰＣ全体を制御する。ＲＯＭ２０２は、ＣＰＵ２０１の制御プログラムや各種固定データを格納する。ＲＡＭ２０３は、ＳＲＡＭ、ＤＲＡＭ等で構成され、プログラム制御変数等を格納する。また、各種設定パラメータ、各種ワーク用バッファもＲＡＭ２０３に格納される。記憶部２０４は、ハードディスク等で構成され、文書データや画像データ等、各種データファイルを格納する。操作部２０５は、キーボードやマウス、タッチパネル等で構成され、オペレータが各種入力操作を行うためのものである。表示部２０６は、画像を表示するテレビジョンの画面である。ＬＡＮｉ／ｆ  ２０７は、ＬＡＮ回線２０８に接続するためのインターフェースである。ＵＳＢｉ／ｆ  ２０９は、ＵＳＢ回線２１０に接続するためのインターフェースである。
なお、デジタルカメラ１０３、複合機１０４、ファイルサーバ１０５のハードウェア構成も、装置に応じて構成の一部が異なるものの、図６に示したＰＣ１０１のハードウェア構成と同様であり、少なくともＣＰＵと記憶部とを有する。
各装置のＣＰＵが、記憶部等に記憶されているプログラム（例えば、本実施形態のバイナリＸＭＬパーサ（以下、単にバイナリＸＭＬパーサという）やアプリケーションに該当するプログラム）に基づき処理を実行する。このことによって、各装置の機能、後述するフローチャートに係る処理が実現される。つまり、後述するバイナリＸＭＬパーサやアプリケーションは、ＰＣ１０１に実装されていてもよいし、デジタルカメラ１０３、複合機１０４、ファイルサーバ１０５等に実装されていてもよい。
【００１４】
図８は、バイナリＸＭＬデータに含まれる符号化テーブルを解析する処理の一例を示すフローチャート（その１）である。
まず、バイナリＸＭＬパーサは、要素名や属性名等の名前と、その名前に割り当てられた符号と、を格納した図２に示されるような名前テーブルを解析し、各名前と符号との組をＲＡＭ２０３又は記憶部２０４等の内部メモリに保存する（Ｓ１０２）。
次に、バイナリＸＭＬパーサは、属性値や要素内容、コメントの内容等の値と、その値に割り当てられた符号と、を格納した図３に示されるような値テーブルを内部メモリに保存する際の制限情報を解析する（Ｓ１０３）。この制限情報は、内部メモリに保存する各値の上限サイズや、内部メモリに保存する必要がないデータの種類等である。この上限サイズや内部メモリに保存する必要がないデータの種類等は、一般的にはアプリケーションがバイナリＸＭＬパーサに、解析を開始する前に予め設定しておくものである。本実施形態では、各値の上限サイズを５００００バイトとし、アプリケーションにとって不要なデータの種類をコメントとする。
【００１５】
バイナリＸＭＬパーサは、値テーブルの解析を開始するが、まず値テーブルの全ての内容を解析したか否かを判定する（Ｓ１０４）。Ｓ１０４において、値テーブルの全ての内容を解析していないと判断した場合、バイナリＸＭＬパーサは、値テーブルに含まれる各値の、符号、所属情報（種類情報）（所属）、サイズ情報（サイズ）を解析し、内部メモリに保存する（Ｓ１０５〜Ｓ１０７）。この所属情報は、図５に示されるように各イベントに割り当てられた符号であり、バイナリＸＭＬパーサは、この符号を参照することによって、属性値や要素内容等、各値がどの値を表すものか判断することができる。
バイナリＸＭＬパーサは、値の所属に基づいて、値の所属が内部メモリに保存する種類であるかどうか判定（記憶判定）する（Ｓ１０８）。Ｓ１０８において、値の所属が内部メモリに保存する種類ではないと判断した場合、バイナリＸＭＬパーサは、Ｓ１０７で解析したサイズ分、値を内部メモリに保存しないで読み飛ばす（Ｓ１０９）。より具体的に説明すると、後述する図９に示すように、バイナリＸＭＬパーサは、値テーブルを構成するレコードデータである値データの内、値を含まない値データ（符号＋所属＋サイズ）を内部メモリに保存（記憶）する。
【００１６】
Ｓ１０８において、その値の所属が内部メモリに保存する種類であると判断した場合、バイナリＸＭＬパーサは、Ｓ１０３において解析した内容に基づいて、値のサイズが内部メモリに保存する上限サイズ以下であるかどうか判定（記憶判定）する（Ｓ１１０）。Ｓ１１０において、値のサイズが上限値以下ではないと判断した場合、バイナリＸＭＬパーサは、Ｓ１０７で解析したサイズ分、値を内部メモリに保存しないで読み飛ばす（Ｓ１０９）。より具体的に説明すると、上述したように、バイナリＸＭＬパーサは、値テーブルを構成するレコードデータである値データの内、値を含まない値データ（符号＋所属＋サイズ）を内部メモリに保存（記憶）する。Ｓ１１０において、値のサイズが上限値以下であると判断した場合、バイナリＸＭＬパーサは、値を内部メモリに保存する（Ｓ１１１）。
【００１７】
図８の処理で値テーブルを解析した後の内部メモリに保存した値テーブルを示したものが図９である。図９は、内部メモリに保存した値テーブルの一例を示した図（その１）である。
図９に示されるように、本実施形態では、値の上限サイズ５００００バイトを越えた１０００００バイトのＢＡＳＥ６４化した画像データと、コメントの内容と、をバイナリＸＭＬパーサは、Ｓ１０３の制限情報に基づいて内部メモリに保存していない。
【００１８】
次に、バイナリＸＭＬパーサは、内部メモリに保存した名前テーブルと、値テーブルと、を用いて、図１０に示す処理を実行し、図４に示したバイナリＸＭＬデータの構造と、値と、を含んだボディ部を解析する。図１０は、ボディ部の解析処理の一例を示すフローチャート（その１）である。
バイナリＸＭＬパーサは、タグ名を内部メモリに保存するスタックを初期化する（Ｓ２０２）。そして、バイナリＸＭＬパーサは、ボディ部を全て解析したかどうか判定する（Ｓ２０３）。Ｓ２０３において、ボディ部を全て解析していないと判断した場合、バイナリＸＭＬパーサは、ボディ部を１バイト読み進めてイベントの種類を解析する（Ｓ２０４）。
次に、バイナリＸＭＬパーサは、前記イベントの種類が開始タグであるかどうか判定する（Ｓ２０５）。Ｓ２０５において、イベントの種類が開始タグであると判断した場合、バイナリＸＭＬパーサは、ボディ部を１バイト読み進め、名前テーブルを用いてタグ名を解析する（Ｓ２０６）。その際、バイナリＸＭＬパーサは、そのタグ名をスタックにプッシュし（Ｓ２０７）、開始タグの名前としてそのタグ名を要求元のアプリケーションに渡す（Ｓ２０８）。
【００１９】
Ｓ２０５において、イベントの種類が開始タグではないと判断した場合、バイナリＸＭＬパーサは、終了タグであるかどうか判定する（Ｓ２０９）。Ｓ２０９において、イベントの種類が終了タグであると判断した場合、バイナリＸＭＬパーサは、スタックからタグ名をポップし（Ｓ２１０）、終了タグの名前としてポップしたタグ名を要求元のアプリケーションに渡す（Ｓ２１１）。
Ｓ２０９において、イベントの種類が終了タグではないと判断した場合、バイナリＸＭＬパーサは、属性であるかどうか判定する（Ｓ２１２）。Ｓ２１２において、イベントの種類が属性であると判断した場合、バイナリＸＭＬパーサは、ボディ部を１バイト読み進め、名前テーブルを用いて属性名を解析する（Ｓ２１３）。そして、バイナリＸＭＬパーサは、ボディ部を１バイト読み進め、値テーブルを用いて属性値（値）を解析するが、その際、その属性値を値テーブルに保存しているかどうか判定（値判定）する（Ｓ２１４）。Ｓ２１４において、その属性値を値テーブルに保存していると判断した場合、バイナリＸＭＬパーサは、要求元のアプリケーションに属性名と、属性値と、を渡す（Ｓ２１５）。Ｓ２１４において、その属性値を値テーブルに保存していないと判断した場合、バイナリＸＭＬパーサは、要求元のアプリケーションに属性名と、属性値の符号と、サイズ情報と、を渡す（通知する）（Ｓ２１６）。
【００２０】
Ｓ２１２において、イベントの種類が属性ではないと判断した場合、バイナリＸＭＬパーサは、要素内容であるかどうか判定する（Ｓ２１７）。Ｓ２１７において、イベントの種類が要素内容であると判断した場合、バイナリＸＭＬパーサは、ボディ部を１バイト読み進め、値テーブルを用いて要素内容を解析する。その際、バイナリＸＭＬパーサは、その要素内容を値テーブルに保存しているかどうか判定（値判定）する（Ｓ２１８）。Ｓ２１８において、その要素内容を値テーブルに保存していると判断した場合、バイナリＸＭＬパーサは、要求元のアプリケーションにその要素内容を渡す（Ｓ２１９）。Ｓ２１８において、その要素内容を値テーブルに保存していないと判断した場合、バイナリＸＭＬパーサは、要求元のアプリケーションに要素内容の符号と、サイズ情報と、を渡す（通知する）（Ｓ２２０）。
Ｓ２１２において、イベントの種類が要素内容ではないと判断した場合、バイナリＸＭＬパーサは、イベントの種類がコメントであると判断する。そして、バイナリＸＭＬパーサは、ボディ部を１バイト読み進め、コメントの内容を解析するが、その際、コメントの内容を値テーブルに保存しているかどうか判定（値判定）する（Ｓ２２１）。Ｓ２２１において、そのコメントの内容を値テーブルに保存していると判断した場合、バイナリＸＭＬパーサは、要求元のアプリケーションにそのコメントの内容を渡す（Ｓ２２２）。Ｓ２２１において、コメントの内容を値テーブルに保存していないと判断した場合、バイナリＸＭＬパーサは、要求元のアプリケーションにコメントの内容の符号と、サイズ情報と、を渡す（通知する）（Ｓ２２３）。
本実施形態では、図９の内部メモリに保存した値テーブルに基づいて、バイナリＸＭＬパーサは、ｐｈｏｔｏ要素の要素内容と、コメントの内容と、については、要求元のアプリケーションにそれぞれの符号と、サイズ情報と、を渡す。
【００２１】
バイナリＸＭＬパーサが図１０に示した処理でボディ部の解析を一通り終えた後でアプリケーションが、バイナリＸＭＬパーサによって読み飛ばされた値データを取得する必要がある場合、図１１の処理が実行されることで取得することができる。図１１は、値を取得する処理の一例を示すフローチャート（その１）である。
まず、アプリケーションは、取得したい値の符号と共に取得したサイズ情報を解析する（Ｓ３０２）。そして、アプリケーションは、値のサイズ情報を基に、その値を取得するかどうか判定する（Ｓ３０３）。Ｓ３０３において、その値を取得すると判断した場合、アプリケーションは、値の符号をバイナリＸＭＬパーサに渡す（Ｓ３０４）。
バイナリＸＭＬパーサは、アプリケーションより符号を渡されると、バイナリＸＭＬデータの解析を再度先頭から開始する（Ｓ３０５）。その際、アプリケーションが取得したいデータは値データなので、バイナリＸＭＬパーサは、名前テーブルの内容は内部メモリに保存しないで読み飛ばす。
【００２２】
そして次に、バイナリＸＭＬパーサは、値テーブルの全ての内容を解析したかどうか判定する（Ｓ３０６）。Ｓ３０６において、値テーブルの全ての内容を解析していないと判断した場合、バイナリＸＭＬパーサは、各符号を解析し（Ｓ３０７）、渡された符号と一致するかどうか判定する（Ｓ３０８）。Ｓ３０８において、渡された符号と一致したと判断した場合、バイナリＸＭＬパーサは、値テーブルからその符号の組である値を取得（値取得）し、要求元のアプリケーションに渡す（Ｓ３０９）。
Ｓ３０８において、渡された符号と一致しないと判断した場合、バイナリＸＭＬパーサは、アプリケーションの指定した符号が出現するまで、値テーブルの解析を続ける。Ｓ３０６において、値テーブルの全ての内容を解析したと判断した場合、バイナリＸＭＬパーサは、要求元のアプリケーションに、指定した符号が値テーブルに含まれていないことを通知する（Ｓ３１０）。
バイナリＸＭＬパーサは、Ｓ３０９において、要求元のアプリケーションに値を渡す際には、値だけではなく、前記値を含む値データを渡してもよい。また、バイナリＸＭＬパーサは、Ｓ３０９において、値データ全体を一括で渡すのではなく、アプリケーションが値データを逐次読むことができるようにストリーム形式で渡してもよい。
以上の処理によって、符号化テーブルにサイズの大きなデータを含むバイナリＸＭＬデータを、少ないメモリリソースで解析できるようになる。
【００２３】
＜実施形態２＞
本実施形態では、符号化テーブル内の読み飛ばしたサイズの大きなデータを、アプリケーションがバイナリＸＭＬデータの先頭からのオフセットを指定することによって取得する処理について説明する。
図１２は、バイナリＸＭＬデータに含まれる符号化テーブルを解析する処理の一例を示すフローチャート（その２）である。
まず、バイナリＸＭＬパーサは、バイナリＸＭＬデータの先頭からのバイト数を数える変数ｏｆｆｓｅｔを初期化する（Ｓ４０２）。次に、バイナリＸＭＬパーサは、要素名や属性名等と、その名前に割り当てたられ符号と、を格納した名前テーブルを解析し、各名前と符号との組をＲＡＭ２０３又は記憶部２０４等の内部メモリに保存する（Ｓ４０３）。
【００２４】
次に、バイナリＸＭＬパーサは、名前テーブル解析後に、バイナリＸＭＬデータの現在の解析位置で、変数ｏｆｆｓｅｔを更新する。次に、バイナリＸＭＬパーサは、属性値や要素内容、コメントの内容等の値と、その値に割り当てられた符号と、を格納した値テーブルを内部メモリに保存する際の制限情報を解析する（Ｓ４０４）。
バイナリＸＭＬパーサは、値テーブルの解析を開始するが、まず値テーブルの全ての内容を解析したか否かを判定する（Ｓ４０５）。Ｓ４０５において、値テーブルの全ての内容を解析していないと判断した場合、バイナリＸＭＬパーサは、値テーブルに含まれる各値の、符号、所属情報、サイズ情報を解析し、内部メモリに保存する（Ｓ４０６〜Ｓ４０８）。
そして、バイナリＸＭＬパーサは、サイズ情報のデータが始まる位置で変数ｏｆｆｓｅｔを更新し、その値を内部メモリに保存する（Ｓ４０９）。なお、サイズ情報のデータサイズは４バイトとする。
【００２５】
そして、バイナリＸＭＬパーサは、Ｓ４０４において解析した内容に基づいて、値の所属が内部メモリに保存する種類であるかどうか判定（記憶判定）する（Ｓ４１０）。Ｓ４１０において、値の所属が内部メモリに保存する種類ではないと判断した場合、バイナリＸＭＬパーサは、Ｓ４０８で解析したサイズ分、値を内部メモリに保存しないで読み飛ばす（Ｓ４１１）。より具体的に説明すると、上述したように、バイナリＸＭＬパーサは、値テーブルを構成するレコードデータである値データの内、値を含まない値データ（符号＋所属＋サイズ＋オフセット（ｏｆｆｓｅｔ））を内部メモリに保存（記憶）する。Ｓ４１０において、その値の所属が内部メモリに保存する種類であると判断した場合、バイナリＸＭＬパーサは、Ｓ４０８において解析した内容に基づいて、値のサイズが内部メモリに保存する上限サイズ以下であるかどうか判定（記憶判定）する（Ｓ４１２）。Ｓ４１２において、値のサイズが上限値以下ではないと判断した場合、バイナリＸＭＬパーサは、Ｓ４０８で解析したサイズ分、値を内部メモリに保存しないで読み飛ばす（Ｓ４１１）。より具体的に説明すると、上述したように、バイナリＸＭＬパーサは、値テーブルを構成するレコードデータである値データの内、値を含まない値データ（符号＋所属＋サイズ＋オフセット（ｏｆｆｓｅｔ））を内部メモリに保存（記憶）する。Ｓ４１２において、値のサイズが上限値以下であると判断した場合、バイナリＸＭＬパーサは、値を内部メモリに保存する（Ｓ４１３）。
【００２６】
図１２の処理で値テーブルを解析した後の、内部メモリに保存した値テーブルを示したものが図１３である。図１３は、内部メモリに保存した値テーブルの一例を示した図（その２）である。
図１３に示されるように、値の上限サイズ５００００バイトを越えた１０００００バイトのＢＡＳＥ６４化した画像データと、コメントの内容と、をバイナリＸＭＬパーサは、Ｓ４０４の制限情報に基づいて内部メモリに保存していない。また、バイナリＸＭＬパーサは、値テーブルにおけるサイズ情報の開始位置をオフセット値として保存している。
【００２７】
次に、バイナリＸＭＬパーサは、内部メモリに保存した名前テーブルと、値テーブルと、を用いて、図１４に示す処理を実行し、図４に示したバイナリＸＭＬデータの構造と、値と、を含んだボディ部を解析する。図１４は、ボディ部の解析処理の一例を示すフローチャート（その２）である。
バイナリＸＭＬパーサは、タグ名を内部メモリに保存するスタックを初期化する（Ｓ５０２）。そして、バイナリＸＭＬパーサは、ボディ部を全て解析したかどうか判定する（Ｓ５０３）。Ｓ５０３において、ボディ部を全て解析していないと判断した場合、バイナリＸＭＬパーサは、ボディ部を１バイト読み進めてイベントの種類を解析する（Ｓ５０４）。
次に、バイナリＸＭＬパーサは、前記イベントの種類が開始タグであるかどうか判定する（Ｓ５０５）。Ｓ５０５において、イベントの種類が開始タグであると判断した場合、バイナリＸＭＬパーサは、ボディ部を１バイト読み進め、名前テーブルを用いてタグ名を解析する（Ｓ５０６）。その際、バイナリＸＭＬパーサは、そのタグ名をスタックにプッシュし（Ｓ５０７）、開始タグの名前としてそのタグ名を要求元のアプリケーションに渡す（Ｓ５０８）。
【００２８】
Ｓ５０５において、イベントの種類が開始タグではないと判断した場合、バイナリＸＭＬパーサは、終了タグであるかどうか判定する（Ｓ５０９）。Ｓ５０９において、イベントの種類が終了タグであると判断した場合、スタックからタグ名をポップし（Ｓ５１０）、終了タグの名前としてポップしたタグ名を要求元のアプリケーションに渡す（Ｓ５１１）。
Ｓ５０９において、イベントの種類が終了タグではないと判断した場合、バイナリＸＭＬパーサは、属性であるかどうか判定する（Ｓ５１２）。Ｓ５１２において、イベントの種類が属性であると判断した場合、バイナリＸＭＬパーサは、ボディ部を１バイト読み進め、名前テーブルを用いて属性名を解析する（Ｓ５１３）。そして、バイナリＸＭＬパーサは、ボディ部を１バイト読み進め、値テーブルを用いて属性値（値）を解析するが、その際、その属性値を値テーブルに保存しているかどうか判定（値判定）する（Ｓ５１４）。Ｓ５１４において、その属性値を値テーブルに保存していると判断した場合、バイナリＸＭＬパーサは、要求元のアプリケーションに属性名と、属性値と、を渡す（Ｓ５１５）。Ｓ５１４において、その属性値を値テーブルに保存していないと判断した場合、バイナリＸＭＬパーサは、要求元のアプリケーションに属性名と、属性値の位置に関するオフセットと、属性値のサイズ情報と、を渡す（通知する）（Ｓ５１６）。
【００２９】
Ｓ５１２において、イベントの種類が属性ではないと判断した場合、バイナリＸＭＬパーサは、要素内容であるかどうか判定する（Ｓ５１７）。Ｓ５１７において、イベントの種類が要素内容であると判断した場合、バイナリＸＭＬパーサは、ボディ部を１バイト読み進め、値テーブルを用いて要素内容を解析する。その際、バイナリＸＭＬパーサは、その要素内容を値テーブルに保存しているかどうか判定（値判定）する（Ｓ５１８）。Ｓ５１８において、その要素内容を値テーブルに保存していると判断した場合、バイナリＸＭＬパーサは、要求元のアプリケーションにその要素内容を渡す（Ｓ５１９）。Ｓ５１８において、その要素内容を値テーブルに保存していないと判断した場合、バイナリＸＭＬパーサは、要求元のアプリケーションに要素内容の位置に関するオフセットと、要素内容のサイズ情報と、を渡す（通知する）（Ｓ５２０）。
Ｓ５１２において、イベントの種類が要素内容ではないと判断した場合、バイナリＸＭＬパーサは、イベントの種類がコメントであると判断する。そして、バイナリＸＭＬパーサは、ボディ部を１バイト読み進め、コメントの内容を解析するが、その際、コメントの内容を値テーブルに保存しているかどうか判定（値判定）する（Ｓ５２１）。Ｓ５２１において、そのコメントの内容を値テーブルに保存していると判断した場合、要求元のアプリケーションにそのコメントの内容を渡す（Ｓ５２２）。Ｓ５２１において、そのコメントの内容を値テーブルに保存していないと判断した場合、バイナリＸＭＬパーサは、要求元のアプリケーションにコメントの内容の位置に関するオフセットと、コメントの内容のサイズ情報と、を渡す（通知する）（Ｓ５２３）。
本実施形態では、図１３の内部メモリに保存した値テーブルに基づいて、バイナリＸＭＬパーサは、ｐｈｏｔｏ要素の要素内容と、コメントの内容と、については、要求元のアプリケーションにはそれぞれの位置に関するオフセットと、サイズ情報と、を渡す。
【００３０】
バイナリＸＭＬパーサが図１４に示した処理でボディ部の解析を一通り終えた後でアプリケーションが、バイナリＸＭＬパーサによって読み飛ばされた値データを取得する必要がある場合、図１５の処理が実行されることで取得することができる。図１５は、値を取得する処理の一例を示すフローチャート（その２）である。
まず、アプリケーションは、取得したい値のサイズ情報を解析する（Ｓ６０２）。そして、アプリケーションは、値のサイズ情報を基に、その値を取得するかどうか判定する（Ｓ６０３）。Ｓ６０３において、その値を取得すると判断した場合、アプリケーションは、値に関するオフセットをバイナリＸＭＬパーサに渡す（Ｓ６０４）。
バイナリＸＭＬパーサは、アプリケーションよりオフセットを渡されると、バイナリＸＭＬデータの解析を再度先頭から開始し、前記オフセット分、データを読み飛ばす（Ｓ６０５）。そして、バイナリＸＭＬパーサは、取得する値のサイズ情報を解析し（Ｓ６０６）、サイズ分のデータ（値）を読み込み（値取得）、要求元のアプリケーションに渡す（Ｓ６０７）。
【００３１】
バイナリＸＭＬパーサは、Ｓ６０７において、要求元のアプリケーションに値を渡す際には、値だけではなく、前記値を含む値データを渡してもよい。また、バイナリＸＭＬパーサは、Ｓ３０９において、値データ全体を一括で渡すのではなく、アプリケーションが値データを逐次読むことができるようにストリーム形式で渡してもよい。
以上の処理によって、符号化テーブル内の読み飛ばしたサイズの大きなデータを、アプリケーションがバイナリＸＭＬデータの先頭からのオフセットを指定することによって、より少ない解析時間で取得できるようになる。
【００３２】
＜その他の実施形態＞
また、上述した実施形態の目的は、以下のようにすることによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（又は記録媒体）を、システム或いは装置に供給する。そして、そのシステム或いは装置の中央演算処理手段（ＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行する。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することになり、そのプログラムコードを記録した記憶媒体は上述した実施形態を構成することになる。
また、システム或いは装置の前記中央演算処理手段が読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、システム或いは装置上で稼働しているオペレーティングシステム（ＯＳ）等が実際の処理の一部又は全部を行う。その処理によって上述した実施形態の機能が実現される場合も含まれる。
更に、記憶媒体から読み出されたプログラムコードが、前記システム或いは装置に挿入された機能拡張カードや、接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれる。
上述した実施形態を前記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【００３３】
以上、上述した各実施形態によれば、構造化文書の符号化に関するオブジェクト（例えば符号化テーブル等）に、サイズの大きなデータが含まれている場合でも、少ないメモリリソースで解析できるようにすることができる。
【００３４】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００３５】
なお、特許請求の範囲に記載の値オブジェクトは、例えば、上述した図３に示したような値テーブル等に対応する。値テーブルは上述したようにＸＭＬデータ文書（構造化文書）に含まれる構造情報と値とを符号化して作成された図４に示されるような符号化文書に含まれる符号と値と値に関する属性値の一例として所属及びサイズとが対応付けられた値データを複数含んでいる。また、特許請求の範囲に記載のメモリ内値オブジェクトは、例えば、上述した図９又は図１３に示したような内部メモリに保存した値テーブル等に対応する。また、特許請求の範囲に記載の値データは、例えば、上述した値テーブルに含まれる１レコードのデータ等に対応する。また、特許請求の範囲に記載の情報処理装置及びコンピュータは、例えば、上述したＰＣ１０１、又はデジタルカメラ１０３、又は複合機１０４、又はファイルサーバ１０５等に対応する。
【符号の説明】
【００３６】
１０１  ＰＣ、１０２  ＬＡＮ、１０３、デジタルカメラ、１０４  複合機
【図１】
2010250434.tif 000003
【図２】
2010250434.tif 000004
【図３】
2010250434.tif 000005
【図４】
2010250434.tif 000006
【図５】
2010250434.tif 000007
【図６】
2010250434.tif 000008
【図７】
2010250434.tif 000009
【図８】
2010250434.tif 000010
【図９】
2010250434.tif 000011
【図１０】
2010250434.tif 000012
【図１１】
2010250434.tif 000013
【図１２】
2010250434.tif 000014
【図１３】
2010250434.tif 000015
【図１４】
2010250434.tif 000016
【図１５】
2010250434.tif 000017