如何使用XPath找到一个祖先或自身的最近的祖先节点列表

问题描述:

我有重复的元素像这样的结构:如何使用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)]" /> 

注意,最近一个节点并不一定是完全的上下文中,只是某个地方在那里...

任何建议感激!

问候 亚历

我觉得你得到一组有序的节点,从父母的祖先。

尝试$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