Использование:
<xsl:variable name="vGroups" as="item()*">
<xsl:for-each-group select=
"course[$department = department/@code]" group-by="course_group[@code]"
>1</xsl:for-each-group>
</xsl:variable>
<xsl:for-each-group select=
"course[$vGroups[2]][$department = department/@code]" group-by="course_group[@code]">
<!-- Your desired processing here -->
</xsl:for-each-group>
Таким образом, первый <xsl:for-each-group>
генерирует элемент для каждой группы, и это фиксируется в переменной $vGroups
.
Второе <xsl:for-each-group>
имеет добавленное условие [$vGroups[2]]
и будет выбирать любые группы (и выполнять), только если последовательность $vGroups
содержит как минимум два элемента.
В качестве альтернативы можно использовать:
exists(distinct-values(course[$department = department/@code]/course_group[@code])[2])
Альтернативно (почему я забыл об этом) как указано в ответе Майкл Кей, можно просто использовать:
last() gt 1
Эта третья альтернатива - лучшее и рекомендуемое выражение для использования.
Cristy, Пожалуйста, обратите внимание, что ответ вы приняли неверен. Вы спрашиваете о * количестве групп *, но принятый ответ - это что-то другое - количество элементов в текущей группе. –