使用 x 路径" | "运算符



我可以使用.//div/h1/text() | .//div/h2/text()选择几条路径。但是,我想知道是否有一种方法可以在不每次都明确写出两条路径(在这种情况下.//div/)通用的部分的情况下做到这一点?

至于快捷方式,使用 XPath 2.0,您可以缩短例如 //div/h1 | //div/h2例如 //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() .

使用

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

在 Xpath 2.0 中,可以使用

    .//div/(h1|h2)/text()

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

应该做这个技巧

最新更新