Questo non dovrebbe essere rosso. |
Questo documento XHTML è valido e well-formed. Sopra c'è una tabella con una singola cella. Questa pagina ha un'unica regola di stile che dà a tutti gli elementi tbody
uno sfondo rosso, ma nel sorgente non è presente neanche un tag tbody
.
Nell'HTML, gli elementi tr
sono sempre raggrupati all'interno di una riga, quindi se un tr
è scritto come "figlio" di un elemento table
, un elemento tbody
viene inserito automaticamente. Nell'XHTML non è così: quando un tr
è scritto come "figlio" di un elemento table
, viene veramente considerato come suo "figlio" e nessun elemento tbody
viene inserito.
Anche se questo è più un problema di DTD piuttosto che di regole generali dell'SGML, la maggior parte dei browser continuano a seguire il comportamento dell'HTML quando il documento è inviato come text/html
, anche se è presente un doctype XHTML.
Per illustrare la differenza nella struttura del documento, in questa pagina è presente una regola di stile che conferisce a tutti gli elementi tbody
uno sfondo rosso. Quando è interpretato come XHTML, non è presente nessun elemento tbody
, quindi nessun elemento sarà colorato di rosso.
La differenza si può notare anche con i linguaggi di scripting: quando la pagina è interpretata come XML, il tr
si trova immediatamente sotto alla table
, ma quando la pagina è interpretata come HTML, c'è un tbody
in mezzo.