水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > NAMECASE GENERAL YES の意味

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の文字で代替する。

以上、JIS X 4151-1992 12.4.5 命名方法 より

という処理をしろということですから、小文字は大文字に変換されるのです。

他方、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 にはこのような問題はないわけです。

関連する話題: HTML / SGML

最近の日記

関わった本など