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