declare variable $entryid_prefix as xs:string external;
declare variable $src_prefix as xs:string external;
declare variable $other_src_prefix as xs:string external;
let $feeds_metadoc :=
<feed>
<entry>
<id>1</id>
<child src='2' />
</entry>
</feed>
return(
copy $feed_copy := $feeds_metadoc
modify (
for $entry in $feed_copy/entry
return (
for $entry_id in $entry/id
where fn:not(fn:contains($entry_id, '/'))
return replace value of node $entry_id with concat($entryid_prefix, $entry_id)
for $src in $entry/child/@src
return (
if (fn:contains(data($src), '/'))
then (
let $src_id_new := concat($other_srcprefix, $src_id)
return replace value of node $src with $src_id_new
)
else (
let $src_data := concat($src_prefix, data($src))
return replace value of node $src with $src_data
)
)
)
)
return $feed_copy
)
Say, the values are passed are - $entryid_prefix = '
http://X/", $src_prefix="
http://Y/", and $other_src_prefix="
http://Z/". After running the above xqueries by passing these values, I expect the output to be:
I am trying to use multiple for statements within the modify statement and this does not work. I see the following error:
java.io.IOException: Stopped at line 23, column 10:
[XPST0003] Expecting ")", found "f".
I highlighted line 23 for convenience. Please help me fix this.