Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Nexus 01.07.2002 17:59
Как прозрел и я.<?xml version="1.0" encoding="windows-1251"?> <collection> <item text="test5" id="5" pid="3"/> <item text="test1" id="1" pid="0"/> <item text="test2" id="2" pid="0"/> <item text="test3" id="3" pid="1"/> <item text="test4" id="4" pid="2"/> </collection>Наш XSL :
<?xml version="1.0" encoding="windows-1251"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="windows-1251"/> <xsl:param name="topid" select="0"/> <xsl:template match="collection"> <test> <xsl:value-of select="."/> <xsl:apply-templates select="item[@pid=$topid]"> <xsl:with-param name="x" select="1"/> </xsl:apply-templates> </test> </xsl:template> <xsl:template match="item"> <xsl:param name="x"/> <item id="{@id}" name="{@text}" pid="{@pid}" depth="{$x}"> <xsl:apply-templates select="//item[@pid=current()/@id]"> <xsl:with-param name="x" select="$x+1"/> </xsl:apply-templates> </item> </xsl:template> </xsl:stylesheet>Получаем :
<?xml version="1.0" encoding="windows-1251" ?> <test> <item id="1" name="test1" pid="0" depth="1"> <item id="3" name="test3" pid="1" depth="2"> <item id="5" name="test5" pid="3" depth="3" /> </item> </item> <item id="2" name="test2" pid="0" depth="1"> <item id="4" name="test4" pid="2" depth="2" /> </item> </test>