2010-02-08 99 views
12

我希望能夠做的XHTML文檔的3路合併:3路XML合併算法

  1. 開始與文檔的某些原件
  2. 一個用戶編輯原件及複印件文檔
  3. 另一個用戶編輯原始文檔的單獨副本
  4. 需要一個工具來合併(自動和/或直觀地)由兩個用戶所做的更改。

注:

  • 我想包括在商業軟件這個功能:所以我更喜歡的東西是免費的,因爲,在啤酒和/或開源,而不是一個商業工具。
  • 我懷疑它的更好,如果該工具是XML的,而不是試圖用軟件,如diff3它實現純文本
  • 鑑於所有三個輸入文檔是有效的XHTML文檔,生成的輸出文件的3路合併應該驗證過

工具,我發現包括:

  1. The "3DM" XML 3-way Merging and Differencing Tool
  2. Fuego Core XML Diff and Patch Tool
  3. 的xmldiff(最近從已經關閉的GotDotNet上的網站,但也許它生活在爲XML Notepad一個組件)

第一以上的(即「3DM」)明確表示它實現了3路合併。

我不知道另外兩個:「diff」後跟「patch」是否相當於3-way合併,或者相反「patch」是否只能將diff重新應用到原始文件(而不是到第三個文件的更改副本)

您能爲此推薦一些軟件(來自上面的列表或其他地方)和/或合併算法的描述嗎?


編輯:Matching, diffing and merging XML是從2008年的另一篇文章,其中包括的各種算法和各種實現的引用一個簡短的調查。


編輯#2:筆者證實,火地島核心XML diff和patch工具只能patche原始文件,並沒有實現3路合併。

回答

3

我可以添加到您的收藏DeltaXML - 他們不要求diff3,但值得考慮。

+0

謝謝:他們在http://www.deltaxml.com/dxml/products/sync/index.html上介紹了他們的3路XML合併。 – ChrisW 2010-02-08 15:45:10

3

我沒有一個免費的解決方案,恐怕,但Project: Merge是一個便宜的XML比較和合並工具,可以通過命令行進行控制。它可能直接插入到您的應用程序中。

+1

它可能不是免費的,但每個許可證的價格爲19歐元是。一個整潔的小工具,不,他們不支付我說的:) – 2012-11-15 04:42:37

+0

這是我見過的最好的工具。但是,他們已經更新了它,並將其更名爲「Oso XML Merge」。謝謝! – Adrian 2018-01-14 00:38:11

1

一個免費的替代辦法是做

$ xmlstarlet fo before.xml > before.xml 
$ xmlstarlet fo after.xml > after.xml 

,然後做

$ diff before.xml after.xml 

創建XML差的補丁。它是免費和簡單的。