You want to run string-join() on the result of the entire FLWOR 
expression, not in the return clause where it is run once per iteration 
of the FLWOR:

let $input := "abc/def/ghi"
return string-join(
   for $values in fn:tokenize($input,"\/")
   return fn:doc("externalFile.xml")//entry[@code = $values]/
     @value/string()
,"/")

John

On 21/01/13 10:31, sini narayanan wrote:
>
> Hi All,
>
> I have a string which has multiple values in it.
>
> Example:
> let $input := "abc/def/ghi"
>
> External xml file have the following values:
> <root>
>      <entry code="abc" value="123"/>
>      <entry code="def" value="456"/>
>      <entry code="ghi" value="789"/>
> </root>
>
>
> My requirement is to split the input string( "abc/def/ghi") based on the
> "/" character, get the corresponding value from the external xml and
> then merge them back using "/".
> So the output is expected to be 123/456/789
>
>
> My code :
>
> let $input := "abc/def/ghi"
> return
> for $values in fn:tokenize(($input ),"\/")
> let $value := fn:doc("externalFile.xml")//entry[@code =
> $values]/@value/string()
> return
> fn:string-join(($value),"/")
>
>
> This does not give me the expected result. How do I achieve this. Please
> help.
>
>
> Thanks,
> Sini
>
>
> _______________________________________________
> General mailing list
> General@developer.marklogic.com
> http://developer.marklogic.com/mailman/listinfo/general
>


-- 
John Snelson, Lead Engineer                    http://twitter.com/jpcs
MarkLogic Corporation                         http://www.marklogic.com
_______________________________________________
General mailing list
General@developer.marklogic.com
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to