2016-06-08 149 views
1

我在與一個內部DTD的follwoing XML頭疼,我不太undesrtand哪來的問題......XML DTD內部不驗證

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE appcoches [ 
<!ELEMENT appcoches (usuaris,conductors,trajectes,blacklist)> 
<!ELEMENT usuaris (usuari+)> 
<!ELEMENT usuari (username,tlfcontacte+,tipususuari)> 
<!ELEMENT username (#PCDATA)> 
<!ELEMENT tlfcontacte (#PCDATA)> 
<!ELEMENT tipususuari (#PCDATA)> 
<!ATTLIST usuari id ID #REQUIRED> 
<!ELEMENT conductors (conductor+)> 
<!ELEMENT conductor (edat,vehicle)> 
<!ELEMENT edat (#PCDATA)> 
<!ELEMENT vehicle (marca,model,color)> 
<!ELEMENT marca (#PCDATA)> 
<!ELEMENT model (#PCDATA)> 
<!ELEMENT color (#PCDATA)> 
<!ATTLIST conductor id IDREF #REQUIRED> 
<!ELEMENT trajectes (trajecte+)> 
<!ELEMENT trajecte (origen,desti,trasbord+,horatrajecte,preu)> 
<!ELEMENT origen (#PCDATA)> 
<!ELEMENT desti (#PCDATA)> 
<!ELEMENT trasbord (#PCDATA)> 
<!ELEMENT horatrajecte (sortida,arribada+)> 
<!ELEMENT sortida (#PCDATA)> 
<!ELEMENT arribada (#PCDATA)> 
<!ELEMENT preu (#PCDATA)> 
<!ATTLIST trajecte id ID #REQUIRED> 
<!ATTLIST trasbord passatger IDREF #REQUIRED> 
<!ATTLIST trasbord id ID #REQUIRED> 
<!ATTLIST arribada trasbord IDREF #REQUIRED> 
<!ATTLIST arribada id IDREF #REQUIRED> 
<!ATTLIST preu moneda CDATA #FIXED "Euro''> 
<!ELEMENT blacklist (client+)> 
<!ELEMENT client (incident,dia)> 
<!ELEMENT dia (num,mes,hora)> 
<!ELEMENT num (#PCDATA)> 
<!ELEMENT mes (#PCDATA)> 
<!ELEMENT hora (#PCDATA)> 
<!ATTLIST client id IDREF #REQUIRED> 

]> 
<appcoches> 
<usuaris> 

<usuari id="a1"> 
<username>adasdasd</username> 
<tlfcontacte>452547898</tlfcontacte> 
<tipususuari>Proveidor</tipususuari> 
</usuari> 

<usuari id="a2"> 
<username>adasdasd</username> 
<tlfcontacte>452547898</tlfcontacte> 
<tipususuari>Proveidor</tipususuari> 
</usuari> 

<usuari id="a3"> 
<username>adasdasd</username> 
<tlfcontacte>452547898</tlfcontacte> 
<tipususuari>Consumidor</tipususuari> 
</usuari> 

<usuari id="a4"> 
<username>adasdasd</username> 
<tlfcontacte>452547898</tlfcontacte> 
<tipususuari>Consumidor</tipususuari> 
</usuari> 

<usuari id="a5"> 
<username>adasdasd</username> 
<tlfcontacte>452547898</tlfcontacte> 
<tipususuari>Consumidor</tipususuari> 
</usuari> 

<usuari id="a6"> 
<username>adasdasd</username> 
<tlfcontacte>452547898</tlfcontacte> 
<tipususuari>Proveidor</tipususuari> 
</usuari> 

</usuaris> 

<conductors> 
<conductor id="a1"> 
<edat>52</edat> 
<vehicle> 
<marca>asdasdads</marca> 
<model>asdasdasda</model> 
<color>jhoasdljka</color> 
</vehicle> 
</conductor> 

<conductor id="a6"> 
<edat>23</edat> 
<vehicle> 
<marca>asdasdads</marca> 
<model>asdasdasda</model> 
<color>jhoasdljka</color> 
</vehicle> 
</conductor> 

<conductor id="a2"> 
<edat>18</edat> 
<vehicle> 
<marca>asdasdads</marca> 
<model>asdasdasda</model> 
<color>jhoasdljka</color> 
</vehicle> 
</conductor> 
</conductors> 

<trajectes> 
<trajecte id="b1"> 
<origen>asdfasdfas</origen> 
<desti>asdfasfasdf</desti> 
<trasbord pasatger="a3" id="b11">fasdfasdf</trasbord> 
<trasbord pasatger="a4" id="b12">asfasfsfd</trasbord> 
<horatrajecte> 
<sortida>17</sortida> 
<arribada trasbord="b11" pasatger="a4">18</arribada> 
<arribada trasbord="b12" pasatger="a5">18:30</arribada> 
</horatrajecte> 
<preu moneda="Euro">10</preu> 
</trajecte> 

<trajecte id="b2"> 
<origen>asdfasdfas</origen> 
<desti>asdfasfasdf</desti> 
<trasbord id="b21" pasatger="a3">fasdfasdf</trasbord> 
<horatrajecte> 
<sortida>12</sortida> 
<arribada trasbord="b11" pasatger="a4">14</arribada> 
</horatrajecte> 
<preu moneda="Euro">12</preu> 
</trajecte> 

</trajectes> 

<blacklist> 
<client id="a1"> 
<incident>Inpuntualitat</incident> 
<dia> 
<num>25</num> 
<mes>5</mes> 
<hora>12</hora> 
</dia> 
</client> 


<client id="a5"> 
<incident>Morositat</incident> 
<dia> 
<num>27</num> 
<mes>2</mes> 
<hora>15</hora> 
</dia> 
</client> 

</blacklist> 



</appcoches> 

我得到這個錯誤:第45行,第13列錯誤:格式不正確(無效標記)

回答

2

ATTLIST聲明中有一個小的錯字。 "Euro"附近的引號被錯誤地關閉。

此:

<!ATTLIST preu moneda CDATA #FIXED "Euro''> 

應該是:

<!ATTLIST preu moneda CDATA #FIXED "Euro"> 

固定仍然會有與你的文檔一些驗證錯誤,但他們應該是自我解釋後。