Какви символи трябва да бъдат избягвани в XML документите или къде мога да намеря такъв списък?
Ако използвате подходящ клас или библиотека, те ще извършат ескапирането вместо вас. Много проблеми с XML се дължат на конкатенация на низове.
Съществуват само пет:
" "
' '
< <
> >
& &
Избягването на знаци зависи от това къде се използва специалният знак.
Примерите могат да бъдат валидирани в W3C Markup Validation Service.
Безопасният начин е да се ескейпват всичките пет символа в текста, но трите символа "
, '
и >
не е необходимо да се ескейпват в текста:
<?xml version="1.0"?>
<valid>"'></valid>
Безопасният начин е да се избягват всичките пет символа в атрибутите, но символът >
не е необходимо да се избягва в атрибутите:
<?xml version="1.0"?>
<valid attribute=">"/>
Символът '
не трябва да се избягва в атрибутите, ако кавичките са "
:
<?xml version="1.0"?>
<valid attribute="'"/>
По същия начин знакът "
не трябва да се извежда в атрибутите, ако кавичките са '
:
<?xml version="1.0"?>
<valid attribute='"'/>
Всичките 5 специални символа не трябва да се избягват в коментарите:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
Всичките 5 специални символа не трябва да се избягват в секциите CDATA:
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
Всичките 5 специални символа не трябва да се избягват в инструкциите за обработка на XML:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML има свой собствен набор от escape кодове, които обхващат много повече символи.
Може би това ще ви помогне:
Списък на препратки към символни същности в XML и HTML:
В SGML, HTML и XML документите логически конструкции, известни като символни данните и стойностите на атрибутите се състоят от последователности от знаци, в които всеки символ може да се прояви директно (представляващ себе си), или може да бъде да бъде представен чрез поредица от знаци наречена символна референция, от която има два вида: цифров препратка към символ и препратка към символ референция на единица. В тази статия са изброени препратките към символни същности, които са валидни в HTML и XML документи.
В тази статия са изброени следните пет предварително дефинирани XML същности:
quot "
amp &
apos '
lt <
gt >
освен общоизвестните пет символа [<, >, &, ", '] бих избягал и от символа за вертикален табулатор (0x0B). Той е валиден за UTF-8, но не е валиден за XML 1.0 и дори много библиотеки (включително libxml2) го пропускат и мълчаливо извеждат невалиден XML.