Как увеличить переменную внутри шаблона XSLT? - PullRequest
0 голосов
/ 27 августа 2011

вот кратко проблема, с которой я сталкиваюсь:

Я создал пользовательскую веб-часть «Запрос контента», заполняю этот CQWP элементами из списка. То, что я хотел бы сделать, это иметь специальный разделитель каждые 3 элемента.

Как сообщить XSLT, что текущим элементом является 3, 6 или 9-й, и, следовательно, что должен быть установлен разделитель?

Я хотел бы сделать что-то подобное в itemstyle.xsl:

<xsl:variable name="increment" select="0"/>
<xsl:template>
<xsl:with-variable name="increment" select="$increment+1"/>
<xsl:if increment = multiple de 3>
-put a separator-
</xsl:if>
</xsl:template>

но похоже, что глобальная переменная не может быть использована таким образом. Поэтому моей второй идеей было бы получить sortof «номер строки» соответствующего элемента, чтобы получить ту же информацию.

Кто-нибудь знает, как я могу решить эту проблему?

1 Ответ

0 голосов
/ 27 августа 2011

XSLT не делает деструктивного обновления.Поэтому вы не можете присвоить значение переменной, а затем перезаписать ее новым значением.

В вашем случае вы можете использовать функцию position () с арифметикой модуля:

<xsl:for-each select="*">
  <!-- normal processing here -->
  <xsl:if test="position() mod 3 = 0">
    <!-- separator here -->
  </xsl:if>
</xsl:for-each>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...