[xquery-talk] replacing a node in in-memory XML

John Snelson john.snelson at oracle.com
Tue Nov 6 15:29:29 PST 2007


Hi Robert,

You can use XQuery Update to do this really easily:

copy $cpy := doc("mydoc")
modify replace node $cpy/communitygroup/group/services with
<services>
         <service value="false">1</service>
         <service value="true">2</service>
         <service value="false">3</service>
</services>
return $cpy

or

copy $cpy := doc("mydoc")
modify insert nodes (
   <service value="false">1</service>,
   <service value="false">3</service>
) into $cpy/communitygroup/group/services
return $cpy

You can leave out the "copy ... modify ... return" (transform 
expression) if you want the modification done to the document in-place.

John

Robert Walpole wrote:
> Hi,
> 
> I am trying to figure out the best way to replace a node within an 
> in-memory XML fragment.
> 
> For example, lets say I have the following fragment in memory…
> 
> <communitygroup>
>         <group>
>                 <name>Test</name>
>                 <services>
>                         <service value="true">2</service>
>                 </services>
>         </group>
> </communitygroup>
> 
> …and want to replace the services node with the following…
> 
> <services>
>         <service value="false">1</service>
>         <service value="true">2</service>
>         <service value="false">3</service>
> </services>
> 
> Is there a way of doing this in XQuery?
> 
> Obviously I could use an XSL transformation, which would give me the 
> result I want, but maybe there is a more efficient way using XQuery?
> 
> Thanks
> Rob Walpole
> Devon Portal Developer
> Email robert.walpole at devon.gov.uk
> Web _http://www.devonline.gov.uk_
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk


-- 
John Snelson, Oracle Corporation
Berkeley DB XML:        http://www.oracle.com/database/berkeley-db/xml
XQilla:                                  http://xqilla.sourceforge.net


More information about the talk mailing list