Loading login details...

DeltaXMLSync Concurrent Edit Ruleset

The following tables, show by example, how the concurrent edit ruleset operates on XML elements, attributes and text (PCDATA).

The general principles adopted are as follows:

The column headings correspond to the naming conventions in the ruleset and our command-line and online tools.

The dxce namespace prefix is used, without being properly defined, in order to save space; the corresponding namespace URI is: http://www.deltaxml.com/ns/concurrent-edit

Element Rules

base

edit1

edit2

result

Addition in edit1

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b/>
  <c/>
</e>
<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b/>
  <c/>
</e>

Addition in edit2

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b/>
  <c/>
</e>
<e>
  <a/>
  <b/>
  <c/>
</e>

Addition in both, same content

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b/>
  <c/>
</e>
<e>
  <a/>
  <b/>
  <c/>
</e>
<e>
  <a/>
  <b/>
  <c/>
</e>

Addition in both, different content

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b/>
  <c/>
</e>
<e>
  <a/>
  <b/>
  <d/>
</e>
<e>
  <a/>
  <b/>
  <c/>
  <d/>
</e>

Deletion in edit1

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
</e>
<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
</e>

Deletion in edit2

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
</e>
<e>
  <a/>
</e>

Deletion in both

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
</e>
<e>
  <a/>
</e>
<e>
  <a/>
</e>

Change in edit1

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b>
    <b1/>
  </b>
</e>
<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b>
    <b1/>
  </b>
</e>

Change in edit2

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b>
    <b2/>
  </b>
</e>
<e>
  <a/>
  <b>
    <b2/>
  </b>
</e>

Change in both, same content

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b>
    <b3/>
  </b>
</e>
<e>
  <a/>
  <b>
    <b3/>
  </b>
</e>
<e>
  <a/>
  <b>
    <b3/>
  </b>
</e>

Change in both, different content

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b>
    <b1/>
  </b>
</e>
<e>
  <a/>
  <b>
    <b1/>
  </b>
</e>
<e>
  <a/>
  <b>
    <b1/>
    <b2/>
  </b>
</e>

Change in edit1, deletion in edit2

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
  <b>
    <b1/>
  </b>
</e>
<e>
  <a/>
</e>
<e>
  <a/>
  <dxce:elementConflict
      dxce:type="modified-edit1-deleted-edit2">
    <dxce:base>
      <b/>
    </dxce:base>
    <dxce:edit1>
      <b>
        <b1/>
      </b>
    </dxce:edit1>
  </
dxce:elementConflict>
</e>

Change in edit2, deletion in edit1

<e>
  <a/>
  <b/>
</e>
<e>
  <a/>
</e>
<e>
  <a/>
  <b>
    <b2/>
  </b>
</e>
<e>
  <a/>
  <dxce:elementConflict
      dxce:type="deleted-edit1-modified-edit2">
    <dxce:base>
      <b/>
    </dxce:base>
    <dxce:edit2>
      <b>
        <b2/>
      </b>
    </dxce:edit2>
  </dxce:elementConflict>
</e>

PCData Rules

base

edit1

edit2

result

Addition in edit1

<e></e>

<e>1</e>

<e></e>

<e>1</e>

Addition in edit2

<e></e>

<e></e>

<e>2</e>

<e>2</e>

Addition in both, same text

<e></e>

<e>3</e>

<e>3</e>

<e>3</e>

Addition in both, different text

<e></e>

<e>1</e>

<e>2</e>

<e>
  <dxce:pcdataConflict
      dxce:type="addition-conflict">
    <
dxce:edit1>1</dxce:edit1>
    <
dxce:edit2>2</dxce:edit2>
  </dxce:pcdataConflict>
</e>

Deletion in edit1

<e>3</e>

<e></e>

<e>3</e>

<e></e>

Deletion in edit2

<e>3</e>

<e>3</e>

<e></e>

<e></e>

Deletion in both

<e>3</e>

<e></e>

<e></e>

<e></e>

Contents change in edit1

<e>3</e>

<e>1</e>

<e>3</e>

<e>1</e>

Contents change in edit2

<e>3</e>

<e>3</e>

<e>2</e>

<e>2</e>

Contents change in both,
same text

<e>3</e>

<e>4</e>

<e>4</e>

<e>4</e>

Contents change in both,
different text

<e>3</e>

<e>1</e>

<e>2</e>

<e>
  <dxce:pcdataConflict
      dxce:type="three-way-conflict">
    <dxce:base>3</dxce:base>
    <dxce:edit1>1</dxce:edit1>
    <dxce:edit2>2</dxce:edit2>
  </dxce:pcdataConflict>
</e>

Contents change in edit1,
deletion in edit2

<e>3</e>

<e>1</e>

<e></e>

<e>
  <dxce:pcdataConflict
      dxce:type="modified-edit1-deleted-edit2">
    <dxce:base>3</dxce:base>
    <dxce:edit1>1</dxce:edit1>
  </dxce:pcdataConflict>
</e>

Contents change in edit2,
deletion in edit1

<e>3</e>

<e></e>

<e>2</e>

<e>
  <dxce:pcdataConflict
      dxce:type="deleted-edit1-modified-edit2">
    <dxce:base>3</dxce:base>
    <dxce:edit2>2</dxce:edit2>
  </dxce:pcdataConflict>
</e>

Attribute Rules

base

edit1

edit2

result

Attribute addition in edit1

<e/>

<e a="1"/>

<e/>

<e a="1"/>

Attribute addition in edit2

<e/>

<e/>

<e a="1"/>

<e a="2"/>

Addition in both, same values

<e/>

<e a="3"/>

<e a="3"/>

<e a="3"/>

Addition in both, different values

<e/>

<e a="1"/>

<e a="2"/>

<e>
  <dxce:attributeConflicts>
    <a dxce:type="addition-conflict">
      <
dxce:edit1>1</dxce:edit1>
      <
dxce:edit2>2</dxce:edit2>
    </a>
  </dxce:attributeConflicts>
</e>

Attribute deletion in edit1

<e a="3"/>

<e/>

<e a="3"/>

<e/>

Attribute deletion in edit2

<e a="3"/>

<e a="3"/>

<e/>

<e/>

Attribute deletion in both

<e a="3"/>

<e/>

<e/>

<e/>

Value changes in edit1

<e a="3"/>

<e a="1"/>

<e a="3"/>

<e a="1"/>

Value changes in edit2

<e a="3"/>

<e a="3"/>

<e a="2"/>

<e a="2"/>

Value changes in both, same value

<e a="3"/>

<e a="4"/>

<e a="4"/>

<e a="4"/>

Value changes in both, different values

<e a="3"/>

<e a="1"/>

<e a="2"/>

<e>
  <
dxce:attributeConflicts
    <a dxce:type="three-way-conflict">
      <
dxce:base>3</dxce:base>
      <
dxce:edit1>1</dxce:edit1>
      <
dxce:edit2>2</dxce:edit2>
    </a>
  </
dxce:attributeConflicts>
</e>

Value change in edit1, attribute deletion in edit2

<e a="3"/>

<e a="1"/>

<e/>

<e>
  <
dxce:attributeConflicts
    <a dxce:type="modified-edit1-deleted-edit2">
      <
dxce:base>3</dxce:base>
      <
dxce:edit1>1</dxce:edit1>
    </a>
  </
dxce:attributeConflicts>
</e>

Value change in edit2, attribute deletion in edit1

<e a="3"/>

<e/>

<e a="2"/>

<e>
  <
dxce:attributeConflicts
    <a dxce:type="deleted-edit1-modified-edit2">
      <
dxce:base>3</dxce:base>
      <
dxce:edit2>2</dxce:edit2>
    </a>
  </
dxce:attributeConflicts>
</e>