RSS의 xml에서 CDATA 태그는 어떤 필드에 써도 상관없나요?

raymundo의 이미지

제 홈에서 쓰는 위키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 엘리먼트 등에도 "&nbsp;" 같은 게 들어가 있으면 IE로 이 xml을 보면 에러가 나더군요. 사용자가 그런 문자열을 안 넣어주면 좋겠지만 이왕이면 에러의 소지를 없애는 게 낫겠다 싶어서요.

태터 등의 소스를 봐도, 각 엘리먼트의 값을 주기 전에 부등호는 &lt;, &gt; 등으로 바꾸는 등 미리 문제의 소지를 없애는 동작을 하고 있던데 그럴 필요 없이 주어진 값을 무조건 CDATA로 묶으면 에러도 안 나고 편하겠더라고요.

근데 제가 걱정하는 것은 description 이나 title 이야 어차피 값이란 게 결국 임의의 스트링일 뿐이니 상관이 없는데, link 엘리먼트 같은 경우는 RSS reader 에서 링크를 걸어주는 URL이어야 하고, pubDate 엘리먼트의 경우는 특정한 양식으로 표현된 타임스탬프이고 등등... 이렇게 스트링이 아닌 다른 의미를 가지고 있는 엘리먼트의 값을CDATA로 묶으면 RSS 리더 쪽에서 문제를 일으키지 않을까 하는 겁니다.

테스트 결과 blogline 과 태터리더기에서는 문제를 일으키지 않는 것으로 보입니다만, 제가 모든 리더기를 다 설치해서 해 볼수도 없고 말이죠. RSS 스펙에 관한 사이트를 몇 군데 봤는데 엘리먼트에 대한 설명 (의미와 예문 등) 은 있는데 CDATA 로 묶어도 되는지 아닌지를 알 수가 없네요.

정리하면, RSS2.0 의 각 엘리먼트 중에
1) CDATA 로 묶는 것은 xml을 분석하는 레이어에서의 일이지, RSS 리더가 각 엘리먼트값을 얻는데에는 지장 없다
2) CDATA 로 묶어도 될 엘리먼트가 있고 안 되는 엘리먼트가 있다.
중 어느 쪽일까요?

조언 부탁드리겠습니다. 좋은 하루 되세요~

byung82의 이미지

XML에서 CDATA 테그와 상관없이 작성이 가능합니다.

사용하실려면 사용하셔도 문제는 안됩니다.

하지만 RSS 스펙에 보시면 규격 문자열 길이가 있습니다 ^^;

그 규격을 넘기시면 좀 곤란을 하시겠죠 ^^;

될수 있으면 RSS스펙상에서 필드가 어떤 내용인가를 확인 하신후 맞게 맞추어 주시는게 좋습니다.

그럼

raymundo의 이미지

byung82 wrote:
XML에서 CDATA 테그와 상관없이 작성이 가능합니다.

사용하실려면 사용하셔도 문제는 안됩니다.

하지만 RSS 스펙에 보시면 규격 문자열 길이가 있습니다 ^^;

그 규격을 넘기시면 좀 곤란을 하시겠죠 ^^;

될수 있으면 RSS스펙상에서 필드가 어떤 내용인가를 확인 하신후 맞게 맞추어 주시는게 좋습니다.

그럼

앗, 감사합니다.

그럼 일단 모든 엘리먼트의 값을 각각 CDATA로 싸면 되겠군요. 길이 제한은 몰랐는데 알아보겠습니다. 좋은 하루 되세요~

좋은 하루 되세요!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.