Вы были близки, но вы не можете использовать оператор or
таким образом.Он используется, когда вы хотите иметь несколько условий предиката.Если вы хотите иметь несколько возможных результатов узлов (как в вашем примере), вы должны использовать конвейер |
оператор
//dl[dt/text()='MasterCard']/dd | //dl[dt/text()='Visa']/dd
//dl[dt/text()='MasterCard' or dt/text()='Visa']/dd
//dl[dt[text()='MasterCard' or text()='Visa']]/dd
Первый вариант говорит:
Получите мне элемент dd
, который является прямым потомком элемента dl
с элементом dt
с текстом 'MasterCard '
ИЛИ
элемент dd
, который является прямым потомком элемента dl
с элементом dt
с текстом' Visa '.
второй вариант говорит:
Получите мне элемент dd
, который является прямым потомком элемента dl
с элементом dt
с текстом 'MasterCard' ИЛИ 'Visa'.
Третий вариант - лишь немного более компактная версия второго.
Так что, хотя оба варианта будут давать одинаковые результаты (в данном случае), производительность может сильно отличаться.Использование оператора pipe в основном означает, что вы выполняете несколько поисков, а не один сложный.