NAMECASE GENERAL YES の意味
2003年11月26日(水曜日)
NAMECASE GENERAL YES の意味
「[htmllint 1142] ID & NAME」(Another HTML-lint のメーリングリスト、渡辺さんの投稿) がたいへん興味深い話でした。
ISO/IEC15445 や HTML4 などでは NAMECASE GENERAL YES なので、ID 型の属性値の大文字小文字は区別されない……と一般的には理解されていますが、NAMECASE GENERAL YES というのは厳密には
LC Letterの文字は対応するUC Letterの文字で代替し,LCNMSTRT 又はLCNMCHARの文字は対応するUCNMSTRT又はUCNMCHARの文字で代替する。
という処理をしろということですから、小文字は大文字に変換されるのです。
他方、CDATA 型の属性値については変換処理されませんから、HTML4 における
<a name="foo" id="foo" href="#foo">
という指定は、
<a name="foo" id="FOO" href="#foo">
と解釈されてしまうことになります。
……という話で、User's Guide to ISO/IEC 15445:2000 HyperText Markup Language (HTML) 16.2 Folding of anchors (purl.org) では
We recommend that authors satisfy these requirements by restricting themselves to the 40 characters "ABCDEFGHIJKLMNOPQRSTUVWXYZ.-_:0123456789" for ID and NAME values, and for the corresponding HREF values.
以上、User's Guide to ISO/IEC 15445:2000 HyperText Markup Language (HTML) 16.2 Folding of anchors より
となっていると。
しかし、URL は小文字がデファクトスタンダードなわけで、フラグメント ID だけ大文字というのはなんとも据わりが悪いですね。実際、小文字にしている場合の方が多いでしょうし。
※鳩丸などの HTML4 でマーク付けされているものも全て小文字にしていると思いますが、修正する気まったくなし。
ちなみに XML では大文字小文字を区別するため、大文字に変換されるようなことはありません。XHTML にはこのような問題はないわけです。
- 「NAMECASE GENERAL YES の意味」へのコメント (2件)
- 前(古い): 実は紙
- 次(新しい): Exploit即時完全公開の是非