Tôi có một phương thức trong ứng dụng C# xác nhận tệp XML đầu vào của người dùng dựa vào XSD được nhúng. Nó hoạt động tốt, nhưng nó đòi hỏi tất cả các phần tử con phải theo thứ tự chính xác được định nghĩa trong XSD. Với tôi, thứ tự không quan trọng miễn là các yếu tố tồn tại.Xác thực XML dựa vào XSD và bỏ qua thứ tự các phần tử con
Ví dụ, nếu tôi đã có XSD sau ...
<xs:element maxOccurs="unbounded" name="ParentElement">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstChildElement" type="xs:string" />
<xs:element name="SecondChildElement" type="xs:string" />
<xs:element name="ThirdChildElement" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
Và một XML như thế này ...
<ParentElement>
<FirstChildElement>someValue</FirstChildElement>
<ThirdChildElement>someValue</ThirdChildElement>
<SecondChildElement>someValue</SecondChildElement>
</ParentElement>
Nếu tôi xác nhận nó, tôi muốn nhận được một lỗi vì các phần tử con không hoạt động.
Tôi có thể thực hiện một số thay đổi đối với XSD để xác thực chỉ quan tâm nếu các phần tử tồn tại và chúng nằm trong đúng cấp độ gốc chứ không phải thứ tự của chúng?
Cảm ơn, đó là câu trả lời. XSD của tôi đã được tạo ra cho tôi bởi VS, vì vậy nó có tất cả mọi thứ các phần tử con trong một thẻ Sequence. – Jim
Điểm cần nhớ là xs: tất cả chỉ hỗ trợ maxOccurs là 1 và không nhiều hơn thế. Tuy nhiên điều này đã được nâng lên trong bộ xử lý XSD 1.1, mà vẫn còn ở giai đoạn beta. – vanval
Họ đã từng phát hành phiên bản 1.1 chưa? – ppumkin