- ベストアンサー
xslで最小値と最大値を取得する方法
- xslを使用してXMLデータから最小値と最大値を取得する方法について教えてください。
- 例えば、与えられたXMLデータに含まれる要素の中から最小値と最大値を表示する方法を教えてください。
- xslの関数や処理を使用して、XMLデータ内の要素から最小値と最大値を抽出する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まず、ソートする時にはB要素で繰り返さなくてはなりませんよね。 <xsl:template match="A"> <table border="1"> <xsl:for-each select="B"> <xsl:sort select="." data-type="number"/> <tr> <td><xsl:value-of select="position()"/></td> <td><xsl:value-of select="."/></td> </tr> </xsl:for-each> </table> </xsl:template> このようにすると昇順で表示されます (この例の場合は数字としてソートした方が自然なので、 data-type="number"を指定しました) 一応、HTMLでの出力を想定しています。 昇順にする方法が分かっていれば、最小値最大値を取得するのも容易です。 昇順に並んでいるのですから、その1番目の要素に最小値が、 その最後の要素に最大値が、それぞれ入っていることになります。 それを条件指定で取り出せば良いと思います。 <xsl:template match="A"> <table border="1"> <xsl:for-each select="B"> <xsl:sort select="." data-type="number"/> <xsl:if test="position() = 1"> <tr><td>min</td><td><xsl:value-of select="."/></td></tr> </xsl:if> <xsl:if test="position() = last()"> <tr><td>max</td><td><xsl:value-of select="."/></td></tr> </xsl:if> </xsl:for-each> </table> </xsl:template> 実際はたぶんもっと複雑な事例だとは思いますが、 ここから工夫してみて下さい。