Archivio > Markup, Standards > Singolo: Cosa c’è da sapere su XHTML2, XHTML1.x e HTML5

Cosa c’è da sapere su XHTML2, XHTML1.x e HTML5

Recentemente il W3C ha deciso che lo statuto del gruppo di lavoro XHTML2 (in inglese, XHTML2 Working Group Charter) non verrà rinnovato dopo la sua scadenza. Ciò significa che il gruppo di lavoro XHTML2 smetterà di lavorare sulle specifiche XHTML2 per riversarsi (in parte) nel gruppo di lavoro HTML, che attualmente lavora alla nuova versione di HTML denominatata HTML5. A questa notizia, molti sono stati portati a pensare drasticamente che XHTML fosse morto. In realtà questo non è del tutto vero.

1. Cosa succederà a XHTML2?

L’ultima bozza delle specifiche XHTML2 risale al 26 Luglio 2006, cioè più o meno a 3 anni fa. Come sottolineato da Henri Sivonen, XHTML2 era già morto a tutti gli effetti a causa della mancata retro-compatibilità [con gli altri linguaggi di marcamento, N.d.T.] e del fallimento nell’offrire funzionalità realmente appetibili. Lo stesso Henri aggiunge poi che XHTML2 non era stato ancora implementato in nessuno dei 5 browser principali. In un browser di prova c’era un’implementazione sperimentale di una vecchia bozza risalente a qualche anno fa, ma niente più.

La famosa demo XHTML2 non è nient’altro che una pagina scritta in XML successivamente impaginata con qualche riga di CSS nascondendo opportunamente le meta-informazioni con un abile head { display: none } (che altrimenti sarebbero state visualizzate sulla pagina assieme a tutto il resto). Notate, tra l’altro, che la pagina sembrerebbe non avere un titolo nonostante esista effettivamente un tag <title>. Il fatto è che, ancora una volta, per i browser quella pagina non è altro che codice XML a cui non è stata associata alcuna grammatica di controllo. Non viene cioè fatta alcuna interpretazione dei tag a livello semantico. Potete accorgervene da soli disattivando gli stili e guardando la pagina nella sua cruda nudità. Il tipo MIME è application/xml.

Il lavoro svolto dal gruppo di lavoro XHTML2 non andrà del tutto perso. In particolare, l’attributo role e il modulo access dovrebbero essere inglobati nelle specifiche WAI-ARIA (c’è già una sezione denominata WAI-ARIA Roles). Steve Faulkner ha pubblicato un ottimo sunto riguardo all’uso dei ruoli nelle pagine web.

Stando a ciò che viene scritto nel documento ufficiale del W3C, XForms e XML Events verranno messi in mano al gruppo di lavoro Forms.

2. Cosa succederà a XHTML1.0 e XHTML 1.1?

Le specifiche erano di competenza del gruppo di lavoro XHTML. Se tale gruppo riuscirà a completare le revisioni entro la fine dell’anno, è probabile che quelle revisioni andranno a sostituire le vecchie specifiche. In sostanza, chiunque potrà continuare ad usare XHTML1.x così come ha sempre fatto in passato. Le specifiche XHTML1.0 e XHTML1.1 sono standard dello stesso livello di HTML4, cioè raccomandazioni ufficiali pronte per essere implementate da chiunque ne abbia intenzione.

Tuttavia è bene chiarire che, nonostante lo sforzo, XHTML1.x non è mai stato molto fortunato. La colpa è stata in genere attribuita alla famosa Appendice C che sancisce le regole per la retro-compatibilità con HTML4. In particolare, fu deciso che XHTML1.0 potesse essere letto dalle applicazioni (in inglese, user agents) sia col tipo MIME application/xhtml+xml (derivato da quello XML), che col tipo MIME text/html (classico di HTML4). Di fatto, l’utilizzo di un tipo MIME text/html ha da sempre portato i browser a interpretare la pagina come codice HTML. Ciò significa, in parole povere, che qualsiasi pagina XHTML1.x con tipo MIME text/html viene effettivamente letta come HTML, perdendo di fatto tutti i vantaggi che scaturivano dall’uso di un linguaggio di marcamento fedele alla sintassi XML.

Ian Hickson sostiene che la formula XHTML + text/html sia particolarmente dannosa ai fini della pubblicazione di contenuti. Io sostengo che sia semplicemente ingannevole: molti usano HTML pensando di usare XHTML. Il passaggio dal tipo MIME text/html a application/xhtml+xml consiste, di fatto, a un passaggio da HTML a XHTML. Quando interpretato correttamente, XHTML pone (grazie all’eredità di XML) molti vincoli sulla validità sintattica di una pagina. In particolare esiste quella che viene chiamata gestione draconiana degli errori (in inglese, Draconian Error Handling): al primo errore sintattico, l’applicazione deve interrompere la lettura della pagina e mostrare una pagina d’errore. Concretamente, questo significa che mentre i lettori HTML tollerano gli errori, quelli XML sono più severi e non chiudono occhio. Un po’ come nei classici compilatori. Ecco perché il passaggio ad XHTML può essere così sofferto.

Vi sono altri problemi marginali oltre a quelli di natura puramente sintattica legati alla compatibilità con browser più datati (fra cui tutti spicca Internet Explorer 6) o frammenti di codice JavaScript basati su particolari metodi DOM funzionanti in HTML4 e non in XHTML1.0 (dove vi è un pesante uso dei cosiddetti namespaces). L’articolo di Ian Hickson è esaustivo a tal proposito. Oltre ad esso, David Hammond affronta in maniera più approfondita alcune delle questioni sollevate da Hickson. Ezio Melotti ce ne propone una fedele traduzione in italiano.

3. Cosa succederà ad HTML5?

Assolutamente nulla. Il gruppo di lavoro HTML continuerà a lavorare ad HTML5 prendendo in considerazione parte del lavoro svolto dal gruppo di lavoro XHTML. In particolare, è prevista una versione di HTML5 codificata secondo la sintassi XML e denominata, in maniera abbastanza ovvia, XHTML5. XHTML5 differisce da HTML5 solo dal punto di vista sintattico, la semantica rimane la medesima. Al contrario di XHTML1.0, XHTML5 non prevede una versione retro-compatibile che faccia uso di un tipo MIME text/html: per usare XHTML5 bisogna necessariamente usare un tipo MIME XML (come ad esempio, application/xhtml+xml).

In più, il gruppo di lavoro HTML ha deciso di rendere HTML5 compatibile con XHTML1.0, permettendo agli sviluppatori di utilizzare i NET (Null End Tags, cioè tag che vengono aperti e chiusi all’interno della stessa dichiarazione) di XHTML all’interno di HTML5 senza incorrere in errori sintattici, come scritto nel wiki ufficiale del WHATWG. Questo significa che, per HTML5, <br> e <br /> saranno, fondamentalmente, la stessa identica cosa.

Riassuntone per i pigroni

Riassumendo tutto quanto, possiamo dire che:

  1. XHTML2 non è morto perché, a tutti gli effetti, non è mai stato implementato. Tuttavia, parte del lavoro svolto verrà riversato nelle nuove specifiche HTML5 e WAI-ARIA;
  2. XHTML1.x è vivo e vegeto ma spesso viene interpretato erroneamente come HTML4. Il passaggio da HTML a XHTML comporta un discreto numero di sacrifici dal punto di vista della compatibilità con applicazioni e librerie JavaScript attualmente in circolazione;
  3. XHTML5 sta nascendo assieme a HTML5 e si propone come semplice conversione in XML delle specifiche HTML5 tuttora in stesura. In più il passaggio da XHTML1.0 a HTML5 sarà molto più semplice del previsto, in quanto non vi sono conflitti nel modo in cui i Null End Tags di XHTML1.0 veranno gestiti da HTML5.

In sostanza, XHTML non è morto. Ha solo avuto un’infanzia abbastanza difficile. La speranza che XHTML5 possa finalmente intromettersi nel mercato in maniera più egoistica è ancora viva, visto e considerato che dietro a HTML5 ci sono i maggiori rappresentanti delle società produttrici di browser. Fra i due approcci, top-down e bottom-up, voto per quest’ultimo. Il primo, e ne abbiamo avuto la conferma in questi giorni, probabilmente non era quello giusto.

Approfondimenti su LineHeight

  1. XHTML 1.1 e Modularità
  2. Come realizzare una lista dettagliata di links in XHTML 2.0
  3. Riflessione: Sull’uso dell’attributo role
  4. Uno sguardo ad XHTML 2.0 (parte 2)
  5. Uno sguardo ad XHTML 2.0

Approfondimenti

L'articolo è stato di tuo gradimento? Puoi controllare che vi sia altro di tuo interesse nelle categorie e , oppure iscriverti al notiziario RSS e seguirmi su per restare sempre aggiornato sulle ultime pubblicazioni.

Pubblicato martedì 07 luglio 2009.

Discussione [3]

  1. Alessandro aggiunge:

    [Immagine] Segue l'intervento di Alessandro

    Colgo l’occasione innanzitutto per fare i complimenti all’autore di questo blog, che seguo da tempo con molto interesse ma in silenzio. L’articolo fa chiarezza sul discorso xhtml2 e html5 ma io rifletto e mi chiedo: fa bene parlarne, discuterne e confrontare opinioni. Ma quando inizieremo a scrivere seriamente in html5? Fra due, cinque o dieci anni? In quest’ultimo periodo molti blog stanno riportando utlissimi articoli ed esempi che riguardano html5 ma a me sembra di essere in anticipo. Mi piacerebbe sapere dall’autore del blog e dai lettori cosa ne pensano e, secondo loro, quando si comincerà a sviluppare con html5. A presto.

    Ale

  2. Simone Economo aggiunge:

    [Immagine] Segue l'intervento di Simone Economo

    […] fa bene parlarne, discuterne e confrontare opinioni. Ma quando inizieremo a scrivere seriamente in html5? Fra due, cinque o dieci anni? In quest’ultimo periodo molti blog stanno riportando utlissimi articoli ed esempi che riguardano html5 ma a me sembra di essere in anticipo.

    A tal proposito, Bruce Lawson ha scritto un articolo abbastanza interessante che dovrebbe rispondere alla tua domanda: si chiama Yes, you can use HTML5 today!.

    Il punto è: per cominciare a usare HTML5 basta semplicemente cambiare il DOCTYPE: molti dei nuovi elementi sono già ampiamente supportati (basti vedere tutta la pubblicità che stanno facendo al tag canvas per l’elaborazione dinamica delle immagini) in tutte le più recenti versioni dei browser. Quelli che ancora non lo sono, lo saranno a breve.

    Una cosa fondamentale è ricordarsi ciò che ha detto Ian Hickson in merito alla data di rilascio delle specifiche HTML5:

    The spec itself will be “done” (in what we call “last call”) in late 2009 according to the current timetable, with the finishing touches (“candidate recommendation”) done by 2012.

    […] The 2022 date is for when we will have two completely bug-free and interoperable implementations of the entire spec

    Ovvero:

    La stesura delle specifiche verrà completata (secondo quella che chiamiamo “last call” [ultima chiamata, N.d.T.] entro la fine del 2009 in accordo con la tabella di marcia, con gli ultimi ritocchi finali (“candidate recommendation” [cioè destinata alla raccomandazione, N.d.T.]) entro il 2012.

    […] Il 2022 è la data in cui avremo due implementazioni della specifica completamente esenti da bug e interoperabili [HTML5 e XHTML5, N.d.T.]

    Per come la vedo, non si ha un vero e proprio concetto di specifiche nel contesto on-line. E’ fondamentale implementare qualcosa prima che sia passata attraverso tutte le fasi formali che portano alla raccomandazione (processo che in passato è stato sempre molto lento e laborioso). In questo caso possiamo vantare la fortuna di avere una notevole quantità di features proprie di HTML5 già supportate dalle maggiori aziende produttrici di browser, fortuna che onestamente comincerei a sfruttare. :)

    Per maggiori informazioni consiglio l’ottimo HTML5Doctor.

    Colgo l’occasione innanzitutto per fare i complimenti all’autore di questo blog, che seguo da tempo con molto interesse ma in silenzio.

    Grazie mille per i complimenti! ;)

  3. Simone Economo aggiunge:

    [Immagine] Segue l'intervento di Simone Economo

    Aggiungo che, per chi avesse problemi a generare codice HTML5 valido via XSLT, è stata prevista una versione legacy del DOCTYPE, cioè retrocompatibile, costruita in questo modo:

    <!DOCTYPE HTML SYSTEM "about:legacy-compat">
    

    In questo modo, via XSLT, è possibile personalizzare la dichiarazione del DOCTYPE e generare documenti HTML5-validi in maniera del tutto trasparente, semplicemente andando ad agire sull’intestazione di ogni pagina XSL:

    <xsl:output
        method="html"
        media-type="text/html"
        encoding="UTF-8"
        doctype-system="about:legacy-compat"
        indent="yes"/>
    

    Ciao! ;)

Discuti

Nome *

Per inviare un commento clicca su Anteprima. Apparirà un nuovo pulsante Invia per confermare.

Guida rapida

  • **grassetto**
  • _corsivo_
  • [testo](link)
  • "citazione breve"
  • > citazione estesa
  • `codice`