|
[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 XMLAndrew Welch andrew.j.welch at gmail.comTue Nov 6 16:15:58 PST 2007
Doesn't the OP want to set service/@value to true that matches the input? If so the XSLT could be the "identity template + plus specific template" pattern: <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="services"> <services> <service value="{service = 1}">1</service> <service value="{service = 2}">2</service> <service value="{service = 3}">3</service> </services> </template> which i think is quite nice and easy to read too, once you get the way apply-templates works. It's also very easy to add further specific templates, and of course its open to be overridden by a stylesheet that imports it. On 06/11/2007, John Snelson <http://x-query.com/mailman/listinfo/talk> wrote: > 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 > _______________________________________________ > http://x-query.com/mailman/listinfo/talk > http://x-query.com/mailman/listinfo/talk > -- Andrew Welch http://andrewjwelch.com Kernow: http://kernowforsaxon.sf.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
|






