[http://creativecommons.org/licenses/by/3.0/]
This work is licensed under a CC
Attribution 3.0 Unported License [http://creativecommons.org/licenses/by/3.0/]
For many information sources on the Web, it is useful to have some standardized way of subscribing to information updates. Syndication formats such as RSS and Atom can be used by these information sources to publish a feed of updated information items. While RSS and Atom are read-only formats, the Atom Publishing Protocol (AtomPub) build on top of Atom and provides a protocol for submitting new items to feeds.
The Myth of RSS Compatibility [http://diveintomark.org/archives/2004/02/04/incompatible-rss]provides a good overview
why standards are a good thing
<description>This is a <em>very important</em> blog post …
<description>This is a <em>very important</em> blog post …
<description>This is a blog post about <em> in RSS feeds …
<description>This is a blog post about <em> in RSS feeds …
<description>This is a blog post about &lt;em> in RSS feeds …
new RSS
xml:lang
and xml:base
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us"> <title>ongoing</title> <id>http://www.tbray.org/ongoing/</id> <link rel='self' href="http://www.tbray.org/ongoing/ongoing.atom"/> <updated>2007-04-11T12:55:09-07:00</updated> <author> <name>Tim Bray</name> </author> <subtitle>ongoing fragmented essay by Tim Bray</subtitle> <entry xml:base="When/200x/2007/04/02/"> <title>Atom Publishing Protocol Interop!</title> <id>http://www.tbray.org/ongoing/When/200x/2007/04/02/APP-Interop</id> <published>2007-04-02T13:00:00-07:00</published> <updated>2007-04-10T14:24:00-07:00</updated> <category scheme="http://www.tbray.org/ongoing/What/" term="Technology/Atom"/> <category scheme="http://www.tbray.org/ongoing/What/" term="Technology"/> <category scheme="http://www.tbray.org/ongoing/What/" term="Atom"/> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> <p>Mark your calendar: <a href="http://www.intertwingly.net/wiki/pie/April2007Interop">April 16-17 at Google</a>. <em>Everybody</em> is invited, provided they bring along an APP implementation, client or server. This was just announced a couple of days ago, and as I write this there are already <s>six</s> twelve client and <s>seven</s> fourteen server implementations signed up to be there and try to <a href="http://www.intertwingly.net/wiki/pie/InteropGrid">fill in the grid</a>. Let’s drop some names, in alphabetical order: AOL, Flock, Google, IBM, Lotus, Microsoft, Oracle, O’Reilly, Six Apart, Sun, WordPress. Um, have I mentioned that the APP is going to be huge?</p> </div> </content> </entry> </feed>
smartabout what the RSS author really wanted
text
)text
, no child elements are allowed (plain text content)html
then RSS's method of escaped markup is usedxhtml
then there must be an div containing XHTML markuptext/
then no child elements are allowed<content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> One <strong>bold</strong> foot forward </div> </content>[http://www.xml.com/lpt/a/1633]
<content>The "atom:content" element either contains or links to the content of the entry. The content of atom:content is Language-Sensitive.</content>[http://www.xml.com/lpt/a/1633]
<content type="html">The <code>atom:content</code> element either contains or links to the content of the entry. The content of <code>atom:content</code> is <a href="http://www.ietf.org/rfc/rfc3066.txt">Language-Sensitive</a>.</content>[http://www.xml.com/lpt/a/1633]
<content type="image/png"> iVBORw0KGgoA … TAAAAAElFTkSuQmCC </content>[http://www.xml.com/lpt/a/1633]
<content src="image.png" type="image/png"/>[http://www.xml.com/lpt/a/1633]
XMLHttpRequest
gets into the way<link rel="alternate" type="application/rdf+xml" title="…" href="…" /> <link rel="alternate" type="application/rss+xml" title="…" href="…" />
<link rel="alternate" type="application/atom+xml" title="…" href="…" />
CUDout of the
CRUDset of operations
Resource | HTTP Method | Representation | Description |
---|---|---|---|
Introspection | GET | Atom Service Document [Service Documents (1)] | Enumerates a set of collections and lists their URIs and other information about the collections |
Collection | GET | Atom Feed | A list of member of the collection (this may be a subset of all entries in the collection) |
Collection | POST | Atom Entry | Create a new entry in the collection |
Member | GET | Atom Entry | Get the Atom Entry |
Member | PUT | Atom Entry | Update the Atom Entry |
Member | DELETE | n/a | Delete the Atom Entry from the collection |
Service Documents represent server-defined groups of Collections, and are used to initialize the process of creating and editing resources.
realtop-level construct of AtomPub is the workspace
entry
as special value)fixed
)<service xmlns="http://purl.org/atom/app#" xmlns:atom="http://www.w3.org/2005/Atom"> <workspace> <atom:title>Main Site</atom:title> <collection href="http://example.org/reilly/main"> <atom:title>My Blog Entries</atom:title> <categories href="http://example.com/cats/forMain.cats"/> </collection> <collection href="http://example.org/reilly/pic"> <atom:title>Pictures</atom:title> <accept>image/*</accept> </collection> </workspace> <workspace> <atom:title>Side Bar Blog</atom:title> <collection href="http://example.org/reilly/list"> <atom:title>Remaindered Links</atom:title> <accept>entry</accept> <categories fixed="yes"> <atom:category scheme="http://example.org/extra-cats/" term="joke"/> <atom:category scheme="http://example.org/extra-cats/" term="serious"/> </categories> </collection> </workspace> </service>
<app:categories xmlns:app="http://purl.org/atom/app#" xmlns="http://www.w3.org/2005/Atom" fixed="yes" scheme="http://example.com/cats/big3"> <category term="animal"/> <category term="vegetable"/> <category term="mineral"/> </app:categories>