2010-10-19 38 views
11

Trong XSD của tôi, tôi muốn có thể xác định thứ tự của các phần tử không quan trọng. Đây là những gì tôi có:Thứ tự lược đồ XML của các phần tử

<xs:element name="ADT_A08_231_GLO_DEF"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element minOccurs="1" maxOccurs="1" name="EVN_EventTypeSegment" type="xs:string" /> 
     <xs:element minOccurs="1" maxOccurs="1" name="PID_PatientIdentificationSegment" type="xs:string" /> 
     <xs:element minOccurs="0" maxOccurs="1" name="PD1_PatientAdditionalDemographicSegment" type="xs:string" /> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

Làm cách nào để yếu tố EVN và PID có thể xảy ra ngẫu nhiên (đầu tiên là EVN sau đó PID hoặc phần tử PID đầu tiên và sau đó là phần tử EVN) trong tệp XML?

<EVN_EventTypeSegment>Test</EVN_EventTypeSegment> 
<PID_PatientIdentificationSegment>PIDTest</PID_PatientIdentificationSegment> 

hay:

<PID_PatientIdentificationSegment>PIDTest</PID_PatientIdentificationSegment> 
<EVN_EventTypeSegment>Test</EVN_EventTypeSegment> 
+0

Tại sao bạn nghĩ bạn muốn làm điều này? Bởi vì bạn có thể không muốn làm điều này. –

+2

Ý của bạn là gì? Tôi phải làm được điều này, tôi nhận được một số tin nhắn từ một khách hàng và tôi phải xử lý nó. Bây giờ thứ tự của một số lĩnh vực của các tin nhắn có thể khác nhau, do đó, trong lược đồ của tôi, tôi phải thực hiện điều này trong acount .. Có thực sự không có cách nào tôi có thể đạt được điều này? –

Trả lời

-1

Tôi làm điều này có thể bằng cách sử dụng một nhóm lựa chọn: D

+6

một ví dụ sẽ hữu ích hơn một chút – chharvey

+0

Hạn chế của một nhóm lựa chọn ở đây là nó không giải quyết được vấn đề mô tả: nhóm lựa chọn phải lặp lại, để cả EVN và PID có thể xảy ra, và sau đó không có ràng buộc rằng cả EVN và PID đều không thể lặp lại. –

9

Thay đổi xs:sequence trong tài liệu giản đồ của bạn để xs:all. Tất cả các nhóm chứa tham chiếu đến (hoặc khai báo) các phần tử A, B và C được thỏa mãn nếu và chỉ khi A, B và C có mặt trong một số thứ tự. Các phần tử có thể có minOccurs được đặt thành 0 để làm cho chúng trở thành tùy chọn (như phần tử PD1_PatientAdditionalDemographicSegment) của bạn.

Trong XSD 1.0, con của một nhóm phải có maxOccurs của 1, mà một số người thấy khó chịu hạn chế, nhưng trong trường hợp của bạn, đó là những gì bạn muốn. Trong XSD 1.1 hạn chế đó được dỡ bỏ.

22

Sử dụng xs:all thay vì xs:sequence.

+0

Có rất ít điểm trong việc thêm câu trả lời mới mà không thêm thông tin mới vào bài đăng cũ, tuy nhiên, câu trả lời của bạn dễ đọc hơn, vì vậy hãy +1 – vdbuilder

Các vấn đề liên quan