|
[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message] replacing a node in in-memory XMLJohn Snelson john.snelson at oracle.comTue 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
> _______________________________________________
> http://x-query.com/mailman/listinfo/talk
> 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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|






