2012-03-31 93 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