Da muss ja auch irgendwo ein Algorithmus beschrieben sein, wie XML maschinell zu parsen ist. Ich kann die RFC leider nicht finden, evntl. sind die Algorithmen ja auch woanders beschrieben.? Bitte mal um Hinweise. pl
XML wurde vom W3C spezifiziert, die Spezifikation von XML 1.0 5th Edition ist natürlich auch dort zu finden.
Du siehst dort im Text immer Produktionen ähnlich der Backus-Naur-Form wie auch in RFCs, zusammen geben die ein grobes Bild der Struktur von XML-Dokumenten für die man seinen XML Prozessor baut. Hier die erste, die die sehr, sehr, sehr grobe Großstruktur von XML definiert, die einzelnen Teilstücke verweisen dann auf folgende verschachtelte weitere Definitionen.
[1] document ::= prolog element Misc*
Allerdings reicht das nicht. Es gibt diverse Anforderungen an XML Prozessoren, die sich nicht mit BNF ausdrücken lassen, zum Beispiel das Auflösen von definierten Entities, die Behandlung von Zeilenumbrüchen, die Erkennung von UTF-8 oder UTF-16 bei Abwesenheit der Deklaration von Charset, die Fehlerbehandlung bei nicht Wohlgeformtheit und vieles mehr. Es empfiehlt sich also, die Spec wie üblich zu lesen, mehrmals von vorne, mindestens einmal von hinten, dann randomisiert …
Es gibt auch noch ein XML 1.1, allerdings kann man das ignorieren. Die Änderungen betreffen u.a. größtenteils EBDIC-Kompabilität für IBM-Systeme und die Änderungen, welche Unicode-Zeichen erlaubt sind, wurden von XML 1.1 in die 5th Edition übernommen.
Das XML-Ökosystem ist seit 1998 natürlich gewachsen. Eher nicht ignorieren sollte Dein Parser XML Namensräume, Behandlung dafür solltest Du also inkorporieren; schließlich sind die ein wesentlicher Bestandteil moderner XML-Dialekte. Es gibt auch Attribute, die in jedem XML-Dokument legal sind. Neben dem in XML 1.0 definierten xml:lang gibt es xml:id und xml:base; bei letzterem braucht es natürlich auch den entsprechenden RFC für die Auflösung relativer URLs im base-Kontext. Beim Organisieren Deiner Datenstrukturen ist eventuell auch noch XML Infoset praktisch.
Nachgetragen: Natürlich willst Du dann Deinen Parser auch auf Richtigkeit testen, das W3C unterhält eine Suite von knapp 2000 Testdokumenten.
Viel Spaß!