본문 바로가기
JLPT

RSS 2.0 XML 포맷에 대한 설명

by 엘리후 2021. 7. 7.

RSS 2.0 Specification


'rss' Element

<rss version="2.0"> </rss>

RSS 2.0을 준수하는 문서는 문서 요소로 'rss' 이름의 Element를 가져야 합니다. 'rss' Element는 attribute로 version을 반드시 가져야 하며 그 값은 항상 "2.0"입니다. 'rss' Element는 'channel' 이름의 Element를 자식으로 갖습니다.

 

1. 'channel' Element

<rss version="2.0"> <channel> </channel> </rss>

채널(channel)은 웹 사이트에 대응되는 개념입니다. 자식 Element로 3개의 필수 요소와 15개의 선택 요소를 갖습니다.

 

1.1 'title' Element (필수 요소)

<rss version="2.0"> <channel> <title>{channel_title}</title> </channel> </rss>

채널의 이름입니다. 웹 사이트의 이름과 같게 지정하면 됩니다.

 

1.2 'link' Element (필수 요소)

<rss version="2.0"> <channel> <link>{channel_link}</link> </channel> </rss>

이 RSS를 공급하는 웹 사이트의 주소입니다.

 

1.3 'description' Element (필수 요소)

<rss version="2.0"> <channel> <description>{channel_link}</description> </channel> </rss>

이 채널(웹 사이트)을 소개하거나 그 내용을 설명하는 홍보 문장입니다.

 

1.4 'language' Element

<rss version="2.0"> <channel> <language>{channel_language}</language> </channel> </rss>

이 채널의 주 언어를 지정합니다. ISO 639 표준에 따릅니다.

AA 함어(Afar) IK 이누이트어(Inupiak) SA 산스크리트어(Sanskrit)
AB 압하지아어(Abkhazian) ID 인도네시아어(Indonesian) SD 신드어(Sindhi)
AF 아프리칸스(Afrikaans) IS 아이슬란드어(Icelandic) SG 상고어(Sangho)
AM 아마른냐(Amharic) IT 이탈리아어(Italian) SH 세르보크로아티아어(Ser-Croatian)
AR 아랍어(Arabic) IU 이누이트어(Inuktitut) SI 스리랑카어(Singhalese)
AS 아샘어(Assamese) JA 일본어(Japanese) SK 슬로바키아어(Slovak)
AY 아이마라어(Aymara) JV 자바어(Javanese) SL 슬로베니아어(Slovenian)
AZ 아제르바이잔어(Azerbaijani) KA 조지아어(Georgian) SM 사모아어(Samoan)
BA 바슈키르어(Bashkir) KK 카자흐어(Kazakh) SN 소나어(Shona)
BE 벨라루시어(Byelorussian) KL 그린란드어(Greenlandic) SO 소말리아어(Somali)
BG 불가리아어(Bulgarian) KM 캄보디아어(Cambodian) SQ 알바니아어(Albanian)
BH 비하리어(Bihari) KN 칸나다어(Kannada) SR 세르비아어(Serbian)
BI 비슬라마어(Bislama) KO 한국어(Korean) SS 시스와티어(Siswati)
BN 벵골어(Bengali) KS 카슈미르어(Kashmiri) ST 세소토어(Sesotho)
BO 티베트어(Tibetan) KU 쿠르드어(Kurdish) SU 순다어(Sundanese)
BR 브르타뉴어(Breton) KY 키르기즈어(Kirghiz) SV 스웨덴어(Swedish)
CA 카탈로니아어(Catalan) LA 라틴어(Latin) SW 스와힐리어(Swahili)
CO 코르시카어(Corsican) LN 링갈라어(Lingala) TA 타밀어(Tamil)
CS 체코어(Czech) LO 라오스어(Laothian) TE 텔루구어(Telugu)
CY 웨일즈어(Welsh) LT 리투아니아어(Lithuanian) TG 타지크어(Tajik)
DA 덴마크어(Danish) LV 라트비아어(Latvian) TH 태국어(Thai)
DE 독일어(German) MG 마다가스카르어(Malagasy) TI 티그리니아어(Tigrinya)
DZ 부탄어(Bhutani) MI 마오리어(Maori) TK 투르크멘어(Turkmen)
EL 그리스어(Greek) MK 마케도니아어(Macedonian) TL 타갈로그어(Tagalog)
EN 영어(English) ML 말라얄람어(Malayalam) TN 세츠와나어(Setswana)
EO 에스페란토(Esperanto) MN 몽골어(Mongolian) TO 통가어(Tonga)
ES 스페인어(Spanish) MO 몰도바어(Moldavian) TR 터키어(Turkish)
ET 에스토니아어(Estonian) MR 마라타어(Marathi) TS 총가어(Tsonga)
EU 바스크어(Basque) MS 말레이어(Malay) TT 타타르어(Tatar)
FA 페르시아어(Persian) MT 몰타어(Maltese) TW 트위어(Twi)
FI 핀란드어(Finnish) MY 버마어(Burmese) UG 위구르어(Uigur)
FJ 피지어(Fiji) NA 나우루어(Nauru) UK 우크라이나어(Ukrainian)
FO 페로어(Faroese) NE 네팔어(Nepali) UR 우르두어(Urdu)
FR 프랑스어(French) NL 네덜란드어(Dutch) UZ 우즈벡어(Uzbek)
FY 프리지아어(Frisian) NO 노르웨이어(Norwegian) VI 베트남어(Vietnamese)
GA 아일랜드어(Irish) OC 프로방스어(Occitan) VO 볼라퓌크(Volapuk)
GD 스코틀랜드 게일어 (Scots Gaelic) OM 오로모어(Afan) WO 월로프어(Wolof)
GL 갈리시아어(Galician) OR 오리야어(Oriya) XH 코사크어(Xhosa)
GN 과라니어(Guarani) PA 펀자브어(Punjabi) YI 이디시어(Yiddish)
GU 구자라트어(Gujarati) PL 폴란드어(Polish) YO 요루바어(Yoruba)
HA 하우사어(Hausa) PS 파슈토어(Pashto) ZA 좡어(Zhuang)
HE 히브리어(Hebrew) PT 포르투갈어(Portuguese) ZH 중국어(Chinese)
HI 힌디어(Hindi) QU 케추아어(Quechua) ZU 줄루어(Zulu)
HR 크로아티아어(Croatian) RM 레토로만어(Rhaeto-Romance)

HU 헝가리어(Hungarian) RN 쿠룬디어(Kurundi)

HY 아르메니아어(Armenian) RO 루마니아어(Romanian)

IA 국제어(Interlingua) RU 러시아어(Russian)

IE 인공어(Interlingue) RW 키냐르완다어(Kinyarwanda)

 

1.5 'copyright' Element

<rss version="2.0"> <channel> <copyright>{channel_copyright}</copyright> </channel> </rss>

저작권 관련 문구를 넣습니다.

 

1.6 'managingEditor' Element

<rss version="2.0"> <channel> <managingEditor>{channel_managingEditor}</managingEditor> </channel> </rss>

게시글 편집자 이메일 주소를 적습니다.

 

1.7 'webMaster' Element

<rss version="2.0"> <channel> <webMaster>{channel_webMaster}</webMaster> </channel> </rss>

사이트 관리자 이메일 주소를 적습니다.

 

1.8 'pubDate' Element

<rss version="2.0"> <channel> <pubDate>{channel_pubDate}</pubDate> </channel> </rss>

이 RSS의 발행 날짜와 시각을 적습니다. RFC 822 형식에 맞춰서 적습니다.

RFC 822에 따른 날짜와 시각 표시

{day1}, {day2} {month} {year} {hour}:{minute}:{second} {zone}의 형식을 갖춘 텍스트입니다.

{day1} = 요일을 나타냅니다. "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" 중 하나입니다. 이 항목은 선택 사항이며 표시하고자 할 때 쉼표를 붙입니다. (예: "Fri, ")

{day2} = 일을 나타냅니다. "01", "02", ..., "31"까지의 2자리 수로 표시합니다.

{month} = 월을 나타냅니다. "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" 중 하나입니다.

{year} = 연을 나타냅니다.

{hour}:{minute}:{second} = 시각을 나타냅니다. "00:00:00" 부터 "23:59:59" 사이여야 합니다.

{zone} = 앞의 시각 및 날짜가 어느 시간대를 기준으로 했는지를 나타냅니다. GMT 기준 시차로 표현할 수도 있고 문자열로도 표현할 수 있습니다.

"UT"

천체의 운동으로 관측한 세계시입니다.

"UTC"

UT를 일정한 시기마다 보정하여 얻는 시각입니다. 1972년 1월 1일 자정을 기준으로 한 협정시입니다.

"GMT"

그리니치 시간입니다.

"EST", "EDT"

미국 동부 시각입니다. 각각 UT - 5, UT - 4의 시차가 있고 서머타임 적용 기간에는 EDT, 서머타임을 적용하지 않는 기간에는 EST를 사용합니다.

"CST", "CDT"

미국 중부 시각입니다. UT - 6, UT - 5의 시차가 있고 서머타임 적용 기간에는 CDT, 그 외에는 CST로 표시합니다.

"MST", "MDT"

미국 산악 표준시입니다. UT - 7, UT - 6의 시차가 있고 서머타임 적용 기간에는 MDT, 그 외에는 MST로 표시합니다.

"PST", "PDT"

미국 태평양 시각입니다. UT - 8, UT - 7의 시차가 있고 서머타임 적용 기간에는 PDT, 그 외에는 PST로 표시합니다.

NATO 음성 부호 (J: juliett은 사용하지 않음)

"A" (alpha): UT - 1. "B" (bravo): UT - 2. "C" (charlie): UT - 3. "D" (Delta): UT - 4.
"E" (echo): UT - 5. "F" (foxtrot): UT - 6. "G" (golf): UT - 7. "H" (hotel): UT - 8.
"I" (india): UT - 9. "K" (kilo): UT - 10. "L" (lima): UT - 11. "M" (mike): UT - 12.
"N" (november): UT + 1. "O" (oscar): UT + 2. "P" (papa): UT + 3. "Q" (quebec): UT + 4.
"R" (romeo): UT + 1. "S" (sierra): UT + 2. "T" (tango): UT + 3. "U" (uniform): UT + 4.
"V" (victor): UT + 1. "W" (whiskey): UT + 2. "X" (x-ray): UT + 3. "Y" (yankee): UT + 4.
"Z" (zulu): UT.

시차 직접 지정

{"+" 또는 "-"}{시간2자리}{분2자리}로 표현합니다. UT보다 2시간 30분 이전 시간대라면 "-0230"으로 표현합니다.

예를 들어 한국 시간으로 1980년 12월 1일 오후 7시 30분 15초를 표현한다면

Mon, 01 Dec 80 19:30:15 +0900 또는 01 Dec 80 19:30:15 +0900 또는 Mon, 01 Dec 1980 19:30:15 +0900와 같이 적으면 됩니다.

1.9 'lastBuildDate' Element

<rss version="2.0"> <channel> <lastBuildDate>{channel_lastBuildDate}</lastBuildDate> </channel> </rss>

이 채널에서 게시물이 마지막으로 수정된 시각을 적습니다. 마찬가지로 RFC 822 규격에 따릅니다.

 

1.10 'category' Element

<rss version="2.0"> <channel> <category>{channel_category}</category> </channel> </rss>

이 채널의 주제 또는 분류를 적습니다. 게시물에 붙는 'category'에 대한 규칙과 같은 규칙이 적용되며 하나 이상의 'category' 태그를 가질 수 있습니다.

 

1.11 'generator' Element

<rss version="2.0"> <channel> <generator>{channel_generator}</generator> </channel> </rss>

이 RSS를 발행하기 위해 사용된 소프트웨어의 이름을 적습니다.

 

1.12 'docs' Element

<rss version="2.0"> <channel> <docs>{channel_docs}</docs> </channel> </rss>

이 RSS를 수신할 수 있는 주소를 적습니다.

 

1.13 'cloud' Element

<rss version="2.0"> <channel> <cloud domain="{channel_cloud_domain}" port="{channel_cloud_port}" path="{channel_cloud_port}" registerProcedure="{channel_cloud_registerProcedure}" protocol="{channel_cloud_prococol}" /> </channel> </rss>

실시간 통지와 의견 교환 등 RSS Cloud 관련 기능을 지정하는 노드입니다.

protocol은 통신 방식으로 xml-rpc, http-post, soap 1.1 등이 지정될 수 있습니다. 나머지 항목은 메시지를 전송할 경로 및 프로시저입니다.

예를 들어 xml-rpc를 사용하며 domain="rpc.sys.com" port="80" path="/rpc" registerProcedure="myCloud.rssPleaseNotify"로 지정되었다면, rpc.sys.com:80/rpc에서 myCloud.rssPleaseNotify 프로시저를 실행하여 피드를 전송한다는 뜻입니다.

 

1.14 'ttl' Element

<rss version="2.0"> <channel> <ttl>{channel_ttl}</ttl> </channel> </rss>

새로 수신할 때까지 캐싱할 수 있는 횟수를 제한합니다.

 

1.15 'image' Element

<rss version="2.0"> <channel> <image> </image> </channel> </rss>

이 채널을 대표하는 로고 등의 그림을 지정합니다. 3개의 필수 요소가 3개의 선택 요소를 자식 엘리먼트로 가질 수 있습니다.

 

1.15.1 'url' Element (image 태그의 필수 요소)

<rss version="2.0"> <channel> <image> <url>{channel_image_url}</url> </image> </channel> </rss>

그림 파일의 위치를 나타내는 URL입니다. HTML의 img 태그 중 src 속성과 같은 용도입니다.

1.15.2 'title' Element (image 태그의 필수 요소)

<rss version="2.0"> <channel> <image> <title>{channel_image_title}</title> </image> </channel> </rss>

그림 파일의 제목 또는 설명을 나타내는 텍스트입니다. HTML의 img 태그 중 alert 속성과 같은 용도입니다.

1.15.3 'link' Element (image 태그의 필수 요소)

<rss version="2.0"> <channel> <image> <link>{channel_image_link}</link> </image> </channel> </rss>

그림 파일을 클릭할 때 이동할 URL입니다.

1.15.4 'width' Element

<rss version="2.0"> <channel> <image> <width>{channel_image_width}</width> </image> </channel> </rss>

그림의 폭입니다. 기본값은 88, 최대 144 픽셀입니다.

1.15.5 'height' Element

<rss version="2.0"> <channel> <image> <height>{channel_image_height}</height> </image> </channel> </rss>

그림의 높이입니다. 기본값은 31, 최대 400 픽셀입니다.

1.16 'textInput' Element

<rss version="2.0"> <channel> <textInput> </textInput> </channel> </rss>

채널에 표시될 수 있는 텍스트 상자를 지정합니다. 주로 게시물 검색이나 피드백 관련 기능을 구현하기 위해 활용될 수 있습니다. 대부분의 RSS 수집기는 이 태그를 무시합니다. 4개의 엘리먼트를 필수 요소로 가집니다.

 

1.16.1 'description' Element (textInput의 필수 요소)

<rss version="2.0"> <channel> <textInput> <description>{channel_textInput_description}</description> </textInput> </channel> </rss>

이 텍스트 상자에 대한 설명입니다.

1.16.2 'name' Element (textInput의 필수 요소)

<rss version="2.0"> <channel> <textInput> <name>{channel_textInput_name}</name> </textInput> </channel> </rss>

이 텍스트 상자의 이름입니다. CGI로 쿼리를 전송할 때 이 텍스트 상자를 통해 보내는 정보의 변수명으로 쓰입니다.

1.16.3 'title' Element (textInput의 필수 요소)

<rss version="2.0"> <channel> <textInput> <title>{channel_textInput_title}</title> </textInput> </channel> </rss>

Submit 단추에 보여줄 '검색' 또는 '등록' 등의 단어입니다.

1.16.4 'link' Element (textInput의 필수 요소)

<rss version="2.0"> <channel> <textInput> <link>{channel_textInput_link}</link> </textInput> </channel> </rss>

Submit 단추를 눌렀을 때 쿼리를 받을 CGI의 URL을 지정합니다.

textInput의 예시:

Google Searchq http://www.google.com/search?

 

1.17 'skipHours' Element

<rss version="2.0"> <channel> <skipHours> </skipHours> </channel> </rss>

0시부터 23시의 범위를 가지며 RSS 수집기가 이 시간대에는 수신을 하지 않도록 지정합니다.

 

1.18 'skipDays' Element

<rss version="2.0"> <channel> <skipDays> </skipDays> </channel> </rss>

Monday, Tuesday, Wednesday, Thursday, Friday, Saturday 및 Sunday 중 하나이며 RSS 수집기가 여기서 지정한 요일에는 수신을 하지 않도록 지정합니다.

 

1.19 'item' Element

<rss version="2.0"> <channel> <item> </item> </channel> </rss>

채널에 올라온 게시물을 나타냅니다. 3개의 필수 엘리먼트와 7개의 선택 요소를 갖습니다.

 

1.19.1 'title' Element (item의 필수 요소)

<rss version="2.0"> <channel> <item> <title>{channel_item_title}</title> </item> </channel> </rss>

게시물의 제목입니다.

1.19.2 'link' Element (item의 필수 요소)

<rss version="2.0"> <channel> <item> <link>{channel_item_link}</link> </item> </channel> </rss>

게시물의 URL입니다.

1.19.3 'description' Element (item의 필수 요소)

<rss version="2.0"> <channel> <item> <link>{channel_item_link}</link> </item> </channel> </rss>

게시물의 본문 또는 본문 중 일부입니다.

1.19.4 'author' Element

<rss version="2.0"> <channel> <item> <author>{channel_item_author}</author> </item> </channel> </rss>

게시물 작성자의 이메일 주소입니다.

1.19.5 'category' Element

<rss version="2.0"> <channel> <item> <category>{channel_item_category}</category> </item> </channel> </rss>

게시물이 속한 범주, 분류입니다.

1.19.6 'comments' Element

<rss version="2.0"> <channel> <item> <comments>{channel_item_comments}</comments> </item> </channel> </rss>

게시물에 대한 댓글을 읽을 수 있는 주소입니다.

1.19.7 'enclosure' Element

<rss version="2.0"> <channel> <item> <enclosure url="{channel_item_enclosure_url}" length="{channel_item_enclosure_length}" type="{channel_item_enclosure_type}" /> </item> </channel> </rss>

게시물에 첨부된 파일과 관련된 노드입니다. 첨부파일의 주소인 url, 파일의 크기를 바이트 단위로 나타낸 length, 파일의 MIME 형식을 나타내는 type 속성을 가집니다.

1.19.8 'guid' Element

<rss version="2.0"> <channel> <item> <guid>{channel_item_guid}</guid> <!-- 또는 --> <guid isPermaLink="{channel_item_guid_isPermaLink}">{channel_item_guid}</guid> </item> </channel> </rss>

이 게시물만을 프로그램적으로 식별할 수 있는 고유 문자열입니다. isPermaLink 속성이 true라면 이 게시물에 지정된 GUID가 웹 브라우저로 열어볼 수 있는 URL임을 지정합니다.

1.19.9 'pubDate' Element

<rss version="2.0"> <channel> <item> <pubDate>{channel_item_pubDate}</pubDate> </item> </channel> </rss>

이 게시물이 등록된 날짜입니다.

1.19.10 'source' Element

<rss version="2.0"> <channel> <item> <source url="{channel_item_source_url}">{channel_item_source}</source> </item> </channel> </rss>

이 게시물이 다른 RSS에서 온 것이라면 해당 RSS의 이름({channel_item_source})과 주소({channel_item_source_url})를 나타냅니다.

RSS 2.0으로 작성한 RSS 예제

http://liftoff.msfc.nasa.gov/ Liftoff to Space Exploration. Search Googlehttp://www.google.no/search? q en-us Tue, 10 Jun 2003 04:00:00 GMT Tue, 10 Jun 2003 09:41:01 GMT http://blogs.law.harvard.edu/tech/rss Weblog Editor 2.0 editor@example.com webmaster@example.comhttp://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's Star City. Tue, 03 Jun 2003 09:39:21 GMT http://liftoff.msfc.nasa.gov/2003/06/03.html#item573 Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a partial eclipse of the Sun on Saturday, May 31st. Fri, 30 May 2003 11:06:42 GMT http://liftoff.msfc.nasa.gov/2003/05/30.html#item572 http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp Before man travels to Mars, NASA hopes to design new engines that will let us fly through the Solar System more quickly. The proposed VASIMR engine would do that. Tue, 27 May 2003 08:37:32 GMT http://liftoff.msfc.nasa.gov/2003/05/27.html#item571 http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them. Instead, astronauts have other options. Tue, 20 May 2003 08:56:02 GMT http://liftoff.msfc.nasa.gov/2003/05/20.html#item570

참고 사이트

http://validator.w3.org/feed/docs/rss2.html#ltpubdategtSubelementOfLtitemgt

http://cyber.law.harvard.edu/rss/rss.html

http://en.wikipedia.org/wiki/NATO_phonetic_alphabet

http://www.zeali.net/mirrors/w3cshool/rss/rss_tag_textinput.asp.html

http://www.w3schools.com/rss/rss_tag_cloud.asp

http://www.w3.org/Protocols/rfc822/#z28

댓글