Благодаря помощи Niraj и hr_117 Мне удалось получить шаблон XSL, который превращает этот XML...
<bookings>
<entry>
<event>Christmas</event>
<attendees>2</attendees>
</entry>
<entry>
<event>Halloween</event>
<attendees>2</attendees>
</entry>
<entry>
<event>Easter</event>
<attendees>1</attendees>
</entry>
<entry>
<event>Easter</event>
<attendees>1</attendees>
</entry>
</bookings>
... в этот вывод:
Рождество: 1 заказ(а)
Хэллоуин: 1 заказ(а)
Пасха: 2 бронирование(я)
Это мой XSL:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="data">
<xsl:apply-templates select="bookings"/>
</xsl:template>
<xsl:key name="bookings-within-period" match="bookings/entry" use="event" />
<xsl:template match="bookings">
<xsl:for-each select="entry[count(. | key('bookings-within-period', event)[1]) = 1]">
<p>
<xsl:value-of select="concat(event,': ')" />
<xsl:value-of select="count(key('bookings-within-period', event))" />
<xsl:text> booking(s)</xsl:text>
</p>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Как я могу заставить эту функцию также вычислять сумму attendees
?
Это вывод, который мне нужен:
Рождество: 1 заказ(а), 2 посетителя(ей)
Хэллоуин: 1 заказ(а), 2 посетителя(ей)
Пасха: 2 бронирования, 2 участника (ов)
Спасибо всем, кто может помочь!