On 12/10/2012 10:36 AM, James Fuller wrote:
> On Sat, Dec 8, 2012 at 5:29 PM, Alex S <as.signup@hotmail.com> wrote:
>> Thank you for your time & responses. I remember reading somewhere that a
>> pure text/ linear comparison based tool/ system may not be ideal to compare
>> & merge XML tree structure based documents.
>>
>> Are there any that are more XML aware?
>>
>> Also, I was wondering if I wanted to do compare/ merges visually using
>> Altova Diffdog or similar tools then which source control systems would
>> allow me to access/ load the individual versions into such a tool to merge
>> into the newer or create a newer version?
>>
>> Are some of these systems XML tree structure aware/ friendly?
>
> I think you wont find any source control systems themselves know
> anything about structure in terms of xml ... e.g. it 'sees' text
> (thats one of the great things about XML e.g. you can 'smuggle' it
> wherever there is a string var or text field ;) ).
>
> at larger scales you may want to consider some of the commercial offerings e.g.
> * http://www.deltaxml.com/
> * (useful links from here as well
> http://www.deltaxml.com/resources/articles-and-papers.html)
>
> though minimally something like oXygenXML (or XMLMind XML editor) is a
> good place to start.
I'm developing a versioned DBMS [1], but it also incorporates a
diff-algorithm to import the differences between two XML-documents (and
another one to compare resources once imported based on unique IDs),
such that the new revision/version of the document contains the union of
both files (however it may not generate minimal edit scripts, which for
instance results in more updates than needed to transfer one tree (the
imported XML-document) into the other tree (the other temporarily
imported XML-document -- as a side note that is not possible in all
cases in reasonable time, for instance it's time complexity roughly is
O(n^2) or more).
Keep in mind that the algorithm used sometimes executes a lot of moves
(which are very cheap in our internal datastructure, however with
DeweyIDs enabled these as of now aren't updated (it's on my todo list,
as well as the current work on index-structures -- the path summary is
updated in every case, even during renames and moves if it's enabled)).
I've also developed a GUI with several visualizations especially for
comparing the documents/resources (revisions/versions thereof). However
it has several bugs in the view management itself (for instance I wasn't
able to figure out how to display several processing(.org) views which
are embedded in a Swing-GUI side by side (that is how to instantiate two
PApplet instances properly). Displaying only one view however shouldn't
pose any problem. Fixing these issues is also on my todo list ;-)
However, I'd appretiate any help, the system also supports temporal
XPath/XQuery extensions, for instance time-aware axis to navigate in
time (very similar to the axis from the ETH project "Time Machine").
It's open source and written in Java7. It's available via maven :-)
I'd say that's a very valid use case (even if branching/merging on the
resources itself isn't implemented). But that's another (very) useful
mechanism :-)
BTW: I expect major performance improvements, once the index structures
are finished and rewrite-rules are written (but also regarding some
other bottlenecks). But I could use a helping hand, or two ;-)
kind regards
Johannes
[1] https://github.com/JohannesLichtenberger/sirix