実践! XMLアプリケーションサーバ「BXS」

4. Webブラウザ毎に出力を切り替える

 以上でスタイルシートの準備ができました。では実際にスタイルシートの切り替えを行ってみましょう。基本的には通常のスタイルシート指定とほぼ同じですが、以下の2点が異なっています。

  • スタイルシート指定が1つだけでなく複数個ある
  • 各スタイルシート指定に、media属性が指定されている

 リスト5(bookmark-2.xml)の実際の定義例を見ながら解説していきましょう。

<?xml version="1.0" encoding="utf-8" ?>

<?xml-stylesheet href="bookmark-2-imode.xsl" type="text/xsl" media="imode" ?>
<?xml-stylesheet href="bookmark-2-explorer.xsl" type="text/xsl" media="explorer" ?>

<bookmark>

<category id="IT" label="IT関連サイト" />
<category id="holms" label="ホームズ愛好家向けサイト" />

…………以下略

リスト5 複数のスタイルシート指定例

 スタイルシートを指定する行、<?xml-stylesheet ... ?>がIEとiモード用に1つずつ記述されており、それぞれのスタイルシート名が指定されています(IE 用のスタイルシートは便宜上、bookmark-2-explorer.xsl としてあります)。通常のスタイルシート指定と違うところは、media属性にWebブラウザの識別子を指定しているところです。IE用を指す識別子が“explorer”、iモードを指す識別子が“imode”になっています。

 本来、media属性はレンダリングを行う媒体を指定するためのものです。いくつかのXSLTエンジンでは、この属性を用いてWebブラウザの指定を行うようになっており、BXSに内蔵されているXSLTエンジン「BXSLT」もその仕様を踏襲しています。正式な仕様で定められているわけではないので、Webブラウザを示す識別子としてどのようなものが指定できるのかはアプリケーションにより異なるのですが、BXSLTでは下記に示すような識別子を用いることができます。

識別子 説明
explorer Internet Explorer
mozilla5 Netscape Navigator 6
netscape Netscape Navigator 4
imode iモード携帯端末
lynx Lynx
表1 BXSLTで指定できるおもなブラウザ識別子

 識別子の正確な一覧については、BXSLTのソースディストリビューションに含まれるmedia.propertiesを参照してください。また、未サポートのWebブラウザについては bxs@baykit.orgにリクエストを出せばよいでしょう。

 bookmark-2.xml を実際にWebブラウザで確認した例を図3と図4に示します。IE用の方は区別がつきやすいように見出しを少し修正してあります。


画面3 bookmark-2-explorer.xsl の出力結果

画面4 bookmark-2-imode.xsl の出力結果

 少し感じが分かってきた方は、以下の課題に挑戦してみてください。それほど難しくはないはずです。

  • サイト情報に携帯端末でも見られるかどうかの情報を追加し、その情報に基づいて表示するサイトを選択する
  • 他のブラウザ(NN や Lynx)用のスタイルシートも定義し、それらのWebブラウザでも見れるようにする

 今のサンプルのままだとNNとIEで出力を切り替えることができてもそれほど面白味はありませんので、CSS を用いてレイアウトに凝るとよいでしょう。

■さらにご自身で応用を

 前後編にわたり、BXSを用いたWebページ作成の例を解説してきました。例題ということで非常に簡単なサンプルばかりでしたが、フロントページやブックマークという比較的身近だと思われる例を取り上げてみましたので、皆さんもぜひ実際に応用してみてください。

 BXS はインストールが簡単で、XMLを手軽に利用できるうえに、JavaのServletエンジンとしても利用できます。今回ご紹介した例のような静的なXML文書を表示するだけでなく、Servletを利用した複雑なDOMプログラミングも処理できます。こういったさまざまなBXSの応用については横浜Baykitのメーリングリストで議論されていますので、興味をもたれた方はぜひのぞいてみてください。


Index
実践! XMLアプリケーションサーバ「BXS」
第1回 XMLでWebサイトを作ろう
  1. Baykit XML Serverとは
  2. インストールしよう
  3. XMLのサンプルを表示させてみる
  4. XMLでWebページを作ろう
第2回 XSTLによるダイナミックな変換の実際
  1. データの内容に基づいた表示の加工
  2. さらにXSLTスタイルシートを改良
  3. Webブラウザ別のスタイルシートを用意
4. Webブラウザごとに出力を切り替える


XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日月間