XML 문서에서 어떤 문자를 이스케이프해야합니까? 또는 그러한 목록을 어디에서 찾을 수 있습니까?
XML 문서에서 어떤 문자를 이스케이프해야합니까? 또는 그러한 목록을 어디에서 찾을 수 있습니까?
답변:
적절한 클래스 나 라이브러리를 사용하면 탈출 할 것입니다. 많은 XML 문제는 문자열 연결로 인해 발생합니다.
5 개만 있습니다 :
" "
' '
< <
> >
& &
이스케이프 문자는 특수 문자가 사용되는 위치에 따라 다릅니다.
예제는 W3C Markup Validation Service 에서 확인할 수 있습니다 .
안전한 방법은 텍스트에서 5자를 모두 이스케이프 처리하는 것입니다. 그러나, 세 개의 문자 "
, '
그리고 >
필요없는 텍스트로 이스케이프 :
<?xml version="1.0"?>
<valid>"'></valid>
안전한 방법은 속성에서 다섯 문자를 모두 이스케이프 처리하는 것입니다. 그러나 >
특성 에서 캐릭터를 이스케이프 처리 할 필요는 없습니다.
<?xml version="1.0"?>
<valid attribute=">"/>
'
따옴표가있는 경우 문자 속성에서 탈출 할 필요가 없다 "
:
<?xml version="1.0"?>
<valid attribute="'"/>
마찬가지로 "
따옴표가 '
다음과 같은 경우 속성에서 이스케이프 처리 할 필요가 없습니다 .
<?xml version="1.0"?>
<valid attribute='"'/>
주석에서 5 개의 특수 문자 를 모두 이스케이프 해서는 안됩니다 .
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
CDATA 섹션 에서 5 개의 특수 문자 를 모두 이스케이프 해서는 안됩니다 .
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
XML 처리 명령에서 5 개의 특수 문자 를 모두 이스케이프 해서는 안됩니다 .
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML에는 더 많은 문자를 다루는 자체 이스케이프 코드 세트가 있습니다.
"
로 변경됩니다&quot;
아마도 이것은 도움이 될 것입니다 :
SGML, HTML 및 XML 문서에서 문자 데이터 및 속성 값으로 알려진 논리적 구성은 문자 시퀀스로 구성되며, 각 문자는 직접 표시하거나 (자체를 대표) 문자 참조라고하는 일련의 문자로 나타낼 수 있습니다. 숫자 참조와 문자 엔티티 참조의 두 가지 유형이 있습니다. 이 기사는 HTML 및 XML 문서에서 유효한 문자 엔티티 참조를 나열합니다.
이 기사에는 다음과 같은 5 개의 사전 정의 된 XML 엔티티가 나열되어 있습니다.
quot "
amp &
apos '
lt <
gt >
월드 와이드 웹 컨소시엄 (w3C)의 스펙에 따르면 마크 업 구분 기호로 사용되거나 주석, 처리 명령 또는 CDATA 섹션 내에서 사용되는 경우를 제외하고 XML 문서에 리터럴 형식으로 표시되어서는 안되는 5 개의 문자가 있습니다. . 다른 모든 경우에는 다음 표에 따라 해당 엔티티 또는 숫자 참조를 사용하여 이러한 문자를 바꿔야합니다.
Original CharacterXML entity replacementXML numeric replacement
< < <
> > >
" " "
& & &
' ' '
위에서 언급 된 엔티티는 & apos; XHTML 1.0에서 도입되었으며 HTML 4로 선언되지 않았습니다. 이러한 이유로 인해 레트로 호환성을 위해 XHTML 사양에서는 & # 39; 대신에.
>
는 CDATA 섹션의 끝을 나타내는 구분 기호의 ]]
일부가 아닌 경우 내용을 따르는 경우 이스케이프되어야합니다 ]]>
.
이스케이프 문자는 태그와 속성이 다릅니다.
태그의 경우 :
< <
> > (only for compatibility, read below)
& &
속성의 경우 :
" "
' '
에서 문자 데이터 및 마크 업 :
앰퍼샌드 문자 (&) 및 왼쪽 꺾쇠 괄호 (<)는 마크 업 구분 기호로 사용되거나 주석, 처리 명령 또는 CDATA 섹션 내에서 사용되는 경우를 제외하고 리터럴 형식으로 표시되어서는 안됩니다. 다른 곳에서 필요한 경우 숫자 참조 또는 문자열 "& amp;"및 "& lt;"를 사용하여 이스케이프해야합니다. 직각 괄호 (>)는 문자열 "& gt;"을 사용하여 표시 될 수 있으며, 호환성을 위해 "& gt;"또는 컨텐츠에서 ""]> ""문자열에 나타날 때 문자 참조를 사용하여 이스케이프해야합니다. 해당 문자열이 CDATA 섹션의 끝을 표시하지 않는 경우
속성 값에 작은 따옴표와 큰 따옴표가 모두 포함되도록하려면 아포스트로피 또는 작은 따옴표 문자 ( ')를 "& apos;"로, 큰 따옴표 문자 ( ")를"& quot; ".
자주 묻는 질문에 대한 새롭고 간단한 답변 ...
]]>
로 이스케이프해야합니다 ]]>
. 이를 달성하는 가장 쉬운 방법은 항상로 탈출 >
하는 것 >
입니다.
]]>
했지만 >
항상 탈출 한다는 것을 제안하기보다는 (이것이 필요하지는 않지만) esoterica에게 그것을 공개하기로 결정했습니다 . XML 이스케이프 규칙을 쉽게 기억 하고 100 % 정확 하도록하는 것이 나의 목표 입니다.
일반적으로 알려진 다섯 문자 [<,>, &, "및 '] 외에도 세로 탭 문자 (0x0B)를 이스케이프 처리합니다. 유효한 UTF-8이지만 유효한 XML 1.0 및 많은 라이브러리 (고 이식성 (ANSI C) 라이브러리 libxml2 포함 )이 누락되어 자동으로 잘못된 XML을 출력합니다.
요약 : XML, 이스케이프
사전 정의 된 5 개의 엔티티가 있습니다.
< represents "<"
> represents ">"
& represents "&"
' represents '
" represents "
"허용 된 모든 유니 코드 문자는 숫자 참조로 표시 될 수 있습니다." 예를 들면 다음과 같습니다.
中
대부분의 제어 문자와 다른 유니 코드 범위는 특별히 제외됩니다. 즉, 이스케이프되거나 직접 발생 할 수 없습니다.
상황에 따라 다릅니다. 내용의 경우 < 및 & 및 ]]>입니다 (단 하나의 문자 대신 3 개의 문자열 임).
속성 값의 경우 < , & , " 및 ' 입니다.
CDATA의 경우 ]]> 입니다.
만 <
하고 &
그들이 문자 데이터가 아닌 마크 업을 처리 할 경우 이스케이프해야합니다 :
<company>AT&T</company>