Christian,

Thank you very much for helping me with the query. However, I am not quite sure how the transform operation works if I have to use a for loop. Say, I twist around yesterday's question a bit like so:

copy $c :=
<entry>
  <id>1</id>
  <title>How to use a transform expression</title>
  <updated>2011-02-23</updated>
  <author>
    <name>BaseX Team</name>
    <uri>http://basex.org</uri>
  </author>
<childentry> 1 </childentry>
<childentry> 2 </childentry>
<childentry> 3 </childentry>
  <content type="html">Transform expression example created by BaseX Team</content>
</entry>
modify (
replace value of node $c//name with 'BaseX',
replace value of node $c//content with concat('Copy of: ', $c//content),
insert node <member>Joey</member> into $c//author
for $childentry in $c//childentry
replace value of $childentry with concat('New Child: ', $c//childentry/text())
)
return $c


The expected output is:

<entry>
  <id>1</id>
  <title>How to use a transform expression</title>
  <updated>2011-02-23</updated>
  <author>
    <name>BaseX</name>
    <uri>http://basex.org</uri>
    <member>Joey</member>
  </author>
<childentry> New Child: 1 </childentry>
<childentry> New Child: 2 </childentry>
<childentry> New Child: 3 </childentry>
  <content type="html">Copy of: Transform expression example created by BaseX Team</content>
</entry>

The following exception is thrown when I tried my sample transformation query with the for loop: 
[XPST0003] Expecting 'where', 'order' or 'return' expression.

Thanks,
Sony

PS: @Lukas: I did notice the update in the documentation. Thank you !



On Wed, Feb 23, 2011 at 2:32 AM, Lukas Kircher <lukaskircher1@googlemail.com> wrote:
Hi Sony,

to help others with the same question, I allowed myself to
add a modified version of your example to our
documentation [1].

Regards,
Lukas


[1] http://docs.basex.org/wiki/Update#transform




On Wed, Feb 23, 2011 at 6:58 AM, Sony Vijay <sony.vibh@gmail.com> wrote:
Christian,

Thank you for the quick and helpful reply.

- Sony


On Tue, Feb 22, 2011 at 5:56 PM, Christian Grün <christian.gruen@gmail.com> wrote:
Sony,

the following query might do what you want:

copy $c :=
<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:libx="http://libx.org/xml/libx2">
 <id>1</id>
 <title>Link Amazon By ISBN</title>
 <updated>2010-09-29T18:37:48.592Z</updated>
 <author>
   <name>LibX Team</name>
   <uri>http://libx.org</uri>
   <email>libx.org@gmail.com</email>
 </author>
 <content type="html">Content created by LibX Libapp Builder</content>
</entry>
modify (
 replace value of node $c//*:name with 'Sony',
 replace value of node $c//*:content with
   concat('Copy of: ', $c//*:content)
)
return $c


Best,
Christian
___________________________

On Tue, Feb 22, 2011 at 11:43 PM, Sony Vijay <sony.vibh@gmail.com> wrote:
> Hi,
> I am using BaseX 6.5. I am trying to transform a given node using an
> XQuery.
>
> Say, I have an node like so:
> <entry xmlns="http://www.w3.org/2005/Atom"
> xmlns:libx="http://libx.org/xml/libx2">
>   <id>1</id>
>   <title>Link Amazon By ISBN</title>
>   <updated>2010-09-29T18:37:48.592Z</updated>
>   <author>
>     <name>LibX Team</name>
>     <uri>http://libx.org</uri>
>     <email>libx.org@gmail.com</email>
>   </author>
>   <content type="html">Content created by LibX Libapp Builder</content>
> </entry>
> I am trying to send this node to an xquery which is expected to do the
> following actions:
>
> create a copy of this node (so that the actual node in the database does not
> change),
> transform/modify the duplicate copy of the given node
> return the modified duplicate copy of the given node
>
> I would expect the output to be like so:
> <entry xmlns="http://www.w3.org/2005/Atom"
> xmlns:libx="http://libx.org/xml/libx2">
>   <id>1</id>
>   <title>Link Amazon By ISBN</title>
>   <updated>2010-09-29T18:37:48.592Z</updated>
>   <author>
>     <name>Sony</name>
>     <uri>http://libx.org</uri>
>     <email>libx.org@gmail.com</email>
>   </author>
>   <content type="html">Copy of: Content created by LibX Libapp
> Builder</content>
> </entry>
> I tried to perform the non-updating functions using transform and also tried
> to use a pending update list
> (Reference: http://docs.basex.org/wiki/Update#transform). None of this works
> as expected. Could you refer me to a more detailed documentation for
> performing such transform operations on nodes ?
> Thanks,
> Sony
>
> _______________________________________________
> BaseX-Talk mailing list
> BaseX-Talk@mailman.uni-konstanz.de
> https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk
>
>


_______________________________________________
BaseX-Talk mailing list
BaseX-Talk@mailman.uni-konstanz.de
https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk