2015-01-02 2 views
1

XML 파일의 유효성을 검사하는 XSD가 있습니다. 문제는 하나의 요소에 대해 작동하지만 하나 이상의 요소가있을 때 작동하지 않으며 문제를 찾을 수 없다는 것입니다. XSD에서 반복되는 요소를 지정하는 방법

내 XML 파일입니다

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <UrlList> 
    <url> 
     <url>https://www.youtube.com/watch?v=ke92CDVQsb8</url> 
     <idUrl>72</idUrl> 
     <urlShort>http://short.ly:8080/SOB/url/832261</urlShort> 
     <numVisits>2</numVisits> 
    </url> 
    <url> 
     <url>http://moodle.urv.cat/moodle/pluginfil</url> 
     <idUrl>73</idUrl> 
     <urlShort>http://short.ly:8080/SOB/url/45ea9b</urlShort> 
     <numVisits>1</numVisits> 
    </url> 
</UrlList> 

그리고 이것은 내 XSD 파일입니다 : 당신이 명시 적으로 maxOccurs 속성을 지정하지 않은 경우, <xs:sequence> 내부 <xs:element>에서

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="UrlList"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element ref="url"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

    <xs:element name="url"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="url" type="xs:string"/> 
       <xs:element name="idUrl" type="xs:integer"/> 
       <xs:element name="urlShort" type="xs:string"/> 
       <xs:element name="numVisits" type="xs:integer"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

답변

4

, 기본값은 1입니다. 안에 임의의 수의 <url> 요소를 포함하려면 해당 부분을 변경해야합니다 다음과 같이합니다 :

<xs:element name="UrlList"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element maxOccurs="unbounded" ref="url"/> 
      <!--  ^^^^^^^^^^^^^^^^^^^^^   --> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

을 만 등, 말하자면, 수 3 개 <url> 요소 대신 maxOccurs="3"를 사용하십시오. 대신 순서 모든 요소가 두 번 이상 나타날 수 있음을 지정하려면

, 당신은 대신 <xs:sequence> 태그의 maxOccurs 속성을 설정할 수 있습니다. 시퀀스에 하나의 요소 만 있기 때문에이 경우에는 차이가 없습니다.