Итак, я пытаюсь решить проблему в xslt, которую я обычно знаю, как сделать на императивном языке. Я добавляю ячейки в таблицу из списка элементов XML, стандартные вещи. Итак:
<some-elements>
<element>"the"</element>
<element>"minds"</element>
<element>"of"</element>
<element>"Douglas"</element>
<element>"Hofstadter"</element>
<element>"and"</element>
<element>"Luciano"</element>
<element>"Berio"</element>
</some-elements>
Однако я хочу отрезать одну строку и начать новую после того, как будет достигнут определенный максимум символов. Скажем, я допускаю самое большее 20 символов в строке. Я бы закончил с этим:
<table>
<tr>
<td>"the"</td>
<td>"minds"</td>
<td>"of"</td>
<td>"Douglas"</td>
</tr>
<tr>
<td>"Hofstadter"</td>
<td>"and"</td>
<td>"Luciano"</td>
</tr>
<tr>
<td>"Berio"</td>
</tr>
</table>
На императивном языке я добавляю элементы в строку, добавляя счетчик строк каждого элемента в некоторую переменную. Когда эта переменная превысит 20, я остановлюсь, построю новую строку и перезапущу весь процесс (начиная с остановленного элемента) в этой строке после возврата счетчика строк в ноль. Однако я не могу изменить значения переменных в XSLT. Вся эта функция оценки состояния без состояния сбивает меня с толку.