사이드바 영역으로 건너뛰기

RSS XML

RSS 서비스를 하기 위해서 RSS-XML의 스펙에 맞는 XML 파일을 생성해줘야 합니다. (RSS에 대한 설명은 여러 곳에서 쉽게 찾아볼 수 있을 것입니다. 우리의 진보네도 매뉴얼을 썼었군요.) XML(eXtensible Markup Language)은 데이터 교환을 위한 표준으로, 특히 계층형 데이터를 쉽게 표현할 수 있다는 장점이 있습니다. (즉, DOM(Document Object Model) 객체로 표현하기가 쉽습니다.)

예를 들면 다음과 같은 관계는 XML로 이렇게 표현할 수 있죠.

 

 

XML은 HTML과 마찬가지로 태그 기반의 markup language이기 때문에, 태그를 정의하기에 따라 다른 용도로 사용할 수 있습니다. 프로그램의 기본적인 설정을 기록해둔 설정 파일로도 사용할 수 있고, 요즘 추세에 따르면 심지어 XML로 프로그래밍을 하기도 합니다. 그러나 가장 많이 사용되는 것은 데이터 교환의 용도로 쓰이는 것인데, 대표적인 예를 들면 웹에서 기사를 출판하는 언론의 경우, 기사를 XML 형식에 맞춰 보내면 자동으로 HTML 페이지를 만들어주기도 합니다. 표준에 맞게 XML만 만들면 다른 언론사의 기사라도 쉽게 받아 쓸 수 있게 되는 셈이죠.

 

물론 RSS에도 별도의 XML 표준이 있습니다. 진보넷 블로그의 경우 RSS 2.0을 기준으로 XML을 만들고 있지만, 다른 블로그의 경우 RSS 1.0을 지원하는 경우도 있습니다. 여기서 말하는 RSS의 버전은 RSS-XML에 담을 수 있는 정보가 많아지면서 새로운 태그가 추가되고 기존 태그를 수정하면서 진화되는 과정이라고 할 수 있습니다.(RSS의 진화과정에 대해서는 영문이지만-_- 여기에 잘 나와 있습니다.) 현재 대부분의 블로그에서는 RSS 2.0을 기준으로 RSS-XML을 만들고 있으며, 이 표준에 맞춘다면 대부분의 RSS 리더에서 무리없이 읽을 수 있습니다.

 

RSS-XML은 크게 두 부분으로 나눠집니다. 먼저 사이트에 대한 전반적인 정보를 정의한 태그들(1)이 존재하고, 사이트의 개별적인 여러 컨텐츠에 대한 정보를 정의한 [item] 태그(2)가 있습니다. 이들 태그는 [channel] 태그의 아래에 자리잡고 있습니다. (블로그의 경우에는 블로그 제목, 블로그 설명, 블로그 주인 이름 등의 정보가 (1)에 들어가고, 각 포스트의 정보가 (2)에 들어가게 되는거죠.)

 

먼저 사이트의 전반적인 정보를 표현하는 태그 중 대표적인 태그들은 다음과 같습니다.

[title] : 사이트의 제목 (제 블로그의 경우 "White Rabbit"이죠)

[link] : 사이트의 URL ("http://blog.jinbo.net/renegade/")

[description] : 사이트 설명 ("Follow the White Rabbit" -_-)

 

[item] 태그는 그 아래에 컨텐츠에 대한 정보를 정의한 하위 태그들을 가지고 있습니다. 대표적인 태그들은 다음과 같습니다.

[title] : 컨텐츠 제목 ("RSS XML")

[link] : 컨텐츠의 고유주소("http://blog.jinbo.net/renegade/?pid=269")

[description] : 컨텐츠 내용("RSS 서비스를 하기 위해서...어쩌구저쩌구")

[author] : 컨텐츠 생산자("레니")

[category] : 컨텐츠가 속한 카테고리("Jamming with Edward")

[pubDate] : 컨텐츠를 쓴 시간정보(놀랍게도 0시 0분이군요!)

 

물론 이외에도 더 많은 태그들이 존재하지만 위에서 정의한 태그들만 있어도 웬만한 RSS 리더에서 무리없이 표현 가능합니다. (보다 자세한 RSS 2.0 스펙은 영문이지만-_- 여기를 참조하세요.)

 

XML을 생성할 때 주의할 점이 하나 있습니다. XML은 일반적으로 HTML을 만들 때와 달리 열고-닫는 것을 확실하게 해 줘야 합니다. 대부분의 XML parser(XML 해석기...정도가 되겠군요)는 매우 엄격하게 태그를 구분하기 때문에, 조금이라도 XML 태그가 어긋나는 것이 있으면 파싱을 하지 못합니다. (물론 HTML 역시 마찬가지이긴 하지만, 웹브라우저가 매우 똑똑하기 때문에 HTML은 태그 하나 정도 닫지 않아도 별로 문제되지 않을 경우가 많죠.)

 

이전에 다음RSS넷에 대한 포스트에서 잠깐 썼지만, RSS-XML만 만들면 편리한 방법으로 컨텐츠를 배포할 수 있기 때문에, 앞으로 RSS를 통한 데이터 교환은 더욱 활발하게 일어날 것 같습니다. 진보넷 블로그에서도 이러한 추세에 맞춰-_- RSS에 대한 기능을 (언제가 될지는 모르겠지만-_-) 더 추가할 예정입니다. 보다 자세한 내용은 그 때 더 설명하도록 하겠습니다. :)

 

+ RSS에 대한 XML.com의 페이지입니다.

 



진보넷 블로그에서 생성하는 XML을 보면 [dc:...]와 [sy:...]로 표시된 태그를 보실 수 있습니다. 이들은 각각 RSS 1.0에서 포함된 태그들인데, RSS 1.0의 기본 태그들이 표현하지 않는 정보들을 정의하기 위해 도입되었습니다.

 

[dc:...] 태그의 경우 creator, language, rights, date 등의 정보가 (1)에 포함되어 있고, subject, creator, date 등의 정보가 (2)에 포함되어 있습니다. 불행하게도 RSS 1.0 시절에는 이들 정보를 표현할 수 있는 태그가 정의되지 않았었기 때문에 Dublin Core Metadata Initiative라는 포럼에서 추가적인 RSS 태그를 정의한 것이죠. 물론 RSS 2.0에서는 [dc:...] 태그가 나타내는 정보의 대부분을 표현할 수 있습니다. [dc:...] 태그는 여기에서 확인할 수 있습니다.

 

[sy:...] 태그는 Syndication의 약자로 컨텐츠의 업데이트 주기를 나타내기 위해 정의되었습니다. updatePeriod, updateFrequency, updateBase 등 태그의 이름만 봐도 그런 용도라는 사실을 알 수 있죠. Open Content Syndication(OCS)의 디렉토리 포맷을 참조하여 도입했다고 하는데, 자세한 것은 저도 잘 모르겠습니다-_- 물론 [sy:...] 태그의 대부분 역시 RSS 2.0에서 지원합니다.

 


진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크