The complexity of XML places demands on tools to work intelligently in order to preserve the essential structure of the original document and also represent the changes. This paper discusses the different varieties of merge for XML.
Merging multiple derivatives of a single ancestor (concurrent merge) may be the most obvious application, but there is also a need for a sequential merge when a document has been passed around between two or more authors in a sequential manner. Another important, and perhaps less well understood, application is ‘graft’, where the changes between two documents or data sets are applied to a third, different (though similar) document or data set.
There are of course similarities between these applications, but gaining an understanding of how they differ and where each is appropriate is necessary to make best use of automated processing of XML.