2013-04-02 2 views
0

myCoupon 시퀀스가 ​​curatedCoupon 인 요소가 있습니다. 나는 maxOccurs 속성을 추가하여 발생 횟수를 제한 할 수 있다는 것을 알고 있습니다. 그러나 isCouponActive 요소 (5 개의 활성 쿠폰 만 허용한다고 가정)에 따라 번호를 제한하고 싶습니다. 달성 가능합니까?XML 스키마 : 하위 요소를 기반으로 발생 횟수 제한

<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> 

답변

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>