Нужно ли заменять двойную / одинарную кавычку в тексте XML?
пожалуйста, исправьте мою терминологию здесь, если она выключена:
5 символов замены для XML являются:
- & ( & )
- > ( > )
- " (")
- ' (')
все ли эти замены должны происходить в тексте элемента? Или только текст атрибута? (терминологическая поправка?)
например, является ли это допустимым XML?
<myelement>x && y</myelement>
<myelement>And I quote, "no"</myelement>
>
и <
кажется очевидным чтобы заменить в этом контексте, но я не понимаю, являются ли правила замены глобальными для всего XML-документа или они применяются по-разному к различным частям документа (например, разделы cdata применяют разные правила).
предположение: это недопустимый XML:
<myelement field="no & allowed here"/>
<myelement field="no <> allowed here"/>
котировки очевидны разделители атрибуты и явные разделители текста элемент.
1 ответов
в содержимом элемента вам нужно только бежать &
и <
; вам никогда не нужно избегать одиночных или двойных кавычек, и вам нужно бежать >
только если он появляется как часть последовательности ]]>
(многие люди заменяют его безоговорочно, потому что это проще).
в содержимом атрибута вам нужно только избежать &
и <
и '
или "
, в зависимости от того, какой из них использовался в качестве разделителя атрибутов.
лиц, начиная с &
не распознаются в комментариях или разделах CDATA или в именах элементов или атрибутов, поэтому специальные символы не должны экранироваться в этих контекстах.