2013-03-26 76 views
5

我有重複的元素像這樣的結構:如何使用XPath找到一個祖先或自身的最近的祖先節點列表

<a> 
    <b> 
    <a> 
    </a> 
    </b> 
    <a> 
    <b> 
     <a> 
     <c att="val" /> 
     </a> 
    </b> 
    </a> 
</a> 

Asuming的c節點是$ currentNode,當我使用XPath

<xsl:value-of select="($currentNode/ancestor-or-self::a)" /> 

我得到一個與表達式無關的節點列表。我需要的是始終使樹最靠近樹的節點,如最深的樹枝或最高的@級別。

我不能使用XPath最多2個功能這樣的不幸:

<xsl:value-of select="($currentNode/ancestor-or-self::a)[max(@level)]" /> 

注意,最近一個節點並不一定是完全的上下文中,只是某個地方在那裏...

任何建議感激!

問候 亞歷

回答

6

我覺得你得到一組有序的節點,從父母的祖先。

嘗試$currentNode/ancestor-or-self::a[1]以獲得c att =「val」的父項。

+0

我試過這種方法。列出第一個,第二個等。我發現最接近的節點在第二個位置...... :( – Alex 2013-03-26 19:38:45

+0

你確定$ currentNode = element c? – Istao 2013-03-26 19:49:51

+0

是的,但也許我得到這種效果,因爲我的實際XPath是「祖先 - 或 - 自我:: * /一個「,而不僅僅是一個??(我簡化了它清理東西) – Alex 2013-03-26 21:06:54