piątek, 22 maja 2009

Drobny przykład w XSLT

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 &gt; $mc)]/@dist)"/>
<xsl:text> km] </xsl:text>
</xsl:template>

Wyróżniony wiersz zawiera kluczowe przekształcenie XPath: //item[not(../@no &gt; $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