小文字を大文字に変換して参照しなければならない。(例:のなら、もし参照した文書が HTML4 から XHTML になった時、その参照の仕方を<a href="#FOO">
)<a href="#foo">
の記述に直さねばならない、ということになったりするのだろうか(XHTML はまだよくわかっていないことが沢山)?
と述べられていたので、前回に引き続き「id属性値を小文字で書いたHTML4文書をXHTMLへ移行する」場合について考えてみます。
まず、HTML4およびISO-HTMLではHTMLにおけるid属性問題について、今更ながらで述べたような問題(仮にHTML id case問題と呼ぶことにします)があることはあるのですが、これはあくまで仕様を厳密に解釈した上での問題です。
実際に存在するブラウザの実装がどうなっているかと言えば、
<p id="foo">
)<a href="#foo">
)という風になっているのが大半かと思います。逆にfragmentを大文字に変えてしまうと、FirefoxやOperaでは参照できなかったりします。(サンプルHTML)
そんなわけで、ブラウザの実装も仕様を厳密に反映していないので、リンクを張ろうとする人は、ほとんどの人が小文字で書いてあるidをそのままURL参照のfragmentとして利用するのではないかと思います。
(そもそもHTML id case問題を知る人、またそれを気にしてリンクを張る人自体、滅多にいないようにも思いますが……)
また、LSCの29aにて、
フラグメント識別子はリソースを指定するわけではないので、URIの一部ではありません
なので、id属性値が変わっても無問題。と思ってたんですが実際どうなんだろう?
という言及がありましたが、そこからの連想で「例えfragmentが要素を正しく参照できなくても、対象のHTML文書そのものは取得できる」ということが言えるかと思います。つまりページが取得できてさえいれば、あとは読む人の判断でリンク先の箇所を探すこともできるわけで、fragmentが多少違っていたとしてもさほど致命的な問題ではない、と考えることもできるんじゃないでしょうか。
以上からすると、id属性値を小文字で書いたHTML4文書をXHTMLに移行してもそんなに大した影響は無い、という気がしますがいかがでしょう。
なお、fragmentについて細かいことを言うと、確かにRFC 2396ではfragmentはURIに含まれていなかったのですが、URIの仕様はRFC 3986で更新されており、URIはfragmentも含むものと定義が変更されています。