Bruce Lawson ha recentemente pubblicato su Smashing Magazine un articolo sulla semantica di HTML5 analizzando i vari elementi e ponendo l'accento sugli aspetti relativi all'accessibilità , interoperabilità e sviluppo del nuovo standard. Sarebbe un articolo perfetto se non fosse per il fatto che Lawson ha trascurato un piccolo dettaglio: da dove vengono i nuovi elementi HTML5? Questo dettaglio viene omesso da quasi tutti i promotori di HTML5, quindi credo valga la pena parlarne.
Innanzitutto, HTML5 è semplicemente il risultato dell'accoglimento da parte del WHATWG (e poi del W3C) delle richieste degli sviluppatori e della messa in opera dei risultati dell'analisi degli elementi HTML e XHTML più usati sul Web (con relativa nomenclatura) da parte di Google.
Ecco spiegato come mai le specifiche HTML5 (in bozza) sono enormemente più complesse di quelle di XHTML: gli implementatori hanno cercato di accontentare tutti e il risultato sino ad ora visto è preoccupante. Perchè preoccupante? Perché in effetti non c'è niente che una revisione ed ampliamento di XHTML non avesse potuto risolvere.
Non esiste nessuna differenza, a livello concettuale, tra <div id="branding" role="banner">
e <header role="banner">
, neppure a livello di specifiche di accessibilità WAI (entrambi hanno lo stesso role).
Tra l'altro header
è un nome presentazionale e non strutturale, quindi il "branding" proposto da Andy Clarke è più semantico, anche se fornito tramite ID.
Andy Clarke aveva infatti proposto una nuova nomenclatura per gli attributi XHTML che, se adottata, avrebbe permesso di applicare gli stili CSS in modo cross-site.
Infine, l'accessibilità non ha nulla a che fare con la nomenclatura degli elementi. Nella terminologia WAI, è importante il role, non il nome dell'elemento a cui viene applicato. Quindi menubar
può essere applicato sia ad una lista che ad un elemento menu
.
La semantica di XHTML è strutturale, il che porta le specifiche ad avere meno elementi di HTML5 che, ripetiamo, ha una semantica basata sulla funzionalità da aggiungere ad un documento. Strutturalmente, object
svolge lo stesso lavoro di audio
e video
, che si limitano ad operare una distinzione funzionale: un oggetto inserito in una pagina può essere sia un file audio che video, ma la sostanza non cambia, in quanto trattasi sempre di un oggetto esterno.
HTML5 è importante da un punto di vista delle funzionalità aggiunte, ma parlare di una sua semantica così come si è fatto con XHTML in passato non può prescindere dal ricordare le origini reali di HTML5.