I have the following sample XML structure:
yes
<
/SavingAccounts/SavingAccount[(ServiceOnLine='yes') or (ServiceViaPhone='yes')]
This is a very fundamental XPath feature: composing a number of conditions with the logical operators and, or, and the function not().
and
has a higher priority than or
and both operators have lower priority than the relational and equality operators (=
, !=
, >
, >=
, <
and <=
).
So, it is safe to write: A = B and C = D
Some most frequent mistakes made:
People write AND
and/or OR
. Remember, XPath is case-sensitive.
People use the |
(union) operator instead of or
Lastly, here is my solution:
/SavingAccounts/SavingAccount
[ServiceOnLine='yes' or ServiceViaPhone='yes']
Will
/SavingAccounts/SavingAccount[ServiceOnline/text()='yes' or ServiceViaPhone/text()='yes']
do the trick?
I have no XPath evaluator handy at the moment.
EDIT:
If I remember correctly, you don't need the text(), so
[ServiceOnline='yes' or ServiceViaPhone='yes']
should be sufficient, and more readable.
EDIT:
Yes, of course, 'or' for predicate expressions, my bad.