xml 특수 문자 치환




XML 문서에서 어떤 문자를 이스케이프해야합니까? (6)

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


[<,>, &, ", '] 일반적으로 알려진 5 개의 문자 외에도 수직 탭 문자 (0x0B)를 이스케이프 처리합니다. 유효한 UTF-8이지만 유효한 XML 1.0이 아니며 많은 라이브러리 ( libxml2)는 그것을 놓치고 무의식적으로 잘못된 XML을 출력합니다.



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

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

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

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

quot  "
amp   &
apos  '
lt    <
gt    >

요약 : http://en.wikipedia.org/wiki/XML#Escaping

미리 정의 된 엔티티가 다섯 개 있습니다.

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

"허용 된 모든 유니 코드 문자는 숫자 문자 참조로 나타낼 수 있습니다."예 :

&#20013;

대부분의 제어 문자와 기타 유니 코드 범위는 특별히 제외됩니다. 즉, 이스케이프 또는 직접 발생할 수 없음을 의미합니다 (나는 생각합니다).

http://en.wikipedia.org/wiki/Valid_characters_in_XML


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

태그의 경우 :

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

속성의 경우 :

" &quot;
' &apos;

http://www.w3.org/TR/2008/REC-xml-20081126/#syntax

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

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


적절한 클래스 나 라이브러리를 사용하면 이스케이프 처리가 수행됩니다. 많은 XML 문제는 문자열 연결로 인해 발생합니다.

XML 이스케이프 문자

단지 5 가지가 있습니다 :

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

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

예제는 W3C Markup Validation Service 에서 유효성을 검사 할 수 있습니다.

본문

안전한 방법은 텍스트의 다섯 문자를 모두 이스케이프하는 것이지만 " , '> 문자 세 개는 텍스트에서 이스케이프 할 필요가 없습니다.

<?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에는 더 많은 문자를 포함하는 고유 한 이스케이프 코드 집합이 있습니다.





character