RSS의 xml에서 CDATA 태그는 어떤 필드에 써도 상관없나요?
제 홈에서 쓰는 위키CGI에 RSS 제공 기능을 넣고 있는데, RSS2.0 에 맞춰서 작성하고 있고 태터툴즈와 이글루스 등의 RSS출력을 참고했습니다.
그런데 태터나 이글루스 등을 보니까 RSS출력 중에
... <item> <title>글제목</title> <link>http://raymundo.egloos.com/1009256</link> <description> <![CDATA[ 글 내용 ]]> </description> <category>기타</category> <author>Raymundo</author> <pubDate>Sun, 27 Feb 2005 09:47:51 GMT</pubDate> </item> ...
위와 같이, description 엘리먼트의 값은 "<![CDATA["와 "]]>"로 둘러싸더군요. CDATA의 의미는 웹에서 찾아서 알겠는데...
제가 궁금한 것은, description 말고 다른 엘리먼트들도 다 CDATA로 만들면 안 되는가 하는 겁니다.
예를 들어 title 이나 author 엘리먼트 등에도 " " 같은 게 들어가 있으면 IE로 이 xml을 보면 에러가 나더군요. 사용자가 그런 문자열을 안 넣어주면 좋겠지만 이왕이면 에러의 소지를 없애는 게 낫겠다 싶어서요.
태터 등의 소스를 봐도, 각 엘리먼트의 값을 주기 전에 부등호는 <, > 등으로 바꾸는 등 미리 문제의 소지를 없애는 동작을 하고 있던데 그럴 필요 없이 주어진 값을 무조건 CDATA로 묶으면 에러도 안 나고 편하겠더라고요.
근데 제가 걱정하는 것은 description 이나 title 이야 어차피 값이란 게 결국 임의의 스트링일 뿐이니 상관이 없는데, link 엘리먼트 같은 경우는 RSS reader 에서 링크를 걸어주는 URL이어야 하고, pubDate 엘리먼트의 경우는 특정한 양식으로 표현된 타임스탬프이고 등등... 이렇게 스트링이 아닌 다른 의미를 가지고 있는 엘리먼트의 값을CDATA로 묶으면 RSS 리더 쪽에서 문제를 일으키지 않을까 하는 겁니다.
테스트 결과 blogline 과 태터리더기에서는 문제를 일으키지 않는 것으로 보입니다만, 제가 모든 리더기를 다 설치해서 해 볼수도 없고 말이죠. RSS 스펙에 관한 사이트를 몇 군데 봤는데 엘리먼트에 대한 설명 (의미와 예문 등) 은 있는데 CDATA 로 묶어도 되는지 아닌지를 알 수가 없네요.
정리하면, RSS2.0 의 각 엘리먼트 중에
1) CDATA 로 묶는 것은 xml을 분석하는 레이어에서의 일이지, RSS 리더가 각 엘리먼트값을 얻는데에는 지장 없다
2) CDATA 로 묶어도 될 엘리먼트가 있고 안 되는 엘리먼트가 있다.
중 어느 쪽일까요?
조언 부탁드리겠습니다. 좋은 하루 되세요~
^^;
XML에서 CDATA 테그와 상관없이 작성이 가능합니다.
사용하실려면 사용하셔도 문제는 안됩니다.
하지만 RSS 스펙에 보시면 규격 문자열 길이가 있습니다 ^^;
그 규격을 넘기시면 좀 곤란을 하시겠죠 ^^;
될수 있으면 RSS스펙상에서 필드가 어떤 내용인가를 확인 하신후 맞게 맞추어 주시는게 좋습니다.
그럼
Re: ^^;
앗, 감사합니다.
그럼 일단 모든 엘리먼트의 값을 각각 CDATA로 싸면 되겠군요. 길이 제한은 몰랐는데 알아보겠습니다. 좋은 하루 되세요~
좋은 하루 되세요!
댓글 달기