[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