HTML5 の テーブル関連要素の仕様 は HTML 4.01 から変更されている部分がけっこうあるようなので、変更点を簡単にまとめてみました。なお本稿での HTML5 の仕様は 2010 年 10 月 19 日付 W3C 草案 を参照しています。
table
要素 はテーブルの内容を説明するためのsummary
属性 を持てるが、代替手段 を用いることが推奨される。たとえば表の前にテキストを配置したり、caption
要素やfigcaption
要素を用いたりなど。caption
要素 の内容モデルは Flow content なので、ほとんどの要素を含むことができる。たとえばp
とかul
とか。ただしtable
要素を子孫に含んではダメ。col
要素 はspan
属性を持たないcolgroup
要素 の子要素でなければならない。つまりtable
の直下に置いてはダメで、必ずcolgroup
の中に置く必要がある。tbody
要素 は省略できる。XHTML 1.0 といっしょ。tfoot
要素 はtbody
要素またはtr
要素のうしろに出現してもよい。つまり、HTML 4.01 ではthead
→tfoot
→tbody
の順でなければいけなかったのが、thead
→tbody
→tfoot
もアリ。ただし、同じtable
要素内に複数あってはダメ。td
要素 はscope
属性 を持てない。同属性を持てるのはth
要素 だけ。td
要素とth
要素のabbr
属性 とaxis
属性 は廃止。仕様では 代替手段 が提案されており、abbr
属性は「セルの内容を明白かつ簡潔にすべし、より詳細なテキストを含めるにはtitle
属性を使え」、axis
属性は「対応するth
要素のscope
属性を使え」としている。
以前に書いた dl
要素 もそうですが、今までおなじみの要素でも HTML5 で仕様が再定義されていることがあります。新しい要素とか廃止されたフィーチャーとかの大きな変更は HTML5 differences from HTML4 (邦訳: HTML5 における HTML4 からの変更点) などにまとめられているのでわかりやすいですが、たとえば本稿で取り上げた col
/colgroup
要素みたいに地味な変更は仕様書を読んでいても気づきにくいので注意が必要ですね。