Tôi đang sử dụng tùy chọn --schema xmllint để xác thực XML của tôi trông như thế nàyxsd: loại phần tử boolean chấp nhận "true" nhưng không chấp nhận "True". Làm thế nào tôi có thể làm cho nó chấp nhận nó?
<XML>
<Active>True</Active>
</XML>
Trong file schema của tôi, tôi có dòng sau mô tả các yếu tố tích cực.
<xsd:element name="Active" type="xsd:boolean" />
Khi tôi chạy xmllint, tôi nhận được thông báo lỗi nói rằng
/tmp/schema_validation.xml:73: yếu tố tích cực: Schemas giá trị lỗi: tử 'Hoạt động': 'True' không phải là một giá trị hợp lệ của loại nguyên tử 'xs: boolean'.
Khi tôi thay đổi XML để
<Active>true</Active>
Sau đó, thông báo lỗi sẽ biến mất. Vì vậy, có vẻ như xsd: boolean có nghĩa là tất cả chữ thường là "true/false" nhưng không phải là "True/False" thành xmllint .. Câu hỏi của tôi là, làm cách nào để xmllint chấp nhận "True" cho xsd: boolean kiểu? Hoặc có những công cụ khác nhau mà tôi có thể sử dụng để xác thực XML này không? Thay đổi XML hoặc lược đồ không phải là lựa chọn của tôi vào thời điểm này.
Cảm ơn!
Nếu thay đổi mã nguồn XML hoặc giản đồ không phải là một lựa chọn, sau đó tôi sẽ đề nghị chạy XML nguồn thông qua một phép biến đổi để bình thường hóa các giá trị boolean với các giá trị hợp lệ XSD thích hợp. –
Tôi đã nghĩ đến việc đó, nhưng tôi đã sợ phải sửa đổi các giá trị chỉ xảy ra là "Đúng". Đối với eample, nếu một phần tử được gọi là "Description" xảy ra có chứa giá trị "True", thì tôi không muốn điều đó được chuyển thành "true".Tôi không nghĩ rằng có bất kỳ cách nào để biết được yếu tố nào để áp dụng bình thường hóa hay không. –
bạn cần phải đi ngược dòng: ngừng tạo XML không hợp lệ tại nguồn của nó. – Cheeso