(57)【要約】【課題】  効率的にロードおよび実行することのできるバイナリフォーマットへのＸＭＬコードの変換方法およびシステムを提供すること。【解決手段】  ＸＭＬコードのバイナリフォーマットへの変換には、ＸＭＬコードに現れるコードエレメントを特定し、エレメントパレットに格納することが含まれる。次に、ＸＭＬテキストベースの命令に相当する既定のコマンドを選択し、エレメントパレットの対応するコードエレメントに対する参照と関連付けることにより、ＸＭＬコードをエンコードする。コマンドと関連付けられた参照は、圧縮することもできる固定長のトークンを形成する。変換中にデータを抽出し、非圧縮形式で格納する。変換によって、エレメントパレット、データ、トークンを含むバイナリ出力が生成される。実行のためにＸＭＬコードのバイナリ形式がロードされると、エレメントパレットで参照したエレメントに関して動作する命令にトークンがデコードされる。【選択図】  図１
2004227579.tif 000002
【特許請求の範囲】
【請求項１】
ＸＭＬコードの中の固有コードエレメントを特定することと、
前記固有コードエレメントをデータ構造に格納することと、
前記ＸＭＬコードの部分をトークンにエンコードすることであって、個々のトークンが予め定義されたコマンド、および前記データ構造の中の前記固有コードエレメントの１つに対する参照を有することと、
前記ＸＭＬコードからデータを抽出することと、
前記データ構造、前記トークン、および前記データを含む出力を形成することと
を備えることを特徴とする方法。
【請求項２】
請求項１に記載の方法であって、前記データ構造はリストを備え、該リストの中に前記固有コードエレメントそれぞれがエントリを有することを特徴とする方法。
【請求項３】
請求項１に記載の方法であって、前記エンコードすることは、前記ＸＭＬコードの各部分について、
前記ＸＭＬコードの前記部分に含まれる特定の固有コードエレメントを特定することと、
一組の予め定義されたコマンドから、前記ＸＭＬコードの前記部分を実行する予め定義されたコマンドを選択することと、
前記予め定義されたコマンドを前記データ構造の中の前記特定の固有コードエレメントに対する参照と関連付けることと
を備えることを特徴とする方法。
【請求項４】
請求項１に記載の方法であって、前記トークンは、固定長のトークンを備えることを特徴とする方法。
【請求項５】
請求項１に記載の方法であって、前記トークンは、１６‐ビットのトークンを備え、該１６‐ビットのトークンそれぞれが前記予め定義されたコマンドを保持するための４‐ビットのコマンドフィールドと、前記参照を保持するための１２‐ビットのパラメータフィールドを有することを特徴とする方法。
【請求項６】
請求項１に記載の方法であって、前記トークンを圧縮することをさらに備えることを特徴とする方法。
【請求項７】
請求項１に記載の方法であって、
前記データをデータバッファに格納することと、
前記トークンをトークンバッファに格納することと、
前記トークンバッファと前記データバッファを交互にフラッシュして、前記トークンと前記データを前記出力において交互配置すること
をさらに備えることを特徴とする方法。
【請求項８】
請求項１に記載の方法であって、前記出力は、バイナリファイルを備えることを特徴とする方法。
【請求項９】
１つまたは複数のコンピュータ可読媒体であって、実行されると、請求項１に記載の方法を実行するコンピュータ実行可能命令を備えたことを特徴とするコンピュータ可読媒体。
【請求項１０】
第１のパスの期間にＸＭＬコードを通して、該ＸＭＬコードに見出される固有コードエレメントをリストするデータ構造を作成することと、
第２のパスの期間に前記ＸＭＬコードを通して、前記ＸＭＬコードに相当する固定長のトークンを導出することであって、前記トークンそれぞれが予め定義されたコマンドと、前記データ構造の中の前記固有コードエレメントの１つに対する参照とを有することと
を備えることを特徴とする方法。
【請求項１１】
請求項１０に記載の方法であって、前記導出することは、前記ＸＭＬコードの各部分について、
前記ＸＭＬコードの前記部分に含まれる特定の固有コードエレメントを特定することと、
一組の予め定義されたコマンドから、前記ＸＭＬコードの前記部分を実行する予め定義されたコマンドを選択することと、
前記予め定義されたコマンドを前記データ構造の中の前記特定の固有コードエレメントに対する参照と関連付けることと
を備えることを特徴とする方法。
【請求項１２】
請求項１０に記載の方法であって、前記トークンを圧縮することをさらに備えることを特徴とする方法。
【請求項１３】
請求項１０に記載の方法であって、前記ＸＭＬコードに含まれる前記データ構造、前記トークン、およびデータを含むバイナリファイルを構築することをさらに備えることを特徴する方法。
【請求項１４】
請求項１０に記載の方法であって、
前記第２のパスの期間に前記ＸＭＬコードからデータを抽出することと、
前記第２のパスの期間に前記トークンを圧縮することと、
前記データ構造、およびその後に続く圧縮トークンと非圧縮データとの交互配置されたブロックを含むバイナリファイルを構築することと
をさらに備えることを特徴とする方法。
【請求項１５】
１つまた複数のコンピュータ可読媒体であって、実行されると、請求項１０に記載の方法を実行するコンピュータ実行可能命令を備えたコンピュータ可読媒体。
【請求項１６】
ＸＭＬコードをバイナリ出力に変換することであって、該バイナリ出力が前記ＸＭＬコードからの固有コードエレメントのリストと、前記固有コードエレメントのいくつかに関連付けられた参照および前記ＸＭＬコードに相当する一組のコマンドと、前記ＸＭＬコードから抽出されたデータとを有することと、
前記バイナリ出力を実行することと
を備えることを特徴とする方法。
【請求項１７】
請求項１６に記載の方法であって、前記変換することは、
前記ＸＭＬコードに見出される前記固有コードエレメントをリストするデータ構造を作成することと、
前記ＸＭＬコードの各部分について、前記ＸＭＬコードの前記部分に含まれる特定の固有コードエレメントを特定することと、前記ＸＭＬコードの前記部分を実行する前記一組のコマンドからコマンドを選択することと、該コマンドを前記データ構造の中の前記特定の固有コードエレメントに対する参照と関連付けることと
を備えることを特徴とする方法。
【請求項１８】
請求項１６に記載の方法であって、前記実行することは、
前記コマンドを命令に翻訳することと、
前記命令を前記コマンドによって参照された前記固有コードエレメントに関して実行することと
を備えることを特徴とする方法。
【請求項１９】
請求項１８に記載の方法であって、前記命令の１つは前記データに係わるオペレーションに関係し、前記実行することは前記１つの命令の実行期間に前記バイナリ出力の中の前記データを使用することを備えることを特徴とする方法。
【請求項２０】
請求項１６に記載の方法であって、前記実行することは、
前記コマンドをデータベースインターフェイスに対するコールに翻訳することと、
前記データベースインターフェイスによって公開される種々のメソッドをコールして、前記固有コードエレメントと、前記バイナリ出力からの前記データとにアクセスすることと
を備えることを特徴とする方法。
【請求項２１】
１つまたは複数のコンピュータ可読媒体であって、実行されると、請求項１６に記載の方法を実行するコンピュータ可読命令を備えたことを特徴とするコンピュータ可読媒体。
【請求項２２】
コンピュータ実行可能命令を格納しているコンピュータ可読媒体であって、該コンピュータ実行可能命令は、プロセッサによって実行されると、
ＸＭＬコードの中の固有コードエレメントを特定することと、
前記ＸＭＬコードの部分を固定長のトークンにエンコードすることであって、該トークンそれぞれが前記ＸＭＬコードの前記部分に相当するコマンドと、前記ＸＭＬコードの前記部分に見出される前記固有コードエレメントの１つに対する参照とを有することと、
前記固有コードエレメントと、前記トークンと、前記ＸＭＬコードから抽出されるデータとを含む出力を形成することと
を備えた行為を行うことを特徴とするコンピュータ可読媒体。
【請求項２３】
請求項２２に記載のコンピュータ可読媒体であって、前記トークンは、１６‐ビットのトークンを備え、該トークンそれぞれが前記予め定義されたコマンドを保持するための４‐ビットのコマンドフィールドと、前記参照を保持するための１２‐ビットのパラメータとを有していることを特徴とするコンピュータ可読媒体。
【請求項２４】
請求項２２に記載のコンピュータ可読媒体であって、プロセッサによって実行されると、前記トークンを圧縮することを含む行為を行うコンピュータ実行可能命令をさらに備えたことを特徴とするコンピュータ可読媒体。
【請求項２５】
請求項２２に記載のコンピュータ可読媒体であって、プロセッサによって実行されると、
前記エンコーディング期間に、前記データをデータバッファに格納し、前記トークンをトークンバッファに格納することと、
前記トークンバッファと、前記データバッファを交互にフラッシュして、前記トークンと前記データを前記出力において交互配置することと
を含む行為を行うコンピュータ実行可能命令をさらに備えたことを特徴とするコンピュータ可読媒体。
【請求項２６】
請求項２２に記載のコンピュータ可読媒体であって、前記出力は、バイナリファイルであることを特徴とするコンピュータ可読媒体。
【請求項２７】
コンピュータ実行可能命令を格納している１つまたは複数のコンピュータ可読媒体であって、該コンピュータ実行可能命令は、プロセッサによって実行されると、
ＸＭＬコードに見出された固有コードエレメントをデータ構造に格納することと、
前記ＸＭＬコードの部分をトークンにエンコードすることであって、個々のトークンが前記ＸＭＬコードの前記部分に相当する予め定義されたコマンドを、前記ＸＭＬコードの前記部分に見出された前記固有コードエレメントの１つを特定する前記データ構造に対する参照と関連付けることと、
前記ＸＭＬコードからデータを抽出することと、
前記データ構造、前記トークン、および前記データを含むものとしてバイナリ出力を形成することと
によって前記ＸＭＬコードを前記バイナリ出力に変換することと、
前記コマンドを命令に翻訳することと、
前記コマンドによって参照された前記データ構造の中の前記固有コードエレメントに関して前記命令を実行することと
によって前記バイナリ出力を実行することと
を含む行為を行うことを特徴とするコンピュータ可読媒体。
【請求項２８】
請求項２７に記載のコンピュータ可読媒体であって、前記トークンは、１６‐ビットのトークンを備え、該トークンそれぞれが前記予め定義されたコマンドを保持するための４‐ビットのコマンドフィールドと、前記参照を保持するための１２‐ビットのパラメータフィールドとを有していることを特徴とするコンピュータ可読媒体。
【請求項２９】
請求項２７に記載のコンピュータ可読媒体であって、プロセッサによって実行されると、前記トークンを圧縮することを含む行為を行うコンピュータ実行可能命令をさらに備えたことを特徴とするコンピュータ可読媒体。
【請求項３０】
記憶媒体上に格納されたデータ構造であって、
ＸＭＬコードの一部において特定された固有コードエレメントを含むエレメントパレットと、
各トークンが前記エレメントパレットの中の前記固有コードエレメントの１つに対する参照と関連付けられた予め定義されたコマンドを含む少なくとも１つのトークンブロックと、
前記ＸＭＬコードの前記一部から抽出されたデータを含む少なくとも１つのデータブロックと
を備えたことを特徴とするデータ構造。
【請求項３１】
請求項３０に記載のデータ構造であって、個々のトークンは圧縮され、トークンの前記ブロックは複数の圧縮されたトークンを備えたことを特徴とするデータ構造。
【請求項３２】
請求項３０に記載のデータ構造であって、複数のトークンブロックと、複数のデータブロックとをさらに備え、前記トークンブロックおよび前記データブロックは交互配置されていることを特徴とするデータ構造。
【請求項３３】
請求項３０に記載のデータ構造であって、複数のトークンブロックと、複数のデータブロックとをさらに備え、前記トークンブロックおよび前記データブロックは、前記データブロックのデータが隣り合うトークンブロックに含まれたトークンに対応するように交互配置されたことを特徴とするデータ構造。
【請求項３４】
メモリと、
前記メモリに結合されたプロセッサと、
ＸＭＬコードをバイナリ出力に変換するために前記プロセッサ上で実行されるＸＭＬ−バイナリコンバータであって、前記バイナリ出力は前記ＸＭＬコードにおいて特定された固有コードエレメントのリストと、前記ＸＭＬコードから抽出されたデータと、固定長のトークンとを備え、個々のトークンは一組のコマンドから選択されたコマンドを前記固有コードエレメントの１つに対する参照と関連付けているＸＭＬ−バイナリコンバータと
を備えたことを特徴とするコンピューティングシステム。
【請求項３５】
請求項３４に記載のコンピューティングシステムであって、前記ＸＭＬ−バイナリコンバータは、ＸＭＬコードの部分について、オペレーションとして該ＸＭＬコードの前記部分に相当するコマンドを見分けること、および前記予め定義されたコマンドを前記ＸＭＬコードの前記部分に含まれた前記固有コードエレメントに対する参照と関連付けることによって前記トークンを導出するように構成されたことを特徴とするコンピューティングシステム。
【請求項３６】
請求項３４に記載のコンピューティングシステムであって、前記ＸＭＬ−バイナリコンバータは前記トークンを圧縮するようにさらに構成されたことを特徴とするコンピューティングシステム。
【請求項３７】
請求項３４に記載のコンピューティングシステムであって、前記メモリはトークンバッファおよびデータバッファを備え、前記ＸＭＬ−バイナリコンバータは、前記ＸＭＬコードが変換されたものとして、前記トークンを前記トークンバッファに、前記データを前記データバッファに格納し、前記トークンバッファおよびデータバッファは交互にフラッシュされて、前記トークンと前記データを前記バイナリ出力に交互配置することを特徴とするコンピューティングシステム。
【請求項３８】
請求項３４に記載のコンピューティングシステムであって、前記トークンバッファは一杯の時にフラッシュされ、前記データバッファは前記トークンバッファをフラッシュすることに応答して自動的にフラッシュされることを特徴とするコンピューティングシステム。
【請求項３９】
ＸＭＬコードをバイナリフォーマットに変換するためのコンピューティングシステムであって、
前記ＸＭＬコードから固有コードエレメントをリストするエレメントパレットを作成するためのパレットクリエータと、
前記ＸＭＬコードの部分に相当するトークンを生成するためのトークン化モジュールであって、前記トークン化モジュールは、前記ＸＭＬコードの各部分について、該ＸＭＬコードの該部分に相当する予め定義されたコマンドを選択し、該コマンドを該コマンドが動作する前記エレメントパレットの中の固有コードエレメントに対する参照と関連付けるように構成されていて、個々のトークンは前記コマンドと、前記関連付けられた参照とを含むトークン化モジュールと
を備えたことを特徴とするコンピューティングシステム。
【請求項４０】
請求項３９に記載のコンピューティングシステムであって、前記トークンは固定長のトークンを備えたことを特徴とするコンピューティングシステム。
【請求項４１】
請求項３９に記載のコンピューティングシステムであって、前記トークンは１６‐ビットのトークンを備え、該トークンそれぞれが前記予め定義されたコマンドを保持するための４‐ビットのコマンドフィールドと、前記参照を保持するための１２‐ビットのパラメータフィールドとを有していることを特徴とするコンピューティングシステム。
【請求項４２】
請求項３９に記載のコンピューティングシステムであって、前記トークンを圧縮するためにコンプレッサをさらに備えたことを特徴とするコンピューティングシステム。
【請求項４３】
請求項３９に記載のコンピューティングシステムであって、
トークン化の期間に前記ＸＭＬコードから抽出されたデータを保持するためのデータバッファと、
前記トークンを保持するためのトークンバッファと
をさらに備え、
前記第１のバッファと前記第２のバッファは交互にフラッシュされて、前記トークンと、前記データとを交互配置するバイナリ出力を形成することを特徴とするコンピューティングシステム。
【請求項４４】
バイナリ形式に変換されたＸＭＬコードを実行するためのコンピュータシステムであって、前記バイナリ形式は前記ＸＭＬコードからの固有コードエレメントのリストと、前記ＸＭＬコードから抽出されたデータと、前記ＸＭＬコードの部分に相当する一組の予め定義されたコマンドとを含み、該コマンドが該コマンドによって代表された前記ＸＭＬコードの前記部分に見出される前記固有コードエレメントを含む前記リストの中のエントリを参照する前記コンピューティングシステムは、
メモリと、
前記メモリに結合されたプロセッサと、
前記リストおよび前記データを前記メモリに格納し、前記コマンドを前記コマンドによって参照された前記固有コードエレメントに関して動作する命令に翻訳することによって前記ＸＭＬコードの前記バイナリ形式をデコードするためのＸＭＬバイナリ形式デコーダと
を備えたことを特徴とするコンピューティングシステム。
【請求項４５】
請求項４４に記載のコンピューティングシステムであって、前記命令の１つは前記データに係わるオペレーションに関係し、前記ＸＭＬバイナリ形式デコーダは前記１つの命令の実行期間に前記メモリに格納された前記データを使用することを特徴とするコンピューティングシステム。
【請求項４６】
請求項４４に記載のコンピューティングシステムであって、前記ＸＭＬバイナリデコーダは、前記リストの中の前記固有コードエレメントと、前記メモリに格納された前記データとにアクセスするデータベースインターフェイスに対するコールに前記コマンドを翻訳することを特徴とするコンピューティングシステム。
【請求項４７】
請求項４４に記載のコンピューティングシステムであって、ゲーム用のシステムとして具体化されたことを特徴とするコンピューティングシステム。
【請求項４８】
バイナリ形式に変換されたＸＭＬコードを実行するためのコンピューティングシステムであって、該バイナリ形式は前記ＸＭＬコードからの固有コードエレメントのリストと、前記ＸＭＬコードから抽出されたデータと、前記ＸＭＬコードの部分に相当する一組の予め定義されたコマンドとを含み、該コマンドが該コマンドによって代表された前記ＸＭＬコードの前記部分に見出される前記固有コードエレメントを含む前記リストの中のエントリを参照する前記コンピューティングシステムは、
一組のインターフェイスメソッドを公開するインターフェイスと、
前記コマンドを前記コマンドによって参照された前記固有コードエレメントに関して動作する種々の前記インターフェイスメソッドに対するコールにデコードするためのデコーダと
を備えたことを特徴とするコンピューティングシステム。
【請求項４９】
請求項４８に記載のコンピューティングシステムであって、ゲーム用のシステムとして具体化されたことを特徴とするコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ランタイム時に効率的にロードすることができ、実行することのできるバイナリフォーマットへＸＭＬコードを変換するためのシステムおよび方法に関する。
【背景技術】
【０００２】
ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）は、ウェブまたはｅコマースのドキュメントにおいてデータエレメントを定義するために共通して使われているテキストベースの言語である。ＸＭＬは、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂの共通規格を開発する国際的な業界コンソーシアムであるＷｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂコンソーシアム、あるいは「Ｗ３Ｃ」、によって広められたオープンスタンダードである。ＸＭＬは、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）と同様のタグ構造を使用しているが、ＨＴＭＬではエレメントがどのように表示されるかを定義しているのに対し、ＸＭＬではそれらのエレメントに何が含まれるかを定義している。ＨＴＭＬでは予め定義されたタグを使用しているが、ＸＭＬではページの開発者によってタグを定義することができるようになっている。それゆえ、ＸＭＬを通じて事実上すべてのデータ項目を特定することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
テキストベースの言語として、ＸＭＬコードは実行中にパーサ（ｐａｒｓｅｒ）を通過する。このパーサ処理には時間がかかる。残念ながら、ある特定の状況においては、ＸＭＬをパーサすることによってもたらされる遅延が許容できないことがある。このような状況のひとつは、ビデオゲームの関連において見られる。今日、高度なビデオゲームは、Ｃ／Ｃ＋＋で作成され、データ記憶形式にＸＭＬを活用して、大規模な開発者のグループ全体での効率的な設計およびデバッグをし易くしている。しかしながら、ランタイム中にＸＭＬベースのビデオゲームをロードすることは、ゲームプレーヤの見地からは、顕著なあるいは望んでいたよりも長い遅延という結果になることがある。ＸＭＬで作成されたビデオゲームのロード時間を短縮することは、望ましいであろう。
【課題を解決するための手段】
【０００４】
ここに開示した対象は、ランタイム中に効率的にロードすることができ、実行することのできるバイナリフォーマットへのＸＭＬコードの変換についてである。
【０００５】
記載した実施例においては、ＸＭＬからバイナリへの変換には、ＸＭＬコードを通る２つのパスが関係している。第１のパスでは、ＸＭＬコードに現れるコードエレメントが特定され、エレメントパレットに格納される。各固有のコードエレメントにつき、単一のエントリが為される。複数回現れるコードエレメントは、エレメントパレットに一度リストされる。
【０００６】
第２のパスでは、エレメントパレットを使って、ＸＭＬコードをエンコードする。ＸＭＬコードの各ライン（または他の論理的な部分）は、固定長のトークンに変換され、このトークンはＸＭＬコードのそのラインの相当するコマンドと、ＸＭＬコードのそのラインに見出されるエレメントパレット中の固有コードエレメントに関連付けられた参照とを有している。このコマンドは、予め定義されたコマンドのグループから選択される。一旦生成されると、トークンは圧縮することができる。さらにＸＭＬコードのラインを処理している間、データが抽出され、非圧縮の形式で格納される。この変換により、エレメントパレット、データ、およびトークン（圧縮または非圧縮）を含むバイナリ出力が生成される。ＸＭＬコードのバイナリ形式をセーブし、ファイルとして受け渡したり、データストリームとして提供したりすることができる。
【０００７】
実行のためにＸＭＬコードのバイナリ形式がロードされると、エレメントパレットにおいて参照されたエレメントに関して動作する命令に、トークンがデコードされる。一実施例においては、トークン中のコマンドがこのコマンドによって参照された固有コードエレメントに関して動作する一組のインターフェイスメソッドに対するコールに翻訳される。ＸＭＬコードのバイナリ形式をロードすることは、高速かつ効率的であり、元のテキストベースのＸＭＬコードをパーサするより短い時間ですむ。ビデオゲームの関連では、これによってＸＭＬで開発されたビデオゲームがより短い遅延でロードされ、実行されるようになる。
【発明を実施するための最良の形態】
【０００８】
以下に、ランタイム中に効率的にロードすることができ、実行することのできるバイナリ形式にＸＭＬコードを変換するためのシステムおよび方法について説明する。論考目的のために、ＸＭＬからバイナリへの変換は、ビデオゲームの関連の範疇で行われており、この場合、ビデオゲーム用のＸＭＬコードは、ランタイム中にゲームコンソール上で素早く、効率的にロードすることができるバイナリフォーマットに変換される。しかし、この変換プロセスは、ビデオゲーム以外の多くの状況において使うことができる。実際、この変換プロセスは、ＸＭＬコードのバイナリバージョンが望まれ、使われうる基本的にあらゆる状況において用いることができる。
【０００９】
（例示的システム）  
図１にＸＭＬコードが後続のロードおよび実行のためにバイナリフォーマットに変換される例示的なシステム環境１００を示す。環境１００において、コンピューティングシステム１０２は、ＸＭＬコード１０４を受け取り、それをバイナリ形式の出力１０６に変換する。コンピューティングシステム１０２は、プロセッサ１１０とメモリ１１２を有している。このメモリは、揮発性および不揮発性の両方のメモリを含む。
【００１０】
コンピューティングシステム１０２は、ＸＭＬ−バイナリコンバータ１１４を実装しており、これはソフトウェアで実装し、プロセッサ１１０で実行されるようにしてもよい。変換時に、このコンバータ１１４は、ＸＭＬコード中の固有エレメントをリストするエレメントパレット１１６を生成する。ＸＭＬコード中に見出された各固有のコードエレメントにつき単一のエントリが為される。複数回現れるコードエレメントは、エレメントパレット１１６に一度リストされる。エレメントパレット１１６は、メモリ１１２に格納され、バイナリ出力１０６の一部を成す。
【００１１】
ＸＭＬ−バイナリコンバータ１１４は、ＸＭＬコード１０４の個々のライン（または他の論理的な部分）に相当する個々のトークンも作成する。各トークンは、予め定義された一組のコマンドからの選定された、ＸＭＬコードの対応するラインのオペレーションを効果的に行う既定のコマンドを収容している。各トークンは、ＸＭＬコードの対応するラインに含まれるエレメントパレット１１６中のコードエレメントに対する参照も収容している。
【００１２】
これらのトークンは、オプションとして圧縮され（例、ＬＺＳＳ圧縮）、トークンバッファ１１８に格納される。データは、変換中にＸＭＬコードから抽出され、データバッファ１２０に格納される。トークンバッファ１１８が一杯になると、フラッシュされて、バイナリ出力１０６の一部となる。トークンバッファをフラッシュすることに応答して、データバッファ１２０は、自動的にフラッシュされて、データをバイナリ出力１０６に加える。このように、バイナリ出力１０６には、エレメントパレット１１６に続いて、圧縮されたトークンと非圧縮のデータの交互配置されたブロックが収容される。
【００１３】
一旦バイナリ形式になると、バイナリのＸＭＬコード１０６は、いくつもの方法で使用することができる。この例では、バイナリのＸＭＬコード１０６は、持ち運び可能な光ディスク１２２などの記憶媒体上のバイナリファイルとして格納したり、ネットワーク１２４を介してデータストリームとして提供したりすることができる。
【００１４】
コード実行デバイス１２６は、ＸＭＬコードのバイナリ形式を実行する。コード実行デバイス１２６は、ロードおよび実行のためにバイナリのＸＭＬコード１０６を受け取り、デコードするＸＭＬバイナリ形式デコーダ１２８を実装している。コード実行デバイスは、プロセシングおよびメモリ機能を備えている基本的にあらゆる種類のコンピューティングデバイスとして実装することができる。図示した実施例では、このコード実行デバイス１２６は、バイナリフォーマットに変換されるビデオゲームをロードし、実行するコンソールベースのゲーム用システムとして具体化されている。ＸＭＬバイナリ形式デコーダ１２８を利用してゲームを実行することができるコンソールベースのゲーム用システムの一例は、マイクロソフトコーポレイションのＸｂｏｘ（商標）ゲーム用システムである。
【００１５】
従って、この例示的な環境１００には、２つのフェーズ：（１）ＸＭＬコードがバイナリフォーマットに変換される変換フェーズ、（２）バイナリフォーマットが実行される実行フェーズが図示されている。別個のコンピューティングデバイスにて実行されているように図示され、説明されているが、これら変換フェーズおよび実行フェーズは、同じコンピューティングデバイスによって実行されてもよい。これらのフェーズは、以下のセクションにおいて別々に論考する。
【００１６】
（ＸＭＬコードのバイナリフォーマットへの変換）  
図２および図３は、ＸＭＬコードをバイナリフォーマットへ変換するためのシステムおよびプロセスを図示している。図２では、変換プロセスを行うコンピュータシステム１０２の抜粋した構成要素が示されている。ＸＭＬコード１０４は、変換のためにＸＭＬ−バイナリコンバータ１１４に渡される。このコンバータ１０４は、プロセッサ１１０にて実行されるように示されている。ＸＭＬ−バイナリコンバータ１１４は、エレメントパレット１１６を形成するためのパレットクリエータ２０２と、トークンを生成するためのトークン化モジュール２０４と、トークンを圧縮するためのコンプレッサ２０６とを含んでいる。
【００１７】
図３では、ＸＭＬコードをバイナリフォーマットに変換するためのプロセス３００が示されている。このプロセスは、一般に、ＸＭＬコード１０４を通る２つのパスを含む。第１のパスの期間に、ＸＭＬ−バイナリコンバータ１１４はメモリ１１２に格納されるエレメントパレット１１６を作成する。続いて、第２のパスの期間に、このコンバータ１１４はパレット１１６を使用して、ＸＭＬコードをトークンとデータとにエンコードする。プロセス３００は、これら２つのパスの期間にコンピューティングシステム１０２によって行われる個々のオペレーションまたは行為を表す一連のブロックとして、図示されている。このプロセス３００は、任意の適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせに実装することができる。ソフトウェアおよびファームウェアの場合には、プロセス３００はメモリに格納された、１つまたは２つ以上のプロセッサによって実行可能なコンピュータ実行可能命令として実装された一組のオペレーションを表す。このプロセス３００について、図１および図２のシステムを参照して説明する。
【００１８】
（第１のパス：パレット作成）  
コンピューティングシステム１０２は、ＸＭＬコードを通して第１のパスの期間にエレメントパレット１１６を生成する。図３のブロック３０２において、ＸＭＬ−バイナリコンバータ１１４は、ＸＭＬコード１０４を通読する。コードを通観してこの第１のパスの期間に、コンバータ１１４のパレットクリエータ２０２がＸＭＬコード１０４の固有のコードエレメントを特定する（図３のブロック３０４）。このパレット作成プロセスの一例として、次のＸＭＬコード１０４を検討する：
【００１９】
【数１】
2004227579.tif 000003
【００２０】
ＸＭＬコードのこの短い断片には、５つの固有エレメント「Foo」、「Bar」、「attr-a」、「attr-b」、および「Text」がある。コンバータがＸＭＬコードを通読する際、パレットクリエータ２０２はこれらの固有コードエレメントを特定する。
【００２１】
ブロック３０６において、パレットクリエータは、パレットのエントリとして各固有のコードエレメントを付け加えることによってエレメントパレット１１６を構築する。図２では、ＸＭＬコード１０４の５つの固有コードエレメントがパレット１１６の最初の５つのエントリ２１０（０）〜２１０（４）としてリストされている。いくつかのコードエレメントがコードの中で複数回現れる可能性があるけれども、各固有のコードエレメントについて単一のエントリとなる。例を挙げると、ＸＭＬコード１０４には、エレメント「Foo」が２回現れるが、エレメントパレット１１６には１回リストされるだけである。
【００２２】
一実施例においては、各パレットのエントリは３２ビットである。コードエレメントは、ハッシュアルゴリズムを使って処理されて、この３２‐ビットのエントリを生成する。衝突が起こった場合には（即ち、２つのエレメントをハッシュすると同じ値になる）、コード開発者はこの衝突について知らされ、この衝突を取り除くためにエレメントの名前を変更するよう指示される。
【００２３】
（第２のパス：エンコーディング）  
第２のパスの期間に、コンピューティングシステム１０２は、エレメントパレット１１６を用いてＸＭＬコードをエンコードする。図３のブロック３０８において、ＸＭＬ−バイナリコンバータ１１４は、２度目のＸＭＬコード１０４の通読を始める。コードの各部が読み取られる際に、トークン化モジュール２０４は、そのコード部分に相当するトークン２１２を作成する。一実施例において、このトークン化モジュール２０４は、予め定義されたコマンドを割り当てることによってＸＭＬコードの各部をトークン化し、これら予め定義されたコマンドは、ＸＭＬコードのその部分に含まれているエレメントパレット１１６中の関連付けられたエレメントを参照している。トークン２１２にある各コマンドは、元のＸＭＬコードにおいて対応するテキストベースの命令がそのエレメントに関して動作するであろうと同じ態様でこの参照されたエレメントに関して動作する。例としてのコマンドを表１に示す。  
【００２４】
【表１】
2004227579.tif 000004
【００２５】
トークン化プロセスを例証するために、XMLコード１０４の最初のライン、「<Foo>」、を検討する。トークン化の期間に、モジュール２０４は先ずコードのこのライン中の固有コードエレメントを特定する。この場合、固有コードエレメントは「Foo」である。次に、トークン化モジュール２０４は、コードのこのラインが、シンボル「<」および「>」でタグ付けされているので、エレメント「Foo」にとっての開始のオペレーションであることを見分ける。このモジュール２４０は、表１中の予め定義された一組のコマンドからこの開始オペレーションを効果的に行うコマンドを選択する。この例では、既定のOPENコマンドは、ＸＭＬコード「<Foo>」によって代表されたものと本質的に同じオペレーションを行う。トークン化モジュール２０４は次に、固有のコードエレメント「Foo」を含むエレメントパレット１１６のエントリ、この場合エントリ０、に対する参照とこのコマンドを関連付ける。このように、モジュール２０４は、OPENコマンドとエレメントパレット１１６のエントリ０に対する参照を用いてＸＭＬコード１０４の最初のラインを次のようにエンコードする。  
「<Foo>」のエンコードされたトークン→ OPEN, 0  
このトークンは、実行されると、エレメントパレット１１６の中のエントリ０のエレメント、エレメント「Foo」、を開くようにプロセッサに命令する。表２にＸＭＬコード１０４の他の部分をトークン化することによって生み出される一組のトークンをリストする。  
【００２６】
【表２】
2004227579.tif 000005
【００２７】
一実施例においては、これらのトークンはサイズが等しい。図２に示した例では、各固定長のトークン２１２には、コマンドを保持するための４‐ビットのコマンドフィールド２１４と、パレット参照またはデータ長パラメータを保持するための１２‐ビットのパラメータフィールド２１６を含め、１６ビットある。このように、長さの異なるＸＭＬコードの部分は、慣例的な１６‐ビットのバイナリ形式に適合する均等サイズの固定長トークンとしてエンコードされる。
【００２８】
図３のブロック３１２において、トークン化プロセス期間に抽出されたデータは、データバッファ１２０に配置される。このことは、データ項目「１」、「２」、および「Hello World」をＸＭＬコード１０４から抽出し、これらデータ項目をデータバッファ１２０に保存することで図２に図式的に示されている。ブロック３１４において、トークン２１２はオプションとしてコンプレッサ２０６によって圧縮される。一例として、コンプレッサは、ＬＺＳＳアルゴリズムなどのＬＺ圧縮アルゴリズムを実装する。圧縮されたトークンは、トークンバッファ１１８に保存される（ブロック３１６）。
【００２９】
ブロック３１８において、トークンバッファ１１８およびデータバッファ１２０は、時折、バイナリファイル２２０にフラッシュされる。一実施例においては、トークンバッファ１１８は、一杯になるとフラッシュされる。トークンバッファの内容がバイナリファイル２２０に格納されると、次にデータバッファ１２０が自動的にフラッシュされる。こうして交互にフラッシュすることにより、結果的に得られるファイル２２０では、圧縮されたトークン２２２（１）、２２２（２）、．．．、２２２（Ｊ）と、非圧縮のデータ２２４（１）、２２４（２）、．．．、２２４（Ｋ）とが交互に配置される。このように、データブロックのデータは、隣り合うトークン、通例では先行のトークンブロックに対応する。例を挙げると、ブロック２２４（１）にある非圧縮のデータは、圧縮されたトークンブロック２２２（１）にあるトークンと関連付けられる可能性があり、ブロック２２４（２）にある非圧縮データは、圧縮されたトークンブロック２２２（２）にあるトークンと関連付けられる可能性があり、以下同様である。
【００３０】
エレメントパレット１１６およびヘッダ２２６がバイナリファイルにさらに含まれている。このバイナリファイル２２０には、ヘッダ２２６、複数の３２‐ビットエントリを持つエレメントパレット１１６、圧縮された１６‐ビットトークンのブロック２２２、および非圧縮データのブロック２２４が入っている。一旦形成されると、バイナリファイル２２０はファイルとして移転したり、データストリームとして伝送したりすることができる。
【００３１】
（バイナリＸＭＬコードの実行）  
図４および図５は、バイナリのＸＭＬコードを実行するためのシステムおよびプロセスを図示している。図４には、ランタイム中にバイナリのＸＭＬファイル２２０を実行するコード実行デバイス１２６の抜粋した構成要素が示されている。コード実行デバイス１２６は、図１に図示したゲーム用システムを含めて、多くの様々なタイプのコンピューティングデバイスとして実装することができる。コード実行デバイス１２６はプロセッサ４０２とメモリ４０４を有している。ＸＭＬバイナリ形式デコーダ１２８は、プロセッサ４０２にて実行されるように示されている。このデコーダ１２８は、圧縮されたトークンブロック２２２を解凍するためのデコンプレッサ４０６と、ブロックに含まれる個々のトークンをデコードするためのトークンデコーダ４０８を含む。コード実行デバイス１２６は、デコーダ１２８によってデコードされた個々のトークンを実行するためにコールされる、IDatabaseEventと呼ばれるデータベースインターフェイスを含む、一組のインターフェイス４１０をさらに実装している。
【００３２】
図５には、バイナリのＸＭＬコードを実行するためのプロセス５００が示されている。このプロセス５００は、任意の適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせに実装することができる。ソフトウェアおよびファームウェアの場合では、プロセス５００は、メモリに格納され、１つまたは２つ以上のプロセッサによって実行可能なコンピュータ実行可能命令として実装された一組のオペレーションを表す。プロセス５００については、図１および図４のシステムを参照して説明する。
【００３３】
ブロック５０２において、コード実行デバイス１２６は、バイナリＸＭＬファイル２２０を受け取り、そこでこのファイルはデコードのためにＸＭＬバイナリ形式デコーダ１２８に渡される。このデコーダ１２８はファイルヘッダ２２６を処理し、次にエレメントパレット１１６をメモリ４０４にロードする（ブロック５０４）。ブロック５０６において、デコーダ１２８は最初の圧縮されたトークンブロック２２２（１）をメモリ４０４にロードする。ブロック５０８において、デコンプレッサ４０６は圧縮されたトークンブロック２２２（１）を解凍して、個々のトークン２１２を復元する。解凍されたトークンは、トークンデコーダ４０８に渡され、そこでコマンドおよび参照がインターフェイス４１０に対するコールに翻訳される（ブロック５１０）。
【００３４】
一実施例では、エレメントパレット１１６にあるエレメントと、バイナリファイル２２０にある非圧縮のデータブロック２２４とにアクセスする、IDatabaseEventと名付けられたデータベースに対するコールに個々のブロックを翻訳する。このデータベースインターフェイスは、コマンドの実行を円滑にする一組のメソッドを提供する。表３に例示的な５つのインターフェイスメソッド一式を記載する。  
【００３５】
【表３】
2004227579.tif 000006
【００３６】
トークンが翻訳されるので、適切なインターフェイスメソッドが実行される。例を挙げると、トークン「OPEN, 0」がメソッドOnBeginElementのインターフェイスコールに翻訳され、エレメント「Foo」がパレット１１６のエントリ０からアクセスされ、メソッドに渡される。表４にＸＭＬコード１０４から生成された例示的な一組のトークンの翻訳を示す。  
【００３７】
【表４】
2004227579.tif 000007
【００３８】
一旦翻訳されると、各インターフェイスメソッドが実行される（ブロック５１２）。このように、バイナリのＸＭＬコード２２０の実行には、トークンの解凍と、パレット１１６の参照されたエレメントに関して実行されるトークンコマンドのインターフェイスコールへの翻訳が関係している。ロードと実行は、高速であり、特に、元のテキストベースの状態のＸＭＬコードをロードし、実行することに比較した場合そうである。ＸＭＬコードをバイナリフォーマットに変換することによって、コード実行デバイスにてパーサすることがなく、これによってロードと実行の時間を大幅に削減する。
【００３９】
（まとめ）  
本発明を構造的な特徴および／または方法論的な行為に特有の言語で説明したが、添付の特許請求の範囲に規定された本発明は、ここに説明した特定の特徴または行為に必ずしも限定されないということが理解されるべきである。正しくは、これら特定の特徴および行為は、特許請求の範囲に記載された発明を実施する例示的な形態として開示されている。
【図面の簡単な説明】
【００４０】
【図１】ＸＭＬコードが後続のロードおよび実行のためにバイナリフォーマットに変換される例示的なシステム環境を示す図である。
【図２】変換を行うコンピュータシステムの抜粋した構成要素を示すブロック図であり、種々の構成要素がどのようにＸＭＬコードをバイナリフォーマットに変換するかを図式的に示している。
【図３】ＸＭＬをバイナリフォーマットに変換するための変換プロセスのフロー図である。
【図４】ＸＭＬコードのバイナリ形式をロードし、実行するコード実行デバイスの抜粋した構成要素を示すブロック図であり、これら構成要素がどのようにＸＭＬコードのバイナリ形式をロードし、実行するかについても図式的に示している。
【図５】ＸＭＬのバイナリ形式をロードし、実行するための実行プロセスのフロー図である。
【符号の説明】
【００４１】
１００  システム環境
１０２  コンピューティングシステム
１０４  ＸＭＬコード
１０６  バイナリ形式のＸＭＬコード
１１０  プロセッサ
１１２  メモリ
１１４  ＸＭＬ−バイナリコンバータ（ＸＭＢセーバ）
１１６  エレメントパレット
１１８  トークンバッファ
１２０  データバッファ
１２２  持ち運び可能な光ディスク
１２４  ネットワーク
１２６  コード実行デバイス（例、ゲームシステム）
１２８  ＸＭＬバイナリ形式デコーダ（ＸＭＬローダ）
２０２  パレットクリエータ
２０４  トークン化モジュール
２０６  コンプレッサ
２１０（０）  エントリ０
２１０（１）  エントリ１
２１０（２）  エントリ２
２１０（３）  エントリ３
２１０（４）  エントリ４
２１２  トークンｉ
２１４  コマンドフィールド（４ビット）
２１６  パラメータフィールド（１２ビット）
２２０  バイナリＸＭＬファイル
２２２、２２２（１）、２２２（２）  圧縮されたトークンブロック
２２４、２２４（１）、２２４（２）  非圧縮のデータ
２２６  ヘッダ
４０２  プロセッサ
４０４  メモリ
４０６  デコンプレッサ
４０８  トークンデコーダ
４１０  インターフェイス（IDatabaseEvent）
【図１】
2004227579.tif 000008
【図２】
2004227579.tif 000009
【図３】
2004227579.tif 000010
【図４】
2004227579.tif 000011
【図５】
2004227579.tif 000012