XML から XSL によって HTML を生成するためのメモ。 XSLT の仕様を解説するものではありません。
サンプルの XML データ & XSL ファイル
まず、サンプルの XML データとして、以下の様な XML ファイルがあるとします。
locke.xml:
<?xml version="1.0" encoding="UTF-8"?> <episode title="久遠の瞳" e-title="Eternal Eyes"> <story> 惑星ユーノで、エスパーの急死事件が発生。 ISC を「引退」していたロックは、ヤマトとともに事件の調査に乗り出す。 一連の事件の「犯人」は、超能力に反応して体内で起爆するナノマシンサイズの爆弾。 一連の事件は、すべてのエスパー抹殺を目論む男、 アーク・マイダスが計画したものだった・・・。 </story> <publication comics="久遠の瞳1-3(MFコミックス)"/> </episode>
また、上記の XML データに対して、HTML ファイルを生成する以下のような XSL ファイルを用意します。
locke.xsl:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="episode"> <h1><xsl:value-of select="@title"/></h1> <i><xsl:value-of select="@e-title"/></i><br/> <xsl:apply-templates/> </xsl:template> <xsl:template match="story"> <h4>ストーリー</h4> <p><xsl:value-of select="text()"/></p> </xsl:template> <xsl:template match="publication"> <h4>掲載巻</h4> <xsl:value-of select="@comic"/> </xsl:template> </xsl:stylesheet>
このサンプルを使って、XML に XSL を適用する4通りの方法を見ていきましょう。
XML に XSL を適用する[1] XML データに内でXSL ファイルを指定する
一番簡単なのが、XML データに以下の処理命令(processing instruction)を埋め込むことです:
<?xml-stylesheet type="text/xsl" href="locke.xsl" ?>
具体的には、locke.xml を以下のように変更します:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="locke.xsl" ?> <episode title="久遠の瞳" e-title="Eternal Eyes"> ...
ブラウザで locke.xml にアクセスすれば OK です。 ただし、この方法だと一般性のあるデータに特定の XSL ファイルを結びつけてしまうので、あまりよろしくありません。
XML に XSL を適用する[2] プロキシ・ファイルを作成
次の方法は XML データには修正を加えませんが、XSL ファイルへの修正と新たなプロキシ・ファイルが必要です。
まずはプロキシ・ファイル proxy.xml:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="locke.xsl" ?> <proxy/>
次に XSL ファイルへの修正:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <xsl:apply-templates select="document('locke.xml')/episode"/> </xsl:template> <xsl:template match="episode"> ... <!-- 以下は上記と同じ -->
ブラウザで proxy.xml にアクセスすれば OK です。
XML に XSL を適用する[3] Java プログラムを作成&実行
次は XML データ、XSL には修正を加えず、別途 Java プログラムを作成・実行して HTML ファイルを生成する方法です。 一番簡単な Java プログラムはおそらく次のようなものでしょう:
import javax.xml.transform.*; import javax.xml.transform.stream.*; public class HtmlGenerator { public static void main(String... args) throws TransformerConfigurationException, TransformerException{ Source xsl = new StreamSource("locke.xsl"); Transformer t = TransformerFactory.newInstance().newTransformer(xsl); Source src = new StreamSource("locke.xml"); Result result = new StreamResult("locke.html"); t.transform(src, result); } }
main メソッドを実行すると生成される locke.html ファイルに、ブラウザでアクセスすれば OK です。
XML に XSL を適用する[4] Ant タスクを作成&実行
最後はビルドツール Ant を用いて変換を行う方法です。 変換のためのタスクのみを書いておきます:
<xslt style="locke.xsl" in="locke.xml" out="locke.html" reloadstylesheet="true"/>
タグ名は「xslt」以外に「style」でもかまいません。 ビルド実行後に生成される locke.html にブラウザでアクセスすれば OK です。
- 作者: Steve Holzner,長瀬嘉秀(監訳),株式会社テクノロジックアート
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/11/18
- メディア: 大型本
- 購入: 2人 クリック: 19回
- この商品を含むブログ (15件) を見る
- 作者: 聖悠紀
- 出版社/メーカー: メディアファクトリー
- 発売日: 2007/09/18
- メディア: コミック
- この商品を含むブログ (5件) を見る