从Xpath 2.0中的当前节点获取父级父级

时间:2012-08-06 18:45:02

标签: xml xslt xpath

我似乎总是遇到xpath轴表达式问题......

在某些表达式中,我使用../来引用父节点,但这对test表达式无效?或者我的语法错了?

<xsl:when test="../../[@status='current']">

我的目标是在xsl:when内部应用一个属性,如果父级的父级具有值为“current”的状态属性。

编辑:self::parent/parent[@status='current']是一个有效的xpath表达式,可能是我想要的,任何人都可以确认吗?我可能走得不够远。

4 个答案:

答案 0 :(得分:11)

问题出在/[。您可以将其更改为

../../self::*[@status='current']

答案 1 :(得分:7)

比choroba和Hansen更简单的解决方案是

../..[@status='current']

答案 2 :(得分:6)

您还可以使用以下内容:

parent::*/parent::*[@status='current']

答案 3 :(得分:3)

使用Xpath 2.0

 ../../@status eq 'current'

使用XPath 1.0 XPath 2.0

 ../../@status = 'current'