Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.218.129.100] |
|
Сообщ.
#1
,
|
|
|
Приветствую!
Имеется XML <shop id="1"> <shop_group id="1"> <parent_id>0</parent_id> <shop_group id="11"> <parent_id>1</parent_id> </shop_group> <shop_group id="12"> <parent_id>1</parent_id> </shop_group> <shop_group id="13"> <parent_id>1</parent_id> </shop_group> </shop_group> <shop_group id="2"> <shop_id>1</shop_id> <parent_id>0</parent_id> <shop_group id="21"> <parent_id>2</parent_id> </shop_group> <shop_group id="22"> <shop_id>1</shop_id> <parent_id>2</parent_id> </shop_group> <shop_group id="23"> <shop_id>1</shop_id> <parent_id>2</parent_id> </shop_group> </shop_group> <shop_group id="3"> <shop_id>1</shop_id> <parent_id>0</parent_id> <shop_group id="31"> <shop_id>1</shop_id> <parent_id>3</parent_id> </shop_group> <shop_group id="32"> <shop_id>1</shop_id> <parent_id>3</parent_id> </shop_group> <shop_group id="33"> <shop_id>1</shop_id> <parent_id>3</parent_id> </shop_group> </shop_group> </shop> И 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="/"> <xsl:apply-templates select="/shop"/> </xsl:template> <xsl:variable name="n" select="number(3)"/> <!-- Шаблон для магазина --> <xsl:template match="/shop"> <div class="group_list_m"> <xsl:apply-templates select="shop_group[position() mod $n = 1]"/> <div class="clear"></div> </div> </xsl:template> <!-- Шаблон для групп товара --> <xsl:template match="shop_group"> <div class="sub-main"> <xsl:for-each select=". | following-sibling::shop_group[position() < $n]"> <div id="group_{shop_group/@id}" class="group_list_item" data-visible="none"> ..... </div> <!-- Если есть подгруппы --> <div style="display: none;" id="sub-level-1" class="sub_group_{shop_group/@id} sub-level-1"> <xsl:apply-templates select="shop_group" mode="subgroup"/> </div> </xsl:for-each> </div> </xsl:template> <!-- Шаблон для групп товара --> <xsl:template match="shop_group" mode="subgroup"> <div> <div class="sub_group_{shop_group/@id} sub-level-2"> <xsl:apply-templates select="shop_group" mode="subgroup-2"/> </div> </div> </xsl:template> <xsl:template match="shop_group" mode="subgroup-2"> <div class="sub_li_list-2"> <xsl:if test="position() != 1"> <xsl:attribute name="class">sub_li_list-2 bordered-top</xsl:attribute> </xsl:if> <!-- Если есть подгруппы --> <xsl:if test="shop_group"> <!-- выводим подгруппы 3 уровня --> <xsl:if test="count(ancestor::*) < 3"> <div class="sub_group_list_2"> <xsl:apply-templates select="shop_group" mode="subgroup-2"/> </div> </xsl:if> </xsl:if> </div> </xsl:template> </xsl:stylesheet> Который преобразует это все в <div class="group_list_m"> <div class="sub-main"> <div id="group_1" class="group_list_item" data-visible="none"> </div> <div id="sub-level-1" class="sub_group_1 sub-level-1"> </div> <div id="group_2" class="group_list_item" data-visible="none"> </div> <div id="sub-level-1" class="sub_group_2 sub-level-1"> </div> <div id="group_3" class="group_list_item" data-visible="none"> </div> <div id="sub-level-1" class="sub_group_3 sub-level-1"> </div> </div> </div> Теперь суть вопроса, необходимо выводить сначала группы, а после них их подгруппы. в таком виде : <div class="sub-main"> <div id="group_1" class="group_list_item" data-visible="none"> </div> <div id="group_2" class="group_list_item" data-visible="none"> </div> <div id="group_3" class="group_list_item" data-visible="none"> </div> <div id="sub-level-1" class="sub_group_1 sub-level-1"> </div> <div id="sub-level-1" class="sub_group_2 sub-level-1"> </div> <div id="sub-level-1" class="sub_group_3 sub-level-1"> </div> </div> Подскажите пожалуйста, как это сделать? |