Personalizzando il tutorial seguente:
database.xml <?xml version="1.0"?>
<root>
<ricerca>
<titolo>pagina_1</titolo>
<descrizione>Sezione dedicata a pagina_1</descrizione>
<url>pagina_1.html</url>
</ricerca>
<ricerca>
<titolo>pagina_2</titolo>
<descrizione>Sezione dedicata a pagina_2</descrizione>
<url>pagina_2</url>
</ricerca>
<ricerca>
<titolo>pagina_3</titolo>
<descrizione>Sezione dedicata a pagina_3</descrizione>
<url>pagina_3.html</url>
</ricerca>
</root>
ricerca.html
<html>
<head>
<title>Ricerca con Explorer</title>
<script language="javascript" src="elabora.js"></script>
</head>
<body onLoad="document.modulo.cerca.focus()">
<xml id="id_database" src="database.xml"></xml>
<div>
<form name="modulo">
Cerca nel sito
<input type="text" name="cerca" />
<input type="button" value="Cerca" onClick="Ricerca()" />
</form>
</div>
<div id="risultati"></div>
</body>
</html>
elabora.js
function Ricerca()
{
// Localizziamo la casella di testo del modulo HTML
// di ricerca ed eseguiamo un controllo
// case-insensitive col metodo toUpperCase()
var stringa = document.modulo.cerca.value.toUpperCase();
// Creiamo un controllo per cui se la ricerca
// viene eseguita per nessun carattere
// verrà restituito all'utente un messaggio
// di avviso direttamente a video sulla pagina
if ((stringa == "") || (stringa == "undefined"))
{
risultati.innerHTML = "Inserire un termine per eseguire una ricerca";
return false;
}
// Ci posizioniamo ora sul primo record trovato sul file XML
id_database.recordset.moveFirst();
// In questa variabile (inizialmente vuota) costruiremo
// dinamicamente il testo opportunamente formattato
// dell'output della ricerca
var estrai = "";
// Eseguiamo un ciclo while() che sfoglia i record
// del file XML fino all'ultimo
while (!id_database.recordset.EOF)
{
var titolo = id_database.recordset("titolo").value.toUpperCase( );
if (titolo.indexOf(stringa) >= 0)
{
estrai += "<div><a href=" + id_database.recordset("url") + ">"
+ id_database.recordset("titolo")
+ "</a>
" + id_database.recordset("descrizione")
+ "</div>
";
}
// e ci riposizioniamo all'inizio del file
id_database.recordset.moveNext();
}
// Verifichiamo che ci siano record disponibili per la ricerca
// se non ce ne sono restituiamo all'utente un messaggio di avviso
if ((estrai == "") || (estrai == "undefined"))
{
risultati.innerHTML = "Nessun risultato per la ricerca";
return false;
}
else { // oppure i record trovati
risultati.innerHTML = estrai;
}
}
l'ho provato e richiama correttamente le parole cercate con il link.
Cliccando sul link del risultato, in off line, mi da segnale di errore e non si collega alla pagina voluta.
DOMANDA: Per testare correttamente su di un numero di pagine consistente, per eventuali correzioni e nuovi inserimenti di parole, devo lavorare fuori rete, e quindi i link dovrebbero funzionare anche in questa modalità.
C'è la possibilità di renderlo operativo anche off-line?
C'è qualcosa che mi sfugge?
...Non è che sia un "fulmine di guerra" in XML!