This function replaces the child oldnode with the passed new node. If the new node is already a child it will not be added a second time. If the replacement succeeds the old node is returned.
Raised if this node is readonly or if the previous parent of the node being inserted is readonly.
Raised if this node is of a type that does not allow children of the type of the newnode node, or if the node to put in is one of this node's ancestors or this node itself.
Raised if newnode was created from a different document than the one that created this node.
Raised if oldnode is not a child of this node.