HTML の id の大文字・小文字の問題
HTMLで小文字になっているid属性の値が大文字に変換されてしまう問題
? そういえばそんな話があったなぁ。
今更だが、俺はこれは大した問題ではないと考えている。というか、これまでの議論では一つ大事な論点が忘れ去られているような気がする。それは、URI の fragment 部分 (#
より後の部分) と (case-folding が行われた) id 属性値とを比較する際においても大文字と小文字を区別しなければならないのか、ということだ。
Fragment 部分と id 属性値の比較が大文字小文字の区別無しに行われるならば、何も問題ないではないか。RFC 3986, 3.5 Fragment によれば fragment 部分をどう扱うかはメディアタイプごとに決めてよいことになっている。となると HTML の仕様書に fragment 部分の扱いについてどうか書いてあるかが問題になるわけだが、HTML 4.01 Specification, 12.2.3 Anchors with the id attribute を見ると、比較の際に大文字小文字を区別するかに関する規定はないものの、明らかに区別しないで比較することを前提に書かれた例が見つかる。となれば、fragment 部分と id 属性値の比較は大文字小文字の区別無しにやるものだと解するのが自然だろう。
ほら、別に何も問題ないではないか。
| 固定リンク
コメント
2年前の記事に突っ込みを入れるのはアレですが
> 比較の際に大文字小文字を区別するかに関する規定はない
> fragment 部分と id 属性値の比較は大文字小文字の区別無しにやるものだと解するのが自然だろう。
HTML 4.01仕様の"12.2.1 Syntax of anchor names" [1] によれば
> An anchor name is the value of either the name or id attribute when used in the context of anchors.
> String matching: Comparisons between fragment identifiers and anchor names must be done by exact (case-sensitive) match.
とあるので、比較の際に大文字小文字は区別されます。
[1] http://www.w3.org/TR/1999/REC-html401-19991224/struct/links.html#h-12.2.1
投稿: | 2009年10月21日 (水) 08時54分