Diferencia XML tolerante a la longitud de línea

13

He visto las respuestas a esta pregunta , y desafortunadamente ninguna de ellas me ha ayudado hasta ahora.

Para no perder el tiempo, la segunda edición de C # en profundidad ahora está en edición de copia. Quiero poder ver qué hizo el editor de copias con mucha facilidad, para poder rechazar o aceptar sus cambios.

Estamos utilizando una forma modificada de docbook, pero estoy muy contento de ver la fuente XML sin procesar. Todo bien hasta ahora, excepto que cuando el editor de copia hace un cambio, eso puede cambiar el ajuste de línea. Entonces algo que solía leer:

<para>Foo bar baz
 second line</para>

ahora lee

<para>Foo bar grontle
 baz second line</para>

Ahora el verdadero cambio aquí es la inserción de "grontle". No me importa que "baz" se haya movido de la primera línea a la segunda línea, pero todas las herramientas de diferencias que he visto funcionan.

Me doy cuenta de que una opción sería volver a formatear todo el documento (o posiblemente solo párrafos enteros) en líneas simples ... pero eso es realmente difícil de leer, porque las herramientas diff no se ajustan cuando se muestran.

Estoy seguro de que puedo administrar con las herramientas que tengo, pero si alguien sabe algo mejor, me alegraría saberlo. Sospecho que mis editores también lo harían.

(He incluido la etiqueta de Windows aquí porque realmente necesito que esté disponible en Windows. Me gustaría saber sobre cualquier software que no sea de Windows también, pero solo en caso de que pueda ayudar a construirlo en Windows.

Jon Skeet
fuente

Respuestas:

9

Parece que SourceGear DiffMerge le dará esto, con su soporte de conjunto de reglas para XML (y muchos otros idiomas). No estoy seguro de si solucionará todos sus problemas, porque el ejemplo es, por supuesto, una simplificación del programa real. Intenté cambios un poco más complejos, y parece que también funcionan bien.

Vea el ejemplo a continuación para ver la diferencia que describió

diff simple

Sander Rijken
fuente
1
Acabo de echar un vistazo rápido a los archivos reales, y parece que funciona perfectamente. Gracias por lo tanto!
Jon Skeet
4

Mi solución es sin comparación . (una herramienta mucho más poderosa)

Entonces comenzamos viendo el problema.

ingrese la descripción de la imagen aquí

BC tiene una función especial de análisis XML: (ya tiene una función XML, pero no con análisis previo, que está ordenado y ordenado )

ingrese la descripción de la imagen aquí

así que vamos a http://www.scootersoftware.com/download.php?zz=kb_moreformats_alt

ingrese la descripción de la imagen aquí

y ahora -

ingrese la descripción de la imagen aquí

espero que lo use en profundidad para la próxima edición de C #

PD: si el texto en las imágenes es demasiado pequeño, simplemente haga clic en la imagen para cargar las originales.

Royi Namir
fuente
Por cierto, ¿qué significa " Namir.78 "?
Pacerier
0

Tuve este mismo problema en una empresa no hace mucho tiempo. Querían encontrar una verdadera "diferencia XML", y no parece haber ninguna solución completa por ahí.

La solución más fácil es ejecutar una secuencia de comandos de impresión bonita en el XML primero para normalizar los finales de línea y el espaciado, y luego ejecutar la herramienta diff de elección ( WinMerge es bueno para Windows). Esto elimina gran parte de los restos que la mayoría de los difftools te arrojarán desde XML, y es realmente fácil crear un script.

jweede
fuente
El problema es que el XML ya está bastante impreso, de manera efectiva: son las inserciones y eliminaciones las que cambian donde se ajustan las líneas. Me pregunto si necesito algo para volver a formatear un archivo en función de las palabras que aparecen al final de las líneas en otro :(
Jon Skeet
0

SD Smart Differencer compara documentos en función de la estructura en comparación con el diseño real.

Hay un XML Smart Differencer. Para XML, eso significa hacer coincidir el orden de las etiquetas y el contenido. Debe tener en cuenta que la cadena de texto en el fragmento específico que indicó fue diferente. (Actualmente no comprende la noción XML de texto en el que el espacio en blanco está normalizado frente a significativo, pero sospecho que eso no le hará mucho daño).

Ira Baxter
fuente
0

@ Jon Skeet: Usted mencionó en su pregunta que las herramientas diff no se ajustan cuando se muestran.
vimdiff(también disponible en Windows vía gvim) le permite ajustar los archivos xml mostrados con :window set wrap. Enlace de referencia .
También puede ejecutar :diffupdatepara actualizar las diferencias.

GuruM
fuente