廃止された scope 属性
Silktide は、通常の表データセルに設定された scope 属性をチェックします。scope 属性は、見出しが何に適用されるかを示すものなので、見出しセルにのみ設定します。データセルに設定すると廃止された属性となり、支援技術を誤解させる可能性があります。
では、scope は <th> 見出しセルに対して定義されています。<td> データセルに設定されている場合、通常は次のいずれかを意味します。そのセルは実際には見出しであり <th> にする必要がある、または古いマークアップの名残であり属性を削除する必要がある、ということです。
<!-- 問題: データセルに scope が設定されている -->
<td scope="col">Name</td>
重要な理由
は、マークアップから表の構造を把握します。データセルに scope 属性があると、矛盾した情報になります。要素は「私はデータです」と示している一方で、属性は「私は他のセルにラベルを付けます」と示すためです。異なるはこの矛盾をそれぞれ異なる方法で解決します。属性を無視するものもあれば、そのセルを見出しとして扱うものもあります。そのため、訪問者が使用するソフトウェアによって、表が誤った見出しや一貫性のない見出しで読み上げられる可能性があります。
修正方法
そのセルが実際に何であるかを判断します。
- 見出しとして機能している場合は、
<th>に変更し、有効なscope値(row、col、rowgroup、またはcolgroup)を維持します。
<!-- 修正後: 見出しが実際の見出しセルになっている -->
<th scope="col">Name</th>
- 通常のデータである場合は、
scope属性を完全に削除します。
<!-- 修正後: 通常のデータセル -->
<td>Name</td>
Silktide によるチェック方法
- 各ページのすべての表セルを検出します。
scope属性が設定されている各<td>データセルを、その値に関係なく報告します。