XML: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
 
(573 versioni intermedie di oltre 100 utenti non mostrate)
Riga 1:
{{Nota disambigua}}
''Qui di seguito si trova la traduzione di un articolo in inglese edito dal W3C. Il documento originale (rivisto il [[13 Novembre]] [[2001]]) è disponibile [http://www.w3.org/XML/1999/XML-in-10-points qui].''
{{Formato file
----
| nome = XML
== <center>L'XML in dieci punti</center> ==
| logo =
XML, [[XLink]], [[Namespace]], [[DTD]], [[Schema]], [[CSS]], [[XHTML]] ... Se non conosci l'XML, può essere difficile capire da dove cominciare. Questo elenco in 10 punti cerca di catturare sufficienti concetti base per far vedere al neofita la foresta in mezzo agli alberi. E se stai preparando una presentazione sull'XML, perché non iniziare con questi 10 punti?
| immagine = XML.svg
| didascalia =
| estensione = .xml
| mime = application/xml<br />text/xml
| sviluppatore = [[World Wide Web Consortium|W3C]]
| proprietario =[[World Wide Web Consortium]]
| data_pubblicazione=10 febbraio 1998
| ultima_versione =1.1 (2ª ed.)
| data_ultima_versione =29 settembre 2006
| genere = [[Linguaggio di markup]]
| estensione_di = [[Standard Generalized Markup Language|SGML]]
| esteso_a = [[XHTML]], [[Really simple syndication|RSS]], [[Atom]], [[Keyhole Markup Language|KML]] e altri
| standard =[http://www.w3.org/TR/2008/REC-xml-20081126/ 1.0, 5ª ed.] (26 novembre 2008)<br/>[http://www.w3.org/TR/2006/REC-xml11-20060816/ 1.1, 2ª ed.] (16 agosto 2006)
| aperto = Sì
|magic_number=<?xml|uniform_type_identifier=public.xml}}
In [[informatica]], l{{'}}'''XML''' (sigla di '''''eXtensible Markup Language''''', {{Lett|linguaggio di marcatura estendibile}}) è un [[metalinguaggio]] per la definizione di [[linguaggi di markup]], ovvero un linguaggio basato su un meccanismo sintattico che consente di definire e controllare il significato degli elementi contenuti in un documento o in un testo.
 
Il nome indica che si tratta di un linguaggio estendibile, in quanto permette di creare [[Elemento HTML|tag]] personalizzati e costituisce il tentativo di produrre una versione semplificata dello [[Standard Generalized Markup Language]] (SGML), che consente di definire nuovi linguaggi di markup.
=== 1. XML serve a strutturare i dati ===
I dati strutturati includono cose come i fogli di calcolo, le rubriche, i parametri di configurazione, le transazioni finanziarie, e i disegni tecnici. XML è un insieme di regole (puoi anche pensare che siano delle linee guida o delle convenzioni) per formulare dei file in formato testo che ti permettano di strutturare i tuoi dati. XML non è un linguaggio di programmazione, e non devi essere un programmatore per usarlo od impararlo. XML rende facile la generazione di dati tramite un computer, la lettura dei dati e il controllo sulla struttura in modo che non sia ambigua. XML evita le pecche comuni dei linguaggi: è estensibile, indipendente dalla piattaforma e supporta i parametri internazionali e locali. Inoltre pienamente compatibile con [[Unicode]].
 
== Storia ==
=== 2. XML assomiglia un po' ad HTML ===
{{chiarire|Il [[World Wide Web Consortium]] (W3C), in seguito alla [[guerra dei browser]] (ovvero la situazione verificatasi negli [[anni 1990|anni novanta]] nella quale [[Microsoft]] e [[Netscape]] introducevano, con ogni nuova versione del proprio [[browser]], un'estensione proprietaria all'[[HTML]] ufficiale), fu costretto a seguire le individuali estensioni al linguaggio HTML.|il nesso è poco chiaro}}
Come [[HTML]], XML fa uso di tag (parole racchiuse tra le parentesi angolari ''<'' e ''>'') e attributi (della forma <tt>name="value"</tt>). Mentre HTML specifica come il testo e le altre componenti di layout appariranno in un browser, XML usa i tag solo per delimitare pezzi di dati, lasciandone completamente l'interpretazione all'applicazione che li legge. In altre parole, se si vede <tt><</tt><tt>p></tt> in un file XML, non si è sicuri che esso sia un paragrafo. A seconda del contesto, potrebbe essere un prezzo, un parametro, una persona, una p... (e chi l'ha detto che dev'essere una parola con la "p"?).
 
Il W3C dovette scegliere quali caratteristiche standardizzare e quali lasciare fuori dalle specifiche ufficiali dell'HTML. Fu in questo contesto che iniziò a delinearsi la necessità di un linguaggio di [[markup]] che desse maggiore libertà nella definizione dei tag, pur rimanendo in uno standard.
=== 3. L'XML è testo, ma non da leggere ===
I programmi che producono fogli di calcolo, rubriche e altri dati strutturati, spesso salvano i dati sul disco, usando sia il formato binario che quello testuale. Uno dei vantaggi del formato testo è che permette, se necessario, di dare un occhiata ai dati pur non disponendo del programma che li ha prodotti; all'occorrenza, si può leggere un file con il proprio editor di testi preferito. Inoltre i formati testo permettono agli sviluppatori un [[debug]] più semplice delle applicazioni. Come l'HTML, i file XML sono file di testo che non è necessario leggere, tranne quando non ne sorga il bisogno. Confrontate con l'HTML, le regole per i file XML permettono pochissime variazioni. Un tag dimenticato, o un attributo senza virgole rendono il file XML inutilizzabile, mentre in HTML tali pratiche sono spesso esplicitamente permesse. Le specifiche ufficiali dell'XML proibiscono alle applicazioni di tentare di indovinare cosa intendesse il creatore di un file non utilizzabile; se il file non è corretto, una applicazione deve fermarsi e segnalare l'errore.
 
Il "progetto XML", che ebbe inizio alla fine degli anni novanta nell'ambito della [[SGML Activity]] del W3C, suscitò un così forte interesse che il W3C creò un gruppo di lavoro, chiamato [[XML Working Group]], composto da esperti mondiali delle tecnologie [[SGML]], ed una commissione, [[XML Editorial Review Board]], deputata alla redazione delle specifiche del progetto.
=== 4. XML è prolisso per design ===
Poiché XML è un formato di testo e usa i tag per delimitare i dati, i file XML sono praticamente sempre più grandi degli analoghi file in binario. Questa è stata una decisione presa coscientemente dagli sviluppatori dell'XML. I vantaggi del formato testo sono evidenti (vedi il punto precedente), e gli svantaggi possono solitamente essere compensati a livelli diversi. Lo spazio su disco diventa sempre meno costoso ei programmi di compressione come zip e gzip sono in grado di zippare i file molto bene e molto in fretta. In oltre, i protocolli di comunicazione come i protocolli per modem e l'HTTPv.1.1, il protocollo "cuore" del Web, possono comprimere i dati al volo, risparmiando banda esattamente come per i file binari.
 
Nel febbraio del [[1998]] le specifiche divennero una raccomandazione ufficiale con il nome di ''Extensible Mark-up Language'', versione 1.0. Ben presto ci si accorse che XML non era limitato al solo contesto [[web]] ma era qualcosa di più: uno strumento che permetteva di essere utilizzato nei più diversi contesti, dalla definizione della struttura di [[documenti]], allo scambio delle informazioni tra [[sistemi]] diversi, dalla rappresentazione di immagini alla definizione di formati di [[dati]].
=== 5. XML è una famiglia di tecnologie ===
XML 1.0 è la specifica che definisce cosa sono i "tag" e gli "attributi". Oltre ad XML 1.0, "la famiglia XML " è un insieme in crescita costante di moduli che offrono servizi utili per compiere le mansioni importanti e frequentemente richieste. XLink descrive una modalità standard per aggiungere collegamenti ipertestuali ad un file XML. XPointer è una sintassi in sviluppo per puntare a parti di un documento XML. Un XPointer è un po' simile a un URL, ma invece di puntare a un documento sul web, punta a pezzi di dati all'interno di un file XML. Il CSS, il linguaggio dei fogli di stile, è applicabile all'XML così come all'HTML. XSL è il linguaggio avanzato per scrivere i fogli di stile. È basato su XSLT, un linguaggio di trasformazione usato per riarrangiare, aggiungere e cancellare tag e attributi. Il DOM è un insieme standard di funzioni chiamato per manipolare i file XML (e HTML) da un linguaggio di programmazione. XML Schemas 1 e 2 aiutano gli sviluppatori a definire precisamente le strutture basate sui loro propri formati XML. Ci sono ancora un'infinità di moduli e strumenti disponibili o in fase di sviluppo. Date un occhio alla [http://www.w3.org/TR/ W3C's technical reports page].
 
== Utilizzi ==
=== 6. XML è nuovo, ma non così nuovo ===
Rispetto all'[[HTML]], l'XML ha uno scopo ben diverso: mentre il primo definisce una grammatica per la descrizione e la formattazione di [[pagina web|pagine web]] (layout) e, in generale, di [[ipertesto|ipertesti]], il secondo è un [[metalinguaggio]] utilizzato per creare nuovi linguaggi, atti a descrivere documenti strutturati. Mentre l'[[HTML]] ha un insieme ben definito e ristretto di tag, con l'XML è invece possibile definirne di propri a seconda delle esigenze.
Lo sviluppo dell'XML è iniziato nel [[1996]] ed è una W3C Recommendation dal [[febbraio]] [[1998]], la qual cosa può far sospettare che sia una tecnologia piuttosto immatura. Infatti, la tecnologia non è molto nuova. Prima di XML c'era SGML, sviluppato nei primi [[Anni 1980|anni 80]], standard ISO dal [[1986]], e ampiamente usato per progetti di documentazione. Lo sviluppo dell'HTML è iniziato nel [[1990]]. Gli sviluppatori dell'XML semplicemente presero le parti migliori dell'SGML, guidati dall'esperienza fatta con l'HTML, e produssero qualcosa che non è meno potente dell'SGML, ma molto più regolare e facile da usare. Alcune evoluzioni, tuttavia, sono difficili da distinguire dalle rivoluzioni... E bisogna dire che mentre SGML è soprattutto usato per la documentazione tecnica e meno per gli altri tipi di dati, con XML è esattamente l'opposto.
 
L'XML è oggi molto utilizzato anche come mezzo per l'esportazione di dati tra diversi [[DBMS]]. Diffuso è l'uso nei file di [[configurazione (informatica)|configurazione]] di [[applicazione (informatica)|applicazioni]] e [[sistemi operativi]].
=== 7. XML porta dall'HTML all'XHTML ===
Esiste un'importante applicazione dell'XML che è un formato di documento: l'XHTML del W3C, il successore dell'HTML. XHTML ha molti elementi analoghi all'HTML. La sintassi è stata leggermente cambiata per conformarsi alle regole dell'XML. Un formato che sia basato su XML eredita la sintassi dall'XML e in un certo modo la ''restringe'' (ad es., XHTML permette <tt><</tt><tt>p></tt>, ma non <tt><</tt><tt>r></tt>); inoltre aggiunge significato alla sintassi (l'XHTML dice che <tt><</tt><tt>p></tt> sta per "paragrafo", e non per "prezzo", "persona", o altro).
 
== Sintassi ==
=== 8. XML è modulare ===
Ecco un esempio tipico di file XML, visualizzabile all'interno di un browser qualsiasi semplicemente salvando il testo in un file con [[Estensione (file)|estensione]] ''.xml''.
XML permette di definire un nuovo formato di documento combinando o riutilizzando altri formati. Poiché due formati sviluppati indipendentemente possono avere elementi o attributi con lo stesso nome, occorre prestare attenzione quando si combinano quei formati (<tt><</tt><tt>p></tt> significa "paragrafo" secondo questo formato o "persona" come nell'altro?). Per eliminare la confusione sui nomi durante l'unione dei formati, XML fornisce un meccanismo di namespace. XSL e RDF sono buoni esempi di formati basati su XML che usano i namespace. XML Schema è studiato per rispecchiare questo supporto per la modularità al livello di definizione delle strutture del documenti, rendendo facile combinare due schemi per produrne un terzo che comprenda una struttura di documento unione delle due.
 
<syntaxhighlight lang="xml">
=== 9. XML è la base per RDF e il Web Semantico ===
<?xml version="1.0" encoding="UTF-8"?>
Il Resource Description Framework (RDF) del W3C è un XML formato testo che supporta la descizione di risorse e applicazioni metadata, come liste musicali, album di foto, e bibliografie. Ad esempio, RDF potrebbe permettere di identificare una persona su un album fotografico su Web usando delle informazioni prese dalla lista personale di contatti; poi il client di posta potrebbe automaticamente inviare un messaggio a queste persone dicendo che le loro foto sono sul Web. Come HTML ha integrato documenti, immagini, sistemi a menu, e form per lanciare il Web ''originale'', RDF fornisce strumenti per integrare anche di più, per avvicinare il Web ancora un po' al Web Semantico. Esattamente come le persone devono accordarsi sul significato delle parole che impiegano nelle loro comunicazioni, i computer necessitano di meccanismi per accordarsi sul significato dei termini in modo da comunicare effettivamente. Le descrizioni formali dei termini in certe aree (acquisti o settore manufatturiero, ad esempio) sono dette ontologie e sono una parte necessaria del Web Semantico. RDF, ontologie, e la rappresentazione del significato in modo che possano aiutare le persone a fare dei lavori, sono tutti argomenti della [http://www.w3.org/2001/sw/ Semantic Web Activity].
<utenti>
<utente anni="20">
<nome>Ema</nome>
<cognome>Princi</cognome>
<indirizzo>Torino</indirizzo>
</utente>
<utente anni="54">
<nome>Max</nome>
<cognome>Rossi</cognome>
<indirizzo>Roma</indirizzo>
</utente>
</utenti>
</syntaxhighlight>
 
La prima riga indica la versione di XML in uso e specifica la codifica [[UTF-8]] per la corretta interpretazione dei dati.
=== 10. XML è gratis, indipendente dalla piattaforma e ben supportato ===
Scegliendo XML come base per un processo, si guadagna l'accesso ad un'ampia comunità in espansione di strumenti (uno dei quali potrebbe già fare quello che desideri!) e ingegneri con esperienza nella tecnologia. Optare per l'XML è un po' come scegliere [[SQL]] per le basi di dati: devi ancora costruire il tuo database, i tuoi programmi e le procedure che lo manipolano, ma ci sono molti strumenti disponibili e molte persone che ti possono aiutare. E poiché XML è gratis, puoi costruirci il tuo [[software]] senza pagare niente a nessuno. Il grande e crescente supporto significa che non sei vincolato ad un unico venditore. XML non è sempre la miglior soluzione, ma vale sempre la pena di prenderlo in considerazione.
 
I caratteri speciali che renderebbero il documento mal formato vanno sostituiti con le rispettive entità XML:
==Collegamenti esterni ==
{| class="wikitable" border="1"
*[http://www1.isti.cnr.it/~Martinelli/XML/doc/Nota_XML.html XML: un linguaggio estensibile per il World Wide Web]
|-
! Carattere
! Entità
|-
| align=center | &
| <code>&amp;amp;</code>
|-
| align=center | <
| <code>&amp;lt;</code>
|-
| align=center | >
| <code>&amp;gt;</code>
|-
| align=center | "
| <code>&amp;quot;</code>
|-
| align=center | '
| <code>&amp;apos;</code>
|}
 
Va fatto presente che {{chiarire|solo le prime tre|o solo le prime 2?}} entità sono sempre da rispettare, mentre l'ultima <code>&amp;apos;</code> in alcuni casi non è gestita (come nell'iPhone iOS 3.1.3 e successive).
[[Categoria:Linguaggi di markup]]
 
=== I tag o etichette ===
[[af:XML]]
L'XML, come l'[[HTML]], utilizza dei marcatori, chiamati ''tag'' (etichette), per assegnare una semantica al testo. I tag possono contenere informazioni in due modi: attraverso dei parametri oppure racchiudendo del testo o altri tipi di informazioni. Segue che possono essere tag di apertura, necessariamente seguiti da tag di chiusura (tra i quali si può avere un contenuto) oppure tag che si aprono e chiudono, e possono quindi fornire informazioni solo attraverso i loro parametri.
[[ca:XML]]
 
[[cs:XML]]
Ogni etichetta inizia e finisce con delle [[parentesi angolari]] ({{code|<>}}) (che in altri contesti sarebbero i segni di minore e maggiore), mentre la chiusura del tag o il tag di chiusura è rappresentato dalla barra ({{code|/}}). Ecco degli esempi di tag:
[[da:Extensible Markup Language]]
<syntaxhighlight lang="xml">
[[de:Extensible Markup Language]]
<tagEsempio parametro1="etichetta di apertura" caratteristiche="solo l'etichetta di apertura ha dei parametri">
[[en:XML]]
contenuto
[[eo:XML]]
</tagEsempio>
[[es:XML]]
<tagAutochiudente parametro1="etichetta autochiudente" caratteristiche="non ha etichetta di chiusura" />
[[fi:XML]]
</syntaxhighlight>
[[fr:Extensible Markup Language]]
XML consente dei commenti racchiusi da <code><nowiki><!-- --></nowiki></code> Ad esempio:
[[he:XML]]
<syntaxhighlight lang="xml"><!-- Questo è un commento --></syntaxhighlight>
[[hu:XML]]
XML è molto rigido sulla sintassi da seguire rispetto all'[[HTML]] ed è pertanto necessario rispettare alcune regole:
[[ia:XML]]
# i tag non possono iniziare con numeri o caratteri speciali e non possono contenere spazi;
[[ja:Extensible Markup Language]]
# i tag devono essere bilanciati, ovvero non sono consentiti errori di annidamento, ad esempio:
[[ko:XML]]
 
[[lv:Valoda XML]]
<syntaxhighlight lang="xml">
[[nl:Extensible Markup Language]]
<rubrica>
[[no:XML]]
<nome>Mario</nome>
[[pl:XML]]
<cognome>Rossi
[[pt:XML]]
</rubrica>
[[ru:XML]]
</syntaxhighlight>
[[sl:XML]]
 
[[sr:XML]]
Il tag <code>cognome</code> non è stato chiuso, l'XML risulta quindi mal formato.
[[sv:XML]]
 
[[zh:XML]]
<syntaxhighlight lang="xml">
<rubrica>
<nome>Mario</nome>
<cognome>Rossi
</rubrica></cognome>
</syntaxhighlight>
 
Il tag <code>cognome</code> è stato chiuso dopo il tag <code>rubrica</code>, anche in questo caso l'XML non è ben formato.
 
<syntaxhighlight lang="xml">
<rubrica>
<nome>Mario</nome>
<cognome>Rossi</COGNOME>
</rubrica>
</syntaxhighlight>
 
XML è [[case sensitive]] quindi il tag <code>cognome</code> e il tag <code>COGNOME</code> sono considerati come due tag diversi; l'XML ancora una volta non è ben formato.
 
È possibile anche definire tag vuoti che vengono aperti e immediatamente chiusi:
 
<syntaxhighlight lang="xml">
<rubrica></rubrica>
</syntaxhighlight>
 
Oppure in maniera abbreviata:
 
<syntaxhighlight lang="xml">
<rubrica />
</syntaxhighlight>
 
Per poter essere correttamente interpretato, un documento XML deve essere formattato correttamente, deve cioè possedere le seguenti caratteristiche:
* Un ''prologo'', che è la prima istruzione che appare scritta nel documento. Nel nostro caso: <code><nowiki><?xml version="1.0" encoding="UTF-8"?></nowiki></code>.
* Un unico ''elemento radice'' (ovvero il nodo principale, chiamato ''root element'') che contiene tutti gli altri nodi del documento. Nel nostro esempio: <code><nowiki><utenti></nowiki></code>.
* All'interno del documento tutti i ''tag'' devono essere bilanciati.
 
Se il documento XML non contiene errori si dice ''well-formed'' ("ben formato"). Se il documento è ''well formed'' e in più rispetta i requisiti strutturali definiti nel file [[Document Type Definition|DTD]] o schema XML associato viene chiamato ''valid'' ("valido").
 
== Vantaggi di XML ==
I vantaggi dell’XML vengono solitamente riepilogati con l'acronimo SPEED, inteso anche con il significato della parola in [[lingua inglese]] (ovvero "velocità"). La velocità è innanzitutto la ragione principale che spinge molte aziende a passare al commercio elettronico: risposta più rapida alle esigenze dei clienti, pubblicazione più rapida di informazioni dirette ai clienti e ai partner della catena di approvvigionamento; elaborazione più rapida di ordini ricevuti via Internet. L'acronimo deriva da ''Storing, Publishing and Exchanging Electronic Documents'' ("memorizzazione, pubblicazione e scambio di documenti elettronici").
 
In XML le informazioni specifiche di un’applicazione sono contenute all’interno di "tag", marcati da parentesi {{code|< >}}, che descrivono il contenuto di un documento. Ogni tag definisce un tipo di elemento e, delimitando con tag ogni singolo dato, siamo in grado di comprenderne la struttura anche se non conosciamo l’applicazione che l’ha generata. Essendo poi i dati autodescrittivi, anche i partner saranno in grado di comprenderli ed elaborarli. Inoltre essi possono essere gestiti anche in futuro quando le applicazioni che li hanno generati saranno diventate obsolete.
 
L’estensibilità è un'altra caratteristica vincente di XML, in quanto è possibile per i programmatori riutilizzare i documenti XML esistenti semplicemente estendendoli con nuovi tag, lasciando che gli elementi chiave del documento originale rimangano comprensibili da tutti gli utilizzatori.
 
XML ha risposto al proverbiale motto americano: "adopt and adapt", ovvero, adotta uno standard vincente e affidabile e adattalo alle tue esigenze.
 
Un altro vantaggio non indifferente di XML è la possibilità di validarli mediante l'uso di [[XML Schema]] (XSD)<ref>{{Cita web|url=https://www.html.it/articoli/xml-schema-e-documenti-xml/|titolo=XML Schema e Documenti XML|autore=Andrea Chiarelli|sito=HTML.it|lingua=it-IT|accesso=2020-10-16}}</ref>.
 
Questa possibilità non è presente in tutti gli altri formati interscambiabili.
 
Per sintetizzare i vantaggi di XML, quindi, si può dire che XML richiede:
 
* meno sforzi di manutenzione;
* migliore riutilizzo;
* maggiore capacità di mirare a dispositivi multipli;
* possibilità di ridurre le risorse dedicate alla implementazione di progetti.
 
== Tecnologie di supporto a XML ==
Linguaggi schema (permettono di creare nuovi linguaggi XML):
* DTD (acronimo di ''[[Document Type Definition]]''): è un documento attraverso cui si specificano le caratteristiche strutturali di un documento XML attraverso una serie di "regole grammaticali". In particolare definisce l'insieme degli elementi del documento XML, le relazioni gerarchiche tra gli elementi, l'ordine di apparizione nel documento XML e quali elementi e quali attributi sono opzionali o meno.
* [[XML Schema]]: come la DTD, serve a definire la struttura di un documento XML. Oggi il [[W3C]] consiglia di adottarlo al posto della DTD stessa, essendo una tecnica più recente ed avanzata. La sua sigla è XSD, acronimo di ''XML Schema Definition''.
Altre tecnologie legate a XML:
* [[XLink]]: serve a collegare in modo completo due documenti XML; al contrario dei classici collegamenti ipertestuali che conosciamo in [[HTML]], [[XLink]] permette di creare link multidirezionali e semanticamente avanzati.
* [[Extensible Stylesheet Language|XSL]] (acronimo di ''eXtensible Stylesheet Language''): è il linguaggio con cui si descrive il [[foglio di stile]] di un documento XML. La sua versione estesa è l'[[XSLT]] (dove la T sta per ''Transformations'').
* [[XPath]]: è un linguaggio con cui è possibile individuare porzioni di un documento XML e sta alla base di altri strumenti per l'XML come XQuery.<br />A supporto di questo scopo principale, fornisce anche elementari funzionalità per trattare stringhe, numeri e dati booleani. Il suo funzionamento si basa sulla creazione di un albero a partire dal documento e la sintassi succinta permette di indirizzare una specifica parte attraverso i nodi dell'albero con la semplice parola ''path''.
* [[XPointer]]: serve ad identificare univocamente precise porzioni di un documento XML; consente poi il loro accesso ad altri linguaggi o oggetti di interfaccia.
* [[XQuery]]: è un linguaggio di query concepito per essere applicabile a qualsiasi sorta di documento XML e si basa sull'utilizzo di XPath per la specificazione di percorsi all'interno di documenti. XQuery ha funzionalità che consentono di poter attingere da fonti di dati multiple per la ricerca, per filtrare i documenti o riunire i contenuti di interesse.
* [[Simple API for XML|SAX]] (Simple [[Application programming interface|API]] for XML): è un'interfaccia di programmazione, implementata in numerosi linguaggi, che permette di leggere e modificare i documenti XML. Attraverso SAX è possibile implementare dei [[parser]] XML specifici. SAX è event based, al contrario di [[Document Object Model|DOM]], e reagisce agli eventi di parsing facendo rapporto all'applicazione. È compito del programmatore implementare i metodi per reagire agli eventi di parsing.
* [[Document Object Model|DOM]]: è un'interfaccia di programmazione, come SAX, implementata in una moltitudine di [[linguaggi di programmazione]], per la manipolazione di file XML. DOM costruisce partendo dal file XML un albero dove ogni nodo dell'albero corrisponde ad un elemento del file; per questo motivo è detta tree based.
* [[VTD-XML]]: DOM è più facile ed immediata da utilizzare rispetto a SAX ed è pertanto preferita solitamente dai programmatori per manipolare un file XML; tuttavia l'albero generato da DOM va mantenuto completamente nella memoria RAM e di conseguenza non è possibile utilizzare questa interfaccia per manipolare file che siano più grandi della memoria disponibile sul computer.
* [[RSS]]: è uno standard che serve a creare un documento con una struttura di tipo XML univoca, atta allo sviluppo di un semplice scambio dati tra pagine Web ed accessibile da qualsiasi [[linguaggio di scripting]]. In sostanza si tratta di un documento XML la cui struttura dei nodi ed i relativi tag hanno lo stesso nome.
* SVG ([[Scalable Vector Graphics]]) e VML ([[Vector Markup Language]]) sono standard per la creazione di immagini vettoriali che sfrutta dei documenti formattati in XML. Serve inoltre a descrivere immagini bidimensionali, statiche e dinamiche. Leggendo le istruzioni contenute nel documento sorgente XML, l'interprete disegna le figure-base fino al completamento dell'immagine.
* [[WDDX]] (Word Data Description Exchange): WDDX è una struttura per contenimento di dati con la stessa struttura di un database, creato dalla [[Allaire]] oggi [[Macromedia]] e pubblicato Open presso la [http://www.wddx.org WDDX Organization] {{Webarchive|url=https://web.archive.org/web/20011130043026/http://wddx.org/ |date=30 novembre 2001 }}
 
== Linguaggi XML più diffusi ==
* [[XForms]]: come il suo nome lascia intendere, è un linguaggio nato per creare moduli (forms) di tipo [[HTML]] all'interno di un documento XML.
* SMIL ([[Synchronized Multimedia Integration Language]]): questo linguaggio definito in XML, viene utilizzato per descrivere il contenuto e gestire la tempistica di presentazioni multimediali che possono combinare insieme video, audio, immagini e testo.
* [[MathML]] (Mathematical Markup Language): MathML è usato per la descrizione di notazioni matematiche, procedendo a fissarne contemporaneamente struttura e contenuti, così da poter essere riportate e processate sul Web.
* [[X3D]] (eXtensible 3D): X3D è un linguaggio che permette di costruire modelli tridimensionali, siano essi semplici o sofisticati. Agli oggetti così creati possono applicarsi animazioni e meccanismi di interazione con l'utente. Come linguaggio, è costruito sul Virtual Reality Modeling Language ([[VRML]]), a sua volta assunto a standard internazionale nel 1997. A quest'ultimo, l'X3D acclude le capacità, tipiche dell'Extensible Markup Language (XML), di integrazione con le altre tecnologie del World Wide Web, di validazione dei contenuti e dell'aggiunta flessibile di nuove estensioni hardware qualora ve ne fosse necessità. In più, bisogna citare i vantaggi riguardanti la leggerezza del "profilo base" (Core Profile - Esistono sette profili, ognuno dei quali raggruppa un certo insieme di funzionalità comunemente utilizzate per differenti scopi. Questo permette agli sviluppatori di browser di raggiungere livelli intermedi di supporto dell'X3D, senza dover per forza implementare in una volta sola l'intera specifica) e dei browser componentizzati per un download più rapido.
* [[XBRL]] (eXtensible Business Reporting Language): è un linguaggio usato per la comunicazione e lo scambio di dati finanziari e contabili in formato elettronico
 
=== XML e le pagine web: XHTML ===
XHTML è un linguaggio di markup atto a visualizzare pagine Web tramite browser, come l'HTML, e, essendo XML, ne rispetta la semantica. Ad esempio in XHTML, al contrario che in HTML tradizionale, i tag vuoti vanno chiusi con uno slash (/) finale, gli attributi vuoti devono essere valorizzati con ''true'' o ''false'', la chiusura dei tag dev'essere ''a specchio'' (se viene aperto un Tag e prima di chiuderlo ne viene aperto un altro, è necessario chiudere prima il secondo tag e poi il primo), alcuni Tag e attributi, rispetto all'HTML 4.0 sono scomparsi, ed esiste una [[Document Type Definition|DTD]] dedicata.
 
Il mime type riservato alle pagine XHTML è (application/xhtml+xml). Se si trasmette una pagina XHTML non valida ma come text/html può capitare che venga però visualizzata perché viene interpretata come html (con degli errori, quali i tag chiusi come &lt;br /&gt;) solo che non rispetta lo standard e non gode dei suoi vantaggi, primo tra i quali la portabilità su [[browser web|browser]] e client differenti.<ref>{{en}}[http://hixie.ch/advocacy/xhtml Sending XHTML as text/html Considered Harmful]</ref> Il vero vantaggio di una pagina XHTML è che essendo XML ne trae tutti i pregi, quali facilità di validazione e interpretazione programmatica. Le pagine XHTML sono solitamente più facilmente accessibili, data la loro semantica XML.
 
== Note ==
<references/>
 
== Voci correlate ==
* [[Linguaggio di markup]]
* [[Feed]]
* [[FXG]]
* [[SGML]]
* [[XHTML]]
* [[TM-XML]]
* [[SDMX]]
* [[papiNet]]
* [[Unique Particle Attribution]]
* [[EbXML]]
* [[Extensible Stylesheet Language]]
* [[XSLT]]
 
== Altri progetti ==
{{interprogetto|wikt}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC|Extensible Markup Language|Extensible Markup Language}}
* {{it}}[http://www.html.it/guide/guida-xml-di-base/ Guida XML] - HTML.it
* {{en}}[https://www.w3.org/XML/ Extensible Markup Language (XML)] (sito ufficiale del W3C)
* {{en}}[https://developer.mozilla.org/en/Parsing_and_serializing_XML Parsing and serializing XML] {{Webarchive|url=https://web.archive.org/web/20120511051936/https://developer.mozilla.org/en/Parsing_and_serializing_XML |date=11 maggio 2012 }} (Mozilla Developer center)
* [http://www.html.it/xml/ Guide e tutorial su XML] - HTML.it
* {{cita web|https://validator.w3.org/|Validatore Ufficiale del W3C}}
* [https://codebeautify.org/xmlviewer XML Viewer] - XML Tool
*[https://www.jsonformatting.com/xml-format/ XML Formatter Online] {{Webarchive|url=https://web.archive.org/web/20210131224800/https://www.jsonformatting.com/xml-format/ |date=31 gennaio 2021 }} - XML Online Tool
* [https://www.yamlonline.com/ Xml Validation] - YAMLto JSON,XML,BASE64
* [https://codebeautify.org/xmlvalidator XML Validator] - XML Lint
* [https://jsonformatter.org/xml-formatter XML Formatter] - Formattazione dei dati xml
 
{{Controllo di autorità}}
{{Portale|internet}}
 
[[Categoria:XML| ]]
[[Categoria:Standard W3C]]
[[Categoria:Tecnologie per il Web]]
[[Categoria:Formati di serializzazione]]