2012-03-31 96 views
0

我有很大的困難,試圖使我的XML驗證我的模式。 出現以下錯誤:驗證重複元素組與模式

Element 'date': This element is not expected. Expected is (race). 
Element 'date': This element is not expected. Expected is (race). 
Element 'date': This element is not expected. Expected is (race). 
Element 'date': This element is not expected. Expected is (race). 

以下是我的架構

<!-- Structure definition --> 
    <xs:element name="history"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element ref="period" maxOccurs="unbounded"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:element name="period"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element ref="date" minOccurs="1" maxOccurs="unbounded"/> 
       <xs:element ref="track" minOccurs="1" maxOccurs="unbounded"/> 
       <xs:element ref="race" minOccurs="1" maxOccurs="unbounded"/> 
      </xs:sequence> 
      <xs:attribute name="year" type="Tyear"/> 
     </xs:complexType> 
    </xs:element> 
    <xs:element name="date"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"/> 
     </xs:simpleType> 
    </xs:element> 
    <xs:element name="track"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"/> 
     </xs:simpleType> 
    </xs:element> 
    <xs:element name="race"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element ref="rider" maxOccurs="unbounded"/> 
      </xs:sequence> 
      <xs:attribute name="nr" type="Tracenr"/> 
     </xs:complexType> 
    </xs:element> 
    <xs:element name="rider"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element ref="place" maxOccurs="1"/> 
       <xs:element ref="first_name" maxOccurs="1"/> 
       <xs:element ref="last_name" maxOccurs="1"/> 
       <xs:element ref="manufacturer" maxOccurs="1"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:element name="place"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"/> 
     </xs:simpleType> 
    </xs:element> 
    <xs:element name="first_name"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"/> 
     </xs:simpleType> 
    </xs:element> 
    <xs:element name="last_name"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"/> 
     </xs:simpleType> 
    </xs:element> 
    <xs:element name="manufacturer"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"/> 
     </xs:simpleType> 
    </xs:element> 

</xs:schema> 

這是我的XML

<history> 
    <period year="2011"> 
    <date>10/16/2011</date> 
    <track>Portimao</track> 
    <race nr="1"> 
     <rider> 
     <place>1</place> 
     <first_name>Marco</first_name> 
     <last_name>Melandri</last_name> 
     <manufacturer>Yamaha</manufacturer> 
     </rider> 
     <rider> 
     <place>2</place> 
     <first_name>Eugene</first_name> 
     <last_name>Laverty</last_name> 
     <manufacturer>Yamaha</manufacturer> 
     </rider> 
     [...] 
     <rider> 
     <place>DNF</place> 
     <first_name>Tom</first_name> 
     <last_name>Sykes</last_name> 
     <manufacturer>Kawasaki</manufacturer> 
     </rider> 
    </race> 
    <date>10/16/2011</date> 
    <track>Portimao</track> 
    <race nr="2"> 
     <rider> 
     <place>1</place> 
     <first_name>Carlos</first_name> 
     <last_name>Checa</last_name> 
     <manufacturer>Ducati</manufacturer> 
     </rider> 
     <rider> 
     <place>2</place> 
     <first_name>Sylvain</first_name> 
     <last_name>Guintoli</last_name> 
     <manufacturer>Ducati</manufacturer> 
     </rider> 
     [...] 
     <rider> 
     <place>15</place> 
     <first_name>Noriyuki</first_name> 
     <last_name>Haga</last_name> 
     <manufacturer>Aprilia</manufacturer> 
     </rider> 
    </race> 
    <date>10/02/2011</date> 
    <track>Magny-Cours</track> 
    <race nr="1"> 
     <rider> 
     <place>1</place> 
     <first_name>Carlos</first_name> 
     <last_name>Checa</last_name> 
     <manufacturer>Ducati</manufacturer> 
     </rider> 
     [...] 

的「期間」將重複往年的3次以上的小快照。 衷心感謝你

回答

1

由於序列(日期,軌道,種族)重複,你需要指定此:

<xs:sequence maxOccurs="unbounded"> 
     <xs:element ref="date" minOccurs="1" maxOccurs="unbounded"/> 
     <xs:element ref="track" minOccurs="1" maxOccurs="unbounded"/> 
     <xs:element ref="race" minOccurs="1" maxOccurs="unbounded"/> 
    </xs:sequence> 
+0

謝謝你,但現在我得到以下錯誤:元素「種族」:缺少孩子元件(一個或多個)。預期是(騎手)。 – Iuli 2012-03-31 20:10:49

+0

然而,我有一個元素名稱=「比賽」,它指定它有一個騎手元素 – Iuli 2012-03-31 20:12:54

+0

我解決了問題的問題。請接受答案,如果您還有其他不相關的問題,請提出一個新問題。 – 2012-04-01 22:16:02