• ベストアンサー

カンマ区切りで値の取り出し

XML内のある値が","で区切られていて、これを一つずつ取得したいのですが、 いいサンプルがなくて困っています。 【例】<abc>1,2,3,4</abc> この中の値は4つとは限りません。 2つであれば、substring-before substring-after、 でいけると思うのですが、例のような場合に for-eachを使って一つずつ取り出せないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

望みの動作かどうかは、よくわかりませんが、 <abc>1,2,3,4</abc> を <td>1</td><td>2</td><td>3</td><td>4</td> に変換するサンプル (どっちかというと、むりやりXSLT でやるより、スクリプトを使った方が簡明なような気がします。) ---------------------------------------------------------------- <?xml version="1.0" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:call-template name="split"> <xsl:with-param name="value" select="abc"/> </xsl:call-template> </xsl:template> <xsl:template name="split"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="substring-after($value,',')=''"> <td><xsl:value-of select="$value"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="substring-before($value,',')"/></td> <xsl:call-template name="split"> <xsl:with-param name="value" select="substring-after($value,',')"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>

azicyan
質問者

お礼

ありがとうございます!! 早速やってみます! 感謝いたします!

関連するQ&A