OK, oddzielmy pytanie o znaki, które:
- nie są w ogóle ważne w żadnym dokumencie XML.
- trzeba uciec.
Odpowiedź udzielona przez @dolmen w „ Co to są nieprawidłowe znaki w XML ” jest nadal aktualna, ale musi zostać zaktualizowana zgodnie ze specyfikacją XML 1.1.
1. Niepoprawne znaki
Opisane tutaj znaki to wszystkie znaki, które można wstawić do dokumentu XML.
1.1 W XML 1.0
Globalna lista dozwolonych znaków to:
[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
Zasadniczo znaki sterujące i znaki spoza zakresu Unicode są niedozwolone. Oznacza to również, że wywołanie na przykład encji znakowej
jest zabronione.
1.2 W XML 1.1
Globalna lista dozwolonych znaków to:
[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]
Ta wersja zalecenia XML rozszerzyła dozwolone znaki, więc znaki kontrolne są dozwolone, i uwzględnia nową wersję standardu Unicode, ale te wciąż są niedozwolone: NUL (x00) , xFFFE , xFFFF ...
Jednak stosowanie znaków kontrolnych i niezdefiniowanych znaków Unicode jest odradzane.
Można również zauważyć, że wszystkie parsery nie zawsze uwzględniają to, a dokumenty XML ze znakami kontrolnymi mogą zostać odrzucone.
2. Znaki, które należy uciec (aby uzyskać dobrze sformułowany dokument):
<
Musi być uciekł z <
jednostki, gdyż przyjmuje się za początek znacznika.
&
Musi być uciekł z &
jednostki, gdyż przyjmuje się za początek odesłanie podmiot
>
Należy uciekł z>
jednostki. Nie jest to obowiązkowe - zależy od kontekstu - ale zdecydowanie zaleca się jego uniknięcie.
'
Należy uciekł z A'
jednostki - Obowiązkowe w atrybutach zdefiniowanych w apostrofach ale zaleca się, aby zawsze przed nim uciec.
"
Należy uciekł z "
jednostki - Obowiązkowe w atrybutach zdefiniowanych wewnątrz cudzysłowów, ale zaleca się, aby zawsze przed nim uciec.