개발 공부/etc

[XML] CDATA

빵다희 2024. 8. 11. 21:43

📖 CDATA 정의

CDATA는 "Character Data"의 약자로, XML 문서에서 특수 문자를 포함한 텍스트 데이터를 표현하기 위해 사용되는 구문이다.

CDATA는 마크업으로 인식될 수 있는 문자를 포함하는 텍스트를 이스케이프하는 데 사용된다. 

즉, XML의 태그와 같은 구문을 포함하더라도 이를 특별히 해석하지 않고 그대로 읽도록 하는 방법이다.

 

💡 XML에서 마크업으로 인식될 수 있는 주요 문자

  1. 꺾쇠 괄호:
    • < : 시작 태그를 나타내는 데 사용.
    • > : 종료 태그를 나타내는 데 사용.
  2. 앰퍼샌드:
    • & : 엔티티 참조의 시작을 나타내며, 특수 문자를 표현하는 데 사용된다. 예를 들어, &lt;는 <, &gt;는 >를 나타냄.
  3. 따옴표:
    • " : 속성 값을 감싸는 데 사용
    • ' : 속성 값을 감싸는 데 사용 (두 가지 모두 사용 가능)

이 외에도 XML 문서 내에서 특정 규칙을 따르는 문자가 마크업으로 인식된다. 이러한 문자가 XML의 구조를 정의하기 때문에, 텍스트 데이터로 포함하려면 이스케이프 처리가 필요하다.

 

예를 들어:

  • <는 &lt;로
  • >는 &gt;로
  • &는 &amp;로
  • "는 &quot;로
  • '는 &apos;로 이스케이프해야 한다.

이렇게 이스케이프 처리되지 않은 상태로 포함되면 XML 파서가 마크업으로 해석하여 오류를 발생시킬 수 있다.

🔍 CDATA  상세 구분

CDATA는 사실 CDATA 섹션(Section)이 정확한 명칭이며, CDStart, CData, CDEnd 3가지 부분으로 구분될 수 있다.

구분 설명
CDStart <![CDATA[
CData 이스케이프가 필요한 문자열
CDEnd ]]>

 

CData 부분에는 특수문자를 이스케이프 하지 않고 문자 그대로 입력 할 수 있지만, 

CDEnd의 문자열인 ']]>'을 입력하면 바로 CDATA섹션이 종료되기 때문에 주의해야한다.  ']'와 '>' 을 따로 입력하는 건 상관없다.

🧐 CDATA 섹션 예시 

<![CDATA[<greeting>Hello, world!</greeting>]]>

 

여기서 "<greeting>"과 "</greeting>"은 마크업이 아닌 문자 데이터로 인식되어

"<greeting>Hello, world!</greeting>"

 

 

이렇게 일반 텍스트로 인식된다.

결론적으로, CDATA 섹션 내의 내용은 XML 파서에 의해 마크업으로 해석되지 않으므로, 해당 내용이 그대로 텍스트로 처리된다.

 

💡 참고자료 : W3C XML - 2.7 CDATA Sections

https://www.w3.org/TR/xml/#sec-cdata-sect

 

Extensible Markup Language (XML) 1.0 (Fifth Edition)

Extensible Markup Language, abbreviated XML, describes a class of data objects called XML documents and partially describes the behavior of computer programs which process them. XML is an application profile or restricted form of SGML, the Standard General

www.w3.org

 

728x90
반응형