(57)【特許請求の範囲】
【請求項１】
構造化文書の符号化装置が構造化文書を符号化する方法であって、
構造化文書を木構造で表したときの各ノードに対応し、対応するノードのノード位置、ノード種別、ノード名及びノードのデータ保存位置を示す符号語を含む固定長のレコードを生成する第１のステップと、
ノードがデータを有する場合、対応するレコードのデータ保存位置が示すデータテーブルの位置に、ノードのデータを設定する第２のステップと、
を有し、
ノード位置は、ノードの階層と、構造化文書で１つ前に出現するノードに対応するレコードを示すポインタと、１つ後に出現するノードに対応するレコードを示すポインタで表されることを特徴とする符号化方法。
【請求項２】
レコードは、ノードが有するデータの、データ型を示す符号語も含んでいること、
を特徴とする請求項１に記載の符号化方法。
【請求項３】
レコードに含まれるノード種別、ノード名及びデータ型に使用する符号語は、符号化テーブルで規定され、
構造化文書で使用されている要素及び属性から符号化テーブルを作成するステップを、第１のステップの前に有すること、
を特徴とする請求項２に記載の符号化方法
【請求項４】
コンピュータに構造化文書の符号化を実行させるプログラムであって、
構造化文書を木構造で表したときの各ノードに対応し、対応するノードのノード位置、ノード種別、ノード名及びノードのデータ保存位置を示す符号語を含む固定長のレコードを生成する第１のステップと、
ノードがデータを有する場合、対応するレコードのデータ保存位置が示すデータテーブルの位置に、ノードのデータを設定する第２のステップと、
をコンピュータに実行させ、
ノード位置は、ノードの階層と、構造化文書で１つ前に出現するノードに対応するレコードを示すポインタと、１つ後に出現するノードに対応するレコードを示すポインタで表されることを特徴とするプログラム。
【請求項５】
構造化文書の符号化装置であって、
構造化文書を木構造で表した場合におけるノードの、ノード種別及びノード名の符号語を示す符号化テーブルと、
構造化文書の各ノードに対応し、対応するノードのノード位置、ノード種別、ノード名及びノードのデータ保存位置を示す符号語を含む固定長のレコードを、符号化テーブルに基づき生成する手段と、
ノードがデータを有する場合、対応するレコードのデータ保存位置が示すデータテーブルの位置に、ノードのデータを設定する手段と、
を有し、
ノード位置は、ノードの階層と、構造化文書で１つ前に出現するノードに対応するレコードを示すポインタと、１つ後に出現するノードに対応するレコードを示すポインタで表されることを特徴とする符号化装置。
【請求項６】
構造化文書を木構造で表した場合におけるノードの、ノード種別及びノード名の符号語を示す符号化テーブルと、
ノードに対応して設けられ、対応するノードの、木構造でのノード位置、ノード種別、ノード名及びノードのデータ保存位置を示す符号語を含む固定長のレコードと、
レコードのデータ保存位置によりポイントされ、該レコードに対応するノードが有するデータを保持するデータテーブルと、
を有し、
ノード位置は、ノードの階層と、構造化文書で１つ前に出現するノードに対応するレコードを示すポインタと、１つ後に出現するノードに対応するレコードを示すポインタで表されるデータ構造から、構造化文書の復号を行うこと、
を特徴とする復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）等の構造化文書の符号化に関し、より詳しくは、テキスト形式と比べ構造化文書を表現するためのデータ量を削減することができ、かつ、符号化された状態での構造化文書の編集処理を可能とする符号化技術に関する。
【背景技術】
【０００２】
文書にタグを付与して構造を示す構造化文書としては、ＸＭＬや、ＳＧＭＬ（Ｓｔａｎｄａｒｄ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）等があり、これらは異なるコンピュータ環境においても文書の相互利用を可能とするために、テキスト形式により文書の保存及び送受信を行うことを想定している。
【０００３】
また、構造化文書の検索処理及び／又は編集処理を行うためにＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）が規定され使用されているが、ＤＯＭでは、構造化文書全体を木構造の形式でデータ展開し、展開したデータをメモリに保存して処理を行うため、文書構造が大きくなるにつれ、検索処理及び編集処理負担が重くなるという問題がある。特に、携帯電話端末等の処理能力の低い装置においては、この処理負担は無視できないものとなり得る。
【０００４】
このため、特許文献１には、大規模なＸＭＬ文書であっても高速に検索することができるＸＭＬ文書のランダムアクセス方法が開示されている。特許文献１によると、ＸＭＬ文書を上位構造の要素と下位構造の要素に分割した上で、下位構造の要素が保存されているメモリアドレスを、その上位構造の要素をキーとするハッシュテーブルで管理することにより検索の高速化を行っている。
【０００５】
特許文献１では、ハッシュテーブルにより下位構造の要素に素早く辿り着くことを可能としているが、ハッシュテーブルにより提供されるのは検索及び並べ替え処理のみであり、構造化文書そのものの編集処理、つまり、要素、属性値、要素値についての追加、削除及び／又は変更を提供しているわけではなく、構造化文書の編集処理には、ＤＯＭに基づきメモリに展開されたデータを直接処理する必要がある。
【０００６】
また、特許文献２では、構造化文書を送受信するにあたり、そのデータ量を削減するための符号化方法が開示されているが、データ量の削減を重視して設計されているため、要素の追加や変更等の編集処理のためには、文書全体の再符号化が必要となるなど、符号化された状態での編集処理は難しい。
【０００７】
【特許文献１】特開２００５−２８４４１７号公報
【特許文献２】特開２００５−２１５９５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
携帯電話端末等の処理能力の低く、かつ、通信速度の比較的遅い装置においては、構造化文書の送受信、表示、検索及び編集処理のためには、構造化文書を表現するためのデータ量が少ないこと、及び、符号化された状態で編集処理が可能であることが望ましい。
【０００９】
したがって、本発明は、符号化された状態で編集処理が可能である構造化文書の符号化方法、符号化装置、コンピュータに符号化方法を実行させるプログラム、構造化文書の符号化データのデータ構造及び該データ構造で表現された構造化文書の復号装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明における符号化方法によれば、
構造化文書の符号化方法であって、構造化文書を木構造で表したときの各ノードに対応し、対応するノードのノード位置、ノード種別、ノード名及びノードのデータ保存位置を示す符号語を含む固定長のレコードを生成する第１のステップと、ノードがデータを有する場合、対応するレコードのデータ保存位置が示すデータテーブルの位置に、ノードのデータを設定する第２のステップとを有することを特徴とする。
【００１１】
本発明の符号化方法における他の実施形態によれば、
ノード位置は、ノードの階層と、構造化文書で１つ前に出現するノードに対応するレコードを示すポインタと、１つ後に出現するノードに対応するレコードを示すポインタで表されることも好ましい。
【００１２】
また、本発明の符号化方法における他の実施形態によれば、
レコードは、ノードが有するデータの、データ型を示す符号語も含んでいることも好ましい。
【００１３】
更に、本発明の符号化方法における他の実施形態によれば、
レコードに含まれるノード種別、ノード名及びデータ型に使用する符号語は、符号化テーブルで規定され、構造化文書で使用されている要素及び属性から符号化テーブルを作成するステップを、第１のステップの前に有することも好ましい。
【００１４】
本発明におけるプログラムによれば、
コンピュータに前記符号化方法を実行させることを特徴とする。
【００１５】
本発明における符号化装置によれば、
構造化文書の符号化装置であって、構造化文書を木構造で表した場合におけるノードの、ノード種別及びノード名の符号語を示す符号化テーブルと、構造化文書の各ノードに対応し、対応するノードのノード位置、ノード種別、ノード名及びノードのデータ保存位置を示す符号語を含む固定長のレコードを、符号化テーブルに基づき生成する手段と、ノードがデータを有する場合、対応するレコードのデータ保存位置が示すデータテーブルの位置に、ノードのデータを設定する手段とを有することを特徴とする。
【００１６】
本発明におけるデータ構造によれば、
コンピュータに読み込まれる構造化文書の符号化データのデータ構造であって、構造化文書を木構造で表した場合におけるノードの、ノード種別及びノード名の符号語を示す符号化テーブルと、ノードに対応して設けられ、対応するノードの、木構造でのノード位置、ノード種別、ノード名及びノードのデータ保存位置を示す符号語を含む固定長のレコードと、レコードのデータ保存位置によりポイントされ、該レコードに対応するノードが有するデータを保持するデータテーブルとを有することを特徴とする。
【００１７】
本発明における復号装置によれば、
前記符号化データから構造化文書の復号を行うことを特徴とする。
【発明の効果】
【００１８】
構造化文書の符号化データは、構造化文書で使用されているノードについての、木構造でのノード位置、ノード種別、ノード名及びデータ保存位置を、固定長のレコードで表現することにより、構造化文書の検索、編集処理を行う装置では、レコードの編集に伴うメモリ領域の割当て処理や、検索を行う場合の検索位置の計算処理等を簡略化することができ、検索や編集の処理負担が低減される。
【００１９】
また、符号化テーブルで、構造化文書で使用するノード種別、ノード名、データ型の符号語を定義することで、テキスト形式でのデータ量と比較して構造化文書を記述するためのデータ量を削減することができる。
【００２０】
更に、構造化文書の編集処理は固定長のレコードの操作と、レコードがポイントするデータテーブルの編集処理で実行可能であり、符号化データのままで編集を行うことができる。
【発明を実施するための最良の形態】
【００２１】
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。
【００２２】
図１は、本発明による符号化方法の説明に用いる構造化文書を示す図であり、図１（ａ）は、ＸＭＬ形式で記載し、図１（ｂ）は、図１（ａ）の構造化文書を木構造にて表現したものである。構造化文書は、一般的に、図１（ｂ）に示す様に木構造で表現することができ、木構造のノードは、例えば、ＸＭＬ文書においては要素、属性、要素値のいずれかに対応する。以後、本説明において、ノードの種類、つまり、要素、属性、要素値のいずれであるかをノード種別と呼ぶ。以下、ＸＭＬ文書を例にして説明を行うが、本発明はＸＭＬ文書に限定されるものではなく、木構造で表現できる構造化文書総てに適用可能であり、また、ノード種別も、要素、属性、要素値に限定されず、各構造化文書の規定及び／又は符号化の設計に応じて他の種別を使用可能である。ここで、符号化の設計に応じてとは、例えば、ＸＭＬ文書においても、本実施形態でのように要素値をノードとして扱わず、属性に対する属性値のように、要素ノードのデータとして扱う等、ノードとするものについても設計事項であることを意味する。
【００２３】
図１に示す様に、本発明の説明に用いる構造化文書では、ルート要素であるノードＮ０は、子ノードとして要素名“ｇ”であるノードＮ１及びノードＮ４を有し、ノードＮ１は、子ノードとして要素名“ｐｏｌｙｌｉｎｅ”であるノードＮ２を有し、ノードＮ２は、子ノードとして属性名“ｐｏｉｎｔｓ”であるノードＮ３を有している。また、ノードＮ４は、子ノードとして要素名“ｔｅｘｔ”であるノードＮ５を有し、ノードＮ５は、子ノードとして要素値“あいう”であるノードＮ６を有している。
【００２４】
図２は、本発明による符号化装置が作成又は取得する符号化テーブルを示す図である。図２によると、使用する要素“ｓｖｇ”、“ｇ”、“ｐｏｌｙｌｉｎｅ”及び“ｔｅｘｔ”に対して、要素のインデックスと、属性がある場合は、属性のインデックス、名前及びデータ型と、要素が要素値を持つ場合には要素値のデータ型の定義が行われている。
【００２５】
符号化テーブルでは、ノード種別の符号語が固定長で定義される。図２においては、要素は“０”、属性は“１”、要素値は“２”として定義されている。尚、実際には、符号語で定義されるが、簡単のため、以後の説明において、符号語は、文字又は１０進数で表記する。
【００２６】
また、符号化テーブルでは、ノード名の符号語も固定長で定義される。ノード名とは、要素名又は属性名であり、図２においては、インデックスが符号語に該当する。図２において、“ｓｖｇ”と“ｐｏｉｎｔｓ”には、ともに“０”が定義されているが、ノード種別により両者を区別することができる。更に、符号化テーブルでは、データ型の符号語が固定長で定義される。図２においては、文字（ｃｈａｒ）は“０”、整数（ｉｎｔ）は“１”として定義されている。
【００２７】
本発明による符号化装置は、例えば、テキスト形式で取得した構造化文書から、符号化テーブルを作成し、作成した符号化テーブルに基づき本発明による符号化方法で構造化文書を符号化して保存する。尚、符号化テーブルを他の装置から取得して、取得した符号化テーブルに基づき、構造化文書を符号化する使用形態もとり得る。いずれにしても、取得したテキスト形式の構造化文書を保存する必要はない。
【００２８】
また、他の例として、本発明による符号化装置は、特許文献２に記載の方法等、送受信のためのデータ量削減を主目的とした符号化方法により符号化された構造化文書を他の装置から受信し、本発明による符号化方法で符号化された構造化文書に符号変換して保存する。この場合においても、符号化テーブルについては、本発明による符号化装置が、受信した他の符号化方法で符号化された構造化文書から生成する使用形態も、他の符号化方法で符号化された構造化文書と共に取得する使用形態もとり得る。尚、構造化文書で使用する要素、属性及び要素値が同一であるなら同じ符号化テーブルを使用できるため、符号化テーブルを他の装置から取得する使用形態においては、構造化文書の送受信の度に、符号化テーブルを送受信する必要はない。結局、本発明による符号化装置は、取得した構造化文書がいずれの形式で表現されたものであっても、本発明による符号化方法で符号化された形式に変換して保存し、編集処理等を符号化された状態のまま行う。
【００２９】
図３は、本発明による符号化方法の処理フロー図を示す図であり、図４は、図１に記載の構造化文書を、図２に示す符号化テーブルに基づき符号化した結果であるノードテーブル及びデータテーブルを示す図である。ノードテーブルは、各ノードに対応するレコードから構成され、各レコードは、階層、前ポインタ、後ポインタ、ノード種別、ノード名、データ型、データ数及びデータ保存位置フィールドを有し、各フィールドには固定長の符号語が設定される。したがって、レコードも固定長となる。尚、ノード種別、ノード名及びデータ型フィールドには、符号化テーブルで定義される符号語が設定され、階層及びデータ数フィールドには整数を固定長で符号化した符号語が設定され、前ポインタ、後ポインタ及びデータ保存位置フィールドには、ポインタ値を固定長で符号化した符号語が設定される。
【００３０】
以下、図３を参照して符号化方法を説明する。
【００３１】
（Ｓ３１）  構造化文書を読み込み、出現順に処理対象とするノードを選択する。ここで、ノードとは、要素、属性、要素値のいずれかである。
【００３２】
（Ｓ３２）  ノードテーブルに選択ノードについて記述するレコードを追加し、ルート要素からの階層を階層フィールドに、選択ノードの前に出現するノードに対応するレコードへのポインタを前ポインタフィールドに、選択ノードの後に出現するノードに対応するレコードへのポインタを後ポインタフィールドに設定する。
【００３３】
（Ｓ３３）  続いて、ノード種別を判定し、ノードが要素であればＳ３４の処理を行い、ノードが属性であればＳ３５の処理を行い、ノードが要素値であればＳ３６の処理を行う。
【００３４】
（Ｓ３４）  ノードが要素である場合には、ノード種別フィールド及びノード名フィールドには符号化テーブルを参照して符号語を設定し、データ型、データ数及びデータ保存位置フィールドには総て、“該当しない”を意味する符号語を設定する。以後の説明において、“該当しない”を意味する符号語を“−１”で表す。
【００３５】
（Ｓ３５）  ノードが属性である場合には、ノード種別フィールド、ノード名フィールド及びデータ型フィールドには符号化テーブルを参照して符号語を設定し、データ数フィールドには、属性値のデータ数を設定し、データ保存位置フィールドには属性値の実体を保存するデータテーブルの位置、つまりポインタを設定する。また、属性値をデータ保存位置フィールドがポイントするデータテーブルの位置に格納する。
【００３６】
（Ｓ３６）  ノードが要素値である場合には、ノード種別フィールド及びデータ型フィールドには符号化テーブルを参照して符号語を設定し、ノード名フィールドには、“該当しない”を意味する符号語を設定し、データ数フィールドには、要素値のデータ数を設定し、データ保存位置フィールドには要素値の実体を保存するデータテーブルの位置を設定する。また、要素値をデータ保存位置フィールドが示すデータテーブルの位置に格納する。
【００３７】
（Ｓ３７）  未処理ノードがある限りＳ３１からＳ３６までの処理を繰り返す。
【００３８】
以後、図１に記載の構造化文書を、図２に示す符号化テーブルに基づき符号化し、図４に示すノードテーブル及びデータテーブルを作成する処理について具体的に説明する。
【００３９】
（要素“ｓｖｇ”）  図１（ａ）より、まず要素“ｓｖｇ”が出現するため、要素“ｓｖｇ”について記載するレコードをノードテーブルに追加する。図４においては、符号Ｎ０を付与したレコードが要素“ｓｖｇ”のレコードである。要素“ｓｖｇ”はルート要素であるため階層フィールドは“０”であり、ノード種別フィールドは要素であるため符号化テーブルより“０”であり、ノード名フィールドは符号化テーブルより“０”であり、データ型、データ数及びデータ保存位置フィールドは、図３のＳ３４より総て“−１”である。尚、前ポインタフィールドは、最初のノードであるため“該当しない”であり、後ポインタフィールドは次に出現する要素“ｇ”に対応するレコードを示す。
【００４０】
（要素“ｇ”）  図１（ａ）より、続いて、要素“ｇ”が出現するため、要素“ｇ”について記載するレコードをノードテーブルに追加する。図４においては、符号Ｎ１を付与したレコードが該当するレコードである。要素“ｇ”は、ルート要素の子要素であるため階層フィールドは“１”であり、ノード種別フィールドは符号化テーブルより“０”であり、ノード名フィールドは符号化テーブルより“１”であり、データ型、データ数及びデータ保存位置フィールドは総て“−１”である。尚、前ポインタフィールドは要素“ｓｖｇ”に対応するレコードを示し、後ポインタフィールドは次に出現する要素“ｐｏｌｙｌｉｎｅ”に対応するレコードを示す。
【００４１】
（要素“ｐｏｌｙｌｉｎｅ”）  図１（ａ）より、続いて、要素“ｐｏｌｙｌｉｎｅ”が出現するため、要素“ｐｏｌｙｌｉｎｅ”について記載するレコードをノードテーブルに追加する。図４においては、符号Ｎ２を付与したレコードが該当するレコードである。要素“ｐｏｌｙｌｉｎｅ”は、ルート要素の２つ下に位置するため階層フィールドは“２”であり、ノード種別フィールドは符号化テーブルより“０”であり、ノード名フィールドは符号化テーブルより“２”であり、データ型、データ数及びデータ保存位置フィールドは総て“−１”である。尚、前ポインタは要素“ｇ”に対応するレコードを示し、後ポインタは次に出現する属性“ｐｏｉｎｔｓ”に対応するレコードを示す。
【００４２】
（属性“ｐｏｉｎｔｓ”）  図１（ａ）より、続いて、属性“ｐｏｉｎｔｓ”が出現するため、属性“ｐｏｉｎｔｓ”について記載するレコードをノードテーブルに追加する。図４においては、符号Ｎ３を付与したレコードが該当するレコードである。属性“ｐｏｉｎｔｓ”は、ルート要素の３つ下に位置するための階層フィールドは“３”であり、ノード種別フィールドは属性であるため符号化テーブルより“１”であり、ノード名フィールドは符号化テーブルより“０”であり、データ型フィールドは符号化テーブルより“１”であり、データ数フィールドは、属性値が“１００、１２０、１３０、１４０、１５０、１６０”の６つの数字からなっているため“６”であり、データ保存位置フィールドは、属性値を格納するデータテーブル内の位置を示す“Ｄ０”である。尚、前ポインタフィールドは要素“ｐｏｌｙｌｉｎｅ”に対応するレコードを示し、後ポインタフィールドは次に出現する２番目の要素“ｇ”に対応するレコードを示す。また、続いて、ノードのデータ、つまり、属性値をデータテーブル内で、データ保存位置フィールドがポイントする位置に格納する。
【００４３】
（要素“ｇ）  図１（ａ）より、続いて、２番目の要素“ｇ”が出現するため、要素“ｇ”について記載するレコードをノードテーブルに追加する。図４においては、符号Ｎ４を付与したレコードが該当するレコードである。要素“ｇ”の階層フィールドは“１”であり、ノード種別フィールドは符号化テーブルより“０”であり、ノード名フィールドは符号化テーブルより“１”であり、データ型、データ数及びデータ保存位置フィールドは、総て“−１”である。尚、前ポインタは属性“ｐｏｉｎｔｓ”に対応するレコードを示し、後ポインタは次に処理する要素“ｔｅｘｔ”に対応するレコードを示す。
【００４４】
（要素“ｔｅｘｔ”）  図１（ａ）より、続いて、要素“ｔｅｘｔ”が出現するため、要素“ｔｅｘｔ”について記載するレコードをノードテーブルに追加する。図４においては、符号Ｎ５を付与したレコードが該当するレコードである。要素“ｔｅｘｔ”の階層フィールドは“２”であり、ノード種別フィールドは符号化テーブルより“０”であり、ノード名フィールドは符号化テーブルより“３”であり、データ型、データ数及びデータ保存位置フィールドは、総て“−１”である。尚、前ポインタは２番目の要素“ｇ”に対応するレコードを示し、後ポインタは次に出現する要素値に対応するレコードを示す。
【００４５】
（要素値）  図１（ａ）より、要素値が出現するため、要素値について記載するレコードをノードテーブルに追加する。図４においては、符号Ｎ６を付与したレコードが該当するレコードである。要素値の階層フィールドは“３”であり、ノード種別フィールドは要素値であるため符号化テーブルより“２”であり、データ型フィールドは符号化テーブルより“０”であり、データ数フィールドは、“あいう”の３文字であるため“３”であり、データ保存位置フィールドは、要素値を格納するデータテーブル内の位置である“Ｄ１”である。また、ノード名フィールドは、図３のＳ３６より“−１”である。尚、前ポインタは要素“ｔｅｘｔ”に対応するレコードを示し、後ポインタは、最後のノードであるため“該当しない”を示す。
【００４６】
以上、ノードテーブル及びデータテーブルにより構造化文書の構造を含めた文書内容の認識が可能である。
【００４７】
本発明による符号化方法で符号化された構造化文書の符号化データは、構造化文書で使用されているノードについての、木構造でのノード位置、ノード種別、ノード名、データ情報及びデータ保存位置を、それぞれ固定長の符号語で示す固定長のレコードを有する。ここで、ノード位置とは、本実施形態においては階層、前ポインタ及び後ポインタフィールドであり、データ情報とは、本実施形態においてはデータ型及びデータ数フィールドである。
【００４８】
つまり、本発明による符号化方法では、ノードのデータ以外を、固定長のレコードで表現することにより、構造化文書の検索、編集処理を行う装置では、レコードの編集に伴うメモリ領域の割当て処理や、検索を行う場合の検索位置の計算処理等を簡略化することができ、検索や編集の処理負担が低減される。
【００４９】
また、符号化テーブルにおいて、構造化文書で使用するノード属性、ノード名及びデータ型の符号語を定義し、更に、ノード位置、データ保存位置、データ数等も符号化して表現することで、テキスト形式でのデータ量と比較して構造化文書を記述するためのデータ量を削減することができる。
【００５０】
本発明による復号装置は、符号化テーブルと、ノードテーブルと、データテーブルからもとの構造化文書を復号又は復元する。ここで、符号化テーブルで定義されるノード種別、ノード名及びデータ型が共通であるかぎり、符号化テーブルは、個々の構造化文書とは切り離すことができるため、個々の構造化文書の送受信は、ノードテーブルとデータテーブルの送受信のみにより行い、各構造化文書に共通して使用できる符号化テーブルは予め符号化装置と復号装置で共有しておくことも可能である。
【００５１】
いずれにしても、復号装置は、ノードテーブルのノード種別及びノード名フィールドに設定されている符号語を、符号化テーブルを用いて復号して、ノード種別及びノード名を認識し、階層、前ポインタ及び後ポインタフィールドに設定されている符号語を復号して構造化文書内でのノードの位置を認識し、データ型フィールドに設定されている符号語を、符号化テーブルを用いて復号してデータ型を認識し、データ数フィールドに設定されている符号語を復号してデータ数を認識し、データ保存位置フィールドに設定されている符号語を復号して、データテーブルに設定されているノードのデータを認識する。
【００５２】
続いて、本発明による符号化方法で符号化された構造化文書の編集処理について説明を行う。本編集処理は、本発明による符号化装置及び復号装置が実行するものである。尚、以後の説明において、ノードテーブルの各レコードを、ノードに付与している符号で特定する。つまり、例えば、図４の要素“ｓｖｇ”について記載しているレコードをレコードＮ０と表現して特定する。
【００５３】
図５（ａ）は、図１に示す構造化文書から要素“ｐｏｌｙｌｉｎｅ”削除した後の文書内容を示している。要素“ｐｏｌｙｌｉｎｅ”を削除することは、削除するノードの配下にある全ノードの削除を、つまり、本例においては、属性“ｐｏｉｎｔｓ”の削除も意味する。したがって、図４のレコードＮ２及びＮ３を削除するとともに、レコードＮ２をポイントしている、レコードＮ１の後ポインタフィールドと、レコードＮ３をポイントしている、レコードＮ４の前ポインタフィールドを変更することで編集を行うことも可能である。
【００５４】
しかし、図５（ｂ）に示す様に、ノードテーブルに削除を示すレコードＮ７を追加し、削除するレコード群の前にあるレコードの後ポインタフィールドと、後にあるレコードの前ポインタフィールドを、それぞれレコードＮ７をポイントするように変更する構成とすることも可能である。具体的には、図５（ｂ）に示す様に、削除を示すレコードＮ７を追加し、レコードＮ１の後ポインタフィールド及びレコードＮ４の前ポインタフィールドを、それぞれ、追加した削除を表すレコードＮ７を示す様に変更する。
【００５５】
この場合、削除を表すレコードは、例えば、ノード種別で要素を表し、ノード名を通常の要素であればとり得ることのない“−１”に設定することで特定する。削除を示すレコードの追加による削除処理の利点は、階層構造が深い場合、その上位の要素等を削除することにより複数のノードが削除されることになるが、削除対象ノードに対応するレコード総てをノードテーブルから削除する処理方法に較べ、ノードテーブルのメモリ上での更新処理量が少なくなり、装置の処理負担を軽くすることができることである。
【００５６】
図６は、図５（ａ）に示す構造化文書の要素値を“あいう”から“えお”と変更した後の文書内容と、編集されたノードテーブルを示す図である。要素値“あいう”から“えお”への変更であるため、図５（ｂ）の要素値について記載しているレコードＮ６のデータ数フィールドを“２”と変更した上で、“Ｄ１”で示されるデータテーブルの内容を“えお”に変更する構成とすることも可能であり、また、レコードＮ６のデータ数フィールド及びデータ保存位置フィールドを、それぞれ“２”及び“Ｄ２”に変更した上で、“Ｄ２”が示すデータテーブルに“えお”を設定する構成とすることも可能である。
【００５７】
しかし、図６（ｂ）に示す様に、ノードテーブルに変更後の要素値について記載するレコードＮ８を追加し、変更前の要素値をポイントしているレコードＮ５の後ポインタフィールドを、変更後の要素値を表すレコードＮ８をポイントするように変更する構成とすることも可能である。要素値の変更時に、合わせて要素等の削除が行われる場合には、要素の削除で説明したのと同様の理由により処理が軽くなる利点がある。
【００５８】
図７は、図６（ａ）に示す構造化文書のルート要素の子要素として、要素“ｐｏｌｙｌｉｎｅ”を追加した後の文書内容と、対応する、編集されたノードテーブルを示す図である。図７（ｂ）に示すとおり、追加する、要素“ｐｏｌｙｌｉｎｅ”を記述するレコードＮ９をノードテーブルに追加して、追加に伴う既存レコードの前ポインタ及び後ポインタフィールドを変更する。
【００５９】
図８は、本発明による復号装置が、図７（ｂ）に示すノードテーブルから構造化文書を復号する方法について説明する図である。図８において、各ノードに付与している符号は、図７（ｂ）における各レコードの符号に対応しており、点線の矢印は前ポインタ及び後ポインタでのポイントを示している。ここで、双方向の矢印は、前ポインタフィールドと後ポインタフィールドが、それぞれポイントし合う関係にあることを示している。つまり、例えば、Ｎ５の後ポインタフィールドはＮ８を示し、Ｎ８の前ポインタフィールドはＮ５を示していることを表している。Ｎ２、Ｎ３及びＮ６のように、自身に向く矢印がないノードは、他からポイントされないノード、即ち、削除等の編集処理が行われたノードであり、復号過程において、実際には無視される。
【００６０】
したがって、図７（ｂ）のノードテーブルの前ポインタ及び後ポインタから、図８のＮ０−Ｎ１―Ｎ７−Ｎ４−Ｎ５−Ｎ８−Ｎ９とつながる関係が認識でき、各要素の階層は階層フィールドから認識できるため、各ノードについて実線で示す木構造での位置を認識でき、編集後の木構造を再現することができる。尚、図８の符号Ｎ７は、削除を示すレコードであり、実際には表示等はされない。
【００６１】
尚、上記実施形態では、ノードテーブルでデータ数及びデータ型を示すこととしたが、どちらか、あるいは、両方をデータテーブル側に持たせ、ノードテーブルにおいては、ノードのデータに関しては、データテーブルへのポインタ値のみを持たせる構成とすることも可能である。
【００６２】
本発明による符号化方法は、コンピュータに読み込まれることで上述した処理を実行するプログラムにより、本発明による符号化装置及び復号装置は、コンピュータに読み込まれることで、コンピュータを上記装置として動作させるプログラムにより実現可能である。
【図面の簡単な説明】
【００６３】
【図１】本発明による符号化方法の説明に用いる構造化文書を示す図である。
【図２】本発明による符号化装置が保持する符号化テーブルを示す図である。
【図３】本発明による符号化方法の処理フロー図を示す図である。
【図４】図１に示す文書の符号化結果を示す図である。
【図５】図１に示す構造化文書から要素削除後の文書内容と、対応する、編集されたノードテーブルを示す図である。
【図６】図５に示す構造化文書の要素値変更後の文書内容と、対応する、編集されたノードテーブルを示す図である。
【図７】図６に示す構造化文書の要素追加後の文書内容と、対応する、編集されたノードテーブルを示す図である。
【図８】図７に示すノードテーブルの復号を説明する図である。
【符号の説明】
【００６４】
Ｎ０〜Ｎ９  ノード
【図１】
0004821287.tif 000002
【図２】
0004821287.tif 000003
【図３】
0004821287.tif 000004
【図４】
0004821287.tif 000005
【図５】
0004821287.tif 000006
【図６】
0004821287.tif 000007
【図７】
0004821287.tif 000008
【図８】
0004821287.tif 000009