2010-03-02 2 views
10

var1에서 변수의 정렬되지 않은 목록을 두 번 만들고 var2가 무한히 발생합니다 (내 프로젝트의 사용 사례가 다릅니다). 이 요소는 maxOccurs를 사용할 수 없습니다.XSD를 사용하면 모든 표시기 내부에서 제한되지 않습니다.

내가하려는 일에 대한 해결 방법이 있습니까?

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="testcomment"> 
    <xs:complexType> 
     <xs:all> 
     <xs:element name="var1" type="xs:string" maxOccurs="2" /> 
     <xs:element name="var2" type="xs:integer" maxOccurs="unbounded" /> 
     </xs:all> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 
+2

http://stackoverflow.com/a/3827606/637142 –

답변

1

은 당신이 할하려는 것은 그것 때문에 설명 할 언어의 클래스로 XSD에 주위에 일을 없다 어떤 경우에는 읽기 미리없이 모호 할 수있는 목록에서 요소의 종류, 같은 소리 .

XSD의 관련 부분을 게시 할 수 있습니까?


업데이트 : 아니요, XSD로는 할 수 없습니다. <xs:all> 요소에 넣을 수있는 것에 대한 규칙은 예를 들어 here과 같습니다. 이 제약 조건에는 UPA 또는 Unique Particle Attribution 제약 조건이라는 이름이 있습니다. 모두 모호성과 관련이 있으며 Microsoft 웹 사이트에는 왜 here이 존재하는지에 대한 좋은 설명이 있습니다.

이러한 종류의 선언의 필요성을 제거하기 위해 문서 레이아웃을 변경하거나 RelaxNG과 같이 더 표현적인 스키마 언어를 찾아 볼 수 있습니다.

+0

코드를 stackoverflow에 게시하는 방법. 나는 이걸 꽤 새롭다. – Vignesh

+0

몇 분 전에 그랬다. 다시 게시하고 강조 표시 한 다음 이진 (10101) 모양의 편집기에서 작은 버튼을 클릭하면 XML이 들여 쓰기되어 제대로 표시됩니다. – Brabster

+0

예 .. 고맙습니다 .. 코드를 게시했습니다 .. :) – Vignesh

3

쉽게, 간단하게 <xs:choice maxOccurs="unbounded"> 대신 <xs:all> 사용합니다. 이것은 당신이 찾고있는 효과를 줄 것입니다.