Die neue Anweisung XML dient dem Lesen von XML-Dokumenten. Dazu müssen folgende zwei Angaben gemacht werden, die dritte Angabe ist optional:
Was soll getan werden? (Pflicht)
PARSE bezeichner-1
Das XML-Dokument, das im Datenfeld bezeichner-1 steht, ist zu zerlegen.
Wer soll die Ergebnisse der Zerlegung verarbeiten? (Pflicht)
PROCESSING PROCEDURE IS prozedurname-1 [ { THRU | THROUGH } prozedurname-2]
Bei jedem vom Parser erkannten 'Ereignis' während der Ausführung der XML-Anweisung geht die Steuerung an die Verarbeitungsprozedur prozedurname-1. Wenn die letzte Anweisung von prozedurname-1 bzw. prozedurname-2 durchlaufen ist, geht die Steuerung automatisch zurück an die noch aktive XML-Anweisung.
Wie soll die Anweisung beendet werden? (optional)
[ON EXCEPTION unbedingte-anweisung-1]
[NOT ON EXCEPTION unbedingte-anweisung-2]
kennzeichnet zusätzliche Anweisungen, die ggf. bei irregulärem bzw. regulärem Ende der Zerlegung ausgeführt werden sollen.
Die Aktivitäten von XML-Anweisung, Verarbeitungsprozedur für Ereignisse und XML-Parser sind zeitlich folgendermaßen verschränkt:
Zusammenfassend ist bei der XML-Anweisung Folgendes besonders zu beachten:
Das XML-Dokument – genau eines – steht im angegebenen Datenfeld.
Der wiederholte Wechsel zwischen XML-Anweisung und Verarbeitungsprozedur findet so lange statt, bis eine der folgenden Situationen auftritt:
Das gesamte XML-Dokument ist verarbeitet worden.
Die Verarbeitungsprozedur zeigt an, dass die Verarbeitung sofort beendet werden soll.
Ein Fehler wurde gemeldet.
Die sequenzielle Verarbeitungsweise bedeutet für nicht wohlgeformte Dokumente, dass der Parser ggf. bereits Ereignisse ausgelöst hat, bevor er im Dokument auf die fehlerhafte Stelle trifft.
Der Verarbeitungsprozedur steht die genaue Beschreibung des Ereignisses und der damit verbundenen Daten in Sonderregistern zur Verfügung.
Das komplette Dokument wird durch Ausführung einer einzigen Anweisung zerlegt und verarbeitet.
Vorhandene [NOT] EXCEPTION-Angaben werden nicht nach jedem Ereignis, sondern nur ein einziges Mal nach Ende der gesamten XML-Anweisung durchlaufen.