2017-01-04 4 views
3

XML에서 예약 된 문자에 대해 일반적으로 권장되는 알파 엔터티 대신 숫자 엔터티를 사용하면 "끊어지는"현상이 발생합니까?&, > 및 <과 같이 "&", ">"및 "<"를 이스케이프 처리하는 것이 맞습니까?

사용자가 XML, CSV 또는 웹 기반 양식을 통해 서지 메타 데이터를 입력 할 수있는 다소 복잡한 앱의 일부입니다. 이 데이터는 사용자가 선택한 인코딩과 (표준 ONIX 사용) XML로 추출 할 수 있습니다 : UTF-8, 승리-1252 등

원래 프로그래머 (긴 ... 지금은 사라)

숫자 사용하기로 결정 선택한 인코딩으로 표현할 수없는 모든 문자에 대한 엔티티. XML 예약 문자는 모든 인코딩에서 표현할 수없는 것으로 간주됩니다. 그들은 동일한 취급을받으며 수치 적 실체를 사용하여 부호화됩니다.

일부 사용자는 등>에 대한 &, < 불평 & 등 # 38, 대신 일반적인 알파 코드를 사용하여로 인코딩 된 나는 이러한 불만은 어떤 물질이 있는지 알고 싶습니다.

레거시 코드를 파헤쳐이 동작을 변경하지 않아도된다면 많은 리소스를 절약 할 수 있습니다.

답변

5

예, 숫자 문자 참조를 사용하여 탈출하는 것이 좋습니다. spec (강조 광산)에서

:

앰퍼샌드 문자 (&)와 왼쪽 꺾쇠 괄호 (<) 마크 업 구분 기호, 또는 사용하는 경우를 제외하고, 자신의 문자 형태로 나타나지 한다 주석, 처리 명령 또는 CDATA 섹션 내에서. 그들이 다른 곳에서 필요한 경우, 그들은 하나 숫자 문자를 참조하거나 문자열 "&amp;"와 "&lt;" 각각 사용하여 이스케이프해야합니다. 오른쪽 꺾쇠 괄호 (>)는 문자열 "&gt;"을 사용하여 표시 할 수 있으며 내용에 "]]>" 문자열에 나타나는 경우 "&gt;"또는 문자 참조를 사용하여 호환성을 위해 이스케이프해야합니다. 해당 문자열은 CDATA 섹션의 끝을 표시하지 않습니다.

또한 육각 엔티티 참조를 사용할 수 있습니다 ...

&amp; = &#38; = &#x26;

&lt; = &#60; = &#x3C;

&gt; = &#62; = &#x3E;