XSLT obteniendo el último elemento

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

             

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

         
  • ....
  • 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()]