Существует ли способ создать XPath, который оценивает, является ли значение элемента в предопределенном списке значений? Что-то сродни этому:
/Location/Addr[State='TX or AL or MA']
Который соответствовал бы узлам элементам состояния для Техаса, Алабамы или Массачусетса? Я знаю, что могу распаковать выражение:
/Location/Addr[State='TX] or /Location/Addr[State='AL'], etc...
Но это является немного громоздким, так как xpaths довольно длинны, как список значений. Мой google-fu не появляется очень по проблеме...
Вы можете проверить несколько условий в одних и тех же квадратных скобках:
/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, ' '))]