1. Каналы новостей
  2. Структура
  3. RSS
  4. Atom
  5. Сравнение RSS и Atom

Atom

Логотип Atom
Логотип Atom
(но пользователи больше привыкли к логотипу RSS)
  1. Что такое Atom?
  2. Примеры каналов
  3. Структура и элементы Atom 1.0
    1. Элемент <feed>
    2. Элемент <entry>
  4. Дополнительные возможности Atom
  5. Перспективы развития Atom

Что такое Atom?

Название Atom применяется к двум связанным веб-стандартам: Atom Syndication Format и Atom Publishing Protocol.

  1. Atom Syndication Format — это основанный на XML язык, используемый для описания каналов новостей;
  2. Atom Publishing Protocol (AtomPub, APP) — это простой, основанный на HTTP протокол создания и обновления веб-ресурсов.

Формат Atom был разработан как альтернатива RSS, с целью устранения его недостатков и добавления отсутствующих в этом формате возможностей. За короткое время Atom получил статус стандарта W3C и IETF (Internet Engineering Task Force), спецификация Atom 1.0, «The Atom Syndication Format», была опубликована в RFC 4287 в декабре 2005 г, а «The Atom Publishing Protocol» — в RFC 5023 в октябре 2007 г.

Примеры каналов

Листинг 1. Краткий фид Atom с одним элементом

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title>Example Feed</title>
	<link href="http://example.org/"/>
	<updated>2003-12-13T18:30:02Z</updated>
	<author>
		<name>John Doe</name>
	</author>
	<id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
	<entry>
		<title>Atom-Powered Robots Run Amok</title>
		<link href="http://example.org/2003/12/13/atom03"/>
		<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
		<updated>2003-12-13T18:30:02Z</updated>
		<summary>Some text</summary>
	</entry>
</feed>

Листинг 2. Расширенный фид Atom с одним элементом

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="text">dive into mark</title>
	<subtitle type="html">
		A &lt;em&gt;lot&lt;/em&gt; of 
		effort went into making this effortless
	</subtitle>

	<updated>2005-07-31T12:29:29Z</updated>
	<id>tag:example.org,2003:3</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>
	<generator uri="http://www.example.com/" version="1.0">
		Example Toolkit
	</generator>
	<entry>
		<title>Atom draft-07 snapshot</title>
		<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"/>
		<id>tag:example.org,2003:3.2397</id>
		<updated>2005-07-31T12:29:29Z</updated>
		<published>2003-12-13T08:29:29-04:00</published>
		<author>
			<name>Mark Pilgrim</name>
			<uri>http://example.org/</uri>
			<email>f8dy@example.com</email>
		</author>
		<contributor>
			<name>Sam Ruby</name>
		</contributor>
		<contributor>
			<name>Joe Gregorio</name>
		</contributor>
		<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>
	</entry>
</feed>

Как видно из примеров в листингах 1 и 2, формат Atom можно использовать как для описания простых новостных лент, так и для каналов со сложной структурой. При этом стандарт разработан так, чтобы его можно было представить как в человеко-, так и в машинно-читаемом виде.

Структура и элементы формата Atom

Корневым элементом в документе Atom является <feed>. Он содержит метаданные о канале (адрес, название, авторство и т.д.) и любое количество элементов <entry>, в которых и помещены новости. Элементы канала бывают следующих типов: обязательные, рекомендуемые и необязательные. При этом они могут иметь обязательные или опциональные атрибуты и вложенные элементы.

Элемент <feed>

Обязательные элементы

<id> — Идентификатор фида, постоянный URI.

<title> — Название канала. Не может быть пустым.

<updated> — Дата последнего обновления в формате RFC 3339.

<updated>2003-12-13T18:30:02Z</updated>

Рекомендуемые элементы

Нижеперечисленные элементы не являются обязательными, но их использование желательно для обеспечения большей информативности.

<author> — Имя автора. Множественное авторство может быть указано в элементах entry

<author>
  <name>John Doe</name>
  <email>JohnDoe@example.com</email>
  <uri>http://example.com/~johndoe</uri>
</author>

<link> — Адрес связанного сайта. Тип связи определяется в атрибуте rel.

<link rel="self" href="/feed" />

Необязательные элементы

<category> — Задает категории, к которым относится канал. Элемент feed может включать несколько элементов category.

<category term="networking"/>

<generator> — Название программы, с помощью которой собран канал. Может использоваться, например, для отладки. Атрибуты uri и version необязательные.

<generator uri="/myblog.php" version="1.0">
  Example Toolkit
</generator>

<icon> — Маленькое изображение, пиктограмма канала.

<icon>/icon.jpg</icon>

<logo> — Большое изображение, логотип канала.

<logo>/logo.jpg</logo>

<rights> — Информация об авторском и смежных правах.

<rights> © 2005 John Doe </rights>

<subtitle> — Человеко-читаемое описание или подзаголовок канала.

<subtitle>all your examples are belong to us</subtitle>

Элемент <entry>

Примером элемента <entry> является отдельный пост в блоге или комментарий в форуме.

Обязательные элементы

<id> — Уникальный и постоянный идентификатор сообщения. Два сообщения могут иметь одинаковый идентификатор, если они представляют одну и ту же новость, но в разное время.

<id>http://example.com/blog/1234</id>

<title> — Заголовок сообщения. Не может быть пустым.

<title>Atom-Powered Robots Run Amok</title>

<updated> — Дата последней модификации сообщения.

<updated>2003-12-13T18:30:02-05:00</updated>

Рекоменуемые элементы

<author> — Имя автора (авторов) сообщения.

<author>
  <name>John Doe</name>
</author>

<content> — Текст сообщения или ссылка на полный текст.

<content>complete story here</content>

<link> — Страница, связанная с текстом сообщения.

<link rel="alternate" href="/blog/1234"/>

Необязательные элементы

<category> — Одна или несколько категорий, к которым относится сообщение.

<category term="technology"/>

<contributor> — Имя соавтора новости. Может быть несколько элементов contributor

<contributor>
  <name>Jane Doe</name>
</contributor>

<published> — Дата и время создания или первой публикации сообщения.

<published>2003-12-13T09:17:51-08:00</published>

<source> — Источник сообщения. Если entry копируется из одного канала в другой, то все дочерние элементы entry копируются также.

<source>
  <id>http://example.org/</id>
  <title>Fourty-Two</title>
  <updated>2003-12-13T18:30:02Z</updated>
  <rights>© 2005 Example, Inc.</rights>
</source>

Подробное описание всех перечисленных элементов канала приведено в спецификации Atom.

Дополнительные возможности Atom

Модель содержания

Atom представляет возможность собирать и представлять информацию в различных форматах, таких как обчный текст, HTML, XHTML, XML, двоичные данные в формате Base64 и ссылки на внешнее содержание в документов (например, .pdf), видеофайлов, аудиопотоков и еще ряда других.

Представление даты и времени

Для представления даты и времени Atom использует международный стандарт, описанный в RFC 3339 (из состава стандартов ISO 8601).

Интернационализация

Atom имеет возможность объединить в одном канале информацию на различных языках. Это обеспечивается стандартным атрибутом xml:lang и позволяет делать человеко-читаемыми различные части фида.

Модульность

Спецификация Atom изначально разрабатывалась как открытая и модульная. Это позволяет расширять формат путем подключения внешних модулей, с одной стороны, а с другой — экспортировать возможности Atom во внешние приложения и другие форматы. К примеру, модули RSS 1.0 или RSS 2.0 можно использовать в канале Atom.

Публикация информации

Atom Publishing Protocol (AtomPub) — протокол прикладного уровня для публикации и редактирования веб-ресурсов. Он базируется на представлении данных в формате Atom, в качестве транспорта использует протокол HTTP. AtomPub может использоваться в rich-клиентах (например, в системах управления контентом) или самостоятельных приложениях для управления информацией на веб-сайтах.

Перспективы развития

Дальнейшее развитие стандарта Atom разработчики видят во внесении большей ясности в описание и создании модулей расширения.

Hosted by uCoz