2010-02-08 2 views
12

Voglio essere in grado di fare una fusione a 3 vie di documenti XHTML:3-way algoritmo merge XML

  1. Inizia con qualche copia originale del documento
  2. Un utente modifica un copia dell'originale documento
  3. Un altro utente modifica una copia separata del documento originale
  4. È necessario uno strumento per unire (automaticamente e/o visivamente) le modifiche apportate dai due utenti.

Nota:

  • voglio includere questa funzionalità nel software commerciale: quindi preferisco qualcosa che è privo di as-a-birra e/o open source, invece di uno strumento commerciale.
  • ho il sospetto è meglio se lo strumento è XML-aware, piuttosto che cercare di usare un software come diff3 che implementa 3-way merge di testo piatto
  • Dato che tutti e tre i documenti di ingresso sono documenti XHTML validi, il documento di output risultante dovrebbero validare anche

Strumenti ho trovato comprendono:

  1. The "3DM" XML 3-way Merging and Differencing Tool
  2. Fuego Core XML Diff and Patch Tool
  3. XmlDiff (ultimamente dal sito GotDotNet che è stato chiuso, ma forse è vivere su come un componente di XML Notepad)

La prima di quanto sopra (vale a dire "3DM") dice esplicitamente che implementa le unioni a 3 vie.

Non conosco gli altri due: se "diff" seguito da "patch" equivale a un'unione a 3 vie, oppure se "patch" può solo riapplicare il diff al file originale (e non a un terzo, copia alterata del file)

Potete raccomandare qualche software (dalla lista sopra, o altrove) per questo scopo, e/o una descrizione di un algoritmo di fusione?


Edit: Matching, diffing and merging XML è un altro articolo a partire dal 2008, che comprende una breve rassegna dei vari algoritmi e riferimenti a varie implementazioni.


Edit # 2: L'autore ha confermato che il Fuoco Nucleo XML Diff e strumento di patch può solo patchata del file originale, e non implementa 3 vie fusione.

risposta

3

Posso aggiungere alla tua collezione DeltaXML - non rivendicano diff3, ma vale la pena considerare.

+0

Grazie: introducono il loro unione a 3 vie per XML all'indirizzo http://www.deltaxml.com/dxml/products/sync/index.html – ChrisW

3

Non ho una soluzione gratuita, temo, ma lo Project: Merge è uno strumento economico di confronto e unione XML che può essere controllato tramite la riga di comando. Potrebbe probabilmente collegarsi direttamente alla tua applicazione.

+1

Potrebbe non essere libero ma a € 19 per licenza potrebbe anche essere. Un piccolo e accurato strumento e no non mi pagano per dirlo :) –

+0

Questo è lo strumento migliore là fuori che ho visto. Tuttavia, lo hanno aggiornato e rinominato 'Oso XML Merge'. Grazie! – Adrian

1

Un'alternativa libera sarebbe quella di fare

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

e poi fare

$ diff before.xml after.xml 

per creare una patch della differenza XML. È gratuito e semplice.