2009-05-15 2 views
41

Не могу поверить, что я не могу легко найти эту информацию, поэтому:Какие символы недопустимы (если они не закодированы) в атрибуте XML?

1) Какие символы не могут быть включены в атрибут XML без сущности-кодировки?

Очевидно, что вам необходимо закодировать кавычки. Как насчет < и >? Что еще?

2) Где именно находится официальный список?

ответ

1

См. 2.2 Characters в "Extensible Markup Language (XML) 1.0 (Third Edition)".

Обратите внимание, что, хотя бы с .NET, если вы используете XML-API для работы с XML, вам не придется беспокоиться об этом. Это причина не рассматривать XML как текст.

+0

Я согласен с расположением документа, но я не думаю, что этот конкретный раздел является правильным местом для просмотра. В этом разделе перечислены допустимые символы, разрешенные в «текстовом потоке», если хотите. О .NET и библиотеках я не мог согласиться больше, но в этом конкретном случае мне нужно отредактировать существующий текстовый файл, содержащий XML. –

+0

Итак, почему бы не использовать XML-API для обработки этого текстового файла? –

+0

Лучше использовать текущую версию документов: https://www.w3.org/TR/xml/ – albert

5

В соответствии с (2) current recommendation, особенно в отношении character data and Markup, они являются (1) амперсанд (&), левая угловая скобка (<), правой угловой скобки (>) и обе одиночные кавычки (') и дважды -quote (").

+1

Я согласен с разделом спецификационного документа. Однако не все эти атрибуты «должны» быть экранированы. Можете ли вы изменить, чтобы уточнить? –

+1

-1 Нет необходимости скрывать '>', а не '' 'или' '' (который не используется для разграничения атрибута. – Phrogz

48

Вот определение what is allowed in an attribute value.

'"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'" 

Таким образом, вы не можете иметь:

  • тот же символ, который открывает/закрывает значение атрибута (либо' или ")
  • обнаженный амперсанд (& должен быть &amp;)
  • левый угловой кронштейн (< должен быть &lt;)

Вы также не должны использовать characters, которые не имеют юридической силы нигде в документе XML (например, в формах и т. Д.).

Смежные вопросы