2

我可以使用.//div/h1/text() | .//div/h2/text(). 但是我想知道是否有一种方法可以在不明确写出两条路径共同的部分的情况下 - 在这种情况下.//div/- 每次都这样做?

4

3 回答 3

2

至于快捷方式,在 XPath 2.0 中,您可以将 eg 缩短//div/h1 | //div/h2为 eg,//div/(h1 | h2)但在 XPath 1.0 中不允许使用这种语法。而且我认为 XPath 3.0 将引入一个let子句来定义变量。所以我认为你可以做例如let $r := /html/body/div[3]/table[2]/tbody/tr[5] return ($r/span | $r/a)

或者对于您使用 XPath 2.0 更正的示例,您可以缩短.//div/h1/text() | .//div/h2/text().//div/(h1/text() | h2/text()). 但是对于 XPath 1.0,您所能做的就是使用.//div/*[self::h1 | self::h2]/text().

于 2012-12-07T10:04:34.900 回答
1

使用

    .//div/*[self::h1 or self::h2]/text()

在 Xpath 2.0 中可以使用

    .//div/(h1|h2)/text()
于 2012-12-07T13:36:13.457 回答
0

.//div/*[(local-name() = 'h1') or (local-name() = 'h2')]/text()

应该做的伎俩

于 2012-12-07T10:22:08.593 回答