XMLってなぁに? 初級編 第12回
2005/08/14
この文書は執筆時点(2004/後半)での知識を基にしており、現状とあっていない可能性があります。
第12回
今回はXPathについて勉強してみよう。
XMLはツリー構造というのはもう理解してもらっていると思うが、身近にツリー構造を持っているものがもう1つある。
それがファイルシステム。
c:\documents and settings\user\filename.ext
などと使うがこれらはファイルパスと呼ばれている。
同じようにある位置を指し示す為の規格がXPATHだ。
今回使うXMLはややこしくなってほしいので、前回までのXMLには引退していただいて新しいXMLを定義する。
a.xml
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<店舗>
<店舗名>東京店</店舗名>
<在庫>
<商品 値段="5000" 個数="2">HDDレコーダ</商品>
<商品 値段="2000" 個数="1">CDプレイヤー</商品>
</在庫>
</店舗>
<店舗>
<店舗名>大阪店</店舗名>
<在庫>
<商品 値段="5000" 個数="3">HDDレコーダ</商品>
<商品 値段="1800" 個数="2">CDプレイヤー</商品>
<商品 値段="1800" 個数="2">PC</商品>
</在庫>
</店舗>
</ROOT>
そこそこ複雑なXMLだ。
このXMLはある商店の店舗情報とその在庫情報を網羅したXMLである。
店舗は大阪と、東京にあり、各店舗ごとに在庫管理を行っている。
このXMLからまずは店舗の一覧を抽出するXSLを書いてみよう。
a.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" /><xsl:template match="/">
<xsl:apply-templates />
</xsl:template><xsl:template match="/ROOT/店舗"><xsl:value-of select="店舗名" />
</xsl:template></xsl:stylesheet>
結果.txt
東京店大阪店
このようにテンプレートにばっちりとパスを記述する。
この場合には要素に対するテンプレートというよりは、構造を含んだ要素に対するテンプレートと考えるといい。
では全店舗の商品一覧を取得するxslを考えてみよう。