生活

面白いことは特にない、ただの日記です(投稿後に、二三日かけて書き直します)

属性値

"http://openlab.ring.gr.jp/k16/htmllint/explain.html#lower-id
Another HTML-lint 結果の解説、#218:ID 属性の値 `XXXX` には小文字を含めないようにしましょう。より引用
ISO/IEC 15445 では、ID属性値には小文字を使わないことが推奨されています。⇒ User's Guide to ISO/IEC 15445:2000(E) ISO-HTML
これは、もともとSGML規格から導出されることなので、ISO-HTMLに限らずHTML4にも言えますが、ISO-HTMLではそのことが明記されているため、ID属性値に小文字を使っただけで警告されます。
SGML宣言の「NAMECASE GENERAL YES」は、単に大文字小文字を同一視せよという意味ではなく、小文字を大文字に変換してから解釈せよという規定です。これは、ID属性値にも適用されるため、HTML4では

    <a id="foo">

    <A ID="FOO">

と解釈されます。しかし、NAME属性値には適用されないので

    <a id="foo" name="foo">

    <A ID="FOO" NAME="foo">

となります。これは、NAME属性値と ID属性値とを同じにせよという規定に反しています。 HTML4ではこのような場合に ID属性に小文字が含まれていると警告されます。また、小文字の ID属性値に対して HREFでリンクされているときも警告されます。ここで注意しなければならないのは、

    <a id="foo">

を参照するには

    <a href="#FOO">

としなければならないということです。しかし、実際にこのようなSGML的に正しい挙動をするWWWブラウザがどの程度存在するのか、わたしは知りません。たいていは、小文字のフラグメントIDで動作するものと思われます。これは、利用者からは何の違和感もありません。

XHTMLでは、大文字小文字が区別されるのでこのような問題は発生しませんが、XHTMLからHTML内のIDを参照する場合は、そのID値は大文字に変換されるため、大文字で参照する必要があります。
(引用ここまで)
直すとなると、かなり大変。属性値が全てアルファベット小文字では拙いと云うことなのかな?