XSLT Простой алгоритм обзора - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть следующий XSLT код:

<xsl:if test="position() mod 7=0 or position()=last()">
    //display logic
</xsl:if>

, который находится внутри цикла foreach.

Проблема в том, что если общее количество равно 8, и позицияХит 8, тогда мы будем вычислять display logic для обоих position 7 and position 8 sequentially

Я считаю, что исправление это что-то вроде

<xsl:if test="(count(something)=1) or (position() mod 7=0) or (position()=last() and position() mod 7>=2)">
    //display logic
</xsl:if>

Эта логика будет гарантировать, что по крайней мере 2 записипроизойдет после модуля, если мы находимся на последней записи и должны гарантировать до 6 записей в длину, прежде чем снова установить модуль.Кроме того, если существует только 1 запись, нам также нужно запустить логику отображения.

Но я не гуру XSLT.Я не смогу проверить эту логику до позднего вечера, поэтому я подумал, что ID подходит ТАК, чтобы посмотреть, смогу ли я получить некоторые ответы о том, правильный ли это подход.

Спасибо.

1 Ответ

0 голосов
/ 18 апреля 2019

Я предполагаю (!), Что вы хотите сделать:

<xsl:if test="position() mod 7 = 0 and last() - position() > 1 or position() = last()">

Это обеспечит наличие в последней группе как минимум 2 предметов. Если есть только один, он будет добавлен к предыдущей группе, что делает его группой из 8 элементов.

Если вы предпочитаете иметь группу из 6 предметов, а затем группу из 2, выполните:

<xsl:if test="position() mod 7 = 0 and last() - position() > 1 or position() mod 7 = 6 and last() - position() = 2 or position() = last()">

Демо : https://xsltfiddle.liberty -development.net / 6r5Gh3q

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...