(57)【要約】【課題】  XML文書のバイナリ化において、スキーマのデータサイズが依然として大きいため、スキーマのデータサイズを含めたバイナリXMLの圧縮は効率が良いものではなかった。【解決手段】  XML文書が取り得る構造を記述したスキーマを用いて、テキスト形式で記述されたXML文書の少なくとも一部をバイナリ化するデータ処理装置において、スキーマから、XML文書に関係しない要素を削除又は変更することでスキーマの情報量を圧縮する。この情報量が圧縮されたスキーマを用いて、XML文書をバイナリ化する。【選択図】  図１Ａ
2009128945.tif 000002
【特許請求の範囲】
【請求項１】
XML文書が取り得る構造を記述したスキーマを用いて、テキスト形式で記述されたXML文書の少なくとも一部をバイナリ化するデータ処理装置であって、
前記スキーマから、前記XML文書に関係しない要素を削除又は変更することで前記スキーマの情報量を圧縮するスキーマ圧縮手段と、
前記スキーマ圧縮手段により情報量が圧縮されたスキーマを用いて、前記XML文書をバイナリ化するバイナリ化手段と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記スキーマ圧縮手段は、前記バイナリ化手段が採用するバイナリ化アルゴリズムに応じて圧縮アルゴリズムを変更することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記スキーマを記述する言語は、RELAX NGであることを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記スキーマ圧縮手段は、前記スキーマに含まれる要素のうち、前記XML文書において利用されない子要素及び属性に関する記述を削除することで前記スキーマの情報量を圧縮することを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記スキーマ圧縮手段は、前記スキーマに含まれるループ文の中に所定のパターンが繰り返し現れる場合、１回分の前記パターンの記述で置換することを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
XML文書が取り得る構造を記述したスキーマを用いて、テキスト形式で記述されたXML文書の少なくとも一部をバイナリ化するデータ処理方法であって、
スキーマ圧縮手段が、前記スキーマから、前記XML文書に関係しない要素を削除又は変更することで前記スキーマの情報量を圧縮するスキーマ圧縮ステップと、
バイナリ化手段が、前記スキーマ圧縮ステップで情報量が圧縮されたスキーマを用いて、前記XML文書をバイナリ化するバイナリ化ステップと、
を有することを特徴とするデータ処理方法。
【請求項７】
コンピュータが実行可能なプログラムであって、当該プログラムを実行したコンピュータを、請求項１乃至５のいずれか１項に記載のデータ処理装置として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テキスト形式き記述された構造化データをバイナリ化する技術に関する。
【背景技術】
【０００２】
XML文書に記述されている情報は、テキスト形式で記述されるため可読性の高い仕様となっている反面、同じ情報量をバイナリデータで記述するよりもデータサイズが大きくなる傾向がある。この問題を解決するために、XML文書を他の書式に変換、特にバイナリデータに変換してデータサイズを圧縮する取り組みが提案されている。
【０００３】
圧縮技術としては、従来XMLに限らず利用されている汎用的な可逆圧縮以外に、XMLの冗長な記述を他の表記に変換することで圧縮する技術（特許文献４、５、６など）が提案されている。また、スキーマと呼ばれるXML文書の文法規則を記述したデータを参照し、圧縮対象のXML文書より多くの情報を除いた上でXML文書をより高い圧縮率で圧縮する技術（特許文献１、２、７など）なども提案されている。このような圧縮技術は、圧縮率を高めるために圧縮結果をバイナリデータとして出力するのが一般的である。
【０００４】
このような圧縮技術で利用されるスキーマは、一般的には事前に公開され広く共有されるものであるが、XML文書から動的に生成する技術（特許文献３）が利用されるなど、スキーマが共有されていない状況になることもある。
【０００５】
【特許文献１】特開２００２−２４４８９４号公報
【特許文献２】特開２００４−０３２７７４号公報
【特許文献３】特開２００６−０９２３２９号公報
【特許文献４】特開２００４−３０２８６８号公報
【特許文献５】特開２００５−０１８６７２号公報
【特許文献６】特開２００５−３１００６４号公報
【特許文献７】特開２００１−２１７７２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のスキーマを利用したXML文書のバイナリ化技術では、XML文書の圧縮は考慮されていたが、スキーマ自体の圧縮は考慮されていなかった。スキーマが事前にバイナリXMLを扱う機器に配布されているのであればスキーマの圧縮に配慮する必要はあまりない。しかし、DTDのようにスキーマがXML文書そのものと併せて配布される場合や、特許文献３などのように一般的には配布されていないスキーマを利用する場合は、スキーマ自体のデータサイズを含めて圧縮を考えなければ効率的な運用はできない。一般的にスキーマは非常に大きなデータサイズになり、従来の技術ではスキーマのデータサイズを含めたバイナリXMLの圧縮は効率が良いものではなかった。効率を改善するためにスキーマ自体もXML文書と同様にバイナリ化することも考えられるが、更にスキーマのスキーマが必要になるなど、バイナリXMLを生成するための仕組みが複雑になってしまう。
【０００７】
そこで本発明は、XML文書をバイナリ化する際に、スキーマの情報量を減らし、スキーマも含めた総データサイズを縮小することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面によれば、XML文書が取り得る構造を記述したスキーマを用いて、テキスト形式で記述されたXML文書の少なくとも一部をバイナリ化するデータ処理装置であって、前記スキーマから、前記XML文書に関係しない要素を削除又は変更することで前記スキーマの情報量を圧縮するスキーマ圧縮手段と、前記スキーマ圧縮手段により情報量が圧縮されたスキーマを用いて、前記XML文書をバイナリ化するバイナリ化手段とを有することを特徴とするデータ処理装置が提供される。
【発明の効果】
【０００９】
本発明によれば、XML文書をバイナリ化する際に、スキーマの情報量を減らし、スキーマも含めた総データサイズを縮小することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、本発明は以下の実施形態に限定されるものではなく、本発明の実施に有利な具体例を示すにすぎない。また、以下の実施形態の中で説明されている特徴の組み合わせの全てが本発明の課題解決手段として必須のものであるとは限らない。
【００１１】
＜装置構成＞
図１Ａは、本実施形態における、XML文書を送受信する２つのデータ処理装置としてのコンピュータ装置の機能構成を概念的に示すブロック図である。
【００１２】
データ送信側である第1コンピュータ装置10は、入力したXML文書（テキストXML）をバイナリ化するバイナリXML生成プロセッサ11を備えるとともに、入力したスキーマをバイナリ化するスキーマバイナリ化部12を備える。ここで、スキーマとは、XML文書の文法規則、すなわち、XML文書の取り得る構造を記述したデータである。スキーマバイナリ化部12は、スキーマの情報量を圧縮するための圧縮アルゴリズムが相異なる１つ以上のスキーマ圧縮部13を含んでいる。これにより、スキーマバイナリ化部12は、スキーマバイナリ化部12が採用するバイナリ化アルゴリズムに応じて圧縮アルゴリズムを変更することが可能である。矢印14で示されるように、圧縮スキーマはバイナリXML生成プロセッサ11に送られる。ただし、別の実施形態では、矢印15で示されるように、バイナリXMLとは独立に事前にデータ受信側である第2コンピュータ装置20に送信する構成をとることも可能である。他方、データ受信側である第2コンピュータ装置20は、第1コンピュータ装置10から受信したXML文書（バイナリXML）を解析してテキストXMLを生成する解析部としてのバイナリXMLパーサ21を備える。
【００１３】
なお、図１Ａに示した構成は説明のための便宜的なものであり、通常は、各コンピュータ装置がバイナリXML生成プロセッサ11とバイナリXMLパーサ21とを備え、どちらのコンピュータ装置もデータ送信側にも受信側にもなれることは言うまでもない。
【００１４】
図１Ｂは、第1及び第2コンピュータ装置10,20のハードウェア構成を示すブロック図である。各コンピュータ装置は、単一のコンピュータで実現してもよいし、複数のコンピュータを含み、各コンピュータに機能を分散させたコンピュータシステムとして実現することもできる。複数のコンピュータで構成される場合は、各コンピュータはLocal Area Network (LAN) などで相互に通信可能に接続される。
【００１５】
図１において、101はコンピュータ装置全体を制御するCentral Processing Unit (CPU) である。102は変更を必要としないプログラムやデータを格納するRead Only Memory (ROM) である。103は外部から供給されるプログラムやデータを一時記憶するRandom Access Memory (RAM) である。104はコンピュータ装置に固定して設置されたハードディスクやメモリカードなどを含む記憶部である。この記憶部104は、コンピュータ装置に対して着脱可能なフレキシブルディスク (FD) やCompact Disk (CD) 等の光ディスク、磁気や光カード、ICカード、メモリカード等で構成されてもよい。この記憶部104にはCPU101をバイナリXML生成プロセッサ11、スキーマバイナリ化部12、バイナリXMLパーサ21として機能させるためのプログラムが格納されている。105はポインティングデバイスやキーボードなどで構成される操作部である。106はコンピュータ装置が保持するデータや供給されたデータを表示する表示部である。107はLAN203などのネットワーク回線に接続するためのネットワークインタフェース (i/f) である。108は101〜107の各ユニットを通信可能に接続するシステムバスである。
【００１６】
以下では、本実施形態における基本的なXMLバイナリ化手順について述べ、その後でスキーマの圧縮方法について具体的に述べる。
【００１７】
＜基本的なXMLバイナリ化手順＞
以下では、上述のコンピュータ装置が、圧縮したスキーマを利用してXML文書をバイナリ化する手順と、当該手順でバイナリ化したXML文書を圧縮したスキーマを利用して解析する手順とを説明する。なお、スキーマの圧縮手順の例は後述することとし、ここでは後述の圧縮アルゴリズムのうちの一つ又は複数を組み合わせて利用するものとする。本実施形態では、図２に示すバイナリ化プロセスに従いスキーマを圧縮して圧縮スキーマを生成し、図３に示す解析プロセスに従い圧縮スキーマを用いてバイナリXMLを解析する。また、本実施形態で利用されるスキーマは事前にバイナリ化を行うコンピュータ装置の記憶部104、ROM102、又はRAM103へ保存しておく。
【００１８】
まず、バイナリ化を行うコンピュータ装置の処理手順を、図２を用いて説明する。
【００１９】
本実施形態におけるコンピュータ装置は、XML文書のバイナリ化を指示されると、バイナリ化対象のXML文書に対応するスキーマがあるかどうかを確認する(S202)。各スキーマにはターゲットとなるXML文書を特定するための名前空間が記述されており、XML文書側にも同様にスキーマを特定するための名前空間が記述されている。そのため、XML文書と対応するスキーマがあるかどうかは、XML文書内で利用している名前空間を確認した上で、コンピュータ装置内に保存されている各スキーマの名前空間に関する技術と比較することで判断できる。名前空間宣言が一致するXML文書とスキーマとのペアが見つからないときは、対応するスキーマがないと判断する。スキーマがなければスキーマを利用しないバイナリ化が可能かどうかを確認する(S203)。確認する方法としては例えば、Fast Infosetや特許文献４に開示されたアルゴリズム等を実際に適用してみる方法がある。なお、Fast Infosetについては、http://java.sun.com/developper/technicalArticles/xml/fastinfoset/  を参照。あるいは、バイナリ化対象となるXML文書よりバイナリ化の対象となる記述(数字のみから構成される要素内容)が含まれているかどうかを調べる方法もある。スキーマを利用せずにバイナリ化することが可能であれば、XML文書のみを利用してバイナリ化XMLを生成する(S204)。
【００２０】
一方、S202においてスキーマがあるのであれば、そのスキーマを読み込み(S205)、スキーマの圧縮効果があるかどうかを判断する(S206)。判断方法は、後述するスキーマの圧縮アルゴリズムを実際に実行する方法や、各スキーマ圧縮アルゴリズム毎に必要とされるスキーマの記述("interleave"要素が必要、繰り返しを意味する要素が必要 等)の有無によって判断する方法がある。圧縮効果がないのであれば、通常のスキーマを利用したバイナリ化を行う(S207)。
【００２１】
XML文書のスキーマの情報量を圧縮できるのであれば、スキーマの情報量を圧縮して圧縮スキーマを生成し(S208)、コンピュータ装置内の記憶部104又はRAM103へ出力する。更に、保存した圧縮スキーマを利用してXML文書を圧縮する(S209)。なお、S209でのバイナリ化のアルゴリズムはS207におけるバイナリ化のアルゴリズムと全く同じものになる。
【００２２】
本実施形態におけるコンピュータ装置がバイナリ化を複数回行う場合は、上記のプロセスを行う前に次の処理を実行するようにしてもよい。はじめに、既に圧縮スキーマが生成され記憶部104又はRAM103に記憶されているかどうかを確認する(S210)。既に圧縮スキーマが生成され保存されていた場合には、その圧縮スキーマが今回のバイナリ化アルゴリズムに適切なものかどうかを判定する(S211)。適切な圧縮スキーマであるならば、圧縮スキーマを生成する一連の処理であるS202-S208を省略し、直ちにXML文書のバイナリ化を実行する(S209)。
【００２３】
その後、バイナリXMLを他のコンピュータ装置で扱う際はバイナリXML自体を転送する。このとき、転送先にスキーマ又は圧縮スキーマがない場合は併せて転送する必要がある。スキーマ又は圧縮スキーマは、バイナリXMLと同時に転送したり、又はバイナリXMLを解析するコンピュータが実際にスキーマ情報を必要とした時に転送するなどの方法が利用できる(図は省略)。圧縮スキーマを受け取ったコンピュータ装置は、受け取った圧縮スキーマを記憶部104、又はRAM103へ保存する。
【００２４】
次に、コンピュータ装置におけるバイナリXMLの解析処理手順を、図3を用いて説明する。
【００２５】
本実施形態におけるコンピュータ装置は、バイナリXMLの解析を指示されると、解析対象のバイナリXMLの圧縮スキーマが記憶部104又はRAM103に保存されているかどうかを調べる(S302)。具体的には、バイナリ化の際と同様に、バイナリXML側の名前空間宣言と圧縮スキーマ側の名前空間宣言とを比較し、一致しているかどうかで判断できる。利用できる圧縮スキーマがあればその圧縮スキーマとバイナリXMLとを組み合わせ、バイナリ化前のXML文書の持つ情報を解析し取得する(S303-S304)。
【００２６】
一方、圧縮スキーマはないが通常のスキーマが利用できるのであれば(S305,YES)、スキーマとバイナリXMLとを組み合わせ、バイナリ化前のXML文書の持つ情報を解析し取得する(S306-S307)。この際の利用できるかどうかの判断も、バイナリXMLとスキーマの名前空間宣言を比較することで判断できる。
【００２７】
また、スキーマもないのであれば、バイナリXML単体での解析を行う(S308-S309)。
【００２８】
＜スキーマの圧縮方法＞
以下、本実施形態におけるスキーマの圧縮アルゴリズムについて説明する。スキーマを記述する言語はRELAX NGとする。圧縮の対象とするスキーマの例を図１２に、バイナリ化対象となるXML文書の一例を図１３に示す(読みやすくするために適宜行番号、空白、改行を入れてあるが、本来は含まれていないものとする。以下同様)。なお、図１２に示したスキーマの例は、基本的にはSVG(Scalable Vector Graphics) 1.1の仕様に準拠しているが、説明用に簡略化してある。実際にはSVGは更に多くの子要素・属性を持ち、子要素も更に子要素・属性を持つが、説明を分かり易くするために省略した。
【００２９】
なお、可逆圧縮／不可逆圧縮に関わらず、他にも様々なスキーマ圧縮アルゴリズムが利用できる。また、以下に示す例では圧縮スキーマをテキスト形式のままとしているが、バイナリ形式への変換技術を組み合わせることもできる。
【００３０】
本実施形態におけるスキーマのバイナリ化アルゴリズムは、例えば次のようなものである。
【００３１】
（１）スキーマに定義されている要素毎に子要素の選択肢をリストアップし、宣言順にIDを割り振る。
（２）IDを格納するために必要な最小ビット数を計算する。
（３）XML文書をバイナリ化する時はXML文書に記述された親要素と子要素の組合せから置換するIDを選択し、IDと置換する。IDは上記最小ビット数の領域を確保して記述する。
【００３２】
図１２のスキーマより、SVG要素は子要素として"rect"、"path"等の12個の選択肢を持つことが分かる。このことより、実際にIDを生成すると12種類のIDが割り振られる。この12個の選択肢は、実際にどの子要素が使われるのかに関わらずスキーマに記述された個数分だけカウントされる。実際に割り振られた結果を図１４に示す。選択肢が12種類あるため、この選択肢を実際にデータとして記述するためには４ビットの領域が必要になる。図１３に示すXML文書では、"svg"要素は子要素として"rect"要素と"image"要素を持つ。図１３に示すXML文書をバイナリ化する時は、上記子要素にはそれぞれ"1"と"6"の値を割り振る必要があるので、それぞれ４ビットの領域を確保した上で値を設定する。
【００３３】
以上のバイナリ化に対するスキーマの圧縮アルゴリズムを以下に説明する。
【００３４】
本圧縮アルゴリズムでは、バイナリ化対象のXML文書で利用される要素だけをスキーマに残し、それ以外の情報はスキーマの文法に反しない範囲で削除する。つまり、以下のパターンに従いスキーマを変換する。
【００３５】
（１）各要素において、取り得る子要素の種類をリストアップする。
リストアップの方法としてとは例えば次のような方法がある。
・アプリケーション又はユーザから利用される子要素のリストを受け取る方法。
・バイナリ化対象となる１又は複数のXML文書から要素の親子関係をリストアップし、実際に利用されている子要素のリストを生成する方法。
（２）スキーマにおける"element"要素より、バイナリ化対象のXML文書において子要素として利用されない"element"子要素を削除する。
【００３６】
"svg"要素の子要素が、"rect"要素、"Image"要素のみである場合、図１２の05行目乃至16行目のうち、残すべき行は05行目と10行目のみとなる。不要となった行を削除して生成した圧縮スキーマを図１５に示す。オリジナルのスキーマは20行から構成されていたが、圧縮スキーマは10行に圧縮されていることが分かる。
【００３７】
実際に、圧縮スキーマに対し本実施形態におけるバイナリ化アルゴリズムを適用すると、次のようになる。
【００３８】
図１５の05行目、06行目より、"svg"要素は"rect"要素と"image"要素の２つの子要素を選択肢として持つことが分かる。これにより、２種類のIDが割り振られる。IDの割り振り結果の例を図１６に示す。選択肢が２つのみのため、この選択肢を実際にデータとして記述するためには１ビットの領域しか必要としない。先に述べた通り、図１３に示すXML文書では、"svg"要素は子要素として"rect"要素と"image"要素のみを持つ。図１３に示すXML文書をバイナリ化する時は、上記子要素にそれぞれ"1"と"2"の値を割り振る必要があるので、それぞれ１ビットの領域のみ確保した上で値を設定する。
【００３９】
以上のようなスキーマ圧縮アルゴリズムを利用することにより、本来のスキーマより小さいサイズの圧縮スキーマを用いて、バイナリXMLを生成・利用することができるようになる。なお、バイナリ化アルゴリズムは従来と共通のものを利用できるので、新たにバイナリ化アルゴリズムの処理系を追加する必要もない。
【００４０】
＜変形例１＞
以下の例では、圧縮の対象とするスキーマを図４に示すスキーマとし、バイナリ化対象のXML文書を図５に示すXML文書とする。
【００４１】
この例におけるバイナリ化アルゴリズム、次のようなものである。
【００４２】
（１）スキーマに定義されている要素名、属性名、定数に対し、宣言順にIDを割り振る。
（２）XML文書をバイナリ化するときはXML文書に記述された要素名、属性名、定数を上記IDに置換する。
【００４３】
図４のスキーマより要素名、属性名、定数にIDを割り振るためには、element要素のname属性の属性値・value要素の要素内容から文字列を取得することになる。図４のスキーマの先頭から順に要素名・属性名・定数を取得し、IDを割り振った結果を図６に示す。取得した文字列は、
・02行目の"top"
・04行目の"int_value"
・07行目の"ubyte_value"
・10行目の"int_list"
・19行目の"value_foo"
・20行目の"foo"
となり、１から順にIDを割り振っている。
【００４４】
一方、図６の対応表を利用して図５のXML文書をバイナリ化した結果を図７に示す。図７に示すように、
・01行目の"top"が1
・02行目の"int_value"が2
・03行目の"ubyte_value"が3
・04行目の"int_list"が4
・05行目の"value_foo"が5
・05行目の"foo"が6
・06行目の"top"が1
に、それぞれ置き換えられている。なお、図７では、置換結果を下線の付いた数字で記述しているが、実際は下線を引いた数字の部分は通常の文字と区別されたフォーマットで管理されている。
【００４５】
バイナリXMLから元のXML文書の情報を取得する場合は、同様にスキーマからID対応表を生成し、図７に示したバイナリXMLの下線を引いた数字をID対応表にある文字列と置換する。
【００４６】
以上のバイナリ化に対するスキーマの圧縮アルゴリズムを以下に説明する。
【００４７】
本圧縮アルゴリズムでは、バイナリ化対象の要素名・属性名・要素内容に関する文字列を記述するために必要な要素・属性だけを圧縮スキーマに残し、それ以外の情報は、スキーマの文法に反しない範囲で削除する。つまり、以下のパターンに従いスキーマを変換する。
【００４８】
・start要素は残す。
・interleave、oneOrMore、listはIDを割り振る順番には影響しないため削除する。
・element要素とname属性のペアは文字列を取得するために残す。
・data要素は取得対象となる文字列を持たないので削除する。
・value要素はIDを割り振る文字列を持つために残す。
・要素内容を持たなくなった開始タグ、終了タグの組は空要素タグに置換する。
【００４９】
この結果、図４で残すべき行は01行目、02行目、04行目、06行目、07行目、09行目、10行目、18行目、19行目、20行目、21行目、23行目、24行目のみとなる。また、05行目のdata要素が削除されるため、04行目と06行目にあるelement要素の開始・終了タグの組は一つの空要素タグに置換される。07・09行目の組、10・18行目の組も同様である。その結果、24行あったスキーマは10行の圧縮スキーマに変換される。生成された圧縮スキーマを図８に示す。
【００５０】
圧縮スキーマに対して本例におけるバイナリ化アルゴリズムを適用すると、次のようになる。図８の02行目より順に"top"、"int_value"、"ubyte_value"、"int_list"、"value_foo"、"foo"の６つの文字列が取得される。この順にIDを割り振ると、図６に示すID対応表と全く同じID対応表が生成される。同じID対応表を利用することになるため、バイナリ化アルゴリズムの残りの処理も全く同じ結果となり、図７に示すバイナリXMLが生成される。バイナリXMLを解析する際も同じID対応表が生成され同様の結果が得られる。
【００５１】
この例におけるバイナリ化アルゴリズムに対しては、以上に示したスキーマ圧縮アルゴリズムを利用することで、本来のスキーマより小さいサイズの圧縮スキーマを用いて同じサイズのバイナリXMLを生成・利用することができるようになる。また、バイナリ化アルゴリズムも共通のものを利用できるので、新たにバイナリ化アルゴリズムの処理系を追加する必要もない。
【００５２】
＜変形例２＞
以下の例では、次のようなバイナリ化アルゴリズムを採用する。
【００５３】
（１）スキーマ中にループを意味する記述（ループ文）があれば、バイナリXMLの該当個所の先頭にループの繰り返し回数を記述する。
（２）データ型が指定されている文字列は指定されたデータ型に変換する。
【００５４】
図４のスキーマでループする記述は11行目から始まるoneOrMore要素となり、『int型の要素内容が3回連続する並び』が繰り返されると定義されている。図５の該当個所は05行目となり、『int型の要素内容が3回連続する並び』が2回繰り返されている。これをバイナリ化すると、先頭に値の『2』が入り、続いてint型の値として計6つの値が順に格納される。図９に、バイナリ化した結果の一部を示す。下線を引いた部分は、実際にはそれぞれ値として扱われている。
【００５５】
バイナリXMLから元のXML文書の情報を取得する場合は、図４のスキーマから該当場所が『int型の要素内容が3回連続する並び』が繰り返されている情報を取得し、図９の先頭の値『2』から繰り返し回数が2回であると判断する。結果として、合計6個のintが並んでいると判断し、続く領域からintの領域を6個分読み取り、それぞれintの値として解析することで元の情報を正しく取得できる。
【００５６】
以上のバイナリ化に対するスキーマの圧縮アルゴリズムを以下に説明する。
【００５７】
本圧縮アルゴリズムでは、バイナリ化におけるループ回数のみ変化するようスキーマの記述を変更する。つまり、以下のパターンに従いスキーマを変換する。
・ループを意味する要素(oneOrMore、zeroOrMore)を見つける。
・ループの中があるパターンの繰り返し(『int型が３回』や『byte型とString型のペアが２回』など)の場合は、パターン１回分(『int型が１回』や『byte型とString型のペアが１回』など)に置換する。
【００５８】
この結果、図４のスキーマの11行目乃至17行目は図１０の11行目乃至13行目の3行に置換され、int型の要素内容を１回以上繰り返す圧縮スキーマとなる。なお、上記のルールだけを適用するとdata要素の親要素としてlist要素が残るが、子要素を１つしか持たないlist要素はlist要素を削除しても意味が変わらないため同時に変更を加えた。
【００５９】
圧縮スキーマを用いて本例におけるバイナリ化アルゴリズムを適用すると、次のようになる。
【００６０】
図１０の11-13行目より、int_list要素の要素内容はint型1つが1回以上繰り返されることが分かる。一方、バイナリ化対象となる図５に示すXML文書は要素内容として6個の数値を列挙してあるので、繰り返し回数『6』と、int型の値6個のデータに変換される。変換結果を図１１に示す。図９と異なり、05行目の先頭に記述されている繰り返し回数が『2』から『6』へ変化しているが、バイナリXMLのサイズ自体は同じ結果となる。バイナリ化XMLを解析する際も、圧縮スキーマを利用することでintの領域6個を取り出すことができるので、スキーマを変更する前と同じ結果が取得できる。
【００６１】
この例におけるバイナリ化アルゴリズムに対しては、以上に示したスキーマ圧縮アルゴリズムを利用することで、本来のスキーマより小さいサイズの圧縮スキーマを用いて同じサイズのバイナリXMLを生成・利用することができるようになる。また、バイナリ化アルゴリズムも共通のものを利用できるので、新たにバイナリ化アルゴリズムの処理系を追加する必要もない。
【００６２】
＜他の実施形態＞
以上、本発明の実施形態を詳述したが、本発明は、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【００６３】
なお、本発明は、前述した実施形態の各機能を実現するプログラムを、システム又は装置に直接又は遠隔から供給し、そのシステム又は装置に含まれるコンピュータがその供給されたプログラムコードを読み出して実行することによっても達成される。
【００６４】
したがって、本発明の機能・処理をコンピュータで実現するために、そのコンピュータが実行可能なプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の一つである。
【００６５】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
【００６６】
プログラムを供給するためのコンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD-ROM、CD-R、CD-RWなどがある。また、記録媒体としては、磁気テープ、不揮発性のメモリカード、ROM、DVD（DVD-ROM，DVD-R）などもある。
【００６７】
また、プログラムは、クライアントコンピュータのブラウザを用いてインターネットのホームページからダウンロードしてもよい。すなわち、ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードしてもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードする形態も考えられる。つまり、本発明の機能・処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明の構成要件となる場合がある。
【００６８】
また、本発明のプログラムを暗号化してコンピュータ読み取り可能なCD−ROM等のコンピュータ読み取り可能な記憶媒体に格納してユーザに配布してもよい。この場合、所定条件をクリアしたユーザにのみ、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報で暗号化されたプログラムを復号して実行し、プログラムをコンピュータにインストールしてもよい。
【００６９】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現されてもよい。なお、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行ってもよい。もちろん、この場合も、前述した実施形態の機能が実現され得る。
【００７０】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行ってもよい。このようにして、前述した実施形態の機能が実現されることもある。
【図面の簡単な説明】
【００７１】
【図１Ａ】実施形態における、XML文書を送受信する２つのコンピュータ装置の機能構成を概念的に示すブロック図である。
【図１Ｂ】実施形態に係るコンピュータ装置の構成を示す図である。
【図２】実施形態におけるバイナリXML生成プロセスを示すフローチャートである。
【図３】実施形態におけるバイナリXML解析プロセスを示すフローチャートである。
【図４】実施形態における圧縮前のスキーマの例を示す図である。
【図５】実施形態におけるバイナリ化対象のXML文書の例を示す図である。
【図６】図４のスキーマから取得した要素名・属性名・定数とIDとの対応を示す図である。
【図７】図６のID割り振り結果を利用して図５のXML文書をバイナリ化して得られたバイナリXMLの例を示す図である。
【図８】図４のスキーマの圧縮スキーマの例を示す図である。
【図９】図４のスキーマを用いてバイナリ化された結果の一部を示す図である。
【図１０】図４のスキーマの圧縮スキーマの例を示す図である。
【図１１】図５のXML文書から得られたバイナリXMLの例を示す図である。
【図１２】実施形態における圧縮前のスキーマの例を示す図である。
【図１３】実施形態におけるバイナリ化対象のXML文書の例を示す図である。
【図１４】実施形態における子要素の選択肢とIDの対応表の例を示す図である。
【図１５】図１２のスキーマの圧縮スキーマの例を示す図である。
【図１６】図１５の圧縮スキーマに対する子要素の選択肢とIDの対応の例を示す図である。
【符号の説明】
【００７２】
１０１  CPU
１０２  ROM
１０３  RAM
１０４  記憶部
１０５  操作部
１０６  表示部
１０７  ネットワークi／f
１０８  システムバス
【図１Ａ】
2009128945.tif 000003
【図１Ｂ】
2009128945.tif 000004
【図２】
2009128945.tif 000005
【図３】
2009128945.tif 000006
【図４】
2009128945.tif 000007
【図５】
2009128945.tif 000008
【図６】
2009128945.tif 000009
【図７】
2009128945.tif 000010
【図８】
2009128945.tif 000011
【図９】
2009128945.tif 000012
【図１０】
2009128945.tif 000013
【図１１】
2009128945.tif 000014
【図１２】
2009128945.tif 000015
【図１３】
2009128945.tif 000016
【図１４】
2009128945.tif 000017
【図１５】
2009128945.tif 000018
【図１６】
2009128945.tif 000019