XPath 具有条件的多个属性值之一

Jos*_*das 6 html xpath attributes equality

给定以下表达式,我如何使用=更简洁和明确?

(//h2/@id[contains(.,"foo") or contains(.,"bar") or contains(.,"baz"))[last()]
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的,但我的口译员说它无效:

(//h2/@id[text() = ("foo", "bar", "baz")])[last()]
Run Code Online (Sandbox Code Playgroud)

我不能使用,contains()因为我需要防止子字符串匹配。我正在使用 XPath 1.0,一个相关问题的答案是这个问题的推动力。

kjh*_*hes 15

在 XPath 2.0 中,

(//h2[@id = ("foo", "bar", "baz")])[last()]
Run Code Online (Sandbox Code Playgroud)

将选择的最后一个h2与所述文档中的元素id的属性值foobarbaz

在 XPath 1.0 中,您将使用显式布尔or运算符:

(//h2[@id="foo" or @id="bar" or @id="baz"])[last()]
Run Code Online (Sandbox Code Playgroud)

  • 以及提供 XPath 2.0 等效项的高五。太感谢了!! (2认同)