XMLサーバ/Cocoon自由自在!
第2回 XML文書をCocoonでパブリッシュする


Cocoonの機能を使えば、XML文書をHTMLやPDFなどさまざまな形式のデータに変換できる。今回はその最も基本的な機能としてXML文書をHTMLに変換し、Webブラウザで参照するところまでを解説する。CocoonのXMLサーバとしての基本的な機能が理解いただけるだろう。

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


Hello.xmlをWebブラウザに表示する

 「第1回 Cocoonをセットアップしよう」では、CocoonおよびTomcatのセットアップについて解説しました。今回から、Cocoonの実際の利用方法、すなわちXML文書のWebパブリッシングについて解説していきたいと思います。

 今回はまず、非常に簡単なXSLTのサンプルを作成してCocoonの動作を確認した後、XMLで表現された注文伝票のデータをWebブラウザで表示することに挑戦します。なお、本連載では基本的に、XMLとXSLTの基礎知識については習得済みという前提で話を進めていますが、ところどころ話の流れを理解するうえで必要な事柄については解説していきますのでご安心ください。

XML版の“Hello World”を表示

 それでは早速、簡単なサンプルから見ていくことにしましょう。定番ですが、Hello World サンプルを用意しました(リスト1)。このXML文書をCocoonでHTMLに変換し、Webブラウザで見てみることにしましょう。

<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="hello.xsl" ?>
<?cocoon-process type="xslt" ?>


<message>
  Hello, world!
</message>

リスト1 hello.xml

 リスト1を見ていただければすぐにお分かりになるかと思いますが、内容としては非常に簡単なものです。唯一のタグにしてルートタグである<message>の中に、メッセージの情報を記述しています。注意すべきは、XML宣言の直後にあるプロセッシング・インストラクションの指定です。

<?xml-stylesheet type="text/xsl" href="hello.xsl" ?>
<?cocoon-process type="xslt"?>

  ここではまず、HTMLとして表示するためのスタイルシートhello.xslを<?xml-stylesheet?>で指定しています。WebブラウザにXSLTの変換処理を行わせるのであれば、この記述だけで十分です。

 しかし次の行でさらに、<?cocoon-process?>というプロセッシング・インストラクションが指定されています。これはCocoonに対し、指定されたスタイルシートを用いて変換を行うことを指示するものです。これがなければCocoonでの変換処理は行われませんので注意してください。

HTMLへ変換するスタイルシート

 次に変換に用いる実際のスタイルシートを見てみましょう。これはリスト2のようになります。

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

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

<xsl:output method="html"
encoding="Shift_JIS"
doctype-public="-//W3C//DTD XHTML 1.0 Strict //EN"
doctype-system="DTD/xhtml1-strict.dtd" />

  <xsl:template match="/">
    <html>
      <head>
        <title>Hello World!</title>
          <meta http-equiv="Content-Type"
          content="text/html; charset=Shift_JIS" />
      </head>
      <body>
        <xsl:value-of select="/message" />
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>
リスト2 hello.xsl

 このスタイルシートで注目すべきところは以下の2点です。

  • <xsl:output>による出力形式の指定
  • <xsl:value-of>によるエレメント値の取り出し

(1) <xsl:output>による出力形式の指定

 変換した結果のフォーマットについての付加情報を指定するもので、出力フォーマット(HTML/XML/プレーンテキスト)、エンコーディング、DOCTYPEの指定が可能です。ここでは、出力フォーマットとして「HTML」、エンコーディングとして「Shift_JIS」、そしてDOCTYPEとして「XHTML 1.0 Strict」を指定しています。

(2) <xsl:value-of>によるエレメント値の取り出し

 <xsl:value-of>は、XSLTで最もよく使うタグの1つであり、XML文書の任意の位置のエレメント/属性の値を取り出すものです。ここでは、“/message”の値、すなわちルートタグ<message>の値を取り出しています。

CocoonでXMLからHTMLへ

 ではCocoonを用いて、このサンプルを表示させてみましょう。前回準備したCocoon用のWebアプリケーションのディレクトリに、hello.xmlおよびhello.xslを置いてください。前回の説明どおりにCocoonおよびTomcatをセットアップしているなら、C:\Cocoon\samplesにファイルを置くことになります(Windowsの場合)。

 Tomcatが起動していることを確認して、以下のURLをオープンしてください。

http://localhost:8080/cocoon/hello.xml

 画面1のような表示が確認できれば問題ありません。

画面1 Hello World サンプルの動作を確認してみる

 また、このXMLからHTMLの変換処理が、WebブラウザでなくTomcat側で行われていることを確認してみましょう。ソースを表示させてみてください。

画面2 変換された結果を確認

 図2はMozillaにて、URLのソースを表示させたものですが、hello.xmlが、HTMLに変換されていることが確認できます。つまり、Webブラウザには変換後のHTMLが届いたことが分かります。

  注文データを表形式で出力

Index
XMLサーバ/Cocoon自由自在!
第2回 XML文書をCocoonでパブリッシュする
Hello.xmlをWebブラウザで表示する
  注文データを表形式で出力

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


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

注目のテーマ

HTML5+UX 記事ランキング

本日月間