Josh Habdas Josh Habdas - 3 years ago 181
HTML Question

XPath one of multiple attribute values with condition

Given the following expression, how can I use

=
to be more concise and explicit?

(//h2/@id[contains(.,"foo") or contains(.,"bar") or contains(.,"baz"))[last()]


Here's what I tried, but my interpreter says it's not valid:

(//h2/@id[text() = ("foo", "bar", "baz")])[last()]


I cannot use
contains()
because I need to guard against substring matches. I'm using XPath 1.0 and an answer to a related question is the impetus for this question.

Answer Source

In XPath 2.0,

//h2[@id = ("foo", "bar", "baz")][last()]

would select the last h2 element in the document with an id attribute value of foo, bar, or baz.

In XPath 1.0, you'd use explicit boolean or operators:

//h2[@id="foo" or @id="bar" or @id="baz"][last()]
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download