テーブルを単なる表としてでなく、ページのレイアウトとして使うことが多くあります。実際に多くの Webサイトで採用されております。
しかしながら、W3C では、レイアウトを表現するためにテーブルを使うのは好ましくないとされています。その最大の理由は、非視覚系ブラウザ、特に音声ブラウザではテーブルのレンダリングが大変困難だからです。
| 氏名 | 国語 | 数学 | 英語 | 歴史 | 小計 | 平均点 | 備考 |
|---|---|---|---|---|---|---|---|
| 田中さん | 60点 | 65点 | 73点 | 40点 | 238点 | 59.5点 | 追試 |
| 鈴木さん | 84点 | 46点 | 90点 | 68点 | 288点 | 72点 | 合格 |
| 中村さん | 48点 | 82点 | 55点 | 50点 | 235点 | 58.8点 | 追試 |
| ばんばん | 24点 | 30点 | 25点 | 5点 | 79点 | 19.8点 | 落第 |
| 平均点 | 54点 | 56点 | 60点 | 41点 | 210点 | 52.5点 | − |
MSIE はこの機能はありません。)WAI:Web Accessibility Initiative」 を参照していただければお分かりいただけると思いますが、ここでは閲覧環境に依存しないアクセシブルなテーブルの作成について解説します。th要素 によって定義されます。この見出しとそれに関連付けるための属性が用意されています。| 属性 | 説明 |
|---|---|
| abbr | ヘッダセルの概要を示す |
| scope | そのセルがどの方向に関連するかを指定する |
| axis | 関連するデータセルに持たせる分類名を指定する |
| id | 関連するデータセルに持たせる識別子を指定するを示す |
abbr属性th要素に、その概要をテキストベースで示すための abbr属性を設けるように求めています。th要素はセンタリングされ、その文字が強調されるので、それが見出しと理解することができますが、音声ブラウザでは 「見出し」 として理解できるようなことは、何もしません。abbr属性を使った構文は以下のとおりです。
<th abbr="受験者">氏名</th>
scope属性scope属性について解説すると、以下の図のように見出しの関連性の方向付けを行います。
scope属性は、見出しと関連する表の横列の行や、あるいは縦方向の列に対してその方向を指定し関連付けるようにします。具体的には、以下の値で指定することになります。scope属性の値
col ---- 下方向への関連付けを行うrow ---- 右方向への関連付けを行うcolgroup グループ化されたセルの下方向に関連付けを行うrowgroup グループ化されたセルの右方向に関連付けを行うscope属性を使った構文は以下のとおりです。
<tr><th scope="col">氏名</th> 下方向に関連付けている
axis属性と id属性| 氏名 | 英語 | 国語 | ||
|---|---|---|---|---|
| 前年平均点 | 今年平均点 | 前年平均点 | 今年平均点 | |
| 田中さん | 65.8点 | 63.5点 | 54.1点 | 55.7点 |
| 鈴木さん | 48.2点 | 51.1点 | 37.9点 | 43.3点 |

axis属性の値には 「分類名」 を設定し、データセルから対応する軸を参照します。id属性では識別子を設定し、データセルに headers属性を使って id属性と関連付けます。
axis属性、及び id属性で関連付けています。axis属性を使った具体的な構文は以下のとおりです。見出しセル (th要素) <th abbr="受験者" axis="名前" id="name">氏名</th> <th abbr="受験科目" axis="英語" id="english">英語</th> <th abbr="2003" axis="前年" id="last">前年平均点</th> <th abbr="名前" id="tanaka" headers="name">田中さん</th> データセル (td要素) <th abbr="名前" headers="name english last tanaka">65.8点</th>