折りたたみ

(D)HTMLで、テーブル内のいくつかの行に折りたたみを作るとしたら、どういうのがいいのかな。
まず考えたのは、普通の要素の様に、適当にdivでくくって、それを操作するというもの。
しかしHTML4.01のDTDを見ると、TABLE要素内にdivを入れる余地はなさそう。
なさそうだが、よく見ると

<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>

となっていて、THEAD等は0個か1個なのだが、TBODYは1個以上入れることができるらしい。へぇー。全然知らなかった。
HTML5については、仕様自体にDTDを含めないようになっているらしいので検証手段が無いが、まぁこの辺は変更しないだろう……と思う。思いたい。
というわけでdivではなくtbodyでグルーピングするのがマークアップ的には正しいようだ。


それとは別に、グルーピングしたい行に対応するtr要素それぞれに、class属性を付けるというのも考えたけど、こっちはあんまりスマートじゃないような気がする。