Làm cách nào để tạo một phần tử trong lược đồ XML là tùy chọn?


105

Vì vậy, tôi nhận được lược đồ XML này:

<?xml version="1.0"?> <xs:schema version="1.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">
    <xs:element name="request">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="amenity">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="description" type="xs:string" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element> </xs:schema>

Làm cách nào để đặt phần tử mô tả là tùy chọn? Vì vậy, cả XML có phần tử mô tả và không có phần tử mô tả sẽ xác thực đối với XSD.


Câu trả lời:


189

Thử cái này

<xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />

nếu bạn muốn 0 hoặc 1 phần tử "mô tả", Hoặc

<xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="unbounded" />

nếu bạn muốn số phần tử "mô tả" từ 0 đến vô cùng.


6
Bạn đã đánh bại tôi với câu trả lời, nhưng đây là một liên kết hữu ích: w3.org/TR/xmlschema-0/#OccainedConstraints
kdgregory

6
maxOccursmặc định là 1, vì vậy ví dụ hàng đầu của bạn không cần chỉ định nó.
Duncan Jones

1
Thật vậy, đã thử nghiệm nó và bạn chỉ cần chỉ định minOccurs = "0" để làm cho nó trở thành tùy chọn nếu bạn muốn cho phép tối đa một phần tử.
Wouter Schut

maxOccurs mặc định là 1 - thông tin rất hữu ích, cảm ơn bạn.
thonnor

Cảm ơn bạn! Đây link chứa những người khác thông tin
cavalsilva

20

Đặt minOccursthuộc tính 0trong lược đồ như sau:

<?xml version="1.0"?>
  <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="request">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="amenity">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="description" type="xs:string" minOccurs="0" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element> </xs:schema>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.