我有一个元素 myCoupon ,其中包含一系列 curatedCoupon 元素。我知道我可以通过添加 maxOccurs 属性来限制出现次数。但是,我希望根据isCouponActive元素限制其数量(假设我只想允许5张有效优惠券)。这可以实现吗?
<xs:complexType name="curatedCoupon">
<xs:sequence>
<xs:element name="isCouponActive" type="xs:boolean" default="false" minOccurs="0">
</xs:sequence>
</xs:complexType>
<xs:element name="myCoupon">
<xs:complexType>
<xs:sequence>
<xs:element name="curatedCoupon" type="sbcc:curatedCoupon" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
答案 0 :(得分:1)
您可以使用XML Schema 1.1中的断言约束来完成此操作。在'myCoupon'元素上,你可以添加一个'assert',如下所示:
<xs:element name="myCoupon">
<xs:complexType>
<xs:sequence>
<xs:element name="curatedCoupon" type="curatedCoupon" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:assert test="count(curatedCoupon/isCouponActive[text()='true']) <= 5"/>
</xs:complexType>
</xs:element>