2010-02-08 22 views
12

Quiero ser capaz de hacer una combinación de 3 vías de documentos XHTML:3 vías algoritmo de combinación de XML

  1. Empezar con alguna copia original del documento
  2. Un usuario edita una copia del original documento
  3. Otro usuario edita una copia por separado del documento original
  4. Necesita una herramienta para combinar (automática y/o visualmente) los cambios realizados por los dos usuarios.

Nota:

  • quiero incluir esta funcionalidad en el software comercial: así que prefiero algo que está libre de as-en-cerveza y/o de código abierto, en lugar de una herramienta comercial.
  • Sospecho que es mejor si la herramienta es XML-conscientes, que tratar de utilizar software como diff3 que implementa combinación de 3 vías de texto plano
  • Dado que los tres documentos de entrada son documentos XHTML, el documento de salida resultante debe validar también

herramientas que he encontrado son:

  1. The "3DM" XML 3-way Merging and Differencing Tool
  2. Fuego Core XML Diff and Patch Tool
  3. XMLDiff (últimamente desde el sitio GotDotNet que ha sido cerrado, pero tal vez está viviendo en como un componente de XML Notepad)

El primero de los anteriores (es decir, "3DM") dice explícitamente que implementa fusiones de 3 vías.

No sé sobre los otros dos: si "diff" seguido de "parche" es equivalente a una combinación de 3 vías, o si "parche" solo puede volver a aplicar el diff al archivo original (y no a una tercera copia alterada del archivo)

¿Puede recomendar algún software (de la lista anterior, u otro) para este fin, y/o una descripción de un algoritmo de combinación?


Editar: Matching, diffing and merging XML es otro artículo de 2008, que incluye un breve estudio de varios algoritmos y referencias a varias implementaciones.


Edición # 2: El autor confirmó que el Fuego Core XML Dif y la herramienta Parche sólo pueden Patche el archivo original, y no implementa 3 vías fusión.

Respuesta

3

Puedo agregar a su colección DeltaXML - No reclaman diff3, pero vale la pena considerarlo.

+0

Gracias: introducen su combinación tripartita para XML en http://www.deltaxml.com/dxml/products/sync/index.html – ChrisW

3

No tengo una solución gratuita, me temo, pero Project: Merge es una herramienta económica de comparación y fusión XML que se puede controlar a través de la línea de comandos. Probablemente podría conectarse directamente a su aplicación.

+1

Puede que no sea gratuito, pero a 19 € por licencia también puede serlo ser. Una pequeña herramienta ordenada y no, no me pagan para decir eso :) –

+0

Esta es la mejor herramienta que he visto. Sin embargo, lo han actualizado y lo han cambiado por el nombre 'Oso XML Merge'. ¡Gracias! – Adrian

1

Una alternativa libre sería hacer

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

y luego hacer

$ diff before.xml after.xml 

para crear un parche de la diferencia XML. Es gratis y simple.

Cuestiones relacionadas