La maggior parte delle applicazioni Web trarrebbe beneficio dalla possibilità di catalogare i dati in base al loro significato, piuttosto che in modo descrittivo, come fa HTML. Ad esempio, noi sappiamo che:
<h2>
Apple</h2>si presenterà in un certo modo in un browser, ma non sappiamo se "
Apple" sia un frutto, l’azienda produttrice di computer, un cognome o qualcos’altro. Si perdono così molte delle potenzialità dei motori di ricerca, costretti ad esaminare tutto il testo a parità di importanza.Inoltre HTML non ha alcuno strumento di analisi di validità di un documento. Quest’esigenza, imprevedibile alla creazione del Web, è diventata di estrema necessità a causa delle nuove applicazioni che si servono di Internet, come il commercio elettronico.
Viceversa XML:
<?xml version="1.0"?>
<!DOCTYPE EMAIL [
<!ELEMENT EMAIL (A,DA,CC,TITOLO,TESTO)>
<!ELEMENT A (#PCDATA)>
<!ELEMENT DA (#PCDATA)>
<!ELEMENT CC (#PCDATA)>
<!ELEMENT TITOLO (#PCDATA)>
<!ELEMENT TESTO (#PCDATA)>
]>
<EMAIL>
<!ELEMENT EMAIL (A+,DA,CC*,TITOLO?,TESTO?)>
<!ELEMENT paragrafo (#PCDATA|grassetto|corsivo)*>
<!ELEMENT FAQ (INTRODUZIONE,(DOMANDA,RISPOSTA)+,COPYRIGHT?)>
<!ATTLIST PERSONA EMAIL CDATA #IMPLIED
        TELEFONO CDATA #REQUIRED
        FAX CDATA #IMPLIED>
<!ATTLIST MAGLIETTA TAGLIA (
SMALL|MEDIUM|LARGE) "MEDIUM"><!ATTLIST SEZIONE argomento ID #IMPLIED>
<!ATTLIST RIFERIMENTO A IDREF #REQUIRED>