Спецификация просто говорит о стандартном наборе символов, которые должны быть экранированы в XML. Спецификация XML, упомянутая в связанной записи, - это номер из W3C, found here.
Существует пять символов, которые должны быть экранированы в любом месте, где они отображаются в XML-данных (имена, значения и т. Д.), Если они не являются частью раздела CDATA. В соответствии с разделом 2.4:
Амперсанд характер (&) и левая угловая скобка (<) не должны появляться в их буквальном виде, кроме случаев, когда используется в качестве ограничителей разметки или в комментарии, инструкции по обработке, или раздел CDATA. Если они необходимы в другом месте, они должны быть экранированы с использованием либо числовых символов, либо строк " & "
и " < "
соответственно. Прямоугольная скобка (>) может быть представлена с использованием строки " > "
и должна быть совместима с экранированным " > "
или ссылкой на символ, когда она отображается в строке " ]]> "
в содержимом, когда эта строка не обозначает конец CDATA.
Чтобы разрешить значения атрибутов содержать как одиночные и двойные кавычки, апостроф или одной кавычки (') может быть представлена в виде " ' "
, и двойной кавычки (") в качестве " " "
.
другими словами, побег из следующих символов:.
' -> &apos
" -> "
> -> >
< -> <
& -> &
как правило, вы бы не кодировать их как xHHHH, вы бы использовать XML-объекты, перечисленные выше, но либо позволен вы также не необходимость to en кодовые цитаты или скобки с прямым углом в каждом случае, только если они в противном случае представляли бы синтаксис XML, но обычно безопаснее делать это все время.
Спецификация XML также включает в себя список каждого символа Unicode, которые могут появляться в документе XML, в разделе 2.2:
Char :: = # x9 | #xA | #xD | [# x20- # xD7FF] | [# xE000- # xFFFD] | [# x10000- # x10FFFF]
Этот список включает в себя в основном каждый символ Юникода в базовой плоскости (каждый из которых вы можете запустить), за исключением управляющих символов. Разрешены только символы вкладки, CR и LF - любой другой символ, расположенный ниже ASCII 32 (пробел), должен быть экранирован.
Большой пробел в списке (0xD800-0xDFF) предназначен для суррогатных значений кодировки, которые не должны появляться сами по себе, так как они не являются допустимыми символами. Последние два, 0xFFFE и 0xFFFF, также являются недопустимыми.
Если что-то не работает должным образом, у вас, вероятно, есть код для показа. Добавьте этот фрагмент кода к своему вопросу. – Neolisk