表組の構造を記述するのには,SCOPE 属性を用いるほかに,そのセルの見出しがどのセルであるかをダイレクトに指定する方法もある。
<TD> と <TH> に指定されうる HEADERS 属性は,そのセルの見出しのセルがどのセルであるかを指定する。
属性 | 値 | 解説 |
---|---|---|
HEADERS | ID(複数) | そのセルに対して見出し情報を提供するセルの ID を指定する。空白で区切って複数与えうる。 |
これからわかるように,HEADERS 属性を使うためには,参照される見出しのセルに対してあらかじめ ID が指定されていなくてはならない。
このことに注意して,先ほどのように“名物駅弁”の表を HEADERS 属性を用いて書いてみる。
<TABLE BORDER>
<CAPTION>全国の名物駅弁</CAPTION>
<TR>
<TH ID="c01">駅弁</TH><TH ID="c02">販売駅</TH><TH ID="c03">路線</TH>
<TH ID="c04">特徴</TH>
</TR>
<TR>
<TH ID="r01" HEADERS="c01">峠の釜めし</TH><TD HEADERS="c02 r01">横川</TD><TD HEADERS="c03 r01">信越本線</TD>
<TD HEADERS="c04 r01">益子焼の容器に山菜などがどっさり。</TD>
</TR>
<TR>
<TH ID="r02" HEADERS="c01">ますのすし</TH><TD HEADERS="c02 r02">富山</TD><TD HEADERS="c03 r02">北陸本線</TD>
<TD HEADERS="c04 r02">円形の器いっぱいに敷きつめらた「ます」が好評。</TD>
</TR>
<TR>
<TH ID="r03" HEADERS="c01">柿の葉寿司</TH><TD HEADERS="c02 r03">和歌山</TD><TD HEADERS="c03 r03">紀勢本線</TD>
<TD HEADERS="c04 r03">ひとつひとつが柿の葉っぱにくるまれている。</TD>
</TR>
<TR>
<TH ID="r04" HEADERS="c01">あなごめし</TH><TD HEADERS="c02 r04">高松</TD><TD HEADERS="c03 r04">予讃線</TD>
<TD HEADERS="c04 r04">瀬戸内の絶品のあなごが楽しめる。</TD>
</TR>
</TABLE>
これが,Section 7 で SCOPE 属性を使って表現したものと,ほぼ同じ構造を表すことがおわかりいただけるであろう。しかし,この例に関して比べてみると,SCOPE 属性を用いたもののほうがシンプルにまとまっている。
基本的に,見出しセルとの対応づけを行う方法は,SCOPE 属性を用いる方法と,HEADERS 属性を用いる方法と,いずれでも構わないのだが,それぞれ表現しやすい構造があることに注目したい。
いっぱんに,SCOPE 属性のほうが記述が短くて済むという利点はあるが,セルの見出しとしての情報がそのセルと同じ列(グループ),あるいは行(グループ)に属するセルに与えられているのではないときは,HEADERS 属性を用いた記述を行わなくてはならない。また,表がひじょうに入り組んでくると,HEADERS 属性のほうが使い勝手がよくなってくる。
SCOPE 属性および HEADERS 属性で,見出し情報を提供するセルが明示的にわかっている場合はよいが,これらがない場合は,セルの中身をただずらずら読み上げなくてはならないかもしれない。よりわかりやすく表組を読むために,UA は次のようなアルゴリズムで見出し情報を持つセルを探し出すであろう。その結果として,セルごとに見出し情報のリストを作ることになる。
これは,DIR="ltr" の表の場合で,DIR="rtl" のときは Section 5 で触れたように,左右が逆になる。
このアルゴリズムは,基本的に行・列方向の見出しセルをさがすということであるが,見出しセルの向こうにデータセルが見えるときは,その表は多段組で,向こう側のデータセルは違う段のものだろうから,自分が属する表中の段はその見出しセルまでだろうと見なすのである。連続した見出しセルは,より左(右)あるいは上にあるほうが大きな見出しだと見なされ,左(右)あるいは上から“見出しリスト”に加えていく。
なお,次の Section で解説する AXIS 属性を伴ったデータセル <TD> は,上記のアルゴリズムの中で見出しセルとして振る舞う。