2013-07-23 2 views
0

하나의 스키마 xsd 파일이 있습니다. 그 xsd 파일에서 "선택"과 혼동했습니다. 예컨대 를 들어xsd 스키마 및 xml 파일 요소와 혼동

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Emp"> 
    <xs:complexType mixed="true"> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
     <xs:element ref="E1" /> 
     <xs:element ref="E2" /> 
     <xs:element ref="E3" /> 
     <xs:element ref="E4" /> 
     </xs:choice> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

myxmlfile1.xml을 myschema.xsd - 예 : 1

편집 : 루트 요소 직원 덧붙였다.

<?xml version="1.0" encoding="utf-8"?> 
<Employee> 
    <Emp> 
    <E1></E1> 
    <E2></E2> 
    </Emp> 
</Employee> 

myxmlfile2.xml - 예컨대 2

편집 : 루트 요소 직원 덧붙였다.

<?xml version="1.0" encoding="utf-8"?> 
<Employee> 
    <Emp> 
    <E1></E1> 
    </Emp> 
    <Emp> 
    <E2></E2> 
    </Emp> 
</Employee> 

스키마에 따라이 2 개의 xml 파일에서 myxmlfile1.xml은 정확합니다. 그렇지 않으면 myxmlfile2.xml이 맞습니까 ?? 설명과 명확한

나 ...

편집 :

Here i want to know, 
  • EMP를 요소가 모두 E1과 E2 자식 순서의 요소 (또는)을 가질 수있다?

  • 은 하위 요소 인 E1 또는 E2 (둘 다 가질 수 없음)를 가질 수 있습니다. ??

+0

유효하지 않은 모범 사례는이 질문에 이미 제공된 답변에주의를 기울이지 않았기 때문일 수 있습니다. 조심스럽게 다시 읽으십시오. –

답변

1

우선 두 번째 예는 유효하지도 않고 well-formed xml (XML에는 둘 이상의 루트 요소를 포함 할 수 없음)입니다. 선택을 함께 사용 및 maxOccurs에 = "무제한의" :

첫 번째는, 때문에 XS 괜찮습니다.

XS : 당신이 선택 선택 힘 하나 제공된 요소의, 은 maxOccurs = "무제한의" 당신이 원하는대로 많은 시간을 수행 할 수있다.

이 경우 순서는 중요하지 않습니다. 같은 문서도 유효합니다 : XS의

<?xml version="1.0" encoding="utf-8"?> 
<Emp> 
    <E4></E4> 
    <E4></E4> 
    <E2></E2> 
    <E3></E3> 
</Emp> 
+0

죄송합니다. 내 쿼리를 업데이트했습니다. Emp는 루트 요소가 아닙니다. 지금 내게 말하면, 어떤 예가 맞습니까? – cgsabari

2

생각한다 maxOccurs에와 선택 = 당신이 원하는만큼 요소를 가질 수 있음을 의미하고, 각 요소는 foo는 나 바 나 바즈이어야으로 억제 할 수없는 (또는 귀하의 xs : choice에있는 목록이 무엇이든간에).

+0

내 쿼리가 업데이트되었습니다. Emp는 루트 요소가 아닙니다. Employee가 루트 요소입니다. 지금 나에게 해결책 plz를 말한다. – cgsabari

+0

질문에 대한 변경 사항은 xs : choice의 의미에 대한 내 설명에 전혀 영향을 미치지 않습니다. –

+0

그래서 예제 1이 맞습니까? – cgsabari

관련 문제