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

Ale*_*lex 5 xml xslt xpath

我有一个具有重复元素的结构,如下所示:

<a>
  <b>
    <a>
    </a>
  </b>
  <a>
    <b>
       <a>
         <c att="val" />
       </a>
    </b>
  </a>
</a>
Run Code Online (Sandbox Code Playgroud)

当我使用XPath时,假设c节点是$ currentNode

<xsl:value-of select="($currentNode/ancestor-or-self::a)" />
Run Code Online (Sandbox Code Playgroud)

我得到一个与表达式匹配的无序节点列表.我需要的是始终让节点最靠近树,如分支中最深或最高的@level.

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

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

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

任何建议赞赏!

关心亚历克斯

Ist*_*tao 6

我想你会得到一组有序的节点,从父节点到祖先节点.

尝试$currentNode/ancestor-or-self::a[1]获得c att ="val"的父级.