Die ereignisorientierte Verarbeitung eines XML-Dokuments stellt Daten zu den erkannten, syntaktischen Einheiten zu Beginn der Verarbeitungsprozedur in Sonderregistern zur Verfügung.
Datenerklärungen für die Sonderregister dürfen vom Programmierer nicht geschrieben werden. Vielmehr erzeugt sie der Compiler automatisch, wenn bei der Übersetzung des Programms die Option zur Erkennung der XML-spezifischen Schlüsselwörter eingeschaltet ist (siehe Handbuch "COBOL2000 Benutzerhandbuch“ [1], Abschnitt 10.2 „Verwenden von XML-Sprachmitteln in Programmen“). Die Sonderregister existieren nur einmal pro Ablaufeinheit und stehen auch in geschachtelten Programmen zur Verfügung.
Es gibt drei Gruppen von Sonderregistern:
XML-EVENT, XML-CODE:
Die darin gelieferten Daten haben immer eine feste Länge und beschreiben ein Ereignis.
Für XML-Dokumente, die in einem alphanumerischen Datenfeld bereitgestellt sind:
XML-TEXT, XML-NAMESPACE, XML-NAMESPACE-PREFIX.
Die darin gelieferten Daten haben variable Länge und beschreiben die mit einem Ereignis zusammenhängenden Daten.
Zur Ausnahme beim Sonderfall des Ereignisses CONTENT-NATIONAL-CHARACTER siehe auch Abschnitte „XML-TEXT" und „XML-NTEXT".
Für XML-Dokumente, die in einem nationalen Datenfeld bereitgestellt sind:
XML-NTEXT, XML-NNAMESPACE, XML-NNAMESPACE-PREFIX.
Die darin gelieferten Daten haben variable Länge und beschreiben die mit einem Ereignis zusammenhängenden Daten.
Die Sonderregister – ausgenommen XML-CODE – werden nur durch die XML PARSE-Anweisung modifiziert. Wenn sie als Empfangsfeld im Programm auftreten, führt das zu undefiniertem Verhalten. Daher haben die Sonderregister – ausgenommen XML-CODE – auch nur während der Ausführung einer XML-Anweisung einen sinnvollen Inhalt. Die Standardfunktion FUNCTION LENGTH (sonderregister) liefert bei Bedarf die aktuelle Länge der variabel langen Daten.
XML-EVENT
Dieses Sonderregister enthält zu Beginn der Verarbeitungsprozedur den Namen des gerade erkannten Ereignisses. Die möglichen Ereignisse sind in Abschnitt „Verarbeitungsprozedur" detailliert beschrieben.
Das Sonderregister entspricht einem Datenelement mit der Beschreibung
USAGE DISPLAY PIC X(30).
XML-CODE
Dieses Sonderregister enthält zu Beginn der Verarbeitungsprozedur einen Fehlerschlüssel, wenn es sich bei dem Ereignis um 'EXCEPTION' handelt. Bei allen anderen Ereignissen enthält es den Wert 0. Die möglichen Werte für Fehlerschlüssel entnehmen Sie dem Handbuch "COBOL2000 Benutzerhandbuch“ [1], Abschnitt 10.6 "Erweiterter Ein-/Ausgabe-Zustand für XML-Anweisungen (CBX-Code)“.
Als einziges Sonderregister darf es vom Programm auch modifiziert werden, um bei der Rückkehr aus einer Verarbeitungsprozedur der XML PARSE-Anweisung die gewünschte Fortsetzung zu signalisieren (siehe Abschnitt „XML-Anweisung").
Das Sonderregister entspricht einem Datenfeld mit der Beschreibung
USAGE COMP-5 PICTURE S9(9).
XML-TEXT
Wenn das XML-Dokument in einem alphanumerischen Datenfeld steht, enthält dieses Sonderregister zu Beginn der Verarbeitungsprozedur einen Teil des XML-Dokuments, der durch das Ereignis genau beschrieben wird.
Das Sonderregister entspricht einem Datenelement mit der Beschreibung
USAGE DISPLAY PICTURE X ANY LENGTH,
wobei die aktuelle Länge der Länge des gelieferten Dokument-Teils (in Zeichen) entspricht. Wenn das XML-Dokument in einem nationalen Datenfeld steht, oder wenn das Ereignis END-OF-DOCUMENT, CONTENT-NATIONAL-CHARACTER oder
NAMESPACE-DECLARATION ist, ist die aktuelle Länge 0.
XML-NTEXT
Wenn das XML-Dokument in einem nationalen Datenfeld steht, enthält dieses Sonderregister zu Beginn der Verarbeitungsprozedur einen Teil des XML-Dokuments, der durch das Ereignis genau beschrieben wird.
Das Sonderregister entspricht einem Datenelement mit der Beschreibung
USAGE NATIONAL PICTURE N ANY LENGTH,
wobei die aktuelle Länge der Länge des gelieferten Dokument-Teils (in Zeichen) entspricht. Wenn das XML-Dokument in einem alphanumerischen Datenfeld steht – außer beim Ereignis CONTENT-NATIONAL-CHARACTER –, oder wenn das Ereignis
END-OF-DOCUMENT oder NAMESPACE-DECLARATION ist, ist die aktuelle Länge 0.
XML-NAMESPACE
Wenn das XML-Dokument in einem alphanumerischen Datenfeld steht, enthält dieses Sonderregister zu Beginn der Verarbeitungsprozedur bei den Ereignissen ATTRIBUTE-NAME, DEFAULTED-ATTRIBUTE-NAME, END-OF-ELEMENT, NAMESPACE-DECLARATION und START-OF-ELEMENT den Namen des Namensraums.
Das Sonderregister entspricht einem Datenelement mit der Beschreibung
USAGE DISPLAY PICTURE X ANY LENGTH,
wobei die aktuelle Länge die Länge des Namensraum-Namens (in Zeichen) ist. Wenn das XML-Dokument in einem nationalen Datenfeld steht oder der Namensraum leer ist oder es sich um ein anderes Ereignis handelt, ist die aktuelle Länge 0.
XML-NNAMESPACE
Wenn das XML-Dokument in einem nationalen Datenfeld steht, enthält dieses Sonderregister zu Beginn der Verarbeitungsprozedur bei den Ereignissen ATTRIBUTE-NAME, DEFAULTED-ATTRIBUTE-NAME, END-OF-ELEMENT, NAMESPACE-DECLARATION und START-OF-ELEMENT den Namen des Namensraums.
Das Sonderregister entspricht einem Datenelement mit der Beschreibung
USAGE NATIONAL PICTURE N ANY LENGTH,
wobei die aktuelle Länge die Länge des Namensraum-Namens (in Zeichen) ist. Wenn das XML-Dokument in einem alphanumerischen Datenfeld steht oder der Namensraum leer ist oder es sich um ein anderes Ereignis handelt, ist die aktuelle Länge 0.
XML-NAMESPACE-PREFIX
Wenn das XML-Dokument in einem alphanumerischen Datenfeld steht, enthält dieses Sonderregister zu Beginn der Verarbeitungsprozedur bei den Ereignissen ATTRIBUTE-NAME, DEFAULTED-ATTRIBUTE-NAME, END-OF-ELEMENT, NAMESPACE-DECLARATION und START-OF-ELEMENT das Präfix des Namensraums.
Das Sonderregister entspricht einem Datenelement mit der Beschreibung
USAGE DISPLAY PICTURE X ANY LENGTH,
wobei die aktuelle Länge die Länge des Präfix (in Zeichen) ist. Wenn das XML-Dokument in einem nationalen Datenfeld steht oder der Namensraum kein Präfix hat oder es sich um ein anderes Ereignis handelt, ist die aktuelle Länge 0.
XML-NNAMESPACE-PREFIX
Wenn das XML-Dokument in einem nationalen Datenfeld steht, enthält dieses Sonderregister zu Beginn der Verarbeitungsprozedur bei den Ereignissen ATTRIBUTE-NAME, DEFAULTED-ATTRIBUTE-NAME, END-OF-ELEMENT, NAMESPACE-DECLARATION und START-OF-ELEMENT das Präfix des Namensraums.
Das Sonderregister entspricht einem Datenelement mit der Beschreibung
USAGE DISPLAY PICTURE N ANY LENGTH,
wobei die aktuelle Länge die Länge des Präfix (in Zeichen) ist. Wenn das XML-Dokument in einem alphanumerischen Datenfeld steht oder der Namensraum kein Präfix hat oder es sich um ein anderes Ereignis handelt, ist die aktuelle Länge 0.