|
[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message] Help with multiple deletesMartin Probst mail at martin-probst.comWed Sep 2 10:33:10 PDT 2009
I guess your approach is a bit different than what the spec planned -
their idea was that you'd just want to perform the updates, but not
"witness" the effects.
A different approach would be this:
copy $x := doc("tree.xml")
modify (
let $node := $x//tree[@ID = 1] /branch[@ID = 2] /branch[@ID =
13] /branch[@ID = 65]
/branch[@ID = 15] /leaf[@ID = 25]
let $empty-branches := $x//branch[count(.//leaf except $node) = 0]
let $empty-trees := $x//tree[count(.//branch except $empty-branches) = 0]
return delete nodes ($empty-trees, $empty-branches, $node)
)
return $x
There might be more efficient ways to find the nodes that need
pruning, in particular if your implementation would support the
ancestor:: axis, you could walk upwards from $node instead of scanning
the whole tree for the $empty-* variables.
Martin
|
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
|






