Hello
j'aimerai faire une somme de différence positive. Exemple XML d'une RAndo avec des étapes et des altitudes.
puis j'essaye de faire une transformation pour avoir le total ascencion positive . (c.a.d qu'on ne compte que lorsque le point est supérieur au précédent)
mais j'ai besoin de conseil car j'y arrive pas...d'un seul coup.
DE plus si qq pouvais me conseiller sur mon 1er XSL (si on peut l'optimiser) car comme je débute, il me semble qu'il est pas top.
Merci à tous.
=> le XSL suivant me permet d'avoir les DELTAs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 <?xml version="1.0" encoding="UTF-8"?> <RANDONNEE> <ETAPE> <ALTITUDE>1360</ALTITUDE> </ETAPE> <ETAPE> <ALTITUDE>1374</ALTITUDE> </ETAPE> <ETAPE> <ALTITUDE>1401</ALTITUDE> </ETAPE> <ETAPE> <ALTITUDE>1621</ALTITUDE> </ETAPE> <ETAPE> <ALTITUDE>1559</ALTITUDE> </ETAPE> <ETAPE> <ALTITUDE>1584</ALTITUDE> </ETAPE> <ETAPE> <ALTITUDE>1493</ALTITUDE> </ETAPE> <ETAPE> <ALTITUDE>1658</ALTITUDE> </ETAPE> <ETAPE> <ALTITUDE>1417</ALTITUDE> </ETAPE> <ETAPE> <ALTITUDE>1367</ALTITUDE> </ETAPE> <ETAPE> <ALTITUDE>1358</ALTITUDE> </ETAPE> </RANDONNEE>
Il est simple d'appliquer une 2 ème transformation pour n'avoir que la SUM des Deltas positif, mais comment y arriver sans faire 2 XSL ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml"/> <xsl:template match="RANDONNEE"> <xsl:element name="CALCUL"> <xsl:for-each select="ETAPE"> <xsl:choose> <xsl:when test="position()=1"> <xsl:text> </xsl:text> <xsl:element name="ALTITUDE0"> <xsl:value-of select="substring(./ALTITUDE,1,4)"> </xsl:value-of> </xsl:element> <xsl:text> </xsl:text> <xsl:element name="DELTA0">0 </xsl:element> </xsl:when> <xsl:otherwise> <xsl:text> </xsl:text> <xsl:element name="ALTITUDE"> <xsl:value-of select="substring(./ALTITUDE,1,4)"> </xsl:value-of> </xsl:element> <xsl:text> </xsl:text> <xsl:element name="DELTA"> <xsl:variable name="POS" select="position()"/> <xsl:element name="POS"> <xsl:value-of select="$POS"> </xsl:value-of> </xsl:element> <xsl:variable name="POSP" select="position()-1"/> <xsl:element name="POSP"> <xsl:value-of select="$POSP"> </xsl:value-of> </xsl:element> <xsl:variable name="ALT" select="substring(./ALTITUDE, 1,4)"/> <xsl:element name="ALT"> <xsl:value-of select="$ALT"> </xsl:value-of> </xsl:element> <xsl:variable name="PREC" select="substring(../ETAPE[$POSP]/ALTITUDE, 1,4)"/> <xsl:element name="PREC"> <xsl:value-of select="$PREC"> </xsl:value-of> </xsl:element> <xsl:variable name="DELTA" select="number($ALT)-number($PREC)"/> <xsl:element name="DELT"> <xsl:value-of select="$DELTA"> </xsl:value-of> </xsl:element> </xsl:element> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:element> </xsl:template> </xsl:stylesheet>
Partager