XML和DTD:元素类型的内容必须匹配

问题描述:

我现在正在学习XML,而我正在努力处理第一个DTD扩展。XML和DTD:元素类型的内容必须匹配

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

如果我发起了解析器,似乎:

元素类型 “里弗” 的内容必须匹配(ACHAT,auteus,滴度)

我的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> 

如何解决此问题?

+0

ADDD我请:( – MohaMed

(achat , auteurs, titre)中的逗号(,)指定了元素必须出现的顺序。 (See here for more detail.

所以(achat , auteurs, titre)指恰好一个achat接着正好一个auteurs随后exaclty一个titre

你只需要改变的titreauteurs顺序......无论是在XML实例:

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

或DTD:

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