From: Kaustubh N. <kau...@ea...> - 2011-09-01 19:41:42
|
Hello everyone, I have been running xupdates on exist and I used the command ‘update insert’. I ran the query such that I obtained a reference to a node in the document and then attempted to add the same node to the document at a different position (namely as the first node). After running the query I found that I had 2 instances of the same node in the document, one at its original position and another at the top of the document. Which implies that when inserting a node from a document, the server does not delete the original node. I was wondering if this behavior was expected. I was under the impression that the system would delete the original node and then insert it into the document. I am providing a copy of the code I used: (: function to find a random node:) declare function local:random_node($root as node()) as node() { let $Tnodes := $root//T let $random_position := util:random(count($Tnodes)) let $random_node := $Tnodes[$random_position] return $random_node }; (: function to insert the node at the top of the document:) declare function local:insert_as_first_node($node as node(),$root as node()) { update insert $node preceding $root//T[1] }; let $doc := doc("/path/to/document") let $root := $doc/root() let $random_node := local:random_node($root) return (local:insert_as_first_node($random_node,$root)) |
From: Dan M. <dan...@gm...> - 2011-09-02 11:03:53
|
> Which implies that when inserting a node from a document, the server does not delete the original node. Yes. This is correct. "update insert" will add a new node. If you want to replace a node you can use the "update replace" form of update. http://exist.sourceforge.net/update_ext.html#d125e357 On Thu, Sep 1, 2011 at 2:16 PM, Kaustubh Nagraj <kau...@ea...>wrote: > Hello everyone, > > I have been running xupdates on exist and I used the command ‘update > insert’. I ran the query such that I obtained a reference to a node in the > document and then attempted to add the same node to the document at a > different position (namely as the first node). > > After running the query I found that I had 2 instances of the same node in > the document, one at its original position and another at the top of the > document. Which implies that when inserting a node from a document, the > server does not delete the original node. > > I was wondering if this behavior was expected. I was under the impression > that the system would delete the original node and then insert it into the > document. > > I am providing a copy of the code I used: > > (: function to find a random node:) > declare function local:random_node($root as node()) as node() > { > let $Tnodes := $root//T > let $random_position := util:random(count($Tnodes)) > let $random_node := $Tnodes[$random_position] > return > $random_node > }; > > (: function to insert the node at the top of the document:) > declare function local:insert_as_first_node($node as node(),$root as > node()) > { > update insert $node preceding $root//T[1] > }; > > let $doc := doc("/path/to/document") > let $root := $doc/root() > let $random_node := local:random_node($root) > > return (local:insert_as_first_node($random_node,$root)) > > > > > > ------------------------------------------------------------------------------ > Special Offer -- Download ArcSight Logger for FREE! > Finally, a world-class log management solution at an even better > price-free! And you'll get a free "Love Thy Logs" t-shirt when you > download Logger. Secure your free ArcSight Logger TODAY! > http://p.sf.net/sfu/arcsisghtdev2dev > _______________________________________________ > Exist-open mailing list > Exi...@li... > https://lists.sourceforge.net/lists/listinfo/exist-open > > -- Dan McCreary Semantic Solutions Architect office: (952) 931-9198 cell: (612) 986-1552 |
From: Casey J. <cas...@jo...> - 2011-09-02 18:28:11
|
Thanks Dan. Another question I have is what happens to the reference of the node? So for instance: let $node := $doc/some_node let $insert := update insert into $doc $node ... If some_node is not deleted when its inserted, and a "copy" is made. Then does $node still refer to some_node or does it refer to the inserted node? Thanks, Casey On Fri, Sep 2, 2011 at 7:03 AM, Dan McCreary <dan...@gm...> wrote: > > Which implies that when inserting a node from a document, the server does > not delete the original node. > > Yes. This is correct. "update insert" will add a new node. If you want > to replace a node you can use the "update replace" form of update. > > http://exist.sourceforge.net/update_ext.html#d125e357 > > On Thu, Sep 1, 2011 at 2:16 PM, Kaustubh Nagraj <kau...@ea...>wrote: > >> Hello everyone, >> >> I have been running xupdates on exist and I used the command ‘update >> insert’. I ran the query such that I obtained a reference to a node in the >> document and then attempted to add the same node to the document at a >> different position (namely as the first node). >> >> After running the query I found that I had 2 instances of the same node in >> the document, one at its original position and another at the top of the >> document. Which implies that when inserting a node from a document, the >> server does not delete the original node. >> >> I was wondering if this behavior was expected. I was under the impression >> that the system would delete the original node and then insert it into the >> document. >> >> I am providing a copy of the code I used: >> >> (: function to find a random node:) >> declare function local:random_node($root as node()) as node() >> { >> let $Tnodes := $root//T >> let $random_position := util:random(count($Tnodes)) >> let $random_node := $Tnodes[$random_position] >> return >> $random_node >> }; >> >> (: function to insert the node at the top of the document:) >> declare function local:insert_as_first_node($node as node(),$root as >> node()) >> { >> update insert $node preceding $root//T[1] >> }; >> >> let $doc := doc("/path/to/document") >> let $root := $doc/root() >> let $random_node := local:random_node($root) >> >> return (local:insert_as_first_node($random_node,$root)) >> >> >> >> >> >> ------------------------------------------------------------------------------ >> Special Offer -- Download ArcSight Logger for FREE! >> Finally, a world-class log management solution at an even better >> price-free! And you'll get a free "Love Thy Logs" t-shirt when you >> download Logger. Secure your free ArcSight Logger TODAY! >> http://p.sf.net/sfu/arcsisghtdev2dev >> _______________________________________________ >> Exist-open mailing list >> Exi...@li... >> https://lists.sourceforge.net/lists/listinfo/exist-open >> >> > > > -- > Dan McCreary > Semantic Solutions Architect > office: (952) 931-9198 > cell: (612) 986-1552 > > > ------------------------------------------------------------------------------ > Special Offer -- Download ArcSight Logger for FREE! > Finally, a world-class log management solution at an even better > price-free! And you'll get a free "Love Thy Logs" t-shirt when you > download Logger. Secure your free ArcSight Logger TODAY! > http://p.sf.net/sfu/arcsisghtdev2dev > _______________________________________________ > Exist-open mailing list > Exi...@li... > https://lists.sourceforge.net/lists/listinfo/exist-open > > -- -- Casey Jordan easyDITA a product of Jorsek LLC "CaseyDJordan" on LinkedIn, Twitter & Facebook (585) 348 7399 easydita.com This message is intended only for the use of the Addressee(s) and may contain information that is privileged, confidential, and/or exempt from disclosure under applicable law. If you are not the intended recipient, please be advised that any disclosure copying, distribution, or use of the information contained herein is prohibited. If you have received this communication in error, please destroy all copies of the message, whether in electronic or hard copy format, as well as attachments, and immediately contact the sender by replying to this e-mail or by phone. Thank you. |
From: Dan M. <dan...@gm...> - 2011-09-02 20:57:10
|
So just be be clear, >From the following: http://exist.sourceforge.net/update_ext.html#d125e300 the format is: let $insert := update insert $new-element *into *$node (note your example puts insert before the $new-element and $node The documentation puts the expression after the into on a new line so this is a bit confusing. > and a "copy" is made Unlike XForms xf:insert, there is no implicit "copy" on insert. You must give the entire $new-element you want to add. > Then does $node still refer to some_node or does it refer to the inserted node? It will point to the old node. The inserted node should have a new node-id but the old one will still reference the node that was there prior to the insert. It should work the same the old node referant it is before or after the inserted node. - Dan On Fri, Sep 2, 2011 at 1:28 PM, Casey Jordan <cas...@jo...>wrote: > Thanks Dan. > > Another question I have is what happens to the reference of the node? So > for instance: > > let $node := $doc/some_node > let $insert := update insert into $doc $node > ... > > If some_node is not deleted when its inserted, and a "copy" is made. Then > does $node still refer to some_node or does it refer to the inserted node? > > Thanks, > > Casey > > > On Fri, Sep 2, 2011 at 7:03 AM, Dan McCreary <dan...@gm...>wrote: > >> > Which implies that when inserting a node from a document, the server >> does not delete the original node. >> >> Yes. This is correct. "update insert" will add a new node. If you want >> to replace a node you can use the "update replace" form of update. >> >> http://exist.sourceforge.net/update_ext.html#d125e357 >> >> On Thu, Sep 1, 2011 at 2:16 PM, Kaustubh Nagraj <kau...@ea...>wrote: >> >>> Hello everyone, >>> >>> I have been running xupdates on exist and I used the command ‘update >>> insert’. I ran the query such that I obtained a reference to a node in the >>> document and then attempted to add the same node to the document at a >>> different position (namely as the first node). >>> >>> After running the query I found that I had 2 instances of the same node >>> in the document, one at its original position and another at the top of the >>> document. Which implies that when inserting a node from a document, the >>> server does not delete the original node. >>> >>> I was wondering if this behavior was expected. I was under the impression >>> that the system would delete the original node and then insert it into the >>> document. >>> >>> I am providing a copy of the code I used: >>> >>> (: function to find a random node:) >>> declare function local:random_node($root as node()) as node() >>> { >>> let $Tnodes := $root//T >>> let $random_position := util:random(count($Tnodes)) >>> let $random_node := $Tnodes[$random_position] >>> return >>> $random_node >>> }; >>> >>> (: function to insert the node at the top of the document:) >>> declare function local:insert_as_first_node($node as node(),$root as >>> node()) >>> { >>> update insert $node preceding $root//T[1] >>> }; >>> >>> let $doc := doc("/path/to/document") >>> let $root := $doc/root() >>> let $random_node := local:random_node($root) >>> >>> return (local:insert_as_first_node($random_node,$root)) >>> >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Special Offer -- Download ArcSight Logger for FREE! >>> Finally, a world-class log management solution at an even better >>> price-free! And you'll get a free "Love Thy Logs" t-shirt when you >>> download Logger. Secure your free ArcSight Logger TODAY! >>> http://p.sf.net/sfu/arcsisghtdev2dev >>> _______________________________________________ >>> Exist-open mailing list >>> Exi...@li... >>> https://lists.sourceforge.net/lists/listinfo/exist-open >>> >>> >> >> >> -- >> Dan McCreary >> Semantic Solutions Architect >> office: (952) 931-9198 >> cell: (612) 986-1552 >> >> >> ------------------------------------------------------------------------------ >> Special Offer -- Download ArcSight Logger for FREE! >> Finally, a world-class log management solution at an even better >> price-free! And you'll get a free "Love Thy Logs" t-shirt when you >> download Logger. Secure your free ArcSight Logger TODAY! >> http://p.sf.net/sfu/arcsisghtdev2dev >> _______________________________________________ >> Exist-open mailing list >> Exi...@li... >> https://lists.sourceforge.net/lists/listinfo/exist-open >> >> > > > -- > -- > Casey Jordan > easyDITA a product of Jorsek LLC > "CaseyDJordan" on LinkedIn, Twitter & Facebook > (585) 348 7399 > easydita.com > > > This message is intended only for the use of the Addressee(s) and may > contain information that is privileged, confidential, and/or exempt from > disclosure under applicable law. If you are not the intended recipient, > please be advised that any disclosure copying, distribution, or use of > the information contained herein is prohibited. If you have received > this communication in error, please destroy all copies of the message, > whether in electronic or hard copy format, as well as attachments, and > immediately contact the sender by replying to this e-mail or by phone. > Thank you. > -- Dan McCreary Semantic Solutions Architect office: (952) 931-9198 cell: (612) 986-1552 |
From: Casey J. <cas...@jo...> - 2011-09-02 18:36:08
|
Oops, I messed up that xupdate statement, but you get what I mean. On Fri, Sep 2, 2011 at 2:28 PM, Casey Jordan <cas...@jo...>wrote: > Thanks Dan. > > Another question I have is what happens to the reference of the node? So > for instance: > > let $node := $doc/some_node > let $insert := update insert into $doc $node > ... > > If some_node is not deleted when its inserted, and a "copy" is made. Then > does $node still refer to some_node or does it refer to the inserted node? > > Thanks, > > Casey > > > On Fri, Sep 2, 2011 at 7:03 AM, Dan McCreary <dan...@gm...>wrote: > >> > Which implies that when inserting a node from a document, the server >> does not delete the original node. >> >> Yes. This is correct. "update insert" will add a new node. If you want >> to replace a node you can use the "update replace" form of update. >> >> http://exist.sourceforge.net/update_ext.html#d125e357 >> >> On Thu, Sep 1, 2011 at 2:16 PM, Kaustubh Nagraj <kau...@ea...>wrote: >> >>> Hello everyone, >>> >>> I have been running xupdates on exist and I used the command ‘update >>> insert’. I ran the query such that I obtained a reference to a node in the >>> document and then attempted to add the same node to the document at a >>> different position (namely as the first node). >>> >>> After running the query I found that I had 2 instances of the same node >>> in the document, one at its original position and another at the top of the >>> document. Which implies that when inserting a node from a document, the >>> server does not delete the original node. >>> >>> I was wondering if this behavior was expected. I was under the impression >>> that the system would delete the original node and then insert it into the >>> document. >>> >>> I am providing a copy of the code I used: >>> >>> (: function to find a random node:) >>> declare function local:random_node($root as node()) as node() >>> { >>> let $Tnodes := $root//T >>> let $random_position := util:random(count($Tnodes)) >>> let $random_node := $Tnodes[$random_position] >>> return >>> $random_node >>> }; >>> >>> (: function to insert the node at the top of the document:) >>> declare function local:insert_as_first_node($node as node(),$root as >>> node()) >>> { >>> update insert $node preceding $root//T[1] >>> }; >>> >>> let $doc := doc("/path/to/document") >>> let $root := $doc/root() >>> let $random_node := local:random_node($root) >>> >>> return (local:insert_as_first_node($random_node,$root)) >>> >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Special Offer -- Download ArcSight Logger for FREE! >>> Finally, a world-class log management solution at an even better >>> price-free! And you'll get a free "Love Thy Logs" t-shirt when you >>> download Logger. Secure your free ArcSight Logger TODAY! >>> http://p.sf.net/sfu/arcsisghtdev2dev >>> _______________________________________________ >>> Exist-open mailing list >>> Exi...@li... >>> https://lists.sourceforge.net/lists/listinfo/exist-open >>> >>> >> >> >> -- >> Dan McCreary >> Semantic Solutions Architect >> office: (952) 931-9198 >> cell: (612) 986-1552 >> >> >> ------------------------------------------------------------------------------ >> Special Offer -- Download ArcSight Logger for FREE! >> Finally, a world-class log management solution at an even better >> price-free! And you'll get a free "Love Thy Logs" t-shirt when you >> download Logger. Secure your free ArcSight Logger TODAY! >> http://p.sf.net/sfu/arcsisghtdev2dev >> _______________________________________________ >> Exist-open mailing list >> Exi...@li... >> https://lists.sourceforge.net/lists/listinfo/exist-open >> >> > > > -- > -- > Casey Jordan > easyDITA a product of Jorsek LLC > "CaseyDJordan" on LinkedIn, Twitter & Facebook > (585) 348 7399 > easydita.com > > > This message is intended only for the use of the Addressee(s) and may > contain information that is privileged, confidential, and/or exempt from > disclosure under applicable law. If you are not the intended recipient, > please be advised that any disclosure copying, distribution, or use of > the information contained herein is prohibited. If you have received > this communication in error, please destroy all copies of the message, > whether in electronic or hard copy format, as well as attachments, and > immediately contact the sender by replying to this e-mail or by phone. > Thank you. > -- -- Casey Jordan easyDITA a product of Jorsek LLC "CaseyDJordan" on LinkedIn, Twitter & Facebook (585) 348 7399 easydita.com This message is intended only for the use of the Addressee(s) and may contain information that is privileged, confidential, and/or exempt from disclosure under applicable law. If you are not the intended recipient, please be advised that any disclosure copying, distribution, or use of the information contained herein is prohibited. If you have received this communication in error, please destroy all copies of the message, whether in electronic or hard copy format, as well as attachments, and immediately contact the sender by replying to this e-mail or by phone. Thank you. |
From: Casey J. <cas...@jo...> - 2011-09-02 20:29:38
|
So I was too curious so I wrote some test cases. For anyone interested. *Given test.xml in the root of the database:* <test> <atestnode/> </test> * Running the following xquery:* let $doc := doc('/db/test.xml')/root()/*[1] let $node := $doc/*[1] let $insert_statement := update insert $node into $doc let $test_node := <test_node/> let $second_insert_statement := update insert $test_node into $node return () *Produces:* <test> <atestnode> <test_node/> </atestnode> <atestnode/> </test> So the answer, which makes sense, is that the reference to $node is maintained and not switched to reference the inserted node. Cheers, Casey On Fri, Sep 2, 2011 at 2:29 PM, Casey Jordan <cas...@jo...>wrote: > Oops, I messed up that xupdate statement, but you get what I mean. > > > On Fri, Sep 2, 2011 at 2:28 PM, Casey Jordan <cas...@jo...>wrote: > >> Thanks Dan. >> >> Another question I have is what happens to the reference of the node? So >> for instance: >> >> let $node := $doc/some_node >> let $insert := update insert into $doc $node >> ... >> >> If some_node is not deleted when its inserted, and a "copy" is made. Then >> does $node still refer to some_node or does it refer to the inserted node? >> >> Thanks, >> >> Casey >> >> >> On Fri, Sep 2, 2011 at 7:03 AM, Dan McCreary <dan...@gm...>wrote: >> >>> > Which implies that when inserting a node from a document, the server >>> does not delete the original node. >>> >>> Yes. This is correct. "update insert" will add a new node. If you want >>> to replace a node you can use the "update replace" form of update. >>> >>> http://exist.sourceforge.net/update_ext.html#d125e357 >>> >>> On Thu, Sep 1, 2011 at 2:16 PM, Kaustubh Nagraj <kau...@ea...>wrote: >>> >>>> Hello everyone, >>>> >>>> I have been running xupdates on exist and I used the command ‘update >>>> insert’. I ran the query such that I obtained a reference to a node in the >>>> document and then attempted to add the same node to the document at a >>>> different position (namely as the first node). >>>> >>>> After running the query I found that I had 2 instances of the same node >>>> in the document, one at its original position and another at the top of the >>>> document. Which implies that when inserting a node from a document, the >>>> server does not delete the original node. >>>> >>>> I was wondering if this behavior was expected. I was under the >>>> impression that the system would delete the original node and then insert it >>>> into the document. >>>> >>>> I am providing a copy of the code I used: >>>> >>>> (: function to find a random node:) >>>> declare function local:random_node($root as node()) as node() >>>> { >>>> let $Tnodes := $root//T >>>> let $random_position := util:random(count($Tnodes)) >>>> let $random_node := $Tnodes[$random_position] >>>> return >>>> $random_node >>>> }; >>>> >>>> (: function to insert the node at the top of the document:) >>>> declare function local:insert_as_first_node($node as node(),$root as >>>> node()) >>>> { >>>> update insert $node preceding $root//T[1] >>>> }; >>>> >>>> let $doc := doc("/path/to/document") >>>> let $root := $doc/root() >>>> let $random_node := local:random_node($root) >>>> >>>> return (local:insert_as_first_node($random_node,$root)) >>>> >>>> >>>> >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Special Offer -- Download ArcSight Logger for FREE! >>>> Finally, a world-class log management solution at an even better >>>> price-free! And you'll get a free "Love Thy Logs" t-shirt when you >>>> download Logger. Secure your free ArcSight Logger TODAY! >>>> http://p.sf.net/sfu/arcsisghtdev2dev >>>> _______________________________________________ >>>> Exist-open mailing list >>>> Exi...@li... >>>> https://lists.sourceforge.net/lists/listinfo/exist-open >>>> >>>> >>> >>> >>> -- >>> Dan McCreary >>> Semantic Solutions Architect >>> office: (952) 931-9198 >>> cell: (612) 986-1552 >>> >>> >>> ------------------------------------------------------------------------------ >>> Special Offer -- Download ArcSight Logger for FREE! >>> Finally, a world-class log management solution at an even better >>> price-free! And you'll get a free "Love Thy Logs" t-shirt when you >>> download Logger. Secure your free ArcSight Logger TODAY! >>> http://p.sf.net/sfu/arcsisghtdev2dev >>> _______________________________________________ >>> Exist-open mailing list >>> Exi...@li... >>> https://lists.sourceforge.net/lists/listinfo/exist-open >>> >>> >> >> >> -- >> -- >> Casey Jordan >> easyDITA a product of Jorsek LLC >> "CaseyDJordan" on LinkedIn, Twitter & Facebook >> (585) 348 7399 >> easydita.com >> >> >> This message is intended only for the use of the Addressee(s) and may >> contain information that is privileged, confidential, and/or exempt from >> disclosure under applicable law. If you are not the intended recipient, >> please be advised that any disclosure copying, distribution, or use of >> the information contained herein is prohibited. If you have received >> this communication in error, please destroy all copies of the message, >> whether in electronic or hard copy format, as well as attachments, and >> immediately contact the sender by replying to this e-mail or by phone. >> Thank you. >> > > > > -- > -- > Casey Jordan > easyDITA a product of Jorsek LLC > "CaseyDJordan" on LinkedIn, Twitter & Facebook > (585) 348 7399 > easydita.com > > > This message is intended only for the use of the Addressee(s) and may > contain information that is privileged, confidential, and/or exempt from > disclosure under applicable law. If you are not the intended recipient, > please be advised that any disclosure copying, distribution, or use of > the information contained herein is prohibited. If you have received > this communication in error, please destroy all copies of the message, > whether in electronic or hard copy format, as well as attachments, and > immediately contact the sender by replying to this e-mail or by phone. > Thank you. > -- -- Casey Jordan easyDITA a product of Jorsek LLC "CaseyDJordan" on LinkedIn, Twitter & Facebook (585) 348 7399 easydita.com This message is intended only for the use of the Addressee(s) and may contain information that is privileged, confidential, and/or exempt from disclosure under applicable law. If you are not the intended recipient, please be advised that any disclosure copying, distribution, or use of the information contained herein is prohibited. If you have received this communication in error, please destroy all copies of the message, whether in electronic or hard copy format, as well as attachments, and immediately contact the sender by replying to this e-mail or by phone. Thank you. |