[xml] XML 문서에서 어떤 문자를 이스케이프해야합니까?

XML 문서에서 어떤 문자를 이스케이프해야합니까? 또는 그러한 목록을 어디에서 찾을 수 있습니까?



답변

적절한 클래스 나 라이브러리를 사용하면 탈출 할 것입니다. 많은 XML 문제는 문자열 연결로 인해 발생합니다.

XML 이스케이프 문자

5 개만 있습니다 :

"   "
'   '
<   &lt;
>   &gt;
&   &amp;

이스케이프 문자는 특수 문자가 사용되는 위치에 따라 다릅니다.

예제는 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

CDATA 섹션 에서 5 개의 특수 문자 모두 이스케이프 해서는 안됩니다 .

<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>

처리 지침

XML 처리 명령에서 5 개의 특수 문자 모두 이스케이프 해서는 안됩니다 .

<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>

XML과 HTML

HTML에는 더 많은 문자를 다루는 자체 이스케이프 코드 세트가 있습니다.


답변

아마도 이것은 도움이 될 것입니다 :

XML 및 HTML 문자 엔티티 참조 목록 :

SGML, HTML 및 XML 문서에서 문자 데이터 및 속성 값으로 알려진 논리적 구성은 문자 시퀀스로 구성되며, 각 문자는 직접 표시하거나 (자체를 대표) 문자 참조라고하는 일련의 문자로 나타낼 수 있습니다. 숫자 참조와 문자 엔티티 참조의 두 가지 유형이 있습니다. 이 기사는 HTML 및 XML 문서에서 유효한 문자 엔티티 참조를 나열합니다.

이 기사에는 다음과 같은 5 개의 사전 정의 된 XML 엔티티가 나열되어 있습니다.

quot  "
amp   &
apos  '
lt    <
gt    >


답변

월드 와이드 웹 컨소시엄 (w3C)의 스펙에 따르면 마크 업 구분 기호로 사용되거나 주석, 처리 명령 또는 CDATA 섹션 내에서 사용되는 경우를 제외하고 XML 문서에 리터럴 형식으로 표시되어서는 안되는 5 개의 문자가 있습니다. . 다른 모든 경우에는 다음 표에 따라 해당 엔티티 또는 숫자 참조를 사용하여 이러한 문자를 바꿔야합니다.

Original CharacterXML entity replacementXML numeric replacement
<                              &lt;                                    &#60;                                    
>                              &gt;                                   &#62;                                    
"                               &quot;                               &#34;                                    
&                              &amp;                               &#38;                                    
'                               &apos;                               &#39;                                    

위에서 언급 된 엔티티는 & apos; XHTML 1.0에서 도입되었으며 HTML 4로 선언되지 않았습니다. 이러한 이유로 인해 레트로 호환성을 위해 XHTML 사양에서는 & # 39; 대신에.


답변

이스케이프 문자는 태그와 속성이 다릅니다.

태그의 경우 :

 < &lt;
 > &gt; (only for compatibility, read below)
 & &amp;

속성의 경우 :

" &quot;
' &apos;

에서 문자 데이터 및 마크 업 :

앰퍼샌드 문자 (&) 및 왼쪽 꺾쇠 괄호 (<)는 마크 업 구분 기호로 사용되거나 주석, 처리 명령 또는 CDATA 섹션 내에서 사용되는 경우를 제외하고 리터럴 형식으로 표시되어서는 안됩니다. 다른 곳에서 필요한 경우 숫자 참조 또는 문자열 “& amp;”및 “& lt;”를 사용하여 이스케이프해야합니다. 직각 괄호 (>)는 문자열 “& gt;”을 사용하여 표시 될 수 있으며, 호환성을 위해 “& gt;”또는 컨텐츠에서 “”]> “”문자열에 나타날 때 문자 참조를 사용하여 이스케이프해야합니다. 해당 문자열이 CDATA 섹션의 끝을 표시하지 않는 경우

속성 값에 작은 따옴표와 큰 따옴표가 모두 포함되도록하려면 아포스트로피 또는 작은 따옴표 문자 ( ‘)를 “& apos;”로, 큰 따옴표 문자 ( “)를”& quot; “.


답변

자주 묻는 질문에 대한 새롭고 간단한 답변 …

간소화 된 XML 이스케이프 (우선 순위, 100 % 완료)

  1. 항상 (90 % 기억해야 함)

    • 탈출 <&lt;하지 않는 <을 시작하고있다 <tag/>.
    • 탈출 &&amp;하지 않는 &을 시작하고있다 &entity;.
  2. 속성 값 (9 % 기억해야 함)

    • attr=" '작은 따옴표 '는 큰 따옴표 안에 있습니다."
    • attr=' ""작은 따옴표 안에 큰 따옴표 가 있습니다.'
    • 탈출 "&quot;'같은 &apos;그렇지.
  3. 주석 , CDATA처리 지침 (0.9 % 기억해야 함)

    • <!--주석 내에서 -->이스케이프 할 필요는 없지만 --문자열은 허용되지 않습니다.
    • <![CDATA[CDATA 내에서 ]]>이스케이프 할 필요는 없지만 ]]>문자열은 허용되지 않습니다.
    • <?PITargetPI 내에서 ?>이스케이프 할 필요는 없지만 ?>문자열은 허용되지 않습니다.
  4. Esoterica (0.1 % 기억해야 함)

    • 탈출 ]]>]]&gt;하지 않는 ]]>CDATA 섹션을 종료한다.
      (이 규칙은 일반적으로 CDATA 섹션 외부에서도 문자 데이터에 적용됩니다.)

답변

일반적으로 알려진 다섯 문자 [<,>, &, “및 ‘] 외에도 세로 탭 문자 (0x0B)를 이스케이프 처리합니다. 유효한 UTF-8이지만 유효한 XML 1.0 및 많은 라이브러리 (고 이식성 (ANSI C) 라이브러리 libxml2 포함 )이 누락되어 자동으로 잘못된 XML을 출력합니다.


답변

요약 : XML, 이스케이프

사전 정의 된 5 개의 엔티티가 있습니다.

&lt; represents "<"
&gt; represents ">"
&amp; represents "&"
&apos; represents '
&quot; represents "

“허용 된 모든 유니 코드 문자는 숫자 참조로 표시 될 수 있습니다.” 예를 들면 다음과 같습니다.

&#20013;

대부분의 제어 문자와 다른 유니 코드 범위는 특별히 제외됩니다. 즉, 이스케이프되거나 직접 발생 할 수 없습니다.

XML의 유효한 문자