Помогите с меню.

#
Помогите с меню.
Нужно сделать меню на подобие http://ruseller.com/lessons/les396/example/index.html#
Пример меню в html

<a href="#" id="megaanchor">Компания (1 уровень) </a>
<div id="megamenu1" class="megamenu">

<div class="column">
   <h3>Общие вопросы (2 уровень)</h3>
   <ul>
   <li><a href="#">Миссия (3 уровень)</a></li>
   <li><a href="#">История (3 уровень)</a></li>
   <li><a href="#">Команда (3 уровень)</a></li>
    </ul>
</div>

<div class="column">
   <h3>Услуги (2 уровень)</h3>
   <ul>
   <li><a href="#">Обучение (3 уровень)</a></li>
   <li><a href="#">Внедрение (3 уровень)</a></li>
   <li><a href="#">Консультации (3 уровень)</a></li>
   </ul>
</div>
</div>

Не могу сообразить как сделать xsl шаблон. Буду признательна, если подскажите.
iva
#
Re: Помогите с меню.
<?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="link"><xsl:choose><xsl:when test="is_external_link=1"><xsl:value-of disable-output-escaping="yes" select="external_link"/></xsl:when><xsl:otherwise><xsl:value-of disable-output-escaping="yes" select="link"/></xsl:otherwise></xsl:choose></xsl:variable>
<a href="{$link}" id="megaanchor"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
<xsl:if test="count(structure[show = 1]) &gt; 0">
<div id="megamenu1" class="megamenu">
<xsl:apply-templates select="structure[show=1]" mode="pool"/>
</div>
</xsl:if>
</xsl:template>
   
<xsl:template match="structure" mode="pool">
<div class="column">
<h3><xsl:value-of disable-output-escaping="yes" select="name"/></h3>
<xsl:if test="count(structure[show = 1]) &gt; 0">
<ul>
<xsl:apply-templates select="structure[show=1]" mode="sub"/>
</ul>
</xsl:if>
</div>
</xsl:template>

<xsl:template match="structure" mode="sub">
<li>
<xsl:variable name="link"><xsl:choose><xsl:when test="is_external_link=1"><xsl:value-of disable-output-escaping="yes" select="external_link"/></xsl:when><xsl:otherwise><xsl:value-of disable-output-escaping="yes" select="link"/></xsl:otherwise></xsl:choose></xsl:variable>
<a href="{$link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
</li>
</xsl:template>
</xsl:stylesheet>
#
Re: Помогите с меню.
Спасибо. Но проблема в том, что в тег h3  записываются и 2 и 3 уровень, а нужно, что бы только 2. Это произходит потому что мы отбираем все что больше "0"
<xsl:if test="count(structure[show = 1]) &gt; 0">

А есть способ получить все элементы только 2 уровня, не затрагивая 3-ий?
iva
#
Re: Помогите с меню.
покажите то, что получилось в верстке, и что поправить

должно работать если у вас такая структура:

допустим
Компания /company/
Общие вопросы /company/all/
Миссия /company/all/mission/

если не затрагивать третий уровень и ссылки не выведутся)

<xsl:if test="count(structure[show = 1]) &gt; 0">

это условие - "если количество узлов -"детей" больше нуля" - выводим их
#
Re: Помогите с меню.
Ой извините, это я в структуре накосячила. Действительно, все выводтся правильно. Большое спасибо. Буду разбираться дальше.
iva
Авторизация