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

Wolfgang Meier wolfgangmm at gmail.com
Tue Nov 6 16:31:21 PST 2007


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