मैं अपने 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>
मुझे कुछ प्रकार के रिवर्स मेनू प्राप्त करने की आवश्यकता है, जहां वर्तमान तत्व और माता-पिता को "सक्रिय" और भाई को "निष्क्रिय" के रूप में उजागर किया गया है। परिणाम के बजाय मेरे पास एक गन्दा पेड़ है, जब मुझे लगता है कि "डी" तत्व पर क्लिक किया गया है।
डबल डी तत्व मेरी समस्या है। जब मैं उपयोग
( select="//element[@name='D'][last()]"
या select="//element[@name='D' and last()]"
btw जो एक सही है?) पहली बार पहली बार D तत्व का चयन होता है (डिबगर दिखाता है कि)। यहाँ 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>