Hi,

  I haven't looked in detail (especially whether it is a good idea in
this case to use dynamic evaluation of XQuery, or if you should rather
use something else), but it looks like you want to evaluate the
expression, not resolve a variable name.

  Evaluating the string literal "$exp" gives you the value of the
variable.  Evaluating $exp, means evaluating the value of the variable
as an expression (the value of the variable is a string, "0000049*3").
So just use xdmp:value($exp), with no quote characters.

  Regards,

-- 
Florent Georges
http://fgeorges.org/
http://h2oconsulting.be/


On 16 June 2015 at 11:24, Kapoor, Pragya wrote:
> Hi,
>
>
> I am running the below query :
>
>
> declare namespace MET100 = 'MET100' ;
>
>
> let $output :=
> <user><userId>test1</userId><sessionId>54C76A855C23EF8AC5AFBC59C8D4C40A</sessionId>
>
> <outputs>
>
> <output><columnAlias>CollectionNo</columnAlias>
>
> <functions type="decimal">CollectionNo*3</functions></output>
>
> </outputs></user>
>
>
> let $functions := fn:data($output//functions)
>
> let $docId := '/docs/BONY_0000049_ISDA-CSA-GB95_6749.xml'
>
> let $type := ($output//functions/@type)
>
> let $doc := fn:doc($docId)
>
> let $alias := ($output//columnAlias/text())
>
> let $ns := "MET100"
>
> let $elem := "CollectionNo"
>
> let $element := fn:concat($ns,":",$elem)
>
> let $result :=($doc//*[name() = $element])/text()
>
> let $result :=
>
> if($type eq 'string') then
>
> xdmp:value(xdmp:quote(fn:replace($functions,$alias,fn:concat("'",$result,"'"))))
>
> else
>
>   let $exp := (fn:replace($functions,$alias,$result[1]))
>
>   return xdmp:value("$exp")
>
> return  $result
>
>
> actual output is : 0000049*3
>
> Expected Output is : 147
>
>
> But Since I am using  let $exp := (fn:replace($functions,$alias,$result[1]))
> which returns a string expression, which is causing problem.
>
>
> How can I solve this ?
>
>
> Thanks
>
> Pragya
>
> "This e-mail and any attachments transmitted with it are for the sole use of
> the intended recipient(s) and may contain confidential , proprietary or
> privileged information. If you are not the intended recipient, please
> contact the sender by reply e-mail and destroy all copies of the original
> message. Any unauthorized review, use, disclosure, dissemination,
> forwarding, printing or copying of this e-mail or any action taken in
> reliance on this e-mail is strictly prohibited and may be unlawful."
>
> _______________________________________________
> General mailing list
> [email protected]
> Manage your subscription at:
> http://developer.marklogic.com/mailman/listinfo/general
>
_______________________________________________
General mailing list
[email protected]
Manage your subscription at: 
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to