CDATA란
XML 문서/파일 내용을 보면 가끔
로 되어있는것을 볼 수 있습니다.
이게 무엇인지 알아보겠습니다.
CDATA는 Character Data를 의미하며,
이 문자열들 사이의 데이터는 XML 마크업으로 해석하지 않아야 하는 데이터를 포함한다는 것을 의미합니다.
'(Unparsed) Character Data'. 즉, '파싱하지 않는 문자 데이터'라는 뜻입니다.
파싱하는 문자 데이터는 'PCDATA'라고 부릅니다.
CDATA와 코멘트의 주요 차이점은 다음과 같습니다.
CDATA는 여전히 문서의 일부인 반면, 코멘트는 그렇지 않습니다.
CDATA에서는 문자열]]>(CDEnd)을 포함할 수 없는 반면, 주석에서는 -가 유효하지 않습니다.
CDATA를 쓰는 이유
CDATA를 쓰는 이유를 알아봅시다.
먼저, 아래와 같이 test1.xml과 test2.xml을 작성해보겠습니다.
test1.xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" >
<head>
<title>CDATA Example</title>
</head>
<body>
<h2>테스트1</h2>
<div>
You won't see this in the document<br/>and can use reserved characters like
< > & "
</body>
</html>
test2.xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" >
<head>
<title>CDATA Example</title>
</head>
<body>
<h2>테스트2</h2>
<div>
<![CDATA[
You won't see this in the document and can use reserved characters like
< > & "
]]>
</body>
</html>
test.xml과 test2.xml 을 브라우저에서 열어보면 어떻게 표시되는지 볼까요?
test.xml
test2.xml
위에서 보시는바와 같이, < > & " 과 같은 문자는 test.xml 파일에서 안보이는 바년,
test2.xml 파일은 CDATA를 써서 내용이 보이는것을 확인할 수 있습니다.
즉, 는 안에 들어가는 텍스트가 파싱되지 않도록 합니다.
이는 파서가 잘못 파싱할 수 있는 텍스트를 다룰 때, 파서의 잘못된 파싱을 방지합니다.
총평
html에서는 <,>를 >와 < 로 각각 변환하게 할 수 있게끔하였습니다.
매번, 또는 한글자를 입력만 하는데도
를 쓰는 경우가 많을경우에는 이 방식이 확실히 효율적이라고 생각합니다.
XML에도 이런 특수문자를 지원해주면 편할거 같은데, 아쉽게도 지원하지는 않는것 같습니다.
가끔씩 mybatis 등에서 보이는 XML에서 보이는 CDATA가 무슨뜻인지도 모르고,
단순이 파싱이 안될때 쓰면 되겠거니 라고만 생각했었는데, character data라는 뜻이라는 것을 이번기회에 알았습니다.
근데 쓰는방식을 좀 더 단순화 했으면 어떨까 싶습니다. 타이핑하는게 좀 길어보이기도 합니다.
저같으면 그냥
라고 쓰면 CDATA와 동일하게 표시되도록 하면 훨씬 더 쉽게 사용할 수 있지는 않았을까 싶습니다.
`CDATA, cdata, cdata란?, CDATA사용이유, CDATA사용하는 이유, xml cdata, 마이바티스 cdata
#cdata,#mybatis,#xml,#CDATA,#마이바티스
'개발용어' 카테고리의 다른 글
객체지향(Object-oriented)용어 - ADT, Class, Object, 클래스, 오브젝트 (0) | 2022.03.31 |
---|---|
디자인패턴이란, GoF디자인패턴이란, 디자인패턴의유래, 패턴을쓰는이유, (0) | 2022.03.29 |
에버그린 브라우저란, evergreen browser란? (0) | 2022.01.29 |
JWT란 (json web token 이란), JWT 사용하는 이유, JWT 동작방식 (0) | 2022.01.05 |
dependency injection이란, DI란, 의존성 주입이란 (0) | 2021.12.22 |
댓글