2013-07-02 2 views
0
<root> 
<elem type="1" id="1"/> 
<elem type="1" id="2"/> 
</root> 

XSD 스키마를 검사하여 모든 요소가 "유형"에 대해 동일한 속성 값을 가져야합니다. 한 요소가 type = "1"이고 다른 요소가 type = "2"인 경우 스키마 유효성 검사가 실패합니다. 스키마에서이를 어떻게 제한 하시겠습니까?모든 하위 요소가 동일한 속성 값을 갖도록 xsd 스키마에서 XML 요소를 정의하는 방법은 무엇입니까?

답변

1

xsd 1.0에서는 불가능하다고 생각합니다.

정확히 어떤 처리를하고 있는지 모르겠지만이 경우에는 몇 가지 줄 바꿈 요소가있는 것이 좋습니다. elems이 그 값을 보유합니다. 따라서

<root> 
    <elems type="1"> 
     <elem id="1"/> 
     <elem id="2"/> 
    </elems> 
</root> 
1

형식에 대해 단일 값을 원하면 왜 그 단일 값을 여러 위치에 복제하지 않고 한 곳에 넣는 것이 좋습니까? 즉, XML을 이런 식으로 구조화하는 것이 어떻습니까?

<root type="1"> 
    <elem id="1"/> 
    <elem id="2"/> 
</root> 

다른 요소는 구별 유형의 값을 가질 수 없습니다 사실은 명백한 유형은 엄격하게 ELEM의 속성을 말하는되지 증거,하지만 전체 문서의 속성이다.

그런 식으로, XML의 구조는 여러분이나 유효성 검사기가 추가 임시 점검을 추가해야하는 불일치를 허용하는 대신 유형에 하나의 값만 있음을 이미 보장합니다.

형식에 하나의 값만 있도록하는 좀 더 복잡한 방법이있을 수도 있습니다 (XSD 1.1, 어설 션 사용, 외부 또는 내부 Schematron 어설 션 사용). 그러나 나는 그런 간단한 대안이있을 때 그들의 사용을 격려하고 싶지 않다.