La questione del supporto di XHTML da parte dei browser è delle più interessanti. Nel corso delle precedenti lezioni abbiamo più volte accennato all'argomento. Qui raccoglieremo le idee e fisseremo i punti chiave del problema.
Compatibilità con il passato
XHTML 1.0 è un linguaggio che garantisce la compatibilità con il passato. Basta salvare il documento con estensione .html e il gioco è fatto. Tutti i browser saranno in grado di rendere il documento, soprattutto se si rispettano alcune semplici regole. Ne ricordiamo due che risolvono problemi con Netscape 4 e con Explorer 4 e 4.5 per Mac:
- lasciare uno spazio prima della slash nei tag vuoti: <br /> e non <br/>
- omettere la dichiarazione XML
Compatibilità con il futuro
Uno dei concetti su cui tante volte si è insistito è quello di documento valido e ben formato. Nell'ultima lezione abbiamo imparato tutto sulla validazione. Tenetelo in mente e fatela sempre. Perchè fin quando ci saranno questi browser è l'unico modo che avete per assicurarvi che i vostri documenti rispettino gli standard. I browser attuali non hanno infatti un meccanismo di controllo della correttezza formale di un documento. Chiariamo subito.
Nel listato 2 abbiamo riportato lo stesso codice della prima pagina XHTML, ma con una piccola modifica: abbiamo eliminato il tag di chiusura del paragrafo. Copiate il codice, incollate e salvate come "test2.html". Aprite nel vostro browser. Nessuna differenza rispetto al primo esempio. Ora procediamo alla validazione. Il validatore vi avvertirà che avete omesso il tag di chiusura: il documento non è valido.
Cosa impariamo da questo? Che i browser di oggi hanno le maglie molto larghe, lasciano passare tutto, per loro le DTD non esistono. Visto che per anni ha regnato l'anarchia del codice i loro parser HTML sono abituati a tutto. Come stupirci? Pensate se fossero stati rigidi censori del nostro codice! Non riusciremmo a vedere che una percentuale irrisoria di pagine (solo quelle scritte in modo corretto).
Ma facciamo un passo avanti e cerchiamo di capire come potrebbe essere il futuro. Non abbiamo bisogno di costruire ipotesi. Possiamo provarlo sin da ora.
XHTML è XML, ricordate? Bene. I browser recenti (quelli di quinta e sesta generazione) sono tutti in grado di gestire, più o meno bene, il formato XML. Ognuno di essi ha un parser XML, un processore che analizza il documento. I parser XML sono di due tipi:
- processori non validanti: verificano soltanto che il documento sia ben formato
- processori validanti: oltre alla correttezza formale devono verificare che il documento sia conforme alla DTD di riferimento
Quelli implementati nei principali browser sono parser del tipo non validante.
Ora prendete i due documenti (la prima pagina e la sua versione modificata). Rinominateli, assegnando questa volta l'estensione XML (trovate una copia dei file "test.xml" e "test2.xml" nel file zip con i materiali del tutorial).
I browser hanno comportamenti diversi nel modo di visualizzare l'output del primo documento (quello corretto), ma tutti fanno la stessa cosa con quello che non è ben formato: interrompono la visualizzazione e segnalano l'errore. Non è una bizzarria. È quanto viene esplicitamente richiesto nella specifica XML: quando incontra un errore un processore deve interrompere l'elaborazione del documento.
Abbiamo riportato per comodità l'output dei due file prodotto dai seguenti browser (le immagini sono accompagnate da note di commento):
Concludendo: i browser attuali tollerano, ma in futuro? Quando e se ci saranno browser XHTML una pagina con errori non verrà caricata. Torna il discorso di fondo: ciò che oggi è facoltativo domani sarà necessario, perchè non prepararci per tempo al futuro?