Многоуровневое выпадающее меню

#
Многоуровневое выпадающее меню
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">
   <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="/site">
      <ul class="menu">
         <!-- Выбираем узлы структуры первого уровня -->
         <xsl:apply-templates select="structure[show=1]"/>
      </ul>
   </xsl:template>
   
   <xsl:template match="structure">
      <!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
      <xsl:variable name="current_structure_id" select="/site/current_structure_id"/>
      
      <li>
         <xsl:choose>
            <xsl:when test="show = 1">
               <!-- Определяем адрес ссылки -->
               <xsl:variable name="link">
                  <xsl:choose>
                     <!-- Если внешняя ссылка -->
                     <xsl:when test="url != ''">
                        <xsl:value-of disable-output-escaping="yes" select="url"/>
                     </xsl:when>
                     <!-- Иначе если внутренняя ссылка -->
                     <xsl:otherwise>
                        <xsl:value-of disable-output-escaping="yes" select="link"/>
                     </xsl:otherwise>
                  </xsl:choose>
               </xsl:variable>
               <!-- Ссылка на пункт меню -->
               <a href="{$link}" title="{name}">
                  <!--
                  Выделяем текущую страницу добавлением к li класса first-current, last-current или current
                  если это текущая страница, либо у нее есть ребенок с атрибутом id, равным текущей.
                  -->
                  <xsl:choose>
                     <xsl:when test="$current_structure_id = @id or count(.//structure[@id=$current_structure_id]) = 1">
                        <xsl:choose>
                        <xsl:when test="position()=1"><xsl:attribute name="class">first-current</xsl:attribute></xsl:when>
                        <xsl:when test="position()=2"><xsl:attribute name="class">trust_link</xsl:attribute></xsl:when>
                        <xsl:when test="position()=last()"><xsl:attribute name="class">last-current</xsl:attribute></xsl:when>
                        <xsl:otherwise><xsl:attribute name="class">active</xsl:attribute></xsl:otherwise>
                        </xsl:choose>
                     </xsl:when>
                     <xsl:otherwise>
                        <xsl:choose>
                        <xsl:when test="position()=1"><xsl:attribute name="class">first</xsl:attribute></xsl:when>
                        <xsl:when test="position()=last()"><xsl:attribute name="class">last</xsl:attribute></xsl:when>
                           <xsl:otherwise></xsl:otherwise>
                        </xsl:choose>
                     </xsl:otherwise>
                  </xsl:choose>
                  <xsl:value-of disable-output-escaping="yes" select="name"/></a>
            </xsl:when>
            <!-- Если не показывать ссылку - выводим просто имя ссылки -->
            <xsl:otherwise>
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </xsl:otherwise>
         </xsl:choose>
      </li>
   </xsl:template>
</xsl:stylesheet>

необходимо построение такого html кода
<ul class="menu">
          <li><a href="/"></a></li>
          <li class="trust_link">
            <a href="trust.html">Доверительное управление</a>
            <ul>
              <li><a href="trust.html#slide_0">Управление капиталом</a></li>
              <li><a href="trust.html#slide_1">Управление недвижимостью</a></li>
              <li><a href="trust.html#slide_2">Инвестиционное золото</a></li>
            </ul>
          </li>
          <li class="active"><a href="rules.html">Правововое регулирование</a></li>
          <li><a href="partners.html">Партнерская программа</a></li>
          <li><a href="slovar.html">Профессиональный словарь</a></li>
          <li><a href="contacts.html">Контакты</a></li>
        </ul>

таким образом чтобы элемент <li> текущего раздела первого уровня принимал class значение "active" элемент раздела имеющего подразделы второго уровня принимал значение class элемента <li> trust_link

как реализовать? текущая реализация дает class="active"  только тэгу <a>
Модератор
#
Re: Многоуровневое выпадающее меню
Проверяете position() и сразу посли <li> добавляете нужный атрибут через xsl:attribute
#
Re: Многоуровневое выпадающее меню
HostCMS писал(а):
Спасибо помогло, еще год назад помогло
Авторизация