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>

description要素をオプションにするにはどうすればよいですか?したがって、description要素のある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
あなたは私に答えを打ち負かしましたが、ここに役立つリンクがあります: w3.org/TR/xmlschema-0/#OccurrenceConstraints
kdgregory

6
maxOccursデフォルト1はなので、一番上の例では指定する必要はありません。
ダンカンジョーンズ

1
実際、それをテストしました。1つの要素を最大にしたい場合は、minOccurs = "0"を指定してオプションにするだけです。
Wouter Schut 2017年

maxOccursのデフォルトは1です-非常に役立つ情報です。ありがとうございます。
thonnor

ありがとうございました!このリンクには他の情報が含まれています
cavalsilva '18 / 01/19

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.