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
.