Отобразить в форме облака тегов мы можем информационные группы по количеству элементов них. Параметр отображения Вы можете поменять самостоятельно в зависимости от задачи.
Расчет коэффициентов
<!-- Максимальное число элементов в группе -->
<xsl:variable name="max_item_in_group" select="(//group[@parent_id=$parent_group_id]/count_all_items[not(. < //group[@parent_id=$parent_group_id]/count_all_items)])[1]" />
<!-- Максимальное число элементов в группе, вычисляется с помощью расширения math. Работает быстрее, чем представленный выше вариант -->
<!-- Для использования необходимо в заголовке XSL Документа в секцию xsl:stylesheet добавить атрибут xmlns:math="http://exslt.org/math" -->
<!--
<xsl:variable name="max_item_in_group" select="math:max(/document/blocks//group[@parent_id=$parent_group_id]/count_all_items)"/>
-->
<!-- Максимальный размер шрифта -->
<xsl:variable name="max_size" select="18" />
<!-- Минимальный размер шрифта -->
<xsl:variable name="min_size" select="8" />
<!-- Вычислим коэффициент -->
<xsl:variable name="coeff_size" select="($max_size - $min_size) div $max_item_in_group" />
<!-- Отображение подгрупп данной группы -->
<xsl:apply-templates select=".//group[@parent_id=$parent_group_id]" mode="groups">
<xsl:with-param name="min_size" select="$min_size" />
<xsl:with-param name="coeff_size" select="$coeff_size" />
</xsl:apply-templates>
Тэмплэйт для групп
<!-- Облако из групп -->
<xsl:template match="group" mode="groups">
<xsl:param name="min_size" />
<xsl:param name="coeff_size" select="10" />
<!-- Нужный размер шрифта вычисляется по формуле $min_size + количество * $coeff_size -->
<xsl:variable name="size" select="round($min_size + (count_all_items * $coeff_size))" />
<a href="{/document/blocks/url}{fullpath}" style="font-size: {$size}pt;"><xsl:value-of select="name" /></a>
</xsl:template>