Cosa è il codice XML e come si usa?

Codice XML, guida.

Il codice XML (eXtensible Markup Language) è un linguaggio di markup che serve a descrivere la struttura e il significato dei dati in modo standard e indipendente dalla piattaforma. Il codice XML si basa sull’uso di tag, ovvero etichette che racchiudono i dati tra parentesi angolari. I tag XML possono essere definiti dall’utente in base alle proprie esigenze e possono rappresentare qualsiasi tipo di informazione, come ad esempio dati di vendita, informazioni sugli animali domestici, documenti di testo, immagini e così via.

Il codice XML ha diversi vantaggi rispetto ad altri linguaggi di programmazione, come ad esempio:

  • È facile da leggere e scrivere sia per gli umani che per i computer.
  • È estendibile e personalizzabile, in quanto permette di creare nuovi tag e attributi senza limitazioni.
  • È interoperabile e portabile, in quanto può essere trasferito e processato da diversi sistemi e applicazioni senza perdere informazioni o qualità.
  • È valido e verificabile, in quanto può essere controllato da regole sintattiche e semantiche definite da schemi o grammatiche.

Per usare il codice XML è necessario seguire alcune regole di base, come ad esempio:

  • Ogni documento XML deve avere un tag radice che racchiude tutti gli altri tag.
  • Ogni tag aperto deve essere chiuso con un tag corrispondente o con una barra alla fine del tag stesso.
  • I tag devono essere annidati correttamente, ovvero non devono sovrapporsi o intersecarsi tra loro.
  • I nomi dei tag devono rispettare la distinzione tra maiuscole e minuscole e non devono contenere spazi o caratteri speciali.
  • I valori degli attributi devono essere racchiusi tra virgolette doppie o singole.
  • I commenti devono essere inseriti tra e non devono contenere il carattere — al loro interno.

Esempio di codice XML:

<?xml version="1.0" encoding="UTF-8"?>
<animali>
  <animale tipo="cane">
    <nome>Fido</nome>
    <razza>Labrador</razza>
    <colore>Marrone</colore>
  </animale>
  <animale tipo="gatto">
    <nome>Micio</nome>
    <razza>Siamese</razza>
    <colore>Grigio</colore>
  </animale>
</animali>

In questo esempio si può vedere come il codice XML descriva la struttura e il significato dei dati relativi agli animali domestici. Il tag radice è e contiene due tag figli , ognuno con un attributo tipo che specifica la specie dell’animale. Ogni tag contiene a sua volta tre tag figli , e , che indicano le caratteristiche dell’animale. Tutti i tag sono chiusi correttamente e annidati in modo coerente.

Il codice XML può essere usato per vari scopi, come ad esempio:

  • Creare documenti strutturati, come pagine web, libri, articoli, report e così via.
  • Scambiare dati tra sistemi diversi, come database, applicazioni web, servizi web e così via.
  • Rappresentare graficamente dati, come immagini vettoriali, diagrammi, mappe e così via.
  • Definire linguaggi specifici per domini particolari, come XHTML, RSS, Atom e così via.

Come creare una pagina web dinamica con codice XML e JavaScript

XML (eXtensible Markup Language) è un linguaggio di markup che consente di definire la struttura e i dati di un documento. JavaScript è un linguaggio di scripting che consente di aggiungere interattività e funzionalità a una pagina web. In questa sezione vedremo come utilizzare XML e JavaScript per creare una pagina web dinamica che mostri una lista di libri con i relativi dettagli.

Per realizzare il nostro esempio avremo bisogno di tre file: un file HTML che conterrà il codice della pagina web, un file XML che conterrà i dati dei libri e un file JavaScript che conterrà il codice per caricare e visualizzare i dati XML.

Creiamo il file index.html, o un nome a piacere, e inseriamo il seguente codice:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Esempio di pagina web dinamica con XML e JavaScript</title>
</head>

<body>
    <h1>Lista di libri</h1>
    <div id="container"></div>

    <script src="script.js"></script>
</body>

</html>

Come si può notare, il file HTML include il file JavaScript tramite il tag <script> e crea un elemento <div> con id = “container” dove verranno inseriti i dati XML.

Creiamo il file data.xml, o un nome a piacere, e inseriamo i libri:

<?xml version="1.0" encoding="UTF-8"?>
<libri>
  <libro>
    <titolo>Il principe e il povero</titolo>
    <autore>Mark Twain</autore>
    <genere>Romanzo</genere>
    <anno>1881</anno>
  </libro>
  <libro>
    <titolo>1984</titolo>
    <autore>George Orwell</autore>
    <genere>Dystopia</genere>
    <anno>1949</anno>
  </libro>
  <libro>
    <titolo>Il piccolo principe</titolo>
    <autore>Antoine de Saint-Exupéry</autore>
    <genere>Favola</genere>
    <anno>1943</anno>
  </libro>
</libri>

Come si può notare, il file XML contiene un elemento radice che racchiude tre elementi figli , ognuno dei quali contiene quattro elementi figli: , , e .

Il file JavaScript, che deve avere lo stesso nome indicato nel file HTML, avrà la seguente struttura:

// Creiamo una variabile per memorizzare il riferimento all'elemento container
var container = document.getElementById("container");

// Creiamo una funzione per caricare il file XML
function CaricaXML() {
    // Creiamo un oggetto XMLHttpRequest per effettuare una richiesta al server
    var richiesta_xml = new XMLHttpRequest();

    // Impostiamo il metodo, l'URL e il tipo di risposta della richiesta
    // Al posto di data.xml inserire il nome scelto se è stato cambiato
    richiesta_xml.open("GET", "data.xml", true);
    richiesta_xml.responseType = "document";

    // Aggiungiamo un gestore dell'evento load per eseguire una funzione quando la richiesta è completata
    richiesta_xml.onload = function () {
        // Verifichiamo se la richiesta ha avuto successo (codice di stato 200)
        if (richiesta_xml.status == 200) {
            // Otteniamo il documento XML dalla proprietà response dell'oggetto XMLHttpRequest
            var file_xml = richiesta_xml.response;

            // Otteniamo tutti gli elementi libro dal documento XML tramite il metodo getElementsByTagName
            var libri = file_xml.getElementsByTagName("libro");

            // Creiamo un elemento ul per contenere la lista dei libri
            var ul = document.createElement("ul");

            // Iteriamo sugli elementi libro
            for (var i = 0; i < libri.length; i++) {
                // Otteniamo l'elemento libro corrente
                var libro = libri[i];

                // Otteniamo i valori dei suoi elementi figli tramite il metodo getElementsByTagName e la proprietà textContent
                var titolo = libro.getElementsByTagName("titolo")[0].textContent;
                var autore = libro.getElementsByTagName("autore")[0].textContent;
                var genere = libro.getElementsByTagName("genere")[0].textContent;
                var anno = libro.getElementsByTagName("anno")[0].textContent;

                // Creiamo un elemento li per ogni libro e popoliamolo con i valori degli elementi figli
                var li = document.createElement("li");
                li.innerHTML = "<strong>" + titolo + "</strong> di " + autore + "<br>" + genere + " (" + anno + ")";

                // Aggiungiamo l'elemento li alla lista ul
                ul.appendChild(li);
            }
            // Aggiungiamo la lista ul al contenitore HTML
            container.appendChild(ul);
            
        }
    };
    // Inviamo la richiesta al server
    richiesta_xml.send();
}
// Chiamiamo la funzione loadXML() per visualizzare la lista di libri. 
//Possiamo inserire il seguente codice anche al terzo rigo perché richiama i processi scritti nella funzione.
CaricaXML();

Prova adesso a risolvere questo esercizio. Di seguito trovi la struttura di un file XML per i post di un blog:

  • Aggiungi tutti i post che vuoi, inserisci un titolo e un breve contenuto;
  • Crea un file HTML e aggiungi un contenitore dove verranno mostrati i post del blog;
  • Crea un file JavaScript e crea delle funzioni per visualizzare i post uno dopo l’altro come la home page di un blog;

Questo è soltanto un esempio per prendere dimestichezza con HTML, XML e JavaScript. Per gestire un blog vero e proprio si lavora con MySQL per inserire i post in un database e caricarli a seconda della richiesta dell’utente.