SVGのxlink:href属性について
「国土地理院 SVG 地図を JavaScript オブジェクトにする」
http://d.hatena.ne.jp/hfu/20070822
JavaScriptオブジェクトにすると、使いやすくて、便利になるかもしれません。
それはそうと、その中の技術小話で、トラックバック先の著者は
と名前空間の必要性に疑問を投げかけておられます。確かに、名前空間は必要ないように思われます。
しかし、SVGのhref属性に限ってだけは必要です。
というのは、HTMLとSVGを比較すればわかります。
HTMLだと <a href="h.jpg">トラの画像</a>を見つけました。 SVG(XLinkを利用しないと仮定)だと、 <a href="h.jpg"> <text x="20" y="30">トラの画像</text> <circle ../> </a>
HTMLは文字が中心ですから、さりげなくリンク先の情報を書くことができます。
ですが、SVGだと絵やデザインが中心となるわけですから、自然に書くことが難しくなります。
そこで、HTMLでも使われているようなtitle属性を使います。こうすれば、リンク先の情報を理解しやすくなります。
<a href="h.jpg" title="トラの画像"> <circle ../> </a>
しかし、これだと、circle(円)の画像そのものに「トラの画像」というタイトルがつけられているのだと勘違いされます。このことは、HTMLで表現するとわかりやすくなるでしょう。
<a href="h.jpg" title="トラの画像"> <img src="cirle.png" ../> </a>
というように紛らわしいのです。以上のような問題を避けるために、SVGではXLinkを使います。
<a xlink:href="h.jpg" xlink:title="トラの画像"> <circle ../> </a>