IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  웹 아키텍처 | XML  >

RSS 뉴스 피드 소개 (한글)

콘텐트 신디케이션에 오픈 포맷 사용하기

developerWorks
문서 옵션

JavaScript가 필요한 문서 옵션은 디스플레이되지 않습니다.


제안 및 의견
피드백

난이도 : 초급

James Lewin, President, The Lewin Group

2006 년 12 월 19 일

RDF Site Summary (RSS)는 웹에서 가장 광범위하게 사용되는 XML 포맷입니다. RSS 파일을 생성 및 사용하는 방법을 익히고, 이것이 어떻게 쓰일 수 있는지를 배워봅시다. Netscape, Userland, Moreover 같은 기업들이 RSS를 사용하여 기사 요약과 헤드라인을 배포 및 신디케이트 하는데 RSS를 사용하는 이유도 알아봅시다. 샘플 코드를 통해 RSS 파일의 엘리먼트를 설명하고, XML::RSS 모듈을 사용하는 Perl 예제도 설명합니다.

XML에 기반하고 있는 RDF Site Summary (RSS) 파일은 웹 콘텐트를 신디케이트 및 모으는 개방된 방식을 제공한다. RSS 파일을 사용하여, 웹 사이트에서 헤드라인, 링크, 기사 요약을 제공하는 데이터 피드를 만들 수 있다. 이 파일들은 로고, 사이트 링크, 인풋 박스, 여러 “뉴스 아이템들”을 포함한 정보 채널을 기술하고 있다. 다른 사이트들은 여러분의 정보를 그들의 페이지로 자동 결합할 수 있다. 여러분 역시 다른 사이트에서 RSS 피드를 사용하여 사이트에 최신 뉴스 헤드라인을 제공할 수 있다.

메타데이터란 무엇인가?
RSS 파일은 메타데이터 유형이다. 메타데이터는:
  • 정보에 대한 정보 단위이다.
  • 일반적으로 콘텐트, 콘텍스트, 데이터의 특성에 대한 정보를 설명하는데 사용된다.
HTML keywordsdescription metatag는 메타데이터의 한 예이며, 웹 페이지에 대한 정보를 제공한다.

My Netscape와 My UserLand 사이트에서 탄생한 RSS 포맷은 XML 뉴스 피드로부터 콘텐트를 모은다. 이것은 가장 간단한 XML 애플리케이션이기 때문에, RSS는 많은 개발자들에게 호응을 받고 있다. Moreover, Meerkat, UserLand, XML Tree가 이를 사용하고 있다. 이 글에서는 RSS 포맷에 대해 알아보고, RSS 파일들과 쉽게 작업할 수 있도록 해주는 오픈 소스 Perl 모듈을 연구해 볼 것이다.

RSS 파일?

RSS 파일들은 메타데이터이다. (메타데이터란 무엇인가? 참조) 직접 사용해 보거나, 예제를 보기 전까지는, RSS 파일이 무엇인지를 이해하는 것이 쉽지 않겠지만, 구현하기는 쉽다. RSS 파일에는 네 가지 유형의 엘리먼트들-- channel, image, items, text input-이 포함된다. 이러한 엘리먼트들은 구분하기도 쉽고, 코딩도 쉽다. (Listing 1) RSS 0.91 파일에 있는 아이템 예제인 Listing 1에는 세 부분들-Title, link, description-이 있는데 구분하기가 쉽다.


Listing 1. RSS의 샘플 아이템
				
<item>
  <title>
Mozilla Dispenses with Old, Proprietary DOM
</title>

<link> http://www.mozillazine.org/talkback.html?article=604 </link>
<description>The Mozilla team has decided to forgo backwards compatibility with Netscape's proprietary DOM.</description>

RSS 파일 애그리게이션(aggregation)을 통해 전개된 헤드라인 컬렉션에서, HTML은 특정 제목(title)을 헤드라인으로 렌더링 한다. 이 제목은 링크(link) 엘리먼트에 리스팅 된 URL을 사용하여, 링크로서도 작동한다. 마지막으로, 디스크립션(description)은 헤드라인 밑에 있는 기사의 요약이 된다.




위로


RSS 파일 만들기

RSS 1.0 스팩 또는 RSS 0.91 스팩에 맞춰 RSS 파일들을 구현할 수 있다. 실행 애플리케이션의 경우, 0.91을 사용해야 한다. 1.0은 아직 심사 중이다. 참고자료 섹션에는 1.0과 0.91 스팩에 대한 링크가 제공된다. 이 글에서는 자주 사용되는 엘리먼트를 설명하겠다. 여기에서 설명하고 있는 예제는 0.91 포맷이다.

1.0은 한 가지 중요한 부분에서 0.91과 다르다. 복잡성을 감수하면서, 유연성을 늘리는 Resource Description Framework (RDF) 엘리먼트를 사용한다. 이 스팩은 확장성이 있으며, 현재 필요에 맞고, 백워드 호환이 되며, 미래의 요구 사항에도 맞출 수 있는 RSS 파일용 W3C 표준을 만들고 있다.

이 스팩의 두 버전들은 개발자들이 많은 용도로 사용할 수 있는 경량의 포맷이라는 공통적인 특징이 있다.

RSS는 XML 애플리케이션이다. 따라서, 모든 RSS 문서는 XML 1.0 선언으로 시작하고, 그 뒤에 RSS 문서 유형 선언이 따른다. (Listing 2)


Listing 2. XML 선언
				
<item>
  <title>
Mozilla Dispenses with Old, Proprietary DOM
</title>

<link> http://www.mozillazine.org/talkback.html?article=604 </link>
<description>The Mozilla team has decided to forgo backwards compatibility with Netscape's proprietary DOM.</description>

첫 번째 라인은 문서가 XML 문서가 될 것임을 선언하고 있다. 두 번째 라인은 DTD 선언으로서, XML 파일이 Netscape에서 RSS 0.91 문서 유형 정의, 즉 DTD에 기반하고 있음을 명시하고 있다. 마지막으로 루트 엘리먼트는 RSS 파일 콘텐트의 시작을 표시하고, 이 모든 것이 <rss version "0.91"> 태그와 </rss> 태그 사이에 있다.




위로


RSS 파일의 네 가지 메인 섹션

루트 엘리먼트 다음에 RSS 파일의 네 개의 메인 섹션이 나온다. channel, image, item, text input 섹션이다. 실제 사용할 때, 채널(channel)과 아이템(item) 엘리먼트는 RSS 파일의 필수 요소이지만, 이미지(image)와 텍스트 인풋(text input)은 선택 사항이다.

채널 섹션

채널 엘리먼트에는 채널을 기술하는 메타데이터가 포함되어 있으며, 채널이 무엇이고, 누가 이것을 만들었는지를 알려주고 있다. 이 채널은 필수 엘리먼트이며, 채널의 이름, 디스크립션, 언어, URL이 포함된다. URL은 채널의 정보 소스를 가리키는데 사용된다.

Listing 3은 채널 엘리먼트의 시작 부분이다. 이 부분에서는 채널을 정의하고 채널 정보를 시작한다.


Listing 3. 채널 엘리먼트
				
<channel>
  <title>
MozillaZine
</title>

<link> http://www.mozillazine.org </link>
<description>Your source for Mozilla news, advocacy, interviews, builds, and more! </description>
<language> en-us </language> </channel>

채널 엘리먼트에는 나머지 채널 태그가 포함되는데, 이것은 채널을 기술하고, HTML로 디스플레이 되도록 한다. 타이틀은 그 뒤에 나오는 디스크립션과 함께 헤드라인 링크로서 취급된다 Channel Language 정의는 애그리게이터가 뉴스 피드를 선별하고, 언어를 올바르게 디스플레이 하는데 필요한 정보를 렌더링 소프트웨어에 제공한다.

</channnel> 태그는 채널을 닫기 위해 사용된다. RSS가 XML 스팩에 순응하기 때문에, 이 엘리먼트도 잘 구성되어야 한다. 클로징 태그가 필요하다.

0.91 채널 정의에는 아홉 개의 옵션 태그들이 포함될 수 있다. PICS Rating, Copyright Identifier, Publication Date, Webmaster등을 예로 들 수 있다. 이러한 추가 엘리먼트들을 다양한 목적에 사용할 수 있다. 콘텐트를 모으는 사이트는 이 추가 메타 정보를 사용하여 사용자들이 Platform for Internet Content Selection (PICS) 등급에 기반하여 뉴스 피드를 고를 수 있다. Channel 태그에 대한 추가 정보의 경우, RSS 스팩을 보면 된다.

이미지 섹션

이미지 엘리먼트는 선택적 엘리먼트로서 채널 공급자의 로고를 포함시키는데 사용된다. 이미지의 기본 사이즈는 넓이 88픽셀에 높이 31픽셀이다. 하지만 로고를 144*400 픽셀까지 늘릴 수 있다. 다음은 이미지 엘리먼트 샘플이다:


Listing 4. 이미지 엘리먼트
				
<image>
  <title>
MozillaZine
</title>

<url> http://www.mozillazine.org/image/mynetscape88.gif </url>
<link> http://www.mozillazine.org </link>
<width> 88 </width>
<height> 31 </height> </image>

이미지의 title, URL, link, width, height 태그들은 파일을 HTML로 변환할 수 있도록 해준다. title 태그는 이미지의 ALT 텍스트에 사용된다. 가능한 이미지를 88 x 31 또는 이것 보다 작게 유지해야 한다. 많은 렌더러(renderer)들이 채널을 100 픽셀 정도로 고정된 넓이의 테이블로 변환하기 때문이다. 더 큰 그래픽은 테이블이 비정상적으로 깨지게 하거나, 이미지가 잘릴 수 있다.

아이템

채널에서 가장 중요한 엘리먼트인 아이템은 RSS 파일의 동적인 부분을 구성한다. 채널, 이미지, 텍스트 인풋 엘리먼트가 채널의 정체성을 만들고, 오랜 시간 동안 똑 같은 모습을 유지하는 반면, 채널 아이템은 뉴스 헤드라인에 따라 변하고, 채널 값은 자주 변한다. 다음은 채널 아이템 예제이다:


Listing 5. 아이템 엘리먼트
				
<item>
  <title>
Java2 in Navigator 5?
</title>

<link> http://www.mozillazine.org/talkback.html?article=607 </link>
<description>Will Java2 be an integrated part of Navigator 5? Read more about it in this discussion...</description> </item>

15개의 아이템이 채널에 허용된다. 대부분의 사람들은 채널들을 사용하여 최신 웹 콘텐트를 배포하기 때문에 이는 합리적인 한계치이다. 타이틀은 100 문자 이하가 되어야 하지만, 디스크립션은 500 문자 이하로 제한된다. 아이템 타이틀은 URL과 함께 전체 기사로 연결되는 헤드라인으로 렌더링 된다. 아이템 디스크립션은 기사 내용의 요약 또는 기사에 대한 논평에 사용된다. 뉴스 피드 채널은 이 디스크립션을 사용하여 주로 채널 소유자의 사이트에서 뉴스 기사의 내용을 강조하고, 웹 로그 채널은 이 디스크립션을 사용하여, 주로 서드 파티 사이트에서 다양한 콘텐트에 대해 논평을 제공한다.

RSS 포맷의 많은 장점은 아이템 엘리먼트에 다 있다. 위 예제에서도 보듯, 아이템들은 개발자가 정의하기도 쉽고, 사용자들이 읽기도 쉽다.

텍스트 인풋

텍스트 인풋 영역은 선택 엘리먼트이다. 채널 당 단 한 개만 허용된다. HTML 폼으로 렌더링 되며, 텍스트 인풋은 사용자가 반응할 수 있게 되어있다. 이 기능을 사용하여 사용자들이 뉴스레터를 등록하거나 사이트를 검색할 수 있다. 다음은 텍스트 인풋 엘리먼트 예제이다:


Listing 6. 텍스트 인풋 엘리먼트
				
<textinput>
  <title>
Send
</title>

<description> Comments about MozillaZine? </description>
<name> responseText </name>
<link> http://www.mozillazine.org/cgi-bin/sampleonly.cgi </link> </textinput>

타이틀은 폼의 제출 버튼의 레이블로 렌더링 되고, 디스크립션은 인풋 필드 앞이나 위에 디스플레이 되는 텍스트로 렌더링 된다. 텍스트 인풋 이름은 제출 버튼이 클릭되면, 텍스트 필드의 콘텐트와 함께 제공된다.

RSS 파일에는 네 가지 주요 엘리먼트가 있다. 이미지, 아이템, 텍스트 인풋 엘리먼트를 추가한 후에는, </channel> 태그를 사용하여 채널을 닫고, </rss> 태그를 사용하여 RSS 파일을 닫아야 한다.

RSS 1.0 스팩에는 모듈이 도입되었다. 이로써, RSS가 스팩을 재작성 하지 않고도 추가 정보를 수용할 수 있을 정도로 확장되었다. 예를 들어, 모듈을 작성하여 풍부한 미디어를 광역 클라이언트용 채널에 추가하지만, 표준 클라이언트는 여전히 헤드라인과 디스크립션을 보게 된다. 1.0 스팩이 구현되면 이들을 최대한 활용하기 위해서는 모듈에 대해 알아야 한다.




위로


RSS 파일 작성하기

RSS 파일을 작성하는 여러 가지 방법들이 있다. RSS 파일은 매우 단순하기 때문에, 텍스트나 XML 에디터를 사용하여 쉽게 만들어 질 수 있다. 또한, 커스텀 RSS 파일을 온라인에서 만들 수 있게 해주는 웹 폼을 가진 사이트도 있다. 마지막으로, RSS 파일을 자동으로 만들 수 있다. Java, PHP, Perl용 오픈 소스 툴이 도움이 된다. (참고자료)

간단한 RSS 파일을 만들었다면, 이것에 대한 유효성 검사를 해야 한다. Netscape 사이트에서 할 수 있다. (참고자료) RSS 파일을 웹 사이트의 공개적으로 액세스 할 수 있는 부분에 게시하고, Netscape 사이트로 가서, URL을 등록하면, 밸리데이터가 파일의 호환성을 검사할 것이다.




위로


RSS 파일 전개하기

웹 사이트에 유효 RSS 파일이 생겼다면, 콘텐트를 신디케이트 해야 한다. 퍼블리쉬/등록 방식으로 이를 수행할 수 있다. 정보를 퍼블리쉬하고, 원하는 누구나 등록할 수 있도록 하거나, Moreover 또는 Userland 같은 콘텐트 애그리게이터에 URL을 제출할 수 있다. 애그리게이터는 다양한 사이트에서 콘텐트를 가져다가, 이를 피드에 전개한다. 사이트 정보는 다양한 공급자들의 콘텐트와 혼합될 수 있고, 애그리게이터는 배포 영역을 확장한다.

인트라넷 또는 익스트라넷 상에 사적으로 배포할 때도 RSS 파일을 사용할 수 있다. RSS 파일은 단순하기 때문에 다양한 시스템에 퍼블리쉬 할 수 있는 좋은 방법이다.




위로


RSS 파일 파싱(parse)하기

RSS 파일로 작업을 시작하면, 파일을 개별 정보 단위로 파싱해야 한다. Java, Perl, PHP, ASP로 작성된 다양한 오픈 소스 툴을 사용할 수 있다. 파서는 XML 텍스트의 스트림을 읽고, 오프닝과 클로징 태그를 구분하고, 각 태그로 둘러싸인 텍스트를 찾고, 파싱 된 정보로 작업할 핸들을 만든다. 파싱 되면, 정보는 동적으로 생성된 페이지에 결합된다.

Listing 7은 RSS 파일을 읽는 간단한 Perl 프로그램을 보여준다. Perl을 작성하지 않더라도, 이 예제는 여러분의 환경에서 사용할 때 어느 정도 도움이 될 것이다.

Perl은 RSS 파일을 조작하는 대단한 언어이다. 상당히 많은 오픈 소스 코드가 있다. Jonathan Eisenzopf는 XML::RSS 모듈을 개발했다. 이것이 RSS 파일을 읽고 파싱한다. 이 파서를 활용하려면 XML::Parser 모듈이 필요하다. 이 두 개의 Perl 모듈은 CPAN에서 무료로 사용할 수 있다. (참고자료).

다음은 XML:RSS 사용 예제이다:


Listing 7. XML::RSS를 사용하는 Perl
				
# Setup includes
use strict;
use XML::RSS;
use LWP::Simple;
# Declare variables for URL to be parsed
my $url2parse;
# Get the command-line argument
my $arg = shift;
# Create new instance of XML::RSS
my $rss = new XML::RSS;
# Get the URL, assign it to url2parse, and then parse the RSS content
$url2parse = get($arg);
die "Could not retrieve $arg" unless $url2parse;
$rss->parse($url2parse);

이 코드 샘플은 파싱을 위해 URL을 Perl로 보낸다. 파싱 되면, RSS 파일의 엘리먼트는 여러 가지 방법으로 사용될 수 있다. 예를 들어, RSS 아이템들을 사용하여 헤드라인 리스트를 만들 수 있다:


Listing 8. Perl로 헤드라인 만들기
				
# Print the channel items
foreach my $item (@{$rss->{'items'}}) {
     next unless defined($item->{'title'}) && defined($item->{'link'});
     print "<li><a href=\"$item->{'link'}\">$item->{'title'}</a><BR>\n";
}

이 샘플은 RSS 아이템들의 어레이를 순환하면서, 각 아이템에 타이틀과 링크가 있는지를 확인한다. 불완전한 아이템은 건너뛴다. 완전한 아이템은 링크가 걸린 헤드라인 리스트에 추가된다.

XML::RSS 모듈을 사용하려면, 텍스트 에디터를 열고 이것을 읽어야 한다. 효과적으로 사용할 수 있는 방법이 설명되어 있다.

직접 RSS 파일을 만들다 보면, 활용 방법이 많다는 것을 알게 된다. 예를 들어, 사이트가 업데이트 될 때 마다 RSS 요약을 만드는 스크립트를 작성하거나, 다른 사이트에서 주기적으로 뉴스를 검색하여 자신의 뉴스 페이지를 자동으로 업데이트 하는 스크립트를 만들 수 있다. (스크립트 작성법은 다른 글을 참조하라. 참고자료 섹션에 RSS 요약을 자동으로 생성하는 유용한 툴 리스트를 제공한다.)

RSS 파일의 생성 및 사용 방법을 설명했다. 참고자료 섹션에서 자세한 내용을 참고하기 바란다. RSS 파일, RSS 스팩, 헤드라인을 게시할 수 있는 장소 등 다양한 정보를 찾을 수 있다.

기사의 원문보기



참고자료

교육

제품 및 기술 얻기


필자소개

James Lewin은 1995년부터 인터넷을 다루었지만 2000년까지는 무선을 사용하지 않았다. 네트워킹 및 인터넷 솔루션을 제공하는 The Lewin Group의 회장이다. Microsoft와 오픈 소스 인터넷 개발 툴로 작업하는 MCSE이다.




기사에 대한 평가


보다 나은 서비스를 제공하기 위함이오니 잠시 짬을 내어 이 양식을 제출하여 주십시오.



아니오잘 모르겠음
 


 


12345
 



위로


developerWorks 콘텐트를 다른 사이트에 전재하기:
developerWorks 콘텐트에 대한 저작권은 IBM에 있습니다. IBM의 서면 허가나 원본 저자의 허락이 없이는 전재를 금합니다. 저희 콘텐트를 전재하시려면 IBM developerWorks 담당자 에게 문의하십시오.

    IBM 소개개인정보 보호정책문의