Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

HTML5, XHTML2 e il futuro del web

Un confronto tra le due tecnologie candidate a rimpiazzare HTML 4.01 e XHTML 1.0
Un confronto tra le due tecnologie candidate a rimpiazzare HTML 4.01 e XHTML 1.0
Link copiato negli appunti

Questa è la traduzione dell'articolo HTML5, XHTML2, and the Future of the Web di David "liorean" Andersson pubblicato originariamente su Digital Web Magazine il 10 aprile 2007. La traduzione viene qui presentata con il consenso dell'editore e dell'autore.

Chi lavora sul web oggi ha a che fare con tutta una serie di tecnologie che sono ormai stabilizzate e stabili da molto tempo.

HTML 4.01 è una raccomandazione del W3C dal 1999; XHTML 1.0 -una formulazione in XML di HTML 4.01- è diventato una raccomandazione nel 2000, ed è stato rivisto nel 2002. In altre parole, alla base di tutto lo sviluppo attuale per il web c'è una tecnologia vecchia di otto anni.

HTML 4.01 può certamente rappresentare un terreno solido a disposizione degli sviluppatori, ma potrebbe essere meglio. Molte cose sono cambiate nel modo in cui il web è usato e percepito negli ultimi otto anni. Soprattutto, dalla prospettiva di chi sviluppa, abbiamo compreso in che cosa HTML 4.01 ha fallito e in che cosa può essere migliorato. La nuova generazione di queste tecnologie sta ora vedendo la luce, e vale la pena darci un'occhiata. Sono infatti tecnologie che avranno una grande influenza sul nostro lavoro nei prossimi anni.

I contendenti

Il W3C lavora su XHTML2 da diverso tempo. Si tratta di una tecnologia che punta a svolgere lo stesso ruolo giocato da HTML 4.01 e XHTML 1.0, un aggiornamento o una sostituzione con diversi miglioramenti e modifiche apportati agli elementi disponibili nelle attuali specifiche. XHTML2 è XML (esattamente come XHTML 1.0) ma non è retrocompatibile rispetto ad HTML 4.01. Può essere infatti considerato un linguaggio completamente nuovo, cosa che è resa evidente dall'adozione di un namespace radicalmente nuovo.

HTML5 (noto anche tra gli addetti ai lavori come Web Applications 1.0) è una tecnologia sviluppata dal WHATWG, un gruppo di lavoro aperto iniziato e supportato da tre dei principali produttori di browser: Mozilla, Opera e Apple. HTML5 non mira tanto a sostituire completamente HTML 4.01 o XHTML 1.0, si tratta piuttosto di una sorta di upgrade, di un'evoluzione. Mira ad avere una retrocompatibilità col passato, tenta di definire specifiche modalità di interazione oggi non definite in HTML 4.01, cerca di aggiornare i meccanismi di parsing dei browser con una soluzione che non vada a spaccare del tutto il web come oggi lo conosciamo. Nello stesso tempo, aggiunge nuovi elementi semantici per attività come la validazione dei form, l'interattività e lo storage dei dati in locale.

HTML e il web di oggi

Nonostante HTML 4.01 sia formalmente un formato di documenti basato su SGML, gli unici client che trattano HTML in questo modo sono i validatori. I browser, invece, trattano i documenti HTML come una tag soup: fanno cioè di tutto per rendere al meglio anche i documenti con un markup orribile. Sono pochissimi i contenuti attualmente disponibili sul web ad essere validi secondo la specifica HTML 4.01. La maggior parte di questi contenuti sono non validi e mal formati, ma i browser li parsano comunque. Il browser che non lo facesse sarebbe presto abbandonato dagli utenti a favore di un altro browser che supporta i loro siti preferiti.

Gestire quasto groviglio di tag non validi è dunque essenziale, ma ogni broswer lo fa in maniera differente. HTML5 tenta appunto di porre fine a questa situazione definendo esattamente come deve avvenire la correzione degli errori. HTML5, insomma, non definisce solo come creare documenti validi, definisce anche come dovrebbe avvenire il parsing di documenti non validi o mal formati. L'obiettivo è quello di raggiungere rispetto a tutto ciò la piena interoperabilità tra i browser.

XML e il web di oggi

La stragrande maggioranza di tutto il codice XHTML presente oggi sul web è servito con un content type di "text/html". In altre parole, è parsato dai browser non come XML ma come il vecchio HTML.

Il motivo per cui avviene ciò è il modo in cui viene gestito l'errore in XML. Il parsing di un documento XML viene infatti bloccato inesorabilmente non appena viene riscontrato un errore. Significa che basta un solo, piccolissimo errore per rendere un documento inaccessibile.

Una pagina che abbia delle parti non sottoposte alla verifica di specifici tool di controllo -si pensi ai commenti inseriti da altri su un blog, o a parti che vengono inserite automaticamente in seguito ad un trackback o per l'inserimento di un widget- va sempre incontro al rischio di essere rovinata da un errore. Cosa che la renderebbe praticamente inutile.

Il più grande problema nel servire pagine come XML sul web è che Internet Explorer non supporta il content type raccomandato per XHTML 1.0 ("application/xhtml+xml"). Il browser di Microsoft supporta genericamente XML, ma senza una conoscenza minima del del namespace XHTML, non sa come gestire la semantica degli elementi XHTML, e non applicherà alla pagina nemmeno il foglio di stile di default.

XHTML 1.0 consente allora di servire documenti come "text/html", dal momento che tali documenti sono conformi alle regole sulla retrocompatibilità sancite nell'appendice C della specifica. Ovviamente, ciò significa che i documenti saranno trattati come tag soup, non come XML.

Dunque, il fatto che Internet Explorer non supporta XHTML come XML e i problemi che XML può causare in fase di pubblicazione dei contenuti se non ci sono controlli all'origine, hanno fatto sì che ci siano stati davvero pochi incentivi per promuovere l'adozione di XML sul web. Inoltre, i motori di ricerca non indicizzano i documenti XHTML come XML, ci sono pochi strumenti di authoring per XML, pochissimi CMS lo supportano correttamente dalla fase di input fino alla generazione del codice finale passando attraverso i database.

Insomma, ci sono davvero pochi incentivi per invogliare la gente ad usare XHTML come XML.

XHTML2 è XML

E il problema più grande è proprio questo. Ai non pochi motivi di preoccupazione che gli sviluppatori hanno rispetto all'uso di XML nella distribuzione di documenti, XHTML2 aggiunge un ulteriore livello di complessità. Non è infatti HTML 4.01 riformulato come XML. È un linguaggio diverso, e al tempo stesso simile, con una semantica modificata, aggiunta o rimossa per molti elementi. In molti casi i cambiamenti sono passi nella giusta direzione, ma al tempo stesso XHTML2 non è stato creato tenendo in mente gli sviluppatori web. Facciamo un esempio. XHTML2 non risolve tutte le mancanze di HTML 4.01 e XHTML 1.0 rispetto all'interattività, allo storage dei dati in locale e all'interazione con gli script.

Al momento è una working draft. Alcune parti sono complete da diverso tempo, ma in generale non è ancora stabile e maturo per poterlo usare come base per documenti reali. Non è insomma ancora pronto per l'implementazione e manca di supporto in quattro fattori cruciali: i browser, i motori di ricerca, i CMS e gli strumenti di authoring. Nessuno dei maggiori produttori di browser supporta questo linguaggio, e Maciej Stachowiak di Apple si è così espresso, in maniera molto esplicita:

Non abbiamo partecipato al gruppo di lavoro di XHTML2 perché pensiamo che non sia una tecnologia appropriata per il web.

Web Applications 1.0 e più che HTML5

La specifica Web Applications 1.0 (WA1) aggiorna HTML, ma non fa solo questo. Aggiorna anche XHTML 1.0 (sotto il nome poco felice di HTML5) e il DOM HTML con la denominazine di DOM5 HTML. Mentre HTML 4.01 è formalmente basato su SGML, HTML5 prende atto della realtà dei fatti rispetto al meccansimo di parsing dei vari browser, un meccansimo come abbiamo visto basato sulla correzione degli errori di markup, e descrive un modello di parsing non basato su SGML che include uno specifico modello di gestione e correzione degli errori.

WA1, inoltre, definisce diverse API che sono divenute standard de facto, e ne aggiunge altre. Mentre XHTML2 migliora XHTML come linguaggio per la descrizione di documenti grazie ad una nuova semantica, WA1 apporta migliorie più modeste alla semnatica dei documenti ma interviene con successo sulla possibilità di usare il web come piattaforma per applicazioni, aggiungendo cose come la gestione dei documenti nella cronologia dei browser, lo storage dei dati in locale, la navigazione offline, il drag and drop, il copia e incolla, azioni come l'annullamento e la ripetizione, etc.

Diversamente da XHTML2 che non ha alcun supporto da parte dei produttori di browser, HTML5 è supportato da quasi tutti. La specifica non è ancora completa, ma diverse sue parti sono ormai mature e già implementate. Si pensi all'elemento canvas che è supportato da Mozilla, Safari e Opera.

Il W3C e HTML

Il W3C ha recentemente costituito un nuovo gruppo di lavoro per HTML, separato dal gruppo di lavoro che sta lavorando su XHTML2. L'HTML Working Group è aperto al contributo di tutti gli esperti. Rimane da vedere in che modo si integrerà con gli altri gruppi di lavoro. Come responsabili sono stati nominati Chris Wilson di Microsoft e Dan Connolly del W3C.

Il W3C, inoltre, ha già adottato buona parte delle tecnologie definite dal WHATWG attraverso la Rich Web Clients Activity, con lo scopo di migliorare l'esperienza lato client sul web. È al momento presumibile che il nuovo gruppo di lavoro adotterà la specifica HTML5 come base per l'aggiornamento di HTML e XHTML.

Cos'è meglio per gli sviluppatori

XHTML2

Il supporto dei browser è sempre un aspetto cruciale per gli sviluppatori. Internet Explorer non offre supporto per XHTML, e ha seri problemi con con l'XHTML servito come XML . Inoltre, trasformare un documento HTML 4.01 o XHTML 1,0 in XHTML2 non è necessariamente un'operazione indolore (ci sono cambiamenti alla struttura dei documenti che saranno necessari). Ma soprattutto, lo ribadiamo, nessuno dei produttori di browser supporta questo linguaggio.

HTML5

Trasformare un documento HTML 4.01 in HTML5, invece, consiste nella maggior parte dei casi nella sostituzione della dichiarazione di DOCTYPE. Se un documento non usa nessuno dei nuovi elementi o nessuna delle API introdotte nella specifica, il browser si limita a parsarlo secondo i vecchi metodi. Per i CMS di oggi i cambiamenti da implementare per produrre HTML5 saranno semplici. Inoltre, molte delle nuove funzionalità possono essere facilmente emulate via Javascript per i browser che non supportano HTML5. Cosa che consentirà un passaggio soft da HTML 4.01 a HTML5.

Conclusioni

Sebbene XHTML2 rappresenti un indubbio miglioramento semantico rispetto a XHTML 1.0, l'impressione è che non sarà oggetto di interesse per gli sviluppatori web, almeno per molto tempo, soprattutto se si considera che Internet Explorer non offre al momento il supporto nemmeno per XHTML 1.0. Ci vorranno diversi anni per una versione che potrebbe supportare XHTML2, e non c'è nulla che possa far pensare che la prossima versione possa essere quella che garantisce tale supporto.

Molte parti di HTML5, al contrario, sono già supportate da diversi browser. E se, come sembra, Microsoft prenderà una parte attiva nello sviluppo di HTML5, è presumibile che in un futuro non molto lontano si possa arrivare ad un supporto cross-browser di questa specifica.

HTML5 sarà il futuro del web, per cui il mio consiglio è di iniziare a prenderlo seriamente in considerazione.

Ti consigliamo anche