2016-11-23 1 views
0

Ich lerne XML im Moment und ich kämpfe mit der ersten DTD-Erweiterung.XML und DTD: Der Inhalt des Elementtyps muss übereinstimmen

Meine DTD:

<!ELEMENT biblio (livre*) > 

<!ELEMENT livre (achat , auteurs, titre) > 
<!ATTLIST livre langue CDATA #IMPLIED 
     ref CDATA #IMPLIED> 



<!ELEMENT achat EMPTY > 
<!ATTLIST achat date CDATA #IMPLIED 
     lieu CDATA #IMPLIED> 


<!ELEMENT titre (#PCDATA)> 
<!ATTLIST titre genre CDATA #IMPLIED 
     type NMTOKEN #IMPLIED> 



<!ELEMENT auteurs (auteur+) > 


<!ELEMENT auteur (nom?, prenom? ,sexe?) > 
<!ELEMENT nom (#PCDATA)> 
<!ELEMENT prenom (#PCDATA)> 
<!ELEMENT sexe (#PCDATA)> 

Wenn ich den Parser gestartet, wie es scheint:

Der Inhalt Elementtyp "livre" müssen übereinstimmen (achat, auteus, titre)

Mein XML:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE biblio SYSTEM "Dtdbiblio.dtd"> 



<biblio> 
    <livre langue="francais" ref="1684561564"> 
     <achat date="11/11/1993" lieu="london"/> 
     <titre genre="G" type="politique">  Tiiiiiiiiiiiiiiiiiiiiiiiiitre </titre> 
     <auteurs> 
      <auteur> 
       <nom>x</nom> 
       <prenom>x</prenom> 
       <sexe>H</sexe> 
      </auteur> 
     </auteurs> 
    </livre> 

</biblio> 

Wie löst man dieses Problem?

+0

mich addd bitte :( – MohaMed

Antwort

2

Die Kommata (,) in (achat , auteurs, titre) geben die Reihenfolge an, in der die Elemente angezeigt werden müssen. (See here for more detail.)

So bedeutet (achat , auteurs, titre) genau ein achat gefolgt von genau einem auteurs gefolgt von exaclty ein titre.

Sie müssen nur die Reihenfolge der titre und auteurs ändern ... entweder im XML-Instanz:

<biblio> 
    <livre langue="francais" ref="1684561564"> 
     <achat date="11/11/1993" lieu="london"/> 
     <auteurs> 
      <auteur> 
       <nom>x</nom> 
       <prenom>x</prenom> 
       <sexe>H</sexe> 
      </auteur> 
     </auteurs> 
     <titre genre="G" type="politique">  Tiiiiiiiiiiiiiiiiiiiiiiiiitre </titre> 
    </livre> 

</biblio> 

oder in der DTD:

<!ELEMENT livre (achat, titre, auteurs) >