Я часто использую этот xpath sum(preceding::*/string-length())
Он делает то, что мне нужно (обеспечивает подсчет символов всего текста до этого контекста в файле XML).
Проблема: это медленно.
Есть ли другая встроенная функция, которую я должен использовать вместо этого? Или расширение?
ОБНОВЛЕНИЕ:
Основываясь на комментарии Майкла Кея, я изучил XSLT 3.0 <accumulator>. Это была моя первая попытка с 3.0 (мне пришлось обновить OxygenXML, чтобы он заработал). Я не полностью адаптировал его к своим потребностям, но первоначальный тест, приведенный ниже, показывает многообещающие.
<xsl:output method="xml" />
<xsl:accumulator
name="f:string-summ"
post-descent="f:accum-string-length"
as="xs:integer"
initial-value="0">
<xsl:accumulator-rule
match="text/*"
new-value="$value + string-length()"/>
</xsl:accumulator>
<xsl:template match="text/*">
<xsl:value-of select="f:accum-string-length()" />
</xsl:template>
Не по теме: Stack Overflow нужен тег «XSLT-3.0».