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

Differenze con HTML

Tutte le differenze con HTML, il fratello minore di XHTML
Tutte le differenze con HTML, il fratello minore di XHTML
Link copiato negli appunti

Nella prima lezione abbiamo evidenziato come XHTML sia essenzialmente una ridefinizione di HTML e l'excursus tra le varie sezioni di una pagina ha confermato questa affermazione. Al di là delle differenze tra le tre DTD, non abbiamo incontrato nuovi tag o elementi inusuali. Anche quelle che possono sembrare novità assolute, come la dichiarazione del DOCTYPE, erano in realtà già previste nelle precedenti versioni di HTML.

Le novità sostanziali riguardano piuttosto la sintassi, il modo in cui tag, attributi e valori vengono usati. Le esamineremo ora una per una, proponendo sempre il confronto con HTML. Attenzione: l'uso di queste convenzioni è normativo. XHTML è un'applicazione XML e alla sintassi di questo deve conformarsi. Non rispettare queste regole significa non avere documenti validi e ben formati. La cosa che le accomuna è che queste regole pongono fine ad una serie di procedure che HTML consentiva e che ora sono invece vincolate ad usi ben definiti.

1.Gli elementi devono essere correttamente annidati

HTML XHTML

<b><i>un test</b></i>

<b><i>un test</i></b>

Il primo esempio non è corretto in XHTML. Il tag <i> si sovrappone a <b>. La seconda colonna mostra invece un corretto annidamento degli elementi. La prima pratica è consentita in HTML. Certo, il browser dovrà interpretare qualcosa che è ambiguo, ma alla fine ci restituirà un testo in grassetto-corsivo (ciò che volevamo). In XHTML non possono sorgere ambiguità, tutto segue una regola.

2. I nomi di elementi e attributi devono essere in minuscolo

XML è un linguaggio case sensitive. Significa che <table> e <TABLE> sono cose diverse. In XHTML è consentito solo l'uso delle minuscole per i nomi di elementi e attributi. Anche qui regole più vincolanti.

HTML XHTML

<TABLE><TR><TD>un test</TD></TR></TABLE>

<table><tr><td>un test</td></tr></table>

3. Gli elementi non vuoti devono essere chiusi

HTML XHTML

<p>Test1
<p>Test2

<p>Test1</p>
<p>Test2</p>

In HTML la pratica esposta a sinistra è tollerata, in XHTML non lo è. Ogni elemento non vuoto (sono quelli che contengono testo o altri elementi) deve avere dopo il tag di apertura quello di chiusura.

4. I valori degli attributi devon essere posti tra virgolette

Anche questa pratica è tollerata in HTML. E, soprattutto, è causata da molti editor che la "dimenticano" con molta disinvoltura.

HTML XHTML

<img src=test.gif>

<img src="test.gif">

5. Ogni attributo deve avere un valore

Alcuni attributi di HTML non hanno un valore (si dice che sono standalone). È il caso dell'attributo selected usato per identificare l'opzione di un menu a tendina selezionata all'apertura del documento. In XHTML anche questi attributi devono essere valorizzati.

HTML XHTML

<option selected>test</option>

<option selected="selected">test</option>

Il problema si pone anche nei form. Se ad esso non si assegna un'azione avremo questa situazione:

<form action=""></form>

Si può risolvere assegnando un valore fittizio:

<form action="action"></form>

6. Gli elementi vuoti devono terminare con />

In XML tutti i tag devono essere chiusi. Ma cosa fare con gli elementi vuoti? Si tratta di quelli che non possono contenere nulla al loro interno ma semplicemente ricevere attributi: <meta>, <br>, <hr>, <img> sono i più comuni. In XHTML tali elementi vengono chiusi terminando la dichiarazione con />.

HTML XHTML

<br>
<img src="test.gif">

<br/>
<img src="test.gif"/>

7. Uso di id e name

Per identificare un elemento si deve usare l'attributo id e non name. Apparantemente la cosa non fa una grinza. In questo modo si ha una perfetta conformità con XML dove id è l'attributo standard per l'identificazione dei frammenti. In realtà qui il cambiamento con HTML è notevole, perchè per elementi come <img> o <a> l'attributo di identificazione è proprio name. Il passaggio a id non pone problemi nei browser più recenti, ma con altri (Netscape 4, per esempio) non funziona. In questo caso e se la compatibilità all'indietro è assolutamente necessaria, la stessa specifica XHTML 1.0 suggerisce di usare entrambi gli attributi, anche se ciò è contro le regole:

HTML XHTML

<a name="test>

<a id="test">
Per compatibilità:
<
a id="test" name="test">

Nelle specifche successive (cosa che è accaduta con XHTML 1.1) l'attributo name è stato abolito completamente.

Ti consigliamo anche