Toon posts:

probleem met validatie XML bestand

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een probleem met het valideren van het onderstaande bestand:
Als ik wil gaan valideren krijg ik problemen binnen het element <tekst>. XMLShell geeft dan aan: Inhoud van element is ongeldig volgens DTD/Schema. Wordt verwacht: tijdsbepaling. Line 42, pos. 15.
Hier doelt het programma op het tweede element binnen het element <tekst>, dat is dus <eigennaam> en XMLShell zegt dan dat er op die positie hetzelfde element als het eerste element <tijdsbepaling> moet komen. Hoe los ik dit op? Volgens mij moet er dan wel een probleem in de DTD zitten of zo... Graag hulp, experts! _/-\o_

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="livius_style.xsl"?>
<!DOCTYPE latijn [
<!ELEMENT latijn (livius+)>
<!ELEMENT livius (titel, liber, caput, paragraaf, tekst, vertaling, bronvermelding)>
<!ELEMENT titel (#PCDATA)>
<!ELEMENT liber (#PCDATA)>
<!ELEMENT caput (#PCDATA)>
<!ELEMENT paragraaf (#PCDATA)>
<!ELEMENT tekst (tijdsbepaling*| eigennaam+ | subst+ | verbum+ | telw+ | adv+ | ptc+ | prep+ | pron_refl+ | pron_indef+ | pron_poss+ | pron_dem+ | cj+ |adj+)>

<!ELEMENT tijdsbepaling (#PCDATA)>
<!ELEMENT eigennaam (#PCDATA)>
<!ELEMENT subst (#PCDATA)> <!-- substantivum, zelfstandig naamwoord-->
<!ELEMENT verbum (#PCDATA)> <!-- werkwoord-->
<!ELEMENT telw (#PCDATA)>
<!ELEMENT adv (#PCDATA)> <!-- adverbium, bijwoord-->
<!ELEMENT ptc (#PCDATA)> <!-- participium -->
<!ELEMENT prep (#PCDATA)> <!-- prepositie, voorzetsel -->
<!ELEMENT pron_refl (#PCDATA)> <!-- pronomen reflexivum, wederkerend voornaamwoord-->
<!ELEMENT pron_indef (#PCDATA)> <!-- pronomen indefinitum, onbepaald voornaamwoord-->
<!ELEMENT pron_poss (#PCDATA)> <!-- pronomen possessivum, bezittelijk voornaamwoord-->
<!ELEMENT pron_dem (#PCDATA)> <!-- pronomen demonstrativum, aanwijzend voornaamwoord-->
<!ELEMENT cj (#PCDATA)> <!-- conjunctie, voegwoord-->
<!ELEMENT adj (#PCDATA)> <!-- adjectivum, bijvoeglijk naamwoord-->

<!ELEMENT vertaling (#PCDATA)>
<!ELEMENT bronvermelding (vnaam, anaam, datum)>
<!ELEMENT vnaam (#PCDATA)>
<!ELEMENT anaam (#PCDATA)>
<!ELEMENT datum (#PCDATA)>
]>
<!-- einde DTD, begin XML-document-->
<latijn>
<livius>
<titel>Ab urbe condita/ Sinds de stichting van de stad</titel>
<liber>Een</liber>
<caput>Zeven</caput>
<paragraaf>1-3</paragraaf>
<tekst>
<tijdsbepaling>priori</tijdsbepaling>
<eigennaam>Remo</eigennaam>
<subst>augurium</subst>
<verbum>venisse</verbum>
<verbum>fertur,</verbum>
<telw>sex</telw>
<subst>vultures,</subst>
<adv>iamque</adv>
<ptc>nuntiato</ptc>
<subst>augurio</subst>
<prep>cum</prep>
<telw>duplex</telw>
<subst>numerus</subst>
<eigennaam>Romulo</eigennaam>
<pron_refl>se</pron_refl>
<verbum>ostendisset,</verbum>
<pron_indef>utrumque</pron_indef>
<subst>regem</subst>
<pron_poss>sua</pron_poss>
<subst>multitudo</subst>
<verbum>consalutaverat:</verbum>
<subst>tempore</subst>
<pron_dem>illi</pron_dem>
<ptc>praecepto,</ptc>
<cj>at</cj>
<pron_dem>hi</pron_dem>
<subst>numero</subst>
<subst>avium</subst>
<subst>regnum</subst>
<verbum>trahebant.</verbum>
<adv>inde</adv>
<cj>cum</cj>
<subst>altercatione</subst>
<verbum>congressi</verbum>
<subst>certamine</subst>
<subst>irarum</subst>
<prep>ad</prep>
<subst>caedem</subst>
<verbum>vertuntur;</verbum>
<adv>ibi</adv>
<prep>in</prep>
<subst>turba</subst>
<ptc>ictus</ptc>
<eigennaam>Remus</eigennaam>
<verbum>cecidit.</verbum>
<ptc>vulgatior</ptc>
<subst>fama</subst>
<verbum>est</verbum>
<subst>ludibrio</subst>
<subst>fratris</subst>
<eigennaam>Remum</eigennaam>
<adj>novos</adj>
<verbum>transiluisse</verbum>
<subst>muros;</subst>
<adv>inde</adv>
<prep>ab</prep>
<ptc>irato</ptc>
<eigennaam>Romulo,</eigennaam>
<cj>cum</cj>
<subst>verbis</subst>
<adv>quoque</adv>
<ptc>increpitans</ptc>
<verbum>adiecisset</verbum>
<adv>'sic</adv>
<adv>deinde,</adv>
<pron_indef>quicumque</pron_indef>
<pron_indef>alius</pron_indef>
<verbum>transiliet</verbum>
<subst>moenia</subst>
<pron_poss>mea',</pron_poss>
<ptc>interfectum.</ptc>
<pron_dem>ita</pron_dem>
<adj>solus</adj>
<ptc>potitus</ptc>
<subst>imperio</subst>
<eigennaam>Romulus;</eigennaam>
<ptc>condita</ptc>
<subst>urbs</subst>
<subst>conditoris</subst>
<subst>nomine</subst>
<ptc>appellata.</ptc>
</tekst>
<vertaling>
Volgens de overlevering deed zich eerst aan Remus een teken voor: er kwamen zes gieren aanvliegen.
Juist was dit bekendgemaakt, toen zich aan Romulus tweemaal zoveel gieren vertoonden. Ieder werd door zijn eigen volgelingen tot koning uitgeroepen:
de ene partij maakte aanspraak op de eer vanwege de prioriteit en de andere vanwege het aantal van de vogels. Er ontstond een heftige woordenstrijd die, toen de woede hoger en hoger oplaaide, eindigde in moord en doodslag; in dat tumult werd Remus dodelijk getroffen. Beter bekend is het verhaal dat Remus, om zijn broer te plagen, over de nieuwe muren sprong en dat Romulus hem in woede daarover doodde, terwijl hij hem toeschreeuwde: 'Zo zal het voortaan iedereen vergaan die over mijn muren springt!' Nu had Romulus alleen de macht in handen en de stad die gesticht werd ontleende haar naam aan de stichter.</vertaling>
<bronvermelding>
<vnaam>Janoesch</vnaam>
<anaam>Kuijpers</anaam>
<datum>15-11-2004</datum>
</bronvermelding>
</livius>
</latijn>

Verwijderd

code:
1
<!ELEMENT tekst (tijdsbepaling*| eigennaam+ | subst+ | verbum+ | telw+ | adv+ | ptc+ | prep+ | pron_refl+ | pron_indef+ | pron_poss+ | pron_dem+ | cj+ |adj+)>

dit is een choice, moet dat geen sequence zijn?

tip: zet je code in [code] tags, is een stuk makkelijker lezen

Verwijderd

Topicstarter
Bij een sequence staan de elementen toch in een vaste volgorde? Dat is in <tekst> nu net niet het geval. Als je de elementen door komma's zou scheiden, dan zou de volgorde vastgelegd zijn en dat is nu net níet wat ik wil.

Verwijderd

ah ok, dan denk ik dat je een * achter je set mist:
<!ELEMENT tekst ()*>

er mag namelijk meer keren een keuze uit die set voorkomen als ik je xml zo bekijk.

[ Voor 39% gewijzigd door Verwijderd op 15-11-2004 21:10 ]


Verwijderd

Topicstarter
Bedankt voor de tip! Het werkt nu inderdaad. Kun je me ook nog uitleggen waarom er een asterisk moet komen te staan?

Verwijderd

als je een choice hebt mag je er 1tje kiezen uit een set "()", als je die keuze meerdere keren wil maken (dus meer child elementen) moet je dat aangeven (met een * of een +, net wat je wilt)

Verwijderd

Topicstarter
bedankt voor de uitleg.

Groeten,
Janoesch
Pagina: 1