XML Entitäten

mfernau

Bekanntes Mitglied
Guten Morgen!

Ich hätte eigentlich nur eine winzige Frage, deren Antwort ich eigentlich selbst meine zu kennen.
Ich habe hier ein XML-Dokument von einem Lieferanten, das beispielhaft so aussieht:
Code:
<root>
  <child>Das hier ist Text</child>
  <child>Donaudampfschiffahrts;shy;kapitänsmütze</child>
</root>

Es geht mir hier um das ;shy; - mein obiges Beispiel ist natürlich nur winzig. Im echten Dokument kommt dieses ;shy; unzählige mal vor. Für mich war das einfach ein Fehler den ich melden wollte. Daraufhin bekam ich die belehrende Antwort, dass Entitäten in XML ja mit einem ; und nicht (wie in HTML) mit einem & beginnen. Das Dokument wäre sonst nicht mehr wohlgeformt.
Klar wäre es das nicht, denn & shy; gibt es im XML-Kontext nicht. Ich habe es mir daraufhin nicht nehmen lassen entsprechende Stellen der RFC zu rezitieren in der eindeutig beschrieben wird wie eine Entität in XML aussieht: Extensible Markup Language (XML) 1.0 (Fifth Edition)

Die Antwort darauf war prinzipiell ein Widerspruch und weitere Standhaftigkeit, dass Entitäten mit einem ; beginnen.

Ich bin doch nicht vom anderen Stern oder bin ich hier echt so auf dem Holzweg? Ich arbeite nun schon seit meiner Hochschulzeit vor 8 Jahren mit XML und mir ist nie etwas derartiges untergekommen. Aber ich lasse mich auch gern vom Gegenteil überzeugen wenn mich da jemand aufklären mag.

Besten Dank und Grüße,
Martin
 

musiKk

Top Contributor
Daraufhin bekam ich die belehrende Antwort, dass Entitäten in XML ja mit einem ; und nicht (wie in HTML) mit einem & beginnen. Das Dokument wäre sonst nicht mehr wohlgeformt.

Das ist Unsinn. XML und HTML sind beides Ausprägungen von SGML und dort ist die Verwendung von Entities definiert - entsprechend ist sie auch bei XML und HTML gleich. Natürlich kann man sich eine eigene Konvention auferlegen und Strings der Form [c];*;[/c] gesondert behandeln, aber das sind keine Entities sondern ganz normaler Text. Entities hingegen sind syntaktische Konstrukte.

Richtig ist aber, dass das Dokument nicht verarbeitet werden kann, wenn ein Entity wie [c]&shy ;[/c] (ohne Leerzeichen - blöde Forensoftware) nicht definiert wurde. Das passiert im DTD. Die einzigen Entities, die vordefiniert sind, sind in Abschnitt 4.6 gegeben.

(Ich bin mal beim Begriff Entity geblieben. Richtig wäre eigentlich: [c]shy[/c] ist das Entity und [c]&shy ;[/c] ist eine Entity Reference.)
 

Neue Themen


Oben