Вернуть одно значение true / false при проверке нескольких элементов в XQuery - PullRequest
0 голосов
/ 27 марта 2020
<Response>
    <List>
        <item>
            <Date>2019-01-01</Date>
        </item>
        <item>
            <Date>2020-01-11</Date>
        </item>
        <item>
            <Date>2021-03-01</Date>
        </item>
    </List>
</Response>

Я пытаюсь получить одно значение false / true в выражении в XQuery, но оно работает только для каждого значения.

let $Dates := //Response/List/item[*]/Date
for $Date in $Dates
return if ( $Date>='2020-01-01' and $Date<='2021-01-01') 
then true
else false

Результат:

false
true
false

Была также попытка сделать это:

let $Date := //Response/List/item[*]/Date
return 
fn:boolean($Date>='2019-01-01' and $Date<='2019-12-31')

В этом случае возвращает false только в том случае, если все элементы не выполнить проверку.

ps: это планируется использовать в утверждениях в SoapUI, поэтому, если у вас есть другие решения, напишите также.

p.s2: Я прошу прощения за мой Engli sh, я использую переводчик.

1 Ответ

2 голосов
/ 27 марта 2020

Вам необходимо использовать Квантифицированные выражения.

Проверьте это здесь: XQuery / Квантифицированные выражения

При следующем.

XPath

every $Date in /Response/List/item/Date/text()
satisfies ($Date>='2020-01-01' and $Date<='2021-01-01') 
...