<xs:element name="scheduled_times" >
<xs:complexType>
<xs:sequence>
<xs:element ref="arrival_time" />
<xs:element ref="departure_time" />
</xs:sequence>
</xs:complexType>
</xs:element>
这要求我提供&#34; arrival_time&#34;和&#34; departure_time&#34;。但我希望能够提供其中之一或两者。我怎样才能做到这一点?
答案 0 :(得分:1)
对XSD的最简单更改是通过minOccurs="0"
:
<xs:element name="scheduled_times">
<xs:complexType>
<xs:sequence>
<xs:element ref="arrival_time" minOccurs="0"/>
<xs:element ref="departure_time" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
请注意,这也不允许出现。两者之一,但不是,因为{{ 3}}约束。
尝试通过xs:choice
列出所需可能性的直接方法:
<xs:element name="scheduled_times">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element ref="arrival_time"/>
</xs:sequence>
<xs:sequence>
<xs:element ref="departure_time"/>
</xs:sequence>
<xs:sequence>
<xs:element ref="arrival_time"/>
<xs:element ref="departure_time"/>
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
将违反Unique Particle Attribution约束:
cos-nonambig:arrival_time和arrival_time(或来自他们的元素) 替代组)违反“独特粒子归因”。中 针对此模式的验证,将为这些模式创建歧义 两个粒子。
要解决歧义,请重新选择选项,以便明确可能性:
<xs:element name="scheduled_times">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element ref="arrival_time"/>
<xs:element ref="departure_time" minOccurs="0"/>
</xs:sequence>
<xs:element ref="departure_time"/>
</xs:choice>
</xs:complexType>
</xs:element>