HTMLにおけるid属性問題について、今更ながら

先月あたりにウェブ技術に関心の高い某方面において話題となっていた、HTML 4.01 / ISO-HTMLにおけるid属性問題について、今更ながら言及してみたり。説明は以下のページを参照のこと。

XHTMLにとっては対象外の話なので、当初「自分とこはあまり気にしなくていいやー」とのほほんとしていたのですが、HTML 4.01/ISO-HTMLを書く側だけでなく参照(リンク)する側にも関係する話であることを正に己の所業を以って指摘され、認識を改めたんでありました。とは言え図らずも手ごろな実例を提供できたことで理解し易くなって良かったと思ってますので、お気になさらず。>satosiiさん

さてXHTMLを書いていてもリンク先がHTML 4.01 / ISO-HTMLの場合は気をつけなければいけないことが分かったところで、リンクしている方としては実際どのように対処すべきかを考えないといけないのですが、取り敢えず思いつく方法としては二通り。

※fragmentというのは、例えば http://example.com/a.html#AAA というURLの中のAAAの部分です。

しかしながら実際ブラウザでの実装はどうなっているのかを確認してみると、

IE 5.5/6.0
fragmentの大文字・小文字を区別しない
Mozilla 1.5
fragmentの大文字・小文字を区別する。
Opera 7.2
fragmentの大文字・小文字を区別する。

※Windows 98/2000にて確認。いずれも、id属性/name属性、またXHTML/HTMLによらず。

となってました。IEでの実装が予想外でしたが、その御蔭で、リンク先URLのfragmentを大文字にしてしまってもある程度多くの利用者にとっては問題とならない、と言えそうな。また仮にfragmentを変更した所為で文書の途中へ直接リンクできなくても、ブラウザがHTMLファイルさえ取得できてれば該当の箇所を探すことも可能ではあるでしょう。

……とは言っても、MozillaやOperaの利用者には負担をかけることになるわけで、やはりどっちをとるか迷うところではあります。

* * *

HTML 4.01 / ISO-HTMLを書いていた人がname属性でなくid属性による参照を採用していた場合の対処としては、「id属性をやめてa要素のname属性のみの参照に変更する」という対処もありなんではないかと思います。name属性は大文字・小文字を区別するので、もともと意図していた通りの参照が可能ですし、またid属性による参照に対応していないブラウザもある(NN4とか)ので、後方互換性にも配慮された文書にすることもできて一石二鳥でもあります。「XHTMLに移行するのは気が引ける」という方にも、既知のHTMLの記法にて対応できるので気分的に幾らかは楽かも。

(2003年12月8日)

北村曉 kits@akatsukinishisu.net