Subject: Re: [xsl] sum and substring xpath needed From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Mon, 19 Aug 2002 16:26:22 +0100 |
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/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] sum and substring xpath neede, Andrew Welch | Thread | Re: [xsl] sum and substring xpath n, Joerg Heinicke |
[xsl] something in Perl script and , Srinivas Ch | Date | [xsl] XSL:FO Books, Uslu, Cihan Y (MED) |
Month |