我是新来的,我正在使用 WSO2 ESB,现在我正在使用我需要带到 JSON 的肥皂网络服务,问题是这个 SOAP 服务返回我必须应用 Xquery 的 2 个参数,我正在获得余额和指数字段,并且根据指数的值,我必须执行 2 个操作:
如果指数大于 0,则在指数的右边添加尽可能多的 0。
如果指数小于0,则表示有小数,所以插入a。(句点)与指数所指示的数字左侧相同的数字。
有 2 个 Xquery 可以执行这些操作,但我不知道如何将它带到 WSO2 ESB 的定义中:
declare function functx:repeat-string (**exponent>0**)
( $stringToRepeat as xs:string? ,
$count as xs:integer ) as xs:string {
string-join((for $i in 1 to $count return $stringToRepeat),
'')
} ;
declare function functx:insert-string (**exponent<0**)
( $originalString as xs:string? ,
$stringToInsert as xs:string? ,
$pos as xs:integer ) as xs:string {
concat(substring($originalString,1,$pos - 1),
$stringToInsert,
substring($originalString,$pos))
} ;
declare function xf:getSaldo($balance as xs:string,$exponent as xs:integer) as xs:double {
if ($exponent > 0 ) then
fn:number(fn:concat($balance,functx:repeat-string('0', $exponent)))
else
fn:number(functx:insert-string($balance,'.',fn:string-length($balance)+1+$exponent))
};
所以我正在恢复这些领域:
<property xmlns:ns3="http://www.ericsson.com/xxxx/xxxx_xxxxxx_xxxx/v1" name="balance" expression="$body/ns3:queryTotalBalanceResponse/ns3:balance/text()"/>
<property xmlns:ns3="http://www.ericsson.com/xxxx/xxxx_xxxx_xxxx/v1" name="exponentBalance" expression="$body/ns3:queryTotalBalanceResponse/ns3:balance/@exponent"/>
问候