0

我有一个带有一系列 curatedCoupon 元素的myCoupon元素我知道我可以通过添加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>
4

1 回答 1

1

您可以通过使用 XML Schema 1.1 中的断言约束来做到这一点。在“myCoupon”元素上,您可以像这样添加“断言”:

<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']) &lt;= 5"/>
    </xs:complexType>
</xs:element>
于 2013-04-04T12:39:23.540 回答