У меня есть список .tcx файлов, которые я тяну в моем стиле лист, используя коллекцию ...Как вычислить сумму значений, если файлы .xml вытягиваются через коллекцию в таблицу стилей .xsl?
<xsl:template name="main">
<tbody>
<xsl:apply-templates select="collection('file:///d:/in/?select=*.tcx')"/>
</tbody>
</xsl:template>
Теперь у меня есть другой шаблон, где я обрабатывать содержимое этих файлов .xml
<xsl:template match="/garmin:TrainingCenterDatabase">
<xsl:for-each select="./garmin:Activities/garmin:Activity">
<xsl:for-each select="./garmin:Lap">
<tr>
<td><xsl:value-of select="tokenize(base-uri(.),'\.')[2]" /></td>
<td><xsl:value-of select="@StartTime" /></td>
<td><xsl:value-of select="garmin:TotalTimeSeconds" /></td>
<td><xsl:value-of select="garmin:DistanceMeters" /> m</td>
<td><xsl:value-of select="garmin:Calories" /></td>
<xsl:call-template name="sum">
<xsl:with-param name="elements-to-sum" select="//garmin:DistanceMeters" />
</xsl:call-template>
</tr>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
Как вы можете видеть, у меня есть шаблон суммы (который вызывает рекурсивно, чтобы суммировать все дистанционныеметры), где я пытаюсь вычислить текущую сумму всех дистанционных счетчиков, но он не работает так, как я ожидаю. Я беру все элементы в сборнике отдельно и перезапускает сумму с каждым новым элементом ...
Есть ли способ рассчитать эти скользящие суммы (или другие вещи, такие как порядковый номер, который я могу использовать для подсчета результатов, например) по всей коллекции ...?
Спасибо! Просто быстрый: если я отношусь к этой коллекции с помощью новой введенной переменной, значит ли это, что процессор стиля будет повторно сканировать все документы снова и снова? –
Если вы используете глобальную переменную, а затем ссылаетесь на нее во всех местах, где вам нужно обработать коллекцию, то, насколько я понимаю, процессор читает во всех файлах один раз и работает с последовательностью деревьев, которые он построил один раз. –
Отлично, спасибо! –