Als Tool-Programmierer habe ich sogar schon einen Konverter fertig, der dein altes Datenbank-Format in das neue
XML-Format umbaut.
Quasi von INI nach
XML, denn du hattest ja schon mal so ein Adressenprogramm.
Äh, 3 Punkte? Ach so, du meinst den Auszug aus der DTD.
Pass auf -
Die DTD hat mit dem
visuellen Aufbau der
XML-Datei nichts zu tun. Sie beschreibt nur den
strukturellen Aufbau, damit dein Parser weiß wann ein Dokument gültig ist und wann nicht. Du musst alle Elemente auflisten, die in deinem Dokument vorkommen dürfen bzw. können. Im Fall des Hauptknotens sieht das eben so aus
Code:
<!ELEMENT adressdb (XMLFile, Kontakt+)>
weil er einen Knoten <XMLFile> enthalten muss, und weil min. 1 <Kontakt>-Knoten da sein muss. Wie gesagt, das Plus symbolisiert, dass es auch mehrere sein dürfen.
Jetzt musst du dem Parser erklären, was "XMLFile" bedeutet. Das ist ja nun auch wieder ein Knoten, der seinerseits untergeordnete Elemente enthält. Und genau die gibst du alle in, so wie sie in deiner
XML-Datei auftauchen, also:
Code:
<!ELEMENT XMLFile (MajorVersion, MinorVersion, Computer, User, ModifyDate,
ModifyTime, RecordCount, HighestID)>
Tja, nun weiß der Parser nicht, was "MajorVersion" ist. Und das ist das erste Element, das keinen Knoten sondern einen Wert enthält. Und deshalb schreibst du diesmal
Code:
<!ELEMENT MajorVersion (#PCDATA)>
#PCDATA bedeutet aber, dass der Knoten nur Text enthalten darf. Andere Knoten darf es hier nicht geben, es sei denn, du würdest die wieder auflisten, usw. Du kannst anstelle von
(#PCDATA) bspw. auch
ANY schreiben (dann wäre jeder Inhalt erlaubt) oder
EMPTY (dann müsste der Knoten zwingend leer sein).
Und das musst du für alle Knoten machen, die in deiner
XML-Datei auftauchen.
Generell würde ich empfehlen, du nutzt die Möglichkeiten des Parsers. Wenn du nämlich eine DTD benutzt und mit der oder dem Dokument stimmt was nicht, dann meckert er nicht nur, sondern er sagt auch, warum und wo der Fehler ist.
Ich hänge mal die DTD ran und ein kleines Programm, das ich zum Prüfen von
XML-Dateien benutze. Aber erwarte nicht zuviel von letzterem. Es ist absolut rudimentär und keinesfalls für jeden Fehlerfall abgesichert. Aber es erfüllt seinen Zweck. (Du musst wahrscheinlich die
XML-
Unit umbenennen ... na ja, du weißt ja sicher inzwischen, dass die bei mir
MSXML4 heißt.
)