0

キュレートされたクーポン要素のシーケンスを持つ要素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 スキーマ 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']) &lt;= 5"/>
    </xs:complexType>
</xs:element>
于 2013-04-04T12:39:23.540 に答える