或者以 XPath 中的祖先为条件?

Or condition on ancestors in XPath?

我正在尝试表达一个看起来有点像这样的 XPath。

//div[@class='foo']/ancestor::(fieldset or div)[@class='foo1']

但是此时 XPath 不工作(fieldset or div)

像下面这样的长 XPath 正在工作,

(//div[@class='foo']/ancestor::fieldset[@class='foo1'] or //div[@class='foo']/ancestor::div[@class='foo1'])

但是,有什么简洁的方法可以构建这个XPath 吗?

您可以使用以下 xpath:

//div[@class='foo']/ancestor::[//fieldset or //div][@class='foo1']

看起来您正在尝试 select 是:

  • 字段集或div
  • @class 值为 foo1
  • 其中包含一个后代 div,@class 的值为 foo

一次取一个,我们得到:

字段集或div:

//*[self::fieldset or self::div]

@class 值为 foo1

//*[self::fieldset or self::div][@class = 'foo1']

其中包含 div 的后代 foo 的 @class:

//*[self::fieldset or self::div][@class = 'foo1'][.//div/@class = 'foo']