XMLサーバ/Cocoon自由自在!
第3回 XML文書をiモードとPalmに対応させる


1つのXML文書を、PC用やPalm用、携帯電話用など、さまざまな情報機器に合わせて変換できるのは、XMLの特徴の1つといっていいだろう。Cocoonを使えば、そうした仕組みを実現できる。今回は、用途に応じてXML文書を変換するための仕組みと、スタイルシートの切り替え方法について解説しよう。

太田一郎
ティアイエス株式会社
2001/12/5


スタイルシートの切り替えに挑戦

 前回「XML文書をCocoonでパブリッシュする」では、Cocoonを用いたサーバサイドでのXSLT変換の例を取り上げました。XSLTのスタイルシートを適用するだけなら、Webブラウザ上で適用するのと大差ないのでは、と思われた向きもあるでしょう。そこで今回は、サーバサイドだからこそできるCocoonならではの応用例について紹介します。

 World Wide Webといえば、昔はPCで見るものでしたが、最近ではPDAやスマートフォン、いわゆる携帯電話からもアクセスできるようになりました。利用者からするといろいろなデバイスからWebの情報にアクセスできるようになったわけで非常にめでたいという話なのですが、情報を提供する側からいうとそれほど良い話ばかりでもありません。

 さまざまなデバイスからWebにアクセスできるようになったといっても、それぞれの表現能力(画面の大きさ、解像度や色数)は大きく異なります。いろいろなデバイスに情報を提供するためには、それぞれのデバイスで適切に表示できるよう、複数の形式で情報、すなわち複数のHTML文書を準備する必要がでてくるわけです。情報の更新の手間などを考えるとこれはなかなか大変です。

 そこでXMLの登場です。情報そのものはXML文書で作成しておき、アクセスしてきたデバイスに応じてスタイルシートを切り替えてやるのです。スタイルシートを複数用意するという手間はありますが、情報自体は一元管理できますから使わない手はありません。

 これを実現するにはWebサーバにそれなりの仕組みが必要になってきますが、Cocoonを用いると非常に簡単に実現することができます。今回は、このCocoonのスタイルシート切り替えの機能について見ていくことにしましょう。

スタイルシート切り替えサンプル 〜 Hello World

 まずは、非常に簡単なサンプルから取り上げてみましょう。題材は前回取り上げたサンプルの文書です(リスト1)。

<?xml version="1.0" encoding="Shift_JIS" ?>

<message>
  Hello, world!
</message>
リスト1 hello.xml

 前回は単純にXML文書をHTMLに変換して表示させただけでした。今回は、PC上のWebブラウザとしてMozilla、携帯電話としてiモードの、2種類のWebブラウザを想定して、それぞれに最適化されたHTMLへと出力を切り替えてみることにします。

 最初は簡単に、出力メッセージに付加するラベルだけ切り替えてみることにしましょう(リスト2とリスト3)。

<html>

  <head>
    <title>Hello World!</title>
    <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
  </head>

  <body> Mozillaで出力: Hello, World! </body>

</html>
リスト2 Mozilla用のHTML

<html>

  <head>
    <title>Hello World!</title>
    <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
  </head>

  <body> i-modeで出力: <br> Hello, World! </body>

</html>
リスト3 iモード用のHTML

 これらを出力するためのスタイルシートは、それぞれリスト4およびリスト5のような形になります。

<?xml version="1.0" encoding="Shift_JIS" ?>
……
    <body>
      Mozillaで出力: <xsl:value-of select="/message" />
    </body>


  </html>
</xsl:template>


</xsl:stylesheet>
リスト4 Mozilla用の出力を行うためのスタイルシート(hello-mozilla.xsl)

<?xml version="1.0" encoding="Shift_JIS" ?>
……
      <body>
        i-modeで出力: <br /> <xsl:value-of select="/message" />
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
リスト5 iモード用の出力を行うためのスタイルシート(hello-imode.xsl)

 いずれも前回取り上げた例題とほぼ同じなので、詳しい説明は不要ですね?

 さて、これで準備はほぼ完了です。あとはCocoonに対して、これらのスタイルシートを切り替えるように指示を出すだけです。次のページでは、その方法について紹介していきましょう。

  スタイルシート切り替えの仕組みは?

Index
XMLサーバ/Cocoon自由自在!
第3回 XML文書をiモードとPalmに対応させる
スタイルシートの切り替えに挑戦
  スタイルシート切り替えの仕組みは?
  注文リストをiモード用とPalm用に変換してみる

「XMLサーバ/Cocoon自由自在!」

 



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

注目のテーマ

HTML5+UX 記事ランキング

本日月間