文書断片についてのお話。
日々更新されるコンテンツ(日記型コンテンツ)の各記事には、idを振るべきではありません(保存版には振った方が便利ですが)。更新された際、URIが消滅することになってしまいます。
というわけでスタイルシートを慌てて修正。このagendaの方はウッカリしていただけなのですが、よく考えてみるとPersonnel更新情報の方もまずかったのです。クライアントサイドでのXSL変換後に生成されるURIというのは、結構盲点でした。
「リンクはジャンプではない」が頭でしか理解できていない証拠ですな。染み付いているという奴でしょうか。これが本当に分かっていれば、こういったミスは二度と起らない筈なのです。
記事の見出し要素にidを振るか、記事を包括したdiv要素に振るか、という話題が出ていますが、どちらでも参照したい(参照してもらいたい)と考えるものに振れば良いのではないかと思います。「思います」というか、当然のことではあります。寧ろ振らなくても問題ないわけです。idによって示された断片は、制作者以外の参照する側が参照しようと思った部分であるとは限りませんから、その参照する側にとっては結局のところ不完全な仕様であり、不便も何も、欲を言えばきりが無いのです。
問題は、参照方法です。参照する側の問題です。「どこどこの12月25日の記事」というテキストをa要素にして、フラグメント識別子つきのURIで表されるリソースにリンクしたとすれば、その断片は「記事そのもの」でなければおかしい訳です。見出しや空文字列にリンクする意図は無いのですから。
ある長大な文書があったとします。例えばW3Cに置かれている仕様書を想像して下さい。その中の、ある用語の定義にリンクしたい場合、リンクした側には、その仕様書全体を紹介する意図は全くありませんし、利用者側も、文書全体をレンダリングさせたいとは思いません。にもかかわらず、現在の一般的なWWWブラウザは、文書断片へのリンクであったとしても文書全体をレンダリングする仕様になっており、WWWユーザー全体でどれほどの時間の損失が発生しているか、その量は計り知れないものがあります。
何故改善されないのでしょうか。私は2つの原因があると考えます。
2. については、個人レベルで改良すれば誰から文句を言われるものでもありませんが、その場合でも、文書断片のみをレンダリングするようにブラウザを改良したとしても、1. の問題があるため多くの場合全く役に立ちません。 仕様書の例でいえば、<a name="dt_foo"></a>のような断片が散見されますが、それらにリンクしても空の文字列がレンダリングされるだけです。つまり、1. が原因で改善不可能、あるいは無駄になってしまうのです。
「リンク=ジャンプ」という考え方が如何に様々な実害をもたらしているか、良く私はここで書きますが、この例え話(あるいは、<a name="dt_foo"></a>)などもその氷山の一角といったところでしょうか。今更どうにもならないのです。
どの文書断片に識別子が振られていようと私の知るところではありませんが、私が意図する参照先と明らかに異なる断片であった場合、その識別子は今後利用しないことになりそうです。不便ですが、徹底しなければいつまでも観念のままです。参照ではなく、引用することが妥当となるように文章を書き直すことも多くなるでしょう。意図しない空文字列にリンクするよりは幾分マシというものです。
リッチなブラウザを利用されている方はフラグメント参照もどうぞ。