2012-03-31 4 views
0

Ich habe große Schwierigkeiten, meine XML-Validierung gegen mein Schema zu machen. Der folgende Fehler tritt auf:Validierung wiederholenden Element Gruppen mit Schema

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). 

Das folgende ist mein Schema

<!-- 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> 

Und das ist ein kleiner Schnappschuss meines 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> 
     [...] 

Die „Zeit“, wiederholt 3 weitere Male in den letzten Jahren. Danke nett

Antwort

1

Da die Sequenz (Datum, bahn, rennen) wiederholt, müssen Sie dies angeben:

<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

Vielen Dank, aber jetzt bekomme ich folgende Fehlermeldung: Element ‚Rasse‘: Fehlende Kind Element (e). Erwartet wird (Reiter). – Iuli

+0

Noch habe ich ein Element name = "race", das angibt, dass es ein Fahrerelement hat – Iuli

+0

Ich löste die Frage wie gefragt. Bitte akzeptieren Sie die Antwort und wenn Sie weitere Fragen haben, die nicht zusammenhängen, stellen Sie eine neue Frage. –