A sort of synthesis

Dear all,

One can think of a synthesis of all the knowledge you kindly presented here
already.

Externalization of change tracking seems very attractive, as thus one can
keep the XML file as a standalone entity, without permanent PIs or foreign
elements or attributes in its structure.

Example of such external file:
<changes xmlns="http://www.w3.org/2013/change-tracking">
    <change timestamp="">
        <actions href="actions-1008.xquery" />
        <audit>
            <action timestamp="" status="accepted | rejected | pending" />
        </audit>
        <metadata></metadata>
    </change>
</changes>

Example of actions file (actions-1008.xquery above):
xquery version "3.0";

let $document := doc('preceding-version.xml')
let $add-1 := update insert attribute status {'new'} into $document

return $document



Such change tracking approach could provide:
1. differencing between two XML files or between two versions of the same
XML file;
2. versioning of an XML file;
3. auditing of changes;
4. rendering of changes, by using a light syntax (PIs, for instance); such
syntax is to be used for rendering only, thus not over-loading the XML
document itself;
5. alignment of this standard with the "Time Machine for XML" ([1]);
6. better performance for applying the change actions, as these are not
written in a declarative markup, which has to be interpreted, but in a
native language and in external file, thus being possible to compile and
cache them;
7. possibility to use such change tracking in various processors, due to
the fact that actions can be described in various languages, such as
XQuery, XProc, or even Javascript.

[1] ftp://ftp.inf.ethz.ch/doc/tech-reports/7xx/734.pdf


This is just my 22 cents. :)

Claudius

Received on Sunday, 24 February 2013 10:39:39 UTC