XSLTとは何か
XSLTとはXML文書からXML文書へ、あるいはXML文書からHTMLファイルなどへ変換するための仕様です。要素でないものから要素を作りだしたり、ある要素を別の要素に変換したり、属性を要素に変換したり、兄弟の関係にあった要素間の関係を親子の関係に変換したりと盛りだくさんの変換が可能です。このような意味ではXSLTは言語であると言えます。
XSLTの構文で記述されたファイルをXSLTスタイルシートと呼びます。リスト1がスタイルシートの例です。これはリスト2.のMeigara.xmlをHTMLファイルに変換するためのXSLTスタイルシートです。次のように、XSLTスタイルシートもXMLで記述されています。内容はまだ説明しません。とりあえずXML文書がHTMLに変換されブラウザに表示されることを確認します。
001:<?xml version="1.0" encoding="UTF-8"?> 002: 003:<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 004: <xsl:output method="html"/> 005: 006: <xsl:template match="/MEIGARAS"> 007: <html> 008: <head> 009: <title>HTMLに変換する</title> 010: </head> 011: <body> 012: <table border="1"> 013: <tr> 014: <th>銘柄名</th> 015: <th>アルコール度数(%)</th> 016: <th>容量(ml)</th> 017: <th>価格(円)</th> 018: </tr> 019: <xsl:apply-templates/> 020: </table> 021: </body> 022: </html> 023: </xsl:template> 024: 025: <xsl:template match="MEIGARA"> 026: <xsl:for-each select="/MEIGARAS/*[.=current()]"> 027: <tr> 028: <td><xsl:value-of select="NAME"/></td> 029: <td><xsl:value-of select="ABV"/></td> 030: <td><xsl:value-of select="VOLUME"/></td> 031: <td><xsl:value-of select="PRICE"/></td> 032: </tr> 033: </xsl:for-each> 034: 035: </xsl:template> 036: 037:</xsl:stylesheet>
具体的な例から
筆者は芋焼酎が大好きということもあり、表1のような芋焼酎のリストをXMLで表現することから始めます。
| 銘柄名(NAME) | アルコール度数(AVB) | 容量(VOLUME) | 価格(PRICE) |
| がんご焼酎屋 | 25 | 1800 | 2630 |
| 一壺春 | 25 | 720 | 1360 |
| 杜氏潤平紅芋原酒 | 38 | 500 | 2050 |
これを整形式(DTDやXML Schemaで定義しない)のXML文書で表すとリスト2のようになります。Meigara.xmlというXML文書名にしました。
001:<?xml version="1.0" encoding="UTF-8"?> 002: 003:<MEIGARAS> 004: <MEIGARA> 005: <NAME>がんご焼酎屋</NAME> 006: <ABV>25</ABV><!-- alcohol by volume(アルコール度数)の略 --> 007: <VOLUME>1800</VOLUME> 008: <PRICE>2630</PRICE> 009: </MEIGARA> 010: <MEIGARA> 011: <NAME>一壺春</NAME> 012: <ABV>25</ABV> 013: <VOLUME>720</VOLUME> 014: <PRICE>1360</PRICE> 015: </MEIGARA> 016: <MEIGARA> 017: <NAME>杜氏潤平紅芋原酒</NAME> 018: <ABV>38</ABV> 019: <VOLUME>500</VOLUME> 020: <PRICE>2050</PRICE> 021: </MEIGARA> 022:</MEIGARAS>
