Thomas J.S.: Reihenfolge der Elemente in der DTD

Beitrag lesen

Hallo,

ich habe eine Frage zur DTD für folgendes Stück aus einem XML-Konstrukt:

Um die Antworten aus den zwei anderen Postings auf dem Punkt zu bringen (bzw. sie zu korrigieren):

<inhaltsverzeichnis>

<ivz_ueberschrift>Inhaltsverzeichnis</ivz_ueberschrift>

<ivz_kapiteleintrag>Meine frühen Jahre</ivz_kapiteleintrag>

<ivz_abschnittseintrag>Kindheit</ivz_abschnittseintrag>
        <ivz_abschnittseintrag>Jugend</ivz_abschnittseintrag>

<ivz_kapiteleintrag>Wie ich zum Manne wurde</ivz_kapiteleintrag>

<ivz_abschnittseintrag>Die erste Liebe</ivz_abschnittseintrag>

</inhaltsverzeichnis>


>   
  

> Gibt es irgendeine Möglichkeit, die DTD so zu schreiben, dass die Reihenfolge der drei inneren Elemente egal ist und nur deren Anzahl innerhalb "inhaltsverzeichnis" (also genau einmal, mindestens einmal, 0 bis n mal) überprüft wird ?  
>   
  
Nein.  
Was du brauchst ist im Grunde folgendes:  
<!ELEMENT inhaltsverzeichnis (((ivz\_abschnittseintrag | ivz\_kapiteleintrag)\*, ((ivz\_ueberschrift, ivz\_kapiteleintrag+) | (ivz\_kapiteleintrag+, ivz\_ueberschrift)), (ivz\_kapiteleintrag | ivz\_abschnittseintrag)\*))>  
  
  
Aber! So wird ein nicht deterministisches\* Inhaltsmodell erzeugt.  
\*) Der Parser kann nicht - ohne vorauszusehen - wissen, welches Element kommen wird und so kann er das Dokument nicht 100%-ig valideren.  
<http://edition-w3c.de/TR/2000/REC-xml-20001006/#determinism>  
Einige Parser valideren das Dokument, andere sind strenger und melden den Fehler.  
  
  

> P.S.: das XML-Stück ist nicht auf meinem Mist gewachsen, es stammt aus einer Klausuraufgabe.  
>   
  
Aha.  
  
Grüße  
Thomas