Можно ли сжать выражение XPath, которое проверяет условные значения атрибута? - PullRequest
1 голос
/ 03 апреля 2019

У меня есть следующая полезная нагрузка XML:

<fizz>
    <buzz class="foo">
        <whatever/>
    </buzz>
</fizz>

Значением атрибута /fizz/buzz[@class]/@class может быть foo, bar или whistlefeather.Я пытаюсь написать эффективное выражение XPath, которое охватывает все три сценария.Лучшее, что у меня есть:

/fizz/buzz[@class]/@class = 'foo' |
    /fizz/buzz[@class]/@class = 'bar' |
    /fizz/buzz[@class]/@class = 'whistlefeather'

Есть ли какой-нибудь «сокращенный» способ сделать это более сжатым / эффективным (менее многословным)?

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Исправление ответа от @GillesQuenot:

Использование любой версии XPath:

/fizz/buzz[@class='foo' or @class='bar' or @class='whistlefeather']

Использование XPath 2.0 или более поздней версии:

/fizz/buzz[@class=("foo", "bar", "whistlefeather")]

(Обратите внимание, это возвращаетвыбранные элементы buzz. Неясно, что вы на самом деле хотите, чтобы выражение возвращало.)

0 голосов
/ 03 апреля 2019

Использование этого (все версии xpath):

/fizz/buzz[@class='foo' or @class='bar' or @class='whistlefeather']

Использование xpath> = 2:

/fizz/buzz[@class=("foo", "bar", "whistlefeather")]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...