The XML output from DeltaXML Merge conforms to an extended version of the DeltaV2 format which is common to other DeltaXML products. This section describes parts of DeltaV2 particularly significant in the DeltaXML Merge context, please read the DeltaV2 Reference for a full description of this format.
The deltaxml:deltaV2 attributes in the deltav2 format contain a sequence of one or more 'version identifiers' joined by the '=' character or '!=' character-pair.
The deltaV2 attributes conform to the following rules:
A sample deltaV2 attribute value from Merge:
Version identifiers are user-specified labels assigned to the common ancestor and each revision document. An identifier must be supplied each time a new document is added and each new identifier must have a unique value.
Version identifiers may be user-specified or machine generated (provided they meet the constraints outlined below). For example, the revision numbers or hash values used in a version control system could be used.
Version identifiers should conform to the NMTOKEN production rule defined in the XML Specification. The same production rules are used in both the XML 1.0 and XML 1.1 specifications. This production rule allows many unicode characters, but prohibits the use of the ! (hex value 0x21) and '=' characters (hex value 0x3b) which are used as the version separators as discussed above and also space characters.
A new element, the content group (
deltaxml:contentGroup) is used to describe changes involving entity references,
processing instructions and comments.
This element is modelled on the
deltaxml:textGroup element, but relaxes the restriction that the child elements
(in this case
deltaxml:content being equivalent to
deltaxml:text) must only contain text() nodes.
contentGroup provides alternative content that appears in similar positions in each of the files. The
deltaxml:content child elements
provide the alternative content and their
deltaV2 attributes indicate which of the input files contained that content.
The following example indicates how a contentGroup is used to show that different entity references are used in corresponding locations in the merge inputs:
<p deltaxml:deltaV2="ancestor=edit1!=edit2">Example of entity preservation <deltaxml:contentGroup deltaxml:deltaV2="ancestor=edit1!=edit2"> <deltaxml:content deltaxml:deltaV2="ancestor=edit1">&t1;</deltaxml:content> <deltaxml:content deltaxml:deltaV2="edit2">&t2;</deltaxml:content> </deltaxml:contentGroup></p>
deltaxml:content-typewill have different values in Merge results. The value '
merge-concurrent' represents concurrent editing. Future versions of the Merge product will also support a 'travelling draft' model where there is not necessarily the concept of a common ancestor version. It is likely the value '
merge-consecutive' will be used for this algorithm. Other values may also be introduced for subsequent Merge developments.