- - PR -
xslスタイルシートにて・・・
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-03-25 14:12
繰り返しのある以下のノードに関してNULLの前で”,”を表示させないようにすればどうすればいいでしょうか?
<内訳> <内金額>100000</内金額> <起算日> <年号>平成</年号> <年月日>01/02/03</年月日> </起算日> </内訳> <内訳> <内金額>200000</内金額> <起算日> <年号>平成</年号> <年月日>01/02/04</年月日> </起算日> </内訳> <内訳> <内金額/> <起算日> <年号/> <年月日/> </起算日> </内訳> このようなXMLから <xsl:block> 詳細は<xsl:for-each select="内訳"> <xsl:if test="内金額!=''">内金 <xsl:value-of select="format-number(内金額, '#,##0')"/>円を <xsl:if test="position()">,</xsl:if> </xsl:if> </xsl:for-each> となります</xsl:block> 以上のXSLにて、 「詳細は内金10,000円を平成01/02/03,内金20,000円を平成01/02/04,となります」 と表示しますが、文章の体裁上、2個目のカンマ”, ”はいらないのです。 XMLのデータは可変で<内訳>も実際は12個あります。 <xsl:if test="position()">,</xsl:if>←の部分の条件を変えるか for-eachの前にcount等で内金額!=''の前までの数を出す等を 考えたのですが、うまくいきません。 いい方法をご教示願います。 |
|
投稿日時: 2005-03-25 15:42
<xsl:for-each select="内訳[内金額!='']"> ● last()を使えるように選択する
内金 <xsl:value-of select="format-number(内金額, '#,##0')"/>円を <xsl:if test="not(position()=last())">,</xsl:if> </xsl:for-each> [ メッセージ編集済み 編集者: MMX 編集日時 2005-03-25 15:44 ] |
|
投稿日時: 2005-03-25 16:48
MMXさん、ありがとうございました!
<xsl:if test="not(position()=last())">,</xsl:if> の構造は頭の中にあったのですが、 内金額がNULLの内訳があるのでlast()は使えないなぁ・・・と 思い込んでしまっていました。 <xsl:for-each select="内訳[内金額!='']"> の書き方は非常に勉強になりました。 本当にありがとうございました! |
1