Atom
Логотип Atom
(но пользователи больше привыкли к логотипу RSS)
- Что такое Atom?
- Примеры каналов
- Структура и элементы Atom 1.0
- Дополнительные возможности Atom
- Перспективы развития Atom
Что такое Atom?
Название Atom применяется к двум связанным веб-стандартам: Atom Syndication Format и Atom Publishing Protocol.
- Atom Syndication Format — это основанный на XML язык, используемый для описания каналов новостей;
- 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 <em>lot</em> 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 разработчики видят во внесении большей ясности в описание и создании модулей расширения.