Magnus Manske wrote:
Is there a special function for <th> anyway, or is it just the visual difference?
Please note there are two ways of specifying the table headers: TH cells (in which case you must specify a scope attribute) and the THEAD row group. The THEAD and TBODY groups are mandatory in HTML 4.x strict IIRC -- but that's not the reason why I think they should be supported in itself. I think they would be interesting to support for the same reasons why they have been added to HTML:
1. Separation of content and format by allowing designers to specify the content in predefined tags; 2. Accessibility support and special applications support; 3. Greater user agent customization based on the structure information (e.g. future browsers will probably render the headers of a table on each page the table spans on).
Please note that, should you implement this feature, you'll need to find a way to properly retrieve and render the headers in HTML:
<TABLE> <TR> <TH>Header 1</TH> <TH>Header 2</TH> </TR> <TR> <TD>Content 1</TD> <TD>Content 2</TD> </TR> </TABLE>
is incorrect, it should be either
<TABLE> <TR> <TH SCOPE='column'>Header 1</TH> <TH SCOPE='column'>Header 2</TH> </TR> <TR> <TD>Content 1</TD> <TD>Content 2</TD> </TR> </TABLE>
or ideally
<TABLE> <THEAD> <TR> <TD>Header 1</TH> <TD>Header 2</TH> </TR> </THEAD> <TBODY> <TR> <TD>Content 1</TD> <TD>Content 2</TD> </TR> </TBODY> </TABLE>
if possible. Also, <TH SCOPE='row'> should be used where it can be determined that the contributor wanted to render a vertical header:
<TABLE> <TBODY> <TR> <TH SCOPE='row'>Header 1</TH> <TD>Content 1</TD> </TR> <TR> <TH SCOPE='row'>Header 2</TH> <TD>Content 2</TD> </TR> </TBODY> </TABLE>
Rather than using a CSS class for headers, I'd prefer not using them at all, because it would generate the same type of structure/content/rendering mix the authors of the HTML specification wanted to avoid.
I don't want to impose my notation in your implementation of the markup, but I personally find the exclamation mark to be a better solution than "|:" exactly because I personally find it to be more intuitive and less confusing: it looks similar to the vertical bar, it uses the same one-character convention for opening cells as the vertical bar uses and the exclamation mark is generally associated with important data, which a header in a table is.
Absolutely obviously indubitably just my 2c. :)
Gutza