Return 一个 true/false 在 XQuery 中检查多个项目时
Return one true/false when checking multiple items in XQuery
<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>
我尝试在 XQuery 的表达式中得到一个 false / true,但它只适用于每个值。
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')
在这种情况下,returns仅当所有元素都不满足检查时才为 false。
p.s: 计划用在SoapUI中的Assertions中,如果有其他方案也请写出来
p.s2: 抱歉我的英语不好,我用的是翻译器
您需要使用量化表达式。
在这里查看:XQuery/Quantified Expressions
沿着下面。
XPath
every $Date in /Response/List/item/Date/text()
satisfies ($Date>='2020-01-01' and $Date<='2021-01-01')
<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>
我尝试在 XQuery 的表达式中得到一个 false / true,但它只适用于每个值。
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')
在这种情况下,returns仅当所有元素都不满足检查时才为 false。
p.s: 计划用在SoapUI中的Assertions中,如果有其他方案也请写出来
p.s2: 抱歉我的英语不好,我用的是翻译器
您需要使用量化表达式。
在这里查看:XQuery/Quantified Expressions
沿着下面。
XPath
every $Date in /Response/List/item/Date/text()
satisfies ($Date>='2020-01-01' and $Date<='2021-01-01')