XPath contains one of multiple values
I have simple xpath
/products/product[contains(categorie,'Kinderwagens')]
It works but now how do I filter on multiple categorie values
like
/products/product[contains(categorie,'Kinderwagens')] +
/products/product[contains(categorie,'Kinderwagens')]
Solution 1:
Will this work?
/products/product[contains(categorie,'Kinderwagens') or contains(categorie,'Wonderwagens')]
There is a similar question here
Solution 2:
Do you really want contains()? Very often, people use contains() to test whether a node contains a value when they should be using "=". The difference is that if the categorie element has the string value 'Kinderwagens', then categorie = 'wagens'
is false but contains(categorie, 'wagens')
is true.
If you actually intended '=', then in XPath 2.0 you can write [categorie = ('Kinderwagens', 'Wonderwagens')]
. If you're still using XPath 1.0, you need two separate comparisons with an 'or'.
Solution 3:
There are many ways:
//*[contains(text(), 'Kinderwagens') or contains(text(), 'Kinderwagens')]
//product[contains(text(), 'Kinderwagens') or contains(text(), 'Kinderwagens')]
//products/product[contains(text(), 'Kinderwagens') or contains(text(), 'Kinderwagens')]
//products/product[contains(categorie, 'Kinderwagens') or contains(categorie, 'Kinderwagens')]
Note: | (Bitwise OR) operator don't be use