Welke tekens moet ik weglaten in XML-documenten?

Welke tekens moeten in XML-documenten worden ge-escaped, of waar kan ik zo'n lijst vinden?

Oplossing

Als je een geschikte klasse of bibliotheek gebruikt, zullen zij de escaping voor je doen. Veel XML problemen worden veroorzaakt door string concatenation.

XML escape tekens

Er zijn er maar vijf:

"   "
'   '
<   <
>   >
&   &

Het escapen van tekens hangt af van waar het speciale teken wordt gebruikt.

De voorbeelden kunnen worden gevalideerd op W3C Markup Validation Service.

Text

De veilige manier is om alle vijf karakters in tekst te escapen, echter, de drie karakters ", ' en > hoeven niet ge-escaped te worden in tekst:

<?xml version="1.0"?>
"'>

Attributen

De veilige manier is om alle vijf de tekens te escapen in attributen, echter, het > teken hoeft niet ge-escaped te worden in attributen:

<?xml version="1.0"?>

Het ' teken hoeft niet te worden ge-escaped in attributen als de aanhalingstekens " zijn:

<?xml version="1.0"?>

Evenzo hoeft het " niet in attributen te worden ge-escaped als de aanhalingstekens ' zijn:

<?xml version="1.0"?>

Commentaar

Alle 5 speciale tekens mogen niet worden ge-escaped in commentaar:

<?xml version="1.0"?>


CDATA

Alle 5 speciale tekens mogen niet worden ge-escaped in CDATA secties:


<?xml version="1.0"?>
Commentaren (13)

Misschien helpt dit:

Lijst van verwijzingen naar XML- en HTML-tekenentiteiten:

In SGML-, HTML- en XML-documenten worden de logische constructen bekend als karakter gegevens en attribuutwaarden bestaan uit reeksen karakters, waarbij elk karakter zich direct kan manifesteren (zichzelf representeren), of kan worden vertegenwoordigd door een reeks karakters genaamd een karakterreferentie, waarvan er twee types zijn: een numerieke karakterreferentie en een karakter entity reference. Dit artikel geeft een lijst de karakter entiteitreferenties die geldig zijn in HTML en XML documenten.

In dit artikel worden de volgende vijf voorgedefinieerde XML entiteiten genoemd:

quot  "
amp   &
apos  '
lt    <
gt    >
Commentaren (0)

naast de algemeen bekende vijf karakters [, &, ", '] zou ik ook het verticale tab karakter (0x0B) escapen. Het is geldig UTF-8, maar niet geldig XML 1.0, en zelfs veel bibliotheken (waaronder libxml2) missen het en voeren stilzwijgend ongeldige XML uit.

Commentaren (0)