자, 다음과 같은 문자에 대한 질문을 분리합시다.
- 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. */
기본적으로 제어 문자 및 유니 코드 범위를 벗어난 문자는 허용되지 않습니다. 이것은 또한 예를 들어 캐릭터 엔티티의 호출 
이 금지됨을 의미합니다.
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 권장 사항의이 개정은 허용 문자를 확장하여 제어 문자가 허용되며 유니 코드 표준의 새로운 개정을 고려하지만 NUL (x00) , xFFFE , xFFFF ...
그러나 제어 문자 및 정의되지 않은 유니 코드 문자를 사용하지 않는 것이 좋습니다.
모든 파서가이를 항상 고려하지는 않으며 제어 문자가있는 XML 문서는 거부 될 수 있습니다.
2. 제대로 구성된 문서를 얻기 위해 이스케이프해야하는 문자 :
는 <
로 이스케이프해야 <
이 태그의 시작으로 간주되기 때문에, 엔티티.
는 &
로 이스케이프해야합니다 &
시작하는 엔티티 참조로 간주되기 때문에, 엔티티
는 >
로 이스케이프해야합니다 >
엔티티. 필수는 아니며 상황에 따라 다르지만 탈출하는 것이 좋습니다.
는 '
로 이스케이프해야 '
엔티티 - 작은 따옴표 내에 정의 된 속성에 필수 있지만 강력 항상 탈출하는 것이 좋습니다.
는 "
로 이스케이프해야 "
엔티티 - 따옴표로 정의 된 속성에 필수 있지만 강력 항상 탈출하는 것이 좋습니다.