2011-10-04 3 views
1

각 속성이있는 요소의 인스턴스가 2 개 있는지 확인해야합니다. XML 스키마 - 각 속성이있는 요소의 인스턴스가 2 개 있는지 확인해야합니다.

는 기본적으로 둘 다 필요하거나 속성이 유효의
/*:SalesPersonParty/*:PartyID[@schemeAgencyName="SalesPersonPduID"] 

/*:SalesPersonParty/*:PartyID[@schemeAgencyName="SalesPersonID"] 

내가 카디널리티 2..2하지만이 경우가 있습니다. 나는 각각 하나씩 필요하며 순서는 중요하지 않습니다.

<xs:simpleType name="RestrictedString"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="([0-9]{3})|([0-9]{10})" /> 
    </xs:restriction> 
</xs:simpleType> 

<xs:element name="SalesPersonParty" minOccurs="2" maxOccurs="2"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="PartyID" minOccurs="1" maxOccurs="1"> 
       <xs:complexType> 
        <xs:simpleContent> 
         <xs:extension base="star:RestrictedString"> 
          <xs:attribute name="schemeAgencyName" use="required"> 
           <xs:simpleType> 
            <xs:restriction base="xs:string"> 
             <xs:enumeration value="SalesPersonID" /> 
             <xs:enumeration value="SalesPersonPduID" /> 
            </xs:restriction> 
           </xs:simpleType> 
          </xs:attribute> 
         </xs:extension> 
        </xs:simpleContent> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

이도 가능 : 여기

는 관련 스키마 구성 요소입니까?

감사와 관련,

토니

답변

0

나는 당신이 고유성 제약 조건으로 그것을 할 수 있다고 생각합니다. SalesPersonParty 요소의 컨테이너 요소를 알아야합니다. Transaction으로 전화하십시오. 그런 다음 같은 필요

<xs:element name="Transaction"> 
    ... 
    <xs:unique name="uniqueAgencyNameConstraint"> 
    <xs:selector xpath="SalesPersonParty/PartyID"> 
    <xs:field xpath="@schemeAgencyName"/> 
    </xs:unique> 
</xs:element> 

을이 각 SalesPersonParty/PartyID 고유 schemeAgencyName이 있어야합니다 말한다. 정확히 두 개의 SalesPersonParty 요소와 열거 형에서 가능한 두 개의 값만 갖는 제약 조건과 결합하면 모든 값은 한 번 발생해야합니다.

관련 문제