作为Apache Synapse中XQuery转换的一部分,我需要实现复杂的逻辑。我尝试了许多包含if / else语句的FLWOR构造。我认为这些应该可以工作(基于其他Stack Overflow XQuery答案),但是我从Synapse得到语法错误。例如:
{
let $s := $payload//int:FieldTag1510/int:SubTypeCode
let $t := $payload//int:FieldTag1510/int:TypeCode
return
if ( $s/string() = '00' and $t/string() = '10') then
return <Cd>CTR</Cd>
else if ($s/string() = '00' and $t/string() = ('15', '16)') then
return <Cd>BTR</Cd>
else
return <Cd></Cd>
}
我还尝试了多个“ where”语句:
{
let $s := $payload//int:FieldTag1510/int:SubTypeCode
let $t := $payload//int:FieldTag1510/int:TypeCode
where ($s/string() = '00' and $t/string() = '10')
return <Cd>CTR</Cd>
}
{
where ($s/string() = '00' and $t/string() = ('15', '16')
return <Cd>CTR</Cd>
}
使用多个FLWOR语句是可行的(下面的示例),但我真的想尽可能使用条件逻辑(因为我需要一个“ else”子句)。
{
let $s := $payload//int:FieldTag1510/int:SubTypeCode
let $t := $payload//int:FieldTag1510/int:TypeCode
where $s/string() = '00' and $t/string() = '10'
return 'CTR'
}
{
let $s := $payload//int:FieldTag1510/int:SubTypeCode
let $t := $payload//int:FieldTag1510/int:TypeCode
where $s/string() = '00' and $t/string() = ('15', '16')
return 'BTR'
}
在Synapse XQuery的return语句中是否允许“ if”语句?还是有更好的方法来实现这种逻辑?