Cosa significa XML
XML sta per Extensible Markup Language (linguaggio di markup estensibile). È diventato una raccomandazione W3C nel 1998 e descrive i dati con tag a cui dai tu il nome – ecco cosa significa “estensibile”. A differenza dell'HTML, l'XML non ha tag predefiniti: un catalogo può usare <product> e <price>, una fattura <item> e <total>.
Un piccolo documento XML si presenta così: <book id="1"><title>XML Basics</title><year>2026</year></book>. L'XML è testo semplice, quindi le persone possono leggerlo e qualsiasi linguaggio di programmazione può elaborarlo. Si limita a memorizzare e strutturare i dati – da solo non fa nulla. Sono i programmi a decidere cosa significano i dati e come visualizzarli.
Regole di sintassi XML
Ogni documento XML deve rispettare alcune regole rigorose. Un documento che le rispetta si dice ben formato (well-formed):
- C'è esattamente un elemento radice che contiene tutti gli altri elementi.
- Ogni elemento è chiuso:
<name>…</name>, oppure autochiudente come<br/>. - Gli elementi sono annidati correttamente:
<b><i>…</i></b>, mai<b><i>…</b></i>. - I nomi distinguono tra maiuscole e minuscole:
<Item>e<item>sono elementi diversi. - I valori degli attributi sono sempre tra virgolette singole o doppie.
&e<nel testo vanno scritti con l'escape&e<.- La dichiarazione facoltativa
<?xml version="1.0" encoding="UTF-8"?>deve trovarsi proprio all'inizio del documento.
I commenti si scrivono come <!-- … -->. Un validatore XML controlla tutte queste regole in un secondo e indica la riga di ogni errore.
Elementi e attributi
Un elemento è composto da un tag di apertura, dal suo contenuto e da un tag di chiusura: <price>19.90</price>. Gli elementi possono contenere testo, altri elementi o entrambi. Un attributo è una coppia nome–valore all'interno del tag di apertura: <price currency="EUR">.
| Elemento | Attributo | |
|---|---|---|
| Esempio | <color>red</color> | color="red" |
| Può ripetersi | Sì | No, una sola volta per elemento |
| Può contenere elementi figli | Sì | No, solo testo |
| L'ordine conta | Sì | No |
Una convenzione diffusa: usa gli elementi per i dati veri e propri e per tutto ciò che può ripetersi o avere una struttura, e gli attributi per i metadati come ID, unità di misura o tipi.
XML ben formato vs. XML valido
Un XML ben formato rispetta le regole di sintassi; i parser rifiutano tutto il resto. Un XML valido è ben formato e inoltre è conforme a uno schema che definisce quali elementi e attributi sono ammessi, in quale ordine e con quali tipi di dati.
- DTD (Document Type Definition) è il linguaggio di schema originale, integrato in XML 1.0. Permette anche di dichiarare entità come
. - XSD (XML Schema Definition) è scritto a sua volta in XML e supporta tipi di dati come date e numeri decimali. I formati di fattura elettronica come CFDI, NF-e e UBL pubblicano schemi XSD.
Namespace XML
Poiché chiunque può inventare nomi di tag, due vocabolari possono usare lo stesso nome – il <title> di un libro e il <title> di una persona. I namespace li tengono separati associando i nomi a un URI. xmlns:cfdi="http://www.sat.gob.mx/cfd/4" dichiara il prefisso cfdi, quindi <cfdi:Comprobante> appartiene al vocabolario messicano CFDI 4.0. Un namespace predefinito, xmlns="…" senza prefisso, si applica a tutti gli elementi senza prefisso al suo interno. L'URI è solo un identificatore: da esso non viene scaricato nulla.
XML vs. JSON vs. HTML
| XML | JSON | HTML | |
|---|---|---|---|
| Scopo | Memorizzare e scambiare dati strutturati e documenti | Scambiare dati, soprattutto nelle API web | Visualizzare pagine web |
| Nomi di tag o chiavi | Definiti da te | Definiti da te | Fissati dallo standard HTML |
| Tipi di dati | Testo, a meno che uno schema non definisca i tipi | Stringa, numero, booleano, null, array, oggetto | Testo |
| Attributi | Sì | No | Sì |
| Commenti | Sì | No | Sì |
| Schemi | DTD, XSD | JSON Schema | – |
| Errori di sintassi | Rifiutati dai parser | Rifiutati dai parser | Corretti dai browser |
JSON è più compatto e corrisponde direttamente agli oggetti JavaScript: per questo la maggior parte delle API web è passata a JSON. L'XML resta forte dove i documenti mescolano testo e markup, richiedono namespace o devono essere validati rigorosamente rispetto a uno schema – per questo autorità fiscali, editori e formati per l'ufficio continuano a usarlo.
Cos'è un file .xml e come aprirlo?
Un file .xml è un file di testo semplice che contiene un documento XML, di solito codificato in UTF-8. Essendo testo, si può aprire con qualsiasi editor di testo – Blocco note su Windows, TextEdit su Mac o un editor di codice come VS Code. Chrome e Firefox mostrano i file XML come un albero quando li trascini nella finestra del browser, ed Excel può importare dati XML in un foglio di calcolo.
Molti file usano XML senza avere l'estensione .xml: immagini .svg, feed .rss, schemi .xsd, fogli di stile .xsl, file .config in .NET e file .plist su macOS, che possono essere salvati in XML. I file di Word, Excel e PowerPoint (.docx, .xlsx, .pptx) sono archivi ZIP pieni di file XML.
Dove si usa l'XML
- Sitemap:
sitemap.xmlindica ai motori di ricerca quali pagine contiene un sito web. - Feed RSS e Atom: siti di notizie, blog e podcast pubblicano i loro aggiornamenti in XML.
- SVG: la grafica vettoriale sul web è fatta di documenti XML.
- File di Office: Office Open XML (DOCX, XLSX, PPTX) e OpenDocument (ODT, ODS) sono pacchetti ZIP di file XML.
- Fatture elettroniche: CFDI in Messico e NF-e in Brasile sono file XML che devono essere firmati digitalmente e autorizzati prima di avere validità legale; UBL è il formato XML alla base della fatturazione elettronica Peppol in Europa e non solo.
- Servizi web SOAP: banche, fornitori di servizi di pagamento e sistemi della pubblica amministrazione si scambiano messaggi XML descritti da file WSDL.
- App Android: layout, risorse di stringhe e
AndroidManifest.xmlsono scritti in XML. - Configurazione: il
pom.xmldi Maven, ilweb.configdi .NET e molte altre impostazioni di build e dei server.
Domande frequenti
Cosa significa XML?
Extensible Markup Language, cioè linguaggio di markup estensibile. “Estensibile” significa che definisci tu i tuoi tag, mentre “markup” indica che la struttura è scritta sotto forma di tag attorno ai dati.
XML è un linguaggio di programmazione?
No. XML è un formato di dati: descrive e struttura le informazioni, ma non può eseguire calcoli. Tecnologie correlate come XPath e XSLT servono a interrogarlo e trasformarlo.
XML si usa ancora oggi?
Sì. JSON ha sostituito XML in molte API web, ma XML resta lo standard per sitemap, feed RSS, SVG, documenti Office, layout Android, servizi SOAP e fatturazione elettronica in molti paesi.
Ultimo aggiornamento: