Using the XSLT sum function
file: car_log.xsl
1 2 <?xml version="1.0"?> 3 4 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 5 6 <xsl:template match="car_log"> 7 <div> 8 <p>Total miles this month: <xsl:value-of select="sum(records/entry/miles)" /></p> 9 <xsl:apply-templates select="records"/> 10 </div> 11 </xsl:template> 12 13 <xsl:template match="car_log/records/entry"><xsl:variable name="pos" select="position()"/> 14 <div class="record"> 15 <dl> 16 <dt><label for="trip"><xsl:value-of select="@title"/>trip</label></dt> 17 <dd> 18 <input type="text" id="trip{$pos}" name="trip{$pos}" value="{trip}" size="{@size}" /> 19 </dd> 20 21 <dt><label for="miles"><xsl:value-of select="@title"/>miles</label></dt> 22 <dd> 23 <input type="text" id="miles{$pos}" name="miles{$pos}" value="{miles}" size="2" /> 24 </dd> 25 26 <dt><label for="description"><xsl:value-of select="@title"/>description</label></dt> 27 <dd> 28 <input type="text" id="description{$pos}" name="description{$pos}" value="{description}" /> 29 </dd> 30 </dl> 31 </div> 32 </xsl:template> 33 </xsl:stylesheet>
file: car_log.xml
1 2 <car_log> 3 <summary> 4 <project>car_log</project> 5 </summary> 6 <records> 7 <entry id='17962'><date>Wed Dec 12 20:00:33 +0000 2007</date><trip>trip to the supermarket</trip><miles>11.8</miles><description>my first trip with the GPS installed</description></entry> 8 <entry id='18024'><date>Fri Dec 14 11:45:09 +0000 2007</date><trip>driving around the park</trip><miles>26.1</miles><description/></entry> 9 <entry id='18173'><date>Thu Dec 20 01:21:27 +0000 2007</date><trip>trip to the supermarket</trip><miles> 8.5</miles><description/></entry> 10 <entry id='18174'><date>Thu Dec 20 01:34:26 +0000 2007</date><trip>visiting parents</trip><miles>12.7</miles><description/> 11 </entry> 12 </records> 13 </car_log>
output
1 2 Total miles this month: 59.1 3 ...