Hvilke tegn skal undviges i XML-dokumenter, eller hvor kan jeg finde en sådan liste?
Hvis du bruger en passende klasse eller et passende bibliotek, vil de gøre escaping for dig. Mange XML-problemer skyldes sammenkædning af strenge.
Der findes kun fem:
" "
' '
< <
> >
& &
Undgåelse af tegn afhænger af, hvor specialtegnet bruges.
Eksemplerne kan valideres på [W3C Markup Validation Service] (https://validator.w3.org/#validate_by_input).
Den sikre måde er at undvige alle fem tegn i tekst, men de tre tegn "
, '
og >
behøver ikke at blive undviget i tekst:
<?xml version="1.0"?>
<valid>"'></valid>
Den sikre måde er at undvige alle fem tegn i attributter, men >
-tegnet behøver ikke at blive undviget i attributter:
<?xml version="1.0"?>
<valid attribute=">"/>
Tegnet '
behøver ikke at blive undtaget i attributter, hvis anførselstegnene er "
:
<?xml version="1.0"?>
<valid attribute="'"/>
På samme måde behøver "
ikke at blive undtaget i attributter, hvis anførselstegnene er '
:
<?xml version="1.0"?>
<valid attribute='"'/>
Alle 5 specialtegn må ikke** unddrages i kommentarer:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
Alle 5 specialtegn må ikke** unddrages i CDATA sektioner:
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
Alle 5 specialtegn må ikke** unddrages i XML-behandlingsinstruktioner:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML har sit eget sæt af escape-koder, som dækker langt flere tegn.
Måske kan dette hjælpe dig:
Liste over referencer til XML- og HTML-karakterenheder:
I SGML-, HTML- og XML-dokumenter er logiske konstruktioner kendt som karakter data og attributværdier består af sekvenser af tegn, hvor hver tegn kan manifestere sig direkte (repræsenterer sig selv), eller kan være repræsenteret af en række tegn kaldet en tegnreference, hvoraf der findes to typer: en numerisk karakterreference og en karakterreference enhedsreference. Denne artikel indeholder en liste over de karakterenhedsreferencer, der er gyldige i HTML- og XML-dokumenter.
Denne artikel indeholder en liste over følgende fem foruddefinerede XML-enheder:
quot "
amp &
apos '
lt <
gt >
ud over de almindeligt kendte fem tegn [<, >, &, ", '] ville jeg også undslippe det lodrette tabulatortegn (0x0B). Det er gyldig UTF-8, men ikke gyldig XML 1.0, og selv mange biblioteker (herunder libxml2) overser det og udsender lydløst ugyldig XML.