[xquery-talk] replacing a node in in-memory XML
John Snelson
john.snelson at oracle.com
Tue Nov 6 15:56:44 PST 2007
Hi Wolfgang,
In the absence of XQuery Update, I really like your technique for doing
this transformation. I think it's actually simpler and easier to read
than the equivalent XSLT.
John
Wolfgang Meier wrote:
> 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