Visualizzazione dei risultati da 1 a 2 su 2

Discussione: motore con xml

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    197

    motore con xml

    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!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    197
    SCUSATE!!!
    Stamattina devo aver dimenticato di prendere la "memoserina" e non ho messo gli "occhiali da vicino".
    Mi ero dimenticato di nominare le pagine con l'estensione html lasciando solo .htm

    Funziona Bene

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.