Ich beginne mit einem Beispiel. Die folgende textuelle XML-Sequenz soll in Token umgewandelt werden:
<EventID>1234</EventID>
- Die erste spitze Klammer, sie öffnet das Start-Tag des Elements, wird zu einem #OpenStartElementTag# Token.
- Die Zeichenkette "EventID" soll der Einfachheit halber unverändert bleiben (tatsächlich würde sie in ein Anwendungs-Token, umgewandelt, so dass sich die Zeichenkette nach ihrer Identifizierung mit dem Token mehrfach wiederverwenden ließe).
- Die nächste spitze Klammer schließt das Start-Tag; sie wird deshalb zu einem #CloseStartElementTag# Token.
- Dann folgt der Inhalt des Elements. Wäre dies eine XML-Sequenz, so würde sie wiederum in Token umgewandelt.
- Schließlich folgt das Ende-Tag des Containers. Es wird zu einem #EndElementTag# Token. Beachten Sie bitte, dass der Name des Tags sich bereits aus der Abfolge von #OpenStartElementTag# Token ergibt und deshalb hier nicht mehr wiederholt wird.
Während die bislang verwendeten Token Elemente beschreiben, markieren andere den Beginn und das Ende des XML-Datenstroms, definieren Attribute und ihre Werte oder dienen als Platzhalter für variable Daten. Hier ist eine Auflistung aller dieser System-Token:
| Wert | Bedeutung | Beispiel |
|---|---|---|
| 0x00 | EndOfBXmlStream | |
| 0x01 | OpenStartElementTag | < name > |
| 0x02 | CloseStartElementTag | < name > |
| 0x03 | CloseEmptyElementTag | < name /> |
| 0x04 | EndElementTag | </ name > |
| 0x05 | Value | attribut = "wert" |
| 0x06 | Attribute | attribut = "wert" |
| 0x0c | TemplateInstance | |
| 0x0d | NormalSubstitution | |
| 0x0e | OptionalSubstitution | |
| 0x0f | StartOfBXmlStream |
Die in Token umgewandelte XML-Sequenz sieht schließlich also so aus (der Name des Elements und die eingeschlossenen Daten bleiben wiederum unberücksichtigt): 0x0f 0x01 EventID 0x02 1234 0x04 0x00
Das höherwertigere Halbbyte enthält Flags. Bislang habe ich nur den Wert 0x40 finden können, der anzeigt, dass einem Tag mindestens ein Attribut folgt. Das Flag ist besonders häufig in Verbindung mit OpenStartElementTag zu beobachten: 0x41.
Es fällt auf, dass in der Tabelle einige Werte fehlen. Höchstwahrscheinlich sind sie einigen anderen Sprachelementen von XML zugeordnet, zum Beispiel Zeichendaten (CDATA), Entitäten und Steueranweisungen (PI). Allerdings konnte ich diese bislang in Protokolldateien nicht finden.
