관리 메뉴

(코딩캣) = "코딩"하는 고양이;

ATOM 1.0 XML 포맷에 대한 설명 본문

자료실

ATOM 1.0 XML 포맷에 대한 설명

컴파일러님, 이 코드는 고양이발로 작성되었습니다. 코딩집사 2014. 12. 31. 13:56

ATOM 1.0 XML 포맷에 대한 설명


문서 엘리먼트(Document Element)

1. 'feed' Element

<feed xmlns="http://www.w3.org/2005/Atom">
</fees>

 ATOM 규격에 따르면 ATOM 문서는 2종류가 존재합니다. 하나는 ATOM 피드 문서(ATOM feed document)이고 다른 하나는 ATOM 엔트리 문서(ATOM entry document)입니다. ATOM entry document는 ATOM을 통해 올라온 게시글 하나에 대한 내용과 정보만을 전달합니다. 루트 엘리먼트는 'entry' 또는 'atom:entry'의 이름을 갖습니다. ATOM feed entry는 하나 이상의 ATOM entry를 포함, feed 자체의 메타 데이터까지 전송하는 규격입니다. 이 경우 루트 엘리먼트는 feed, 또는 atom:feed의 이름을 갖습니다. atom은 namespace로서 http://www.w3.org/2005/Atom의 URI로 되어 있습니다.

'feed' Element의 자식 엘리먼트

1. 'author' Element

<author>
	<name>{author_name}</name>
	<uri>{author_uri}</uri>
	<email>{author_email}</email>
</author>

 이 피드 또는 엔트리의 작성자입니다. 아래와 같은 자식 엘리먼트를 갖습니다.

1.1 'name' Element

 작성자의 이름입니다. author 태그는 반드시 1개의 name 엘리먼트만을 가져야 합니다.

1.2 'uri' Element

 작성자와 관련된 URI(예: 블로그 주소, 홈피 주소 등)입니다. 최대 1개의 엘리먼트만이 허용됩니다.

1.3 'email' Element

 작성자의 이메일 주소입니다. 최대 1개의 엘리먼트만이 허용됩니다.

 

2. 'category' Element

<category term="{category_term}" scheme="{category_scheme}" label="{category_label}" />

 이 피드 또는 엔트리를 분류할 수 있는 범주입니다.

2.1 'term' Attribute (category의 필수 요소)

 이 피드 또는 엔트리와 관련된 분야(예: science, sports, economics...)입니다. category 태그는 반드시 하나의 term을 가져야 합니다.

2.2 'scheme' Attribute

 이 피드 또는 엔트리를 분류할 수 있는 디렉터리와 관련된 URI입니다.

2.3 'label' Attribute

 프로그램적이 아닌, 최종 사용자가 읽을 수 있는 자연어 형태의 분류명입니다. (예: 과학, 스포츠, 경제학, ...)

 

3. 'contributor' Element

<contributor>
	<name>{contributor_name}</name>
	<uri>{contributor_uri}</uri>
	<email>{contributor_email}</email>
</contributor>

 이 피드 또는 엔트리 작성의 기여자입니다.

3.1 'name' Element

 작성자의 이름입니다. author 태그는 반드시 1개의 name 엘리먼트만을 가져야 합니다.

3.2 'uri' Element

 작성자와 관련된 URI(예: 블로그 주소, 홈피 주소 등)입니다. 최대 1개의 엘리먼트만이 허용됩니다.

3.3 'email' Element

 작성자의 이메일 주소입니다. 최대 1개의 엘리먼트만이 허용됩니다.

 

4. 'generator' Element

<generator>{generator}</generator>

 이 RSS를 발행하기 위해 사용된 소프트웨어의 이름을 적습니다. feed 엘리먼트는 이 항목을 최대 1개만 자식 노드로서 가질 수 있습니다.

5. 'icon' Element

<icon>{icon}</icon>

 이 RSS를 나타내는 아이콘입니다. 아이콘의 크기는 작을 것이 권장되며 가로 및 세로의 비율은 1:1이 될 것이 권장됩니다. feed 엘리먼트는 이 항목을 최대 1개만 자식 노드로서 가질 수 있습니다.

6. 'id' Element

<id>{id}</id>

 이 피드 또는 엔트리를 식별할 IRI입니다.

7. 'link' Element

<link href="{feed_link_href}" rel="{feed_link_rel}" type="{feed_link_type}" hreflang="{feed_link_hreflang}" title="{feed_link_title}" length="{feed_link_length}" />

 이 피드 또는 엔트리가 참조하는 외부 자원입니다.

7.1 'href' Attribute (link의 필수 요소)

 href는 IRI 형식으로서 외부 자원의 위치를 나타내며 link 태그가 반드시 가져야 하는 속성입니다.

7.2 'rel' Attribute

 href로 지정한 IRI가 이 피드 또는 엔트리와 관련되어 어떤 목적으로 참고할 수 있는지를 지정합니다. 아래 값 중 하나가 지정됩니다.

  • rel="alternate"
    이 피드 또는 엔트리를 대신할 수 있는 외부 자원입니다. rel 속성이 명시되지 않은 link 태그의 경우 rel="alternate"인 것으로 간주합니다.
  • rel="archives"
    시간에 따른 이 피드 또는 엔트리 내용의 변화 양상과 관련된 외부 자원입니다. 이전에 발행된 RSS를 불러올 수 있습니다.
  • rel="related"
    이 피드 또는 엔트리에서 언급하고 있는 주된 대상을 가리키는 외부 자원입니다. 예를 들어 게시물에서 어떤 연예인에 대해 논쟁하고 있을 때 rel="related"로 지정된 link 태그를 통해 그 연예인의 블로그, 신문 기사 등의 URL을 지정할 수 있습니다.
  • rel="self"
    이 피드 또는 엔트리 자신의 IRI를 나타냅니다.
  • rel="enclosure"
    이 피드 또는 엔트리에 첨부된 파일을 나타냅니다. rel="enclosure"로 지정할 경우 반드시 length 속성이 동반되어야 합니다.
  • rel="via"
    이 피드 또는 엔트리의 내용을 작성하기 위해 동원된 원문 또는 참고 문헌 등의 IRI입니다.

7.3 'type' Attribute

 href로 지목하는 대상의 형식입니다. MIME 타입으로 지정합니다.

7.4 'hreflang' Attribute

 href로 지목하는 대상의 주 언어입니다. 예를 들어 한국어면 "ko" 또는 "ko-KR", 일본어면 "ja" 또는 "ja-JP"입니다.

7.5 'title' Attribute

 href로 지목하는 대상의 제목입니다.

7.6 'length' Attribute

 href로 지목하는 대상의 크기입니다.

8. 'logo' Element

<logo>{logo}</logo>

 이 피드 또는 엔트리를 대표하는 로고 이미지의 URI입니다. 이미지의 크기는 가로 = 2, 세로 = 1의 비율이 권장됩니다.

9. 'rights' Element

<rights>{rights}</rights>

 이 피드 또는 엔트리의 저작권 관련 문구입니다.

10. 'subtitle' Element

<feed xmlns="http://www.w3.org/2005/Atom">
	<subtitle type="{feed_subtitle_type}">{feed_subtitle}</subtitle>
</fees>

 이 피드를 설명하는 문구입니다. 'type' attribute는 title 태그가 포함하는 내용의 종류를 나타내는 것으로 "text", "html", "xhtml" 중 하나여야 합니다.

11. 'title' Element

<title type="{feed_title_type}">{feed_title}</title>

 이 피드의 제목을 나타냅니다. 'type' attribute는 title 태그가 포함하는 내용의 종류를 나타내는 것으로 "text", "html", "xhtml" 중 하나여야 합니다.

  • type="text"인 경우: 태그가 포함하는 내용이 순수 텍스트로 처리됩니다. ATOM 처리기는 태그 기호 '<'와 '>'가 발견되어도 이를 자식 엘리먼트로 인식하지 않고 태그 그대로 출력합니다.
    예: <title type="text"><b>Hello, World!</b></title>
    → <b>Hello, World!</b>
  • type="html"인 경우: 태그가 포함하는 내용이 HTML로 처리됩니다. ATOM 처리기는 태그 기호 '<'와 '>'가 발견되면 HTML로 인식하여 출력에 반영합니다.
    예: <title type="text"><b>Hello, World!</b></title>
    Hello, World!
  • type="xhtml"인 경우: 태그가 포함하는 내용이X HTML로 처리됩니다. ATOM 처리기는 태그 기호 '<'와 '>'가 발견되면 XHTML로 인식하여 출력에 반영합니다. 이 때, 본문 태그들은 xhtml:div 태그의 자식노드로서 포함되어야 하며 XHTML namespace가 선언되어있어야 합니다.
    예: <title type="text" xmlns:xhtml="http://www.w3.org/1999/xhtml"><xhtml:div><xhtml:b>Hello, World!</xhtml:b></xhtml:div></title>
    Hello, World!

11. 'updated' Element

<updated>{feed_updated}</updated>

 이 피드의 최종 업데이트된 시각을 나타냅니다. 이 날짜와 시각은 RFC 3339 규격에 따라 표현되어야 합니다. 즉 {날짜}T{시각}{시간대}의 형식을 가집니다.

날짜 요소: 연(4자리)-월(2자리)-일(2자리) 형식으로 되어야 합니다. (예) 2005-07-31

T: 날짜와 시각을 구분하기 위해 대문자 'T'가 사용됩니다.

시각 요소: 시(2자리):분(2자리):초(2자리).1/10(1자리) 형식으로 되어야 합니다. 1/10초는 생략할 수 있습니다. (예) 12:29:29, 12:29:29.4

시간대: http://tapito.tistory.com/444의 1.8 'pubDate' 항목 참고

날짜 및 시각 표현 예:

  • 1985-04-12T23:20:50.52Z: UT 시간을 사용하는 지역에서 1985년 4월 12일 23시 20분 50초 52인 순간
  • 1990-12-31T23:59:60Z: UT 시간을 사용하는 지역에서 1990년 12월 31일 23시 59분 60초(윤초)인 순간
  • 1937-01-01T12:00:27.87+00:20: UT보다 20분 빠른 시간을 사용하는 지역에서 1937년 1월 1일 12시 00분 27초 87인 순간
  • 1990-12-31T15:59:60-08:00: UT보다 8시간 늦는 시간을 사용하는 지역에서 1990년 12월 31일 15시 59분 60초(윤초)인 순간

12. 'entry' Element

<entry>{...}</entry>

 이 RSS를 통해 올라온 게시글입니다. 아래에 이어서 설명합니다.

'entry' Element의 자식 엘리먼트

1. 'author' Element

 'feed' Element의 자식 엘리먼트 1번 항목과 같음

2. 'category' Element

 'feed' Element의 자식 엘리먼트 2번 항목과 같음

3. 'content' Element

<content type="{content_type}" src="{content_src}">{...}</content>

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

3.1 'type' Attribute와 'src' Attribute

 분문의 형식은 'type' attribute에 따라 결정됩니다.

  • type = "text"

    content 태그가 감싸는 내용은 일반 텍스트처럼 처리됩니다.

    <content type="text">
    Some <b>Bold</b> text
    </content>
  • type = "html"

    content 태그가 감싸는 내용이 HTML 형식입니다.

    <content type="html">
    Some <b>Bold</b> text
    </content>
  • type = "xhtml"

    content 태그가 감싸는 내용이 XHTML 형식입니다.

    <content type="xhtml">
    <span xmlns="http://www.w3.org/1999/xhtml">text</span>
    </content>

 그 외 다양한 형식을 포함할 수 있습니다.

  • type = "application/svg+xml"

    content 태그가 감싸는 내용이 SVG입니다.

    <svg width="225" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <title>stroke-linecap</title>
    <g style="fill:none;stroke:rgb(255,50,50);stroke-width:2">
    <path d="M10 10 l0 80"/>
    <path d="M215 10 l0 80"/>
    </g>
    <g style="fill:none;stroke:black;stroke-width:7;">
    <path style="stroke-linecap:butt" d="M10 25 l205 0"/>
    <path style="stroke-linecap:round" d="M10 50 l205 0"/>
    <path style="stroke-linecap:square" d="M10 75 l205 0"/>
    </g>
    </svg>
  • content 태그로 전달하고자 하는 데이터가 바이너리인 경우 Base64로 변환하여 전달합니다. 이 경우 type 속성으로 바이너리의 종류를 지정합니다.

    <content type="image/jpeg">/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBk(생략)=
    </content>
  • src 속성으로 content 태그가 전달하려는 데이터를 외부 자원으로 지정할 수 있습니다.

    <content type="text/html" src="/test.html" />

4. 'contributor' Element

 'feed' Element의 자식 엘리먼트 3번 항목과 같음

5. 'id' Element

 'feed' Element의 자식 엘리먼트 6번 항목과 같음

6. 'link' Element

 'feed' Element의 자식 엘리먼트 7번 항목과 같음

7. 'published' Element

 이 게시글의 작성 날짜입니다.

8. 'rights' Element

 'feed' Element의 자식 엘리먼트 9번 항목과 같음

9. 'summary' Element

<summary>{...}</summary>

 이 게시글의 내용을 요약한 문장입니다.

10. 'title' Element

 'feed' Element의 자식 엘리먼트 11번 항목과 같음

11. 'updated' Element

 'feed' Element의 자식 엘리먼트 12번 항목과 같음

12. 'source' Element

<source>{...}</source>

 다른 RSS에서 전파된 게시글일 경우 해당 글의 출처를 나타냅니다.

12.1. 'author' Element

 'feed' Element의 자식 엘리먼트 1번 항목과 같음

12.2 'category' Element

 'feed' Element의 자식 엘리먼트 2번 항목과 같음

12.3 'contributor' Element

 'feed' Element의 자식 엘리먼트 3번 항목과 같음

12.4 'generator' Element

 'feed' Element의 자식 엘리먼트 4번 항목과 같음

12.5 'icon' Element

 'feed' Element의 자식 엘리먼트 5번 항목과 같음

12.6 'id' Element

 'feed' Element의 자식 엘리먼트 6번 항목과 같음

12.7 'link' Element

 'feed' Element의 자식 엘리먼트 7번 항목과 같음

12.8 'logo' Element

 'feed' Element의 자식 엘리먼트 8번 항목과 같음

12.9 'rights' Element

 'feed' Element의 자식 엘리먼트 9번 항목과 같음

12.10 'subtitle' Element

 'feed' Element의 자식 엘리먼트 10번 항목과 같음

12.11 'title' Element

 'feed' Element의 자식 엘리먼트 11번 항목과 같음

12.12 'updated' Element

 'feed' Element의 자식 엘리먼트 12번 항목과 같음

ATOM 1.0으로 발행한 XML의 예

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<author>
		<name>Feed Author</name>
		<uri>http://fb.com/feedauthor</uri>
		<email>feedauthor@feed.com</email>
	</author>
	<category term="RSS" scheme="http://feed.com/directories/rss" label="Rich Site Summary" />
	<author>
		<name>Feed Contributer</name>
		<uri>http://twitter.com/feedcontributer</uri>
		<email>feedcontributer@feed.com</email>
	</author>
	<generator uri="http://www.example.com/" version="1.0">Example Toolkit 1.0</generator>
	<icon>http://feed.com/icon.gif</icon>
	<id>http://www.feed.com/feed.atom</id>
	<link rel="alternate" type="text/html" hreflang="en" href="http://example.org/" />
	<link rel="self" type="application/atom+xml" href="http://example.org/feed.atom" />
	<rights>Copyright (c) 2003, Mark Pilgrim</rights>
	<subtitle type="html">A <em>lot</em> of effort went into making this effortless</subtitle>
	<title type="text">dive into mark</title>
	<updated>2005-07-31T12:29:29Z</updated>
	<entry>
		<author>
			<name>Mark Pilgrim</name>
			<uri>http://example.org/</uri>
			<email>f8dy@example.com</email>
		</author>
		<category term="enclosured" scheme="http://feed.com/directories/enclosured" label="Article with Enclosures" />
		<content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/">
			<div xmlns="http://www.w3.org/1999/xhtml"><p><i>[Update: The Atom draft is finished.]</i></p></div>
		</content>
		<contributor>
			<name>Joe Gregorio</name>
		</contributor>
		<contributor>
			<name>Sam Ruby</name>
		</contributor>
		<id>http://www.feed.com/threads/1</id>
		<link rel="alternate" type="text/html" href="http://example.org/2005/04/02/atom" />
		<link rel="enclosure" type="audio/mpeg" length="1337" href="http://example.org/audio/ph34r_my_podcast.mp3"/>
		<published>2003-12-13T08:29:29-04:00</published>
		<rights>Copyright (c) 2003, Mark Pilgrim</rights>
		<summary type="text">A Great News</summary>
		<title>Atom draft-07 snapshot</title>
		<updated>2005-07-31T12:29:29Z</updated>
		<source>
			<title>this is a title</title>
			<id>http://www.validome.org/id/12345</id>
			<updated>2006-10-10T17:46:27Z</updated>
		</source>
	</entry>
</feed>

참고 사이트

0 Comments
댓글쓰기 폼