条件を式に持ち込むだけです:
//div[@class='pluto'][contains(//div/ul/li[1], "apples")]/text()
Sucess
その条件が満たされた場合にのみ戻ります。それ以外の場合、結果は空になります。
余談ですが、実際に検索しているように見えるものは単純化できます。
//div[@class='pluto'][contains(ul/li[1], "apples")]/text()
contains
繰り返しますが、条件が満たされた場合にのみ結果がもたらされます。
一方、 XPath 2.0では、ノード値自体ではなく条件に応じた値が必要な場合は、次のif
式を使用できます。
if (//div[@class='pluto'][contains(ul/li[1], "apples")]/text()) then 'OK!' else 'NOT OK!'
一致が見つかった場合は部分 ( ) が表示され、何then
も見つからなかった場合は部分が表示されます。'OK!'
else
('NOT OK!')
アップデート:
条件が満たされない場合 (else-if のようなもの)、別の xPath クエリを実行したい場合はどうすればよいですか?
then
orelse
の部分には、任意の XPath 式を入れることができます。
if (//div[@class='pluto'][contains(ul/li[1], "apples")]/text())
then
concat('OK! :',//div/ul/li[1])
else
concat('NOT OK! :',//div/ul/li[2])
XPath 1.0 を使用した If-then-else:
concat(
substring(concat('OK! :', //div/ul/li[1]) , 1, number( boolean(count( //div[@class='pluto'][contains(ul/li[1], "apples")]/text() ))) * string-length( concat('OK! :', //div/ul/li[1]) )),
substring(concat('NOT OK! :',//div/ul/li[2]) , 1, number(not(boolean(count( //div[@class='pluto'][contains(ul/li[1], "apples")]/text() )))) * string-length( concat('NOT OK! :',//div/ul/li[2]) ))
)