Welke tekens moeten in XML-documenten worden ge-escaped, of waar kan ik zo'n lijst vinden?
Als je een geschikte klasse of bibliotheek gebruikt, zullen zij de escaping voor je doen. Veel XML problemen worden veroorzaakt door string concatenation.
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.
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"?>
<valid>"'></valid>
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"?>
<valid attribute=">"/>
Het '
teken hoeft niet te worden ge-escaped in attributen als de aanhalingstekens "
zijn:
<?xml version="1.0"?>
<valid attribute="'"/>
Evenzo hoeft het "
niet in attributen te worden ge-escaped als de aanhalingstekens '
zijn:
<?xml version="1.0"?>
<valid attribute='"'/>
Alle 5 speciale tekens mogen niet worden ge-escaped in commentaar:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
Alle 5 speciale tekens mogen niet worden ge-escaped in CDATA secties:
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
Alle 5 speciale tekens mogen niet worden geëscaped in XML-verwerkingsinstructies:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML heeft zijn eigen set escape codes die veel meer karakters beslaan.
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 >
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.