Гаразд, давайте розділимо питання про персонажів, які:
- взагалі недійсні в жодному XML-документі.
- потрібно втекти.
Відповідь, надана @dolmen у " Що таке недійсні символи у XML ", все ще дійсна, але потребує оновлення зі специфікацією XML 1.1.
1. Недійсні символи
Описані тут символи - це всі символи, дозволено вставляти їх у XML-документ.
1.1. У XML 1.0
Глобальний список дозволених символів:
[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
В основному, контрольні символи та символи поза діапазонами Unicode заборонені. Це означає також, що викликати, наприклад, сутність символу
заборонено.
1.2. У XML 1.1
Глобальний список дозволених символів:
[2] Char ::= [#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
[2a] RestrictedChar ::= [#x1-#x8] | [#xB-#xC] | [#xE-#x1F] | [#x7F-#x84] | [#x86-#x9F]
Ця редакція рекомендації XML розширила дозволені символи, тому керовані символи дозволені та враховують нову редакцію стандарту Unicode, але такі досі заборонені: NUL (x00) , xFFFE , xFFFF ...
Однак використання контрольних символів та невизначених символів Unicode не рекомендується.
Також можна помітити, що всі аналізатори не завжди враховують це, і документи XML з контрольними символами можуть бути відхилені.
2. Символи, які потрібно уникнути (щоб отримати добре сформований документ):
<
Повинен бути відбувся<
особи, так як передбачається, що початок тега.
&
Повинен бути відбувся&
особи, так як передбачається, що початок посилання об'єкт
>
Повинен бути екранований>
особи. Це не є обов'язковим - це залежить від контексту, - але настійно радимо уникати цього.
'
Повинні бути екрановані з '
особи - обов'язковий в атрибутах , визначених у одинарні лапки , але настійно рекомендується завжди уникнути.
The "
Повинні бути екрановані з "
особи - обов'язковий в атрибути , визначені в подвійних лапках , але настійно рекомендується завжди уникнути.