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 では theadtfoottbody の順でなければいけなかったのが、theadtbodytfoot もアリ。ただし、同じ table 要素内に複数あってはダメ。
  • td 要素scope 属性 を持てない。同属性を持てるのは th 要素 だけ。
  • td 要素と th 要素の abbr 属性axis 属性 は廃止。仕様では 代替手段 が提案されており、abbr 属性は「セルの内容を明白かつ簡潔にすべし、より詳細なテキストを含めるには title 属性を使え」、axis 属性は「対応する th 要素の scope 属性を使え」としている。

以前に書いた dl 要素 もそうですが、今までおなじみの要素でも HTML5 で仕様が再定義されていることがあります。新しい要素とか廃止されたフィーチャーとかの大きな変更は HTML5 differences from HTML4 (邦訳: HTML5 における HTML4 からの変更点) などにまとめられているのでわかりやすいですが、たとえば本稿で取り上げた col/colgroup 要素みたいに地味な変更は仕様書を読んでいても気づきにくいので注意が必要ですね。