CodeZine(コードジン)

特集ページ一覧

今からでも遅くない JAXPを学ぼう!(前編)
XPathとXSLTを体験する

まずはXPathとXSLTの理解から

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/05/31 14:00

ダウンロード サンプルコード (3.2 KB)

目次

XSLTとは何か

 XSLTとはXML文書からXML文書へ、あるいはXML文書からHTMLファイルなどへ変換するための仕様です。要素でないものから要素を作りだしたり、ある要素を別の要素に変換したり、属性を要素に変換したり、兄弟の関係にあった要素間の関係を親子の関係に変換したりと盛りだくさんの変換が可能です。このような意味ではXSLTは言語であると言えます。

 XSLTの構文で記述されたファイルをXSLTスタイルシートと呼びます。リスト1がスタイルシートの例です。これはリスト2.のMeigara.xmlをHTMLファイルに変換するためのXSLTスタイルシートです。次のように、XSLTスタイルシートもXMLで記述されています。内容はまだ説明しません。とりあえずXML文書がHTMLに変換されブラウザに表示されることを確認します。

リスト1.XSLTSample01.xsl
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で表現することから始めます。

表1.芋焼酎銘柄リスト
銘柄名(NAME) アルコール度数(AVB) 容量(VOLUME) 価格(PRICE)
がんご焼酎屋 25 1800 2630
一壺春 25 720 1360
杜氏潤平紅芋原酒 38 500 2050

 これを整形式(DTDやXML Schemaで定義しない)のXML文書で表すとリスト2のようになります。Meigara.xmlというXML文書名にしました。

リスト2.Meigara.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>

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:今からでも遅くない、JAXPを学ぼう!

著者プロフィール

  • 川久保 智晴(カワクボ トモハル)

    haruプログラミング教室(https://haru-idea.jp/)主宰。 COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP, &nbsp;C#, JavaScript...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5