Выражение XPath :
$countryCode='104'
and
(transactionType!='Allowance' or revenueCenter!='1100')
синтаксически правильно .
Мы ничего не можем сказать о семантике, так как нет XML-документапредоставляется, и нет никакого объяснения, что выражение должно выбрать.
Как обычно, есть рекомендация не использовать оператор !=
, если только это не действительно необходимо - его использование прииз аргументов набор узлов (или последовательность или набор узлов в XPath 2.0) очень далек от того, что ожидает большинство людей.
Вместо !=
лучше использовать функцию not()
:
$countryCode='104'
and
(not(transactionType='Allowance') or not(revenueCenter='1100'))
, и это может быть в дальнейшем переработано на более короткий и эквивалентный:
$countryCode='104'
and
not(transactionType='Allowance' and revenueCenter='1100')