-1
我有以下XML輸出:XSL轉換XML到下拉HTML菜單
<payload>
<MenuItems>
<id>1</id>
<menuTitle>Members</menuTitle>
<description/>
<menuURL>members</menuURL>
<menuTarget/>
<parentID>0</parentID>
</MenuItems>
<MenuItems>
<id>2</id>
<menuTitle>Tiers</menuTitle>
<description/>
<menuURL>tiers</menuURL>
<menuTarget/>
<parentID>1</parentID>
</MenuItems>
</payload>
,我需要它(使用XSLT)轉換成HTML菜單,如下所示:
<ul class="nav navbar-nav">
<li class="active"><a href="menuURL">menuTitle</a></li>
<li class="dropdown">
<a href="menuURL" class="dropdown-toggle" data-toggle="dropdown">menuTitle <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="menuURL">menuTitle</a></li>
</ul>
</li>
</ul>
換句話說,頂級菜單項(其中parentID = 0)應顯示在主菜單中。
子菜單項(其中的parentID =父菜單項的ID,應顯示在該父的下拉菜單。
這似乎應該是一個簡單的變換使用XSL,但是對於一些原因我似乎無法得到它的工作。
任何意見,將不勝感激。
這裏的電流XSL我一直在使用,我覺得這是非常接近(主菜單項拉正確),但我不能完全得到子菜單拉。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes" standalone="no" indent="yes"/>
<xsl:template match="pkgInfo">
<xsl:for-each select="payload">
</xsl:for-each>
</xsl:template>
<xsl:template match="payload">
<ul class="nav navbar-nav">
<xsl:apply-templates select="MenuItems[parentID=0]"/>
</ul>
</xsl:template>
<xsl:template match="MenuItems">
<li><a href="{menuURL}"><xsl:value-of select="menuTitle"/></a></li>
<xsl:param name="currentParent" select="id" />
<xsl:apply-templates select="MenuItems[parentID=$currentParent]"/>
</xsl:template>
<xsl:template match="MenuItems">
<li class="dropdown">
<a href="{menuURL}" class="dropdown-toggle" data-toggle="dropdown">
<xsl:value-of select="menuTitle"/> <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="menuURL"><xsl:value-of select="menuTitle"/></a></li>
</ul>
</li>
</xsl:template>
</xsl:stylesheet>
謝謝,我覺得我真的很接近,但我不能完全弄清楚如何讓子菜單正確拉出。 – user3304420