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