SVGで描画するサンプルコードをネットで探していると以下のようにxmlns属性や、xlinkがついているものがあります。
<svg xmlns=”http://www.w3.org/2000/svg” xmlns:xlink=”http://www.w3.org/1999/xlink”>
これはいったいなんなのだろう、必要なものなのか?と思い調べてみました。
xmlns、xmlns:xlinkは必要なのか
xmlnsってなに
そもそもxmlnsってなんだろうと思ったので調べてみました。
svgではxmlns属性を付与することができ、xmlnsは「XMLネームスペース (XML Name Space)」を意味しています。よくみれば英語の頭文字が使われてxmlnsとなっていることがわかります。
スペースというだけあって苗字のようなものとよく説明されていてリンクは基本固定だそうです。
xmlns:xlinkはめったに見かけませんがxmlns:xlinkは2つめのネームスペースといった感じだそうです。
HTML5では必要ない(インライン)
xmlnsはXHTMLで描画する際の手法でHTML5で描画する場合は記述する必要はないのだそうです。XMLを使う環境でなければ基本的にはHTML5では必要なしとのことなので書かなくて良さそうですね。。
参考サイト:https://stackoverflow.com/questions/18467982/are-svg-parameters-such-as-xmlns-and-version-needed
追記
コメントをいただき、間違いを教えていただきました。
HTMLページ内のインラインでSVGタグを埋め込む際にはHTMLファイルはMINE形式がtext/htmlであるためxmlns, xmlns:xlinkは不要(あってもいい)ですが、外部ファイルとしてSVGファイルを読み込む場合はファイルのMINE形式がimage/svg+xmlとなりXMLデータとなるためxmlns, xmlns:xlinkが必須となります。
MINE形式参考:拡張子とMIMEタイプ – とほほのWWW入門
HTML5に埋め込む「svgタグ」ではなく、
外部の「SVGファイル」を使用する場合は、
(中身がXMLなので)
xmlns, xmlns:xlinkが必要だと思います。
AAさん
ありがとうございます。
おっしゃる通りですね。
調べたら、外部の場合はxmlns, xmlns:xlink属性が必須とありました。
そういう観点で調べていなかったので勉強になりました。