'번역본'에 해당되는 글 2건

  1. 2007.01.31 [번역] iTunes RSS Extension 1
  2. 2007.01.30 [번역] RSS2.0 Specification 3


iTunes의 Podcast를 위한 RSS extension에 대한 규격을 번역해보았습니다.
(사실 번역의 대상이 되는 문장은 많지 않군요.)

정확히는 RSS 2.0에서 확장 태그를 필요로 하는 경우를 위하여 XML namespace를 이용한 확장을 허용하고 있으며 Apple에서 iTunes RSS 라는 이름으로 몇가지 태그를 정의하고 있습니다.

대략 iTunes Application의 UI 상에서 보여질 필드들을 정의하고 있다고 보면 됩니다.
미국의 대부분의 뉴스 사이트들이 Podcast를 위한 피드를 제공하고 있고 미국내 가장 유명한 DVR 서비스인 Tivo에서도 iTunes를 지원한다고 합니다.

RSS를 활용한 미디어 데이터의 배포는 이제 거의 표준화의 단계에 들어서나 봅니다.

삼성전자가 최근에 야심차게 내놓은 SMS (Samsung Multimedia Studio) 서비스는 다른 모습은 거의 iTunes를 따라잡았다고 보입니다만, 조금은 아쉬운 것이 Podcast는 iPod의 전유물이 아님에도 불구하고 SMS에서 지원하지 않는다는 것입니다.
국내는 모르겠지만 북미 시장에서는 Podcast가 없는 MP3 지원 소프트웨어는 얼마나 경쟁력이 있을까 걱정입니다...

본 스펙의 원 출처는 Apple입니다.

http://phobos.apple.com/static/iTunesRSS.html

===================================================================================================

How To Publish a Podcast on the iTunes Music Store

Last Modified: 2005-07-07

iTunes RSS Tags

iTunes는 RSS 2.0 규격에 몇가지 추가 태그를 확장하여 사용하며, iTunes 태그를 사용하기 위해서는 아래와 같은 namespace 선언을 RSS Feed에 명시하여야 한다.

<rss xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd" version="2.0">

UTF-8 인코딩을 사용하여야 하며, 다른 인코딩을 사용할 경우 iTunes 내에서 올바르게 보여질 것을 보장할 수 없다.

모든 태그 값들은 플레인 텍스트(마크업 혹은 HTML이 아닌)이어야 한다. 4000자까지 사용가능한 <itunes:summary> 태그를 제외하고는 모든 태그 값은 255자를 넘길 수 없다. 공백(whitespace)는 iTunes 내에서 그대로 보여지기 때문에 태그 값 앞이나 뒤에 필요없는 공백을 넣지 말아야 한다.

다음은 태그별로 channel(podcast)에 적용되는 것과 각 item별로 적용되는 것에 대한 구분 및 각 태그가 iTunes 어플리케이션 내에서 어떻게 보여지는가를 설명한다:

xml tag

channel

item

where content appears in iTunes

<title>

Y

Y

Name column

<link>

Y


website link and arrow in Name column

<copyright>

Y


in the iTunes Music Store

<pubDate>


Y

Release Date column

<itunes:author>


Y

Artist column

<itunes:block>

Y

Y

prevent an episode or podcast from appearing

<itunes:category>

Y

Y

Category column and in iTunes Music Store Browse

<itunes:duration>


Y

Time column

<itunes:explicit>

Y

Y

parental advisory graphic in Name column

<itunes:keywords>

Y

Y

not visible but can be searched

<itunes:owner>

Y


not visible, used for contact only

<itunes:subtitle>

Y

Y

Description column

<itunes:summary>

Y

Y

when (circled i) in Description column is clicked


Details for tags used by iTunes
<enclosure>이 태그의 url 속성 내에 있는 파일 확장자는 이 item이 Podcast 디렉토리에 보여져야하는 item인가를 결정하는데 사용된다. 지원하는 확장자는 "m4a", "mp3", "mov", "mp4", "pdf"이다.

<guid>모든 <item>은 guid(globally unique identifier)를 가지며 이 값은 절대 변하지 않아야 한다. Feed에 새로운 에피소드를 추가할 때 guid를 넣어줌으로써 해당 에피소드가 새로운 것인가를 결정할 수 있게 해준다. guid의 비교는 대소문자를 구분한다. 만약 에피소드에 대한 guid가 주어지지 않는 경우 에피소드의 url이 guid로 대신 사용된다.

<itunes:author>이 태그의 값은 iTunes 안에서 Artist 컬럼에 보여진다.

<itunes:block><item> element 안에 이 태그가 사용되면 해당 에피소드가 iTunes Podcast 디렉토리에 보여지지 않으며, <channel> element 안에 이 태그가 있는 경우 해당 전체 podcast가 iTunes Podcast 디렉토리에서 보여지지 않는다.

<itunes:category>iTunes Music Store에서 Podcast를 브라우징할 때 Category는 두번째 컬럼에 보여지며, Subcategory는 세번째 컬럼에 보여진다. 모든 Category가 Subcategory를 가지지는 않는다.

최상위 <itunes:category>는 컨텐츠 카테고리(Browse Category)를, 그 내부에 다시 나타나는(nested) <itunes:category>는 섭 카테고리(SUb Category)를 나타내는데 사용된다. Category의 값은 현재 iTunes Music Store에서 제공되는 카테고리와 서브 카테고리 중에서 선택한다.

서브 카테고리인 <itunes:category>가 명시된 경우, iTunes는 Category 컬럼에 이 서브 카테고리를 보여주며, 그렇지 않은 경우에는 최상위 <itunes:category> 값을 Category 컬럼에 보여준다.

<itunes:duration>이 태그의 값은 iTunes의 Time 컬럼에 보여진다.
태그 값의 형식은 HH:MM:SS, H:MM:SS, MM:SS, 혹은 M:SS 가 될 수 있다. (H = hours, M = minutes, S = seconds)

<itunes:explicit>이 태그는 이 Podcast가 'explicit material'을 포함하고 있는가의 여부를 명시한다.(역자주: explicit material의 의미??)

이 태그가 가질 수 있는 값은 “yes”와 “no” 두가지다.
태그 값이 "yes"의 경우, iTuns Music Store에서 해당 Podcast의 artwork 뒤에 'parental advisory graphic'이 나타나며, 또한 iTunes의 Name 컬럼에도 나타난다.

(역자주: iTunes의 화면 구성을 이해해야 알 수 있는 내용인 듯 합니다..--;;)

<itunes:keywords>이 태그는 텍스트 키워드 검색 시 검색 대상이 되는 값이다.
키워드간에는 공백을 사용하여 구분한다.

<itunes:image>이 태그는 해당 Podcast의 대표 이미지(artwork)를 나타내며, href 속성에 해당 이미지에 대한 url을 명시한다.

iTunes에서는 최소 300 x 300 픽셀의 사각형 이미지를 선호한다.
이것이 표준 RSS image 태그의 정의와 다른 점이며, 이에 별도의 커스텀 태그를 정의하는 것이다.

iTunes는 JPEG과 PNG 포맷의 이미지를 지원하며, 이미지에 대한 url은 반드시 “.jpg” 혹은 “.png” 로 끝나야 한다.

<itunes:owner>이 태그는 해당 Podcast의 오너와의 커뮤니케이션을 위해 필요한 정보를 포함하며, 공개적으로 보여지지는 않는다.

이 태그 내부(nested)의 <itunes:email> element에는 email 주소를, <itunes:name> element에는 owner의 이름을 넣는다.

<itunes:subtitle>이 태그의 값은 iTunes의 Description 컬럼에 보여진다.

<itunes:summary>이 태그의 값은 iTunes의 Description 컬럼에 있는  (circled i)를 클릭하였을 때 나타나는 팝업 윈도우에서 보여진다. 또한 해당 postcast에 대한 iTunes Music Store 페이지에서도 보여진다. 이 필드의 값은 최대 4000자까지 가능하다.

Sample RSS 2.0 feed that includes the iTunes tags
<?xml version="1.0" encoding="UTF-8"?>
<!-- must include xmlns:itunes tag -->
<rss xmlns:itunes="http://example.com/DTDs/Podcast-1.0.dtd" version="2.0">
<channel>

<title>All About Everything</title>
<itunes:author>John Doe</itunes:author>
<link>http://example.com/podcasts/everything/index.html</link>
<itunes:subtitle>A show about everything</itunes:subtitle>
<itunes:summary>All About Everything is a show about everything. Each week we dive into any subject known to man and talk about it as much as we can. Look for our Podcast in the iTunes Music Store</itunes:summary>
<language>en-us</language>
<copyright>&#x2117; &amp; &#xA9; 2005 John Doe &amp; Family</copyright>
<itunes:owner>
    <itunes:name>John Doe</itunes:name>
    <itunes:email>john.doe@example.com</itunes:email>
</itunes:owner>

<!-- iTunes prefers square images 300x300 pixels or larger -->
<itunes:image href="http://example.com/podcasts/everything/AllAboutEverything.jpg" />

<!-- iTunes Browse Podcasts Category -->
<itunes:category text="Technology">
    <!-- iTunes Browse Podcasts Subcategory -->
    <itunes:category text="Gadgets"/>
</itunes:category>

<item>
    <title>Shake Shake Shake Your Spices</title>
    <itunes:author>John Doe</itunes:author>
    <itunes:subtitle>A short primer on table spices</itunes:subtitle>
    <itunes:summary>This week we talk about salt and pepper shakers, comparing and contrasting pour rates, construction materials, and overall aesthetics. Come and join the party!</itunes:summary>
    <enclosure url="http://example.com/podcasts/everything/AllAboutEverythingEpisode3.m4a" length="8727310" type="audio/x-m4a" />
    <guid>http://example.com/podcasts/archive/aae20050615.m4a</guid>
    <pubDate>Wed, 15 Jun 2005 19:00:00 GMT</pubDate>
    <itunes:category text="Food">
    <itunes:duration>7:04</itunes:duration>
    <itunes:keywords>salt pepper shaker exciting</itunes:keywords>
</item>

<item>
    <title>Socket Wrench Shootout</title>
    <itunes:author>Jane Doe</itunes:author>
    <itunes:subtitle>Comparing socket wrenches is fun!</itunes:subtitle>
    <itunes:summary>This week we talk about metric vs. old english socket wrenches. Which one is better? Do you really need both? Get all of your answers here.</itunes:summary>
    <enclosure url="http://example.com/podcasts/everything/AllAboutEverythingEpisode2.mp3" length="5650889" type="audio/mpeg" />
    <guid>http://example.com/podcasts/archive/aae20050608.mp3</guid>
    <pubDate>Wed, 8 Jun 2005 19:00:00 GMT</pubDate>
    <itunes:category text="Technology">
        <itunes:category text="Gadgets"/>
    </itunes:category>
    <itunes:duration>4:34</itunes:duration>
    <itunes:keywords>metric socket wrenches tool</itunes:keywords>
</item>

<item>
    <title>Red, Whine, &amp; Blue</title>
    <itunes:author>Various</itunes:author>
    <itunes:subtitle>Red + Blue != Purple</itunes:subtitle>
    <itunes:summary>This week we talk about surviving in a Red state if you're a Blue person. Or vice versa.</itunes:summary>
    <enclosure url="http://example.com/podcasts/everything/AllAboutEverythingEpisode1.mp3" length="4989537" type="audio/mpeg" />
    <guid>http://example.com/podcasts/archive/aae20050601.mp3</guid>
    <pubDate>Wed, 1 Jun 2005 19:00:00 GMT</pubDate>
    <itunes:category text="Politics">
    <itunes:duration>3:59</itunes:duration>
    <itunes:keywords>politics red blue state</itunes:keywords>
</item>

</channel>
</rss>

자주 하는 실수들(Common Mistakes)
* <pubDate> 태그에 사용되는 'date'나 'time'의 포맷이 RFC 2822를 따르지 않는 실수.

'date' 포맷은 반드시 "day-of-week, day month year"이어야 한다.
'time' 포맷은 반드시 24 시간 포맷으로서 AM이나 PM을 포함하지 않으며, 또한 타임존(time zone)에 대한 오프셋(offset)을 포함하여야 한다.

<!-- date and time not in RFC 2822 format -->
<pubDate>7/6/2005 1:00:00 PM</pubDate>

<!-- valid date and time format -->
<pubDate>Wed, 6 Jul 2005 13:00:00 PDT</pubDate>
<pubDate>Wed, 6 Jul 2005 13:00:00 -0700</pubDate>

* 엠퍼샌드(ampersand)에 대한 Escape를 빠뜨리는 실수

<!-- illegal xml -->
<title>Food & Wine</title>

<!-- valid xml -->
<title>Food &amp; Wine</title>

* HTML의 "named character"를 사용하는 실수

<!-- illegal xml -->
<copyright>&copy; 2005 John Doe</copyright>

<!-- valid xml -->
<copyright>&#xA9; 2005 John Doe</copyright>

HTML과는 달리 XML은 단지 다섯개의 "named character entities"만을 지원한다.

character

name

xml

&

ampersand

&amp;

<

less-than sign

&lt;

>

greater-than sign

&gt;

'

apostrophe

&apos;

"

quotation

&quot;


XML에서는 위의 다섯개의 문자에 대해서만 escape 처리가 필요하다. 이외의 모든 문자는 UTF-8을 지원하는 에디터에서 직접 입력하여 사용할 수 있다. 또한 해당 문자에 대한 Unicode를 카리키는 숫자로 된 참조값(numeric character reference)를 사용할 수 있다. 다음은 그 예이다:

character

name

xml

copyright sign

&#xA9;

?

sound recording copyright

&#x2117;

trade mark sign

&#x2122;


이런 방식의 참조에 대한 더 많은 내용은 다음을 참고한다: XML Character and Entity References

Posted by Golmong
:


예전에 개인적 참조를 위해 번역했던 RSS 2.0 규격입니다.
공표나 배포의 목적이 아닌 개인적인 목적임을 밝히며,
RSS 2.0 규격의 공식적인 Owner 사이트는 다음과 같습니다.

 
http://blogs.law.harvard.edu/tech/rss

번역본에 대한 저작권이 어떻게 되는지는 모르겠으나, 암튼 필요하시면 누구나 활용하셔도 좋습니다....
============================================================================

RSS 2.0 Specification

Contents

What is RSS? 

RSS Directory
About this website
Specifications
Feeds
Aggregators
Validators
Howtos/Articles
Tools
Utilities
RSS는 웹 컨텐츠를 배급/배포하기 위한 포맷이며, RSS란 이름은 'Really Simple Syndication'의 약자이다.

RSS는 XML로 표기된 데이터이며 모든 RSS 파일은 반드시 World Wide Web Consortium(W3C)에서 정의한 XML1.0 규격을 준수하여야 한다.

RSS version history에서 RSS 버전의 히스토리를 볼 수 있다

RSS 문서는 가장 상위 레벨로서 <rss> element를 가지며 이 태그 안에는 해당 RSS 문서가 준수하는 RSS 버전을 알려주는 version 속성을 포함한다. 이 규격을 만족하는 RSS 문서의 경우 version 속성의 값은 반드시 2.0이어야 한다.

<rss> element는 하나의 <channel> element를 가지며, 이 element는 특정 channel에 대한 정보와 해당 channel의 컨텐츠들에 대한 정보를 가지고 있다.

Sample files 

RSS 버전에 따른 샘플 파일은 RSS 0.91, 0.92, 2.0에서 각각 얻을 수 있다.

About this document 

이 문서는 2002년 가을 시점의 버전 2.0.1에 대한 RSS의 status를 다루고 있으며, RSS 0.91 (June 2000)을 기본으로 하여  RSS 0.92 (December 2000) 및 RSS 0.94(August 2002)에서 소개된 새로운 Feature들을 포함하고 있다.

변경 이력은 Change Notes에서 볼 수 있다.

이문서에서는 첫번째로 <channel> element가 가지는 필수 sub-element와 부가적인 sub-element에 대하여 기술하며, 두번째로는 <item>의 sub-element를 다룬다. 마지막 부분에서는 FAQ, 향후 로드맵, 그리고 RSS를 확장하기 위한 가이드라인을 제시한다.

Required channel elements 

다음은 <channel> element가 가지는 필수(Required) sub-element들에 대하여 기술한다.

Element Description Example
title 해당 channel의 이름으로서 다른 사용자가 이 서비스를 참조하기 위한 이름이다. 만약 RSS 파일가 가진 정보를 동일하게 가지는 HTML로 이뤄진 웹사이트가 있다면 channle의 title은 해당 웹사이트의 title 값과 동일하여야 한다. GoUpstate.com News Headlines
link 해당 channel에 대응되는 HTML 웹사이트의 URL이다. http://www.goupstate.com/
description       해당 channel을 설명하기 위한 구절 혹은 문장이다. The latest news from GoUpstate.com, a Spartanburg Herald-Journal Web site.


Optional channel elements 

다음은 <channel>이 가지는 부가적인(Optional) sub-element들에 대하여 기술한다.

Element Description Example
language 해당 channel이 작성된 언어. 이를 이용하여 사용자가 특정 언어로 작성된 사이트들을 그룹핑하는 것도 가능하다. 사용가능한 value는 Netscape에서 제공하는 링크(here)에서와 같다. 또한 W3C에서 정의한 값들(values)을 사용할 수도 있다. en-us
copyright Channel 안의 컨텐트에 대한 Copyright Copyright 2002, Spartanburg Herald-Journal
managingEditor 해당 컨텐트에 대한 편집상의 책임을 가진 사람에 대한 메일 주소 geo@herald.com (George Matesky)
webMaster 해당 Channle과 관련된 기술적 이슈에 대한 책임을 가진 사람의 메일 주소. betty@herald.com (Betty Guernsey)
pubDate Channle 내의 각 컨텐츠가 publish된 날짜. 예를 들어 New York Times는 일간이므로 매 24시간마다 한번씩 publish 하며 그 시간이 pubDate가 된다. RSS 규격에서 사용되는 모든 date-time 형식은 RFC 822에서 정의한 Date와 Time 규격을 따라야 한다. 단 year 값이 두자 혹은 네자로 표현될 수 있다(RFC 822에서는 두자리이다). Sat, 07 Sep 2002 00:00:01 GMT
lastBuildDate channel 내의 컨텐츠가 마지막으로 변경된 시간. Sat, 07 Sep 2002 09:42:31 GMT
category channel이 속하는 카테고리를 하나 이상 명시한다. <item> 내의 category  element와 동일한 규칙을 따른다. More info. <category>Newspapers</category>
generator channel을 생성하는데 사용된 프로그램을 명시하는 스트링. MightyInHouse Content System v2.3
docs 해당 RSS 파일 안에 사용된 포맷에 대한 문서의 위치를 가리키는 URL. 이 페이지와 같은 RSS 규격에 대한 URL이 될 수 있다. http://blogs.law.harvard.edu/tech/rss
cloud 해당 channel이 갱신되었음을 통보(notified) 받게 될 리스트에 등록하는 절차를 제공한다. More info here. <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/>
ttl ttl은 'time to live'를 의미한다. channel이 소스로부터 refresh하기 이전에 얼마나 캐쉬되어질 수 있는가를 분단위로 표시한다. (It's a number of minutes that indicates how long a channel can be cached before refreshing from the source). More info here. <ttl>60</ttl>
image 해당 channel과 함께 보여질 이미지를 명시한다. 이미지의 형식은 GIF, JPEG 혹은 PNG 이다. More info here.
rating channel에 대한 PICS rating.
textInput channel과 함께 보여질 텍스트 입력 상자를 명시한다. More info here.
skipHours 수집기(Aggregator)에게 수집을 건너뛰어도 될 시간을 알려준다. More info here.
skipDays 수집기에게 수집을 건너뛰어도 될 요일을 알려준다. More info here.


<image> sub-element of <channel> 

<image>는 <channel>의 필수가 아닌 부가 sub-element로서, 다시 세개의 필수 sub-element와 세개의 부가 sub-element를 가진다.

<url>은 해당 channel에 대한 이미지GIF, JPEG 혹은 PNG)의 URL이다.

<title>은 이미지에 대한 설명으로서, channel에 대한 내용이 HTML로 표현될 때 HTML의 <img> 태그의 ALT 속성으로 사용되는 값이다.

<link>는 channel에 대한 사이트의 URL로서, HTML로 표현될 때 이미지에 걸려지는 사이트 링크로 사용된다.

부가적인 sub-element로서 이미지의 넓이와 높이를 픽셀 단위로 표현하는 <width>와 <height>가 있다.
<description>은 HTML에서 해당 이미지에 걸려지는 링크의 TITLE 속성으로 사용되는 텍스트이다.

width의 최대 값은 144이며 디폴트는 88이다.
width의 최대 값은 400이며 디폴트는 31이다.

<cloud> sub-element of <channel> 

<cloud>는 <channel>의 부가 sub-element이다.

HTTP-POST, XML-RPC 혹은 SOAP 1.1에서 구현되어질 수 있는 rssCloud 인터페이스를 지원하는 웹 서비스를 명시한다. (It specifies a web service that supports the rssCloud interface which can be implemented in HTTP-POST, XML-RPC or SOAP 1.1.)

이 sub-element의 목적은 channel이 갱신되었음을 알려주는 대상 리스트에 등록할 수 있는 절차(process)를 명시하는 것이다.

<cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="myCloud.rssPleaseNotify" protocol="xml-rpc" />

위의 예에서, 해당 channel의 갱신을 통보받기 위해서는 'rpc.sys.com'의 80번 포트의 '/RPC2/'에 XML-RPC 메시지를 전송하면 된다. 호출하는 프로시져는  'myCloud.rssPleaseNotify'이다..

이 element와 rssCloud 인터페이스에 대한 전체 설명은 here를 참조한다.

<ttl> sub-element of <channel> 

<ttl>는 <channel>의 부가 sub-element이다.

ttl은 'time to live'를 의미하며, channel이 소스로부터 refresh하기 이전에 얼마나 캐쉬되어질 수 있는가를 분단위로 표시한다. 이는 RSS 소스가 Gnutella와 같은 파일 공유 네트워크에 의하여 관리될 수 있도록 해준다.

예: <ttl>60</ttl>

<textInput> sub-element of <channel> 

<textInput>은 부가 <channel>의 sub-element이며, 4개의 필수 sub-element를 포함한다.

<title> -- 텍스트 입력 상자의 Submit 버튼의 라벨.

<description> -- 텍스트 입력 상자에 대한 설명

<name> -- 텍스트 오브젝트의 이름

<link> -- 텍스트 입력 요청을 처리하는 CGI 스크립트의 URL

<textInput> element의 목적이 모호한데, 이를 검색엔진 박스를 명시하는데 사용하거나 리더로 하여금 피드백을 제공할 수 있게 하는데 사용할 수 있다. 대부분의 Aggregator들은 이를 무시한다.


Elements of <item> 


하나의 channel이 가질 수 있는 <item>의 수는 제한이 없다. 하나의 item은 하나의 "story"를 표현한다고 할 수 있는데, 신문이나 잡지의 한 story의 개념에 해당하며, 이때 item의 description은 story의 줄거리를, link는 전체 story에 대한 위치를 의미한다. item의 description에 전체 HTML(entity-encoded HTML이 들어갈 수 있다. see examples)을 넣음으로써 item 자체로 story를 완성할 수도 있는데, 이경우에 link와 title은 생략될 수 있다. item이 가지는 모든 element들은 필수가 아니지만(optional), title이나 description 중 적어도 하나는 존재하여야 한다.  

Element Description Example
title 해당 item의 제목 Venice Film Festival Tries to Quit Sinking
link 해당 item에 대한 전문이 있는 URL http://nytimes.com/2004/12/07FEST.html
description     해당 item의 줄거리(synopsis) Some of the most heated chatter at the Venice Film Festival this week was about the way that the arrival of the stars at the Palazzo del Cinema was being staged.
author 해당 item 작성자의 Email 주소. More.
category 해당 item을 하나 이상의 카테고리로 분류. More.
comments 해당 item과 관련한 코멘트들을 볼 수 있는 페이지의 URL. More.
enclosure 해당 item에 포함되어 있는 미디어 개체에 대하여 기술한다. More.
guid 해당 item을 유일하게 구분해주는 구분자. More.
pubDate 해당 item이 발행(publish)된 시간. More.
source 해당 item의 출처가 되는 RSS channel. More.


<source> sub-element of <item> 

<source>는 <item>의 부가(ptional) sub-element 이다.

<source>에는 해당 item의 출처가 된 RSS channel의 이름을 값으로 가지며, 이 이름은 그 출처 RSS channel 내의 <title> element에 해당된다. 속성으로는 필수 속성인 url를 가지며, url 속성의 값은 해당 소스에 대한 XML의 위치를 가리킨다.

<source url="http://www.tomalak.org/links2.xml">Tomalak's Realm</source>

이 element의 목적은 뉴스 item에 대한 출처를 공시함으로써 링크에 대한 신뢰성을 높이기 위한 것이다. 또한 aggregator의 Post 명령에서 사용될 수 있는데, aggregator에서 웹블로그(weblog)의 저작 툴로 item을 포워딩할 때 반드시 자동으로 생성되어져야 한다.

<enclosure> sub-element of <item> 

<enclosure>는 <item>의 부가 sub-element이다.

이 element는 세개의 필수 속성인 url, length, type을 가진다.
url은 해당 enclosure의 위치를 표시하며, length은 바이트 단위의 크기를, type은 어떤 표준 MIME 타입인가를 알려준다.

url은 반드시 http url이어야 한다.

<enclosure url="http://www.scripting.com/mp3s/weatherReportSuite.mp3" length="12216320" type="audio/mpeg" />

다음의 링크는 이 element의 사용에 대한 사용 예이다. here.

<category> sub-element of <item> 

<category>는 <item>의 부가 sub-element이다..

가질 수 있는 속성은 부가 속성인 domain 한가지이며, 이는 카테고리 분류를 표현하는 스트링값이다.domain의 값은 해당 분류(category)에 대한 트리 구조 안에서의 위치(hierarchic location)를 알려준다. 이를 처리하는 주체(Processor)는 category를 해석하는 방식(convention)을 규정할 수도 있다. 다음은 두가지의 예이다.

<category>Grateful Dead</category>

<category domain="http://www.fool.com/cusips">MSFT</category>

필요한 만큼의 각각 다른 도메인들에 대한 category를 포함시킬 수 있으며, 동일 도메인 내의 각기 다른 파트를 참조하는 item들이 존재할 수도 있다. (You may include as many category elements as you need to, for different domains, and to have an item cross-referenced in different parts of the same domain.)

<pubDate> sub-element of <item> 

<pubDate>는 <item>의 부가 sub-element이다.

해당 item이 발행된(published) 시간을 표시하는 date이다. 만약 이 시간이 현재보다 미래인 경우, aggregator는 그 시간이 될 때까지 해당 item을 보이지 않도록 할 수 있다(may).

<pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>

<guid> sub-element of <item> 

<guid>는 <item>의 부가 sub-element이다.

guid는 'globally unique identifier'를 의미하며, 해당 item를 유일하게 구분지어주는 구분자이다. guid가 존재하는 경우에, aggregator는 그 item이 새로운 item인가를 판단하는데 guid를 사용할 수 있다.

<guid>http://some.server.com/weblogItem3207</guid>

guid의 표현방식(syntax)에는 아무런 규칙이 없으며, aggregator는 guid를 스트링으로 인식하여야 한다. guid의 유일성은 해당 RSS 피드를 생성하는 주체가 보장하여야 한다.

만약 guid가 "isPermaLink"라는 속성을 가지고 그 값이 참(true)이라면, RSS Reader는 이 guid가 해당 item에 대한 permalink라고 여길 수 있다. 즉, guid의 값이 해당 item에 대한 Full Story를 가리키는 웹페이지(웹브라우저에서 열려지는)에 대한 url이 된다. 예를 들면 다음과 같다:

<guid isPermaLink="true">http://inessential.com/2002/09/01.php#a2</guid>

isPermaLink 속성은 필수가 아니며(optional), 디폴트 값은 참(true)이다. 이 속성의 값이 거짓(false)인 경우 guid는 무언가를 가리키는 url이 아니라고 판단하여야 한다.

<comments> sub-element of <item> 

<comments>는 <item>의 부가 sub-element이다.

해당 item에 대한 코멘트 페이지에 대한 url을 표시한다.

<comments>http://ekzemplo.com/entry/4403/comments</comments>

다음의 링크에 코멘트에 대한 상세한 내용이 있다. here.

<author> sub-element of <item> 

<author>는 <item>의 부가 sub-element이다.

해당 item 저자(author)의 email 주소이다. RSS을 이용한 신문이나 잡지의 경우 저작자는 해당 <item>이 설명하는 기사를 작성한 사람이 될 수 있다. 공동으로 사용하는 블로그와 같은 경우 저작자는 관리편집자나 웹마스터와 다른 사람일 수 있다. 한 개인만이 사용하는 블로그의 경우 <author>를 사용하지 않는 것이 적절하다.

<author>lawyer@boyer.net (Lawyer Boyer)</author>

Comments 

RSS에서는 <link>와 <url> element의 값은 반드시 스페이스가 처음으로 나오지 않아야 하며, 또한  IANA-registered URI scheme(예를 들어, http://, https://, news://, mailto:, ftp://)으로 시작되어야 한다. RSS 2.0 이전 규격에서는 단지 'http//'과 'ftp://' 만이 허용되었으나 실제로는 다른 URI scheme들이 컨텐츠 개발자나 aggregator에 의해 사용되어졌다. Aggregator는 자신이 지원하는 URI scheme을 제한할 수 있으며 따라서 컨텐츠 개발자는 모든 aggregator가 모든 scheme을 지원한다고 가정하면 안된다.

RSS 0.91에서는 많은 element들이 값의 길이가 500 혹은 100자를 넘을 수 없으며, 0.91의 <channel> 안에는 최대 15개까지의 <item>만을 가질 수 있지만 RSS 0.92와 그 이후의 규격에서는 스트링의 길이나 XML-level의 제한이 없다. 규격과는 상관없이 Processor들이 스스로의 제약을 두거나 generator가 특정 갯수 이상의 <item>이 하나의 channel에 나타나지 않도록, 혹은 스트링의 길이 제한을 두는 것을 선호할 수는 있다.  

RSS 2.0에서, Provision은 channel 내의 category를 활용하여 해당 channel을 어떤 카탈로그 시스템 내의 특정 구분자(identifier)에 링크함으로써 이루어진다. 예를 들어, 어떤 channel을 'Syndic8' 구분자에 링크하기 위해서는, 'Syndic8'이란 domain 속성을 가진 category element를 <channel>의 sub-element로 포함하고, 그 값으로서 Syndic8 데이터베이스 내의 해당 channel에 대한 구분자를 가진다.다음은 적절한 예이다.

 <category domain="Syndic8">1765</category>.

guid에 대하여 자주 묻는 질문은 <link>와의 비교할 때 똑같지 않는가이다. 이에 대한 답은 어떤 컨텐츠 시스템에서는 '예'이며, 또 다른 시스템에서는 '아니오'라는 것이다. 어떤 시스템에서는 <link>가 특정 weblog item에 대한 permalink일 수 있지만, 다른 시스템에서의 경우 <item>이 어떤 긴 내용의 기사의 줄거리라면 <link>는 그 기사를 가리키고 <guid>는 해당 weblog entry에 대한 permalink가 된다. 모든 경우에 있어서 가급적 guid를 제공하고 가능하다면 그것을 permalink로 만드는 것을 권장하며, 이는 aggregator로 하여금 같은 item들을 반복하여 처리하지 않도록 해준다(This enables aggregators to not repeat items, even if there have been editing changes).

RSS 2.0 포맷에 대한 질문은 RSS2-Support 메일링 리스트를 이용한다.

Extending RSS 

RSS가 1999년에 시작된 이후 RSS는 간단하고 이해하기 쉬운 포맷이 되기 위하여 노력해왔다. 하지만 RSS가 유명해짐에 따라 개발자들로부터 W3C에서 정의한(specified) namespace를 활용하여 새로운 모듈들을 확장하여 RSS에 적용되기를 원하게 되었다.

RSS 2.0은 이에 대하여 다음과 같은 간단한 규칙을 통하여 이 요구를 수용하였으며, 이를 이용함으로써 RSS Feed는 이 규격 페이지에는 없지만 다른 namespace에서 정의한 다른 element들을 포함할 수 있게 된다.

이 문서에서 정의한 element들은 어떤 특정 namespace에 속하지 않기 때문에, RSS 2.0은 기존의 0.91이나 0.92 RSS 버전과의 호환성을 지킬 수 있다. 만약 RSS 2.0의 element들이 어떤 하나의 namespace에 속했다면 0.9x 파일은 RSS 2.0 파일일 수 없게 된다.

Roadmap 

RSS는 완벽한 포맷은 아니지만, 매우 유명하고 광범위하게 지원되어지고 있다. RSS에 대한 안정적인 규격을 가지는 것이 장기적으로 필요하며, 이 규격 작업의 목적도 RSS를 활용한 시장의 성장을 촉진하고 새로운 syndication 포맷이 개발되는데 혼선을 주지 않기 위하여 RSS가 더이상 변경되지 않는 규격이 되는데 도움을 주기 위한 것이다. 따라서 RSS 규격은 2.0.1에서 동결되며 향후 2.0.2나 2.0.3이 나올 수는 있지만 그것은 단지 규격을 좀더 가다듬고 명확하기 위한 목적이지 새로운 기능(Feature)를 추가하는 것이 목적이 아니다. 이후의 개선 작업은 namespace를 활용하여 모듈 내에서 이루어지거나 완전히 다른 이름의 새로운 syndication 포맷으로 이루어져야 한다.

License and authorship 

RSS 2.0 is offered by the Berkman Center for Internet & Society at Harvard Law School under the terms of the Attribution/Share Alike Creative Commons license. The author of this document is Dave Winer, founder of UserLand software, and fellow at Berkman Center.

Posted by Golmong
: