xsl-list
[Top] [All Lists]

Re: [xsl] Sum in conjunction with string splitting?

2006-09-09 11:53:07
On 9/8/06, Steve <subsume(_at_)gmail(_dot_)com> wrote:
Posted yesterday, but I isolated the problem significantly =)

The snippet below attempts to split the string 'mileage 6' into
[mileage] and [6] and then store it in $miles (for example).

I am trying to get the SUM of the resulting SPLIT of the nodes that
match 'mileage'.

I am close. Right now I only get one node, not the sum of all matches.

<xsl:variable name="miles">
       <xsl:call-template name="str-split-to-words">
               <xsl:with-param name="pStr"
select="msxsl:node-set($expenses[substring(expense,1,7)='mileage']/expense)"
/>
               <xsl:with-param name="pDelimiters" select="' '" />
                                     <!-- splitting expense at blank spaces -->
       </xsl:call-template>
</xsl:variable>
<xsl:value-of select="msxsl:node-set($miles)/*[2]" /><br />

====

$expenses example:

<Expenses>
   <expense>Mileage 6</expense>
   <expense>cheese</expense> (wouldn't match)
   <expense>Mileage 10</expense>
</Expenses>

====

Desired value of $miles: 16.

With FXSL2.0 one would simply write:

     sum(f:map(f:compose(f:decimal(),
                         f:flip(f:substring-after(),' ')
                         ),
               /*/*[contains(.,' ')]
               )
         )


Or simply use the f:transform-and-sum() function:

     f:transform-and-sum(f:flip(f:substring-after(),' '),
                         /*/*[contains(.,' ')]
                         )


In XSLT 1.0, one can use the "transform-and-sum" template of FXSL 1.x


--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk




Thanks a bunch,

-Steve

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--