The DiffAlgorithm and MergeAlgorithm are used to provide the merge capabilities of this project.

Merge is useful when an OfficeDocument is converted to a "Device" Document format, and the "Device" Document version is modified. Those changes can be merged back into the original OfficeDocument with the merger. The merger is capable of doing this even if the "Device" format is lossy in comparison to the OfficeDocument format.

The DiffAlgorithm generates a list of Difference objects that represent the differences between two OfficeDocument objects. It is assumed that one is the original OfficeDocument object and the other is a "lossy" version of the same Document with edits to be merged. Typically the "lossy" version is created by converting a "Device" Document back into an OfficeDocument.

The MergeAlgorithm takes the Difference objects as input, and creates a merged OfficeDocument. A merged OfficeDocument has the following features:

Each converter provides an implementation of the {@link org.openoffice.xmerge.ConverterCapabilities ConverterCapabilities} which specifies which OfficeDocument tags are supported for the device format.