XPath "in" operator

Heba El-Fadly picture Heba El-Fadly · Dec 14, 2012 · Viewed 9.1k times · Source

Is there is an operator in XPath 1.0 that acts as "in" operator in SQL?

select * from tbl_students where id in (1,2,3)

Answer

C. M. Sperberg-McQueen picture C. M. Sperberg-McQueen · Dec 14, 2012

The = operator of XPath 1.0 works that way, though XPath 1.0 doesn't provide syntax for writing sequences. So if you have an XML document of the form

<doc>
  <value>1</value>
  <value>2</value>
  <value>3</value>
</doc>

then an expression like //doc[value = 2] will return that doc element.

In XPath 2.0, the syntax (1, 2, 3) will create a sequence of three integers, and you can write conditions like $i = (1, 2, 3). But literal sequences are not a feature of XPath 1.0 -- the only way to get multiple values on one side of an XPath expression is to use a path expression that matches multiple nodes.