RE: [xsl] "sum" of "substring"

Subject: RE: [xsl] "sum" of "substring"
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Thu, 23 Oct 2003 13:02:53 +0100
Summing over a computed expression isn't easy in XSLT 1.0. Here are some
possible approaches:

(a) Rather than use the sum() function, do a traversal of the values
using a recursive template, adding the values up as you go.

(b) Create a result tree fragment containing the computed values, and
use the xx:node-set() function to access the nodes in the RTF and sum()
over them

(c) Use XPath 2.0: sum(for $i in $seq return f($i))

(d) Use the saxon:sum() extension function in Saxon 6.5.3

(e) Use the appropriate template from Dimitre's FXSL library

Michael Kay

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Colin Simpson
> Sent: 23 October 2003 12:24
> To: 'XSL-List@xxxxxxxxxxxxxxxxxxxxxx'
> Subject: [xsl] "sum" of "substring"
> 
> 
> Hello
> 
> My problem:
> I have a flat text file that has to be transformed into a 
> predetermined XML file.
> 
> Example: TYPE1Field1AnotherField12.00YetAnotherField445.26FinalField
> TYPE1ABCDEFABCDEFGHIJKL45.00ABCDEFGHIJKLMNO123.45ABCDEFGHIJ
> TYPE2FieldAnother987.65Final
> 
> where the first 5 characters indicate which one of two record 
> layouts it is.
> 
> I first do some rudimentary wrapping of the records, creating 
> an intermediary XML file that I can then use XSLT to process:
> 
> <records> 
> <record>TYPE1Field1AnotherField12.0YetAnotherField445.26FinalF
> ield</record>
> <record>TYPE1ABCDEFABCDEFGHIJKL45.0ABCDEFGHIJKLMNO123.45ABCDEF
> GHIJ</record>
> <record>TYPE2FieldAnother987.65Final</record>
> </records>
> 
> 
> I can populate nodes in the final output XML file by 
> extracting data via "substring", such as 
> <xsl:value-of select="substring(.,28,15)">
> 
> I need to total up certain numeric values within the record 
> of a specific layouts. For example, I want to total up the 
> values that occupy positions 24 thru 28 from all records of 
> "TYPE1". Is there any way of doing this? I thought I should 
> use "sum" but I can't figure out the syntax needed.
> 
> Kind regards
> Colin Simpson
> 
> **************************************************************
> **************
> 
> This email and any files transmitted with it are confidential 
> and intended 
> solely for the use of the individual or entity to whom they 
> are addressed. 
> If you have received this email in error please notify the 
> system manager. 
> 
> **************************************************************
> **************
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


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


Current Thread