2010-11-24 4 views
4

나는 일부 XML의 검증에 대한 XSD 스키마를 만드는 오전 occrus이 제한 열거 값을 확인XML 스키마 한 번만

가 동일한 항목을 두 번 입력으로 추적 할 수없는 가망없는, 그래서 내가 XML을 제한하고 싶습니다 :

<branches> 
    <branche>Bank</branche> 
    <branche>Bank</branche> 
</branches> 

그러나이 개 다른 항목 사용 추적 할 수없는 가망해야합니다 : 그래서

<branches> 
    <branche>Bank</branche> 
    <branche>Insurance</branche> 
</branches> 

을 나는 다음과 같은 코드가 있습니다

<!-- definition of simple elements --> 
    <xs:simpleType name="branche"> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="Bank" maxOccurs="1"/> 
      <xs:enumeration value="Insurance" maxOccurs="1"/> 
     </xs:restriction> 
    </xs:simpleType> 

    <xs:element name="branches" minOccurs="0"> <!-- minOccurs becouse i want it to be posible to leave out the whole <branches> tag --> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="branche" type="branche" minOccurs="0" maxOccurs="2" /> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

maxOccurs="1"을 사용하면 'branche'태그가 두 번 발생할 수 있기 때문에 하나의 값으로 만 제한되지 않습니다.

고유 한 값 (<branche>value</branche>)을 원합니다.

thnx!

답변

4

신원 제한 here에 대한 예제를 참조하십시오. 다음과 같음 :

<xs:element name="branches" ...> 
    <xs:unique name="..."> 
    <xs:selector xpath="branche"/> 
    <xs:field xpath="."/> 
    </xs:key> 
</xs:element> 

구문에 대해서는 잘 모르겠지만 아이디어를 얻을 수 있습니다. 나는 기본적인 생각을 올바른 방향으로

+0

나를 가리키는 위해

<xs:element name="branches" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="branche" type="branche" minOccurs="0" maxOccurs="2" /> </xs:sequence> </xs:complexType> <xs:unique name="brancheUnique"> <xs:selector xpath="branche"/> <xs:field xpath="."/> </xs:unique> </xs:element> 

thnx의 lexicore을, 그러나 그것은 작동하지 않습니다 : – FLY

3

다음 코드를 사용하여 수정되었습니다. 'selector'가 잘못되었다고 생각합니다. 하위 요소가 있기 때문에 가지가 complexType이어야합니다. 나는 아직도 이것을 고치려고 노력하고있다. 계속 게시됩니다.