XSLT: Как подсчитать итоговую сумму за цикл xsl:for-each?
Есть файл XML:
<?xml version="1.0" encoding="utf-8"?>
<section num="1.2">
<caption>1. Заголовок для этого текста</caption>
<page>
<text>
<p>В случае неправильного ответа.</p>
<p>Перед началом предаттестационной подготовки.</p>
<p>Работники службы автоматизации и метрологического обеспечения .</p>
<p>После замены диафрагмы в узле учета газа на ГРС № 1 было необходимо провести пуск.</p>
</text>
</page>
</section>
Надо выводить строки до тех пор, пока суммарное количество букв (длина строк во всех тегах Р) не превышает 100. Мой вариант XSL (ошибочный, не работает):
<xsl:template match="text">
<xsl:choose>
<xsl:when test="$text_element">
<xsl:for-each select="/section/page/text/p">
<xsl:variable name="par" select="." />
<xsl:if test="position()=1">
<xsl:variable name="sump1" select="string-length($par)" />
</xsl:if>
<xsl:if test="position()=2">
<xsl:variable name="sump2" select="string-length($par)" />
</xsl:if>
<xsl:if test="position()=3">
<xsl:variable name="sump3" select="string-length($par)" />
</xsl:if>
<xsl:if test="position()=4">
<xsl:variable name="sump4" select="string-length($par)" />
</xsl:if>
<xsl:variable name="sump" select="$sump1 + $sump2 + $sump3 + $sump4" />
<xsl:if test="$sump < 100">
<p><xsl:value-of select="$par" /></p>
</xsl:if>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:template>
Для упрощения предположил, что количество строк 4. Но и в этом упрощении - никак не работает. Вижу главную проблему - нельзя изменять значения переменных. Есть ли какой-нибудь способ решить эту задачу?