table-headers-attr-valid

表のセルのheaders属性は有効な見出しセルを参照する必要があります

automaticWCAG 1.3.1 (A)確度:high重大度:seriousperceivable

<td>/<th>のheaders属性にある各idが、同じ表内のセル(<td>または<th>)に解決されることを確認します(存在しない、セル以外の要素である、自分自身である、のいずれでもないこと)。

適用範囲:空でないheaders属性を持つ<td>/<th>要素のうち、セマンティックなロールが今もtable/grid/treegridである<table>内にあるものに適用されます。それ以外の明示的なロール(role="presentation"/"none"だけでなく、role="heading"などの実際のロールも含む)はネイティブの表のセマンティクスを置き換えるため、headersが説明する表が存在しなくなります。グローバルなARIA属性やtabindexを持つ表のプレゼンテーショナルロールは、WAI-ARIAの競合解決に従って無視され、表は表のままです。ACT a25f45の適用範囲に一致します。

期待される結果:headers属性のすべてのidトークンが、次の条件を満たす要素に解決されます。(a) 存在する、(b) 参照元のセルと同じ<table>のセル(<td>または<th>)である、(c) そのセル自身ではない。role="columnheader"/"rowheader"によって見出しとして機能する<td>も、通常の<th>と同じく有効な参照先です。ACT a25f45はネイティブのタグを要求していません。

検出結果が報告する内容:

  • invalid:headers属性内の、有効な見出しセルを指していないidごとに1項目です。idとreasonからなり、reasonはmissing(そのidを持つ要素がない)、self-reference(セルが自分自身を指している)、not-a-cell(要素が<td>でも<th>でもない)、different-table(セルが別の表にある)のいずれかです。

これらのdata.detailsのフィールドは、検出結果を読み解き、再現するのに役立ちます。reasonCodeと、出力スキーマで安定と明記された一部のフィールドを除き、安定した契約ではありません。マイナーリリースで名前が変わったり、なくなったりすることがあるため、これらに依存した実装はしないでください。

例

pass
<table>
<tr><th id="h1">Name</th></tr>
<tr><td headers="h1">Apple</td></tr>
</table>

headers="h1"が、同じ表内の実際のセルに解決されます。

fail
<table>
<tr><th id="h2">Name</th></tr>
<tr><td headers="missing">Banana</td></tr>
</table>

headersが、表内に存在しないidを参照しています。

ソースコードを見る