Hey Sony,
I found another small typo in your query - the keyword 'node' is missing in your replace statement. So if you execute the query below you should be fine.
for $childentry in $c//childentry return replace value of *node* $childentry/@id with concat('New Child: ', data($c//childentry/@id))
I'm sure the somewhat unrelated syntax error message didn't help you to find this ... sorry for that.
Regards, Lukas
On Thu, Feb 24, 2011 at 11:08 PM, Sony Vijay sony.vibh@gmail.com wrote:
.. I* see the syntax error : * *[XPST0003] Expecting ")", found "v".*
when I try :
for $childentry in $c//childentry return replace value of $childentry/@id with concat('New Child: ', data($c//childentry/@id))
To modify the child entries like so:
<childentry id="1"> ----- > <childentry id="New Child: 1">
On Thu, Feb 24, 2011 at 5:03 PM, Sony Vijay sony.vibh@gmail.com wrote:
... Replacing the values of attribute nodes doesn't seem to work as expected when I use modify. Please see my previous post with correction in the typo.
On Thu, Feb 24, 2011 at 5:00 PM, Sony Vijay sony.vibh@gmail.com wrote:
Please ignore the typo. My sample xquery looks something like this:
for $childentry in $c//childentry return replace value of $childentry/@id with concat('New Child: ', data($c//childentry/@id))
To modify the child entries like so:
<childentry id="1"> ----- > <childentry id="New Child: 1">
On Thu, Feb 24, 2011 at 4:50 PM, Sony Vijay sony.vibh@gmail.com wrote:
Christian,
Yes. I did realize that I must use a RETURN statement. I tried that with a slight change in the requirement. Say, my child entries look like so :
<childentry id="1" />
I tried:
for $childentry in $c//childentry return replace value of $childentry/@id with
concat('New Child: ', $c//childentry/text())
Does replace work differently for attributes ?
Thanks, Sony
On Thu, Feb 24, 2011 at 3:27 PM, Christian Grün < christian.gruen@gmail.com> wrote:
Sony,
each FLWOR expression needs to be completed with a RETURN statement. Please insert the following snippet (haven't tried it live):
for $childentry in $c//childentry return replace value of $childentry with concat('New Child: ', $c//childentry/text())
Hope this helps, Christian ___________________________
Christian Grün Uni KN, Box 188 78457 Konstanz, Germany http://www.inf.uni-konstanz.de/~gruen
On Thu, Feb 24, 2011 at 9:24 PM, Sony Vijay sony.vibh@gmail.com wrote:
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%22%3E >>> <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%22%3E >>> > <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%22%3E >>> > <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 >> >