如何使用XPath在祖先或自身节点列表中查找最近的祖先

时间:2013-03-26 19:11:13

标签: xml xslt xpath

我有一个像这样的重复元素的结构:

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

当我使用XPath

时,假设c节点是$ currentNode
<xsl:value-of select="($currentNode/ancestor-or-self::a)" />

我得到一个与表达式匹配的无序节点列表。我需要的是始终让节点最接近树,如树枝最深处或最高@level。

不幸的是,我不能像这样使用XPath 2 max-function:

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

请注意,最近的一个节点并不总是正好位于上下文之上,只是在某个地方......

任何建议都赞赏!

此致 亚历

1 个答案:

答案 0 :(得分:6)

我认为你得到了一组有序的节点,从父节点到祖先。

尝试$currentNode/ancestor-or-self::a[1]获取c att =“val”的父级。