下記のようなXMLがある時、
<data>
<a>1</a>
<b>2</b>
</data>
<data>
<a>3</a>
<b>4</b>
</data>
a * b の合計はどのように表記するのでしょうか。
http://www.atmarkit.co.jp/fxml/askxmlexpert/008calc/08calc.html
XML文書の中の数字で計算したい
<xsl:value-of select=”number(a)*number(b)”/>で求められます。
XMLではルートノードを複数持つことが出来ないので勝手に<hoge>をルートノードと仮定します
入力XML
<hoge>
<data>
<a>1</a>
<b>2</b>
</data>
<data>
<a>3</a>
<b>4</b>
</data>
</hoge>
以下のXSLはdataタグ配下のa*bの値をCSV形式で出力します
<?xml version=”1.0”?>
<xsl:stylesheet xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” version=”1.0”>
<xsl:output method=”text”/>
<xsl:template match=”hoge”>
<xsl:for-each select=”data”>
<xsl:value-of select=”number(a)*number(b)”/>
<xsl:text>,</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>