2011-01-02 3 views
1

내가 <a> 요소가 1 ~ 4를 통해 c 속성을 포함 4 개 아이 <b> 요소를 가지고 있어야 지정하는 XSD를 만들기 위해 노력하고있어이 속성이 필요합니다XSD는 다음과 같이, 특정 값

<a> 
    <b c="1" d="valueof1" /> 
    <b c="1" d="valueof1_other" /> 
    <b c="3" d="valueof3" /> 
    <b c="4" d="valueof4" /> 
</a> 

유효하지 않습니다 : 유효하지

<a> 
    <b c="1" d="valueof1" /> 
    <b c="2" d="valueof2" /> 
    <b c="3" d="valueof3" /> 
    <b c="4" d="valueof4" /> 
</a> 

<a> 
    <b c="1" d="valueof1" /> 
    <b c="2" d="valueof2" /> 
    <b c="3" d="valueof3" /> 
    <b c="4" d="valueof4" /> 
    <b c="5" d="valueof5" /> 
</a> 

이것은 가능합니까? 찾을 수있는 가장 가까운 것은 all 요소이지만 속성 값이 아닌 고유 요소를 지정하는 데만 작용하는 것으로 보입니다.

+0

이러한 종류의 제한/유효성 확인을 위해서는 Schematron http://www.schematron.com/을 참조하십시오. –

답변

0

당신은과 같이, minOccurs=4maxOccurs=4 요소와 b를 선언하여 첫 번째 규칙을 적용 할 수 있습니다 :

<xs:element name="a"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="b" minOccurs="4" maxOccurs="4"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

그러나 이 두 번째 규칙을 적용 할 XSD을 사용할 수 없습니다. 정말로 이것을 원할 경우, 예를 들어, , b2, b3 및 요소로 4,b 요소를 대체 할 수 있습니다. 각 요소는 암시 적으로 c 속성 1에서 4까지를 나타냅니다.

+0

전역 고유성 제약 조건으로'a/b/@ c '키를 만든 다음 min = 1 및 max = 4에 대해 패싯이있는 정수 유형을 제공 할 수 있습니다. 여전히 '1, 3, 2, 4'를 허용하지 않습니다 ... – xan