Какие символы недопустимы (если они не закодированы) в атрибуте XML?
Не могу поверить, что я не могу легко найти эту информацию, поэтому:
1) Какие символы не могут быть включены в атрибут XML без сущности-кодировки?
Очевидно, вам нужно закодировать кавычки. Как насчет <
и >
? Что еще?
2) Где именно находится официальный список?
Ответы
Ответ 1
Вот определение того, что разрешено в значении атрибута.
'"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'"
Итак, вы не можете:
- тот же символ, который открывает/закрывает значение атрибута (либо
'
, либо "
)
- голый амперсанд (
&
должен быть &
)
- левая угловая скобка (
<
должна быть <
)
Вы также не должны использовать символы, которые прямо не легальны нигде в документе XML (например, фиды форм и т.д.).
Ответ 2
В соответствии с текущей (2) текущей рекомендацией, особенно в отношении символьных данных и Markup, это: (1) амперсанд (&), левый угловой кронштейн (<), скобка в правом углу ( > ) и как одиночная кавычка ( "), так и двойная кавычка (" ).
Ответ 3
См. 2.2 Персонажи в "Расширяемый язык разметки (XML) 1.0 (третье издание)" .
Обратите внимание, что, по крайней мере, с .NET, если вы используете XML API для работы с XML, вам не придется беспокоиться об этом. Это причина не рассматривать XML как текст.