Permalänk
Medlem

XML-fil validerar inte mot DTD

Har en XML-fil med en intern DTD-deklaration som jag försöker validera utan framgång.
Får felmeddelandet: "Element bok content does not follow the DTD, expecting (titel , forfattare+ , namn+ , antalSidor , pris , forlag , utgivningsar , omslag), got (titel forfattare forfattare antalSidor pris forlag utgivningsar omslag )"

Vad gör jag för fel? Gissar att det är något med deklarationen av namn/forfattare, men jag begriper inte vad.

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE boksamling [ <!ELEMENT boksamling (bok+)> <!ELEMENT bok (titel, forfattare+, namn+, antalSidor, pris, forlag, utgivningsar, omslag)> <!ATTLIST bok isbn CDATA #REQUIRED> <!ELEMENT titel (#PCDATA)> <!ELEMENT forfattare (namn+)> <!ELEMENT namn (fornamn, efternamn)> <!ELEMENT fornamn (#PCDATA)> <!ELEMENT efternamn (#PCDATA)> <!ELEMENT antalSidor (#PCDATA)> <!ELEMENT pris (#PCDATA)> <!ATTLIST pris valuta CDATA #REQUIRED> <!ELEMENT forlag (#PCDATA)> <!ELEMENT utgivningsar (#PCDATA)> <!ELEMENT omslag (#PCDATA)> ]> <boksamling> <bok isbn="0130282294"> <titel>XML Content and Data</titel> <forfattare> <namn> <fornamn>Kelly</fornamn> <efternamn>Carey</efternamn> </namn> </forfattare> <forfattare> <namn> <fornamn>Stanko</fornamn> <efternamn>Blatnik</efternamn> </namn> </forfattare> <antalSidor>408</antalSidor> <pris valuta="kr">410</pris> <forlag>Prentic-Hall</forlag> <utgivningsar>2002</utgivningsar> <omslag>paperback</omslag> </bok> </boksamling>

Permalänk
Medlem

Felmeddelandet säger ju exakt vad problemet är: XML-biten innehåller titel forfattare forfattare antalSidor pris forlag utgivningsar omslag, men DTD-biten kräver titel , forfattare+ , namn+ , antalSidor , pris , forlag , utgivningsar , omslag.

Du säger alltså att du vill att en bok ska ha minst en författare följt av minst ett namn, men så skickar du in två författar-element. Jag gissar att det är fel i din DTD och att du egentligen bara vill ha minst en författare (som har ett namn). Ändra

<!ELEMENT bok (titel, forfattare+, namn+, antalSidor, pris, forlag, utgivningsar, omslag)>

till

<!ELEMENT bok (titel, forfattare+, antalSidor, pris, forlag, utgivningsar, omslag)>

Permalänk
Medlem

Förstod att jag kunde hitta felet i felmeddelandet, men såg inte detta. Inte så lätt när man precis börjat. Det fungerade jättebra! Tack för hjälpen!