xsl-list
[Top] [All Lists]

RE: "sum" of "substring"

2003-10-23 05:09:51
Thanks very much for the suggestions.

I'm an XSL newbie, so I'll have to figure out exactly what is involved in
each approach.  I particularly like the idea of creating a result tree
fragment, as I've not tried that yet.

Colin Simpson

-----Original Message-----
From: Michael Kay [mailto:mhk(_at_)mhk(_dot_)me(_dot_)uk]
Sent: 23 October 2003 13:03
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] "sum" of "substring"


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(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Colin Simpson
Sent: 23 October 2003 12:24
To: 'XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com'
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
****************************************************************************

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



<Prev in Thread] Current Thread [Next in Thread>