xsl-list
[Top] [All Lists]

[xsl] Get to 2 max values and element names

2012-05-11 08:36:53

I have a peculiar problem. We have to extract the top 2 (modified) values from 
some elements in a list and also get the element names. The xml is something 
like:

<Data>
   <Modifier>6</Modifier>
   <List>
       <Julian>123</Julian>
       <Steve>45654</Steve>
       <Helen>98412</Helen>
       <Jack>-50</Jack>
       <Ruth>981</Ruth>
       <Susan>8431</Susan>
       <Trevor>354</Trevor>
       <Petra>6257</Petra>
       <Harold>25632</Harold>
       <Mary>8695</Mary>
   </List>
</Data>

Note: We know that sometimes Jack’s (and only Jack’s) value is negative, in 
which case he is excluded from the calculation.
It is also possible that any of the numbers are NULL in which case they are 
also excluded or ignored.

I need to do the following:

Depending on the value of the Modifier (1-10) we have 4 variables. 
vSteveMod, vHelenMod, vJackMod and vPetraMod 
These vary depending on the value of the Modifier, there are 10 quartets of 
values.

We now need to calculate the modified values for Steve, Helen, Jack and Petra 
(these 4 are chosen specifically for this test) dictated by the current 
Modifier (6).
So say that when the Modifier = 6, the 4 Modifying vars are:
vSteveMod = 1.2
vHelenMod = 0.65
vJackMod = 0.89
vPetraMod = 1.32

We then multiply these *Mod vars by the related value, so:
vSteveResult = 1.2 * 45654 = 54784.8
vHelenResult = 0.65 * 98412 = 63967.8
vJackResult = 0.89 * -50 = EXCLUDED
vPetraResult = 1.32 * 6257 = 8259.24

Finally we need to extract 4 values:
The Top value and element name.
The next (penultimate) highest value and also the element name.

e.g. in this case:

TopValue = 63967.8
TopName = Helen
PenultValue = 54784.8
PenultName = Steve

All using XSLT1

William Charlton
The yMonda team
yMonda Limited
w: www.ymonda.net



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


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