第3回 XML文書をiモードとPalmに対応させる
スタイルシート切り替えの仕組みは? |
スタイルシートの切り替えで、1つのXML文書をPC用にもiモード用にも変換できることがお分かりいただけたら、次はそのスタイルシートをCocoonで切り替える方法について紹介します。
■スタイルシートを指定するプロセッシングインストラクション
リスト1のXML文書に、スタイルシートを適用するためのプロセッシングインストラクションを記述します(リスト6)。
<?xml version="1.0" encoding="Shift_JIS"
?> <message> |
リスト6 スタイルシートの切り替えを指定 |
前回の例題と異なり、スタイルシートが2種類指定されている点と、それぞれにmedia属性が指定されている点に注意してください。このmedia属性の値が、Webブラウザの種類に対応しています。ここにどんなWebブラウザを指定することができるのか、ざっと表1にまとめておきました。
|
||||||||||||||
表1 media属性で指定できる主なWebブラウザの一覧 |
もう詳しい説明は不要かと思いますが、CocoonはアクセスしてきたWebブラウザの種類とmedia属性を比較し、適用すべきスタイルシートを選択します。
意外に簡単ですね。実際の出力例を、それぞれ画面1と画面2にあげておきますので確認してみてください。
|
|
■スタイルシート切り替えの原理
さて、表1を見て少し物足りなく感じた方もいるのではないでしょうか? Internet Explorer(IE)やMozillaなど、有名どころのWebブラウザは含まれていますが、もしかするとあなたのお気に入りのWebブラウザは見当たらないかもしれません。
ご安心ください。単に、デフォルトでは未サポートというだけの話ですので、きちんと設定してやれば問題ありません。ここではどうやってその設定を行うのかについて見ていきたいと思いますが、そのためにはまず、HTTPリクエストの「USER-AGENTヘッダ」について知る必要があります。
WebブラウザとHTTPサーバ間の通信は、HTTPリクエストおよびレスポンスのやりとりが繰り返されることにより行われています。このHTTPリクエストには、URLをはじめクライアント側のさまざまな情報が含まれています。そのうちの1つが「USER-AGENTヘッダ」と呼ばれる、クライアントの種別を表す情報です。
例えばMozillaだと以下のような文字列がUSER-AGENTヘッダの値としてサーバに送信されています。
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.5)
Gecko/20011011 |
同様に、IEでは以下のような文字列がUSER-AGENTヘッダの値としてサーバに送信されています。
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) |
ただし、利用しているWebブラウザのバージョンにより、これらの値は微妙に異なる可能性があります。
また、これらの情報は、ServletをはじめとするHTTPサーバ上のプログラムからアクセス可能になっています。ここでピンときた方も多いかと思いますが、Cocoonもこのヘッダ情報を利用しているのです。
Cocoonの設定ファイルに、このヘッダ情報に関する定義が含まれています。cocoon.propertiesをオープンして、リスト7のような記述を探してみてください。
browser.0 = explorer=MSIE |
リスト7 Webブラウザの定義 |
それぞれの行が、media属性で用いることのできるWebブラウザを定義しています。説明するまでもないかもしれませんが、それぞれの行は以下のような形になっています。
browser.数字 = media属性で指定する識別子=USER-AGENTに含まれる文字列 |
さて、ここまできたらもう説明を加える必要はないでしょう。もし、あなたのお気に入りのWebブラウザがCocoonでサポートされていないなら、ここに定義を追加してやればよいのです。
ここでは例として、Palm用のWebブラウザXiinoの設定を付け加えてみます。まず、XiinoのUSER-AGENTヘッダですが、以下のような値に設定されています(PalmVで利用している場合)。
Xiino/1.0.5J[ja](v.3.5.0; 153x130; g4) |
Xiinoという文字列がUSER-AGENTヘッダに含まれていれば、Xiinoからのアクセスであると判断してもよさそうです。以下に示すような定義をcocoon.propertiesに付け加えてやりましょう。
browser.14 = xiino/Xiino |
これで、media属性の値としてxiinoを指定できるようになりました。
注文リストをiモード用とPalm用に変換してみる |
Index | |
XMLサーバ/Cocoon自由自在! 第3回 XML文書をiモードとPalmに対応させる |
|
スタイルシートの切り替えに挑戦 | |
スタイルシート切り替えの仕組みは? | |
注文リストをiモード用とPalm用に変換してみる |
「XMLサーバ/Cocoon自由自在!」 |
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|