基于条件的Xquery变量concat
我试图根据特定条件计算元素的值,但无法这样做。这里怎么了 对于下面给定的示例结构,我需要根据结果代码计算CID的值。假设我们的结果代码是OC和PC,那么我们应该在字符串变量中显示连接的CId值基于条件的Xquery变量concat,xquery,Xquery,我试图根据特定条件计算元素的值,但无法这样做。这里怎么了 对于下面给定的示例结构,我需要根据结果代码计算CID的值。假设我们的结果代码是OC和PC,那么我们应该在字符串变量中显示连接的CId值 <v4:ValidateResponse xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v4="http://service.com/v4"> <v4:Details> <v
<v4:ValidateResponse xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v4="http://service.com/v4">
<v4:Details>
<v4:Detail>
<v4:CId>001</v4:CId>
</v4:Detail>
<v4:OutcomeCode>FC</v4:OutcomeCode>
</v4:Details>
<v4:Details>
<v4:Detail>
<v4:CId>002</v4:CId>
</v4:Detail>
<v4:OutcomeCode>PC</v4:OutcomeCode>
</v4:Details>
<v4:Details>
<v4:Detail>
<v4:CId>003</v4:CId>
</v4:Detail>
<v4:OutcomeCode>OC</v4:OutcomeCode>
</v4:Details>
</v4:ValidateResponse>
我无法获取concat值
预期结果如下:CID为-002003
因为这2个符合OC和PC条件 您可以简化for循环,并将这些条件组合到一个XPath中,以从
Details
中选择CId
,其中OutcomeCode
为“OC”或“PC”
然后,使用string-join()
生成逗号分隔的值
然后,使用concat()
生成带有前缀和CSV值的字符串:
concat('CID is- ',
string-join(
$ValidateResponse/*:Details[*:OutcomeCode =('OC','PC')]/*:Detail/*:CId,
",")
)
请将预期结果附在您的问题上。@ChristianGrün-更新为预期结果。.您的查询中有几个令人困惑的地方:1。XQuery中没有“联系人”功能;2.您的预期结果不包括“技术检查”,尽管您的输入中存在FC条件,3。您的查询以“as xs:string{”开头。这是故意的吗?请花更多时间创建您的问题,谢谢。
concat('CID is- ',
string-join(
$ValidateResponse/*:Details[*:OutcomeCode =('OC','PC')]/*:Detail/*:CId,
",")
)