Bei Entitäten gibt es wesentliche Unterschiede zwischen XML und HTML. Ein regelmäßig auftretendes Probleme ist die Verwendung von Entitäten, die man aus HTML kennt, in XML. Fehlermeldungen wie “XML-Verarbeitungsfehler: Undefinierte Entität” im Firefox sind die Folge. Im Deutschen stößt man aufgrund der Umlaute recht schnell auf diesen Fehler. Die Ursache ist, dass XML anstatt der 252 in HTML bekannten Entitäten nur folgende fünf Entitäten versteht:

Name Zeichen Unicode hex. (dez.) Beschreibung
quot U+0022 (34) Anführungszeichen
amp & U+0026 (38) Kaufmännisches Und
apos U+0027 (39) Apostroph
lt < U+003C (60) Kleinerzeichen
gt > U+003E (62) Größerzeichen

Tabelle: in Anlehnung an diesen Wikipedia Artikel, welcher auch die 252 HTML Entitäten darstellt.

Der Grund dafür ist wahrscheinlich historisch. Während HTML sich damals hauptsächlich auf den ASCII Zeichensatz beschränkte, war man bei zur Einführung von XML schon weiter. XML unterstützt Encodings wie UTF-8 von Anfang an, und damit sind die Entitäten bis auf die fünf Ausnahmen als Escape Sequenzen überflüssig geworden.

Lösungsmöglichkeiten:

  • HTML Entitäten definieren: Entitäten in der DTD oder im XML intern mit DOCTYPE bekannt machen. Vorlagen findet man beim W3C oder beispielsweise auch hier.
    Beispiel: <!ENTITY auml "&#228;">
  • CDATA verwenden: Innerhalb von CDATA Sektionen können die alle HTML Entitäten benutzt werden, da sie nicht ausgewertet werden.
    Beispiel: <![CDATA[sch&ouml;n]]>
  • HTML Entitäten auflösen: Mit einem passendem Encoding (z.B. UTF-8) braucht man die HTML Entitäten nicht und können somit ersetzt werden:
    Beispiel: &auml; durch ä ersetzen

  • Unicode Entities: Numerische Unicode Entitäten werden auch in XML verstanden und können statt der HTML Entitäten genutzt werden.
    Beispiel: &auml; durch &#xE4; (hexadezimal) oder &#228; (dezimal) ersetzen
Eine Antwort zu “XML und HTML Entities”
  1. XML mit JSF erzeugen @ jars.de - Java und Technologie sagt:

    [...] « XML und HTML Entities [...]

Hinterlasse einen Kommentar