XML架构:基于子元素限制出现次数
我有一个元素mycoon,上面有一系列精心策划的优惠券元素。我知道我可以通过添加maxOccurs属性来限制出现次数。但是,我想根据iscoupactive元素限制它的数量(假设我只允许5个活动优惠券)。这是可以实现的吗XML架构:基于子元素限制出现次数,xml,xsd,Xml,Xsd,我有一个元素mycoon,上面有一系列精心策划的优惠券元素。我知道我可以通过添加maxOccurs属性来限制出现次数。但是,我想根据iscoupactive元素限制它的数量(假设我只允许5个活动优惠券)。这是可以实现的吗 <xs:complexType name="curatedCoupon"> <xs:sequence> <xs:element name="isCouponActive" type="xs:boolean" default=
<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>
您可以使用XMLSchema 1.1中的断言约束来实现这一点。在“mycoon”元素上,可以添加如下“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>