Dear SC,
Let's discuss the XML design of a simple change operation: The deletion of a single paragraph.
There is a simple test document with three paragraphs, the 2nd should be deleted:
<text:p text:style-name="Standard">First paragraph (next paragraph is empty and will be deleted!)</text:p>
<text:p text:style-name="Standard"/>
<text:p text:style-name="Standard">Third <text:span text:style-name="T2">paragraph</text:span> (earlier paragraph string will be deleted!)</text:p>
As a discussion base I would propose the following XML for the undo.xml file:
<?xml version="1.0" encoding="UTF-8"?><?xml version="1.0" encoding="UTF-8"?>
<undo xmlns="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office-collab" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" office:version="1.3">
<changes>
<info>
<dc:creator>Unknown Author</dc:creator>
<dc:date>2016-06-11T15:24:00</dc:date>
</info>
<deletion c:start="/2" dc:type"paragraph" text:style-name="Standard"/>
<changes>
</undo>
Some brief comments:
- There is a new default namespace for this file with an URL similar to the SC
- The changes element embraces a group of changes that should be undone by an ODF application in a single reject. My question to the applications what is their distribution of changes to a single reject?
- That there has been a deletion at the position of two is easy to encode, more interesting the serialization of additional component information. Here I encoded the style information as an additional attribute with the same name.