Ik heb voor school het afgelopen jaar een DTD moeten schrijven om artikelen digitaal weer te geven en doorzoekbaar te maken, maar na ‘m al een aantal keer te hebben ingeleverd blijft de docent zeggen dat er iets niet klopt. De lessen zijn nu alleen inmiddels zo lang geleden dat ik zijn commentaar ook niet echt meer kan plaatsen… Als er hier iemand is die regelmatig met XML werkt, zou ik het fijn vinden als hij of zij er even naar zou willen kijken en me kan zeggen wat ik moet doen! (Voor het andere onderdeel binnen dit vak had ik het 10, dus het zou wel erg sneu zijn als ik het nu niet kan afronden… 😉)
Dit is mijn DTD:
<!—E L E M E N T D E C L A R A T I E S—>
<!ELEMENT artikel (voorwerk, tekst, nawerk*)>
<!ELEMENT voorwerk (auteur*, titel, samenvatting?, inleiding?, datum, instelling*)>
<!ELEMENT tekst (kop+, paragraaf+)>
<!ELEMENT nawerk (bron*, voetnoot*, literatuurlijst*)><!ELEMENT auteur (voornaam, tussenv?, achternaam)>
<!ELEMENT titel (#PCDATA)>
<!ELEMENT samenvatting (#PCDATA | trefwoord | naam | citaat)*>
<!ELEMENT inleiding (#PCDATA | trefwoord | naam | citaat)*>
<!ELEMENT datum (dag, maand, jaar)>
<!ELEMENT instelling (#PCDATA)>
<!ELEMENT voornaam (#PCDATA)>
<!ELEMENT tussenv (#PCDATA)>
<!ELEMENT achternaam (#PCDATA)>
<!ELEMENT dag (#PCDATA)>
<!ELEMENT maand (#PCDATA)>
<!ELEMENT jaar (#PCDATA)><!ELEMENT kop (#PCDATA)>
<!ELEMENT paragraaf (alinea+, kop*)>
<!ELEMENT alinea (#PCDATA | tussenkop | trefwoord | naam | citaat | lijst)*>
<!ELEMENT tussenkop (#PCDATA)>
<!ELEMENT trefwoord (#PCDATA)>
<!ELEMENT naam (voornaam, tussenv?, achternaam)>
<!ELEMENT citaat (#PCDATA)>
<!ELEMENT lijst (#PCDATA)>
<!ELEMENT bron (bronnaam, pagina)*>
<!ELEMENT voetnoot (#PCDATA)>
<!ELEMENT bronnaam (#PCDATA)>
<!ELEMENT pagina (#PCDATA)>
<!ELEMENT literatuurlijst (littit, litaut*, bronnaam*, instelling*, litdat, pagina)>
<!ELEMENT littit (#PCDATA)>
<!ELEMENT litdat (maand, jaar)>
<!ELEMENT litaut (voornaam, tussenv?, achternaam)>
En dit is het commentaar wat ik erop kreeg:
Er zaten toch nog wat rare ongerijmdheden in je DTD.
Je definieert
<!ELEMENT tekst (kop+, paragraaf+)>
Dat betekent dat die bestaat uit eerst een heleboel koppen en dan een
heleboel paragrafen. En die paragrafen komen pas als alle koppen geweest
zijn. Je moet dit namelijk echt in volgorde lezen, als er komma’s tssen
de elementen staan.Vervolgens zeg je dat een paragraaf bestaat uit alinea’s, waarna - als
de alinea’s op zijn - eventueel nog koppen kunnen volgen (??)
<!ELEMENT paragraaf (alinea+, kop*)>Je definitie van een alinea kan ik dan wel weer bijna helemaal begrijpen
(en goedkeuren), alleen zie ik niet helemaal wat die “tussenkoppen” daar
doen.
<!ELEMENT alinea (#PCDATA | tussenkop | trefwoord | naam | citaat | lijst)*>
Die kunnen nu tamelijk willekeurig tussen alle andere gewone en
speciale) stukken tekst doorgestrooid worden.Probeer van het geheel toch echt een duidelijke, logische structuur -
een echte boomstructuur - te maken:
een tekst die uit hoofdstukken bestaat,
waarbij elk hoofdstuk begint met een kop en daarna alinea’s
en elke alinea inderdaad uit de stukken tekst kan bestaan die jij
daarvoor opgaf.
In de artikelen zoals in het voorbeeld zat er verder geen tussennoveau
van paragrafen meer in. Als je die toch ook mogelijk wilt maken dan
krijg je in het bovenstaande gewoon één niveau meer:
elke hoofdstuk bestaat uit een kop gevolgd door paragrafen,
elke paragraaf bestaat uit een subkop gevolgd door alinea’s, enz.Pas je DTD dus nog aan op basis van het bovenstaande.
Het is de bedoeling alleen nog die DTD in te leveren.