Вывод элементов инфосистемы по алфавиту с группировкой

#
Вывод элементов инфосистемы по алфавиту с группировкой
Добрый день!
Переработал код Вывод производителей с разбивкой по алфавиту. В данном варианте приведённый ниже код выводит элементы информационной системы и группирует их по первой букве названия. Может быть кому-нибудь понадобится.

Вот код XSL-шаблона:
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:hostcms="http://www.hostcms.ru/" exclude-result-prefixes="hostcms">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml" />

<xsl:template match="/informationsystem">
<xsl:apply-templates select="informationsystem_item" mode="alphabet">
<xsl:sort select="name" order="ascending" />
</xsl:apply-templates>
</xsl:template>

<!-- Шаблон вывода элемента по алфавиту -->
<xsl:template match="informationsystem_item" mode="alphabet">
<xsl:variable name="a" select="substring(name,1,1)" />
<xsl:if test="not(preceding-sibling::informationsystem_item[starts-with(name, $a)][1])">
<p class="h5 bold"><xsl:value-of select="$a" /></p><hr />

<div class="columns-2 sm-columns-3 md-columns-4 lg-columns-5 xl-columns-6">

<xsl:for-each select="//informationsystem_item">
<xsl:variable name="name" select="substring(name,1,1)" />
<xsl:if test="$a = $name">
<a href="{url}"><xsl:value-of disable-output-escaping="no" select="name" /></a><br />
</xsl:if>
</xsl:for-each>

</div>
</xsl:if>
</xsl:template>

</xsl:stylesheet>

Данный пример реализован на странице Виды деревьев – породы древесины | Справочник по древесине.
Авторизация