all in all front-end back-end linux web-services

XSLT и агрегатные функции (avg, min, max)

*Это перепост для личных целей. Источник: sreznikov.blogspot.ru

В XSLT нет агрегатных функций avg(), min(), max(). Есть только count() и sum().

Допустим у нас есть следующий xml-файл:

<items>
   <item>15</item>
   <item>3</item>
   <item>41</item>
</items>

Так можно посчитать среднее значение:

<xsl:variable name="avg" select="sum(/items/item) div count(/items/item)"/>

Минимум и максимум находятся с помощью сортировки дерева по нужному полю:

<xsl:variable name="min">
   <xsl:for-each select="/items/item">
      <xsl:sort data-type="number" order="ascending"/>
      <xsl:if test="position() = 1"><xsl:value-of select="."/></xsl:if>
   </xsl:for-each>
</xsl:variable>

<xsl:variable name="max">
   <xsl:for-each select="/items/item">
      <xsl:sort data-type="number" order="descending"/>
      <xsl:if test="position() = 1"><xsl:value-of select="."/></xsl:if>
   </xsl:for-each>
</xsl:variable>

16.10.2015

Комментарии

Бэкенд-разработка

«Невидимая магия»