XML 스키마의 요소를 선택적으로 만드는 방법은 무엇입니까?


105

그래서이 XML 스키마를 얻었습니다.

<?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>

설명 요소를 선택적으로 만들려면 어떻게합니까? 따라서 설명 요소가있는 XML과없는 XML 모두 XSD에 대해 유효성을 검사합니다.


답변:


189

이 시도

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

0 또는 1 개의 "설명"요소를 원하는 경우 또는

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

"설명"요소의 무한대를 0으로 설정하려는 경우.


6
당신은 나를 이겼지
kdgregory

6
maxOccurs기본값은 1이므로 상위 예제에서는 지정할 필요가 없습니다.
Duncan Jones

1
실제로 테스트 한 결과 하나의 요소를 최대로 허용하려면 minOccurs = "0"만 지정하면됩니다.
Wouter Schut

maxOccurs 기본값은 1-매우 유용한 정보입니다. 감사합니다.
thonnor

감사합니다! 이 링크는 다른 사람의 정보를 포함
cavalsilva

20

다음 과 같이 스키마에서 minOccurs속성을 0로 설정하십시오 .

<?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>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.