Quelques exemples de syntaxe de l'élément OpenSearchStore sont disponibles dans le dossier /ibm_opensearch/data/demos. Ces démonstrations illustrent les documents de description OpenSearch qui doivent être extraits et modifiés afin d'envoyer les demandes via un serveur proxy local, car il est impossible de transmettre des demandes entre les domaines des navigateurs actuels.
Cet exemple a été créé de manière à ce que le noeud final OpenSearch soit hébergé dans le même serveur que celui du package. Il n'est donc pas nécessaire d'installer un serveur proxy. Examinez l'exemple de document de description OpenSearch suivant. Cet exemple ne contient que les éléments requis :
<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>
Le document de description est hébergé à une adresse URL de type http://example.com/osd.xml, avec un type MIME application/opensearchdescription+xml. Un magasin de données de la page "http://example.com/index.html" peut désormais être créé avec le marquage suivant :
<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>
Lorsque la page a été chargée et analysée, vous pouvez accéder au magasin en indiquant la variable openSearchStore. Vous pouvez utiliser le magasin pour extraire les résultats en fonction des mots clés :
<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>
L'exemple précédent représente un objet de demande, avec le paramètre searchTerms défini sur Atom, qui désigne le mot de passe à rechercher sur le serveur. Ensuite, l'extraction (demande fetch) est effectuée sur le magasin qui transmet les résultats vers la fonction onComplete. Cette fonction répète les mêmes actions sur chaque résultat, récupère l'attribut content (seul attribut disponible dans un élément OpenSearchStore) et l'insère dans la cellule d'un tableau affiché sur la page.
Des exemples plus détaillés, dont l'utilisation d'une zone de texte pour la saisie des termes de recherche, sont présentés dans les pages de démonstration.