Welche Zeichen müssen in XML-Dokumenten escaped werden, oder wo kann ich eine solche Liste finden?
Wenn Sie eine geeignete Klasse oder Bibliothek verwenden, übernehmen diese das Escaping für Sie. Viele XML-Probleme werden durch die Verkettung von Zeichenketten verursacht.
Es gibt nur fünf:
" "
' '
< <
> >
& &
Das Auslassen von Zeichen hängt davon ab, wo das Sonderzeichen verwendet wird.
Die Beispiele können unter W3C Markup Validation Service validiert werden.
Der sichere Weg ist, alle fünf Zeichen im Text zu escapen. Die drei Zeichen "
, '
und >
müssen jedoch nicht im Text escapet werden:
<?xml version="1.0"?>
<valid>"'></valid>
Der sichere Weg ist, alle fünf Zeichen in Attributen zu escapen. Das Zeichen >
muss jedoch in Attributen nicht escapet werden:
<?xml version="1.0"?>
<valid attribute=">"/>
Das Zeichen '
muss in Attributen nicht escaped werden, wenn die Anführungszeichen "
sind:
<?xml version="1.0"?>
<valid attribute="'"/>
Ebenso muss das """-Zeichen in Attributen nicht maskiert werden, wenn die Anführungszeichen """ sind:
<?xml version="1.0"?>
<valid attribute='"'/>
Alle 5 Sonderzeichen müssen in Kommentaren nicht escaped werden:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
Alle 5 Sonderzeichen müssen in [CDATA]-Abschnitten (https://en.wikipedia.org/wiki/CDATA) nicht escaped werden:
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
Alle 5 Sonderzeichen müssen in XML-Verarbeitungsanweisungen nicht escaped werden:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML hat seine eigene Reihe von Escape-Codes, die viel mehr Zeichen abdecken.
Vielleicht hilft das:
Liste der XML- und HTML-Zeichenentitätsreferenzen:
In SGML-, HTML- und XML-Dokumenten sind die logischen Konstrukte, die als Zeichen Daten und Attributwerte bestehen aus Zeichenfolgen, wobei jedes Zeichen direkt manifestieren kann (sich selbst darstellend), oder durch eine Reihe von durch eine Reihe von Zeichen repräsentiert werden kann eine Zeichenreferenz genannt, von denen es zwei Arten gibt: eine numerische Zeichenreferenz und eine Zeichen Entitätsreferenz. Dieser Artikel listet die Zeichenentitätsreferenzen, die in HTML- und XML-Dokumenten gültig sind.
Dieser Artikel führt die folgenden fünf vordefinierten XML-Entitäten auf:
quot "
amp &
apos '
lt <
gt >
zusätzlich zu den allgemein bekannten fünf Zeichen [<, >, &, ", '] würde ich auch das vertikale Tabulatorzeichen (0x0B) entfernen. Es ist gültiges UTF-8, aber nicht gültiges XML 1.0, und selbst viele Bibliotheken (einschließlich libxml2) übersehen es und geben stillschweigend ungültiges XML aus.