<xsl:for-each>要素の概要
この要素は、select属性で指定したXPathのxml側の要素をループする。
サンプルコード
変換させるxml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="sample.xsl"?> <root> <product> <name>ゲームソフト</name> <price>5000</price> </product> <product> <name>充電器</name> <price>1000</price> </product> </root>
XSLT
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <xsl:for-each select="root/product"> <商品> <商品名><xsl:value-of select="name" /></商品名> <価格><xsl:value-of select="price" /></価格> </商品> </xsl:for-each> </xsl:template> </xsl:stylesheet>
変換結果
<?xml version="1.0" encoding="UTF-8"?> <商品> <商品名>ゲームソフト</商品名> <価格>5000</価格> </商品> <商品> <商品名>充電器</商品名> <価格>1000</価格> </商品>
解説
<xsl:for-each>の使い方
サンプルコードを見ればわかる通り、select属性で指定したXPathのxml側の要素をループする。
注意点としては、<xsl:for-each>要素内のコンテキストノードが変わる(カレントディレクトリみたいなもの)
サンプルコード解説
<product>要素をループさせて処理をしている。
ループさせて、xmlのデータを一気に取り出すことができる。