Introduction to DeltaXML Sync
Introduction
What is DeltaXML Sync?
- DeltaXML Sync is a system which performs an intelligent, XML-aware merge of three XML datasets into one XML result.
- DeltaXML Sync can apply rulesets to produce different kinds of results for a number of different kinds of applications.
- Rulesets can be symmetrical (treating all the input documents in the same way) or asymmetrical, e.g. concurrent-edit which needs to know which document is the 'base'.
- DeltaXML Sync uses DeltaXML Core matching technology so that deltaxml:key and deltaxml:ordered are available for fine control of the merge process.
Product Dependencies
DeltaXML Sync needs to be used in conjunction with JDK 1.4 or later. However, we recommend the use of JDK 1.5 (also known as Java 2 SE 5.0) for better performance and reliability. In order to develop applications using the included API a JDK (developer kit, including the javac compiler) is required. To deploy any resulting applications, and also to run our synccommand.jar command-line tool, a JRE (runtime environment) could also be used.
This system requires the availability of an XSLT 2.0 implementation. SaxonB version 8.8 (from Saxonica) is currently the only such implementation we have tested and we include saxon8.jar in the release.
Rulesets
We provide a number of different rulesets. Detailed format specification and descriptions for the corresponding rulesets are documented separately. New rulesets will be added in future releases, and we can quote for customized rulesets if you have a particular requirement.
Concurrent Edit
This is the 'classic' example where one document is changed by two editors/programs/processes independently of each other. These editors may introduce conflicts, for example when one editor modifies a paragraph and the other editor deletes it. In such cases the output will show the conflict so that another process can make a decision about what action to take. These conflicts are represented in XML so you can easily process them to generate the result that you require.
For the concurrent edit ruleset it is necessary to identify which of the documents represents the common ancestor (which we refer to as the 'base' input) for the two edits.
There are other applications of this ruleset. An example is configuration file updates where changes a customer has made to, say, version 1 need to be merged with vendor changes in releasing version 2.
Further documentation:
Unified Delta
The Unified Delta (or 'unidelta') represention is a form of identity ruleset; it simply corresponds to a merge of the three input documents where data that is common to two or more of the input documents is shared. No further processing is performed to remove or modify this merged data. It is possible to extract any of the three input documents directly from this format. This is provided as an illustration only - see warning below.
Further documentation:
Warning: We plan to introduce an improved format in the Sync 2.2 release and will probably then deprecate the use of this format.
Sync12-concurrent-edit (for backward compatibility only)
This format is provided for backwards compatibility reasons with the Sync 1.x product line. It is intended to provide syntactic compatibility with the previous product releases, thus it should only be used by existing customers and not new customers. While it implements a concurrent edit algorithm, the new concurrent edit representation is easier to process and contains more information.
Developing with Sync
In this section we will propose a roadmap for developers to help you to become familiar with DeltaXML Sync.
DeltaXML Sync uses DeltaXML Core to perform the basic comparison between the three documents. This means that many of the comments that apply to DeltaXML Core also apply to DeltaXML Sync. In particular, you need to be aware of how whitspace is treated. You can also use the deltaxml:key and deltaxml:ordered attributes to control the comparison process. If you are not familiar with this, see the online walkhrough of DeltaXML Core.
Online Tools
We provide a number of online evaluation and experimentation tools:
- Walkthroughs show features: concurrent-edit and unidelta. We strongly recommend you review this first.
- The Sync Sandbox allows interactive experimentation with small samples of data. It shows the result immediately.
- The online service allows you to upload your own data for processing on our server.
SDK (Software Development Kit) download
The online tools show you how Sync works. After using them you may want to:
- experiment with your own filters and pipelines
- assess performance on your own server/hardware
- experiment with the APIs which allows the Sync engine/pipelines to be embedded into your own workflow
An activation key to evaluate the SDK can be requested after registering.