XSLT获取最后一个元素

我试图find我的XML中的最后一个元素,看起来像

<list> <element name="A" /> <element name="B" > <element name="C" /> <element name="D" > <element name="D" /> <element name="E" /> <element name="F" /> <element name="G" /> </element> <element name="H" /> <element name="I" /> </list> 

我需要得到一些反向菜单,其中当前元素和父母被突出显示为“主动”,而同胞则显示为“非主动”。 相反,结果我只有当我想“D”元素点击时有一个凌乱的树。

双D元素是我的问题。 当我使用select="//element[@name='D'][last()]"select="//element[@name='D' and last()]" (btw哪一个是正确的? )第一次selectD元素的首次出现 (debugging器显示)。 这里是xsl

 <xsl:template match="list"> <xsl:apply-templates select="//navelement[@name = 'D'][last()]" mode="active"/> </xsl:template> <xsl:template match="element"> <ul class="menu"> <xsl:apply-templates select="preceding-sibling::node()" mode="inactive"/> <li><a>....</a></li> <xsl:apply-templates select="following-sibling::node()" mode="inactive"/> </ul> <xsl:apply-templates select="parent::element" mode="active"/> </xsl:template> <xsl:template match="element" mode="inactive"> <li><a>....</a></li> </xsl:template> 

您需要将last()索引放在nodelist结果上,而不是作为select条件的一部分。 尝试

 (//element[@name='D'])[last()]