2012年4月3日火曜日

[XML] ビルトイン関数 sumでハマる

こんなXMLデータがあったとして。


<data>
  <item no="1">
    <price>100</price>
    <discount>10</discount>
  </item>
  <item no="2">
    <price>150</price>
    <discount>30</discount>
  </item>
  <item no="3">
    <price>150</price>
    <discount />
  </item>
</data>

価格(price)の合計はXPathで、ルートパスだとして、 sum(data/item/price) で求められるんだけども、割引(discount)の合計はsum(data/item/discount)でうまく計算できない。
こういう時に如何したらいいのか悩んでました。。。

データの個数を取って、再帰的に(これXSLTが最も苦手とする事)足していくか。。。。
面倒だなぁ。。。と思っていて探していたらありました。


空要素(NaN)を計算に使う


なるほど。ノードの指定のところで、条件式[.!='']を使っちゃえば、空要素を無視して計算できるのね~!何故その発想が無かった><

これは便利です!

0 件のコメント:

コメントを投稿