Loading login details...

Concurrent Edit Conflict Format

DeltaXML Concurrent Edit Conflict Format Description

The DeltaXML Concurrent Edit Conflict format is a representation for any conflicts that are found when three XML documents are synchronized using the concurrent edit rule set. In situations where there are no conflicts, the elements and attributes described here will not appear in the result document.

In this description, the three input documents are base, edit1 and edit2.

Namespace and Prefix

The namespace for Concurrent Edit conflict is http://www.deltaxml.com/ns/concurrent-edit and the preferred prefix is dxce: .

Elements and Attributes

This is a list of the elements used by this format:

Element name

Content

Purpose

dxce:attributeConflicts

One of more elements, each of which has a local-name and namespace corresponding to an attribute belonging to the parent element. Each of these child elements will have a dxce:type attribute. Each of these child elements will have as content zero or one of each of the elements dxce:base, dxce:edit1 and dxce:edit2, the actual content depends of the value of the dxce:type attribute.

Details any conflicts between the attributes associated with the parent element

dxce:elementConflict

Zero or one of each of the elements dxce:base, dxce:edit1 and dxce:edit2. The element will have a dxce:type attribute and the actual content depends of the value of this attribute.

Details any conflicts between elements.

dxce:pcdataConflict

Zero or one of each of the elements elements dxce:base, dxce:edit1 and dxce:edit2. The element will have a dxce:type attribute and the actual content depends of the value of this attribute.

Details any conflicts between PCDATA items.

dxce:base

Any content from the base document.

To record the content of the base document in a situation where a conflict occurs.

dxce:edit1

Any content from the edit1 document.

To record the content of the edit1 document in a situation where a conflict occurs.

dxce:edit2

Any content from the edit2 document.

To record the content of the edit2 document in a situation where a conflict occurs.

This is a list of the attributes used by this format:

Attribute name

Content

Purpose

dxce:type

One of the values: three-way-conflict, deleted-edit1-modified-edit2, modified-edit1-deleted-edit2, addition-conflict.

Details the type of conflict that occurred.

Description

The elements and attribtues described here occur only when a conflict is identified when the concurrent edit synchronization rules are applied. The dxce:type attribute indicates the type of conflict. The meaning of each of the allowed values for this attribute are shown in the table below. An 'item' may be an attribute, element or PCDATA item.

dxce:type value

Description of the conflict

three-way-conflict

The content in all three of the input documents is different. All three items will be provided in the result file so that a choice can be made.

deleted-edit1-modified-edit2

An item present in the base document was deleted in the edit1 document but was also changed in the edit2 document. The content of the base and the edit2 documents is provided in the result file so a choice can be made.

modified-edit1-deleted-edit2

An item present in the base document was deleted in the edit2 document but was also changed in the edit1 document. The content of the base and the edit1 documents is provided in the result file so a choice can be made.

addition-conflict

An item was added in both edit1 and edit2 but they are different. Both items are provided so a choice can be made.

Rules for Concurrent Edit Conflict Format

  1. The content of an element with an attribute dxce:type="three-way-conflict" will always be: (dxce:base, dxce:edit1, dxce:edit2).
  2. The content of an element with an attribute dxce:type="deleted-edit1-modified-edit2" will always be: (dxce:base, dxce:edit2).
  3. The content of an element with an attribute dxce:type="modified-edit1-deleted-edit2" will always be: (dxce:base, dxce:edit1).
  4. The content of an element with an attribute dxce:type="addition-conflict" will always be: (dxce:edit1, dxce:edit2).
  5. The element dxce:elementConflict cannot have an attribute dxce:type="three-way-conflict" nor dxce:type="addition-conflict".
  6. The content of the elements  dxce:base, dxce:edit1 and dxce:edit2 will always be a single child element (with its content) or PCDATA item.

Examples of Conflicts

Example of Element conflict

base document

edit1 document

edit2 document

<example>
  <person/>
</example>

<example>
</example>

<example>
  <person>
    <firstName>John</firstName>
  </person>
</example>

And the result for this will be as follows:

Concurrent Edit Conflict

Comments

<example>
  <dxce:elementConflict dxce:type="deleted-edit1-modified-edit2">
    <dxce:base>
      <person />
    </dxce:base>
    <dxce:edit2>
      <person>
        <firstName>John</firstName>
      </person>
    </dxce:edit2>
  </dxce:elementConflict>
</example>


Element <person> has been deleted in edit1 but modified in edit2.

Examples of Text conflict

base document

edit1 document

edit2 document

<example>
  <person>
    <firstName>J</firstName>
  </person>
</example>

<example>
  <person>
    <firstName>Jo</firstName>
  </person>
</example>

<example>
  <person>
    <firstName>John</firstName>
  </person>
</example>

And the result for this will be as follows:

Concurrent Edit Conflict

Comments

<example>
  <person>
    <firstName>
      <dxce:pcdataConflict dxce:type="three-way-conflict">
        <dxce:base>J</dxce:base>
        <dxce:edit1>Jo</dxce:edit1>
        <dxce:edit2>John</dxce:edit2>
      </dxce:pcdataConflict>
    </firstName>
  </person>
</example>

The text in <firstName> has been changed in both edit1 and edit2 documents.

Examples of Attribute conflict

base document

edit1 document

edit2 document

<example>
  <person/>
</example>

<example>
  <person gender="male"/>
</example>

<example>
  <person gender="M"/>
</example>

And the result for this will be as follows:

Concurrent Edit Conflict

Comments

<example>
  <person>
    <dxce:attributeConflicts>
      <gender dxce:type="addition-conflict">
        <dxce:edit1>male</dxce:edit1>
        <dxce:edit2>M</dxce:edit2>
      </gender>
    </dxce:attributeConflicts>
  </person>
</example>

The gender attribute is added in edit1 and edit2 documents but has different values.