ID
SC24
Omschrijving
Toevoegen van een nieuw element rondom een opmerking Origineel XML <div id="02">
<p id="01">Lorem ipsum dolor sit amet</p> </div>
Pointers /div[1 and @id="02"]/p[1 and @id="01"]/text():6 /div[1 and @id="02"]/p[1 and @id="01"]/text():11
Huidig XML <div id="02">
<p id="01">Lorem <b id="03">ipsum</b> dolor sit amet</p>
</div>
Pointers /div[1 and @id="02"]/p[1 and @id="01"]/b[1 and @id="03"]/text():0
/div[1 and @id="02"]/p[1 and @id="01"]/b[1 and @id="03"]/text():5
Diff DeltaXML Output <div deltaxml:deltaV2="A!=B" id="02"> <p deltaxml:deltaV2="A!=B" id="01">Lorem <deltaxml:textGroup deltaxml:deltaV2="A">
<deltaxml:text deltaxml:deltaV2="A">ipsum</deltaxml:text> </deltaxml:textGroup>
<b deltaxml:deltaV2="B" id="03">ipsum</b> dolor sit amet</p>
</div>
Algoritme Pseudo code Pointer startPointer; Pointer endPointer;
if (!startPointer.Equals(startPointer.position) && !endPointer.Equals(endPointer.position)) { FindElementAndUpdate(startPointer.elementId); }
Fallbacks -
Toelichting
Zodra een nieuw element wordt toegevoegd om een
opmerking heen, zal dit nieuwe element moeten worden toegevoegd aan de XPath van de pointers.
FindElementAndUpdate() staat onder alle toelichtingen/opmerkingen beschreven.
Scenario 25: Verwijderen van een element rondom een opmerking (tekst blijft
bestaan)
ID
SC25
Omschrijving
Verwijderen van een element rondom een opmerking (tekst blijft bestaan) Origineel XML <div id="02">
<p id="01">Lorem ipsum dolor sit amet</p>
</div>
Pointers /div[1 and @id="02"]/p[1 and @id="01"]/text():6 /div[1 and @id="02"]/p[1 and @id="01"]/text():11
Huidig XML <div id="02">
Lorem ipsum dolor sit amet
</div>
Pointers /div[1 and @id="02"]/text():6 /div[1 and @id="02"]/text():11
Diff DeltaXML
Output
<div deltaxml:deltaV2="A!=B" id="02">
<p deltaxml:deltaV2="A" id="01">Lorem ipsum dolor sit amet</p> <deltaxml:textGroup deltaxml:deltaV2="B">
<deltaxml:text deltaxml:deltaV2="B"> Lorem ipsum dolor sit amet </deltaxml:text> </deltaxml:textGroup> </div> Algoritme Pseudo code Pointer startPointer; Pointer endPointer;
if (!startPointer.Equals(startPointer.position) && !endPointer.Equals(endPointer.position)) { FindElementAndUpdate(startPointer.elementId); }
Fallbacks Zodra de originele ophangpunten niet meer bestaan voor een opmerking, zal de opmerking op de dichtstbijzijnde parent worden gezet. Tevens vind een collapse plaats.
Toelichting
FindElementAndUpdate() staat onder alle
toelichtingen/opmerkingen beschreven.
Scenario 26: Splitsen van een opmerking
ID
SC26
Omschrijving
Splitsen van een opmerking Origineel XML <div id="02">
<p id="01">Lorem ipsum dolor sit amet</p> </div>
Pointers /div[1 and @id="02"]/p[1 and @id="01"]/text():6 /div[1 and @id="02"]/p[1 and @id="01"]/text():11
Huidig XML <div id="02">
<p id="01">Lorem ips</p>
<p id="03">um dolor sit amet</p>
</div>
Pointers /div[1 and @id="02"]/p[1 and @id="01"]/text():6 /div[1 and @id="02"]/p[2 and @id="03"]/text():2
Diff DeltaXML
Output
<div deltaxml:deltaV2="A!=B" deltaxml:key="02"> <p deltaxml:deltaV2="A!=B" deltaxml:key="01">Lorem <deltaxml:textGroup deltaxml:deltaV2="A!=B"> <deltaxml:text deltaxml:deltaV2="A">ipsum dolor sit amet</deltaxml:text>
<deltaxml:text deltaxml:deltaV2="B">ips</deltaxml:text> </deltaxml:textGroup>
</p>
<p deltaxml:deltaV2="B" deltaxml:key="03">um dolor sit amet</p> </div>
Algoritme Pseudo code Het 'um' stuk is niet mogelijk om te mappen met diff, alleen binnen de editor.
Gedrag zoals bij SC11.
Fallbacks -
Toelichting
Zodra er een deel van de opmerking gesplitst wordt, zal
dit in de diff worden gezien als een verwijdering van een deel van de opmerking. Het gesplitste stuk met een ander id is daardoor in een diff niet terug te vinden.
Scenario 27: Startpunt verdwijnt
ID
SC27
Omschrijving
Startpunt verdwijnt
Origineel XML <div id="02">
<p id="01">Lorem ipsum dolor sit amet</p> <p id="03">Some other text</p>
</div>
Pointers /div[1 and @id="02"]/p[1 and @id="01"]/text():18 /div[1 and @id="02"]/p[2 and @id="03"]/text():4
Huidig XML <div id="02">
<p id="03">Some other text</p>
</div>
Pointers /div[1 and @id="02"]/p[1 and @id="03"]/text():0 /div[1 and @id="02"]/p[1 and @id="03"]/text():4
Diff DeltaXML
Output
<div deltaxml:deltaV2="A!=B" deltaxml:key="02">
<p deltaxml:deltaV2="A" deltaxml:key="01">Lorem ipsum dolor sit amet</p>
<p deltaxml:deltaV2="A=B" deltaxml:key="03">Some other text</p> </div> Algoritme Pseudo code Pointer startPointer; Pointer endPointer; enum changedTextXPath { START, END};
if (changedTextXPath == START) { startPointer.XPath = endPointer.XPath; startPointer.textPos = 0; }
Fallbacks -
Toelichting
Zodra het startpunt van een opmerking verdwijnt zal de startpointer naar een niet bestand pad leiden. Hierop moet de waarde van de startpointer gewijzigd worden naar de start van het resterende deel van de opmerking.
Scenario 28: Eindpunt verdwijnt
ID
SC27
Omschrijving
Eindpunt verdwijnt
Origineel XML <div id="02">
<p id="01">Lorem ipsum dolor sit amet</p> <p id="03">Some other text</p>
</div>
Pointers /div[1 and @id="02"]/p[1 and @id="01"]/text():18 /div[1 and @id="02"]/p[2 and @id="03"]/text():4
Huidig XML <div id="02">
<p id="01">Lorem ipsum dolor sit amet</p>
</div>
Pointers /div[1 and @id="02"]/p[1 and @id="01"]/text():18 /div[1 and @id="02"]/p[1 and @id="01"]/text():26
Diff DeltaXML
Output
<div deltaxml:deltaV2="A!=B" deltaxml:key="02">
<p deltaxml:deltaV2="A=B" deltaxml:key="01">Lorem ipsum dolor sit amet</p>
<p deltaxml:deltaV2="A" deltaxml:key="03">Some other text</p> </div>
Algoritme Pseudo code Pointer startPointer; Pointer endPointer; enum changedTextXPath { START, END};
if (changedTextXPath == END) { endPointer.XPath = startPointer.XPath; endPointer.textPos = startPointer.XPath.text().length; }
Fallbacks -
Toelichting
Zodra het eindpunt van een opmerking verdwijnt zal de
endpointer naar een niet bestand pad leiden. Hierop moet de waarde van de endpointer gewijzigd worden naar het einde van het resterende deel van de opmerking.