如何使用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”的父项。
我试过这种方法。列出第一个,第二个等。我发现最接近的节点在第二个位置...... :( – Alex 2013-03-26 19:38:45
你确定$ currentNode = element c? – Istao 2013-03-26 19:49:51
是的,但也许我得到这种效果,因为我的实际XPath是“祖先 - 或 - 自我:: * /一个“,而不仅仅是一个??(我简化了它清理东西) – Alex 2013-03-26 21:06:54