HTMLソース [コーディング]

HTMLソースは、ユーザーエージェントが解析できるように、バリデータで以下の4つに該当するエラーが出ていないことを確認する。

  • 仕様では認められていない終了タグの省略
  • 仕様に準じていない要素の入れ子
  • 同一の要素内での同じ属性の重複
  • ユニーク(一意的)ではないid属性値

解説

HTMLのWebページの場合、次のようにさまざまなユーザーエージェントがソースコードを解析して、その結果を用途や目的に応じて処理しています。

  • ビジュアルブラウザは、Webページとして画面に表示する。
  • スクリーンリーダーは、合成音声で読み上げる。
  • 検索クローラーは、検索エンジンに登録(インデックス)する。

そのため、ユーザーエージェントが機械的に処理できるように、Webページの見た目を整えるだけでなく、HTMLのソースコードをマシンリーダブルにしておく必要があります。そうすることによって、より多くのユーザーエージェントをサポートすることができ、より多くのユーザーにWebコンテンツを提供することができます。

HTMLには、W3C(World Wide Web Consortium)が定めた仕様があります。基本的には、その仕様に沿ってHTMLをコーディングする必要があります。バリデータを用いてHTMLのソースコードをチェックして、エラーが出ないこと(validであること)が理想ではあります。

ただし、バリデータでエラーが発見されたとしても、少なくとも次の4点をクリアしていれば、ユーザーエージェントがHTMLのソースコードを解析する上での問題は生じず、アクセシビリティには影響を及ぼさないとされています。

  • 要素に完全な開始タグと終了タグがある(省略が仕様で認められている場合は除く)。
  • 仕様に準じて入れ子になっている。
  • 同一の要素内に同じ属性が重複していない。
  • id属性値がユニークな値である。

例えば、閉じる山括弧(”>”)がなかったり、属性値の引用符が一致していなかったりすると、「完全な開始タグと終了タグがある」とはいえません。コーディングする際には注意しましょう。

事例 1. 完全な開始タグと終了タグ

悪い例



<h2 id="principle">Webアクセシビリティ10原則
<p class="paragraph">私たちは、Webコンテンツのアクセシビリティを確保するための10原則を提唱しています。</p>

<h2>の終了タグがない。

良い例



<h2 id="principle">Webアクセシビリティ10原則</h2>
<p class="paragraph">私たちは、Webコンテンツのアクセシビリティを確保するための10原則を提唱しています。</p>

<h2>の完全な開始タグと終了タグがある。

事例 2. 仕様に準じた入れ子

悪い例


<p>私たちは、Webコンテンツのアクセシビリティを確保するための<strong>10原則を提唱しています。</p></strong>

<p>要素内にある<strong>要素の終了タグが<p>要素の終了タグよりも後にある。

良い例


<p>私たちは、Webコンテンツのアクセシビリティを確保するための<strong>10原則を提唱しています。</strong></p>

<strong>要素の終了タグが<p>要素内にあり、<p>要素と<strong>要素が適切に入れ子になっている。

事例 3. 同一要素内の同じ属性

悪い例



<h2 id="guidelines" id="heading">Webアクセシビリティ逆引きガイドライン</h2>

<h2>要素にid属性が複数ある。

良い例



<h2 id="guidelines" class="subsection">Webアクセシビリティ逆引きガイドライン</h2>

重複している属性がない。

事例 4. id属性値

悪い例



<h2 id="guidelines">Webアクセシビリティガイドライン</h2>
(略)
<h2 id="guidelines">Webユーザビリティガイドライン</h2>

同じid属性値が複数回使用されている。

良い例



<h2 id="accessibility">Webアクセシビリティガイドライン</h2>
(略)
<h2 id="usability">Webユーザビリティガイドライン</h2>

id属性値がユニークな値である。

『JIS X 8341-3:2016 / WCAG 2.0』の関連する達成基準(レベル A)

4.1.1 構文解析の達成基準
マークアップ言語を用いて実装されているコンテンツにおいては,要素には完全な開始タグ及び終了タグがあり,要素は仕様に従って入れ子になっていて,要素には重複した属性がなく,どのID も一意的である。ただし,仕様で認められているものを除く。

JIS X 8341-3:2016 / WCAG 2.0「4.1 互換性のガイドライン」