Какви символи трябва да се избягват в XML документите?

Какви символи трябва да бъдат избягвани в XML документите или къде мога да намеря такъв списък?

Решение

Ако използвате подходящ клас или библиотека, те ще извършат ескапирането вместо вас. Много проблеми с XML се дължат на конкатенация на низове.

XML escape символи

Съществуват само пет:

"   "
'   '
<   <
>   >
&   &

Избягването на знаци зависи от това къде се използва специалният знак.

Примерите могат да бъдат валидирани в W3C Markup Validation Service.

Text

Безопасният начин е да се ескейпват всичките пет символа в текста, но трите символа ", ' и > не е необходимо да се ескейпват в текста:

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

Attributes

Безопасният начин е да се избягват всичките пет символа в атрибутите, но символът > не е необходимо да се избягва в атрибутите:

<?xml version="1.0"?>

Символът ' не трябва да се избягва в атрибутите, ако кавичките са ":

<?xml version="1.0"?>

По същия начин знакът " не трябва да се извежда в атрибутите, ако кавичките са ':

<?xml version="1.0"?>

Коментари

Всичките 5 специални символа не трябва да се избягват в коментарите:

<?xml version="1.0"?>


CDATA

Всичките 5 специални символа не трябва да се избягват в секциите CDATA:


<?xml version="1.0"?>
Коментари (13)

Може би това ще ви помогне:

Списък на препратки към символни същности в XML и HTML:

В SGML, HTML и XML документите логически конструкции, известни като символни данните и стойностите на атрибутите се състоят от последователности от знаци, в които всеки символ може да се прояви директно (представляващ себе си), или може да бъде да бъде представен чрез поредица от знаци наречена символна референция, от която има два вида: цифров препратка към символ и препратка към символ референция на единица. В тази статия са изброени препратките към символни същности, които са валидни в HTML и XML документи.

В тази статия са изброени следните пет предварително дефинирани XML същности:

quot  "
amp   &
apos  '
lt    <
gt    >
Коментари (0)

освен общоизвестните пет символа [, &, ", '] бих избягал и от символа за вертикален табулатор (0x0B). Той е валиден за UTF-8, но не е валиден за XML 1.0 и дори много библиотеки (включително libxml2) го пропускат и мълчаливо извеждат невалиден XML.

Коментари (0)