Корректный вывод разделов инфосистем в меню

#
Корректный вывод разделов инфосистем в меню
Знаю, что вопрос распространенный (отчасти), но ответа именно на свою проблему не могу найти. Структура меню сайта сайта новости:
- О компании
-- Список сотрудников
-- Контактная информация
- Новости
-- Главные новости
-- Второстепенные новости
- Статьи
-- Главные статьи
-- Второстепенные статьи

Меню вертикальное. Когда пользователь заходит в раздел 1го уровня (новости, статьи, о компании), то ссылка на эту страницу становится неактивной, показываются все подраздела 2го уровня только этого раздела. Когда пользователь заходит в какой-то подраздел - ссылка этого подраздела становится неактивной, ссылка раздела становится активной, но выделена (чтобы было понятно, где пользователь находится). Вывод меню сделан так:


<ul class="parent-dept">
   <?php
      $Structure = & singleton('Structure');
      $menuparam = array();
      $menuparam['show_groups'] = true;
      $menuexternalpropertys = array();
      $menuexternalpropertys['ТекущаяГруппа'] = "group_".to_int( $GLOBALS['mas_information_groups_for_xml'][0]['information_groups_id'] );
      $Structure->ShowStructure(3,'ГлавноеМеню',$menuparam, $menuexternalpropertys);
   ?>
</ul>


XSL-шаблон такой:

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
   <xsl:template match="/document">
      <xsl:apply-templates select="structure[show=1]"/>
   </xsl:template>
   
   <xsl:template match="structure">
      <xsl:variable name="current_structure_id">
         <xsl:choose>
            <xsl:when test="item/node()">item_<xsl:value-of select="item"/></xsl:when>
            <xsl:when test="group/node()">group_<xsl:value-of select="group"/></xsl:when>
            <xsl:otherwise>
               <xsl:value-of select="structure/current_structure_id"/>
            </xsl:otherwise>
         </xsl:choose>
      </xsl:variable>
      
      <xsl:variable name="URL" select="link" />
      
      <li>
         <xsl:choose>
            <!-- Что будет, если ID структуры равен данному -->
            <xsl:when test="current_structure_id=@id">
               <span class="selected-parent"><xsl:value-of select="name" /></span>
               <!-- Определяем, есть ли вложенные структуры -->
               <xsl:if test="count(structure[show=1]) &gt; 0">
                  <ul class="sub-dept">
                     <xsl:for-each select="structure">
                        <xsl:variable name="subURL" select="link" />
                     <li><a href="{$subURL}"><xsl:value-of select="name" /></a></li>
                     </xsl:for-each>
                  </ul>
               </xsl:if>
            </xsl:when>
            
            
            <!-- Что будет, если ID структуры не равен данному -->
            <xsl:otherwise>
               <!-- Что делать, если у нас есть дети с каррент ID-->
               
               <xsl:choose>
                  <xsl:when test="count(.//structure[@id=$current_structure_id])=1">
                  <span class="selected-parent"><a href="{$URL}" class="current-dept"><xsl:value-of select="name" /></a></span>
                     <ul class="sub-dept">
                        <xsl:for-each select="structure[show=1]">
                           <xsl:variable name="subURL" select="link" />
                           <xsl:choose>
                              <xsl:when test="current_structure_id=@id">
                              <li><span class="selected-sub"><xsl:value-of select="name" /></span></li>
                              </xsl:when>
                              <xsl:otherwise>
                              <li><a href="{$subURL}"><xsl:value-of select="name" /></a></li>
                              </xsl:otherwise>
                           </xsl:choose>
                        </xsl:for-each>
                     </ul>
                  </xsl:when>
                  <xsl:otherwise>
                     <a href="{$URL}"><xsl:value-of select="name" /></a>
                  </xsl:otherwise>
               </xsl:choose>
            </xsl:otherwise>
         </xsl:choose>
      </li>
   </xsl:template>
</xsl:stylesheet>


Все отлично работает, если раздел (и подразделы) не являются информационными системами. А вот в случае инфосистем ничего не происходит. Как поправить вывод XSLT?
#
Re: Корректный вывод разделов инфосистем в меню
первое что видно - не передается параметр item или group (и переданный $menuexternalpropertys['ТекущаяГруппа'] нигде не используется, можно не передавать)
$InformationSystem = & singleton('InformationSystem');      
$InformationSystem_id = $InformationSystem->GetInformationSystemByStructureId(CURRENT_STRUCTURE_ID);   
if ($InformationSystem_id)
{
   $result = $InformationSystem->GetInformationFromPath($InformationSystem_id, '', false);   
   if ($result['item'])
      {
         $item_id = $InformationSystem->GetIdInformationItem($result['item'], $result['group'], $InformationSystem_id);
      }
      else
      {
         $item_id = false;
      }
   if (is_array($result) && ($item_id != 0 || $result['group'] > 0))
      {
         $menuexternalpropertys['item'] = $item_id;
         $menuexternalpropertys['group'] = $result['group'];
      }
   $menuparam['show_groups'] = true;
   $menuparam['show_items'] = true;
   $menuparam['show_information_systems'][] = $InformationSystem_id;
}
Авторизация