(57)【要約】【課題】  コンテンツの様々なコンポーネントをモジュール化するウェブコンテンツを提示するためのアーキテクチャを提供する。【解決手段】  ワイヤフレームは、コンテンツのページの空間領域（スロット）を定義する。ビューは、ワイヤフレーム内のスロット間のマッピングまたはバインディング、および、コンテンツを生成するオブジェクトを定義する。レンダリングエンジンはスロットを、スロットにバインドされたオブジェクトに基づいたコンテンツで埋める。スロットをコントロール、拡張可能スタイルシート言語（ＸＳＬ）タグまたは他のビューにバインドさせることができる。コントロールは、スロットを埋めるためのコンテンツを生成する実行可能または解釈可能コードである。ＸＳＬプロセッサはそのようなコンテンツを、ＸＳＬタグに基づいて生成することもできる。【選択図】  図１３
2004259276.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツ項目を生成するためのシステムであって、
前記コンテンツ項目の複数の領域を定義する第１のワイヤフレームデータ構造と、
コンテンツ生成オブジェクトの第１のセットと、
前記コンテンツ生成オブジェクトの第１のセットを、前記第１のワイヤフレームによって定義された前記領域にマップする第１のビューと、
前記第１のワイヤフレームによって定義された各領域について、
前記ビューが前記領域にマップする前記コンテンツ生成オブジェクトに基づいてコンテンツを生成し、および
前記生成されたコンテンツを前記領域に挿入する
レンダリングエンジンと
を備えたことを特徴とするシステム。
【請求項２】
前記コンテンツ項目は、ハイパーテキストマークアップ言語または拡張可能ハイパーテキストマークアップ言語ウェブページを備えたことを特徴とする請求項１に記載のシステム。
【請求項３】
前記ビューが前記領域にマップする前記コンテンツ生成オブジェクトは、実行可能または解釈可能コードを備えたコントロールであり、前記生成されたコンテンツが、前記実行可能または解釈可能コードの実行によって生成されることを特徴とする請求項１に記載のシステム。
【請求項４】
構成ファイルをさらに備え、
前記実行可能または解釈可能コードによって生成された前記コンテンツは、少なくとも部分的には前記構成ファイルに含まれたデータに基づくことを特徴とする請求項３に記載のシステム。
【請求項５】
前記ビューは、前記実行可能または解釈可能コードが動作するモードを指定し、前記実行可能または解釈可能コードによって生成された前記コンテンツは、少なくとも部分的には前記指定されたモードに基づくことを特徴とする請求項３に記載のシステム。
【請求項６】
前記ビューが前記領域にマップする前記コンテンツ生成オブジェクトは、拡張可能スタイルシート言語タグを備え、前記レンダリングエンジンは、拡張可能スタイルシート言語プロセッサを使用して前記拡張可能スタイルシート言語タグに基づいて、コンテンツを生成することを特徴とする請求項１に記載のシステム。
【請求項７】
前記ビューが前記領域にマップする前記コンテンツ生成オブジェクトは、第２のワイヤフレームをコンテンツ生成オブジェクトの第２のセットに関連付けることによってコンテンツを指定する第２のビューを備え、前記生成されたコンテンツが、前記レンダリングエンジンが前記第２のビューを評価することによって生成されることを特徴とする請求項１に記載のシステム。
【請求項８】
前記第１のワイヤフレームによって定義された前記領域の少なくとも１つが、前記第１のビューによっていずれのコンテンツ生成オブジェクトにもマップされず、前記レンダリングエンジンは、前記コンテンツ項目に、前記第１のワイヤフレームによって定義された前記領域の前記１つにおいてコンテンツがないことを反映させることを特徴とする請求項１に記載のシステム。
【請求項９】
コンテンツ項目を生成する方法であって、
コンテンツ項目の領域を定義するワイヤフレームのスロットのセットとコンテンツ生成オブジェクトのセットとの間の関連付けを指定するビューにアクセスすること、および
前記スロットの１つの各々について、前記ビューが前記スロットの１つに関連付ける前記コンテンツ生成オブジェクトに基づいて、前記スロットの１つにコンテンツを挿入すること
を含むことを特徴とする方法。
【請求項１０】
前記コンテンツ項目は、ハイパーテキストマークアップ言語または拡張可能ハイパーテキストマークアップ言語ウェブページを備えたことを特徴とする請求項９に記載の方法。
【請求項１１】
前記ビューが前記スロットの１つに関連付ける前記コンテンツ生成オブジェクトは、実行可能または解釈可能コードを含み、前記スロットの１つに挿入される前記コンテンツは、前記実行可能または解釈可能コードを実行することによって生成されることを特徴とする請求項９に記載の方法。
【請求項１２】
前記実行可能または解釈可能コードは、生成する前記コンテンツを決定するに際して、構成ファイルに含まれたデータを考慮に入れることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記実行可能または解釈可能コードは、生成する前記コンテンツを決定する際に、前記ビューで指定されたモードを考慮に入れることを特徴とする請求項１１に記載の方法。
【請求項１４】
前記ビューが前記スロットの１つに関連付ける前記コンテンツ生成オブジェクトは、拡張可能スタイルシート言語タグを備え、前記方法は、
拡張可能スタイルシート言語プロセッサを使用して、前記拡張可能スタイルシート言語タグに基づいてコンテンツを生成することをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１５】
前記ビューが前記スロットの１つに関連付ける前記コンテンツ生成オブジェクトはサブビューを備え、前記方法は、
前記サブビューを評価して、前記スロットの１つに挿入されるコンテンツを生成することをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１６】
コンピュータ実行可能命令により、ウェブページを生成する方法を実行するように符号化されたコンピュータ可読媒体であって、該方法は、
ウェブページの複数の領域を備え、前記領域の各々が空またはコンテンツ生成オブジェクトの第１のセットの１つに対応している第１のワイヤフレームと、前記コンテンツ生成オブジェクトの第１のセットとの間の対応を指定する第１のビューを受信すること、
前記第１のワイヤフレーム内の前記領域の１つの各々について、
前記領域の１つがコンテンツ生成オブジェクトに対応している場合に、前記領域の１つに、前記コンテンツ生成オブジェクトに基づいて、コンテンツをウェブページに追加すること、および
前記領域の１つがコンテンツ生成オブジェクトに対応していない場合に、前記領域の１つにコンテンツがないことを反映するように、前記ウェブページを構築させること
を含むことを特徴とするコンピュータ可読媒体。
【請求項１７】
前記コンテンツ生成オブジェクトのセットは、
コンテンツを生成するように動作する実行可能または解釈可能コードと、
拡張可能スタイルシート言語プロセッサに、生成または検索されるコンテンツを指定する拡張可能スタイルシート言語タグと、
第２のワイヤフレームとコンテンツ生成オブジェクトの第２のセットとの間の対応を指定する第２のビューと
のうちの１つまたは複数を備えたことを特徴とする請求項１６に記載のコンピュータ可読媒体。
【請求項１８】
前記実行可能または解釈可能コードが生成する前記コンテンツは、構成ファイルに含まれたデータの関数であることを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
前記実行可能または解釈可能コードが生成する前記コンテンツは、前記第１のビュー内で前記実行可能または解釈可能コードについて指定されたモードの関数であることを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項２０】
コンテンツ項目の生成を容易にするためのデータ構造上で符号化しているコンピュータ可読媒体であって、前記データは、
前記コンテンツ項目の複数の領域を定義する第１のワイヤフレームの第１の識別子と、
前記第１のワイヤフレームによって定義された前記領域の少なくとも１つについて、前記領域の１つに関連付けられるコンテンツ生成オブジェクトを指定し、前記領域の１つを、前記領域の１つに関連付けられた第２の識別子によって識別し、さらに前記コンテンツ生成オブジェクトを、前記コンテンツ生成オブジェクトに関連付けられた第３の識別子によって識別するバインディングと
を備えたことを特徴とするコンピュータ可読媒体。
【請求項２１】
前記各第１、第２および第３の識別子はテキスト文字列を含むことを特徴とする請求項２０に記載のコンピュータ可読媒体。
【請求項２２】
前記コンテンツ生成オブジェクトは、前記領域の１つに挿入されるコンテンツを生成する実行可能または解釈可能コードを備えたことを特徴とする請求項２０に記載のコンピュータ可読媒体。
【請求項２３】
前記コンテンツ生成オブジェクトは、拡張可能スタイルシート言語プロセッサに、生成または検索されるコンテンツを指定する拡張可能スタイルシート言語タグを備えたことを特徴とする請求項２０に記載のコンピュータ可読媒体。
【請求項２４】
前記コンテンツ生成オブジェクトは、第２のワイヤフレームの領域をコンテンツ生成オブジェクトのセットに関連付ける第２のビューを備えたことを特徴とする請求項２０に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピュータ技術の分野に関する。より詳細には、本発明は、ポータルサイトおよび検索エンジンによって作成されたウェブページのような、ウェブコンテンツを動的に作成するために使用することができるインフラストラクチャを提供する。
【背景技術】
【０００２】
従来のウェブページは、ハイパーテキストマークアップ言語（ＨＴＭＬ）または拡張可能ハイパーテキストマークアップ言語（ＸＨＴＭＬ）などのマークアップ言語で記述され、ウェブブラウザによってレンダリングするのに適したコンテンツを備える。いくつかのウェブページは静的であり、すなわち、一定で不変のＨＴＭＬまたはＸＨＴＭＬコンテンツの一部を、クライアントマシンにダウンロードしてブラウザで表示することができるファイルに格納することができる。しかし、検索サイト、ポータルサイト、電子商取引サイトによって提供されたコンテンツなど、大部分の商用ウェブコンテンツは静的でなく、むしろ動的に生成され、ユーザに合わせてパーソナライズすることができるか、あるいはユーザからのある入力に応答して生成することができる。
【０００３】
動的に生成されるコンテンツは、その目的のために設計されたプログラムによって生成される。このようなプログラムは、ルールまたはプロシージャのセットに従ってコンテンツを作成する実行可能または解釈可能コードのモジュールである。たとえば、ユーザがクエリを検索エンジンサイトに送信するとき、検索エンジンは様々なソース（たとえば、既知のウェブページのデータベース）を調べて結果を生成し、次いで、検索エンジンサイトにあるコンテンツ生成プログラムが、結果を含むＨＴＭＬコンテンツのページを生成し、そのページをユーザに送信する。明らかに、このような結果ページは動的に生成されなければならず、これは結果ページのコンテンツが、どのようなクエリをユーザが出したかに応じて異なるからである。
【０００４】
既存のソフトウェアはウェブコンテンツを動的に生成することに有効であるが、このようなソフトウェアは、プログラムが生成する必要のあるコンテンツに創造的な変更があるとき、柔軟性の欠乏を欠点として有する。たとえば、検索エンジンは、その検索エンジンが探し出したウェブページのタイトルのリストとして検索結果を表示するプログラムを使用することができる。しかし、検索エンジンのオペレータが、これらの結果を提示する新しい方法（たとえば、このリストを、探し出したウェブページのサムネイル画像により向上させること）を導入することを望む場合、一般にこの変更を実現するための唯一の方法は、プログラムを書き換えること（または少なくとも、プログラムに、サムネイル画像の包含をサポートするコードを追加すること）である。
【０００５】
大部分のウェブコンテンツを、より小さなコンテンツ部品のモジュールである「ビルディングブロック」から構築されるものとみなすことができる。たとえば、検索結果ページは、コンテンツの様々な別々の部品からなる（たとえば、ロゴ、著作権表示、最新検索の結果、別の検索クエリを入力するための検索ボックス、広告など）。理論上は、ウェブコンテンツのモジュールの特性は、コンテンツ設計者が実行時間に提供するモジュールのビルディングブロックからコンテンツを構築することによって、単一のプログラムがコンテンツ生成プロセスを駆動できることを示唆する。コンテンツへの創造的な変更は、このようなプログラムへの変更を必要とせず、このプログラムが単に、異なるビルディングブロックを使用して異なるコンテンツを生成するように企図することができるからである。しかし、従来のコンテンツ生成ソフトウェアは、ソフトウェア自体を変更することを伴わず、どのような種類の創造的な変更をコンテンツに対して行なうことができるかに関して、極めて制限されている。
【０００６】
前述に鑑みて、従来技術の欠点を克服するシステムの必要性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、ウェブページなど、コンテンツを生成するためのインフラストラクチャを提供する。このインフラストラクチャは、コンテンツのページを、別々に設計、実行および修正することができるより小さなコンポーネントから構築することができるという考えに基づいている。本発明により、これらのより小さなコンポーネント、ならびにこれらが組み込まれる方法を、コンテンツ生成ソフトウェアに実行時間で指定することができる。
【課題を解決するための手段】
【０００８】
本発明によれば、コンテンツの作成は、「ワイヤフレーム」、「ビュー」およびコンテンツ生成オブジェクトの組み合わせによって指定される。ワイヤフレームは、コンテンツ部品の空間領域を定義するデータ構造である。たとえば、ワイヤフレームは、４つの矩形領域を有し、ページの最上部から最下部まで垂直に実行するように、ウェブページを定義することができる。これらの各領域は「スロット」と呼ばれる。「ビュー」は、ワイヤフレーム内の各スロットをコンテンツ生成オブジェクト、または、コンテンツ生成オブジェクトのシーケンスにバインドする（あるいはまた、特定のスロットを空となるように指定する）データ構造である。
【０００９】
ビューをレンダリングするために、レンダリングエンジンは、ビュー内で識別されたワイヤフレームにアクセスし、そのワイヤフレーム内の各スロットについて、そのスロットにバインドされたコンテンツ生成オブジェクトにコンテンツを生成させる。次いで、レンダリングエンジンは、オブジェクトによって生成されたコンテンツをスロットに入れる。このプロセスは、ワイヤフレーム内の各スロットについて繰り返される。レンダリングエンジンの出力は、コンテンツ部品（たとえば、ＨＴＭＬウェブページ）であり、これはワイヤフレームの適切な領域において各コンテンツ生成オブジェクトによって生成されたコンテンツを含む。
【００１０】
コンテンツ生成オブジェクトには、「コントロール」、拡張可能スタイルシート言語（ＸＳＬ）タグ、およびビューが含まれる。コントロールは、スロットに入れられるＨＴＭＬまたはＸＨＴＭＬコンテンツを生成する実行可能または解釈可能コードである。ＸＳＬタグは、ＸＳＬ処理ソフトウェアによって使用され、ＨＴＭＬまたはＸＨＴＭＬコンテンツを生成することができるデータである。ビューを評価することで、結果としてコンテンツの生成となるので、ビュー自体がコンテンツ生成オブジェクトである。したがって、コンテンツを、実際には最上位ビューのサブビュー、サブサブビューなどであるビューから、階層的に構築することができる。レンダリングエンジンが、サブビューにバインドされるスロットに遭遇すると、レンダリングエンジンはそれ自体を再帰的に呼び出して、そのスロットのためのコンテンツをそのビューに基づいて生成することができる。
【００１１】
本発明の１つの特徴によれば、コントロールは、構成ファイルに含まれたパラメータに基づいて、異なる振舞を提示することができる。したがって、所与のコントロールを、どのパラメータが構成ファイル内で提供されるかに基づいて、コンテンツ部品の異なるバリエーションを生成するように設計することができる。
【００１２】
本発明の他の特徴を以下で説明する。  
前述した概略、ならびに、以下の好ましい実施形態の詳細な説明は、添付の図面と共に読まれるとき、よりよく理解される。本発明を例示するため、図面において本発明の例示的構成を示すが、本発明は、開示された特定の方法および手段に限定されない。
【発明を実施するための最良の形態】
【００１３】
概要
多くの商用ウェブコンテンツは、定義された方法でグラフィカルに組み込まれる、より小さなコンテンツの部品から構築される。本発明は、コンテンツプロバイダが、どのようにコンテンツが構築されるかを、これらのより小さな部品に基づいて指定できるようにするインフラストラクチャを提供する。このインフラストラクチャは、レンダリングエンジンを含み、コンテンツをコンテンツプロバイダの仕様に基づいて動的に生成する。
【００１４】
例示的コンピューティング環境
図１は、本発明の態様を実施することができる例示的コンピューティング環境を示す。コンピューティング環境１００は、適切なコンピューティング環境の一例でしかなく、本発明の用途または機能性の範囲についてのいかなる限定も示唆するように意図されていない。コンピューティング環境１００はまた、例示的オペレーティング環境１００に例示したコンポーネントの任意の１つまたは組み合わせに関するいかなる依存性または必須要件も有するように解釈されるべきではない。
【００１５】
本発明は、多数の他の汎用または専用コンピューティングシステム環境または構成により動作可能である。本発明と共に使用するのに適しているだろう周知のコンピューティングシステム、環境および／または構成の例には、限定するものではないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、組込みシステム、上記のシステムまたはデバイスなどのいずれかを含む分散コンピューティング環境などが含まれる。
【００１６】
本発明を一般に、プログラムモジュールのような、コンピュータによって実行されるコンピュータ実行可能命令に関連して説明することができる。一般に、プログラムモジュールにはルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれ、これらは特定のタスクを実行するか、あるいは特定の抽象データ型を実装する。本発明はまた分散コンピューティング環境において実施することもでき、この環境ではタスクが、通信ネットワークまたは他のデータ伝送媒体を通じてリンクされるリモート処理デバイスによって実行される。分散コンピューティング環境では、プログラムモジュールおよび他のデータが、記憶デバイスを含むローカルおよびリモートのコンピュータ記憶媒体内に位置することができる。
【００１７】
図１を参照すると、本発明を実施するための例示的システムは、コンピュータ１１０の形態で、汎用コンピューティングデバイスを含む。コンピュータ１１０のコンポーネントには、それだけに限定されないが、処理装置１２０、システムメモリ１３０、および、システムメモリを含む様々なシステムコンポーネントを処理装置１２０に結合するシステムバス１２１を含むことができる。システムバス１２１は、いくつかのタイプのバス構造のいずれかにすることができ、これには、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスが含まれる。例として、限定ではなく、このようなアーキテクチャには、ＩＳＡ（Industrial Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、ＥＩＳＡ（Extended Industrial Standard Architecture）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカルバス、およびＰＣＩ（Peripheral Components Interconnect）バス（メザニンバスとしても知られる）が含まれる。
【００１８】
コンピュータ１１０は通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０によってアクセスすることができる任意の使用可能な媒体とすることもでき、これには、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体が含まれる。例として、限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体を含み、これらはコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなど、情報の格納のためのいずれかの方法または技術において実施される。コンピュータ記憶媒体には、それだけに限定されないが、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（Digital Versatile Disk）もしくは他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶デバイス、または、所望の情報を格納するために使用することができ、コンピュータ１１０によってアクセスすることができる他のいかなる媒体もが含まれる。通信媒体は典型的に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他の伝送メカニズムなどの変調データ信号中に具現化する任意の情報配信媒体をも含む。「変調データ信号」という用語は、信号中に情報を符号化するような方法でその特性の１つまたは複数の組を有するか、または変化されている信号を意味する。例として、限定ではなく、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、ＲＦ（Radio Frequency）、赤外線および他の無線媒体などの無線媒体が含まれる。上記のいずれの組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
【００１９】
システムメモリ１３０は、揮発性および／または不揮発性メモリの形態におけるコンピュータ記憶媒体を含み、これは読み取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などである。ＢＩＯＳ（Basic Input/Output System）１３３は、起動中など、コンピュータ１１０内の複数の要素の間で情報を転送する助けとなる基本ルーチンを含み、通常はＲＯＭ１３１に格納される。ＲＡＭ１３２は通常、処理装置１２０によって即時アクセス可能および／または現在動作中であるデータおよび／またはプログラムモジュールを含む。例として、限定ではなく、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７を例示する。
【００２０】
コンピュータ１１０はまた、他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータ記憶媒体も含むことができる。例としてのみ、図１は、非リムーバブル、不揮発性の磁気媒体に対する読み書きを行なうハードディスクドライブ１４１、リムーバブル、不揮発性磁気ディスク１５２に対する読み書きを行なう磁気ディスクドライブ１５１、および、ＣＤ−ＲＯＭまたは他の光媒体など、リムーバブル、不揮発性の光ディスク１５６に対する読み書きを行なう光ディスクドライブ１５５を例示する。例示的オペレーティング環境で使用することができる他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータ記憶媒体には、それだけに限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体素子（solid state）ＲＡＭ、半導体素子ＲＯＭなどが含まれる。ハードディスクドライブ１４１は通常システムバス１２１に、インターフェイス１４０などの非リムーバブルメモリインターフェイスを通じて接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は通常システムバス１２１に、インターフェイス１５０などのリムーバブルメモリインターフェイスによって接続される。
【００２１】
上述し、図１に例示したドライブおよびそれらの関連付けられたコンピュータ記憶媒体は、コンピュータ１１０用のコンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータの記憶装置を提供する。図１では、たとえば、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６およびプログラムデータ１４７を格納するものとして例示される。これらのコンポーネントを、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７と同じものにも異なるものにもすることができることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６およびプログラムデータ１４７にはここで異なる番号が与えられて、最低でも、それらが異なるコピーであることが例示される。ユーザはコマンドおよび情報をコンピュータ１１０へ、キーボード１６２、および、一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス１６１などの入力デバイスを通じて入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどが含まれる可能性がある。これらおよび他の入力デバイスがしばしば処理装置１２０へ、システムバスに結合されるユーザ入力インターフェイス１６０を通じて接続されるが、これを、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）など、他のインターフェイスおよびバス構造によって接続することができる。モニタ１９１または他のタイプの表示デバイスもシステムバス１２１へ、ビデオインターフェイス１９０などのインターフェイスを介して接続される。モニタに加えて、コンピュータはまた、スピーカ１９７およびプリンタ１９７など、出力周辺インターフェイス１９５を通じて接続することができる他の周辺出力デバイスを含むこともできる。
【００２２】
コンピュータ１１０はネットワーク環境において、リモートコンピュータ１８０など、１つまたは複数のリモートコンピュータへの論理接続を使用して動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードにすることができ、通常は、コンピュータ１１０に関連して上述した要素の多数またはすべてを含むが、記憶デバイス１８１のみを図１に例示している。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークも含むことができる。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的である。
【００２３】
ＬＡＮネットワーキング環境において使用するとき、コンピュータ１１０がＬＡＮ１７１へ、ネットワークインターフェイスまたはアダプタ１７０を通じて接続される。ＷＡＮネットワーキング環境において使用するとき、コンピュータ１１０は通常、モデム１７２、またはインターネットなどのＷＡＮ１７３を介して通信を確立するための他の手段を含む。モデム１７２を内部または外部にすることができ、システムバス１２１へ、ユーザ入力インターフェイス１６０または他の適切なメカニズムを介して接続することができる。ネットワーク環境では、コンピュータ１１０に関連して示したプログラムモジュールまたはその一部を、リモート記憶デバイスに格納することができる。例として、限定ではなく、図１はリモートアプリケーションプログラム１８５を記憶デバイス１８１上に存在するものとして例示する。図示のネットワーク接続は例示的であり、通信リンクを複数のコンピュータの間で確立する他の手段を使用できることは理解されよう。
【００２４】
例示的ウェブブラウザ
図２は、例示的ウェブブラウザ２００のビジュアルインターフェイスを示す。当技術分野で知られているように、ウェブブラウザは、ユーザがあるタイプのコンテンツ（たとえば、ＨＴＭＬコンテンツ）と対話し、このようなコンテンツをネットワークから検索して取ってくることができるようにする、１つのソフトウェアである。ブラウザ２００は、たとえば、コンピュータ１１０（図１）上に格納され、処理装置１２０（図１）上で実行する、ソフトウェアを構成することができる。ブラウザ２００は、インターネットなど、コンピュータ１１０が接続されるワイドエリアネットワーク１７３（図１）からのコンテンツにアクセスすることができる。典型的に、ブラウザ２００はまた、コンピュータ１１０上にローカルに格納されているコンテンツにアクセスすることもできる。
【００２５】
図２の例示的ブラウザは様々な情報をユーザに表示する。詳細には、ブラウザ２００はナビゲーションバー２０２をユーザに表示する。ナビゲーションバー２０２は、ボックス２０４を含み、この中にユーザがＵＲＬ（Uniform Resource Locator）を入力することができ、これはブラウザを特定のコンテンツ項目に向けるためである。図２の例では、ユーザがＵＲＬのｈｔｔｐ：／／ｓｅａｒｃｈ．ｍｓｎ．ｃｏｍをボックス２０４に入力しており、それにより、ユーザがそのＵＲＬによって識別されたコンテンツにアクセスすることを望むことを示す。ブラウザ２００は、このコンテンツを、インターネット上でそれが位置することができるどこからでも検索し、コンテンツをビューイングエリア２０６に表示する。図２の例では、コンテンツがＨＴＭＬまたはＸＨＴＭＬで配信される。（ＵＲＬ内の「ｈｔｔｐ」という句は「ハイパーテキスト転送プロトコル」を意味し、ＵＲＬ内のその表現は、基礎となるコンテンツがＨＴＭＬまたはＸＨＴＭＬコンテンツであることを示す。）ブラウザ２００は、ＨＴＭＬおよび／またはＸＨＴＭＬインタプリタを含むか、そうでない場合はそれにアクセスし、ブラウザ２００によって受信されたＨＴＭＬまたはＸＨＴＭＬコンテンツをレンダリングする。図２の例では、ブラウザ２００は、コンテンツのタイトル（「ＭＳＮ  Ｓｅａｒｃｈ  −  Ｍｏｒｅ  Ｕｓｅｆｕｌ  Ｅｖｅｒｙｄａｙ」）をタイトルバー２０８に表示する。
【００２６】
ブラウザ２００のような、典型的なブラウザは、表示されたコンテンツを印刷、メール送信または保存すること、「お気に入り」または「ブックマーク」のリストを使用して他のコンテンツにナビゲートすること、テキストのコンテンツ用のデフォルトフォントを変更することなど、ユーザが様々な機能を実行することができるようにする。この機能性はユーザに、メニューバー２１０および／またはボタン２１２を用いて並べられている。
【００２７】
以下で述べるように、本発明は、ビューイングエリア２０６に表示されるコンテンツのような、コンテンツを生成するためのインフラストラクチャを提供する。
【００２８】
コンテンツの提示を作成するためのデータ構造
本発明は、ウェブページに利用できるＸＨＴＭＬコンテンツのような、コンテンツが作成されるプロセスを汎用化および抽象化するインフラストラクチャを提供する。（以降、ブラウザでレンダリング可能なコンテンツの例は、そのコンテンツをＸＨＴＭＬコンテンツであるとして指すものとする。しかし、本発明は、ＨＴＭＬ、ワイヤレスマークアップ言語（ＷＭＬ）、音声拡張マークアップ言語（ＶＸＭＬ）など、他のタイプのコンテンツを生成するために使用できることは理解されよう。）
本発明のインフラストラクチャは４種類のデータ構造、すなわち、ワイヤフレーム、ビュー、コントロールおよび構成ファイルを使用する。
【００２９】
「ワイヤフレーム」は、コンテンツのページの空間領域を定義するデータ構造である。各領域は「スロット」と呼ばれる。
【００３０】
「コントロール」は、ワイヤフレームによって定義された特定のスロット内に入れられるＸＨＴＭＬコンテンツを動的に生成する、実行可能または解釈可能コードを備える。
【００３１】
「ビュー」は、特定のスロットと特定のコントロール（または特定のコントロールのシーケンス）との間のマッピングを作成するデータ構造である。ビューはまた、拡張可能スタイルシート言語（ＸＳＬ）タグまたは別のビューをスロットにマップすることもでき、（ビューはまた、ＸＳＬタグまたはビューのシーケンスをスロットにマップすることもできる）、ＸＳＬタグおよびビューの、スロットへのマッピングを、以下でより詳細に述べる。
【００３２】
「構成ファイル」は、コントロールによってそれらの振舞に影響を与えるために使用されるデータを含む。たとえば、コントロールは、コンテンツの特定の部分の２つ以上の異なるバリエーションを生成することができ、構成ファイルは、これらの異なるバリエーションのどれが生成されるべきかを指示するパラメータを含むことができる。
【００３３】
図３は例示的ワイヤフレーム３００を示す。ワイヤフレーム３００は、コンテンツの概念ページを、上述のように「スロット」と呼ばれる領域に分割する。図３の例では、４つのスロット、３０４（１）、３０４（２）、３０４（３）および３０４（４）がある。各スロットは名前を有し、この例では、スロット３０４（１）から３０４（４）の名前はそれぞれ「slot_header」、「slot_results」、「slot_sidebar」および「slot_footer」である。ワイヤフレーム３００自体も名前を有する（この例では「Wireframe_Site」）。後述のように、名前は、ビューデータ構造でワイヤフレームおよび各スロットを識別するために使用される。
【００３４】
典型的に、ワイヤフレームはＸＨＴＭＬ構造として表現される。したがって、図３の例示的ワイヤフレームを以下のように定義することができる。
【００３５】
【表１】
2004259276.tif 000003
【００３６】
上記を見るとわかるように、上記のＸＨＴＭＬ定義はコンテンツの４つの領域、すなわち、スロット名「slot_header」を有する最上部の領域、スロット名「slot_footer」を有する最下部の領域、ならびに、最上部および最下部の領域の間の２列のテーブルをレイアウトし、左側の列の名前は「slot_results」であり、右側の列の名前は「slot_sidebar」である。
【００３７】
図４は、ＸＨＴＭＬコンテンツ４０２を生成する例示的コントロール４００を示す。コントロール４００は名前（この例では「Control_Footer」）を有し、後述するように、名前はビューデータ構造においてコントロールを識別するために使用される。コントロール４００を使用して、ワイヤフレーム３００内の「slot_footer」という名前のスロットに挿入されるコンテンツを生成することができる。
【００３８】
コントロール４００は、実行中にＸＨＴＭＬコンテンツ４０２を動的に生成するように構成された実行可能または解釈可能コードを備える。コントロール４００は様々な方法で実施されることができる。たとえば、コントロール４００は、マシン実行可能コード（．ｅｘｅまたは．ｄｌｌファイルなど）、解釈可能スクリプト（Ｊａｖａ（登録商標）またはＣ＃言語におけるスクリプトなど）、仮想マシンコード（Ｊａｖａ（登録商標）バイトコードなど）などを備えることができる。
【００３９】
以下は、コントロール４００の関数を記述する擬似コードの一例である。（以下の擬似コードを上述の実行可能または解釈可能コンポーネントのいずれにおいても実施できることは、容易に理解されよう。）
【００４０】
【表２】
2004259276.tif 000004
【００４１】
上記の擬似コードは、コントロール４００を、ＸＨＴＭＬコンテンツを生成して戻す「Control_Footer」と名前付けされた関数として定義する。この例では、Control_Footerは、特定のサイズおよび背景色を有し、かつ「Ｃｏｐｙｒｉｇｈｔ  ２００３  Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ−Ａｌｌ  Ｒｉｇｈｔｓ  Ｒｅｓｅｒｖｅｄ」などのテキスト文字列（または、何であれファイル「copyright_notice.txt」内に含まれるテキスト文字列）を含む、テーブルのためのＸＨＴＭＬコードを戻す。
【００４２】
上述のように、コントロールをワイヤフレームのスロットに、「ビュー」と呼ばれる構造を用いてマップ（または「バインド」）させることができる。図５は、ワイヤフレーム３００のスロットへのコントロールの例示的マッピングを示す。この例では、コントロール４２０（「Control_Header」という名前）がスロット３０４（１）にマップし、コントロール４１０（「Control_Results」）がスロット３０４（２）にマップし、コントロール４３０（「Control_Sidebar」）がスロット３０４（３）にマップし、コントロール４００（図４に関連して上述した「Control_Footer」）がスロット３０４（４）にマップする。このマッピングは、ＸＨＴＭＬコンテンツのページをワイヤフレーム３００に基づいて定義し、スロット３０４（１）、３０４（２）、３０４（３）および３０４（４）によって定義された各領域が、それぞれコントロール４２０、４１０、４３０および４００によって生成されたＸＴＨＭＬコンテンツで満たされる。このマッピングはビュー５００を表現する。
【００４３】
図５に示すビュー５００を、以下のデータ構造として表現することができる。
【００４４】
【表３】
2004259276.tif 000005
【００４５】
上に示したデータ構造は、名前「view_Classic」をビューに割り当てる。典型的なシステムはいくつかのビューを有し、名前は、ビューがいくつかのビューの中から識別されることを可能とする。見てわかるように、このデータ構造は、各スロットについての「バインディング」を含み、スロットに「バインド」される特定のコントロールを示す。
【００４６】
上記の例は単一のコントロールが各スロットにバインドされることを示すが、複数のコントロールを単一のスロットにバインドさせて、ある順序で実行されるようにすることができることに留意されたい。したがって、「slot_header」についてのバインディングを以下のように読むことができる。
【００４７】
【表４】
2004259276.tif 000006
【００４８】
このバインディングは、slot_headerをコンテンツで満たすために、「Control_A」、「Control_B」および「Control_C」という名前のコントロールが、示された順序で実行されることを示す。
【００４９】
加えて、上記の例は、コントロールのみがスロットにバインドされることを示すが、前述のように、本発明はまたビューまたはＸＳＬタグをスロットにバインドさせることも可能にする。スロットへのコントロールのバインディングは、最も単純なバインディングの例である。しかし、スロットバインディングの概念を汎用化することができ、図６〜１２はこのような汎用化の一例を示す。
【００５０】
ビューを使用してコンテンツを指定する例
上述のように、コントロールは、ＸＨＴＭＬコンテンツを生成するソフトウェアオブジェクトである。コントロールをスロットに「マップ」または「バインド」することは、そのコントロールによって生成されているＸＨＴＭＬコンテンツでそのスロットが満たされることを意味する。しかし、コントロールは、ＸＨＴＭＬコンテンツを生成する唯一の種類のオブジェクトではない。詳細には、ＸＳＬタグを評価してＸＨＴＭＬコンテンツを生成できることが当技術分野で知られている。加えて、ビューが評価されて適切なコンテンツがワイヤフレームのスロットに配置されるとき、この評価の結果はＸＨＴＭＬコンテンツであり、そのためビューは、ＸＨＴＭＬコンテンツを生成するさらにもう１つのオブジェクトである。これらの事実を考慮すると、ＸＳＬタグおよびビュー、ならびに、ＸＨＴＭＬコンテンツを生成するために評価することができる他のいかなる種類のオブジェクトも、スロットにマップさせることができることがわかる。
【００５１】
図６〜１１は、ワイヤフレーム３００における「slot_header」という名前のスロット（図３）にバインドさせることができるビューを構築する方法を示す。前の例のように、ビューは、特定のワイヤフレームについてのスロットバインディングを含み、ビューで使用されるワイヤフレームを定義することが必要である。図６は、「WireFrame_Header」という名前のワイヤフレーム６００を示す。ワイヤフレーム６００は４つのスロット６０２（１）、６０２（２）、６０２（３）および６０２（４）を有し、それぞれ「slot_big7」、「slot_banner」、「slot_sharkfin」および「slot_querybox」という名前である。このワイヤフレームを、以下のデータ構造によって定義することができる。
【００５２】
【表５】
2004259276.tif 000007
【００５３】
図７〜１０は、ワイヤフレーム６００内のスロット６０２（１）から６０２（４）にバインドされる様々なオブジェクトを示す。
【００５４】
図７は、「Big7」という名前のＸＳＬタグ７００を示す。ＸＳＬタグ７００は、ＸＳＬデータに関連付けられ、適切なＸＳＬ処理ソフトウェアを用いて、ｓｅａｒｃｈ．ｍｓｎ．ｃｏｍウェブサイトの米国バージョンの最上部に現れる「ビッグ７」リンク７０２を含むＸＨＴＭＬコンテンツを生成するために使用することができる。これらの「ビッグ７」リンクは、「ＭＳＮホーム」、「マイＭＳＮ」、「Ｈｏｔｍａｉｌ」、「検索」、「ショッピング」、「マネー」および「ピープル＆チャット」である。
【００５５】
図８は、もう１つのＸＳＬタグ８００を示し、「Banner」という名前である。ＸＳＬタグ８００をＸＳＬ処理ソフトウェアによって、ＸＳＬタグ７００と同じ方法で評価することができる。しかし、ＸＳＬタグ８００はバナー広告８０２を生成する。図８の例では、このバナー広告は、レドモンド大学のための広告である。
【００５６】
図９は、「Control_Sharkfin」という名前のコントロール９００を示す。コントロール９００は、曲線のグラフィック（参照符号９０２）の隣にＭＳＮという文字を示すＸＨＴＭＬコンテンツを生成し、これはｓｅａｒｃｈ．ｍｓｎ．ｃｏｍウェブサイトに現れる。（このグラフィックの名前は、曲線が示唆するサメの背びれに由来する。）
【００５７】
図１０は、「View_QueryBox」という名前のビュー１０００を示す。ビュー５００（図５に関連して上述）のように、ビュー１０００は、ワイヤフレームの複数のスロットの間のマッピングまたはバインディング、および、これらのスロットのためのコンテンツを生成するオブジェクト（たとえば、コントロール、ＸＳＬタグまたはビュー）を表現する。図１０の例では、ワイヤフレーム１００２が２つのスロット１００４（１）および１００４（２）を有し、それぞれ「slot_searchbox」および「slot_polead」という名前である。ビュー１０００は、スロット１００４（１）「slot_searchbox」を、その中にユーザがクエリを打ち込むことができるボックス１００６、および、ユーザがクリックしてクエリを検索エンジンに送信することができる「ｇｏ」ボタン１００８のためのＸＨＴＭＬコンテンツを生成するオブジェクトにバインドする。スロット１００４（２）（「slot_polead」）は、広告１０１０のためのＸＨＴＭＬコンテンツを生成するオブジェクトにバインドされる。
【００５８】
ＸＳＬタグ７００および８００、コントロール９００、およびビュー１０００を、ワイヤフレーム６００（図６）のスロットにバインドするビューを作成することができる。図１１は、このようなバインディングを示す。ＸＳＬタグ７００（「Big7」）がスロット６０２（１）（「slot_big7」）にバインドされる。ＸＳＬタグ８００（「Banner」）がスロット６０２（２）（「slot_banner」）にバインドされる。コントロール９００（「Control_Sharkfin」）がスロット６０２（３）（「slot_sharkfin」）にバインドされる。ビュー１０００（「View_QueryBox」）がスロット６０２（４）（「slot_querybox」）にバインドされる。このバインディングによって定義されたビュー１１００を、以下のデータ構造として表現することができる。
【００５９】
【表６】
2004259276.tif 000008
【００６０】
上記のデータ構造は、ビュー１１００に「view_header」という名前を与え、図１１に示すバインディングを作成する。上の例では、スロットにバインドされるオブジェクトの各タイプの前に、そのタイプについての指定が来る。たとえば「xsl;Banner」で「Banner」がＸＳＬタグであることを示し、同様に「ctl:Control_Sharkfin」および「view:View_Querybox」がコントロールおよびビューを示す。このタイプの指定を使用することは好ましく、これはコントロール、ＸＳＬタグおよびビューが異なるタイプの処理を必要とし、この指定によりビューレンダリングエンジン（図１３〜１４に関連して後述）が、どのタイプのオブジェクトを処理する必要があるかを容易に識別できるようになるからである。
【００６１】
上述のように、図６〜１１は、ビュー（ビュー１１００）がワイヤフレーム３００内のスロット３０４（１）（「slot_header」）にバインドされる一例を示す。（ワイヤフレーム３００のスロットを、これらのスロットを満たすコンテンツ生成オブジェクトにバインドするために、もう１つのビューが作成されなければならない。このビューには、スロット３０４（１）とビュー１１００の間のバインディングが含まれる。このようなビューの詳細は、これまでの考察から容易に理解することができる。）図１２は、このバインディングに基づいて作成することができる、結果として生じるコンテンツを示す。図１２はワイヤフレーム３００を、その４つのスロット３０４（１）、３０４（２）、３０４（３）および３０４（４）と共に示す。スロット３０４（１）（「slot_header」）がビュー１１００にバインドされるので、ワイヤフレーム６００（これにビュー１１００が基づく）は、スロット３０４（１）をオーバーレイするとして示される。ワイヤフレーム６００は、４つのスロット６０２（１）、６０２（２）、６０２（３）および６０２（４）を有する。これらの４つのスロットのうち、スロット６０２（４）がビュー１０００（図１０）にバインドされ、ビュー１０００はワイヤフレーム１００２に基づく。したがって、ワイヤフレーム１００２は図１２ではスロット６０２（４）をオーバーレイするとして示される。
【００６２】
図１２から理解できるように、この図に示すコンテンツは階層を形成しており、ワイヤフレーム１００２はワイヤフレーム６００のスロットの内部にあり、ワイヤフレーム６００はワイヤフレーム３００のスロットの内部にある。図１２のコンテンツを階層の最下部から上に解析すると、ビュー１０００が以下のコンテンツ、すなわち、ボックス１００６および「ｇｏ」ボタン１００８（ワイヤフレーム１００２のスロット１００４（１）内）、ならびに広告１０１０（スロット１００４（２）内）を生成することがわかる。このコンテンツはワイヤフレーム６００のスロット６０２（４）内に位置する。ワイヤフレーム６００は、コンテンツ項目７０２、８０２および９０２も含み、図７〜９で上述したように、ＸＳＬタグおよびコントロールから生成されたものである。したがって、ビュー１１００は、ワイヤフレーム６００のスロット内に含まれたコンテンツを生成する。ビュー１１００は、ワイヤフレーム３００のスロット３０４（１）にバインドされているので、ビュー１１００によって生成されたコンテンツがスロット３０４（１）内に配置される。図１２は、スロット３０４（２）〜（４）も示し、これらのスロットをコントロール、ＸＳＬタグおよびビューに、上述の方法でバインドするビューを指定することができる。図６〜１２の例は、各スロットが単一のコントロール、ＸＳＬタグまたはビューにバインドされることを示すが、上述のように、スロットを複数のコントロール、ＸＳＬタグまたはビューに（またはそれらの任意の組み合わせにも）バインドさせることができ、これらをすべて評価して所与のスロットを満たすことができる。
【００６３】
図１２では、破線を使用してワイヤフレームおよびそれらのスロットのアウトラインを示すが、これらのラインは実際には、ビューから構築されるコンテンツに含まれないことに留意されたい。これらのラインは単に図１２において、本発明によるコンテンツを構築することができる階層構造を明示するために示される。
【００６４】
コンテンツをビューから生成するためのアーキテクチャ
図１３は、本発明によるコンテンツを生成するために使用される様々なコンポーネントの概要を示す。
【００６５】
レンダリングエンジン１３０２は、ビュー１３０４を使用して、ブラウザ（図２のブラウザ２００など）上でレンダリングするために適するＸＨＴＭＬコンテンツを生成する、ソフトウェアコンポーネントである。レンダリングエンジンは、たとえば、検索エンジンサーバ上に存在することができ、これを使用して、ユーザクエリに応答して結果のページを動的に生成することができる。
【００６６】
上述のように、ビュー１３０４などのビューは、一方ではワイヤフレーム１３０６の複数のスロットの間のマッピングまたはバインディングを備え、他方ではコンテンツ生成オブジェクト１３０８を備える。また上述のように、コンテンツ生成オブジェクト１３０８は様々な形態を取ることができ、コントロール１３１０、ＸＳＬタグ１３１２およびビュー１３１４は、それにコンテンツ生成を基づかせることができるオブジェクトの例である。
【００６７】
コントロール１３１０は、上述のように、コンテンツを動的に生成する実行可能または解釈可能コードを備える。コントロール１３１０をプログラムとして実施することができるので、これらは、それらの入力に基づいて異なる振舞を提示することができる。構成ファイル１３１６は、コントロールのためのこの入力を提供する。たとえば、「shark fin」コントロール（図９の参照符号９００）を、様々な状況に応じて異なるバージョンのサメのひれのグラフィック（たとえば、より幅広いか、あるいはより狭いバージョン）を生成するように適合させることができる。たとえば、ｓｅａｒｃｈ．ｍｓｎ．ｃｏｍウェブサイトは、そのウェブサイトがナビゲーションバー２０２（図２）を通じて直接アクセスされているか、ビューイングエリア２０６を２つの狭いサブエリアに分割する検索補助機能を通じてアクセスされているかに応じて、幅広いかあるいは狭いバージョンのサメのひれを生成することができる。構成ファイル１３１６は、どのバージョンのサメのひれが生成されるかを指定するためにshark finコントロールによって使用されるパラメータを含むことができる。shark finコントロールが、構成ファイル内のパラメータに応答するように設計されている場合、異なるバージョンのサメのひれを、単一のコントロールおよび多数の構成ファイルにより作成することができ、どのバージョンのサメのひれのグラフィックが生成されるかに応じて、異なる構成ファイルをコントロールに提供することができる。加えて、構成情報をビュー内で、スロットのバインディングの一部として指定することができる。たとえば、以下のバインディングを使用して、「header」コントロールがデフォルトモードで使用されることを指定することができる。
【００６８】
【表７】
2004259276.tif 000009
【００６９】
また、以下の類似のバインディングを使用して、「header」コントロールが「searchpane」モードで使用されることを指定することができる。
【００７０】
【表８】
2004259276.tif 000010
【００７１】
異なるモードを指定するこの方法は、異なる構成ファイルを使用してコントロールについての異なるパラメータを指定することに類似の方法で動作する。
【００７２】
構成ファイルの使用のもう１つの例として、本明細書で説明するインフラストラクチャを検索エンジンによって使用して、クエリおよび結果ページを生成することができる。異なるユーザが検索の結果を異なるフォーマットで見ることを望む可能性があり、たとえば、あるユーザは検索結果のテキスト説明のみを受信することを望む可能性があり、他のユーザはテキスト説明と共にサムネイル画像を見ることを望む可能性がある。単一の「results」コントロールを書くことができ（たとえば、図３の「slot_results」スロット３０４（２）へのバインディングのため）、これは結果を様々なフォーマットで生成することができる。「results」コントロールによって生成された特定のフォーマットは、構成ファイル１３１６に含まれたパラメータによって決まる。結果が提示される実際のフォーマットを、単に構成ファイルを変更することによって変更することができる。一例では、いくつかの構成ファイル（それぞれが異なるパラメータを有する）を提供することができ、ユーザに結果の提示を変更する機会を与えることができる。たとえば、ユーザが、検索結果を含むページを受信するとき、ユーザはページ上のメニューを使用して、ユーザが結果を受信することを望む、異なる形態を選択することができる。次いで、ユーザの選択が検索エンジンサーバに、サーバが異なる構成ファイルを使用してページを再生成する要求と共に送信される。
【００７３】
構成ファイル１３１６を従来の「ファイル」（すなわち、ファイルシステムに格納された、名前付きオブジェクト）として実施することができるが、この実施形態に限定されないことに留意されたい。一般に「構成ファイル」は、どのようにこのデータが格納されるかにかかわらず、どこかに格納され、かつコントロールによってアクセスすることができるデータを表す。
【００７４】
コンテンツをビューに基づいて生成するプロセス
コンテンツをビューに基づいて生成するプロセスを、以下の擬似コードによって記述することができる。
【００７５】
【表９】
2004259276.tif 000011
【００７６】
上述の「RendererEval()」メソッドは、たとえば、レンダリングエンジン１３０２によって実行される。このメソッドは、ビューをパラメータとしてみなし、ビューのワイヤフレーム内のスロット中を進み、各スロットのための適切なＸＨＴＭＬコンテンツを、どのオブジェクトがそのスロットにバインドされるかに基づいて生成する。スロットがコントロールにバインドされる場合、そのコントロールが実行され、スロットが、そのコントロールによって生成されたＸＨＴＭＬコンテンツで満たされる。スロットがＸＳＬタグにバインドされる場合、ＸＳＬ処理ソフトウェアがそのタグに適用されて、適切なＸＨＴＭＬコンテンツが生成される。スロットがビューにバインドされる場合、そのビューが評価されてＸＨＴＭＬコンテンツが生成される。上記の擬似コードでは、「サブビュー」が、「RendererEval()」関数が現在評価中であるスロットにバインドされるビューである。上記の擬似コードを見るとわかるように、RendererEval()はそれ自体を再帰的に呼び出してこのサブビューを評価することができる。
【００７７】
図１４は、レンダリングエンジン１３０２によって実行されるプロセスの流れ図を示す。レンダリングエンジンはビューを得る（ブロック１４０２）。上記の擬似コードの例では、このステップは、ビューがレンダリングエンジンの最上位のメソッドにパラメータとして渡されるとき、実施される。次いで、レンダリングエンジンは最初のスロットバインディングを検査する（ブロック１４０４）。バインディングが空である場合（ブロック１４０５）、スロットに入れるべきコンテンツはなく、そのためレンダリングエンジンはブロック１４１４に進行して、さらにスロットがあるかどうかを判断する。
【００７８】
しかし、スロットがバインディングを有している場合、レンダリングエンジンは、スロットにバインドされたオブジェクトを評価するように進行し、スロットを、そのオブジェクトに基づいて適切なコンテンツで満たす。上述のように、バインディングは、スロットがコントロールにバインドされるか、ＸＳＬタグにバインドされるか、ビューにバインドされるかを指示することが好ましい。レンダリングエンジンは、どのタイプのオブジェクトがスロットにバインドされるかに基づいて分岐する（ブロック１４０６）。スロットがコントロールにバインドされる場合、このコントロールが実行されてＸＨＴＭＬコンテンツが生成され、ＸＨＴＭＬコンテンツがスロットに入れられる（ブロック１４０８）。スロットがＸＳＬタグにバインドされる場合、このＸＳＬタグが処理されてＸＨＴＭＬコンテンツが生成され、そのコンテンツがスロットに入れられる（ブロック１４１０）。スロットが別のビューにバインドされる場合、この他のビューが評価されてＸＨＴＭＬコンテンツが生成され、そのコンテンツがスロットに入れられる（ブロック１４１２）。上述のように、スロットバインディングにおいてビューに出会うとき、そのビューを評価するプロセスは本質的に、最上位ビューを評価するプロセスと同じであり、ブロック１４１２を実際には、図１４のプロセスを実施するメソッドへの再帰的呼び出しとして実施することができる。
【００７９】
現在のスロットが処理された後、レンダリングエンジンは、いずれかの追加のスロットが現在のビュー内にあるかどうかを判断する（ブロック１４１４）。このようなスロットがない場合、プロセスは終了する。追加のスロットがある場合、レンダリングエンジンは次のスロットに進行し（ブロック１４１６）、ブロック１４０５に戻って次のスロットを処理する。
【００８０】
前述の例は、説明のためにのみ提供されており、決して本発明の限定として解釈されるべきでないことに留意されたい。本発明を、様々な実施形態を参照して説明したが、本明細書で使用された言葉は、限定の言葉ではなく、説明および例示の言葉であることを理解されたい。さらに、本発明を本明細書で、特定の手段、材料および実施形態を参照して説明したが、本発明は、本明細書で開示された明細に限定されるように意図されず、むしろ本発明は、付属の特許請求の範囲内であるものなど、すべての機能的に等価な構造、方法および使用にまで及ぶ。本明細書の教示を利用できる当業者は、多数の修正をこれに実施することができ、その態様において本発明の範囲および精神から逸脱することなく、変更を行なうことができる。
【図面の簡単な説明】
【００８１】
【図１】本発明の態様を実施することができる例示的コンピューティング環境のブロック図である。
【図２】例示的ウェブブラウザのユーザインターフェイスのブロック図である。
【図３】第１の例示的ワイヤフレームのブロック図である。
【図４】第１の例示的コントロールのブロック図である。
【図５】コントロールを第１の例示的ワイヤフレームにバインドする、第１の例示的ビューのブロック図である。
【図６】第２の例示的ワイヤフレームのブロック図である。
【図７】例示的拡張可能スタイルシート言語（ＸＳＬ）タグのブロック図である。
【図８】例示的拡張可能スタイルシート言語（ＸＳＬ）タグのブロック図である。
【図９】第２の例示的コントロールのブロック図である。
【図１０】第２の例示的ビューのブロック図である。
【図１１】第３の例示的ビューのブロック図である。
【図１２】本発明の態様により生成された例示的コンテンツのブロック図である。
【図１３】本発明の態様によるコンテンツを生成するための例示的インフラストラクチャのブロック図である。
【図１４】本発明の態様によるコンテンツを生成するための例示的プロセスの流れ図である。
【符号の説明】
【００８２】
１３０２  レンダリングエンジン
１３０４  ビュー
１３０６  ワイヤフレーム
１３０８  コンテンツ生成オブジェクト
１３１０  コントロール
１３１２  ＸＳＬ
１３１４  ビュー
１３１６  構成ファイル
【図１】
2004259276.tif 000012
【図２】
2004259276.tif 000013
【図３】
2004259276.tif 000014
【図４】
2004259276.tif 000015
【図５】
2004259276.tif 000016
【図６】
2004259276.tif 000017
【図７】
2004259276.tif 000018
【図８】
2004259276.tif 000019
【図９】
2004259276.tif 000020
【図１０】
2004259276.tif 000021
【図１１】
2004259276.tif 000022
【図１２】
2004259276.tif 000023
【図１３】
2004259276.tif 000024
【図１４】
2004259276.tif 000025