Skip to main content
XMLDir

Search 169 pages — formats, namespaces, parser messages, schema errors and tools.

XPath operator

Logical and / or

`and` binds tighter than `or`, and both are words rather than symbols — && and || do not exist.

XPath spells its logical operators as words. `and` has higher precedence than `or`, so a or b and c means a or (b and c); parenthesise when the intent is otherwise.

Both convert their operands to booleans, which means a node-set operand tests presence rather than value.

Syntax
boolean and boolean
Returns
boolean
Kind
Operator
Version
XPath 1.0 (libxml2)

Worked examples

Each result below is what the evaluator returned, asserted on every test run. An empty result means an empty node-set — which is an answer, not an error.

  • count(//line[@qty = '1' and contains(@sku, 'WIDGET')])on order.xmlRun
    1
  • count(//line[@qty = '2' or contains(@sku, 'GIFT')])on order.xmlRun
    2
  • count(//line[@sku and @qty])on order.xmlRun
    3

    Both attributes present, on every line.

Run your own expression

What catches people out

  • && and || are not XPath. They will not parse.
  • `and` binds tighter than `or`. Parenthesise anything non-obvious.
  • There is no short-circuiting guarantee, so `a and b` may evaluate b even when a is false.

The sample documents

Every example on this page runs against this document. The sitemap one is namespaced on purpose — almost every real XML document is, and that changes which expressions match.

order.xml
<?xml version="1.0" encoding="UTF-8"?>
<order id="A-1001" tier="gold">
  <customer country="NO">Ada Lovelace</customer>
  <lines>
    <line sku="WIDGET-1" qty="2"><price>14.50</price></line>
    <line sku="WIDGET-2" qty="1"><price>39.00</price></line>
    <line sku="GIFT-WRAP" qty="1"><price>0.00</price></line>
  </lines>
  <note>  Deliver after 09:00  </note>
</order>

Related

All 34 XPath entries

Get started

Bring order to the XML your team can't afford to ignore.

Create a free account and get a private workspace to search, validate, diff, and monitor your XML feeds, sitemaps, schemas, and vendor integrations.