我想知道是否可以对3个是/否元素进行限制。我希望其中三个中的一个被选为“是”
bpplena值低于。关于如何设置此限制的任何想法?
<xs:element name="ResponseTime" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="TwelveHour" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
<xs:element name="SevenDay" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
<xs:element name="FortyEightHours" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
<xs:element name="Departure" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
答案 0 :(得分:1)
如果你正在使用XML Schema 1.1 ,你可以specify co-occurrence constraints通过XPath 2.0使用xs:assert
这样(未经测试):
<xs:element name="ResponseTime" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="TwelveHour" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
<xs:element name="SevenDay" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
<xs:element name="FortyEightHours" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
<xs:element name="Departure" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:assert test="count((TwelveHour|SevenHour|FortyEightHours)[. = 'true']) gt 0"/>
</xs:complexType>
</xs:element>
如果您使用的是XML Schema 1.0 ,则无法在架构中表达此类约束,但您可以使用Schematron或在应用程序级别进行检查。