SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

まずはXPathとXSLTの理解から


ダウンロード サンプルコード (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>

次のページ
実際に変換する

この記事は参考になりましたか?

今からでも遅くない、JAXPを学ぼう!連載記事一覧
この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5137 2010/05/31 16:41

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー