Tôi đang cố gắng tìm phần tử cuối cùng trong xml của mình, trông giống như:
<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>
Tôi cần nhận được một số loại menu đảo ngược, trong đó yếu tố hiện tại và cha mẹ được tô sáng là "hoạt động" và anh chị em là "không hoạt động". Thay vào đó, kết quả là tôi chỉ có một cây lộn xộn khi giả sử phần tử "D" được nhấp.
Yếu tố Double D là vấn đề của tôi. Khi tôi sử dụng
select="//element[@name='D'][last()]"
hoặc select="//element[@name='D' and last()]"
(btw cái nào đúng?) Lần đầu tiên xuất hiện phần tử D được chọn (trình gỡ lỗi cho thấy điều đó). Đây là 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>