Фильтрация элементов ИС по первой букве

#
Re: Фильтрация элементов ИС по первой букве
А у меня что-то не получается фильтрация по первой букве названия.
Делаю всё по аналогии.
В ТДС (настройки):
...
if (Core_Array::getGet('filter') || Core_Array::getGet('sorting')) {
   $oInformationsystem = $Informationsystem_Controller_Show->getEntity();
   $filter = intval(Core_Array::getGet('filter'));
   $Informationsystem_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')->name('filter')->value($filter));
   $Informationsystem_Controller_Show->addCacheSignature('filter=' . $filter);
   $letter = mb_substr(Core_Array::getGet('filter'), 0, 1);
   $filter == $letter && $Informationsystem_Controller_Show->InformationsystemItems()->queryBuilder()->where('name', 'LIKE', $letter . '%');
   }
...

В XSL-шаблоне:
...
<xsl:apply-templates select="informationsystem_item" mode="filter">
<xsl:sort select="name" order="ascending" />
</xsl:apply-templates>
...
<xsl:template match="informationsystem_item" mode="filter">
<xsl:variable name="a" select="substring(name,1,1)" />
<xsl:if test="not(preceding-sibling::informationsystem_item[starts-with(name, $a)][1])">
<a class="btn btn-outline-dark rounded-circle" href="{$a}" role="button"><b><xsl:value-of select="$a" /></b></a>
<xsl:for-each select="//informationsystem_item"><xsl:variable name="name" select="substring(name,1,1)" />
<xsl:if test="$a = $name"></xsl:if></xsl:for-each>
</xsl:if>
</xsl:template>
...

Что я делаю не так?
Авторизация