This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: sum and substring xpath needed


Joerg, Jeni,

thanks, Ive gone down the rtf route.

Roll on 2.0...

cheers
andrew 

> -----Original Message-----
> From: Jeni Tennison [mailto:jeni@jenitennison.com]
> Sent: 19 August 2002 16:26
> To: Andrew Welch
> Cc: xsl-list@lists.mulberrytech.com
> Subject: Re: [xsl] sum and substring xpath needed
> 
> 
> Hi Andrew,
> 
> > Please can someone give me the xpath that will sum() the following
> > values into the select attribute of a variable (ie not a rtf).
> >
> > <colspec colwidth="38mm"/>
> > <colspec colwidth="22mm"/>
> > <colspec colwidth="26mm"/>
> > <colspec colwidth="43mm"/>
> >
> > so something like:
> >
> > <xsl:variable name="total" 
> >   select="sum(substring-before(//tgroup/colspec/@colwidth,'mm'))"/>
> >
> > ..this obviously fails because sum() requires a node-set and the
> > substring functions return strings, but you get the idea. I dont
> > think its possible to do in a single select but you never know,
> > hopefully there's some trick available.
> 
> 'Fraid not. You can create a RTF containing the values, convert that
> to a node set and then sum the node set if you want. Otherwise you
> have to use a recursive template of some kind. For example:
> 
> <xsl:template name="sum-column-widths">
>   <xsl:param name="columns" select="colspec" />
>   <xsl:param name="sum" select="0" />
>   <xsl:choose>
>     <xsl:when test="$columns">
>       <xsl:call-template name="sum-column-widths">
>         <xsl:with-param name="columns"
>           select="$columns[position() > 1]" />
>         <xsl:with-param name="sum"
>           select="$sum +
>                   substring-before($columns[1]/@colwidth, 'mm')" />
>       </xsl:call-template>
>     </xsl:when>
>     <xsl:otherwise>
>       <xsl:value-of select="$sum" />
>     </xsl:otherwise>
>   </xsl:choose>
> </xsl:template>
> 
> or one of Dimitre's FXSL templates.
> 
> ---
> 
> XPath 2.0 way is still (most recent WDs):
> 
>   sum( for $col in colspec
>        return substring-before(@colwidth, 'mm') )
> 
> Cheers,
> 
> Jeni
> 
> ---
> Jeni Tennison
> http://www.jenitennison.com/
> 
> 
> 
> 
> 
> ---
> Incoming mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.381 / Virus Database: 214 - Release Date: 02/08/2002
>  
> 

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.381 / Virus Database: 214 - Release Date: 02/08/2002
 

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]