XHTML vs HTML

A causa del fatto che XHTML è un'applicazione XML, alcune pratiche che erano perfettamente legali nell'HTML 4 basato su SGML devono essere cambiate. Hai già visto la sintassi XHTML nel capitolo precedente, quindi le differenze tra XHTML e HTML sono molto evidenti. Di seguito è riportato il confronto tra XHTML e HTML.

I documenti XHTML devono essere ben formati

La buona formazione è un nuovo concetto introdotto da XML. In sostanza, questo significa che tutti gli elementi devono avere tag di chiusura e devi nidificarli correttamente.

CORRECT: Nested Elements

<p>Here is an emphasized <em>paragraph</em>.</p>

INCORRECT: Overlapping Elements

<p>Here is an emphasized <em>paragraph.</p></em>

Gli elementi e gli attributi devono essere in minuscolo

I documenti XHTML devono utilizzare lettere minuscole per tutti gli elementi HTML e i nomi degli attributi. Questa differenza è necessaria perché si presume che il documento XHTML sia un documento XML e XML fa distinzione tra maiuscole e minuscole. Ad esempio, <li> e <LI> sono tag diversi.

I tag finali sono obbligatori per tutti gli elementi

In HTML, alcuni elementi possono omettere il tag di fine. Ma XML non consente l'omissione dei tag di fine.

CORRECT: Terminated Elements

<p>Here is a paragraph.</p><p>here is another paragraph.</p>
<br><hr/>

INCORRECT: Unterminated Elements

<p>Here is a paragraph.<p>here is another paragraph.
<br><hr>

I valori degli attributi devono essere sempre quotati

Tutti i valori degli attributi, compresi i valori numerici, devono essere citati.

CORRECT: Quoted Attribute Values

<td rowspan="3">

INCORRECT: Unquoted Attribute Values

<td rowspan=3>

Minimizzazione degli attributi

XML non supporta la minimizzazione degli attributi. Le coppie valore-attributo devono essere scritte per intero. I nomi degli attributi come compatto e verificato non possono essere presenti negli elementi senza che venga specificato il loro valore.

CORRECT: Non Minimized Attributes

<dl compact="compact">

INCORRECT: Minimized Attributes

<dl compact>

Gestione degli spazi vuoti nei valori degli attributi

Quando un browser elabora gli attributi, esegue le seguenti operazioni:

  • Strisce iniziali e finali di spazi bianchi.

  • Associa le sequenze di uno o più caratteri di spazio bianco (comprese le interruzioni di riga) a un singolo spazio tra le parole.

Script ed elementi di stile

In XHTML, lo script e gli elementi di stile non dovrebbero avere direttamente i caratteri "<" e "&", se esistono; quindi vengono trattati come l'inizio del markup. Le entità come "<" e "&" sono riconosciute come riferimenti di entità dal processore XML per la visualizzazione rispettivamente dei caratteri "<" e "&".

Il wrapping del contenuto dello script o dell'elemento di stile all'interno di una sezione contrassegnata da CDATA evita l'espansione di queste entità.

<script type="text/JavaScript">
   <![CDATA[
      ... unescaped VB or Java Script here... ...
   ]]>
</script>

Un'alternativa è usare script e documenti di stile esterni.

Gli elementi con attributi id e name

XHTML consiglia la sostituzione dell'attributo name con l' attributo id . Si noti che in XHTML 1.0, l' attributo name di questi elementi è formalmente deprecato e verrà rimosso nelle versioni successive di XHTML.

Attributi con set di valori predefiniti

HTML e XHTML hanno entrambi alcuni attributi con set di valori predefiniti e limitati. Per esempio,type attributo del inputelemento. In HTML e XML, questi vengono chiamatienumerated attributes. In HTML 4, l'interpretazione di questi valori non faceva distinzione tra maiuscole e minuscole, quindi un valore diTEXT era equivalente a un valore di text.

In XHTML, l'interpretazione di questi valori fa distinzione tra maiuscole e minuscole, quindi tutti questi valori sono definiti in minuscolo.

Riferimenti di entità come valori esadecimali

Sia HTML che XML consentono riferimenti a caratteri utilizzando un valore esadecimale. In HTML questi riferimenti potrebbero essere fatti usando entrambi&#Xnn; o &#xnn; e sono validi ma nei documenti XHTML, è necessario utilizzare solo la versione minuscola come &#xnn;.

L'elemento <html> è un must

Tutti gli elementi XHTML devono essere nidificati all'interno dell'elemento radice <html>. Tutti gli altri elementi possono avere sottoelementi che devono essere in coppia e correttamente annidati all'interno del loro elemento genitore. La struttura di base del documento è:

<!DOCTYPE html....>

<html>
   <head> ... </head>
   <body> ... </body>
</html>