Tôi đang cố gắng thực hiện một số công việc với C# và XML trong một ứng dụng đa nền tảng (hầu hết phát triển trong MonoDevelop trên Linux, nhưng hầu hết người dùng sẽ sử dụng WinForms front-end mà tôi tạo trong Visual Studio). Mono đang hành xử như tôi mong đợi, nhưng. Net không phải là và vì vậy tôi đang tìm kiếm các lựa chọn và lựa chọn thay thế.Tôi làm cách nào để sử dụng xác thực lược đồ hiện đại/khác với .Net?
Các lược đồ có các phần tử tùy chọn khác nhau, theo sau là phần tử "xs: any". Điều này hoạt động hoàn toàn tốt trong Mono, nhưng không phải trong .Net của Microsoft vì nó phàn nàn rằng sự xuất hiện của phần tử tùy chọn là mơ hồ giữa định nghĩa thực tế của nó trong lược đồ và "xs: any". Từ một chút đọc lên, nó dường như là một vấn đề đã được giải quyết trong các phiên bản sau của định nghĩa Schema của W3C. Rõ ràng Mono đã được cập nhật, nhưng Microsoft đang tụt dốc.
Các tùy chọn tôi có thể thấy là:
1) Sử dụng RelaxNG - tiếc là liên kết từ trang web chính vào thư mục C# thực hiện là bị hỏng. Nó là một phần của Mono, nhưng đó không phải là nhiều trợ giúp khi chạy trên MS '.Net. Cách duy nhất tôi có thể thấy để làm điều đó là nhân đôi và xây dựng lại Mono's version làm DLL của riêng tôi
2) Sử dụng Schematron - Tôi tìm thấy nó như là một gợi ý về tạo XML tương thích ngược và tiến, nhưng nó giống như một trình xác nhận định dạng hơn ngôn ngữ lược đồ 'chuẩn'. Tôi không hoàn toàn chắc chắn nơi thực hiện là - tất cả tôi có thể tìm thấy là một trình xác nhận dòng lệnh.
3) Đảm bảo rằng việc triển khai MS .Net sử dụng tiêu chuẩn lược đồ cập nhật mà Mono sử dụng - Tôi thậm chí không biết nếu điều này là có thể.
4) Gắn bó với các lược đồ xấu và đặt "xs: any" trong phần tử "extensions" tùy chọn - nó không có lý do chính đáng nào ngoài khung chính thức .Net không bị lẫn lộn, nhưng nó hoạt động.
Mã này nhằm vào .Net 2.0, nhưng tôi đã cài đặt 3.5 trên máy tính của mình. Tôi cũng đang làm việc với Mono 2.4, MonoDevelop 2.2 và Visual Studio Express 2005.
Có bất kỳ 1-3 nào có thể hoặc tôi bị mắc kẹt với 4?
Cảm ơn.
Vui lòng cung cấp liên kết cho biết quy tắc UPA đã thay đổi. Đây sẽ là nơi bạn nói W3C đã cập nhật phiên bản lược đồ. –
Tôi nghĩ rằng điều này được giải quyết trong bản thảo làm việc mới nhất (http://www.w3.org/TR/xmlschema11-1/#sec-cos-nonambig), mà không loại bỏ ràng buộc UPA nhưng đưa ra một trường hợp đặc biệt về cách thức để xử lý xung đột giữa phần tử và ký tự đại diện. Vì đây là một bản nháp, người ta không thể gây lỗi cho Microsoft. Có lẽ nó không phải là Mono là nhiều hơn đến nay mà là họ đã không thực hiện kiểm tra UPA? Cá nhân, tôi sẽ không khuyên bạn nên thiết kế các ứng dụng dựa trên một đặc tả dự thảo, nhưng đó là lên đến OP ... –
@binarycoder: cảm ơn. Tôi đã không nghe nói về điều này, do đó, chắc chắn nó không phải là một phần của bất kỳ spec cuối cùng. –