Hi everyone.
I have the following XML file and XSLT file. They already process fine, but I need to sum the attribute values from the 2 first nodes.
More specific, I need to make the sum of Delay hours of the first and second Traveltime XML nodes, the sum of OptimalTT of the first and second node, the sum of ActualTT of the first and second node. Currently I use the totalseconds value which I divide by 60, then round.
Code:
<?xml version="1.0" encoding="utf-8"?>
<TravelTimeDocument>
<Header>
<DateCreated years="2009" months="10" days="22" hours="7" minutes="7" seconds="34" fulltext="2009-10-22T07:07:34.501875Z" />
<Language tag="fr" isocode="fr-BE" isonum="1036" />
</Header>
<TravelTimes>
<TravelTime Id="1002575" Name="A602_CheneeLoncin" FromName="Chénée" ToName="Loncin" DelaySeverity="3">
<Delay hours="0" minutes="4" seconds="12" totalSeconds="252" />
<OptimalTT hours="0" minutes="6" seconds="32" totalSeconds="392" />
<ActualTT hours="0" minutes="10" seconds="44" totalSeconds="644" />
</TravelTime>
<TravelTime Id="1340752" Name="A602_LoncinChenee" FromName="Liège" ToName="Chénée" DelaySeverity="3">
<Delay hours="0" minutes="2" seconds="32" totalSeconds="152" />
<OptimalTT hours="0" minutes="5" seconds="3" totalSeconds="303" />
<ActualTT hours="0" minutes="7" seconds="35" totalSeconds="455" />
</TravelTime>
<TravelTime Id="763062" Name="AlleurBiersetAéro" FromName="Alleur" ToName="Aéroport Bierset" DelaySeverity="1">
<Delay hours="0" minutes="0" seconds="23" totalSeconds="23" />
<OptimalTT hours="0" minutes="3" seconds="43" totalSeconds="223" />
<ActualTT hours="0" minutes="4" seconds="6" totalSeconds="246" />
</TravelTime>
<TravelTime Id="1059491" Name="BergenGosseliesAéro" FromName="Mons" ToName="Gosselies Aéroport" DelaySeverity="4">
<Delay hours="0" minutes="42" seconds="19" totalSeconds="2539" />
<OptimalTT hours="0" minutes="22" seconds="0" totalSeconds="1320" />
<ActualTT hours="1" minutes="4" seconds="19" totalSeconds="3859" />
</TravelTime>
<TravelTime Id="1002422" Name="ChénéeBiersetAéro" FromName="Chénée" ToName="Aéroport Bierset" DelaySeverity="3">
<Delay hours="0" minutes="4" seconds="5" totalSeconds="245" />
<OptimalTT hours="0" minutes="9" seconds="34" totalSeconds="574" />
<ActualTT hours="0" minutes="13" seconds="39" totalSeconds="819" />
</TravelTime>
<TravelTime Id="1290014" Name="E19_AntwerpenMachelen" FromName="Anvers" ToName="Zaventem" DelaySeverity="4">
<Delay hours="0" minutes="28" seconds="4" totalSeconds="1684" />
<OptimalTT hours="0" minutes="18" seconds="5" totalSeconds="1085" />
<ActualTT hours="0" minutes="46" seconds="9" totalSeconds="2769" />
</TravelTime>
....
Part of the XSLT
Code:
<xsl:template match="TravelTimeDocument" >
<p>
<table>
<th>Name</th>
<th>From</th>
<th>To</th>
<th>Reistijd in minuten</th>
<th>Optimale reistijd in minuten</th>
<th>Vertraging reistijd in minuten</th>
<xsl:apply-templates />
</table>
</p>
</xsl:template>
<xsl:template match ="TravelTimeDocument/TravelTimes/TravelTime[@Name='A602_CheneeLoncin']">
<tr > <xsl:if test="position() mod 2 =1"> <xsl:attribute name="bgcolor">#EEEEFF</xsl:attribute> </xsl:if>
<td>
<xsl:value-of select="@Name" />
</td> <td>
<xsl:value-of select="@FromName" />
</td>
<td>
<xsl:value-of select="@ToName" />
</td>
<td align="center">
<xsl:value-of select="round(ActualTT/@totalSeconds div 60)" />
</td>
<td align="center">
<xsl:value-of select="round(OptimalTT/@totalSeconds div 60)" />
</td>
<xsl:if test="@DelaySeverity=0"> <td bgcolor="#00FF00"><xsl:value-of select="Delay/@minutes"/></td> </xsl:if> <xsl:if test="@DelaySeverity=1"> <td bgcolor="#00FF00"><xsl:value-of select="Delay/@minutes"/></td> </xsl:if> <xsl:if test="@DelaySeverity=2"> <td bgcolor="#FFFF00"><xsl:value-of select="Delay/@minutes"/></td> </xsl:if> <xsl:if test="@DelaySeverity=3"> <td bgcolor="#FF9900"><xsl:value-of select="Delay/@minutes"/></td> </xsl:if> <xsl:if test="@DelaySeverity=4"> <td bgcolor="#FF0000"><xsl:value-of select="Delay/@minutes"/></td> </xsl:if> </tr>
</xsl:template>