Fragment pliku XML wygląda jakoś tak:
<month no="1">
<item data="2009/01/03" dist="20" exdist="18.60" />
<item data="2009/01/25" dist="50" exdist="49.10" />
<month no="2">
...
</month>
Wszystkie item pomiędzy month trzeba zsumować aż do zadanego numeru miesiąca (włącznie), który jest n.b. wartością atrybutu no. Poniższy szablon wykona ww. zadanie:
<xsl:template name='drukuj-do-mc'>
<xsl:param name='mc'/>
<xsl:text> [od początku roku: </xsl:text>
<xsl:value-of select="sum(//item[not(../@no > $mc)]/@dist)"/>
<xsl:text> km] </xsl:text>
</xsl:template>
Wyróżniony wiersz zawiera kluczowe przekształcenie XPath: //item[not(../@no > $mc)]/@dist, co można zinterpretować następująco: wszystkie atrybuty dist przyczepione do elementu item, z całego dokumentu, ale pod warunkiem, że wartość atrybutu no elementu nadrzędnego jest nie większa niż $mc.
Brak komentarzy:
Prześlij komentarz