如何使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和不带description元素的XML都将针对XSD进行验证。


Answers:


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 2012年

6
maxOccurs默认为1,因此您的最佳示例无需指定。
邓肯·琼斯

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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.