中の技術日誌
 

XMLってなぁに? 初級編 第13回

2005/08/14

この文書は執筆時点(2004/後半)での知識を基にしており、現状とあっていない可能性があります。

第13回

問い:全店舗の商品一覧を取得するxslを考えてみよう。

前回までの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
東京店HDDレコーダ大阪店HDDレコーダ

うーむわけがわからん。
value-ofには商品を指定しているのに店舗名は出ていないし、商品は最初の1個しか表示されていない。
まず商品が1個しか表示されていないのは、value-ofが1個だけ表示する機能しかないからで、同じ要素が続けて登場したときには対応できない。
このような場合にはfor-eachを利用する。

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:for-each select="商品">
  <xsl:value-of select="text()" />
 </xsl:for-each>
</xsl:template>
</xsl:stylesheet>
結果.txt
東京店HDDレコーダCDプレイヤー大阪店HDDレコーダCDプレイヤーPC

このように複数個出現する要素にはfor-eachを利用しよう。



勉強会: 05/18 大阪 登録受付中

中の技術日誌
コンテンツ
わんくま同盟
わんくま同盟
わんくま同盟
広告
バナー
MVP LOGO
MSMVP Visual C# Since 2004/04-2007/03
MCP LOGO
070-316
姉妹サイト
姉妹サイト:じゃんぬのC#, VB.NET 入門
じゃんぬの
C#, VB.NET 入門
検索
Google

ブログ本家
広告