The standard behaviour is that you get the old and the new content in the update trigger.
There is an exception for updating via inserting with ino:id. This actually deletes the old document and inserts the new, thus calling the update trigger twice; first with the old content and an empty new content and then with empty old content and the new content.
I guess with your xquery update call on root node you get the same behaviour.
One trick I use in these cases is to store the old object somewhere when the new object is empty and take the stored object as old object when the new object is there and the old is empty (you of course have to ensure that you get the right old object).
Julius Geppert
Software AG
#API-Management#webMethods#Tamino