XPath 1.0, чтобы найти, находится ли значение элемента в списке значений

Существует ли способ создать XPath, который оценивает, является ли значение элемента в предопределенном списке значений? Что-то сродни этому:

/Location/Addr[State='TX or AL or MA']

Который соответствовал бы узлам элементам состояния для Техаса, Алабамы или Массачусетса? Я знаю, что могу распаковать выражение:

/Location/Addr[State='TX] or  /Location/Addr[State='AL'], etc...

Но это является немного громоздким, так как xpaths довольно длинны, как список значений. Мой google-fu не появляется очень по проблеме...

30
задан John Kugelman supports Monica 11 June 2010 в 20:23
поделиться

1 ответ

Вы можете проверить несколько условий в одних и тех же квадратных скобках:

/Location/Addr[State='TX' or State='AL' or State='MA']

Или, если у вас действительно длинный список, вы можете создать список состояний и использовать contains () функция.

/Location/Addr[contains('TX AL MA', State)]

Это нормально работает для двухбуквенных сокращений штатов. Если вы хотите сделать его более надежным для более длинных строк, вы можете добавить несколько пробелов на концах и проверить наличие _TX_ , _AL_ и т. Д. (Где нижнее подчеркивание - это пробелы).

/Location/Addr[contains(' TX AL MA ', concat(' ', State, ' '))]
51
ответ дан 27 November 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: