[xquery-talk] replacing a node in in-memory XML
Robert Walpole
robert.walpole at devon.gov.uk
Tue Nov 6 16:08:08 PST 2007
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
>
More information about the talk
mailing list