2010-02-08 21 views
12

Tôi muốn để có thể làm một hợp nhất 3-way của tài liệu XHTML:3-way thuật toán XML merge

  1. Bắt đầu với một số bản gốc của tài liệu
  2. Một người dùng chỉnh sửa một bản sao của bản gốc tài liệu
  3. Một người dùng khác chỉnh sửa bản sao riêng của tài liệu gốc
  4. Cần một công cụ để hợp nhất (tự động và/hoặc trực quan) những thay đổi do hai người dùng thực hiện.

Lưu ý:

  • tôi muốn bao gồm chức năng này trong phần mềm thương mại: vì vậy tôi thích cái gì đó hoàn toàn miễn phí-như-trong-bia và/hoặc mã nguồn mở, thay vì một công cụ thương mại.
  • Tôi nghi ngờ sẽ tốt hơn nếu công cụ nhận biết XML hơn là cố gắng sử dụng phần mềm như diff3 thực hiện hợp nhất 3 chiều văn bản phẳng
  • Cho rằng tất cả ba tài liệu đầu vào là tài liệu XHTML hợp lệ. nên xác nhận quá

cụ tôi đã tìm thấy bao gồm:

  1. The "3DM" XML 3-way Merging and Differencing Tool
  2. Fuego Core XML Diff and Patch Tool
  3. XmlDiff (thời gian gần đây từ trang GotDotNet đã được đóng cửa, nhưng có lẽ nó sống trên như một thành phần của XML Notepad)

Đầu tiên các bên trên (ví dụ: "3DM") nói rõ ràng rằng nó thực hiện các cách hợp nhất 3 chiều.

Tôi không biết hai loại còn lại: liệu "diff" theo sau là "patch" tương đương với cách hợp nhất 3 chiều hay thay vào đó "patch" chỉ có thể áp dụng lại diff cho tệp gốc (chứ không phải cho một bản sao thứ ba, thay đổi của tập tin)

Bạn có thể giới thiệu một số phần mềm (từ danh sách ở trên hoặc ở nơi khác) cho mục đích này không, và/hoặc mô tả thuật toán hợp nhất?


Chỉnh sửa: Matching, diffing and merging XML là một bài viết khác từ năm 2008, bao gồm khảo sát ngắn gọn về các thuật toán và tham chiếu đến các triển khai khác nhau.


Chỉnh sửa # 2: Tác giả xác nhận rằng Fuego Core XML Diff and Patch Tool chỉ có thể vá tệp gốc và không thực hiện hợp nhất 3 chiều.

Trả lời

3

Tôi có thể thêm vào bộ sưu tập của bạn DeltaXML - chúng không yêu cầu diff3, nhưng đáng xem xét.

+0

Cảm ơn: họ giới thiệu quá trình hợp nhất 3 chiều của họ cho XML tại http://www.deltaxml.com/dxml/products/sync/index.html – ChrisW

3

Tôi không có giải pháp miễn phí, nhưng tôi sợ, nhưng Project: Merge là công cụ so sánh và hợp nhất XML giá rẻ có thể được kiểm soát thông qua dòng lệnh. Nó có thể có thể cắm thẳng vào ứng dụng của bạn.

+1

Nó có thể không miễn phí nhưng với mức phí 19 € cho mỗi giấy phép. được. Một công cụ nhỏ gọn và không có họ không trả tiền cho tôi để nói rằng :) –

+0

Đây là công cụ tốt nhất hiện có mà tôi đã nhìn thấy. Mặc dù, họ đã cập nhật nó và đổi tên thành 'Oso XML Merge'. Cảm ơn! – Adrian

1

Một thay thế miễn phí sẽ được làm

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

và sau đó làm

$ diff before.xml after.xml 

để tạo ra một bản vá của sự khác biệt XML. Nó hoàn toàn miễn phí và đơn giản.