(57)【特許請求の範囲】
【請求項１】
データの意味構造をマークで記述し、データファイルの記述に用いられている文字コードの情報を当該データファイルのヘッダに記述するマークアップ言語で記述されたデータファイルに対するデータ処理方法において、
処理対象である前記データファイルを処理装置に読み込み、当該データファイルにおける前記ヘッダ以外の部分に対して所定のエンコードを施すステップと、
前記ヘッダにおける前記文字コードの情報を記述する位置に当該文字コードの情報と共通の書式で前記エンコードに関する情報を記述するステップと
を含むことを特徴とするデータ処理方法。
【請求項２】
前記処理対象のデータファイルがＸＭＬ文書であり、
前記ヘッダに前記エンコードに関する情報を記述するステップは、ＸＭＬヘッダのエンコーディング宣言に当該エンコードに関する情報を記述するステップを含むことを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
前記データファイルにエンコードを施すステップは、前記データファイルの前記ヘッダ以外の部分を圧縮するステップを含むことを特徴とする請求項１に記載のデータ処理方法。
【請求項４】
コンピュータ制御によりＸＭＬ文書をエンコードするエンコーダにおいて、
処理対象であるＸＭＬ文書を圧縮する圧縮手段と、
圧縮された前記ＸＭＬ文書に圧縮を含むエンコーディングがなされていることを示すエンコーディング宣言を記述したＸＭＬヘッダを付加するＸＭＬヘッダ付加手段と
を備えることを特徴とするエンコーダ。
【請求項５】
前記処理対象であるＸＭＬ文書に用いられている文字コードの情報を独自のヘッダ情報として、前記圧縮されたＸＭＬ文書に付加する独自ヘッダ付加手段をさらに備えることを特徴とする請求項４に記載のエンコーダ。
【請求項６】
コンピュータ制御により、エンコードされたＸＭＬ文書をデコードするデコーダにおいて、
処理対象であるＸＭＬ文書のヘッダ情報を読み取り、当該ＸＭＬ文書が圧縮を含むエンコードを施されたＸＭＬ文書であるかどうかを判定する判定手段と、
前記判定手段にて処理対象の前記ＸＭＬ文書が圧縮を含むエンコードを施されたＸＭＬ文書であると判定された場合に、当該圧縮の形式に応じた手法で当該ＸＭＬ文書の圧縮を解除する圧縮解除手段と、
圧縮解除された前記ＸＭＬ文書の文字コードを、当該ＸＭＬ文書を利用するアプリケーションが要求する文字コードに変換する文字コード変換手段と
を備えることを特徴とするデコーダ。
【請求項７】
前記判定手段は、前記ヘッダ情報におけるエンコーディング宣言を読み取り、当該ＸＭＬ文書の圧縮形式に関する情報を取得して前記圧縮解除手段に渡すことを特徴とする請求項６に記載のデコーダ。
【請求項８】
前記判定得手段は、前記処理対象であるＸＭＬ文書のヘッダ以外の部分に当該ＸＭＬ文書にて用いられている文字コードに関する情報が記述されている場合には、当該文字コードに関する情報を取得して前記文字コード変換手段に渡すことを特徴とする請求項７に記載のデコーダ。
【請求項９】
ＸＭＬ文書を解析して当該ＸＭＬ文書を利用するアプリケーションが要求する形式に変換するＸＭＬパーサにおいて、
処理対象であるＸＭＬ文書を、前記アプリケーションが用いるコード体系に変換するデコーダ部と、
前記デコーダ部によりコード変換されたＸＭＬ文書を解析し、前記アプリケーションが用いるデータ形式に変換するパーサ部とを備え、
前記デコーダ部は、前記処理対象であるＸＭＬ文書が所定のエンコードを施されたＸＭＬ文書である場合に、当該エンコードの種類に応じた手法で当該ＸＭＬ文書をデコードすることを特徴とするＸＭＬパーサ。
【請求項１０】
前記デコーダ部は、前記処理対象であるＸＭＬ文書が圧縮されたＸＭＬ文書である場合に、当該圧縮の形式に応じた手法で圧縮を解除することを特徴とする請求項９に記載のＸＭＬパーサ。
【請求項１１】
前記デコーダ部は、前記処理対象であるＸＭＬ文書のＸＭＬヘッダを読み取り、当該ＸＭＬヘッダのエンコーディング宣言の記述に基づいて当該ＸＭＬ文書の圧縮形式を認識することを特徴とする請求項１０に記載のＸＭＬパーサ。
【請求項１２】
通信ネットワークを介してデータ送信を行う送信側データ処理装置と、当該送信側データ処理装置から送信されたデータを当該通信ネットワークを介して受信する受信側データ処理装置とを備えたデータ通信システムであって、
前記送信側データ処理装置は、
送信対象であるＸＭＬ文書に対して圧縮を含むエンコードを施し、当該ＸＭＬ文書に圧縮を含むエンコーディングがなされていることを示すエンコーディング宣言を記述したＸＭＬヘッダを付加するエンコーダと、
前記エンコーダによりエンコードされた前記ＸＭＬ文書を送信する送信部とを備え、
前記受信側データ処理装置は、
前記送信側データ処理装置から送信された前記ＸＭＬ文書を受信する受信部と、
前記受信部にて受信された前記ＸＭＬ文書のＸＭＬヘッダの記述に基づいて、当該ＸＭＬ文書における圧縮形式に応じた手法で当該ＸＭＬ文書の圧縮を解除し、圧縮が解除された当該ＸＭＬ文書を解析して前記アプリケーションが用いるデータ形式に変換するＸＭＬパーサとを備えることを特徴とするデータ通信システム。
【請求項１３】
コンピュータを制御して、ＸＭＬ文書をエンコードするプログラムにおいて、
処理対象であるＸＭＬ文書を圧縮する処理と、
圧縮された前記ＸＭＬ文書に圧縮を含むエンコーディングがなされていることを示すエンコーディング宣言を記述したＸＭＬヘッダを付加する処理と
を前記コンピュータに実行させることを特徴とするプログラム。
【請求項１４】
コンピュータを制御して、エンコードされたＸＭＬ文書をデコードするプログラムにおいて、
処理対象であるＸＭＬ文書のＸＭＬヘッダを読み取り、当該ＸＭＬ文書が圧縮を含むエンコードを施されたＸＭＬ文書であるかどうかを判定する処理と、
処理対象の前記ＸＭＬ文書が圧縮を含むエンコードを施されたＸＭＬ文書であると判定された場合に、当該ＸＭＬ文書のＸＭＬヘッダの記述に基づいて、当該ＸＭＬ文書における圧縮形式に応じた手法で当該ＸＭＬ文書の圧縮を解除する処理と、
圧縮解除された前記ＸＭＬ文書の文字コードを、当該ＸＭＬ文書を利用するアプリケーションが要求する文字コードに変換する処理と
を前記コンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データファイルの圧縮方法に関し、特に圧縮後においても元のデータファイルの種類を識別することができる圧縮方法に関する。
【０００２】
【従来の技術】
ＸＭＬ（eXtensible Markup Language）は、文書の意味構造を簡単なマークで記述(マークアップ)するマークアップ言語の一種である。ＸＭＬでは、文法を規定し、文書の構成要素に論理的意味を持たせることにより、ユーザが独自の拡張を行うことが可能である。そのため、インターネットにおけるデータ交換に用いるデータフォーマットとして期待されている。
【０００３】
ＸＭＬには、ＤＴＤ（文書型定義：Document Type Definition）という概念があり、あるＤＴＤに関して、文書が妥当（valid）かどうかを判定することができる。具体的には、例えば、<BOOK>というノードの下には、<TITLE>、<AUTHOR>、<PUBLISHER>というノードがこの順にそれぞれ１回ずつ現れる、というような文法規則を規定する。そして、所定のＸＭＬ文書が妥当かどうか、すなわち、当該ＸＭＬ文書が当該文法規則に則しているかどうかを判定することができる。
【０００４】
さて、ＸＭＬ文書は、上述したように所定のマーク（以下、タグと称す）を用いてデータ構造を汎用的に表現するため、専用のデータ構造を持ったファイル形式に比べて、ファイルサイズが増大するという特徴がある。
これに対し、汎用のデータ圧縮技術を利用してＸＭＬ文書を圧縮することによりファイルサイズの縮小を図ることができる。ＸＭＬ文書は、基本的にテキストベースのフラットなデータファイルであるため、高い圧縮効果を期待することができる。
【０００５】
図９は、ＸＭＬ文書をＸＭＬパーサにて処理する際の従来の手順を説明する図である。ここで、ＸＭＬパーサとは、ＸＭＬ文書をアプリケーションプログラムが利用しやすい形に変換するソフトウェア及びこれを実行するコンピュータ装置である。
図９において、（Ａ）はＸＭＬ文書をそのままＸＭＬパーサに入力する場合の手順を示す。
図示のように、ＸＭＬパーサ９１０は、デコーダ９１１と、パーサ９１２とを備える。ＸＭＬパーサ９１０は、ＸＭＬ文書を入力すると、まずデコーダ９１１にて入力されたＸＭＬ文書に用いられている文字コードをアプリケーションが用いる文字コードに変換する（例えばＪａｖａのアプリケーションであれば、ＵＴＦ−８やＵＴＦ−１６）。そして、パーサ９１２にて当該ＸＭＬ文書を解析し、アプリケーションが用いるＤＯＭ（Document Object Model）ツリーなどのデータ形式に変換して出力する。
【０００６】
また、図９（Ｂ）は圧縮されたＸＭＬ文書を解凍（展開）した後にＸＭＬパーサに入力する場合の手順を示す。
この場合、ＸＭＬパーサ９１０の動作は図９（Ａ）の場合と同様であるが、ＸＭＬ文書をＸＭＬパーサ９１０に入力する前に、当該ＸＭＬ文書の圧縮形式に応じた解凍ツール９２０を用いて解凍処理を行う。
【０００７】
【発明が解決しようとする課題】
上述したように、ＸＭＬ文書は、専用のデータ構造を持ったファイル形式に比べてデータサイズが増大するという特徴があるため、データ圧縮を行うことが望ましい。
一般に、データ交換を行ったりデータベースにデータを格納したりする際には、送信効率の向上や格納するデータファイルのサイズを縮小するために、データファイルの圧縮を行う。そのため、種々のデータフォーマットに対して適用できる汎用的なデータ圧縮技術が数多く提案されている。したがって、ＸＭＬ文書の圧縮においてもこれら従来のデータ圧縮技術を適用することが考えられる。
しかしながら、上記従来の汎用的なデータ圧縮技術を用いた場合、圧縮処理はＸＭＬ文書のデータ形式に関わらずに行われるため、圧縮されたデータファイルのままでは当該データファイルがＸＭＬ文書であるかどうかを識別することができない。
【０００８】
また、この圧縮されたＸＭＬ文書をアプリケーションにて利用しようとする場合、上述したように、前処理として圧縮形式に応じた解凍処理を行った上でＸＭＬパーサに入力するという２段階の手順を経なければならないため、処理が煩雑となる。
さらに、ＸＭＬパーサの前段に解凍ツール（プログラム）を置くため、ＸＭＬ文書をＸＭＬパーサにて解析し所定のアプリケーションにて利用する既存のシステムへの導入が容易ではない。
【０００９】
そこで、本発明は、データ圧縮が施された状態でもＸＭＬ文書を識別することができ、かつ圧縮形式を認識することが可能なＸＭＬ文書の変換方法を実現することを目的とする。
【００１０】
また、本発明は、データ圧縮が施された状態でも直接ＸＭＬパーサにて処理することができ、既存のシステムにも導入が容易なＸＭＬ文書の変換システムを提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記の目的を達成する本発明は、ＸＭＬなどのように、データの意味構造をマークで記述し、データファイルの記述に用いられている文字コードの情報を当該データファイルのヘッダに記述するマークアップ言語で記述されたデータファイルに対するデータ処理方法において、処理対象であるデータファイルを処理装置に読み込み、このデータファイルにおけるヘッダ以外の部分に対して所定のエンコードを施すステップと、このヘッダにおける文字コードの情報を記述する位置にこの文字コードの情報と共通の書式でかかるエンコードに関する情報を記述するステップとを含むことを特徴とする。
【００１２】
ここで、このデータ処理方法は、処理対象のデータファイルがＸＭＬ文書である場合、データファイルのヘッダにこのエンコードに関する情報を記述するステップにおいて、ＸＭＬヘッダのエンコーディング宣言の記述として、このエンコードに関する情報を記述する。
さらにここで、データファイルにエンコードを施すステップは、このデータファイルのヘッダ以外の部分を圧縮する構成とする。
【００１３】
また、本発明は、コンピュータ制御によりＸＭＬ文書をエンコードするエンコーダにおいて、処理対象であるＸＭＬ文書を圧縮する圧縮手段と、圧縮されたＸＭＬ文書に圧縮を含むエンコーディングがなされていることを示すエンコーディング宣言を記述したＸＭＬヘッダを付加するＸＭＬヘッダ付加手段とを備えることを特徴とする。
さらにこのエンコーダは、上記の構成に加えて、処理対象であるＸＭＬ文書に用いられている文字コードの情報を独自のヘッダ情報として、圧縮されたＸＭＬ文書に付加する独自ヘッダ付加手段を備える構成とすることができる。
かかるエンコーダは、コンピュータを制御し、上述した圧縮手段及びＸＭＬヘッダ付加手段、さらに独自ヘッダ付加手段として当該コンピュータを機能させるプログラムとして提供することができる。
【００１４】
また、本発明は、コンピュータ制御により、エンコードされたＸＭＬ文書をデコードするデコーダにおいて、処理対象であるＸＭＬ文書のヘッダ情報を読み取り、このＸＭＬ文書が圧縮を含むエンコードを施されたＸＭＬ文書であるかどうかを判定する判定手段と、処理対象のＸＭＬ文書が圧縮を含むエンコードを施されたＸＭＬ文書であると判定された場合に、この圧縮の形式に応じた手法でこのＸＭＬ文書の圧縮を解除する圧縮解除手段と、圧縮解除されたＸＭＬ文書の文字コードを、このＸＭＬ文書を利用するアプリケーションが要求する文字コードに変換する文字コード変換手段とを備えることを特徴とする。
ここで、この判定手段は、ヘッダ情報を記述したＸＭＬヘッダにおけるエンコーディング宣言を読み取り、このＸＭＬ文書の圧縮形式に関する情報を取得して圧縮解除手段に渡す。
さらに、この判定手段は、処理対象であるＸＭＬ文書のＸＭＬヘッダ以外の部分に、このＸＭＬ文書にて用いられている文字コードに関する情報が記述されている場合には、この文字コードに関する情報を取得して文字コード変換手段に渡す。
かかるデコーダは、コンピュータを制御し、上述した判定手段、圧縮解除手段及び文字コード変換手段として当該コンピュータを機能させるプログラムとして提供することができる。
【００１５】
また、本発明は、ＸＭＬ文書を解析してこのＸＭＬ文書を利用するアプリケーションが要求する形式に変換するＸＭＬパーサにおいて、処理対象であるＸＭＬ文書を、このアプリケーションが用いるコード体系に変換するデコーダ部と、このデコーダ部によりコード変換されたＸＭＬ文書を解析し、このアプリケーションが用いるデータ形式に変換するパーサ部とを備え、このデコーダ部は、処理対象であるＸＭＬ文書が所定のエンコードを施されたＸＭＬ文書である場合に、かかるエンコードの種類に応じた手法でこのＸＭＬ文書をデコードすることを特徴とする。
ここで、このデコーダ部は、処理対象であるＸＭＬ文書が圧縮されたＸＭＬ文書である場合に、この圧縮の形式に応じた手法で圧縮を解除する。
さらに詳しくは、このデコーダ部は、処理対象であるＸＭＬ文書のＸＭＬヘッダを読み取り、このＸＭＬヘッダのエンコーディング宣言の記述に基づいてこのＸＭＬ文書の圧縮形式を認識する。
【００１６】
また、本発明は、かかるＸＭＬ文書のエンコード技術を、データ交換にＸＭＬ文書を用いるデータ通信システムに適用することができる。すなわち、このデータ通信システムは、送信側と受信側のデータ処理装置を備え、送信側データ処理装置は、送信対象であるＸＭＬ文書に対して圧縮を含むエンコードを施し、このＸＭＬ文書に圧縮を含むエンコーディングがなされていることを示すエンコーディング宣言を記述したＸＭＬヘッダを付加するエンコーダと、このエンコーダによりエンコードされたＸＭＬ文書を送信する送信部とを備え、受信側データ処理装置は、送信側データ処理装置から送信されたＸＭＬ文書を受信する受信部と、この受信部にて受信されたＸＭＬ文書のＸＭＬヘッダの記述に基づいて、このＸＭＬ文書における圧縮形式に応じた手法でこのＸＭＬ文書の圧縮を解除し、圧縮が解除されたＸＭＬ文書を解析してアプリケーションが用いるデータ形式に変換するＸＭＬパーサとを備えることを特徴とする。
【００１７】
さらに本発明は、コンピュータを制御するプログラムとして実現することができる。すなわち、処理対象であるＸＭＬ文書を圧縮する処理と、圧縮されたＸＭＬ文書に圧縮を含むエンコーディングがなされていることを示すエンコーディング宣言を記述したＸＭＬヘッダを付加する処理とをコンピュータに実行させるプログラムである。
また、処理対象であるＸＭＬ文書のＸＭＬヘッダを読み取り、このＸＭＬ文書が圧縮を含むエンコードを施されたＸＭＬ文書であるかどうかを判定する処理と、処理対象のＸＭＬ文書が圧縮を含むエンコードを施されたＸＭＬ文書であると判定された場合に、このＸＭＬ文書のＸＭＬヘッダの記述に基づいて、このＸＭＬ文書における圧縮形式に応じた手法でこのＸＭＬ文書の圧縮を解除する処理と、圧縮解除されたＸＭＬ文書の文字コードを、このＸＭＬ文書を利用するアプリケーションが要求する文字コードに変換する処理とをコンピュータに実行させるプログラムとしても実現できる。
【００１８】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
まず、本発明の概要について説明する。
ＸＭＬ文書には、通常、先頭にＸＭＬヘッダ（ＸＭＬ宣言）が付加される。詳しくは、Ｗ３Ｃ勧告ＸＭＬ１.０の付属書Ｆを参照されたい。このＸＭＬヘッダは、当該データがＸＭＬ文書であることを明確に示す文字列であり、ＸＭＬのバージョン宣言、エンコーディング宣言（文字コードの宣言）及びスタンドアロン文書か否かの宣言を行うことができる。ＸＭＬパーサは、このＸＭＬヘッダ中のエンコーディング宣言を参照して当該ＸＭＬ文書に用いられている文字コードを認識することができる。
本発明は、ＸＭＬ文書を圧縮する際にこのＸＭＬヘッダを残して他の部分（ＸＭＬインスタンス、ＤＴＤ）を圧縮する。これにより、データファイルのヘッダであるＸＭＬヘッダを参照することにより、圧縮された当該データファイルがＸＭＬ文書であることを識別することが可能となる。
また、上記本発明の手法でＸＭＬファイルを圧縮する際に、このエンコーディング宣言、すなわち文字コードを指定する宣言を拡張して用い、ＸＭＬ文書の圧縮形式（エンコード方法）を宣言する。これにより、データ圧縮された後も参照可能なＸＭＬヘッダを参照することができることとなり、これにより圧縮形式を認識することが可能となる。
【００１９】
図１は、本実施の形態によるデータ圧縮方法を説明する図である。
図１において、（Ａ）は圧縮していない通常のＸＭＬ文書を示す図、（Ｂ）は本実施の形態による圧縮を施された状態を示す図である。
図１（Ａ）を参照すると、本実施の形態で用いるＸＭＬ文書１１０は、ＸＭＬヘッダ１１１とその他のデータ部１１２とで構成される（ＸＭＬヘッダ１１１以外の部分としては、ＤＴＤやＸＭＬインスタンスがあるが、本実施の形態ではＸＭＬヘッダ１１１における記述に特徴を有するため、他の部分をまとめてデータ部１１２と表記する）。
ＸＭＬヘッダ１１１には、ＸＭＬのバージョン宣言とエンコーディング宣言とが記述されており、文字コードはシフトＪＩＳが指定されている。したがって、データ部１１２は、シフトＪＩＳで可読なテキストにて記述されていることとなる。
【００２０】
図１（Ｂ）を参照すると、圧縮されたＸＭＬ文書１２０は、ＸＭＬヘッダ１２１とその他のデータ部１２２とで構成される。
ＸＭＬヘッダ１２１には、ＸＭＬのバージョン宣言とエンコーディング宣言とが記述されており、エンコーディングの種類の宣言にはデータ圧縮されていることを示す「x-XMLCompress」が記述されている。すなわち、本発明では、ＸＭＬ文書１２０における文字コードの宣言に用いられていたエンコーディング宣言を圧縮形式の宣言にも拡張することによって、比較的簡便な修正でＸＭＬ文書の圧縮、解凍と識別を可能にする。したがって、この段階では、データ部１２２は、データ圧縮されたバイナリデータとなっており、データ部１１２と比べてサイズが小さくなっているが、そのままでは読むことができない。
【００２１】
言い換えれば、本実施の形態は、ＸＭＬ文書１２０のデータに対して、通常の文字エンコーディングと同様の扱いで圧縮を含むエンコードを行う。したがって、以下の説明では、通常の文字エンコーディングのみならず、データ部１２２の圧縮処理を含む意味でエンコード、変換などの文言を適宜用いる。
【００２２】
図２は、本実施の形態を用いて図１（Ｂ）に示した書式に変換されたＸＭＬ文書１２０をＸＭＬパーサにて処理する際の手順を説明する図である。
図２に示すように、ＸＭＬパーサ２００は、デコーダ２１０と、パーサ２２０とを備える。
ＸＭＬパーサ２００は、図１（Ｂ）に示した書式に変換されたＸＭＬ文書１２０を入力すると、まずデコーダ２１０にて入力されたＸＭＬ文書１２０をアプリケーションが用いるコード体系に変換する。そして、パーサ２２０にて当該ＸＭＬ文書１２０を解析し、アプリケーションが用いるＤＯＭツリーなどのデータ形式に変換して出力する。
【００２３】
デコーダ２１０は、まず、ＸＭＬヘッダ１２１を参照してデータ部１２２の圧縮形式を認識し、解凍する。そして、解凍されたデータ部１２２（この時点では図１（Ａ）のＸＭＬ文書１１０におけるデータ部１１２と同じ）に対して、通常の文字コードの変換を行う。
ここで、図１（Ｂ）のＸＭＬヘッダ１２１のエンコーディング宣言は、
encoding="x-XMLCompress"?
となっており、これを参照しても、圧縮されていることはわかるが、文字エンコーディングの種類はわからない。すなわち、圧縮処理を含むエンコーディングを行うことにより、ＸＭＬ文書１２０が本来持っていた文字エンコーディングの情報は失われることとなる。
【００２４】
これに関しては、文字コードとして、ＸＭＬ文書１２０を利用するアプリケーションに応じて使用する文字コードを予め決めておくことにより対応することができる。例えば、Ｊａｖａによるアプリケーションでの実装を前提とした場合、ＵＴＦ−８が扱いやすいことから、ＸＭＬ文書１２０の文字コードをＵＴＦ−８に決めてしまう。このようにすれば、デコーダ２１０は、ＸＭＬヘッダ１２１において文字エンコーディングの情報が無くても適切な文字コードの変換を行うことができる。
【００２５】
また、特定の文字エンコーディングを保存する必要がある場合（コード変換の影響を避けたい場合など）は、データ部１２２に、この文字エンコーディングの種類を記述するための独自のヘッダ情報を付加することで対応が可能である。このようにすれば、デコーダ２１０は、ＸＭＬヘッダ１２１を参照してデータ部１２２の圧縮形式を知ると共に、データ部１２２のヘッダ情報を参照して文字エンコーディングの種類を知ることができる。
【００２６】
パーサ２２０は、上述のようにしてデコーダ２１０によりデータ部１２２の解凍および文字コードの適切な変換が行われた後、ＸＭＬ文書１２０を解析し、アプリケーションが用いるＤＯＭツリーなどのデータ形式に変換して出力する。このパーサ２２０による処理は、従来のＸＭＬパーサの処理と同様である。
【００２７】
次に、本実施の形態を実現する図１（Ｂ）に示した書式のＸＭＬ文書１２０を生成するためのエンコーダ及びＸＭＬ文書１２０を読み取るためのデコーダについて、さらに詳細に説明する。
図３は、エンコーダの構成を示す図である。
図３を参照すると、エンコーダ３００は、エンコード対象であるＸＭＬ文書を入力するデータ入力部３０１と、入力されたＸＭＬ文書の文字エンコーディングの調整を行うための文字切り出し・変換部３０２及び文字コード変換表３０３と、データ圧縮を行うための圧縮部３０４と、圧縮されたＸＭＬ文書１２０を出力するデータ出力部３０５とを備える。
【００２８】
文字切り出し・変換部３０２は、入力されたＸＭＬ文書に対して文字の切り出しを行い、文字コード変換表３０３を参照して、切り出された文字のコード変換を行う。例えば、上述したようにＸＭＬ文書１２０の文字エンコーディングをＵＴＦ−８と決めた場合、入力されたＸＭＬ文書がＪａｖａのアプリケーションにより作成されたＸＭＬ文書であればＵｎｉｃｏｄｅが使用されているので、ＵｎｉｃｏｄｅからＵＴＦ−８への変換を行うこととなる。
【００２９】
圧縮部３０４は、文字切り出し・変換部３０２にて文字コードの変換が済んだＸＭＬ文書を圧縮することにより、ＸＭＬ文書１２０のデータ部１２２を生成する。圧縮を行うための圧縮ロジックは、ＺＩＰ、その他の汎用的な圧縮技術を用いることができるが、後述するような、ＸＭＬ文書の構造的な特徴を利用した専用の圧縮ロジックを適用することもできる。
また、圧縮部３０４は、データ部１２２の圧縮を行った圧縮ロジックに基づいて、当該圧縮形式を示す情報をエンコーディング宣言として記述したＸＭＬヘッダ１２１を生成してデータ部１２２に付加する。さらに、圧縮前のＸＭＬ文書において用いられている文字エンコーディングを保存するために、当該文字エンコーディングの情報を記述した独自のヘッダを生成してデータ部１２２に付加することができる。
【００３０】
本実施の形態では、これら文字切り出し・変換部３０２及び圧縮部３０４により上記の二つの処理を行うが、これらの処理はいずれもＸＭＬ文書に対するエンコード処理であるため、従来のエンコーダによる文字エンコーディングの調整の行程と本質的には同じものとして扱われる。すなわち、ＸＭＬ文書に対してエンコードを行う行程そのものは従来と共通であるが、このエンコードにおいて、従来は文字コードの変換のみを行っていたのに対して、本実施の形態では圧縮を含む変換を行う。
【００３１】
図４は、図３に示したエンコーダ３００によるエンコード処理を含む、ＸＭＬ文書１２０の生成処理を説明するフローチャートである。
図４を参照すると、まず、ＸＭＬ文書１２０を作成するための元データが作成され（ステップ４０１）、ＸＭＬ文書構造であるＤＯＭツリーが作成される（ステップ４０２）。そして、作成されたＤＯＭツリーに基づいてＸＭＬ文書１２０のデータ部１２２に相当するテキストが生成される（ステップ４０３）。
次に、ステップ４０３で生成されたテキストがエンコーダ３００に入力され、文字切り出し・変換部３０２により、当該テキストの文字エンコーディングの調整が行われる（ステップ４０４）。この後、圧縮部３０４により、当該テキストが圧縮され、ＸＭＬヘッダ１２１が付加されて、ＸＭＬ文書１２０が作成される（ステップ４０５）。
【００３２】
なお、上記の処理において、ステップ４０３までの動作は、Ｊａｖａなどにおけるアプリケーションにて機械的にＸＭＬ文書１２０を作成する場合の動作である。エディタなどを用いてＸＭＬ文書を作成する場合は、まず図１（Ａ）に示した通常の形式のＸＭＬ文書１１０を作成し、エンコーダ３００に入力するため、ステップ４０４から始めることとなる。
また、エディタなどを用いてＸＭＬ文書を作成する場合は、最初からデコーダが想定している文字コードを用いて作成することができる。すなわち、上述したように、ＸＭＬ文書１２０の文字エンコーディングを予めＵＴＦ−８と決めた場合には、最初からＵＴＦ−８の文字コードでＸＭＬ文書１２０を作成することができる。この場合は、ステップ４０４における文字エンコーディングの調整も必要なく、エンコーダ３００は、ステップ４０５における圧縮処理のエンコードのみを実行することとなる。
【００３３】
図５は、上記のようにして作成されたＸＭＬ文書１２０を読み取るデコーダ２１０の構成を示す図である。
図５を参照すると、デコーダ２１０は、ＸＭＬ文書１２０を入力するデータ入力部２１１と、入力されたＸＭＬ文書１２０の圧縮を解除（解凍）する圧縮解除部２１２と、ＸＭＬ文書１２０の文字エンコーディングの調整を行うための文字切り出し・変換部２１３及び文字コード変換表２１４と、これらの変換により得られたテキストを出力してパーサ２２０に渡すデータ出力部２１５とを備える。
【００３４】
圧縮解除部２１２は、ＸＭＬ文書１２０の圧縮を解除して、所定の文字コードで読むことが可能なＸＭＬ文書に変換する。圧縮解除部２１２は、ＸＭＬ文書１２０の圧縮を解除するための適切な圧縮解除ロジックを持つ。ここで、ＸＭＬ文書１２０の圧縮形式が一つに決められている場合は、用意する圧縮解除ロジックは一つで良いが、いくつかの圧縮形式が取られる可能性がある場合は、これに対応するために複数種類の圧縮解除ロジックを用意しておく必要がある。
【００３５】
文字切り出し・変換部２１３は、圧縮解除部２１２により解凍されたＸＭＬ文書に対して文字の切り出しを行い、文字コード変換表２１４を参照して、切り出された文字のコード変換を行う。ここで、上述したようにＸＭＬ文書１２０の文字エンコーディングをＵＴＦ−８と決めた場合であって、ＸＭＬパーサ２００にて生成されたＸＭＬ文書をＪａｖａのアプリケーションにて利用する場合は、ＵＴＦ−８からＵｎｉｃｏｄｅへの変換を行うこととなる。また、圧縮時のＸＭＬ文書１２０におけるデータ部１２２に文字エンコーディングを指定するヘッダ情報が付加されているならば、このヘッダ情報に基づいて必要な文字コード変換表２１４を選択することができる。
【００３６】
図６は、図５に示したデコーダ２１０による処理を含むＸＭＬ文書１２０の読み取り処理を説明するフローチャートである。
図６を参照すると、まず、ＸＭＬパーサ２００のデコーダ２１０にＸＭＬ文書１２０が入力され（ステップ６０１）、データ入力部２１１により、ＸＭＬヘッダ１２１の内容が読み取られる（ステップ６０２）。これにより、ＸＭＬ文書１２０のエンコーディング情報（すなわち、圧縮を含むエンコードがなされているか否か）が認識される。また、データ部１２２に文字エンコーディングを記述したヘッダ情報が存在するならば、データ入力部２１１においてこれも読み取られ、ＸＭＬ文書１２０の文字エンコーディングが確定する。
次に、これらの情報がデコーダ２１０に渡され、ステップ６０２で読み取られたＸＭＬヘッダ１２１の情報に基づいて圧縮解除部２１２において適切な圧縮解除ロジックが選択され、ＸＭＬ文書１２０のデータ部１２２の圧縮が解除される（ステップ６０３）。そして、文字切り出し・変換部２１３により、圧縮が解除されたＸＭＬ文書の文字エンコーディングの調整が行われる（ステップ６０４）。文字切り出し・変換部２１３は、ステップ６０２において取得した情報の中に文字エンコーディングを指定する情報がない場合は予め決められた文字コードに基づいて、文字エンコーディングを指定する情報がある場合には当該情報に基づいて、適切な文字コード変換表２１４を選択して変換を行う。
以上の処理の後、パーサ２２０による処理に移行し、テキスト解析が行われて、アプリケーションが用いるＤＯＭツリーなどのデータ形式に変換される（ステップ６０５）。
【００３７】
上述したように、本実施の形態において、ＸＭＬ文書１２０におけるデータ部１２２の圧縮には、従来の汎用的な圧縮方法を用いることもできるし、ＸＭＬの構造に基づいた圧縮形式を用いることも可能である。ＸＭＬ文書では、文書の意味構造を示すタグの記述などに冗長性があるため、ＸＭＬの構造を利用した専用の圧縮形式を用いれば、高い圧縮率が期待できる。
【００３８】
次に、かかるＸＭＬの構造を利用した専用の圧縮形式の例を示す。整形式ＸＭＬ文書（Well-Formed XML Document）には、次のような特性がある。
（１）タグ間の（テキストデータの区間以外の）ホワイトスペースを削除しても、データには影響がない。
（２）タグ内の属性値のデリミタとしてのホワイトスペースは、最小限の数で良い。
（３）場合によっては、コメントの部分の削除も可能。
（４）タグ名、属性名はＤＴＤに定義された名前が繰り返し使用される。
（５）「＜」が特別な文字として使用されている。
（６）開始タグと終了タグとは、必ず対応しているため、終了タグの文字列は省略が可能。
そこで、これらの特性を用いた圧縮方法が考えられる。（１）（２）（３）は自明であると思われるので、（４）（５）（６）について、具体的な圧縮方法を述べる。なお、ＸＭＬのデータは、ストリームとして処理されることが多いため、１パスで処理可能な方法が望ましい。
【００３９】
タグや属性を処理する際に、初めての文字列の場合、エンコーダ内部のテーブルにそのエントリを追加し、ユニークなＩＤを割り当て、それを「＜」に続いて書き足す（例えば、「＜１」「＜２」のようになる）。ＸＭＬの規則により、ここに「＜」が来ることがないことが保証されている。初めての文字列ではない場合、その文字の出力を行わず、「＜」に続くＩＤのみを書き出す。ルートのタグは、一度しか出現しないため、この処理の対象とはしない。この処理の結果の簡単な例を図７に示す。
図７（Ａ）は、圧縮対象である元のＸＭＬ文書のソースデータを示す。図７（Ｂ）は、中間コードを示す。この状態では有効なＸＭＬのデータではないが、これは圧縮のための前処理の一部であり、デコーダ２１０が図７（Ａ）に示すＸＭＬ文書と（ＸＭＬのデータとして）同等なものに戻すために十分なデータを保持している。
【００４０】
ＤＴＤが完全に予め決定されており、変更の可能性のない場合は、ＤＴＤからタグ名、属性名の候補となる文字列を取り出し、それぞれにユニークなＩＤを割り振ったテーブルをＤＴＤごとに作成することが可能となる。この方法が利用可能な場合、共通のＤＴＤを使用するＸＭＬインスタンスは、文字列テーブルを個々に持つ必要がなくなるため、より高い圧縮率を得ることが可能となる。
図７（Ｃ）は、この場合のさらなる変形を、図７（Ｂ）の状態のデータに対して施した例を示す。
以上のような処理を施した後、適当な圧縮ツール（例えばＪａｖａであれば、java.util.zip.GZIPOutputStream）を利用して圧縮を行うことにより、より高い圧縮率を得ることが可能となる。
【００４１】
図８は、クライアント・サーバ間でＸＭＬ文書のやりとりを行う際に本実施の形態を適用する例を示す図である。
図８に示すクライアント・サーバシステムは、商品等の注文をネットワークを介して行うシステムであり、ネットワーク上での通信にＸＭＬ文書を用いる。すなわち、クライアント８１０からの発注、サーバ８２０における受注等の処理において、要求や回答がＸＭＬ文書で作成され、クライアント８１０、サーバ８２０間で送受信される。
クライアント８１０は、ＸＭＬコンポーザ８１１とＸＭＬパーサ８１２とを備え、サーバ８２０は、ＸＭＬコンポーザ８２１とＸＭＬパーサ８２２とを備える。そして、クライアント８１０から送られる要求は、ＸＭＬコンポーザ８１１にてＸＭＬ文書として送信され、サーバ８２０に受信された後、ＸＭＬパーサ８２２で解析されて処理される。同様に、サーバ８２０から送られる回答は、ＸＭＬコンポーザ８２１にてＸＭＬ文書として送信され、クライアント８１０に受信された後、ＸＭＬパーサ８１２で解析されて処理される。
このとき、ＸＭＬコンポーザ８１１、８２１では、図３、図４を参照して説明したように、ＸＭＬ文書のエンコードが行われる。そして、ＸＭＬパーサ８１２、８２２では、図５、図６を参照して説明したように、ＸＭＬ文書のデコードが行われる。
【００４２】
本実施の形態は、上述したように、ＸＭＬ文書の圧縮を当該ＸＭＬ文書に対するエンコードの一種類として実装することにより、当該圧縮を含むエンコードに対するデコーダを追加するだけで、既存のＸＭＬパーサ自体に影響を与えることなく本実施の形態によるデータ圧縮の手法を導入することが可能となる。
【００４３】
なお、本実施の形態によれば、エンコード（すなわち圧縮）されたＸＭＬ文書は、データサイズが小さくなるので、図８に示したようにデータ通信において用いるほかにも、データベースシステムにおいて、記憶装置に格納するデータ量を縮小するのに用いることもできる。この場合、ＸＭＬ文書をデータベースが扱うデータとして格納する際に、圧縮を含むエンコードを施して記憶装置に格納し、当該データを読み出す際に、本実施の形態に対応したデコーダを備えたＸＭＬパーサで解析することとなる。
【００４４】
また、本実施の形態では、エンコードとしてＸＭＬ文書を圧縮する場合について説明したが、同様にして、ＸＭＬ文書の暗号化処理など、種々の処理をＸＭＬ文書に対するエンコードの一種類として実装することも可能である。
暗号化を含むエンコードを行う場合、上記圧縮の場合と同様に、ＸＭＬ文書のデータ部（ＸＭＬヘッダ以外の部分）を暗号化し、当該データ部が暗号化されていることを示すエンコーディング宣言をＸＭＬヘッダに記述する。そして、ＸＭＬパーサに、当該暗号化されたＸＭＬ文書のデータ部を解釈するロジックを持ったデコーダを追加することにより実現することができる。エンコーディングの一種類として実装するため、既存のＸＭＬパーサを用いたシステムにも導入が容易であることは、圧縮について示した本実施の形態と同様である。
【００４５】
さらに、本実施の形態は、ＸＭＬ文書のエンコーディングとして圧縮処理を施す場合について説明したが、ＸＭＬ文書と同様に、データの意味構造をマークで記述し、かつデータファイルの記述に用いられている文字コードなどの情報を当該データファイルのヘッダに記述するマークアップ言語であって、当該ヘッダの記述をある程度変更できる仕様であれば、本実施の形態による圧縮などのエンコーディングを行うことができる。
【００４６】
【発明の効果】
以上説明したように、本発明によれば、データ圧縮が施された状態でもヘッダを読み取ることによりＸＭＬ文書を識別することができ、かつ圧縮形式を認識することが可能である。
また、本発明によれば、データ圧縮が施された状態でも直接ＸＭＬパーサにて処理することができるため、ＸＭＬ文書を用いる既存のシステムにも導入が容易である。
【図面の簡単な説明】
【図１】  本実施の形態によるデータ圧縮方法を説明する図である。
【図２】  本実施の形態を用いて図１（Ｂ）に示した書式に変換されたＸＭＬ文書をＸＭＬパーサにて処理する際の手順を説明する図である。
【図３】  本実施の形態に用いられるエンコーダの構成を示す図である。
【図４】  本実施の形態によるＸＭＬ文書の生成処理を説明するフローチャートである。
【図５】  本実施の形態によるＸＭＬ文書を読み取るデコーダの構成を示す図である。
【図６】  本実施の形態によるＸＭＬ文書の読み取り処理を説明するフローチャートである。
【図７】  本実施の形態によるＸＭＬ文書の圧縮例を説明する図である。
【図８】  クライアント・サーバ間でＸＭＬ文書のやりとりを行う際に本実施の形態を適用する例を示す図である。
【図９】  ＸＭＬ文書をＸＭＬパーサにて処理する際の従来の手順を説明する図である。
【符号の説明】
１１０、１２０…ＸＭＬ文書、１１１、１２１…ＸＭＬヘッダ、１１２、１２２…データ部、２００…ＸＭＬパーサ、２１０…デコーダ、２１１、３０１…データ入力部、２１２…圧縮解除部、２１３、３０２…文字切り出し・変換部、２１４、３０３…文字コード変換表、２１５、３０５…データ出力部、２２０…パーサ、３００…エンコーダ、３０４…圧縮部、８１０…クライアント、８１１、８２１…ＸＭＬコンポーザ、８１２、８２２…ＸＭＬパーサ、８２０…サーバ
【図１】
0003832807.tif 000002
【図２】
0003832807.tif 000003
【図３】
0003832807.tif 000004
【図４】
0003832807.tif 000005
【図５】
0003832807.tif 000006
【図６】
0003832807.tif 000007
【図７】
0003832807.tif 000008
【図８】
0003832807.tif 000009
【図９】
0003832807.tif 000010