получилось сделать вывод двухуровневого меню. возможно конечно кривовато. но если есть возможность прошу выдать рекомендации по оптимизации
двухуровневое меню (структура).
parent_about /about/
parent2 /about/p2/
parent3 /about/p3/
parent_help /help/
parent1 /help/p1/
parent_hobby /hobby/
parent1 /hobby/p1/
Сайт:
<?
$structure = new Structure();
$structure->ShowStructure(4,'UPMENU'

;
?>
<?
$Structure = new structure();
$row = $Structure->GetStructureItem(CURRENT_STRUCTURE_ID);
$pid=$row['structure_parent_id'];
$param = array();
$external_propertys = array();
$external_propertys['id']="$pid";
$structure->ShowStructure(4,'LEFTMENU', $param, $external_propertys);
?>
XSL UPMENU:
<?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 method="html" indent="yes" encoding="Windows-1251"/>
<xsl:template match="/document">
<!-- Выбираем все, у которых level = 0 и show = 1 -->
<xsl:apply-templates select=".//structure[level=0 and show=1]"/>
</xsl:template>
<xsl:template match="structure">
<!-- Показывать ссылку, или нет -->
<xsl:if test="show_link=1">
<!-- Если внешняя ссылка - ставим внешнюю -->
<xsl:if test="is_external_link=1">
<LI/><a href="{external_link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
</xsl:if>
<!-- Если внутренняя ссылка -->
<xsl:if test="is_external_link=0">
</xsl:if>
</xsl:if>
<xsl:if test="show_link=0">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
XSL LEFTMENU:
<?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 method="html" indent="yes" encoding="Windows-1251"/>
<xsl:template match="/document">
<!-- Выбираем все корневые (у которых level равен 1) и которые показывать -->
<xsl:apply-templates select=".//structure[level=1 and show=1]"/>
</xsl:template>
<xsl:template match="structure">
<!-- Показывать ссылку, или нет -->
<!-- начало тестинга -->
<xsl:if test="current_structure_id=id_parent">
<!-- Если внешняя ссылка - ставим внешнюю -->
<xsl:if test="is_external_link=1">
<a href="{external_link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
<!-- Выделяем текущую страницу жирным (если это текущая страница, либо у нее есть ребенок с ID, равным текущей) -->
<xsl:if test="propertys/property[@name='font_bold']/value='Да'">
<div class="list"><a href="{external_link}"><b><xsl:value-of disable-output-escaping="yes" select="name"/></b></a></div>
</xsl:if>
<xsl:if test="propertys/property[@name='font_bold']/value='Нет'">
<div class="list"><a href="{external_link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a></div>
</xsl:if>
</xsl:if>
<!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
<!-- Если внутренняя ссылка -->
<xsl:if test="is_external_link=0">
<!-- Выделяем текущую страницу жирным (если это текущая страница, либо у нее есть ребенок с ID, равным текущей) -->
<xsl:if test="propertys/property[@name='font_bold']/value='Да'">
<div class="list"><a href="{link}"><b><xsl:value-of disable-output-escaping="yes" select="name"/></b></a></div>
</xsl:if>
<xsl:if test="propertys/property[@name='font_bold']/value='Нет'">
<div class="list"><a href="{link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a></div>
</xsl:if>
</xsl:if>
</xsl:if>
<!-- конец тестинга -->
<!--вывод 2 меню снова

-->
<xsl:variable name="mop" select="/document/id"/>
<xsl:if test="id_parent=$mop">
<div class="list"><a href="{external_link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a></div>
</xsl:if>
<!-- вырезал -->
<xsl:if test="show_link=0">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>