Release Documentation

Getting Started with DeltaXML Merge

1. Introduction

Welcome to the DeltaXML Merge product. It allows you to easily manage the complexities that arise when multiple authors are working on the same document resulting in multiple changes needing to be merged or monitored.

2. What can DeltaXML Merge do?

DeltaXML Merge takes two or more files and merges the changes that have been made into a single file. It aligns content, identifies potential conflicts and shows differences in the output.

There are two broad scenarios. A concurrent merge is used when there is one ancestor document that has been amended by a number of editors concurrently. Sequential merge is useful in a scenario in which each of the versions is a derivative of the previous version.

A common use case for DeltaXML Merge is to merge two variants of a file. A variety of output types are provided to support this case. These outputs include optional resolution of the complex three-way changes into a simpler two-way representation familiar to users of change tracking in document editors.

Changes detected by DeltaXML Merge are then typically resolved in an external process using rule-based approaches or interactively in an authoring or reviewing tool. For more complex requirements with more than three input files, a simple rule-based resolver can be configured and run within the merge process. Again, different types of output can be produced depending on the intended use of the result.

See the samples (in the samples folder of the distribution) to see how DeltaXML Merge can be run.

3. License Setup

In addition to a product download (usually a ZIP file) you will also need to obtain a license file before you can run the software.

License files can be obtained either from our download and licensing subsite or by contacting DeltaXML support. The license file should then the placed either into the directory created by unpacking the product download (where you will find the product .jar files) or into the home directory of the user(s) who will run the software. In either of these locations the software will attempt to locate the license file with the name: deltaxml-merge.lic.

The above procedure should allow the included developer applications and samples to run. More advanced forms of licensing are also supported including configuring the license using the product APIs and using concurrent or floating license servers. Please consult the licensing documentation for further details.

4. DeltaXML Merge API

The Java API provides a simple way to integrate merge into your existing processing workflow or CMS. It provides access to all of the parameters and allows the use of various combinations of Java objects as input/output types.

See the API documentation for details on parameter settings and their effects.

5. Command-line interface

DeltaXML Merge can be run using a command-line interface that is invoked from a terminal window or Windows command line. It is used like this:

java -jar deltaxml-merge.jar command arguments

5.1. Merge Types

The following table describes the different types of merges. The merge type is used with the merge and describe commands.

Table 1. Table of Merge Types

Merge TypeDescription
concurrentN-Way concurrent merge
concurrent3Three way concurrent merge
sequentialN-Way sequential merge

5.2. Supported Commands

The following commands and arguments are supported:

Prints out the current activated license details.

This command is used to see the description of the available parameters for the specified merge type.

java -jar deltaxml-merge.jar describe merge-type

For Example,

java -jar deltaxml-merge.jar describe concurrent


Runs a merge for the specified merge type. Each file needs to have a name which is used to identify the version in the generated DeltaV2 result.

java -jar deltaxml-merge.jar merge merge-type
                              ancestorName/version1Name ancestorFile/version1File
                              (versionName versionFile)+ 

The example below will merge three revisions ('anna', 'ben' and 'chris') against the 'ancestor' version eith merge type as concurrent. The inputs used in the example below are included in the release. Note: the command has been wrapped to aid readability.

java -jar deltaxml-merge.jar merge concurrent
                             ancestor samples/html-data/four-edits.html
                             anna samples/html-data/four-edits-anna.html
                             ben samples/html-data/four-edits-ben.html
                             chris samples/html-data/four-edits-chris.html

5.3. Merge command parameters

Optional command-line parameters can be added to the end of the command-line, these are used to set options for the merge process. The command-line syntax for parameters is: param=value, where param is the parameter name and value the parameter value. The supported parameters are listed below:


Specifies the type of post-processing applied to the merge result. The types available are:

Table 2. Table of Result Types

Result TypeDescriptionMerge Type
deltav2the raw result with no post-processing.
analyzed-deltav2performs first-line analysis of the result and adds attributes to indicate types of change
rule-processed-deltav2applies default rules to auto-resolve the simple change types 'add' and 'delete'. 
simplified-deltav2a simplified form of the deltaV2 format
simplified-rule-processed-deltav2the simplified format with the simple change types 'add' and 'delete' auto-resolved. 


Controls how DOCTYPE declarations appear in the result. The available modes are:

remove-alwaysno doctypes appear in the result, irrespective of what's in the inputs.
preserve-when-unchangedif no changes then preserved, otherwise removed.
error-when-changedif changes signal error, otherwise preserved in result.

Controls how general entity references appear in the result. The available modes are:

use-replacement-textEntity references are replaced with their 'replacement text' (which may actually include general XML such as text, attributes and elements).
preserve-referencesEntity references remain in the body of the XML content. Declarations in the internal subset will also be preserved where possible. If multiple declarations with different values are used in the inputs then multiple declarations may appear in the result.
preserve-references-encoded-formEntity references remain in the body of the XML content in encoded output format. Declarations in the internal subset will also be preserved where possible. If multiple declarations with different values are used in the inputs then multiple declarations may appear in the result.

Controls the granularity of text/PCDATA comparison, alignment and change reporting:

trueText is segmented into words (as described in Unicode Annex 29, Section 4), compared and results are then reported as this granularity.
falseText is compared and changes reported corresponding to the text/PCDATA structure found in the comparison inputs.

Sets whether elements containing significantly modified text should be split.

trueEnable element splitting when word-by-word is true and the amount of unchanged text in an element falls below 10%.
falseDisable element splitting.

Controls the table processing.

trueEnables the table processing.
falseDisables the table processing.

Controls the generation of intermediate pipeline debug files.

trueIntermediate pipeline debug files are generated.
falseIntermediate pipeline debug files are not generated.

5.4. Additional Three Way Merge Parameters

The command 'merge' with merge type 'concurrent3' supports all the parameters listed within the section 5.3. In addition to that, a command 'merge' with merge type 'concurrent3' supports result format and three additional result types. These are used in a same way as the merge command parameters.


Specifies the type of post-processing applied to the merge result. The types available are:

three-way-oxygen-track-changesproduces a merge result with oXygen Author track change processing instructions.
all-changesperforms three to two-way simplification and shows as many changes as possible.
conflicting-changesperforms three to two-way simplification and shows conflicts for further resolution. Simple, non-conflicting adds, deletes and modifications are automatically resolved.
their-changesperforms three to two-way simplification and shows conflicts for further resolution. Additionally changes in the third input are displayed. Simple, non-conflicting, changes in the second input are automatically resolved. This is designed for merge scenarios where the third input corresponds to the 'remote' or other users (their) branch.

Specifies various result formats for some of the result types produced by the three way merge. It is only applicable when the 'result-type' is all-changes, conflicting-changes or their-changes. The formats available are:

xml-deltaproduces either a deltaV2 result or a simplified delta result.
oxygen-track-changesproduces a result format which is an XML file with processing instructions used in the accept/reject interface of the oXygen XML editor/author

6. JAR Files

This section lists the number of '.jar' files in the release. They should always be included on the classpath while executing merge.

This jar file contains the main DeltaXML Merge API classes and associated resources (such as Java filters).
This jar file contains the main DeltaXML Core API classes and associated resources (such as Java filters).
This modified version of the Apache catalog resolver is needed when using catalogs through the deltaxml-merge.jar API. Please see Catalog Resolver Customizations for further details of the modifications we have made.
flexlm.jar and EccpressoAll.jar
These jar files are required for the Flexera based licensing capabilities introduced in the DeltaXML Merge 5.3 and later releases. They should always be included on the classpath.
saxon9pe.jar, xercesImpl.jar and icu4j.jar
These jar files are required by the client applications and are mandatory with merge packages by including them on the classpath.

7. Feedback

We are always keen to improve our products - please make use of our Support Forums if you have any comments or suggestions while working with DeltaXML. We hope you enjoy it!

The DeltaXML Team.

8. Updating your licence

The licence file may need to be upgraded or replaced, such as when changing from an evaluation to full licence or renewing an annual subscription. It is usually located in the top-level directory of the installation. However, it can also be located in a user's home directory, though in this case the licence will only be available to the user whose home directory the licence file is in. The upgrading process is simply a matter of replacing the original licence file with an updated licence file.

9. Licensing and Legal Notices

The DeltaXML software is licensed under the terms described in the file Licence.html. The software also includes components developed by others, the redistribution and copyright terms, including necessary notices are described in docs/legal-notices.html.