(57)【要約】【課題】効率的に処理を行う。【解決手段】コンピュータベースシステムでＸＭＬ文書を処理する方法に、複数の情報アイテムのそれぞれを複数のバイナリデータユニットの対応する１つに関連付けることと、複数の情報アイテムのうちの１つまたは複数を含むＸＭＬ情報セットに関連するＸＭＬ文書を提供することが含まれる。この方法に、ＸＭＬ文書をバイナリＸＭＬフォーマットにシリアライズすること、またはバイナリＸＭＬフォーマットからＸＭＬ文書をデシリアライズすることが含まれる。シリアライズすることに、ＸＭＬ情報セットの１つまたは複数の情報アイテムをそれに対応する１つまたは複数のバイナリデータユニットに変換することが含まれる。デシリアライズすることに、バイナリＸＭＬフォーマットの１つまたは複数のバイナリデータユニットをそれに対応する１つまたは複数の情報アイテムに変換することが含まれる。【選択図】図１
2006209745.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータベースシステムでＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）文書を処理する方法であって、
複数の情報アイテムのそれぞれを複数のバイナリデータユニットの対応する１つに関連付けるステップと、
複数の情報アイテムのうちの１つまたは複数を含むＸＭＬ情報セットに関連するＸＭＬ文書を提供するステップと、
前記ＸＭＬ文書をバイナリＸＭＬフォーマットにシリアライズするステップであって、シリアライズすることは、前記ＸＭＬ情報セットの前記１つまたは複数の情報アイテムをそれに対応する１つまたは複数のバイナリデータユニットに変換することを含む、シリアライズするステップと、
前記ＸＭＬ文書を前記バイナリＸＭＬフォーマットからデシリアライズするステップであって、デシリアライズすることは、前記バイナリＸＭＬフォーマットの１つまたは複数のバイナリデータユニットをそれに対応する１つまたは複数の情報アイテムに変換することを含む、デシリアライズするステップと
を備えることを特徴とする方法。
【請求項２】
シリアライズするステップは、まず前記１つまたは複数の情報アイテムをテキストＸＭＬフォーマットに変換することなく、前記１つまたは複数の情報アイテムをそれに対応するバイナリデータユニットに変換することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
デシリアライズするステップは、まず前記バイナリＸＭＬフォーマットの前記１つまたは複数のバイナリデータユニットをテキストＸＭＬフォーマットに変換することなく、前記１つまたは複数のバイナリデータユニットをそれに対応する情報アイテムに変換することを含むことを特徴とする請求項１に記載の方法。
【請求項４】
シリアライズするステップは、シリアライズされている現在の情報アイテムを超えた前記ＸＭＬ文書の前記１つまたは複数の情報アイテムのいずれの内容を知ることもなく実行されることを特徴とする請求項１に記載の方法。
【請求項５】
シリアライズするステップは、前記ＸＭＬ文書に関連する前記情報アイテムのうちの少なくともほとんどをまず収集することなく実行されることを特徴とする請求項４に記載の方法。
【請求項６】
シリアライズするステップは、前記１つまたは複数の情報アイテムのテキストＸＭＬフォーマットへの変換に関連するシーケンスに対応するシーケンスで前記１つまたは複数の情報アイテムを変換することを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記１つまたは複数の情報アイテムのうちの少なくとも１つは、バイナリストレージフォーマットを有し、関連付けることは、前記１つまたは複数の情報アイテムのうちの前記少なくとも１つをそのバイナリストレージフォーマットに関連付けることを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記１つまたは複数の情報アイテムのうちの前記少なくとも１つは、数、文字、時刻、および日付を含むアイテムの群から選択されることを特徴とする請求項１に記載の方法。
【請求項９】
前記１つまたは複数の情報アイテムは、１つまたは複数のストリングを含み、関連付けるステップは、前記１つまたは複数のストリングのそれぞれを１つまたは複数のストリング識別子のうちの対応する１つに関連付けることを含み、シリアライズするステップは、前記１つまたは複数のストリングをそれに対応するストリング識別子に変換することを含み、デシリアライズするステップは、前記１つまたは複数のストリング識別子をそれに対応する１つまたは複数のストリングに変換することを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記１つまたは複数のストリング識別子のそれぞれは、数に関連することを特徴とする請求項９に記載の方法。
【請求項１１】
シリアライズの前に、前記１つまたは複数のストリングの少なくとも一部とそれに対応する１つまたは複数のストリング識別子との間の関連に関する情報をシリアライジングユニットおよびデシリアライジングユニットに供給するステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１２】
シリアライズ中に、前記１つまたは複数のストリングの少なくとも一部とそれに対応する１つまたは複数のストリング識別子との間の関連に関する情報をシリアライジングユニットおよびデシリアライジングユニットに供給するステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１３】
関連付けることは、前記ＸＭＬ文書のシリアライズ中に前記１つまたは複数のストリングの一部の前記関連を定義することと、前記部分の前記関連についてデシリアライジングユニットに通知するために、前記シリアライズされたＸＭＬ文書に、前記１つまたは複数のストリングの前記一部とそれに対応する１つまたは複数のストリング識別子との両方を含めることとを含むことを特徴とする請求項９に記載の方法。
【請求項１４】
前記１つまたは複数の情報アイテムは、１つまたは複数のプリミティブ型を含み、関連付けることは、前記１つまたは複数のプリミティブ型のそれぞれを、対応する型識別子および対応する２進数に関連付けることを含むことを特徴とする請求項１に記載の方法。
【請求項１５】
前記１つまたは複数の情報アイテムは、１つまたは複数のＸＭＬコンストラクトを含むことを特徴とする請求項１に記載の方法。
【請求項１６】
第１ユニットから第２ユニットに前記バイナリＸＭＬフォーマットを伝送するステップをさらに備え、前記第１ユニットおよび前記第２ユニットは、それぞれ、プロセッサ、ストレージデバイス、クライアントコンピュータ、およびサーバを含むユニットタイプの群から選択されることを特徴とする請求項１に記載の方法。
【請求項１７】
前記第１ユニットは、前記ＸＭＬ文書をシリアライズし、前記第２ユニットは、前記ＸＭＬ文書をデシリアライズすることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記バイナリフォーマットの前記シリアライズされたＸＭＬ文書は、前記ＸＭＬ文書に関連するテキストＸＭＬ文書との直接の対応を有することを特徴とする請求項１に記載の方法。
【請求項１９】
前記ＸＭＬ文書は、ＳＯＡＰエンベロープであることを特徴とする請求項１に記載の方法。
【請求項２０】
少なくとも１つのプロセッサで実行されるプログラムをエンコードされたコンピュータ読み取り可能な記録媒体であって、前記プログラムは、前記少なくとも１つのプロセッサで実行された時に、ＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）文書を処理する方法を実行し、前記方法は、
複数の情報アイテムのそれぞれを複数のバイナリデータユニットの対応する１つに関連付けるステップと、
複数の情報アイテムのうちの１つまたは複数を含むＸＭＬ情報セットに関連するＸＭＬ文書を提供するステップと、
前記ＸＭＬ文書をバイナリＸＭＬフォーマットにシリアライズするステップであって、シリアライズすることは、前記ＸＭＬ情報セットの前記１つまたは複数の情報アイテムをそれに対応する１つまたは複数のバイナリデータユニットに変換することを含む、シリアライズするステップと、
前記ＸＭＬ文書を前記バイナリＸＭＬフォーマットからデシリアライズするステップであって、デシリアライズすることは、前記バイナリＸＭＬフォーマットの１つまたは複数のバイナリデータユニットをそれに対応する１つまたは複数の情報アイテムに変換することを含む、デシリアライズするステップと
を備えることを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子文書を処理する方法およびシステムに関し、具体的には、伝送またはストレージをサポートするために電子文書をシリアライズし、デシリアライズする方法およびシステムに関する。
【背景技術】
【０００２】
ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）を使用して、統合されたプログラマブルなワールドワイドウェブ（「ウェブ」）ベースサービスの実装を容易にすることができる。ＸＭＬ関連メッセージの交換を介して、サービスは、その機能を記述することができ、他のサービス、アプリケーション、またはデバイスがこれらの機能を簡単に呼び出せるようにすることができる。ＳＯＡＰ（Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）が、この目標を進めるために開発された。ＳＯＡＰは、インターネットを介して異なるオブジェクトモデルに橋を渡すＸＭＬベースの機構であり、ウェブサービスが違いに通信するためのオープンな機構を提供する。
【０００３】
ＸＭＬは、構造化されたデータを記述するフォーマットを提供し、形において、タグベース言語であるハイパーテキストマークアップ言語（ＨＴＭＬ）に似たマークアップ言語である。しかし、ＨＴＭＬと異なって、ＸＭＬタグは、事前定義ではなく、ＨＴＭＬで可能なものより高い柔軟性を可能にする。タグおよびタグの間の構造的関係を定義する機能を提供することによって、ＸＭＬは、豊かな構造のウェブ文書の作成をサポートする。
【０００４】
ＸＭＬ標準規格には、ＸＭＬ文書と呼ばれるデータオブジェクトのクラスが記述され、特に、それを処理するコンピュータプログラムの挙動が記述されている。ＸＭＬ文書は、エンティティと呼ばれるストレージユニットからなり、エンティティには、解析済みデータまたは未解析データのいずれかが含まれる。解析済みデータは、文字からなり、その一部は文字データを形成し、一部はマークアップを形成する。マークアップは、文書のストレージレイアウトおよび論理構造の記述をエンコードする。ＸＭＬは、ストレージレイアウトおよび論理構造に制約を課す機構を提供する。
【０００５】
ＸＭＬ「要素」は、開始タグ、終了タグ、およびタグの間に含まれる情報または内容を含む構造的コンストラクト（ｃｏｎｓｔｒｕｃｔ）である。「開始タグ」は、「＜タグ名＞」としてフォーマットされ、「終了タグ」は、「＜／タグ名＞」としてフォーマットされる。
【０００６】
ＸＭＬ文書では、開始タグと終了タグを、他の開始タグと終了タグの中で入れ子にすることができる。特定の要素内に現れるすべての要素は、その特定の要素の終了タグの前に現れる開始タグおよび終了タグを有する。これによって、ツリー風の構造が定義される。各要素は、このツリー内のノードを形成し、潜在的に、「子」ノードまたは「枝」ノードを有する。子ノードは、「親」ノードの開始タグと終了タグの間に現れるＸＭＬ要素を表す。
【０００７】
ＸＭＬの１つの例示的な使用が、クライアントコンピュータとサーバコンピュータなどの異なるエンティティの間での、要求および応答の形のデータの交換である。クライアントは、情報に関する要求またはあるサーバアクションに関する要求を生成することができ、サーバは、その情報を含むか、あるアクションが実行されたかどうかを確認する、クライアントへの応答を生成することができる。これらの要求および応答の内容は、ＸＭＬ文書すなわちＸＭＬの仕様に従う文字のシーケンスの形である。
【０００８】
ＳＯＡＰ仕様では、ＸＭＬエンコードされたデータを渡す均一な形が定義されている。ＳＯＡＰ仕様では、基礎になる通信プロトコルとしてＨＴＴＰを使用するリモートプロシージャコール（ＲＰＣ）を実行する形も定義されている。
【０００９】
ＳＯＡＰメッセージは、必須のＳＯＡＰエンベロープ、任意選択のＳＯＡＰ  Ｈｅａｄｅｒ、および必須のＳＯＡＰ  Ｂｏｄｙを含むＸＭＬ文書である。ＳＯＡＰは、サーバ、サービス、コンポーネント、およびオブジェクトのメソッドを呼び出すためのプロトコル仕様を提供する。ＳＯＡＰは、メソッド呼出し機構としてＸＭＬおよびＨＴＴＰを使用する既存の実線を体系化したものである。ＳＯＡＰ仕様は、ファイヤウォール／プロキシフィルタを容易にする少数のＨＴＴＰヘッダを要求する。ＳＯＡＰ仕様は、メソッドパラメータ、戻り値、および例外を表すのに使用されるＸＭＬボキャブラリも要求する。
【００１０】
ＳＯＡＰは、特定のアプリケーションがどのオペレーティングシステム、オブジェクトモデル、または言語を使用するかにかかわらず、アプリケーションがＸＭＬベースメッセージを使用してウェブを介して通信するオープンで拡張可能な形を提供する。ＳＯＡＰは、標準ＸＭＬで単純な拡張可能メッセージフォーマットを定義し、したがってＨＴＴＰを介してそのＸＭＬメッセージを送る形を提供することによって、万能の通信を容易にする。
【００１１】
「ＸＭＬ  ｉｎｆｏｓｅｔ」は、ＸＭＬ文書の抽象表現である（例えば、非特許文献１参照）。ＸＭＬ文書のｉｎｆｏｓｅｔ（情報アイテムを含む）は、文書のフォーマットに対する制限なしに、ＸＭＬ文書の情報内容とみなすことができる。
【００１２】
例のｉｎｆｏｓｅｔを続ける。例のｉｎｆｏｓｅｔ「Ｂｏｏｋ」のルート要素に、「Ｐｒｉｃｅ」と呼ばれる１つの属性が含まれる。この「Ｐｒｉｃｅ」属性は、「３５」という値を有する。このルート要素には、「Ｗａｒ  ａｎｄ  Ｐｅａｃｅ」という値を有する型Ｔｅｘｔの１つの内容ノードも含まれる。ＸＭＬ標準規格（例えば、非特許文献２参照）は、ｉｎｆｏｓｅｔをテキストとしてシリアライズする方法を指定している。例えば、例のｉｎｆｏｓｅｔを、次のようにシリアライズすることができる。
【００１３】
【数１】
2006209745.tif 000003
【００１４】
伝送またはストレージのために、このテキストＸＭＬは、通常、対応するテキストを表すバイトにエンコードされる。いくつかのテキスト変換標準規格に、ＡＳＣＩＩ  Ｕｎｉｃｏｄｅ、ＵＴＦ８、およびＵＴＦ１６が含まれる。例えば、上のテキストＸＭＬ文書は、ＡＳＣＩＩエンコーディングを介して次のように伝送することができる。
第１バイトは、６０（「＜」のＡＳＣＩＩコード）として伝送される
第２バイトは、６６（「Ｂ」のＡＳＣＩＩコード）として伝送される
第３バイトは、１１１（「ｏ」のＡＳＣＩＩコード）として伝送される
第４バイトは、１１１（「ｏ」のＡＳＣＩＩコード）として伝送される
第５バイトは、１０７（「ｋ」のＡＳＣＩＩコード）として伝送される
など
【００１５】
したがって、通常、ＸＭＬ  ｉｎｆｏｓｅｔのインメモリ表現は、テキストＸＭＬストリングにシリアライズされ、その後、このテキストストリングの文字が、伝送のために対応するバイトにエンコードされる。逆のプロセスでは、受け取られたテキスト関連ＸＭＬバイトが、対応するテキストＸＭＬストリングにデコードされ、このテキストＸＭＬストリングが、デシリアライズされ、ストアされて、ＸＭＬ  ｉｎｆｏｓｅｔのインメモリ表現が提供される。
【００１６】
ＸＭＬ  ｉｎｆｏｓｅｔのインメモリ表現は、論理的には存在するが、物理的に存在する必要はない。すなわち、ｉｎｆｏｓｅｔに関連する情報アイテムは、シリアライズの前に物理位置に存在する必要がない。
【００１７】
例えば、オブジェクト指向言語ベースのプログラムに、ＸＭＬ文書をシリアライズし、かつ／またはデシリアライズするコードを含めることができる。例えば、上の例をシリアライズするオブジェクト指向コードを、次のようなものとすることができる。
【００１８】
【数２】
2006209745.tif 000004
【００１９】
「Ｘｍｌ．Ｗｒｉｔｅｒ」メソッドは、テキストＸＭＬ文書を表す次のバイトを作る。
【００２０】
【数３】
2006209745.tif 000005
【００２１】
ＸＭＬ標準規格は、ＸＭＬ情報アイテムの比較的簡単なシリアライゼーションおよび人間可読のテキストのシリアライズされた文書を提供する。しかし、この文書は、冗長であり、処理に非効率的である。
【００２２】
【特許文献１】米国特許第６，８２３，３６９号明細書
【特許文献２】米国特許第６，６７１，８５３号明細書
【特許文献３】米国特許第６，６４３，６５２号明細書
【特許文献４】米国特許出願番号第２００４／０２４３８００号
【非特許文献１】http://www.w3.org/TR/2004/REC-xml-infoset-20040204
【非特許文献２】http://www.w3.org/TR/REC-xml/
【非特許文献３】Bosworth et al., "XML, Soap and Binary Data ," printed from website http://www.xml.com/lpt/a/2003/02/06/binaryxml.html; February 24, 2003, pp. 1-8
【非特許文献４】Box, "A Guide to Developing and Running Connected System With Indigo, "printed from website http://msdn.microsoft.com/msdnmag/issues/04/01/indigo/?print=true; 1/2005, pp.1-10
【発明の開示】
【発明が解決しようとする課題】
【００２３】
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
【００２４】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、効率的に処理を行う文書のバイナリシリアライゼーションの方法およびシステムを提供することにある。
【課題を解決するための手段】
【００２５】
本発明のいくつかの実施形態は、電子ベース文書を、シリアライズされた文書のサイズを減らし、処理の速度を高め、かつ／または配布に必要な時間を減らすことができる形でシリアライズし、かつ／またはデシリアライズすることができるという理解から生じた。これらの実施形態のいくつかで、ＸＭＬ文書は、情報アイテムをバイナリデータユニット識別子に関連付ける辞書の使用を介してバイナリフォーマットにシリアライズされる。この識別子は、例えば、既知のストリング、繰り返されるストリング、繰り返される構造、プリミティブ型、および／またはコンストラクトを識別することができる。
【００２６】
いくつかの実施形態は、静的なおよび／または動的な辞書を利用する。静的辞書に、事前定義の関連を含めることができる。動的辞書に、インバンドのおよび／またはアウトオブバンドの関連を含めることができる。インバンド関連に、シリアライズされたＸＭＬ文書を含めることができ、アウトオブバンド関連は、例えば、アウトオブバンド辞書エントリを利用するシリアライズされたＸＭＬ文書と独立に送信することができる。
【００２７】
したがって、本発明のいくつかの実施形態は、例えばＸＭＬ文書およびＳＯＡＰメッセージ用の、シリアライズされた文書のサイズ、解析、および生成速度の改善に関して標準ＸＭＬの人間可読性と冗長性を交換する代替のシリアライゼーションフォーマットを提供する。
【００２８】
これらの実施形態のいくつかは、ＸＭＬエンコーディング／デコーディングプロセスで冗長な情報を削減または除去することによって、ＸＭＬ文書のバイナリ仮想表現の効率的なストリーミングを達成する。冗長性は、ＸＭＬ全体の内容の事前の知識なしで除去することができる。シリアライズされた文書は、まだ、テキストＸＭＬ文書との直接の対応を有することができる。すなわち、バイナリＸＭＬフォーマットの一実施形態は、その呼出しがテキストＸＭＬリーダーまたはテキストＸＭＬライタへの呼出しに似て見えるリーダーソフトウェアおよびライタソフトウェアの使用を可能にする。呼出しのユーザは、基礎になるバイナリシリアライゼーションプロセスを知る必要がない。
【００２９】
したがって、本発明の一実施形態は、コンピュータベースシステムでＸＭＬ文書を処理する方法を特徴とする。この方法には、情報アイテムを対応するバイナリデータユニットに関連付けることと、１つまたは複数の情報アイテムを含むＸＭＬ情報に関連するＸＭＬ文書を提供することが含まれる。この方法には、さらに、ＸＭＬ文書をバイナリＸＭＬフォーマットにシリアライズすること、またはバイナリＸＭＬフォーマットからＸＭＬ文書をデシリアライズすることが含まれる。シリアライズすることに、ＸＭＬ情報セットの１つまたは複数の情報アイテムをそれに対応する１つまたは複数のバイナリデータユニットに変換することが含まれる。デシリアライズすることに、バイナリＸＭＬフォーマットの１つまたは複数のバイナリデータユニットをそれに対応する１つまたは複数の情報アイテムに変換することが含まれる。
【００３０】
本発明のもう１つの実施形態は、少なくとも１つのプロセッサでの実行のためのプログラムをエンコードされたコンピュータ可読媒体を特徴とする。このプログラムは、その少なくとも１つのプロセッサで実行された時に、ＸＭＬ文書を処理する上述の方法を実行することができる。
【００３１】
添付図面は、原寸通りに描かれることを意図されたものではない。図では、様々な図面に図示された同一のまたはほぼ同一のコンポーネントのそれぞれが、類似する符号によって表されている。明瞭にするために、すべてのコンポーネントにすべての図面で符号を付けているわけではない。
【発明の効果】
【００３２】
本発明によれば、効率的に処理を行うことができる。
【発明を実施するための最良の形態】
【００３３】
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。
【００３４】
本発明は、次の説明または図面に示されたコンポーネントの構成および配置の詳細への適用に制限されない。本発明は、他の実施形態が可能であり、様々な形で実践または実行することができる。また、本明細書で使用される語法および用語法は、説明のためであり、制限的とみなしてはならない。「ｉｎｃｌｕｄｉｎｇ」、「ｃｏｍｐｒｉｓｉｎｇ」または「ｈａｖｉｎｇ」、「ｃｏｎｔａｉｎｉｎｇ」、「ｉｎｖｏｌｖｉｎｇ」およびその変形の本明細書での使用は、その後にリストされた品目およびその同等物ならびに追加の品目を含むことを意味する。
【００３５】
まず図１を参照して、本発明の一実施形態のある広い原理を説明する。図１は、本発明の一実施形態による、ＸＭＬ文書を処理する方法１００の流れ図である。方法１００には、情報アイテムを対応するバイナリデータユニットに関連付けること１１０、ＸＭＬ文書を提供すること１２０、およびＸＭＬ文書をバイナリＸＭＬフォーマットにシリアライズすること１３０または情報アイテムと対応するバイナリデータユニットとの間の関連の使用を介してバイナリＸＭＬフォーマットからＸＭＬ文書をデシリアライズすること１４０が含まれる。
【００３６】
ＸＭＬ文書をバイナリＸＭＬフォーマットにシリアライズすること１３０には、ＸＭＬ情報セットの１つまたは複数の情報アイテムをそれに対応する１つまたは複数のバイナリデータユニットに変換することが含まれる。同様に、バイナリＸＭＬフォーマットからＸＭＬ文書をデシリアライズすること１４０には、バイナリＸＭＬフォーマットの１つまたは複数のバイナリデータユニットをそれに対応する１つまたは複数の情報アイテムに変換することが含まれる。情報アイテムに、ＸＭＬ技術の当業者に既知の情報アイテムのタイプおよび他のすべての適切なタイプを含めることができる。下で詳細に説明するように、情報アイテムとバイナリデータユニットの間の関連は、とりわけ、ＸＭＬ文書のより効率的な処理およびコンパクトなシリアライゼーションを提供することができる。
【００３７】
情報アイテムに、例えば、下で詳細に説明する他の適当な情報アイテムの中でも、プリミティブ型、ストリング、テキスト、およびＸＭＬコンストラクトを含めることができる。便宜のために、情報アイテムと対応するバイナリデータユニットとの間の関連を、辞書に含めることができる。しかし、用語「辞書」の使用は、特定のフォーマットまたはストレージの選択に制限されない。
【００３８】
辞書を、シリアライゼーション中に参照として使用して、対応するバイナリデータユニットへの情報アイテムの変換をサポートすることができる。適当なバイナリＸＭＬフォーマットおよび情報アイテムとバイナリデータユニットとの間の関連の辞書の例を、下で詳細に説明する。
【００３９】
情報セットおよびその情報アイテムは、Ｗ３Ｃ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｃｏｎｓｏｒｔｉｕｍ）によって確立されたｉｎｆｏｓｅｔの標準規格（例えば、非特許文献１参照）に従うものとすることができる。明確に形成されたＸＭＬ文書のｉｎｆｏｓｅｔに、少なくとも、文書情報アイテムおよび複数の他の情報アイテムが含まれ、情報アイテムは、ＸＭＬ文書のある部分の抽象記述である。各情報アイテムは、関連する名前付きプロパティのセットを有する。
【００４０】
これから、図２から４を参照し、バイナリＸＭＬフォーマットのいくつかの実施形態を説明する。便宜のために、バイナリデータユニットの表現およびバイナリデータユニット自体を、それに関連する情報アイテムの識別子として交換可能に参照する。しかし、本発明の実施形態に従って実際にシリアライズされたバイナリＸＭＬ文書に、その表現に対応するバイナリデータユニットの実際の２進数が含まれることを理解されたい。
【００４１】
さらに、バイナリＸＭＬフォーマットの実施形態のコンポーネントが、標準ＸＭＬコンポーネントに類似する機能を果たす場合に、標準ＸＭＬ命名規約が、通常、この「発明を実施するための最良の形態」で使用される。したがって、ＸＭＬ技術の当業者は、要素および属性などのコンポーネントの機能と関連する値とを理解するであろう。
【００４２】
次の説明に、様々なタイプの情報アイテムの辞書エントリの例が含まれる。これらの例は、本発明の実施形態で使用することができるが、実施形態をこの例示的な辞書エントリの使用に制限するのではなく、例示的であることを意図されたものである。本発明のいくつかの実施形態は、これらの関連のすべてより少数を使用し、他の実施形態には追加の関連が含まれる。さらに、一部のバイナリデータユニットに割り当てられた特定の値の少なくとも一部は、任意である。
【００４３】
まず、一部のバイナリデータユニットの説明のコンテキストを提供するために、バイナリＸＭＬフォーマットされた文書の構造の実施形態を、図２を参照して説明する。図２は、この例示的な実施形態による、バイナリＸＭＬフォーマットに対応する要素２００のブロック図である。この実施形態では、文書に、１つの要素２００だけが含まれる。しかし、要素２００に、他の要素を含めることができる。
【００４４】
要素２００に、ＳｔａｒｔＥｌｅｍｅｎｔ構造２２０、０個以上のＡｔｔｒｉｂｕｔｅ構造２３０、および０個以上のＥｌｅｍｅｎｔＣｏｎｔｅｎｔｓ構造２４０が含まれる。要素２００は、標準ＸＭＬ要素に類似する構造を有する。例えば、対応するＸＭＬ要素は、「＜ＥＬＥＭ．．．＞．．．＜／ＥＬＥＭ＞」として現れることができる。
【００４５】
要素２００は、サブセットノード２１０から始まり、ＥｎｄＥｌｅｍｅｎｔノード２５０で終わることができる。ＥｎｄＥｌｅｍｅｎｔノード２５０が存在しない場合に、要素２００は、要素２００の終りを暗示する特殊なテキストノードを含むＥｌｅｍｅｎｔＣｏｎｔｅｎｔｓ構造２４０で終わることができる。
【００４６】
要素２００を、下で詳細に説明する。情報アイテムとバイナリデータユニットの間の、要素２００の内容のシリアライズおよびデシリアライズに使用できる関連のいくつかの例を、次に説明する。
【００４７】
ストリング−本発明の一実施形態は、ストリングを対応するストリング識別子に関連付け、このストリング識別子は、シリアライズされた文書にバイナリデータユニットとして現れる。ストリングは、辞書に静的にまたは動的に置くことができる。静的辞書アイテムは、ＸＭＬ文書のシリアライゼーションの前に定義されるアイテムである。この場合に、シリアライザおよびデシリアライザは、必要になる前に静的辞書アイテムに合意するか、それを供給されることができる。
【００４８】
対照的に、動的辞書エントリは、シリアライゼーションプロセス中に生成される。あるストリングに初めて出会った時に、シリアライザは、例えば、そのストリングに識別子番号を割り当て、そのストリングおよび関連する新しいストリング識別子番号の両方をシリアライズされた文書に置くことができる。受取り側のデシリアライザは、後の参照のために、新しいストリングおよび関連する識別子番号を辞書に置くことができる。その後、同一のストリングの繰り返される出現を、識別子のバイナリデータユニットだけの使用を介してすなわち、ストリングを含めることなく、シリアライズすることができる。
【００４９】
このプロセスの例として、ストリング「Ｈｅｌｌｏ」が、このストリングの最初の使用時に続けて４回現れる、すなわち、「Ｈｅｌｌｏ」「Ｈｅｌｌｏ」「Ｈｅｌｌｏ」「Ｈｅｌｌｏ」であるものとすることができる。このシーケンスを、「Ｈｅｌｌｏ＝７，７，７，７」と変換することができ、ここで、新しいストリング「Ｈｅｌｌｏ」に７という識別子番号が動的に割り当てられている。方法１００について、番号７をバイナリ形で表して、ストリング「Ｈｅｌｌｏ」に関連するバイナリデータユニットを供給する。
【００５０】
あるストリングが、シリアライズされた文書に含まれる時に、そのストリングを、標準ＸＭＬフォーマットまたは他の適切なフォーマットの使用を介してシリアライズすることができる。例えば、ストリングを、そのストリングのバイト単位の長さを示すＭＢ３２エンコードされた整数（下で説明する）と、それに続く、ＵＴＦ８エンコーディングでそのストリングを表す示された個数のバイトとしてシリアライズすることができる。ＵＴＦ８は、データシリアライゼーション技術の当業者に既知のエンコーディング標準規格である。他の適切なエンコーディングフォーマットを使用することができる。バイト数は、０とすることができる。
【００５１】
本発明の一実施形態は、ストリング識別子に関する使用の次のルールを有する。実際のストリングが、ストリング識別子と共に含まれない場合に、そのストリングは、前に定義されていなければならない。例えば、そのストリングは、文書内でまたはアウトオブバンド機構を介して以前に定義されたものとすることができる。アウトオブバンド機構には、例えば、文書のシリアライゼーションプロセスの外部で作られる、事前定義の静的辞書エントリまたは動的辞書エントリが含まれる。
【００５２】
さらに、ストリングの定義のスコープは、現在のＸＭＬ要素だけではなく、少なくとも文書の終りまで固定することができる。ストリング定義は、その再定義を防ぐために固定することができる。ストリング識別子のバイナリデータユニットの最後のビットが、その識別子が静的辞書から導出されたか否かを示すことができる。この情報は、例えば、文書のシリアライゼーション中の静的辞書内のストリングの再定義を防ぐのに使用することができる。
【００５３】
プリミティブ型−本発明のいくつかの実施形態は、プリミティブ型のデータとそのデータを識別するバイナリデータユニットの間の関連を利用する。ＸＭＬの当業者に既知のように、基本型または単純型とも呼ばれるプリミティブ型に、数値定数と、例えば数および文字を含む、単一の値として表すことができる他のデータが含まれる。当業者に既知のプリミティブ型の例に、文字、８ビット符号付き整数、符号付きｓｈｏｒｔ整数、符号付き整数、符号付きｌｏｎｇ整数、１０進数、実数（単精度）、実数（倍精度）、およびブール値が含まれる。これらの実施形態は、１つまたは複数のプリミティブ型を、そのプリミティブ型を識別するバイトおよびそのプリミティブ型の値を識別するバイナリ表現を含むバイナリデータユニットに関連付ける。本発明の一実施形態に関する一部のプリミティブ型およびそれに関連するバイナリデータユニットを、図４ａを参照して下で説明する。
【００５４】
効率的な内部表現を有するデータ−いくつかの実施形態で、効率的な内部表現を有するデータが、その内部表現に関連付けられる。すなわち、そのようなデータは、それ自体に「変換」される。
【００５５】
例えば、そのようなデータは、ストリングを生成するためにまずテキストとしてエンコードされる必要がない。日付および時刻が、通常は効率的な内部表現を有するデータの例である。例えば、日付「１０／１４／２００４」を、１０個の文字「１」、「０」、「／」、「１」、「４」、「／」、「２」、「０」、「０」、および「４」をバイナリバイト（例えば、１文字ごとに８ビットまたは１６ビットを必要とする）に変換することによって、バイナリフォーマットにシリアライズすることができる。日付の通常の内部表現は、６４ビットを有し、したがって、文書に現れる日付を、メモリ内でその６４ビット表現としてシリアライズすることができ、サイズと処理時間の両方が節約される。
【００５６】
図３を参照すると、いくつかの実施形態で、データの内部表現の不要な部分が、関連するバイナリデータユニットで除去される。例えば、普通の実践は、整数を４バイトのデータによって表すことを必要とする、すなわち、４バイトのメモリを必要とする可能性がある。しかし、多くの一般的に使用される整数は、１バイトまたは２バイトに収めることができる小さい数である。１つの実施形態では、整数を、本明細書で「ＭＢ３２エンコーディング」と称するエンコーディング方式を介して関連するバイナリデータユニットに変換する。このエンコーディングでは、関連する整数のバイナリ表現をもたらすのに必要なスペースが減る。
【００５７】
図３は、整数のＭＢ３２エンコーディングの一実施形態に使用されるスペースを示すサイズ範囲の表である。図からわかるように、未使用バイトが、シリアライズされた整数から除去されている。他の適切な効率的変換が、データストレージ技術の当業者に明白である。
【００５８】
当業者に既知のように、すべての３２ビット整数が、１個から３２個の関連するビットを有することができる。例えば、１０進数の３すなわち２進数の１１は、２つの関連するビットを有し、数５４すなわち２進数の１１０１１０は、６つの関連するビットを有する。本発明の一実施形態では、ＭＢ３２エンコーディング方式が、関連するビットだけをエンコードする。さらに、ＭＢ３２整数の各バイトを、最上位ビットを先にエンコードすることができ、ＭＢ３２整数の最下位バイト（ＬＳＢ）を、先に保管することができる。
【００５９】
一実施形態で、ＭＢ３２整数の各バイトに、必要な場合に０を用いてパディングすることができる７つの関連するビットが含まれ、１つの「継続」ビットすなわち最上位ビットが含まれる。継続ビットがセットされている場合に、ＭＢ３２エンコーディングされた整数のもう１つのバイトが、現在のバイトに続く。ＭＢ３２整数は、３２ビット整数にデコードすることができ、ＭＢ３２バイトからのすべての関連するビットを、次のバイトを含めなければならないことを示すのに継続ビットを使用することによって連結することができる。
【００６０】
ＸＭＬコンストラクト−次に、図４ａ、４ｂ、および４ｃを参照すると、いくつかの実施形態で、一部のバイナリデータユニットは、ＸＭＬコンストラクトに関連する情報アイテムを識別する。したがって、繰り返して現れるＸＭＬコンストラクトを、ショートカットとしての表現すなわちそれに関連するバイナリデータユニットを介してバイナリフォーマットでより効率的にシリアライズすることができる。コンストラクトを識別するバイナリデータユニットを、本明細書では「特殊ノード」と呼ぶ。
【００６１】
図４ａは、本発明の一実施形態による、特殊ノードタイプと、バイナリデータユニットの対応するバイト値との表である。特殊ノードの例を、次に説明する。
【００６２】
プレフィックス関連コンストラクト−ＸＭＬには、「プレフィックス」に関連するコンストラクトが含まれる。例えば、要素＜ｃｏｌｏｒｓ：ｂｌｕｅ＞は、名前「ｂｌｕｅ」およびプレフィックス「ｃｏｌｏｒｓ」を有する。このコンストラクトおよび関連する情報をシリアライズするために、１つの従来のシリアライゼーションに、ストリング「ｃｏｌｏｒｓ」および「ｂｌｕｅ」を有するプレフィックス要素ノードが含まれる。
【００６３】
この例では＜ｃ：ｂｌｕｅ＞などの１文字プレフィックスを使用して、スペースを節約することができる。しかし、本発明の一実施形態では、ショートカット特殊ノード（「ｃを用いてプレフィックスされた要素ノード」）が、ストリング「ｂｌｕｅ」を用いてシリアライズされ、したがって、シリアライゼーションで１つのストリングすなわちストリング「ｃｏｌｏｒｓ」が除去される。いくつかの実施形態に、ａからｚまでのすべての文字に関する類似する特殊ノードが含まれる。図４ａの表にリストされた、あるプレフィックス関連特殊ノードの説明を、図２をもう一度参照して次に示す。
【００６４】
要素２００のＳｔａｒｔＥｌｅｍｅｎｔ構造２２０は、要素２００の先頭に関連する。ＳｔａｒｔＥｌｅｍｅｎｔ構造２２０は、複数の形のうちの１つを有することができる。これらの形は、開始要素関連特殊ノードを利用することができる。
【００６５】
これらの特種ノードは、様々な開始要素関連コンストラクトの効率的なシリアライゼーションをサポートする。そのようなコンストラクトは、この例示的な例では、プレフィックスの存在、プレフィックスの事前定義（ある場合に）、要素２００のローカル名、要素２００のローカル名に対応するストリングの事前定義（ある場合に）に関連する。
【００６６】
例えば、ＳｔａｒｔＥｌｅｍｅｎｔ構造２２０に、プレフィックスなしの非事前定義ストリングであるローカル名（特殊ノード「ＳｈｏｒｔＥｌｅｍｅｎｔ」を使用する）；非事前定義プレフィックスおよび非事前定義ストリングであるローカル名（特殊ノード「Ｅｌｅｍｅｎｔ」を使用する）；プレフィックスなしの事前定義ストリングであるローカル名（特殊ノード「ＳｈｏｒｔＤｉｃｔｉｏｎａｒｙＥｌｅｍｅｎｔ」およびストリングを識別するバイナリデータユニットを使用する）；事前定義のプレフィックスおよび事前定義ストリングであるローカル名（特殊ノード「ＰｒｅｆｉｘＤｉｃｔｉｏｎａｒｙＥｌｅｍｅｎｔＡ」から「ＰｒｅｆｉｘＤｉｃｔｉｏｎａｒｙＥｌｅｍｅｎｔＺ」のうちの１つおよびストリングを指定するバイナリデータユニットを使用する）；または非事前定義プレフィックスおよび事前定義ストリングであるローカル名（特殊ノード「ＤｉｃｔｉｏｎａｒｙＥｌｅｍｅｎｔ」を使用する）；ならびに事前定義プレフィックスおよび事前定義ストリングでないローカル名（特殊ノード「ＰｒｅｆｉｘＥｌｅｍｅｎｔＡ」から「ＰｒｅｆｉｘＥｌｅｍｅｎｔＺ」のうちの１つおよびストリングを使用する）を含めることができる。
【００６７】
属性関連構造−ＸＭＬでは、要素「属性」を定義し、「値」を割り当てることができる。例えば、テキストＸＭＬコード「＜ｂｏｏｋ  ａｕｔｈｏｒ＝ｓｍｉｔｈ＞」では、「ｓｍｉｔｈ」という値が、「ｂｏｏｋ」要素の「ａｕｔｈｏｒ」属性に割り当てられている。この文書を従来の形でシリアライズするためには、属性割り当てノードが、通常、ストリング「ａｕｔｈｏｒ」および「ｓｍｉｔｈ」と共に含まれる。本発明の一実施形態では、特殊ノードが、「ａｕｔｈｏｒ」属性のために作成されて、例えば、この属性に対して行われる各割り当てと共にストリング「ａｕｔｈｏｒ」をシリアライズする必要をなくす。
【００６８】
図２をもう一度参照すると、要素２００のＡｔｔｒｉｂｕｔｅ構造２３０は、ＸＭＬ属性に対応して機能する。標準ＸＭＬと同様に、Ａｔｔｒｉｂｕｔｅ構造２３０は、例えば、値−名前対を要素２００に関連付けるのに使用することができる。開始要素関連コンストラクトについて上で説明した例に似て、属性関連コンストラクトは、図４ａの表にリストされたものなどの属性関連特殊ノードを利用することができる。
【００６９】
例えば、「ＡｔｔｒｉｂｕｔｅＣｏｎｔｅｎｔ」という値を「ＬｏｃａｌＮａｍｅ」属性に割り当てるために、Ａｔｔｒｉｂｕｔｅ構造２３０に、ＳｔａｒｔＥｌｅｍｅｎｔ２２０に関して上で説明したものに似た複数の特殊ノードのうちの１つを含めることができる。例えば、下で説明するように、図４ａの表に、８つの属性関連特殊ノードがあり、そのうちの４つがｘｍｌｎｓ関連である。他の４つの属性関連特殊ノードは、例えば、次の情況で使用することができる：プレフィックスがなく、属性の事前定義ストリングがない場合（ＳｈｏｒｔＡｔｔｒｉｂｕｔｅ）、非事前定義プレフィックスがあり、事前定義ストリングがない場合（Ａｔｔｒｉｂｕｔｅ）、プレフィックスがなく、名前空間の事前定義ストリングがある場合（ＳｈｏｒｔＤｉｃｔｉｏｎａｒｙＡｔｔｒｉｂｕｔｅ）、および非事前定義プレフィックスがあり、事前定義ストリングがある場合（ＤｉｃｔｉｏｎａｒｙＡｔｔｒｉｂｕｔｅ）。
【００７０】
ＸＭＬで一般的に発生する属性関連コンストラクトの１つが、「ｘｍｌｎｓ」の値すなわち名前空間属性の割り当ての構造である。テキストＸＭＬでは、これが、例えば、名前空間値「http://books.org」を要素「ｂｏｏｋ」の「ｘｍｌｎｓ」属性に割り当てるための「<book xmlns=http://books.org>」として現れる可能性がある。従来、この例では、このコンストラクトおよび関連する値を伝送するために、「属性割り当てノード」に、通常、ストリング「ｘｍｌｎｓ」および「http://books.org」の両方が続く。
【００７１】
しかし、図４ａからわかるように、名前空間属性コンストラクトは、１つまたは複数のショートカット名前空間割り当て特殊ノードによって表すことができる。特殊ノードの１つおよびストリング「http://books.org」がシリアライズされた文書に含まれる時に、１つのストリングすなわち「Ｘｍｌｎｓ」の包含が、除去される。すなわち、バイナリフォーマットシリアライゼーションに、特殊ノードと、インターネットアドレスに関連するストリングが含まれる。
【００７２】
「ｘｍｌｎｓ」の値を名前空間属性に割り当てるために、ａｔｔｒｉｂｕｔｅ構造２３０に、例えば、図４ａの表に示された４つの名前空間割り当て特殊ノードのうちの１つを含めることができる。この４つのショートカットｘｍｌｎｓ関連特殊ノードは、次の情況で使用することができる：プレフィックスがなく、名前空間事前定義ストリングがない場合（ＳｈｏｒｔＸｍｌｎｓＡｔｔｒｉｂｕｔｅ）；非事前定義プレフィックスがあり、事前定義ストリングがない場合（ＸｍｌｎｓＡｔｔｒｉｂｕｔｅ）；プレフィクスがなく、事前定義ストリングがある場合（ＳｈｏｒｔＤｉｃｔｉｏｎａｒｙＸｍｌｎｓＡｔｔｒｉｂｕｔｅ）；および非事前定義プレフィックスがあり、事前定義ストリングがある場合（ＤｉｃｔｉｏｎａｒｙＸｍｌｎｓＡｔｔｒｉｂｕｔｅ）。
【００７３】
テキスト関連コンストラクト−図４ｂは、本発明の一実施形態による、テキスト関連情報アイテム（上で説明したいくつかのプリミティブ型を含む）に関連する特殊ノードタイプおよびバイナリデータユニットの対応するバイト値の表である。この表には、次のプリミティブ型の関連が含まれる：ブール、数値（複数の変形）、リスト、文字、テキスト、およびバイナリデータ。
【００７４】
図４ｂのテキスト関連特殊ノードは、下で詳細に説明する特殊なＥｎｄＥｌｅｍｅｎｔノードを含む対で提供される。テキストは、そのテキストのタイプに依存する形で処理することができる。例えば、一実施形態は、次のタイプを含むテキストの関連を提供する：空のストリング；事前定義のストリング；任意のストリングまたはデータ；および、日付／時刻関連ストリングなどの特定のタイプのストリング。
【００７５】
空のストリングは、図４ｂの例に示されているように、１４７のバイト値を有するバイナリデータユニットによって識別される特殊ノード「ＥｍｐｔｙＴｅｘｔ」に関連付けることができる。辞書のストリングは、「ＤｉｃｔｉｏｎａｒｙＴｅｘｔ」特殊ノード（１４８のバイト値）とそれに続く、辞書内の関連するストリングを識別するＭＢ３２エンコードされた整数（ここでは、バイナリデータユニット）によって示すことができる。
【００７６】
「Ｃｈａｒｓ．．．Ｔｅｘｔ」特殊ノードおよび「Ｂｉｎａｒｙ．．．Ｔｅｘｔ」特殊ノードは、任意のストリングおよびデータをサポートする。「Ｃｈａｒｓ．．．Ｔｅｘｔ」特殊ノードは、英数字文字に先行し、この英数字文字は、例えばＵＴＦ８エンコーディングを介してエンコードすることができる。「Ｂｉｎａｒｙ．．．Ｔｅｘｔ」特殊ノードは、バイナリデータに先行する。
【００７７】
この特殊ノードに、次が含まれる：シリアライズされたバイナリフォーマット文書に含まれる時に、それに続くバイト数を表す符号なしバイトと、テキストまたはデータに関連するバイトとが続く「Ｃｈａｒｓ８Ｔｅｘｔ」または「Ｂｙｔｅｓ８Ｔｅｘｔ」；それに続くバイト数を表す２バイト（符号なし、ＬＳＢが先に保管される）と、実際のバイトとが続く「Ｃｈａｒｓ１６Ｔｅｘｔ」または「Ｂｙｔｅｓ１６Ｔｅｘｔ」；およびそれに続くバイト数を表す４バイト（符号付き、ＬＳＢが先に保管され、負の値は許容されない）と、実際のバイトとが続く「Ｃｈａｒｓ３２Ｔｅｘｔ」または「Ｂｙｔｅｓ３２Ｔｅｘｔ」。「Ｂｙｔｅｓ．．．Ｔｅｘｔ」特殊ノードには、エンコードの必要なしに、バイナリデータの直接表現を続けることができる。
【００７８】
この実施形態には、関連する数値をより効率的にシリアライズするために、一般的に現れる数値のためのショートカット特殊ノードが含まれる。例えば、数０は、従来、通常は数０と共に「整数ノード」を使用することによってシリアライズされる。しかし、本明細書で説明している例示的な実施形態では、図４ｂの表に示されている特殊ノード「ＺｅｒｏＴｅｘｔ」（１２８のバイナリデータユニット値を有する）を使用して、０の値をシリアライズする。文字「０」および数「０」を、同一の特殊ノードによって表すことができる。というのは、これらが、通常、ＸＭＬ文書で同一の意味を有し、したがって交換可能に使用されるからである。
【００７９】
図４ｃは、図４ｂに示されたテキスト関連特殊ノードの一部の特性を示す表である。これには、上で説明した「０」テキストならびに「ｔｒｕｅ」および「ｆａｌｓｅ」、整数、浮動小数点、１０進ストリング、日付および時刻、リストなどの特定のテキストストリング用の特殊ノードが含まれる。
【００８０】
上で述べたように、図４ｂのテキスト関連特殊ノードに、関連する「．．．ＴｅｘｔＷｉｔｈＥｎｄＥｌｅｍｅｎｔ」ノードが含まれる。これらのそれぞれが、関連する特殊ノードに対応する形、例えば「ＤｉｃｔｉｏｎａｒｙＴｅｘｔＷｉｔｈＥｎｄＥｌｅｍｅｎｔ」および「Ｉｎｔ１６ＴｅｘｔＷｉｔｈＥｎｄＥｌｅｍｅｎｔ」を有する。
【００８１】
図２をもう一度参照すると、これらの構造は、要素２００内の最後のＥｌｅｍｅｎｔＣｏｎｔｅｎｔｓ構造２４０内で使用することができる。「．．．ＷｉｔｈＥｎｄＥｌｅｍｅｎｔ」特殊ノードを使用して、これがＥｎｄＥｌｅｍｅｎｔノード２５０の代わりの最後のＥｌｅｍｅｎｔＣｏｎｔｅｎｔｓ構造２４０であることを示すことができる。例えば、次の２つの形の両方が、＜ｆｏｏ＞３＜／ｆｏｏ＞をシリアライズしたものである。
ShortElement special node, String("foo"), Int8Text special node, byte(3), EndElement special node
ShortElement special node, String("foo"), Int8TextWithEndElement special node, byte(3)
したがって、関連する「．．．Ｔｅｘｔ」特殊ノードの代わりに「．．．ＷｉｔｈＥｎｄＥｌｅｍｅｎｔ」特殊ノードが使用された時には、ＥｎｄＥｌｅｍｅｎｔノード２５０を使用する必要がない。
【００８２】
本明細書で提供した特殊ノードの説明に鑑みて、バイナリデータユニットとして使用される多数の他の特殊ノードが、ＸＭＬ技術の当業者に明白になる。
【００８３】
要素２００に、複数のＥｌｅｍｅｎｔＣｏｎｔｅｎｔｓ構造２４０が含まれる場合に、これらの構造２４０を連結して、シリアライゼーション効率をさらに改善することができる。例えば、次の４つの例のＥｌｅｍｅｎｔＣｏｎｔｅｎｔｓ構造２４０が、要素２００に含まれる場合に、
１：CharsText "ABC"
２：Element "FOO"
３：CharsText "X"
４：CharsText "YZ"
これらを、「＜ＥＬＥＭ＞ＡＢＣ＜ＦＯＯ／＞ＸＹＺ＜／ＥＬＥＭ＞」として連結することができる。
【００８４】
図４ｂのテキスト関連特殊ノードの少なくとも一部は、連結を利用することができる。例えば、Ｃｈａｒｓ８Ｔｅｘｔ（「Ａ」）とそれに続くＣｈａｒｓ８Ｔｅｘｔ（「ＢＣ」）を、ストリングとして読み取られる時に「ＡＢＣ」に連結することができる。いくつかの実施形態で、日付／時刻ストリングおよび値０ストリングなどの特定のストリング型が、隣接ノードと連結されない。例えば、Ｉｎｔ８Ｔｅｘｔ（２３）とそれに続くＣｈａｒｓ８Ｔｅｘｔ（「０」）は、整数を読み取ることを試みる時に、数２３０としてデシリアライズされない。
【００８５】
いくつかの実施形態で、連続的なリストは、連結されず、その別々のアイデンティティを保存する。例えば、Ｌｉｓｔ（ｌ，２）およびＬｉｓｔ（３，４）は、整数の配列を読み取ることを試みる時に、｛１，２，３，４｝としてデシリアライズされない。
【００８６】
ＥｌｅｍｅｎｔＣｏｎｔｅｎｔｓ構造２４０は、本発明の一実施形態で、３つの形のうちの１つを有する。ＥｌｅｍｅｎｔＣｏｎｔｅｎｔｓ構造２４０自体は、要素（要素２００に埋め込まれる）とすることができ、テキストまたは他のデータを含むことができ、コメントに対応するストリングを含むコメントノードとすることができる。
【００８７】
最初に背景技術の節で説明した例のＸＭＬ文書に戻ると、本発明のバイナリＸＭＬフォーマットの一実施形態では、この例の文書が次のようにシリアライズされる。  
第１バイト：０（「単純要素の始め」特殊ノードのバイナリデータユニットの）
第２バイト：４（要素名に関するシリアライズされるストリングの長さ）
第３／第４／第５／第６バイト：６６、１１１、１１１、１０７（ＵＴＦ８エンコーディングでの「Ｂ」、「ｏ」、「ｏ」、「ｋ」）
第７バイト：５（「単純属性の始め」特殊ノードのバイナリデータユニットの）
第８バイト：５（属性名に関する伝送されるストリングの長さ）
第９〜第１３バイト：「Ｐ」、「ｒ」、「Ｉ」、「ｃ」、「ｅ」（ＵＴＦ８エンコーディングでの）
第１４バイト：１３１（「ｓｍａｌｌ整数テキスト」特殊ノードのバイナリデータユニットの）
第１５バイト：３５（整数属性の値。文字「３」および「５」としてエンコードする必要はない）
など。
【００８８】
従来、いくつかの実施形態で、ｉｎｆｏｓｅｔのシリアライゼーションを制御するオブジェクト指向コードは、テキストシリアライゼーションに関する従来のメソッド呼出しと同一のパターンに従うメソッド呼出しを有する。したがって、方法１００は、プログラマがバイナリシリアライザおよび／またはバイナリデシリアライザへの呼出しによって呼び出される処理を知ることを必要とせずに、ＸＭＬ文書の直接バイナリシリアライゼーションを提供することができる。例えば、「バイナリＸＭＬライタ」への関数呼出しのセットは、次のように見える可能性がある。
【００８９】
【数４】
2006209745.tif 000006
【００９０】
これは、上の背景技術の節で説明したものに似て見える可能性があるが、この「バイナリＸＭＬライタ」は、上で説明したバイナリフォーマットされたＸＭＬを作るために方法１００を実装する。
【００９１】
本発明は、特定のプロトコルおよび／またはフォーマットに制限されない。本発明の原理を実装するのに使用することができる例のプロトコルの１つが、ＳＯＡＰである。
【００９２】
サブセット−本発明のいくつかの実施形態では、サブセットは、シリアライズされた文書の一部である。サブセットは、例えば、文書に含まれる１つまたは複数のトークンによって識別される。具体的に言うと、サブセットは、自己完結的である。すなわち、サブセットは、サブセットのデシリアライゼーションを可能にするためにサブセットの外部の内容を参照することをしない。
【００９３】
任意選択のサブセットノード２１０は、存在する場合に、本発明の一実施形態により、要素２００およびその内容（存在する場合に、含まれる要素のツリー全体を含む）がサブセットであることを示す。図４ａの表に関連する例示的な実施形態では、サブセットノードが、１５というバイナリ値を有するバイナリデータユニットによって識別される。サブセットノードを、「タグ」または「トークン」と呼ぶこともできる。
【００９４】
いくつかの実施形態で、サブセットは、開始タグおよび終了タグによって境界を画定される。いくつかの実施形態は、終了タグを利用しない。例えば、ＳｔａｒｔＥｌｅｍｅｎｔ構造２２０のプレフィックスとしてサブセットノード２１０を利用する一実施形態は、サブセットの終りを示す特殊ノードを必要としない。この実施形態では、要素の終りが、その要素に対応するサブセットの終りを示す。
【００９５】
本発明の一実施形態によるサブセットは、サブセットが持つ意味をまったく失わずに、文書の残りと独立に処理できる、ＸＭＬ文書の一部である。サブセットは、サブセットの外部の内容を参照しない。
【００９６】
サブセットは、スコープ内にある可能性があるすべての辞書を含む現在のスコープと独立な文書のセクションを生成し、保護する機構を提供することによって、デジタル署名および検証の効率的な機構を提供することができる。具体的に言うと、署名または検証されるバイトは、メモリ内にシーケンシャルに存在することができ、したがって、これらを、例えば現在のシリアライゼーション／デシリアライゼーションスコープを知らない消費者に転送することができる。
【００９７】
一実施形態で、ＸＭＬサブセットは、２つのトークンすなわち、サブセットの始めをマークするトークンおよび終りをマークするトークンによって、シリアライズされた文書内で示される。これによって、例えば、リーダー／ライタが、サブセットに出会った時に現在の辞書をリセットして、サブセットの処理が既存スコープに対する依存性を有しないことを保証することができる。終了トークンを突き止めたならば、以前の辞書状態を復元することができる。この実施形態は、バイナリＸＭＬフォーマットをデシリアライズするリーダーが、消費者がサブセットを絶対に要求しない場合に、サブセットの存在をバイナリＸＭＬフォーマット内の文書の消費者に不可視にするアプリケーションプログラミングインタフェース（ＡＰＩ）を公開することを選択できるようにする。
【００９８】
サブセットは、文書のうちの、サブセットを含む特殊な部分として扱うことができる。本発明のいくつかの実施形態で、サブセットノードなどのサブセット境界をまたぐ時に、特殊な処理が呼び出される。これらの実施形態のいくつかで、この特殊な処理は、バイナリシリアライズされた文書のリーダーの責任である。
【００９９】
上で説明したように、１つまたは複数のサブセットを含むバイナリＸＭＬフォーマットされた文書を受け取るユーザは、その１つまたは複数のサブセットの存在を知る必要がない。したがって、文書を、サブセットと共にまたはサブセットなしでシリアライズすることができ、後に、デシリアライズして同一のオリジナル文書を公開することができる。すなわち、サブセットの使用は、オリジナルＸＭＬ文書を変更しない。バイナリフォーマットされたデータを消費するリーダーまたは他のエンティティだけが、サブセットの存在を認識する必要がある。
【０１００】
同様に、シリアライズされた文書にサブセットが含まれる場合に、リーダー（例えば、デシリアライザ）は、サブセット化が存在した場所を公開することができる。したがって、例えば、リーダーは、受け取ったバイナリフォーマットされた文書を、例えばソフトウェアプログラムによる処理のためにオリジナルＸＭＬ文書に変換することができ、そのリーダーは、次に、そのソフトウェアプログラムに、ＸＭＬ文書のうちでサブセット化された部分を示すこともできる。
【０１０１】
サブセットは、次の有利な使用のうちの１つまたは複数を有することができる。サブセットを、ＸＭＬ文書から「取り除き」、別のシステムに送ることができる。受け取るシステムは、サブセットを読み取るのに必要な情報のすべてがサブセット内に同封されているので、サブセットの信頼性を確信することができる。
【０１０２】
サブセットがデジタル署名されている場合に、サブセットの外部の署名されていないアイテムを変更することによってサブセットの意味を改竄することができないことを保証することができる。やはり、これは、サブセットが、それ自体の外部のものをまったく参照しないことを保証できるからである。サブセットは、入れ子にすることができ、方法１００に関して上で説明した特徴をサポートすることができる。
【０１０３】
シリアライザおよびデシリアライザは、サブセットに出会った時に特殊な機能を実行することができる。例えば、一実施形態で、シリアライザは、サブセットをシリアライズする時に、サブセットの外部の辞書識別子を発行しない。また、一実施形態で、シリアライザは、サブセットのシリアライズ中に新しいストリングを発行する時に、サブセットの外部の辞書に内容を追加しない。さらに、シリアライザは、サブセットから出る時に外側の辞書を復元することができる。一実施形態で、シリアライザは、入れ子になったサブセットについて辞書のスタックを維持する。デシリアライザは、シリアライザの機能に対応する機能を実行することができる。
【０１０４】
一実施形態で、サブセットは、親要素で定義された名前空間プレフィックスを使用しないか、使用の前に名前空間プレフィックスを再定義する。サブセットは、ＸＭＬ文書の処理に影響する標準ＸＭＬ属性を利用しない。例えば、一実施形態で、ＸＭＬ技術の当業者に既知の、ｘｍｌ：ｌａｎｇ属性およびｘｍｌ：ｓｐａｃｅ属性ならびに属性に使用される修飾名は、再発行される。この実施形態で、ＥｌｅｍｅｎｔＣｏｎｔｅｎｔｓ構造２４０に使用される修飾名は、親要素で定義された名前空間プレフィックスを使用しないか、使用の前に名前空間プレフィックスを再定義する。
【０１０５】
したがって、一実施形態で、シリアライザは、シリアライザが知るサブセット内のデータに影響する可能性があるサブセットの外部で定義された情報のすべてを再発行する。これには、名前空間プレフィックス宣言と、ｘｍｌ：ｌａｎｇおよびｘｍｌ：ｓｐａｃｅなどの標準ＸＭＬ属性を含めることができるが、これに制限はされない。
【０１０６】
一実施形態で、デシリアライザは、サブセットに入る時に、デシリアライザが知っている、サブセット内のデータに影響する可能性があるサブセットの外部で定義された情報のすべてを忘れる。これには、入れ子にされたサブセットに関する、名前空間プレフィックス宣言と、ｘｍｌ：ｌａｎｇおよびｘｍｌ：ｓｐａｃｅなどの標準ＸＭＬ属性を含めることができるが、これに制限はされない。デシリアライザは、サブセットから出る時に、シリアライザが知っているサブセット内のデータに影響する可能性があるサブセットの外部で定義された情報のすべてをリコールすることができる。デシリアライザは、デシリアライザが知っているサブセット内のデータに影響する可能性があるサブセットの外部で定義されたすべての情報のスタックを保つことができる。
【０１０７】
サブセットに出会った時に、現在定義されている辞書識別子のいずれかまたはすべてを、アウトオブバンドで定義されたものも含めて、とっておくことができる。サブセットから出る時に、サブセットの内部で定義された辞書アイテムを忘れることができ、前の辞書アイテムを復元することができる。
【０１０８】
次に、図５を参照して、文書をシリアライズするためにサブセットを利用する方法の例を説明する。図５は、本発明の一実施形態による、ＸＭＬ文書を処理する方法５００の流れ図である。方法５００に、１つまたは複数の情報アイテムを含むＸＭＬ情報セットに関連するＸＭＬ文書を提供すること５２０と、ＸＭＬ文書をシリアライズされたフォーマットにシリアライズすること５３０が含まれる。シリアライズされたフォーマットに、サブセットノードを含む少なくとも１つのサブセット要素が含まれる。サブセットノードは、その少なくとも１つのサブセット要素を、ＸＭＬ文書の残りと独立にデシリアライズできることを示す。
【０１０９】
方法１００に似て、方法５００には、情報アイテムを対応するバイナリデータユニットに関連付けること５１０を含めることができ、情報アイテムと対応するバイナリデータユニットとの間の関連の使用を介して、シリアライズされたフォーマットからＸＭＬ文書をデシリアライズすること５４０を含めることができる。
【０１１０】
上で説明したサブセット要素などのサブセットに、そのサブセット要素をデシリアライズするのに必要なすべての内容を含めることができる。サブセット要素は、ＸＭＬ文書の残りと独立にデシリアライズすることができ、かつ／または抽出し５５０、文書の残りなしで送信することができる。さらに、いくつかの実施形態で、サブセット要素のスコープは、そのサブセット要素を含むＸＭＬ文書のスコープと独立である。サブセット要素は、上で説明したように、サブセットの追加の特徴を有することができる。
【０１１１】
本発明の範囲内の実施形態に、それに保管されたコンピュータ実行可能命令またはデータ構造を担持するか有するコンピュータ可読媒体が含まれる。そのようなコンピュータ可読媒体は、汎用のまたは特殊目的のコンピュータによってアクセスできるすべての使用可能な媒体とすることができる。制限ではなく例として、そのようなコンピュータ可読媒体に、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光学ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、コンピュータ実行可能命令またはデータ構造の形の所望のプログラムコードを担持または保管するのに使用でき、汎用のまたは特殊目的のコンピュータによってアクセスできるすべての他の媒体などの物理的コンピュータ可読媒体を含めることができる。
【０１１２】
情報が、ネットワークまたは別の通信接続（ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せのいずれか）を介してコンピュータに転送または供給される時に、コンピュータは、その接続をコンピュータ可読媒体とみなすことができる。したがって、すべてのそのような接続を、コンピュータ可読媒体と呼ぶことができる。上記の組合せも、コンピュータ可読媒体の範囲に含まれなければならない。コンピュータ実行可能命令に、例えば、汎用コンピュータ、特殊目的コンピュータ、または特殊目的処理デバイスにある機能または機能のグループを実行させるすべての命令およびデータが含まれる。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間フォーマット命令、またはソースコードとすることができる。
【０１１３】
当業者は、本発明を、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラマブルなコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、および類似物を含む多数のタイプのコンピュータシステム構成を有するネットワークコンピューティング環境で実践できることを諒解するであろう。本発明は、通信ネットワークを介してリンクされた（ハードワイヤードリンク、無線リンク、またはハードワイヤードリンクもしくは無線リンクの組合せのいずれかによって）ローカルおよびリモートの処理デバイスによってタスクが実行される分散コンピューティング環境で実践することもできる。分散コンピューティング環境では、プログラムモジュールを、ローカルとリモートの両方のメモリストレージデバイスに置くことができる。
【０１１４】
コンピュータは、１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することができる。リモートコンピュータのそれぞれは、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードとすることができ、通常は、上で説明した要素の多くまたはすべてが含まれる。論理接続には、例えば、制限ではなく例として提示される、ローカルエリアネットワーク（ＬＡＮ）および広域ネットワーク（ＷＡＮ）を含めることができる。そのようなネットワーキング環境は、オフィス全体または企業全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものである。
【０１１５】
コンピューティングシステムは、ソフトウェアを使用して１つまたは複数の機能を実行することができる１つまたは複数のハードウェアコンポーネントとして広義に定義することができる。コンピューティングシステムの例に、デスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）、電話機、または処理能力を有するすべての他のシステムもしくはデバイスが含まれる。
【０１１６】
本発明のいくつかの実施形態は、ＳＯＡＰエンベロープとして文書をシリアライズする。周知のように、ＳＯＡＰエンベロープは、例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ＨＴＴＰ  Ｓｅｃｕｒｅ（ＨＴＴＰＳ）、Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ（ＳＭＴＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、伝送制御プロトコル（ＴＣＰ）、Ｂｌｕｅｔｏｏｔｈ、または類似物などの複数のトランスポートプロトコルを介して伝送することができる。
【０１１７】
したがって、本発明の少なくとも１つの実施形態の複数の態様を説明したので、当業者が、様々な代替形態、修正形態、および改良をたやすく思い浮かべることを諒解されたい。そのような代替形態、修正形態、および改良は、この開示の一部になることが意図され、本発明の趣旨および範囲に含まれることが意図されている。したがって、前述の説明および図面は、例としてのみのものである。
【図面の簡単な説明】
【０１１８】
【図１】本発明の一実施形態による、ＸＭＬ文書を処理する方法を示す流れ図である。
【図２】本発明の一実施形態による、バイナリＸＭＬフォーマットに対応する要素を示すブロック図である。
【図３】本発明の一実施形態による、整数のエンコーディングフォーマットを示す表の図である。
【図４ａ】本発明の一実施形態による、特殊ノードタイプと、関連する特殊ノードを識別するバイナリデータユニットの対応するバイト値とを示す表の図である。
【図４ｂ】本発明の一実施形態による、特殊ノードタイプと、バイナリデータユニットの対応するバイト値とを示す表の図である。
【図４ｃ】図４ｂに示されたテキスト関連特殊ノードの一部の特性を示す表の図である。
【図５】本発明の一実施形態による、ＸＭＬ文書を処理する方法を示す流れ図である。
【符号の説明】
【０１１９】
１００  ＸＭＬ文書を処理する方法
２１０  サブセットノード
２２０  ＳｔａｒｔＥｌｅｍｅｎｔ構造
２３０  Ａｔｔｒｉｂｕｔｅ構造
２４０  ＥｌｅｍｅｎｔＣｏｎｔｅｎｔｓ構造
２５０  ＥｎｄＥｌｅｍｅｎｔノード
【図１】
2006209745.tif 000007
【図２】
2006209745.tif 000008
【図３】
2006209745.tif 000009
【図４ａ】
2006209745.tif 000010
【図４ｂ】
2006209745.tif 000011
【図４ｃ】
2006209745.tif 000012
【図５】
2006209745.tif 000013