Zeichen-Referenzen |
Top Previous Next |
Beispiele > XML > Zeichen-Referenzen
Innerhalb eines XML-Elements
<text> ... </text>
dürfen die Zeichen:
< > " ' & $
nicht benutzt werden.Sie müssen daher entweder durch eine Namensentität oder eine dezimale Entität codiert werden:
Zur Decodierung dieser Entitäten gibt es im XML-Projekt eine mstrstr-Klassenvariable: m_EntityRefs mit den Werten der ersten beiden Spalten der obigen Tabelle. In der Reference-Produktion werden mit Hilfe von m_EntityRefs die Namensentitäten in die Zeichen übersetzt. Die entsprechenden dezimalen Entitäten werden in der Aktion zum Token:
CharRef ::= &#(\d+);|&#x([0-9a-fA-F]+);
behandelt, wo auch Codierungen für andere Sonderzeichen übersetzt werden. Denn auch Zeichen, die nicht zu den ersten 128 Zeichen der ASCII-Tabelle gehören müssen u.U codiert werden. Ob und wie dies nötig ist hängt von encoding-Attribut in XMLDecl ab. Ein vollständiger XML-Parser müsste auf Tabellen für viele mögliche Zeichensätze zugreifen können. Hier wird zur demonstration vorausgesetzt, dass wir es mit dem Standard-Zeichensatz für Westeuropa, Lateinamerika (ISO-8859-1) zu tun haben. Dann können die Zeichen entsprechend der Numerierung der ANSI-Tabelle übersetzt werden. Der reguläre Ausdruck CharRef erkennt entweder ein Zeichen in dezimaler Codierung und liefert die entsprechende Dezimalzahl als 1. Unterausdruck, oder er erkennt eine Hexadizmalzahl im 2. Unterausdruck.
{{ if(xState.length(1)) return ctos(xState.itg(1)); else if(xState.length(2)) return ctos(hstoi(xState.str(2))); else { throw CTT_Error("unknown char reference"); return str(); // formal return type } }}
|
Diese Seite gehört zur TextTransformer Dokumentation |
Home Inhalt English |