[index]
[top]
[bottom]
[prev]
[next]

HTMLとSVGを融合させる

SVGのちょっとしたさわり

SVGと言えば、次世代Webの中核を担うとみなされている、クールな技術です(ほんとか?)。なんといっても、Webページに斜めの線が引けるのですから。

下の四角と斜めの罫線は、Webブラウザの幅を変更すると、ちゃんと追従すると思います。画像ではありません。

ところで、どれほど使えるか

2007/1現在での、主要なWebブラウザの最新ヴァージョンによるサポートの状況は、以下のような状態です。当コンテンツで紹介する内容は、SVGとHTMLが混在することが前提なので、プラグインによるサポートは考慮にいれていません。

Webブラウザサポート状態
Firefox 2.0なんとか実用になるレベルでサポート
Opera 9なんとか実用になるレベルでサポート(らしい)※
Safariあまり実用にならないレベルでサポート(らしい)※
IE 7未サポート(将来はサポート予定?)
MIMEタイプのapplication/xml+xhtmlにも対応できていないところを見ると、対応するのはかなり難しそう。
そもそも、標準に準拠したくてもできないのが、本音なのではないでしょうか。
IEとは別の、アプリケーションブラウザとでも云ったプログラムをリリースした方が、実現性があるのでは?

なんと、75%ものWebブラウザが、なんらかのサポートをしているのです(数字ってすばらしい(^_^;)。

まだまだ、完璧というわけではありませんが、テトリスやフリーセルといったゲームなども、SVGとJavaScriptで実装されています。今後、キラーアプリが出てきて、「まともにSVGをサポートしないWebブラウザなんて、使えないね。」と言われるようになるでしょう、きっと。

※ (らしい)と言うのは、使ったことがないので、Web上で情報を集めただけということです。間違っていたらごめんなさい。

HTMLとSVGを融合させる

さて本題です。なぜ「HTMLとSVGを融合させ」たいかと言うと、やはりテキストの処理はHTMLに任せたいからです。もちろんSVGでも、テキストの処理はできますが、やはり「餅は餅屋」で、専門家に任せられるものは、任せたほうが安心です。

くらすA
くらすB

「くらすA」を継承して「くらすB」を作ってみました(笑)。簡単なサンプルですが、何か可能性を感じないでしょうか。UMLくらいは、問題なく書けそうです。

SVGで四角の中に文字をいれて、その文字をセンター合わせにすると言うのは、結構難儀なのですが、HTMLであればお手のものです。

SVG+HTMLを使う上での留意点

ファイルの拡張子(ディスクトップ上でのMIMEタイプ)

私の環境(Linux+Gnome 2.14)では、拡張子がxhtmlのXMLファイルは、MIMEタイプがapplication/xml+xhtmlのファイルと認識されます。

Firefoxに、HTML+SVG(正確にはXHTML+SVG)のドキュメントを正しく表示させるためには、このMIMEタイプである必要があります。

Windows 2000でも、拡張子がxhtmlのXMLファイルは、MIMEタイプがapplication/xml+xhtmlのファイルと認識される様です。但し、これはFirefoxインストール時に、Firefox専用のファイルタイプとして登録されているようなので、そのほかのアプリケーションをインストールしている場合、どのような設定になっているかは定かではありません。

Windowsは、アプリケーションをインストールする度に、拡張子とファイルタイプの関連が変わるので、なんとも云えません。

Webサーバの設定(コンテンツタイプ)

最近のApacheであれば、拡張子がxhtmlのファイルは、コンテンツタイプをapplication/xml+xhtmlとして、レスポンスしてくるので、問題なく表示できるはずです。

SVGの部分が正しく表示されない場合は、コンテンツタイプがtext/htmlなどになっている可能性があります。ページの情報を表示(Firefoxの場合は、マウス右クリックで「ページの情報を表示(I)」を選択)して、MIMEタイプが何になっているか、確認してください。

そもそもHTMLドキュメントとして表示されず、単なるテキストとして表示されてしまったり、ダウンロードされてしまう場合は、拡張子がxhtmlのファイルに、Webサーバが対応していない可能性があります。拡張子を、xmlに変更してみてください。

それでもダメな場合は、.htaccess ファイル(Apacheの場合)で設定するか、サーバの管理者に確認してみてください。