Cách tiếp cận của tôi với điều này là để chuẩn hóa biểu diễn của Lược đồ XML. Thật không may, tôi cũng có thể nói với bạn rằng, không giống như canonicalization các tài liệu XML (được sử dụng, ví dụ, để tính chữ ký số), nó không phải là đơn giản hoặc thậm chí tiêu chuẩn hóa. Vì vậy, về cơ bản, bạn phải chuyển đổi cả hai lược đồ XML thành một "dạng thức kinh điển" - bất cứ công cụ nào bạn xây dựng hoặc sử dụng nghĩ rằng biểu mẫu là, và sau đó thực hiện so sánh. Cách tiếp cận của tôi là tạo một bộ lược đồ XML (có thể có nhiều hơn một tệp nếu bạn có nhiều không gian tên) cho mỗi phần tử gốc mà tôi cần, vì tôi thấy dễ dàng hơn khi so sánh các XSD được tạo ra bằng cách sử dụng kiểu búp bê Nga, bắt đầu từ mô hình PSVI.
Sau đó tôi đã sử dụng các tùy chọn như thành viên nhóm thay thế đối sánh tự động kết hợp với thay thế các nhóm thay thế bằng lựa chọn; loại bỏ các chuỗi lược đồ XML "thừa", thu gọn các lựa chọn tùy chọn đơn lẻ hoặc di chuyển minOccurs/maxOccurs xung quanh cho các trình tạo mục đơn lẻ, v.v.
Tùy thuộc vào tính năng của công cụ so sánh XSD, hoặc bạn giải quyết để xây dựng, cũng có thể phải sắp xếp lại các hạt dưới các trình biên dịch như xsd: choice hoặc xsd: all; Bất cứ điều gì, những gì tôi học được sau khi tất cả nó là rất khó để xây dựng một công cụ mà sẽ làm việc tốt đẹp cho tất cả các tính năng "XSD" mát mẻ ra khỏi đó ... Một trường hợp thử nghiệm tôi nhớ trìu mến là để đối phó với xsd khác nhau: bất kỳ nội dung nào.
Tôi tự hỏi mặc dù nếu mọi thứ đã thay đổi kể từ ...
Nguồn
2011-11-28 03:40:53
Darn Tôi đã hy vọng rằng có một số cách "đơn giản" mà tôi đã bỏ lỡ. Các bài mà tôi không thể tìm thấy và bị mắc kẹt trong đầu của tôi là dọc theo dòng XSOM là canonicalization của XSD mà sau đó sẽ có thể được so sánh. Công cụ so sánh nhận thức XSD nào bạn đang sử dụng? –
XSOM không phải là một canonicalization của XSD, chắc chắn; có lẽ họ đang đề cập đến "xem" PSVI mà XSOM biên dịch cho bạn. Nhưng điều đó chỉ có thể được sử dụng cho một số trường hợp rất cơ bản. Bạn sẽ vẫn phải áp dụng các biến đổi tùy chỉnh của mình để tạo các XSD mới nếu bạn muốn các công cụ bên ngoài thực hiện so sánh cho bạn.Tôi không biết (hoặc đã học được điều đó) của bất kỳ XSOM nào sẽ sắp xếp lại khung nhìn PSVI trở lại thành một tệp XSD ... Tôi đã tự mình viết một công cụ toàn bộ, và cuối cùng đã gắn nó là một Tái cấu trúc Lược đồ XML; chuyển đổi sang một con búp bê Nga không tồn tại phiên bản 1.0 mặc dù ... –