আমি আমার এক্সএমএলে সর্বশেষ উপাদানটি সন্ধান করার চেষ্টা করছি যা দেখতে দেখতে:
<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()]"
(বিটিডব্লিউটি কোনটি সঠিক?) প্রথমবার ডি উপাদানটির প্রথম উপস্থিতি নির্বাচন করা হয় (ডিবাগার এটি দেখায়)। এখানে 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>