এক্সএসএলটি শেষ উপাদান পাচ্ছে


138

আমি আমার এক্সএমএলে সর্বশেষ উপাদানটি সন্ধান করার চেষ্টা করছি যা দেখতে দেখতে:

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

উত্তর:


290

আপনি করা প্রয়োজন last()বরং নির্বাচনের মানদণ্ড অংশ হিসাবে পরিবর্তে, nodelist ফলাফলে ইন্ডেক্স। চেষ্টা করুন:

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

6
+1 টি। খুব ভাল, আমি ভুলে গিয়েছিলাম আপনি () ব্যবহার করতে পারেন (এবং একটি সূচক ব্যবহার করার উপায় ছিল)।
অ্যান্থনিডাব্লু জোন্স

1
আমরা শেষটির আগে নোডটি কীভাবে খুঁজে পাব?
এগস্ট

5
টিআইএল: আপাতদৃষ্টিতে কোনও [প্রথম ()] নেই তবে আপনি ব্যবহার করতে পারেন [1]
জেসিকা

8
এটি মজার যে আমি এই প্রশ্নের জন্য 7 বছর পরেও ভোট পেয়েছি। এটি সত্যিই দেখায় যে এক্সএসএলটি কত ত্রুটিযুক্ত এবং ত্রুটিযুক্ত। প্লাগ হিসাবে এক্সএসএলটি এড়িয়ে চলুন: ডি
নিক

2
এক্সএসএলটি সুন্দর ... আপনি যদি কোনও এক্সএমএল বিশ্বে বাস করেন
নিকজস 14:38
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.