(57)【要約】【課題】  構造化文書を更に小さいデータサイズで符号化することを可能にする技術を提供する。【解決手段】  構造化文書を符号化して符号化文書を生成する符号化装置であって、構造化文書の文書構造と、当該文書構造を符号化するための第１符号とを含む対応情報を記憶手段から読み出す読出手段と、前記対応情報に含まれる文書構造に基づいて、処理対象の構造化文書に含まれる部分の文法が妥当であるか否かを検証する妥当性検証手段と、前記妥当性検証手段において文法が妥当であると検証された部分について、前記第１符号を用いて前記構造化文書を符号化する符号化手段と、を備える。【選択図】  図９
2008204000.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書を符号化して符号化文書を生成する符号化装置であって、
構造化文書の文書構造と、当該文書構造を符号化するための第１符号とを含む対応情報を記憶手段から読み出す読出手段と、
前記対応情報に含まれる文書構造に基づいて、処理対象の構造化文書に含まれる部分の文法が妥当であるか否かを検証する妥当性検証手段と、
前記妥当性検証手段において文法が妥当であると検証された部分について、前記第１符号を用いて前記構造化文書を符号化する符号化手段と、
を備えることを特徴とする符号化装置。
【請求項２】
前記読出手段は、更に、変数値を符号化するための第２符号と、前記妥当性検証手段において文法が妥当であると検証された部分の範囲を符号化するための第３符号と、を前記記憶手段から読み出し、
前記符号化手段は、前記妥当性検証手段において妥当であると検証された前記部分について、前記第１符号と、前記第２符号と、前記第３符号と、を用いて前記構造化文書を符号化する
ことを特徴とする請求項１に記載の符号化装置。
【請求項３】
構造化文書の文書構造を示すスキーマ情報を解析し、当該文書構造に前記第１符号として符号を割り当て、当該文書構造と当該符号とを追加して前記対応情報を更新する更新手段を更に備える
ことを特徴とする請求項１又は２に記載の符号化装置。
【請求項４】
前記スキーマ情報は、ＤＴＤ、ＸＭＬ Ｓｃｈｅｍａ、又は、ＲＥＬＡＸ ＮＧに基づいて記述される
ことを特徴とする請求項３に記載の符号化装置。
【請求項５】
請求項２に記載の符号化装置により符号化された符号化文書を復号して構造化文書を生成する復号装置であって、
前記対応情報を第２記憶手段から読み出す第２読出手段と、
前記対応情報により示される前記文書構造に基づいてＤＯＭツリーを生成し、メモリ装置に記憶する記憶制御手段と、
処理対象の符号化文書を解析して復号処理を行う復号手段であって、前記第１符号を解析したことに応じて、前記第３符号により示される範囲について、前記第２符号により示される変数値を前記ＤＯＭツリーの対応するノードに割り当てる、復号手段と、
を備えることを特徴とする復号装置。
【請求項６】
構造化文書を符号化して符号化文書を生成する符号化装置の制御方法であって、
読出手段が、構造化文書の文書構造と、当該文書構造を符号化するための第１符号とを含む対応情報を記憶手段から読み出す読出工程と、
妥当性検証手段が、前記対応情報に含まれる文書構造に基づいて、処理対象の構造化文書に含まれる部分の文法が妥当であるか否かを検証する妥当性検証工程と、
前記妥当性検証工程において文法が妥当であると検証された部分について、符号化手段が、前記第１符号を用いて前記構造化文書を符号化する符号化工程と、
を備えることを特徴とする符号化装置の制御方法。
【請求項７】
前記読出工程においては、更に、変数値を符号化するための第２符号と、前記妥当性検証工程において文法が妥当であると検証された部分の範囲を符号化するための第３符号と、が前記記憶手段から読み出され、
前記符号化工程においては、前記妥当性検証工程において妥当であると検証された前記部分について、前記第１符号と、前記第２符号と、前記第３符号と、を用いて前記構造化文書が符号化される
ことを特徴とする請求項６に記載の符号化装置の制御方法。
【請求項８】
請求項７に記載の符号化装置の制御方法により符号化された符号化文書を復号して構造化文書を生成する復号装置の制御方法であって、
第２読出手段が、前記対応情報を第２記憶手段から読み出す第２読出工程と、
記憶制御手段が、前記対応情報により示される前記文書構造に基づいてＤＯＭツリーを生成し、メモリ装置に記憶する記憶制御工程と、
復号手段が処理対象の符号化文書を解析して復号処理を行う復号工程であって、前記第１符号を解析したことに応じて、前記第３符号により示される範囲について、前記第２符号により示される変数値を前記ＤＯＭツリーの対応するノードに割り当てる、復号工程と、
を備えることを特徴とする復号装置の制御方法。
【請求項９】
コンピュータを、請求項１乃至４のいずれか１項に記載の符号化装置、又は、請求項５に記載の復号装置として機能させるためのプログラム。
【請求項１０】
請求項９に記載のプログラムを格納したコンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＸＭＬデータを符号化・復号するための情報処理技術に関する。
【背景技術】
【０００２】
ＸＭＬ文書、ＨＴＭＬ文書等の構造化文書はテキスト形式のデータであるため、これらの構造化文書を解析する処理装置は、構造化文書の読み書きや保存などを主にテキスト形式で行ってきた。しかし、構造化文書は冗長なデータを含むため、コンピュータがテキスト形式のデータとして構造化文書を読み書きするのには、時間がかかってしまう。このため、構造化文書をバイナリデータの形式で表現・処理することで、データサイズを小さくする、いわゆるバイナリＸＭＬという技術が近年開発されている。なお、ＸＭＬはeXtensible Markup Languageの略称であり、ＨＴＭＬはHyperText Markup Languageの略称である。
【０００３】
例えば、Sun MicrosystemsのFast Infosetでは、ＸＭＬデータ中に含まれる要素名や属性名などの各ボキャブラリをＸＭＬデータ内の出現順に番号を振って符号化する。これにより、ＸＭＬデータのサイズを小さくすることが可能である。符号と各ボキャブラリの対応を示す表は符号化テーブルと呼ばれる。なお、Fast Infosetの技術詳細は、例えば、次のリンク先に記載されている。
http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=41327&scopelist=PROGRAMME
【０００４】
また、ＫＤＤＩのＸＥＵＳは、属性値や要素内容に、カンマやスペースなどのセパレータで区切られた数値の配列がある場合において、そのデータ全体を文字列として符号化するのではなく、セパレータで区切って各数値を符号化する。これにより、ＸＭＬデータを効率的に圧縮することが可能である。なお、ＸＥＵＳは、"XML document Encoding with Uniformed Sheet"の略称である。
【０００５】
また、ＭＰＥＧのＢｉＭや、特許文献１に開示された構成では、構造化文書の文法（文書構造）を定義したＸＨＴＭＬやＳＶＧのスキーマに含まれるデータの型情報を解析して、各属性値や要素内容のデータ型に対して最適な符号化を行う。これにより、ＸＭＬデータを効率的に圧縮することが可能であった。なお、ＭＰＥＧは、Moving Picture Expert Groupの略称である。ＢｉＭは、Binary Format for MPEG-7の略称であり、以下のリンク先から技術情報を取得できる。
http://www.iso.ch/iso/en/prods-services/popstds/mpeg.html
ＳＶＧは、Scalable Vector Graphicsの略称である。ＸＨＴＭＬは、Extensible HyperText Markup Languageの略称である。
【特許文献１】特開２００５−２１５９５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来技術で用いているＸＨＴＭＬやＳＶＧなどのスキーマは、構造化文書の一般的な文法（文書構造）を定義するものである。よって、ある特定のアプリケーションにおいて、同じ文書構造のＸＭＬデータが繰り返し出現する場合でも、従来技術は、構造化文書の一般的な文法を定義したスキーマの情報を用いるので、アプリケーション固有の文書構造に対して符号化を行っていなかった。
【０００７】
例えば、図１のようなＳＶＧ（Scalable Vector Graphics）で記述された構造化文書があるとする。図１は、同じ文書構造が繰り返し出現する構造化文書を例示する図である。図１において、９１０１〜９１０３は、属性値、文字列等の変数値は異なるが、それぞれ同じ文書構造を有している。この構造化文書において、circleという名前の空要素はcx,cy,r,fill,stroke,stroke-widthといった複数の属性値を有している。そのcircle要素の次にはtext要素が出現している。そのtext要素はx,y,font-sizeといった複数の属性値を持ち、要素内容として文字列を有している。そして、その構造化文書に含まれるcircle要素とtext要素は、図１の９１０４のように、各ボタンを表現しているとする。
【０００８】
従来のバイナリＸＭＬ技術では、ＳＶＧのスキーマを用いて、circle要素の各属性値のデータ型を解析して、そのデータ型に符号化を行うことで、図２のような符号化テーブルを生成し、図３、図４に示すような構造化文書を符号化していた。しかし、図１のボタンオブジェクトのように、アプリケーション固有の繰り返し出現する文書構造そのものに対して、符号を割り振ることはしておらず、データサイズを小さくすることに限界があった。
【０００９】
図２は、従来のバイナリＸＭＬ技術により生成された符号化テーブルを例示する図である。図３、図４は、従来のバイナリＸＭＬ技術により符号化された符号化文書を例示する図である。図１のように、符号化対象の構造化文書では同じ文書構造が繰り返し用いられているにも関わらず、図２〜４のように、従来の構成では、要素名や属性名毎に符号が割り当てられていた。このため、従来の符号化手法により生成された符号化文書のデータサイズは、更に小さくできる余地があった。
【００１０】
本発明は上記課題に鑑みなされたものであり、構造化文書を更に小さいデータサイズで符号化することを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明による符号化装置は以下の構成を備える。即ち、
構造化文書を符号化して符号化文書を生成する符号化装置であって、
構造化文書の文書構造と、当該文書構造を符号化するための第１符号とを含む対応情報を記憶手段から読み出す読出手段と、
前記対応情報に含まれる文書構造に基づいて、処理対象の構造化文書に含まれる部分の文法が妥当であるか否かを検証する妥当性検証手段と、
前記妥当性検証手段において文法が妥当であると検証された部分について、前記第１符号を用いて前記構造化文書を符号化する符号化手段と、
を備える。
【発明の効果】
【００１２】
本発明によれば、構造化文書を更に小さいデータサイズで符号化することを可能にする技術を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、添付図面を参照して本実施形態に係る符号化装置及び復号装置の構成例を説明する。本実施形態では、説明の簡略化のため、符号化装置及び復号装置を同一の情報処理装置で実現した場合を例示的に想定して説明するが、それぞれを別の装置で実現してもよい。また、この実施の形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
【００１４】
（情報処理装置の構成）
図５は本実施形態に係る情報処理装置を備えるシステムの概要を示した構成図である。同図において、本実施形態に係る情報処理装置としてのＰＣ（パーソナルコンピュータ）１０１は、ＬＡＮ１０２に接続されている。ＬＡＮ１０２には、デジタルカメラ１０３、プリンタ１０４、ファイルサーバ１０５が接続されている。
【００１５】
図６は、本実施形態に係る情報処理装置としてのＰＣ１０１の構成を示すブロック図である。同図において、ＣＰＵ２０１はシステム制御部であり、装置全体を制御する。ＲＯＭ２０２は、ＣＰＵの制御プログラムや各種固定データを格納する記憶装置である。ＲＡＭ２０３は、ＳＲＡＭ、ＤＲＡＭなどで構成され、プログラム制御変数などを格納するための記憶装置である。また、各種設定パラメータ、各種ワーク用バッファもＲＡＭ２０３に格納される。記憶部２０４はハードディスクなどで構成され、文書データや画像データなどを各種データファイルを格納するための記憶装置である。操作部２０５はキーボードやマウス、タッチパネルなどで構成され、オペレータが各種入力操作を行うための指示入力装置である。表示部２０６は、画像を表示するテレビジョン等のディスプレイ装置である。ＬＡＮi/f２０７は、ＬＡＮ回線２０８に接続するためのインターフェースである。ＵＳＢi/f２０９は、ＵＳＢ回線２１０に接続するためのインターフェースである。
【００１６】
なお、本実施形態では、本実施形態に係る情報処理装置をパーソナルコンピュータ（ＰＣ）で実現した場合を想定して説明するが、これに限られない。例えば、ワークステーション（ＷＳ）、携帯情報端末（ＰＤＡ）等で実現してもよい。
【００１７】
また、本実施形態では、説明の便宜のため、本実施形態に係る情報処理装置を１つの装置で実現した構成について述べるが、複数の装置にリソースを分散した構成によって実現してもよい。例えば、記憶や演算のリソースを複数の装置に分散した形に構成してもよい。或いは、情報処理装置上で仮想的に実現される構成要素毎にリソースを分散し、並列処理を行うようにしてもよい。
【００１８】
以下、図１のボタンオブジェクト９１０１〜９１０３のように、繰り返し同じ文書構造が出現する構造化文書について、その文書構造自体を符号化することによって、データサイズを小さくする手法について説明していく。なお、本実施形態では構造化文書の一例としてＸＭＬデータに対して処理を行う場合を想定するが、これに限られるわけではない。
【００１９】
（スキーマ）
図７は、図１に例示した、繰り返し同じ文書構造が出現するＸＭＬデータについて、ＲＥＬＡＸ ＮＧで記述したスキーマを示す図である。このスキーマは、符号化処理を行う前に、構造化文書の文書構造を基に事前に作成しておく必要がある。本実施形態に係る情報処理装置（ＰＣ１０１）は、このスキーマを基に、繰り返し出現する文書構造を含む構造化文書を符号化する。
【００２０】
図７に例示したスキーマは、RELAX NGにおけるdefine要素を用いて、１つのボタンオブジェクトを構成するcircle要素とtext要素のスキーマを、それぞれ７０１、７０２において定義している。そのcircle要素とtext要素は、RELAX NGにおけるelement要素を用いて定義されている（７０３、７０４）。また、circle要素とtext要素の各属性は、RELAX NGにおけるattribute要素を用いて定義されている。ここでは、circle要素に含まれる属性cx,cy,r,stroke-widthの属性値のデータ型がdouble型と定義され（７０５〜７０８）、同様に、属性fill,strokeについてはstring型と定義されている（７０９、７１０）。このデータの型名は、W3C XML Schema Part2:datatypes（http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html）で定義されている。また、text要素に含まれる属性x,y,font-sizeの属性値のデータ型は、double型と定義されている（７１１〜７１３）。なお、本実施形態では、属性値、要素内容等のデータを総称して変数値と呼ぶ。
【００２１】
circle要素、text要素から成るボタンオブジェクトの他に、オブジェクトが存在するならば、その各オブジェクトのスキーマを、別のdefine要素の子要素として定義する。図８は、上述のボタンオブジェクトの他に、ユーザのテキスト入力を受け付けるテキストフィールドのオブジェクトをさらに追加して定義した例である。図８において、８０１は、テキストフィールドのオブジェクト定義を示している。図８のように、define要素をいくつも並べることによって、繰り返し出現するオブジェクトの文書構造を複数定義することができる。
【００２２】
ここで、本実施形態では、スキーマ言語としてRELAX NGを例に説明しているが、例えば、ＤＴＤやＸＭＬ Ｓｃｈｅｍａ（W3C XML Schema）等の他のスキーマ言語を用いてもよい。或いは、スキーマの短縮記法(http://www.oasis-open.org/committees/relax-ng/compact-20021121.htm)を用いてもよい。
【００２３】
（文書構造の符号化処理）
次に、繰り返し同じ文書構造が出現する構造化文書において、その文書構造自体をＰＣ１０１が符号化する手順について、図９を参照して説明する。図９は、文書構造の符号化処理の手順を示すフローチャートである。以下の処理は、本実施形態に係る情報処理装置としてのＰＣ１０１が備える、ＣＰＵ２０１の制御に基づいて実行される。
【００２４】
ステップＳ１０１で処理を開始すると、まず、図７に例示したような処理対象のスキーマを記憶部２０４等から読み出し、解析して内部メモリに格納する（ステップＳ１０２）。
【００２５】
次に、内部メモリに格納されたスキーマのデータを用いて、繰り返し出現する内容モデルを符号化する（ステップＳ１０３）。ステップＳ１０３における詳細について、図１０を参照して説明する。図１０は、ステップＳ１０３において実行する処理の詳細な手順を示すフローチャートである。
【００２６】
ステップＳ２０１において（ステップＳ１０３の）処理を開始すると、まず、内部メモリに格納されているスキーマについて、繰り返し出現する内容モデルを定義した、各define要素以下のスキーマを解析する（ステップＳ２０２）。次に、そのdefine要素以下のスキーマを符号化テーブルにおけるボキャブラリとして、内部メモリに格納する（ステップＳ２０３）。図１１は、図７に例示したボタンオブジェクトのスキーマを基に生成されたボキャブラリを示す図である。図１１に示すように、ボタンオブジェクトを定義したdefine要素以下のスキーマの内容がボキャブラリに該当する。
【００２７】
次に、ステップＳ２０３において生成したボキャブラリを符号化テーブルに追加する（ステップＳ２０４）。つまりステップＳ２０２〜Ｓ２０４では、構造化文書の文書構造を示すスキーマ情報を解析し、当該文書構造に符号を割り当て、当該文書構造と当該符号との対応関係に基づき符号化テーブルを更新している。スキーマに含まれる各部分文書構造（本実施形態では、＜define＞で始まり＜/define＞で終わる部分文書構造）にそれぞれ符号が付与される。なお、ステップＳ２０４では、繰り返し出現する内容モデルの開始フラグと、終了フラグを符号化テーブルに追加する。この開始フラグは、繰り返し出現する文書構造のボキャブラリの開始を示すものであり、終了フラグは、繰り返し出現する文書構造の終了を示すものである。つまり、開始フラグと終了フラグは、予め定義された文書構造に照らして妥当である範囲を符号化するための第３符号として機能する。この開始フラグと終了フラグは、繰り返し出現する他の文書構造に対しても、開始と終了を示す符号として用いられる。
【００２８】
以上の手順を、内部メモリに格納したスキーマの各define要素について行う。即ち、ステップＳ２０４の処理が終了すると、ステップＳ２０５において、全てのdefine要素についてステップＳ２０２〜Ｓ２０４の処理が処理済みであるか否かを判定する。処理済みの場合（ステップＳ２０５でＹＥＳ）はステップＳ１０３を終了する。処理済みでない場合（ステップＳ２０５でＮＯ）はステップＳ２０２へ戻り、まだ処理を行っていないdefine要素について、ステップＳ２０２〜Ｓ２０４の処理を実行する。
【００２９】
図１２は、ステップＳ１０３を終了した後の符号化テーブルを例示する図である。符号０x０５には、繰り返し出現する内容モデルの開始フラグをボキャブラリとして格納しており（１２０１）、符号０x０６には、繰り返し出現する内容モデルの終了フラグをボキャブラリとして格納している（１２０２）。また、符号０x０７には、図１１のボキャブラリを格納している（１２０３）。もし、他にも繰り返し出現する内容モデルがある場合には、この後の符号０x０８以降にその内容モデルのスキーマをボキャブラリとして追加していく。図１２のように、符号化テーブルは、構造化文書の文書構造と当該文書構造を符号化するための第１符号とを含む対応情報としての役割を有している。なお、上記の符号化テーブルは予め作成しておき、記憶手段としての記憶部２０４等に記憶しておいて、必要なときに情報処理装置の機能により実現される読出手段が記憶部２０４から読み出して使用するようにしてもよい。。
【００３０】
図９の説明に戻る。ステップＳ１０３の処理が終了すると、次に、解析したスキーマの情報を基に、ＤＯＭツリーを生成して、そのＤＯＭツリーの構造を単純なツリー構造に変換して内部メモリに保存する（ステップＳ１０４）。ツリー構造の単純化処理は、ＲＥＬＡＸ ＮＧ仕様書の単純化の処理手順（http://www.relaxng.org/spec-20011203.html#simplification）に基づいて行う。そして、スキーマのＤＯＭツリーの各ノードには、ＸＭＬデータに対して検証したかどうかを示すフラグを持ち、その各フラグをＸＭＬデータに対して未検証状態として初期化する。
【００３１】
次に、ステップＳ１０５以降の処理において、ステップＳ１０３で生成した図１２の符号化テーブルを用いて、ＸＭＬデータを解析して符号化していく。符号化して内部メモリに格納した構造化文書を、ここでは符号化文書と呼ぶことにする。符号化文書の最初の状態は、符号を１つも格納していない状態とする。まず、ステップＳ１０５において、まだ解析していないＸＭＬデータの解析を行う。
【００３２】
次に、構造化文書の全てのＸＭＬデータを解析したかどうか判断する（ステップＳ１０６）。全てのＸＭＬデータが解析済みであると判断した場合（ステップＳ１０６でＹＥＳ）は、処理を終了する。もし全てのＸＭＬデータを解析していないと判断した場合（ステップＳ１０６でＮＯ）は、ステップＳ１０７へ進む。
【００３３】
ステップＳ１０７では、符号化テーブルに格納しているボキャブラリのスキーマを基に、繰り返し出現するＸＭＬデータかどうか検証する。例えば、図１のＸＭＬデータのパース中に、各要素を読み込んで内部メモリに保存した後、そのボタンオブジェクトのボキャブラリであるスキーマと検証する。
【００３４】
このステップＳ１０７において実行する、図１１の符号０x０７に割り当てられているボキャブラリであるスキーマと、ＸＭＬデータの検証手順の詳細について図１３を用いて説明する。図１３は、ＸＭＬデータが繰り返し出現する内容モデルであるかどうかを検証する処理の手順を示すフローチャートである。
【００３５】
まず、ステップＳ１０４において内部メモリに格納したスキーマのＤＯＭツリーにおける各ノードについて、ＸＭＬデータと検証済みであるかどうかのフラグを調べることによって全てのノードに対して検証済みかどうかを判断する（ステップＳ３０２）。もし、全てのノードが検証済みではないと判断した場合（ステップＳ３０２でＮＯ）は、ＸＭＬデータに係るＤＯＭツリーの未検証ノードに対して検証を行う（ステップＳ３０３）。このときに、要素名、要素の名前空間、持つことのできる属性の数、属性名、属性の名前空間、要素内容のデータ型、属性値のデータ型について検証する。
【００３６】
次に、ステップＳ３０４において、ＸＭＬデータが未検証ノードに対して妥当かどうか判断する。即ち、ステップＳ３０４では、符号化テーブルにより示される文書構造に基づいて、処理対象のＸＭＬデータに含まれる部分の文法が妥当であるか否かを検証する妥当性検証を行う。もし妥当と判断した場合（ステップＳ３０４でＹＥＳ）は、ステップＳ３０５へ進む。ステップＳ３０５では、検証する際に参照したＤＯＭツリーのノードに対して、検証済みのフラグを立てて、ステップＳ３０２へ戻る。同様にして、その後に続くＸＭＬデータに対して、同様に全てのノードに対して検証を繰り返し、妥当と判断したならば検証済みのフラグを立てていく。この際に、検証済みのＸＭＬデータを内部メモリから解放しないで、このスキーマに対する検証が終了するまで、引き続き内部メモリに保存しておく。
【００３７】
このようにしてステップＳ３０３〜Ｓ３０５の処理を繰り返した後に、ステップＳ３０２において、スキーマのＤＯＭツリーの全てのノードに対して検証済みと判断した場合（ステップＳ３０２でＹＥＳ）は、ステップＳ３０６へ進む。ステップＳ３０６では、それまでに検証したＸＭＬの部分データが妥当であると判断し、ステップＳ１０７を終了する。ステップＳ３０６を経由することはステップＳ１０７でＹＥＳであることに相当する。従って、ステップＳ１０７の処理を終了すると、ステップＳ１０８〜ステップＳ１１１の繰り返し出現する内容モデルの符号化処理を行う。なお、内容モデルの符号は第１符号として機能する。
【００３８】
一方で、ステップＳ３０４の検証中に、ＸＭＬデータが非妥当と判断した場合（ステップＳ３０４でＮＯ）は、ステップＳ３０７において、ＤＯＭツリーの検証済みのフラグを全て未検証状態に初期化する。次に、ステップＳ３０８において、非妥当と判断し、ステップＳ１０７の処理を終了する。ステップＳ３０６を経由することはステップＳ１０７でＹＥＳであることに相当する。従って、ステップＳ１０７の処理を終了すると、それまでに内部メモリに保存した検証済みのＸＭＬデータを用いて、ステップＳ１１２〜ステップＳ１１８の従来技術のような符号化処理を行う。
【００３９】
例えば、図１の構造化文書については、最初にsvg要素が出現するので、これはステップＳ３０４において非妥当と判断される（ステップＳ３０４でＮＯ）。このため、ステップＳ１１２〜ステップＳ１１８の処理を行う。そして、ステップＳ１０５に戻り、ステップＳ１０６を経由して（ステップＳ１０６でＮＯ）ステップＳ１０７へ進む。ステップＳ１０７では、svg要素の次のcircle要素については、ステップＳ３０３で検証の結果ステップＳ３０４で妥当と判断される（ステップＳ３０４でＹＥＳ）。このため、ステップＳ３０５において、text要素の検証時に参照したＤＯＭツリーのノードに対して検証済みのフラグを立てる。そして、ステップＳ３０２において次のtext要素を読み込んだときは、ＤＯＭツリーの全てのノードに対して検証済みとは判断されない（ステップＳ３０２でＮＯ）。このため、ステップＳ３０３において未検証ノードに対してtext要素を検証する。検証の結果、妥当と判断され、検証時に参照したノードに対して同様に検証済みのフラグを立てる。
【００４０】
続けてステップＳ３０２の処理を実行すると、ＤＯＭツリーの全てのノードに対して検証済みと判断される（ステップＳ３０２でＹＥＳ）ため、circle要素とtext要素はボタンオブジェクトの構成要素として妥当と判断される（ステップＳ３０６）。このためステップＳ１０７ではＹＥＳとなり、ステップＳ１０８へ進んで、その繰り返し出現する内容モデルの開始を示す符号として、図１１の符号化テーブルにおける符号０x０５を符号化文書に格納する。そして、先ほど検証に使用したスキーマであるボキャブラリに対応する符号を、符号化文書に追加する（ステップＳ１０９）。本実施形態では、その繰り返し出現する内容モデルの符号は０x０７なので、符号０x０７を符号化文書に追加することになる。次に、その繰り返し出現する内容モデルに含まれる属性値と要素内容を解析して符号化テーブルに追加し、同様にその符号を順番に符号化文書に追加する（ステップＳ１１０）。そして、繰り返し出現する内容モデルの符号化を終えた後、その終了を示す符号として０x０６を符号化文書に追加する（ステップＳ１１１）。ここで、先ほど内部メモリに格納したcircle要素とtext要素に関するＸＭＬデータを解放する。そして、ステップＳ１０５において、全てのＸＭＬデータを解析し、ステップＳ１０６において全てのＸＭＬデータに対して符号化を終えたかどうか判断する。
【００４１】
ステップＳ１０７において、符号化テーブルのボキャブラリであるスキーマに対して、繰り返し出現する内容モデルと判断できない場合（ステップＳ１０７でＮＯ）は、ステップＳ１１２へ進む。ステップＳ１１２からステップＳ１１８では、一時的に内部メモリに格納してあるＸＭＬデータの各要素について符号化処理を行う。例えば、先ほどのcircle要素とtext要素について、ステップＳ３０４においてcircle要素は妥当と判断されたが、その次のtext要素については非妥当と判断される場合を考える。この場合、妥当と判断した際に内部メモリに格納されたcircle要素と、非妥当と判断した次のtext要素それぞれに対して符号化処理を行う。
【００４２】
まず、先頭のデータが開始タグかどうか判断し（ステップＳ１１２）、もし、開始タグであると判断した場合（ステップＳ１１２でＹＥＳ）は、開始タグとして符号化を行う（ステップＳ１１３）。ステップＳ１１２において、もし開始タグと判断できない場合（ステップＳ１１２でＮＯ）は、属性かどうか判断する（ステップＳ１１４）。もし、属性と判断した場合（ステップＳ１１４でＹＥＳ）は、属性として符号を行う（ステップＳ１１５）。ステップＳ１１４において、属性と判断できない場合（ステップＳ１１４でＮＯ）は、要素内容かどうか判断する（ステップＳ１１６）。もし、要素内容であると判断した場合（ステップＳ１１６でＹＥＳ）は、要素内容として符号化する（ステップＳ１１７）。ステップＳ１１６において、もし要素内容であると判断しない場合（ステップＳ１１６でＮＯ）は、終了タグとして符号化を行う（ステップＳ１１８）。符号化処理を終えた後は、一時的に内部メモリに保存したＸＭＬデータを解放する。
【００４３】
図１４は、一連の符号化処理を行った後の符号化テーブルを例示する図である。また、図１５〜図１７は一連の符号化を行った後の、内部メモリに格納されている符号化文書を例示する図である。繰り返し出現する内容モデルの開始を示す符号０x０５の次には、その繰り返し出現する内容モデルの符号が格納されている。そして、その内容モデルの符号の次には、その内容モデルの持つ属性値、要素内容の符号が格納されている。そして、その内容モデルの属性値、要素内容の符号の集合の次には、その内容モデルの終了を示す符号が格納されている。以上、図１の構造化文書は、図１４に示す符号化テーブルの符号を用いて、図１５〜図１７の符号化文書に示すように符号化される。図３、図４と、図１５〜図１７を比較すると、本実施形態に係る構成による符号化文書の方がデータサイズが小さく、構造化文書を更に小さいデータサイズで符号化することが可能となっていることが明らかである。これは、本実施形態では、繰り返し使用される内容モデル、即ち、構造化文書の文書構造そのものに対して符号（第１符号）を割り当て、当該符号を使用して符号化を行っているためである。
【００４４】
次に、生成した符号化文書を元の構造化文書に復号する処理について、図１８を用いて説明する。図１８は、本実施形態に係る手法により符号化された符号化文書を復号する処理の手順を示すフローチャートである。
【００４５】
処理を開始すると（ステップＳ４０１）、まず、符号化文書に含まれる符号化テーブルを解析して内部メモリに格納する（ステップＳ４０２）。次に、ステップＳ４０３において、その符号化テーブルに含まれる、繰り返し出現する内容モデルのスキーマを基に、ＤＯＭツリーを生成し、内部メモリに保存する。つまり、符号化テーブルにより示される文書構造に基づいてＤＯＭツリーを生成し、当該ＤＯＭツリーをメモリ装置に記憶制御する。次に、符号化テーブルを用いて、符号化文書を先頭から読み込んで解析し、復号していく。
【００４６】
次に、符号化文書を全て解析したかどうか判断し（ステップＳ４０４）、全て解析していないと判断した場合（ステップＳ４０４でＮＯ）は、解析途中の符号が、繰り返し出現する内容モデルの開始符号であるかどうか判断する（ステップＳ４０５）。もし、符号化文書を全て解析したと判断した場合（ステップＳ４０４でＹＥＳ）は、復号処理を終了する（ステップＳ４１０）。
【００４７】
ステップＳ４０５において繰り返し出現する内容モデルの開始符号と判断した場合（ステップＳ４０５でＹＥＳ）、ステップＳ４０７へ進む。ステップＳ４０７では、繰り返し出現する内容モデルの終了符号であるか否かを判断し、終了符号ではない場合（ステップＳ４０７でＮＯ）はステップＳ４０８へ進む。ステップＳ４０８では、ＤＯＭのノードに値を割り当てる処理を行う。このようにして、ステップＳ４０７、ステップＳ４０８において、終了符号が出現するまで、内容モデルのＤＯＭにおける、属性値、要素内容の各ノードに対して、順番に各符号が参照している値を割り当てて、内部メモリに格納する。
【００４８】
そして、ステップＳ４０７において終了符号が出現したと判断した場合（ステップＳ４０７でＹＥＳ）はステップＳ４０９へ進む。ステップＳ４０９では、ステップＳ４０７〜ステップＳ４０８において内部メモリに格納したＤＯＭツリーに基づいて、ＸＭＬデータを生成する。ＸＭＬデータは、ＤＯＭツリーのルートのノードから、その子ノードを順番に辿っていき、要素名や属性名、要素内容や属性値を解析することによって行う。生成したＸＭＬデータは、内部メモリに格納する。そして、ステップＳ４０４へ戻る。
【００４９】
なお、ステップＳ４０５において、繰り返し出現する内容モデルの開始符号と判断しない場合（ステップＳ４０５でＮＯ）には、ステップＳ４０６において、その符号を用いて符号化テーブルのボキャブラリを参照することによって復号していく。そして、ステップＳ４０４へ戻る。
【００５０】
ステップＳ４０４において、符号化文書を全て解析したかどうか判断した場合（ステップＳ４０４でＹＥＳ）は処理を終了する。
【００５１】
以上のように、本実施形態に係る構成においては、テキストデータである構造化文書について、繰り返し同じ内容モデルのＸＭＬデータが出現する場合には、その内容モデルの文書構造自体をスキーマを用いて符号化する。そして、その内容モデルに含まれる属性値、要素内容をその符号の後に追加する。これにより、符号化後のＸＭＬデータのデータサイズを小さくすることが可能になる。
【００５２】
（その他の実施形態）
以上、本発明の実施形態例について詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様を取ることが可能である。具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【００５３】
尚、本発明は、前述した実施形態の機能を実現するプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【００５４】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明の技術的範囲に含まれる。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含む。
【００５５】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００５６】
プログラムを供給するための記録媒体としては、例えば、次のものが含まれる。即ち、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）等が含まれる。
【００５７】
その他、プログラムの供給形態としては、次のようなものも考えられる。即ち、クライアント装置のブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明に係るコンピュータプログラム、或いは、圧縮され自動インストール機能を含むファイルをＨＤ等の記録媒体にダウンロードする形態も考えられる。また、本発明に係るプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００５８】
また、次のような供給形態も考えられる。即ち、まず、本発明に係るプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布する。そして、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報の使用により暗号化されたプログラムを実行してコンピュータにインストールさせて本発明に係る構成を実現する。このような供給形態も可能である。
【００５９】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、次のような実現形態も想定される。即ち、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００６０】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づいても前述した実施形態の機能が実現される。即ち、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００６１】
【図１】同じ文書構造が繰り返し出現する構造化文書を例示する図である。
【図２】従来のバイナリＸＭＬ技術により生成された符号化テーブルを例示する図である。
【図３】、
【図４】従来のバイナリＸＭＬ技術により符号化された符号化文書を例示する図である。
【図５】情報処理装置を備えるシステムの概要を示した構成図である。
【図６】ＰＣの構成を示すブロック図である。
【図７】繰り返し同じ文書構造が出現するＸＭＬデータについて、ＲＥＬＡＸ ＮＧで記述したスキーマを示す図である。
【図８】ボタンオブジェクトの他に、ユーザのテキスト入力を受け付けるテキストフィールドのオブジェクトを定義した例である。
【図９】文書構造の符号化処理の手順を示すフローチャートである。
【図１０】ステップＳ１０３において実行する処理の詳細な手順を示すフローチャートである。
【図１１】ボタンオブジェクトのスキーマを基に生成されたボキャブラリを示す図である。
【図１２】符号化テーブルを例示する図である。
【図１３】ＸＭＬデータが繰り返し出現する内容モデルであるかどうかを検証する処理の手順を示すフローチャートである。
【図１４】一連の符号化処理を行った後の符号化テーブルを例示する図である。
【図１５】、
【図１６】、
【図１７】一連の符号化を行った後の、内部メモリに格納されている符号化文書を例示する図である。
【図１８】符号化された符号化文書を復号する処理の手順を示すフローチャートである。
【図１】
2008204000.tif 000003
【図２】
2008204000.tif 000004
【図３】
2008204000.tif 000005
【図４】
2008204000.tif 000006
【図５】
2008204000.tif 000007
【図６】
2008204000.tif 000008
【図７】
2008204000.tif 000009
【図８】
2008204000.tif 000010
【図９】
2008204000.tif 000011
【図１０】
2008204000.tif 000012
【図１１】
2008204000.tif 000013
【図１２】
2008204000.tif 000014
【図１３】
2008204000.tif 000015
【図１４】
2008204000.tif 000016
【図１５】
2008204000.tif 000017
【図１６】
2008204000.tif 000018
【図１７】
2008204000.tif 000019
【図１８】
2008204000.tif 000020