/ibm_opensearch/data/demos フォルダーには、OpenSearchStore の使用例がいくつかあります。 これらのデモでは OpenSearch 記述文書を参照します。現在のブラウザーではクロスドメイン要求を行うことができないため、 ローカル・プロキシーを介して要求を送信するには、記述文書を取り出して編集する必要があります。
この例は、OpenSearch エンドポイントがこのパッケージと同じサーバー上でホストされている場合と同様に構成されています。 したがって、プロキシーのセットアップに労力を費やす必要はありません。 必要なエレメントのみが含まれている、次のサンプル OpenSearch 記述文書を参照してください。
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> <ShortName>Sample Search Engine</ShortName> <Description>Searches each element at example.com</Description> <Url type="application/atom+xml" template="http://example.com/search/{searchTerms}" /> </OpenSearchDescription>
記述文書は、http://example.com/osd.xml などの URL でホストされています。 その MIME タイプは application/opensearchdescription+xml です。 次に、ページ「http://example.com/index.html」内のデータ・ストアを次のマークアップでインスタンス化できます。
<script src="dojo/dojo.js"></script> <script> dojo.require("ibm_opensearch.data.OpenSearchStore"); dojo.require("dojo.parser"); </script> <div dojoType="ibm_opensearch.data.OpenSearchStore" url="osd.xml" jsId="openSearchStore"> </div>
ページをロードし、構文解析すると、変数 openSearchStore を参照することによりストアが使用可能になります。 以下のキーワードに基づいて、ストアを使用して結果を取り出すことができます。
<table> <tbody id="searchResults"> </tbody> </table> <script> dojo.addOnLoad(function(){ function onComplete(items, request){ if(items.length > 0){ var tbody = dojo.byId("searchResults"); var test; var tr, td; for(var i=0; i<items.length; i++){ td = dojo.doc.createElement("td"); td.innerHTML = openSearchStore.getValue(items[i], "content"); tr = dojo.doc.createElement("tr"); tr.appendChild(td); tbody.appendChild(tr); } } } //What to do if a search fails function onError(error, request){ statusWidget.setValue("PROCESSING ERROR."); } var request = { query: {searchTerms: "atom"}, onComplete: onComplete, onError: onError }; openSearchStore.fetch(request); }); </script>
前述の例では、要求オブジェクトを形成し、searchTerms パラメーターを atom に設定しています。 これは、サーバーで検索するキーワードを示しています。 次に、ストア上に fetch(request) が呼び出されます。 これにより、onComplete 関数に結果が渡されます。 この関数は、結果ごとに繰り返され、OpenSearchStore 項目で使用できる唯一の属性である content 属性を取得し、 それをページに表示されているテーブル・セル内に入れます。
使用例についての詳細は、検索語を入力するテキスト・ボックスを含め、 デモ・ページに表示されます。