0

我是新来的,我正在使用 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"/>

问候

4

0 回答 0