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

John Snelson john.snelson at oracle.com
Tue Nov 6 16:21:32 PST 2007


Hi Robert,

XQuery Update can be used to update (or copy/transform) any XML, whether 
it is in a database or not. One of the programs I work on, XQilla, is 
already able to do that:

http://xqilla.sourceforge.net

John

Robert Walpole wrote:
> Many thanks for your replies.
> 
> I don't think I explained myself too well as actually I am aware of
> XQuery Update but understand that this is for updating documents stored
> within a database rather than just a temporary document fragment
> generated by some other Xquery.
> 
> Wolfgang's suggestion looks very interesting and certainly works well
> for the test case. I will see if I can adapt this for the slightly more
> complex real-life situation I have.
> 
> Thanks again.
> Rob Walpole
> Devon Portal Developer
> Email robert.walpole at devon.gov.uk
> Web http://www.devonline.gov.uk
> 
> 
>> -----Original Message-----
>> From: Wolfgang Meier [mailto:wolfgangmm at gmail.com] 
>> Sent: 06 November 2007 15:31
>> To: Robert Walpole
>> Cc: talk at xquery.com
>> Subject: Re: [xquery-talk] replacing a node in in-memory XML
>>
>>
>> Hi Robert,
>>
>>> I am trying to figure out the best way to replace a node 
>> within an in-memory
>>> XML fragment.
>> I really like to use the typeswitch statement for things like this:
>>
>> declare function t:replace($node as node()) as node() {
>>     typeswitch ($node)
>>         case $elem as element(services) return
>>             <services>
>>                 <service value="false">1</service>
>>                 <service value="true">2</service>
>>                 <service value="false">3</service>
>>             </services>
>>         case $elem as element() return
>>            element { node-name($elem) } {
>>                 $elem/@*, for $child in $elem/node() return 
>> t:replace($child)
>>             }
>>         default return $node
>> };
>>
>> t:replace(doc("test.xml")/*)
>>
>> Wolfgang
>>
> 
> _______________________________________________
> 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