xslt xpath menu

XSLT obteniendo el último elemento



xpath menu (1)

Debe colocar la última () indexación en el resultado de la lista de nodos, en lugar de como parte de los criterios de selección. Tratar

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

Estoy tratando de encontrar el último elemento en mi xml, que se parece a

<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>

Necesito obtener algún tipo de menú inverso, donde el elemento actual y los padres se resaltan como "activo" y hermano como "inactivo". En cambio, en el resultado tengo un árbol desordenado solo cuando supongo que el elemento "D" hace clic.

Los elementos dobles D son mi problema. Cuando uso select="//element[@name=''D''][last()]" o select="//element[@name=''D'' and last()]" (¿cuál es correcto? ) primera vez que se selecciona la primera aparición del elemento D (el depurador lo muestra). Aquí está 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>