[html5] td and th
Jukka K. Korpela
jukka.k.korpela at kolumbus.fi
Tue Apr 5 00:51:55 PDT 2011
Luis-Miguel Rodríguez Rojas wrote:
> Why does the <th> element [...] have a Phrasing content model [...]
> whilst the <td>element [...] have a Flow content model [...]?
I had not noticed this change (from HTML 4.01 and its predecessors), but I
think it is rather natural on semantic grounds. A table header cell contains
header information for a column or a row, and header-like elements are
generally just text and text-level markup (cf. to <h1> and <caption>, for
example). A data cell may contain just about anything, such as text
paragraphs, lists, or inner tables, even in a table that represents tabular
data (which is a much wider concept than "numeric table").
Thus, the stricter content model probably helps to detect accidental use of
<th> where <td> should be used, as well as markup based on misunderstanding
of HTML semantics - assuming, of course, that the author uses suitable
software to check the markup.
The only potential objection that I can imagine for now is that a table
header might reasonably act as a tool for sorting or otherwise modifying the
data in the table or its rendering. Typically this means just making the
header content a link so that e.g. clicking on a particular column header
sorts the table so that the column appears in alphabetic or numeric order,
and this can be arranged using just text-level markup there (whether we use
client-side, server-side, or combined implementation of the operation). But
would it be possible that someone reasonably wanted to use a _form_ in a
table header cell? I mean a form where the user selects a sorting criterion,
for example. Perhaps in the simplest case, the form might consist of a
<select> element and (at least when scripting is disabled) a submit button -
but to make it work robustly, with a server-side backup, it would need to be
a <form>.
--
Yucca, http://www.cs.tut.fi/~jkorpela/
More information about the Help
mailing list