...
CDATA 란?
CDATA는 character data(문자 데이터)를 의미하며, 마크업 언어(xml)에서 CDATA로 문자들을 감싸게 되면, 이 문자열들 사이의 데이터는 마크업으로 해석하지 않아야 하는 데이터를 포함한다는 것을 의미한다.
예를들어 마크업 언어에서 < 나 > 와 같은 기호는 이미 태그로서 정의되어 있기 때문에 문자기호를 그대로 사용하면 안되고, < , > , & 와 같은 문자를 사용하여야 한다. 하지만 가독성이 좋지않고 사용성도 좋지 않다.
따라서 마크업 언어에서 < 나 > 와 같은 기호를 문자 그대로 인식 시키기 위해 CDATA 블록으로 감싸주는 것이다.
CDATA 사용법
시작인 <!CDATA[ 와 끝인 ]]> 사이에 원하는 텍스트를 넣어주면, 해당 영역에 포함된 문자열은 문자 그대로 인식된다.
< ![CDATA[
파싱할 문자 내용
<sender>John Smith</sender>
]] >
CDATA 예제
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 < > & "
</div>
</body>
</html>
<?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>
<![CDATA[ You won't see this in the document<br/>and can use reserved characters like < > & " ]]>
</div>
</body>
</html>
mybatis 예제
sql문에서 where 절의 논리 비교 로직에서 < , > 기호를 사용할때 CDATA로 묶어 주면 된다.
주의할점은 CDATA를 사용하는 경우 동적 쿼리문을 사용할 수 없기 때문에 쿼리문 전체가 아닌 특수문자가 포함된 코드에만 사용해야 한다.
<select id="memberList" resultType="">
select *
from member
where memberId <![CDATA[ < ]]> 5;
</select>
<select id="memberList" resultType="UserVO">
select * from member
<if test= "userId != null">
where memberId <![CDATA[ < ]]> 5;
</if>
</select>
<select id="memberList" resultType="">
<![CDATA[
select * from member where 1 = 1
]]>
<choose>
<when test='umemberId != null and memberNation == "en"'
<![CDATA[
memberAge > 48
]]>
</when>
<otherwise>
<![CDATA[
memberAge < 33
]]>
</otherwise>
</choose>
</select>
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.