Introduzione ai CSS - Due parole su XHTML
Monday 8 October 2007 Marco Bertoni, ultimo aggiornamento: Tuesday 19 August 2008.
Quali sono le differenze tra XHTML e HTML? Tutti i browser "capiscono" XHTML?
Le differenze con HTML 4.01 non sono molte, ma rispettarle è fondamentale: in XHTML, infatti, i documenti devono essere ben formati e validi, pena la mancata validazione e, nei browser che interpretano correttamente XHTML, l'interruzione del rendering del documento. Ecco le differenze, insieme ad alcuni consigli:
- Gli elementi e i nomi degli attributi devono essere scritti in minuscolo.
- I valori predefiniti degli attributi devono essere scritti in minuscolo:
- Alcuni attributi hanno valori predefiniti, per esempio, l'attributo
typedell'elementoinputha valori predefiniti come i seguenti:text,password,checkbox,radio,submit,image,reset,button,hiddenofilei quali devono essere scritti in minuscolo.
- Alcuni attributi hanno valori predefiniti, per esempio, l'attributo
- I marcatori di chiusura sono obbligatori per gli elementi non vuoti e/o vuoti:
- Gli elementi non vuoti sono quelli che possono contenere testo o altri elementi. HTML consente di omettere il marcatore di chiusura per alcuni elementi non vuoti, per esempio
P. Con XHTML questo non è più possibile. - Gli elementi vuoti non possono contenere testo o altri elementi. Essi sono:
area,base,br,col,hr,img,input,link,metaeparam. HTML consente di omettere il marcatore di chiusura per questi elementi, mentre XHTML non lo permette.
- Gli elementi non vuoti sono quelli che possono contenere testo o altri elementi. HTML consente di omettere il marcatore di chiusura per alcuni elementi non vuoti, per esempio
- E' necessario minimizzare la sintassi degli elementi vuoti:
<br></br>diventa<br />. - Per assicurare la retrocompatibilità è consigliabile aggiungere sempre uno spazio prima di chiudere gli elementi vuoti:
<br/>diventa<br />. - Gli elementi devono essere annidati in modo corretto.
- I valori degli attributi devono essere racchiusi tra virgolette (apici singoli o doppi).
- I caratteri di marcatura (sono caratteri utilizzati per delimitare elementi, attributi o caratteri speciali:
<,>,&e") utilizzati nel testo o nei valori degli attributi devono essere sostituiti dalle opportune sequenze di escape:<diventa<>diventa>&diventa&"diventa"
- Gli attributi booleani (la presenza dell'attributo implica il valore true, mentre l'assenza implica il valore false) devono essere scritti per esteso:
- In HTML gli attributi booleani possono essere scritti in forma minimizzata, scrivendo solo il valore dell'attributo, o in forma completa con il nome e il valore. In XHTML deve essere sempre utilizzata la forma completa:
<option value="1" selected>diventa<option value="1" selected="selected">.
- In HTML gli attributi booleani possono essere scritti in forma minimizzata, scrivendo solo il valore dell'attributo, o in forma completa con il nome e il valore. In XHTML deve essere sempre utilizzata la forma completa:
- Se gli script o i fogli di stile incorporati contengono i caratteri di marcatura
<,>,&o", il contenuto di questi elementi deve essere racchiuso in una sezioneCDATA, per esempio:<script type="text/javascript"><![CDATA[alert('Tom & I want to say "10 > 9"');]]></script>
La maggior parte dei browser non supportano le sezioni CDATA quando eseguono il parsing del documento come HTML (cioè quando XHTML è servito come
text/html). Una soluzione è commentare la sezione:<script type="text/javascript">// <![CDATA[alert('Tom & I want to say "10 > 9"');// ]]></script>
- Quando XHTML è processato come XML gli spazi bianchi iniziali e finali e le interruzioni di riga negli attributi sono rimossi. Per ottenere un comportamento coerente, indipendentemente da come XHTML è processato, si deve evitare di utilizzare spazi bianchi iniziali e finali e interruzioni di riga negli attributi.
Internet Explorer e XHTML
La maggior parte dei server (a meno che non li si configuri ad hoc) servono erroneamente XHTML come text/html e non con il corretto tipo MIME application/xhtml+xml.
Se un server Web identifica il tipo di contenuto per una data pagina come text/html, il browser al quale invierà la pagina ne eseguirà il parsing come se fosse HTML.
Se il tipo di contenuto è identificato come application/xhtml+xml, il browser eseguirà il parsing della pagina come se fosse XML. Ciò significa che rispetterà le regole di XML: se il codice contiene errori (come la mancanza di marcatori di chiusura, elementi annidati in modo scorretto, attributi non chiusi tra virgolette ecc.) il browser non eseguirà il rendering della pagina.
Tutte le versioni di XHTML dovrebbero essere servite come application/xhtml+xml ma Internet Explorer, ad oggi, non supporta questo tipo MIME, a causa di ciò molti sviluppatori continuano a servire XHTML come HTML. Questo grazie al fatto che, quando è scritto in modo corretto, XHTML 1.0 è retro-compatibile con HTML 4.01.
Se si desidera utilizzare le DTD XHTML nel modo più corretto è possibile utilizzare la tecnica chiamata content negotiation con la quale ai browser Firefox, Opera e Safari XHTML è servito correttamente come XML, mentre a IE è servito come HTML. Questa tecnica si implementa utilizzando linguaggi di scripting come PHP, ASP ecc. oppure agendo direttamente sulla configurazione del server.
Per approfondire gli argomenti accennati in questo articolo consiglio leggere le risorse del sito Xhtml.com.
