J'essaie de trouver le dernier élément de mon xml, qui ressemble à ceci :
<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>
J'ai besoin d'une sorte de menu inversé, où l'élément courant et ses parents sont mis en évidence comme étant "actifs" et les frères et sœurs comme étant "inactifs". Au lieu de cela, j'ai un arbre désordonné uniquement lorsque je suppose que l'élément "D" est cliqué.
Les éléments à double D sont mon problème. Lorsque j'utilise select="//element[@name='D'][last()]"
ou select="//element[@name='D' and last()]"
(btw quelle est la bonne ?) première fois première occurrence de L'élément D est sélectionné (le débogueur le montre). Voici 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>