(티스토리, 올블로그 등과 RSS의 소프트웨어적 처리에 관련된 글입니다.
  관계자 분들 위주로 읽어주세요. 관련 지식 없는 분들은 읽으셔도 뭔 소리랴~ 싶으실 듯;)



RSS 리더를 사용하여 RSS Feed를 읽다 보면
제목이나 본문에서 특정단어가 사라져 보이는 현상이 있습니다.
아래글이 그 원인에 대한 것인데요... 저는 뒤늦게 발견했네요. ^^;
링크 : "블로그에는 꺽쇠괄호를 안쓰는게 좋다" (http://draco.pe.kr/697)

원천적으로 위에 링크해 드린 글의 내용은 좋은 지적입니다.
사용자 입장에서는 가급적 꺽쇠괄호를 사용하지 않는 게 좋습니다.

다만, 윗글은 저런 일이 발생하는 원인에 대해서는 정확히 지적하지 못 하는 감이 좀 있습니다. ^^;



■ 꺽쇠괄호와 RSS의 출력→복원 과정

꺽쇠괄호는 RSS 출력시 사용되는 언어인 XML에서 예약되어 있는 문자인데요,
제가 지금 티스토리에서 제목을 "테스트 <쏘우> 줄거리, 출연진"로 입력해 보았더니
RSS 소스에 다음과 같이 출력되고 있군요.
입력 : 테스트 <쏘우> 줄거리, 출연진
출력 : <title>테스트 &lt;쏘우&gt; 줄거리, 출연진</title>

만약 사용자가 제목을 "테스트 <쏘우> 줄거리, 출연진"로 입력했는데 다음과 같이 출력된다면
입력 : 테스트 <쏘우> 줄거리, 출연진
출력: <title>테스트 <쏘우> 줄거리, 출연진</title>
RSS 리더 입장에서는 꺽쇠괄호가 반복되니까 "이거 뭐야?;;;" 싶겠죠.
그래서 알아서 <title>과 </title> 사이의 내용에 있는 꺽쇠괄호를
&lt; 와 &gt; 를 사용하여 변환해 주고 있는 것입니다.

감이 잘 안 오시나요? (정상입니다. ^^ )
만약, 사용자가 "쏘우"라는 한글 대신 /title 이라고 입력할 경우 어떨까요?
그러니까... 이렇게 입력해 보죠.
입력 : 테스트 </title> 줄거리, 출연진
출력: <title>테스트 </title> 줄거리, 출연진</title>
자, RSS 리더 입장에서 보면 title의 끝 부분을 판별하기가 애매해지죠?
저런 오류를 막기 위해 굳이 &lt; 와 &gt; 를 사용하여 변환해 주고 있는 것입니다.

RSS 리더는 RSS Feed를 분석할 때 &lt; 와 &gt;를 다시 꺽쇠괄호로 복원해 냅니다.
그래서 우리 눈에는 "테스트 <쏘우> 줄거리, 출연진"로 보일 수 있게 해주어야 합니다.



■ RSS 발행기와 리더는 꺽쇠괄호 처리시 세밀하게 처리해야

원칙적으로는 이렇게 변환→복원되는 과정을 거치지만, 현실에서는 이것만으로 충분치가 않습니다.
왜냐면 꺽쇠괄호는 HTML의 예약문자이기도 하기 때문입니다.

원칙적으로야 RSS 리더는 꺽쇠괄호를 복원해내기만 하면 책임을 끝내는 것이지만,
우리들이 사용하는 브라우저는 사용자가 입력한 "</title>"을
일반적인 텍스트로서 사람에게 보이도록 출력해야 할지,
아니면 <img src="1.jpg"> 처럼 내부적으로 처리되는 태그로 처리해야 할지 정확히 판단할 수 없습니다.
IE, Firefox 등의 경우 한글로 시작되는 태그의 경우 대개 정상적으로 출력되지만,
영문의 경우 꺽쇠괄호로 둘러쌓여있으면 태그로 인식되어 없어져버립니다.
이건 쓴 사람이 어떻게 의도했는지에 따라 달라져야 하기 때문이죠.
예를 들어, 똑같이 <img src="1.jpg"> 라고 쓰더라도,
어떤 경우는 화면에 그림이 표시되길 바라고,
어떤 경우는 그림을 표시할 때는 이런 식으로 쓰면 된다고 가르쳐주기 위해 적기도 합니다.
(이 때는 태그 자체가 텍스트 그대로 화면에 표시되어야 합니다.)
제로보드라든지... 게시판에 글을 쓰다 보면, "HTML 사용"과 같은 옵션이 제공되는 경우가 있죠?
어떻게 표현되도록 원하는 것인지 작성자에게 묻고 있는 것이죠.

아무튼 RSS 리더가 복원 임무를 정확하게 수행해내도
(= RSS 리더가 만들어낸 HTML 소스에는 해당 문구가 포함되어 있지만)
브라우저가 완벽하게 판단하기 어렵기 때문에 꺽쇠괄호 속 문구가 사라지는 일이 종종 있습니다.

따라서 HTML 웹페이지를 기반으로 하는 RSS 리더는 (예: 구글 리더)
"이 꺽쇠괄호는 사람 눈에 보이도록 표시해줘."라는 의사표시를 하기 위해

제목에 포함된 &lt; 또는 &gt; 를 복원하지 않고 그대로 표시해 줄 필요가 있습니다.
원래는 "<"로 복원한 후 눈에 보이도록 인코딩(눈에 보이도록 "<"를 "&lt;"로 변환)해야 하지만,
복원 후 또 다시 변환을 거치느니 그냥 두는 게 현명하겠죠;;;

제목 줄에 전적으로 텍스트로만 출력되는 프로그램(PC에 설치해서 쓰는 리더 중 상당수)의 경우는
어차피 "<"가 그대로 눈에 보일테니 복원하는 것으로 임무를 마치면 됩니다.

이렇게 꺽쇠괄호는 리더에 따라 다르게 표현될 수 있는 문제를 초래하곤 합니다.
이 문제를 피하기 위해 http://www.feedvalidator.org/ 에서는
RSS 발행기에게 다음과 같이 처리하도록 권고하고 있습니다.
http://www.feedvalidator.org/docs/warning/ContainsHTML.html
For the widest interop, the RSS Profile recommends the use of the hexadecimal character reference "&#x26;" to represent "&" and "&#x3C;" to represent "<".
즉, XML 스펙상으로는 "&"를 "&amp;"로, "<"는 "&lt;"로 변환해주는 게 맞지만 호환 문제가 있으므로
"&"는 "&#x26;"로 변환하고, "<"는 "&#x3C;"로 변환하는 게 좋다는 건데,
현존하는 RSS 리더들이 제대로 처리하는지 미지수이긴 합니다. (회피;;;)



■ CDATA 본문의 예외처리 문제

현존하는 상당수의 RSS 발행기는
"<![CDATA[ 본문 ]]>"의 본문 부분에 "<![CDATA[" 또는 "]]>"이 들어가 있을 경우
처리해주는 것을 제대로 하지 않는 경우도 있습니다.
처리를 꼼꼼히 해주지 않는 문제는 발행기의 원천적 버그랄 수 있지만,
해석하는 입장(=올블로그라든지)에서 볼 때 꺽쇠괄호 만큼 애매한 문제는 아니기 때문에
복원기가 충분히 알아서 해결할 수 있는 것이기도 합니다. (HanRSS는 알아서 잘 해석하는 듯?)
맘 같아서야 모든 RSS 리더들이 문제가 있어도 알아서 잘 해석해주면 좋으련만,
원천적으로 잘못된 소스인 만큼 해석을 잘 못 한다 해서 탓할 수도 없는 노릇이죠. ;;;

그래서 몇개월 전에 올블로그에서 복원 역할을 좀 제대로 해주었으면 하면서 쓴 글이 있는데,
얼마 전에도 "어제 추천글"이 제대로 안 뜨는 걸 보니 아직도 그대로인 모양입니다.
여러분도 가~끔씩 "어제 추천글"이 10개가 아니라 3개만 뜬다든지 하는 현상을 목격하셨을 겁니다.
위 링크의 지적이 그것에 대한 겁니다.

뭐, 추천글 RSS의 경우는 보다 정확하게 표현하면
원글 제공자측 RSS 발행기의 오류 + 올블로그의 추천글 RSS 발행기의 오류...라 할 수 있지만,
어쨌든 좀 해결해 주었으면 하는 바람이 있습니다.

Google 같은 둔탁하고 느린; 거대기업이 바뀌기를 바라는 것보다 ㅠㅠ
차라리 "올블로그야, 바뀌어라! 푱!" 하는 게 낫겠다 싶습니다. ^^
올블로그가 더 믿음직하고, 문제를 수정할 가능성도 높죠. (= 제 생각)



■ 결론 : 올블로그 RSS 발행기 만드신 분은 수정 좀... ㄳ

(오해하실까봐 적어보는데요... 잘난 척 하려는 게 아닙니다~;;;
  저야 이쪽에 관심이 있는 사람이다 보니 굽실굽실~ 하는 입장이죠. ^^;;; )


그리고 쓰는 김에 한 마디 더~
올블로그 개발자님, 하시는 김에 버그 리포트하는 트랙백 날릴 수 있는 곳 좀 알려주시거나 만들어 주세요.
지난 번에도 찾아보고, 이번에도 찾아봤는데... 올블로그 안에서 그런 걸 못 찾겠어요.
이메일로 하는 건 있습니다만... 그건 쫌;;; (올블로그는 블로그 기업이지, 이메일 기업이 아니잖아요;;;)
Posted by JS
트랙백 0  /  댓글 7  /

■ 트랙백 주소 : http://ts.jagesarang.com/trackback/32

■ 악플보다 무서운 게 무플이라는 말도 있더군요. ^^; (몇글자 친다고 손가락 부러지진 않습니다...ㅎㅎ ㅡㅅㅠ)

  1. 2008/02/05 09:47
    댓글 주소 수정/삭제 댓글
    좋은 설명 감사합니다.
    남에게 원리를 설명하려면 자신부터 자세히 알아야 하기에 귀찮아서, 그냥 예제로만 표현하고 안썼던 내용입니다. ㅋㅋㅋ
    가만 있어도 저보다 더 자세히 설명해주시는 분이 이렇게 있으니, 역시 블로그들은 서로서로 상호보완적이지요. :)
    • 2008/02/06 08:13
      댓글 주소 수정/삭제
      댓글 감사합니다.
      제 글에도 문제가 좀 있었습니다. (현재는 수정)
      Creorix님 의견 듣고, 더 찾아보고 해서
      제대로 된 보완책을 알 수 있게 되었습니다. ^^
  2. 2008/02/05 13:51
    댓글 주소 수정/삭제 댓글
    잘 보았습니다. 원리는 몰라도 올블에서는 제목이 없어짐을 느끼고 있었습니다.
  3. 2008/02/05 14:14
    댓글 주소 수정/삭제 댓글
    티스토리의 현재 방식이 RSS 2.0의 Specification상 옳은 방법입니다. RSS 2.0의 Spec 문서 중 <item> element에 관한 설명이 나온 http://www.rssboard.org/rss-specification#hrelementsOfLtitemgt 을 보시면 다음과 같은 문장이 있습니다.

    An item may also be complete in itself, if so, the description contains the text (entity-encoded HTML is allowed; see examples), and the link and title may be omitted.

    description에서만 entity-encoded HTML이 allow된다고 표현했다는 것은 title에는 HTML을 허용하지 않는다는 뜻으로 바라볼 수 있다고 생각합니다. 따라서 "가나다 <test>"라는 제목은 <title>가나다 &lt;테스트&gt;</title>로 표현되는 것이 맞다고 판단됩니다.

    또한 올블로그에는 예전부터 특수 문자를 처리하는 과정에서 발생하는 버그가 예전부터 있었습니다. (http://blog.creorix.com/11 을 보시면 관련 내용을 기술했던 것을 볼 수 있습니다.) 사이트에서 전반적으로 발생하는 에러라서 고치기가 쉽지 않은 듯 싶습니다. 저도 가까운 시일 안에 해결되길 바라고 있습니다 :)
    • 2008/02/06 06:32
      댓글 주소 수정/삭제
      좋은 의견 감사합니다.
      저 역시 RSS 스펙과 XML 스펙을 보고 쓴 것입니다만,
      같은 내용이라도 해석하는 방식이 좀 다른 것 같네요. ^^

      말씀하신 부분을 검토하고, 관련자료를 좀 더 찾아본 후,
      글을 좀 더 정확하게 수정/추가하였습니다.
    • 2008/02/08 10:36
      댓글 주소 수정/삭제
      JS님께서 제시하신 절충안이 좋은 대안이 될 수 있을 것 같습니다. 좋은 정보 감사합니다 :)
  4. 2008/03/18 11:28
    댓글 주소 수정/삭제 댓글
    앗! 이 글을 이제야 봤습니다. 죄송..ㅜㅜ
    해당 부분들은 몇가지 문제가 있어서(예전에 RSS가 대중화 되지 않았을 때 엄청나게 다양한 예외들 때문에 그랬습니다) 그렇게 했었던 것인데, 다시 한 번 확인해보고 고칠 수 있는 부분들은 고칠 수 있도록 하겠습니다.

    감사합니다. (_ _)(^ ^)

<< PREV : [1] : ... [2] : [3] : [4] : [5] : [6] : [7] : [8] : [9] : [10] : ... [25] : NEXT >>