draft-ietf-atompub-protocol-04.txt   draft-ietf-atompub-protocol-05.txt 
Network Working Group J. Gregorio, Ed. Network Working Group J. Gregorio, Ed.
Internet-Draft BitWorking, Inc Internet-Draft BitWorking, Inc
Expires: November 10, 2005 R. Sayre, Ed. Expires: April 14, 2006 B. de hOra, Ed.
May 9, 2005 Propylon Ltd.
October 11, 2005
The Atom Publishing Protocol The Atom Publishing Protocol
draft-ietf-atompub-protocol-04.txt draft-ietf-atompub-protocol-05.txt
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 34 skipping to change at page 1, line 35
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on November 10, 2005. This Internet-Draft will expire on April 14, 2006.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2005). Copyright (C) The Internet Society (2005).
Abstract Abstract
This memo presents a protocol for using XML (Extensible Markup This memo presents a protocol for using XML (Extensible Markup
Language) and HTTP (HyperText Transport Protocol) to edit content. Language) and HTTP (HyperText Transport Protocol) to edit content.
The Atom Publishing Protocol is an application-level protocol for The Atom Publishing Protocol (APP) is an application-level protocol
publishing and editing Web resources belonging to periodically for publishing and editing Web resources. The protocol at its core
updated websites. The protocol at its core is the HTTP transport of is the HTTP transport of Atom-formatted representations. The Atom
Atom-formatted representations. The Atom format is documented in the format is documented in the Atom Syndication Format
Atom Syndication Format (draft-ietf-atompub-format-06.txt). (draft-ietf-atompub-format-11.txt).
Editorial Note Editorial Note
To provide feedback on this Internet-Draft, join the atom-protocol To provide feedback on this Internet-Draft, join the atom-protocol
mailing list (http://www.imc.org/atom-protocol/index.html) [1]. mailing list (http://www.imc.org/atom-protocol/index.html) [1].
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Notational Conventions . . . . . . . . . . . . . . . . . . . . 4 2. XML Namespace and Language . . . . . . . . . . . . . . . . . 5
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Notational Conventions . . . . . . . . . . . . . . . . . . . 6
4. The Atom Publishing Protocol Model . . . . . . . . . . . . . . 6 4. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1 Collections . . . . . . . . . . . . . . . . . . . . . . . 6 5. The Atom Publishing Protocol Model . . . . . . . . . . . . . 8
4.2 Discovery . . . . . . . . . . . . . . . . . . . . . . . . 6 5.1 Collections . . . . . . . . . . . . . . . . . . . . . . . 8
4.3 Listing . . . . . . . . . . . . . . . . . . . . . . . . . 7 5.2 Editable Resources . . . . . . . . . . . . . . . . . . . . 9
4.4 Authoring . . . . . . . . . . . . . . . . . . . . . . . . 7 5.2.1 Read . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.4.1 Create . . . . . . . . . . . . . . . . . . . . . . . . 7 5.2.2 Update . . . . . . . . . . . . . . . . . . . . . . . . 10
4.4.2 Read . . . . . . . . . . . . . . . . . . . . . . . . . 8 5.2.3 Delete . . . . . . . . . . . . . . . . . . . . . . . . 10
4.4.3 Update . . . . . . . . . . . . . . . . . . . . . . . . 8 5.3 Capabilities Discovery . . . . . . . . . . . . . . . . . . 11
4.4.4 Delete . . . . . . . . . . . . . . . . . . . . . . . . 8 5.4 Listing . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.5 Success and Failure . . . . . . . . . . . . . . . . . . . 9 5.5 Success and Failure . . . . . . . . . . . . . . . . . . . 12
5. Collections . . . . . . . . . . . . . . . . . . . . . . . . . 10 6. Atom Publishing Protocol Documents . . . . . . . . . . . . . 13
5.1 Collection Documents . . . . . . . . . . . . . . . . . . . 10 6.1 Use of xml:base xml:lang . . . . . . . . . . . . . . . . . 13
5.1.1 Element Definitions . . . . . . . . . . . . . . . . . 10 6.2 Collection Documents . . . . . . . . . . . . . . . . . . . 14
5.2 Collection Resource . . . . . . . . . . . . . . . . . . . 12 6.2.1 Element Definitions . . . . . . . . . . . . . . . . . 14
5.2.2 POST . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.3 Introspection Documents . . . . . . . . . . . . . . . . . 16
5.2.3 Usage Scenarios . . . . . . . . . . . . . . . . . . . 15 6.3.1 Element Definitions . . . . . . . . . . . . . . . . . 17
5.2.4 Range: Header . . . . . . . . . . . . . . . . . . . . 16 7. Introspection Resource . . . . . . . . . . . . . . . . . . . 20
5.2.5 Accept-Ranges: Header . . . . . . . . . . . . . . . . 16 7.1 Discovery . . . . . . . . . . . . . . . . . . . . . . . . 20
5.2.6 Name: Header . . . . . . . . . . . . . . . . . . . . . 17 8. Collection Resources . . . . . . . . . . . . . . . . . . . . 21
6. Entry Collection . . . . . . . . . . . . . . . . . . . . . . . 18 8.1 GET . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.1 Editing Entry Resources . . . . . . . . . . . . . . . . . 18 8.2 POST . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.2 Role of Atom Entry Elements During Editing . . . . . . . . 18 8.3 Title: Header . . . . . . . . . . . . . . . . . . . . . . 22
7. Generic Collection . . . . . . . . . . . . . . . . . . . . . . 20 9. Entry Collections . . . . . . . . . . . . . . . . . . . . . 23
7.1 Editing Generic Resources . . . . . . . . . . . . . . . . 20 9.1 Editing Entry Resources . . . . . . . . . . . . . . . . . 23
8. Introspection . . . . . . . . . . . . . . . . . . . . . . . . 21 9.2 Role of Atom Entry Elements During Editing . . . . . . . . 23
8.1 Introspection Document . . . . . . . . . . . . . . . . . . 21 10. Generic Collections . . . . . . . . . . . . . . . . . . . . 25
8.1.1 Element Definitions . . . . . . . . . . . . . . . . . 21 10.1 Editing Generic Resources . . . . . . . . . . . . . . . 25
8.2 Introspection Resource . . . . . . . . . . . . . . . . . . 23 10.2 Title: Header . . . . . . . . . . . . . . . . . . . . . 25
8.2.1 Discovery . . . . . . . . . . . . . . . . . . . . . . 24 11. List Resources . . . . . . . . . . . . . . . . . . . . . . . 26
9. Securing the Atom Protocol . . . . . . . . . . . . . . . . . . 25 11.1 URI Templates . . . . . . . . . . . . . . . . . . . . . 26
10. Security Considerations . . . . . . . . . . . . . . . . . . 26 11.2 URI Template Parameters . . . . . . . . . . . . . . . . 27
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . 27 11.2.1 \{index\} URI template variable . . . . . . . . . . 27
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 11.2.2 \{daterange\} URI template variable . . . . . . . . 27
12.1 Normative References . . . . . . . . . . . . . . . . . . . 30 11.2.3 Other URI Template parameters . . . . . . . . . . . 28
12.2 Informative References . . . . . . . . . . . . . . . . . . 31 12. Atom Entry Extensions . . . . . . . . . . . . . . . . . . . 29
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 32 13. Securing the Atom Protocol . . . . . . . . . . . . . . . . . 30
A. Revision History . . . . . . . . . . . . . . . . . . . . . . . 33 14. Security Considerations . . . . . . . . . . . . . . . . . . 31
Intellectual Property and Copyright Statements . . . . . . . . 35 15. IANA Considerations . . . . . . . . . . . . . . . . . . . . 32
16. References . . . . . . . . . . . . . . . . . . . . . . . . . 35
16.1 Normative References . . . . . . . . . . . . . . . . . . 35
16.2 Informative References . . . . . . . . . . . . . . . . . 36
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 37
A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 38
B. Revision History . . . . . . . . . . . . . . . . . . . . . . 39
Intellectual Property and Copyright Statements . . . . . . . 41
1. Introduction 1. Introduction
The Atom Publishing Protocol is an application-level protocol for The Atom Publishing Protocol is an application-level protocol for
publishing and editing Web resources using HTTP [RFC2616] and XML 1.0 publishing and editing Web resources using HTTP [RFC2616] and XML 1.0
[W3C.REC-xml-20040204]. [W3C.REC-xml-20040204].
2. Notational Conventions 2. XML Namespace and Language
The XML Namespaces URI [W3C.REC-xml-names-19990114] for the XML data
format described in this specification is: http://purl.org/atom/app#
XML elements defined by this specification MAY have an xml:lang
attribute, whose content indicates the natural language for the
element (and its descendents). The language context is only
significant for elements and attributes declared to be "Language-
Sensitive" by this specification. Requirements regarding the content
and interpretation of xml:lang are specified in [W3C.REC-xml-
20040204], Section 2.12.
3. Notational Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
3. Terminology Some sections of this specification are illustrated with fragments of
a non-normative RELAX NG Compact schema [RNC]. However, the text of
this specification provides the definition of conformance.
This specification uses the namespace prefix "app:" for the Namespace
URI identified in Section 2 above. It uses the namespace prefix
"atom:" for the Namespace URI identified in [AtomFormat]. Note that
choices of namespace prefix are arbitrary and not semantically
significant.
4. Terminology
For convenience, this protocol may be referred to as "Atom Protocol"
or "APP". This specification uses both internally.
URI/IRI - A Uniform Resource Identifier and Internationalized URI/IRI - A Uniform Resource Identifier and Internationalized
Resource Identifier, respectively. These terms (and the distinction Resource Identifier, respectively. These terms (and the distinction
between them) are defined in [RFC3986] and [RFC3987]. between them) are defined in [RFC3986] and [RFC3987].
Resource - an item identified by a URI [W3C.REC-webarch-20041215]. Resource - A network data object or service that can be identified
by a URI, as defined in [RFC2616].
Collection Resource - A resource that contains a listing of Member
Resources and meets the requirements in Section 5 of this
specification.
Member Resource - A resource whose URI is listed by a Collection Representation - An entity included with a request or response as
Resource. defined in [RFC2616].
4. The Atom Publishing Protocol Model 5. The Atom Publishing Protocol Model
The Atom Publishing Protocol operates on collections of Web The Atom Publishing Protocol is a subset of HTTP that is used to edit
resources. All collections support the same basic interactions, as resources on the web. The APP operates on collections of Web
do the resources within the collections. The patterns of interaction resources. Collections are HTTP resources, as are the members of the
are based on the common HTTP verbs. collection. Both Collections and collection member resources support
the same basic interactions. The patterns of interaction are based
on the common HTTP verbs.
o GET is used to retrieve a representation of a resource or perform o GET is used to retrieve a representation of a resource or perform
a read-only query. a read-only query.
o POST is used to create a new, dynamically-named resource. o POST is used to create a new, dynamically-named resource, or to
provide a block of data to a data-handling process.
o PUT is used to update a known resource. o PUT is used to update a known resource.
o DELETE is used to remove a resource. o DELETE is used to remove a resource.
4.1 Collections 5.1 Collections
The APP groups resources into "Collections", which are analogous to The APP groups resources into "Collections", which are analogous to
the "folders" or "directories" found in many file systems. folders or directories found in a file system. In the figure we have
member resources in a collection.
4.2 Discovery
To discover the location of the collections exposed by an APP +-------------------------+
service, the client must locate and request an Introspection Document | Collection |
(Section 8). | |
| +----------------+ |
| | Member_A | |
| +----------------+ |
| |
| +----------------+ |
| | Member_B | |
| +----------------+ |
| |
| +----------------+ |
| | Member_C | |
| +----------------+ |
| |
| ... |
| |
| +----------------+ |
| | Member_Oldest | |
| +----------------+ |
| |
+-------------------------+
To add a new member to a collection an appropriate representation is
POSTed to the URI of the collection resource. Here we show it being
added to the beginnng of the list. The ordering of the members of
collections is in terms of the time at which each resource was last
updated, which includes the act of creating the resource. The
ordering of collection members is covered in more detail in Section 8
and Section 11.
Client Server +-------------------------+
| Collection |
| | | |
| 1.) GET Introspection | POST | +----------------+ |
|------------------------------->| --------->| Member_New | |
| +----------------+ |
| | | |
| 2.) Introspection Doc | | +----------------+ |
|<-------------------------------| | | Member_A | |
| +----------------+ |
| |
| +----------------+ |
| | Member_B | |
| +----------------+ |
| | | |
| +----------------+ |
| | Member_C | |
| +----------------+ |
| |
| ... |
| |
| +----------------+ |
| | Member_Oldest | |
| +----------------+ |
| |
+-------------------------+
1. The client sends a GET request to the Service Description You'll note that up until now we haven't said what kinds of
Resource. representations we are expecting at each of the resources. There are
two kinds of collections, Entry and Generic. In Entry Collections
all the members MUST have representations as Atom Entries. For
further restrictions on Entry Collection see Section 9 The other type
of collection is a Generic Collection. Generic Collections make no
restriction on the representations of their member resources.
2. The server responds with an Introspection Document containing the 5.2 Editable Resources
locations of collections provided by the service. The content of
this document can vary based on aspects of the client request,
including, but not limited to, authentication credentials.
4.3 Listing All the members of a collection are Editable Resources. An Editable
resource is a resource whose available HTTP methods can be used to
retrieve, update and delete it.
Once the client has discovered the location of a collection, it can 5.2.1 Read
request a listing of the collection's membership. However,
collections might be extremely large, so servers are likely to list a To retrieve a representation of the resource, you send a GET to the
small subset of the collection by default. URI of the Editable Resource. Remember that for members of Entry
Collections, the served representation will be an Atom Entry.
Client Server Client Server
| | | |
| 1.) GET to Collection URI | | 1.) GET to Editable Resource URI |
|------------------------------->| |------------------------------------------>|
| | | |
| 2.) 200 OK, Atom Feed Doc | | 2.) 200 OK |
|<-------------------------------| |<------------------------------------------|
| | | |
1. The client sends a GET request to the Collection's URI. 1. The client sends a GET request to the member's URI.
2. The server responds with an Atom Feed Document containing a full
or partial listing of the collection's membership.
4.4 Authoring 2. The server responds with the representation of the resource.
After locating a collection, a client can add entries by sending a 5.2.2 Update
request to the collection; other changes are accomplished by sending
HTTP requests to its member resources.
4.4.1 Create To update an Editable Resource the client will PUT an updated
representation to the URI of the resource.
Client Server Client Server
| | | |
| 1.) POST to Collection URI | | 1.) PUT to Editable Resource URI |
|------------------------------->| |------------------------------------------>|
| |
| 2.) 201 Created @ Location |
|<-------------------------------|
| | | |
| 2.) 200 OK |
|<------------------------------------------|
1. The client sends a representation of a member to the server via 1. The client PUTs an updated representation to the member's URI.
HTTP POST. The Request URI is that of the Collection.
2. The server responds with a response of "201 Created" and a 2. The server MAY respond with an updated representation of the
"Location" header containing the URI of the newly-created member's new state.
resource.
4.4.2 Read 5.2.3 Delete
An Editable Resource is deleted by sending it DELETE. Note that this
also removes it from all the collections that it belonged to.
Client Server Client Server
| | | |
| 1.) GET or HEAD to Member URI | | 1.) DELETE to Editable Resource URI |
|------------------------------->| |------------------------------------------>|
| | | |
| 2.) 200 OK | | 2.) 200 Ok |
|<-------------------------------| |<------------------------------------------|
| | | |
1. The client sends a GET (or HEAD) request to the member's URI. 1. The client sends a DELETE request to the member's URI.
2. The server responds with an appropriate representation. 2. The server responds with successful status code.
4.4.3 Update 5.3 Capabilities Discovery
Each collection resource responds to GET and can return a Collection
Document as it's representation. The Collection Document enumerates
the capabilities of each collection and the format is described in
Section 6.2.
Client Server Client Server
| | | |
| 1.) PUT to Member URI | | 1.) GET to Collection |
|------------------------------->| |------------------------------->|
| | | |
| 2.) 200 OK | | 2.) Collection Document |
|<-------------------------------| |<-------------------------------|
| |
1. The client PUTs an updated representation to the member's URI. 1. The client sends a GET request to the Collection Resource.
2. The server responds with a representation of the member's new 2. The server responds with a Collection Document containing a
state. description of the capabilities of the collection. The content
of this document can vary based on aspects of the client request,
including, but not limited to, authentication credentials.
4.4.4 Delete 5.4 Listing
Clients can request a listing of the Collection's membership.
Listing the Editable Resources that are members of a collection is
done using one of the List Resources in the Introspection Document,
utilizing the 'app:uri-template' element. The List Resource returns
Atom Feed Documents with one Atom Entry for each member resource that
match the selection criteria. This is true whether the collection is
an Entry Collection or a Generic Collection. If an Entry Collection
is being interrogated, the entries returned by a list resource SHOULD
NOT to be considered complete representations of the member
resources. See Section 11 and Section 12 for more details on the
extensions and constraints found on the entries returned from List
Resources.
Client Server Client Server
| | | |
| 1.) DELETE to Member URI | | 1.) GET to List Resource |
|------------------------------->| |------------------------------->|
| | | |
| 2.) 204 No Content | | 2.) 200 OK, Atom Feed Doc |
|<-------------------------------| |<-------------------------------|
| | | |
1. The client sends a DELETE request to the member's URI. 1. The client sends a GET request to the Collection's URI.
2. The server responds with successful status code. 2. The server responds with an Atom Feed Document containing a full
or partial listing of the Collection's membership.
4.5 Success and Failure 5.5 Success and Failure
HTTP defines classes of response. HTTP status codes of the form 2xx HTTP defines different classes of response, which are used by the
signal that a request was successful. HTTP status codes of the form Atom Protocol. HTTP status codes of the form 2xx signal that a
4xx or 5xx signal that an error has occurred, and the request has request was successful. HTTP status codes of the form 4xx or 5xx
failed. Consult the HTTP specification for more detailed definitions signal that an error has occurred, and the request has failed.
of each status code. Consult the HTTP specification [RFC2616] for more detailed
definitions of each status code.
5. Collections 6. Atom Publishing Protocol Documents
An Atom Collection is a set of related resources. All members of a This specification describes two kinds of Atom Publishing Protocol
collection have an "updated" property, and the collection is Documents: Atom Collections Documents and Atom Introspection
considered to be ordered by this property. Documents.
5.1 Collection Documents An Atom Collection Document is a representation of an Atom
collection, including metadata about the collection, and some or all
of the members associated with it. Its root is the app:collection
element.
An example Collection Document. An Atom Introspection Document represents one or more workspaces,
which describe server-defined groupings of collections. Its root is
the app:service element.
namespace app = "..." start = appCollection | appIntrospection
Both kinds of Atom Publishing Protocol Documents are specified in
terms of the XML Information Set, serialised as XML 1.0 ([W3C.REC-
xml-20040204]). Atom Publishing Protocol Documents MUST be well-
formed XML. This specification does not define a DTD for Atom
Protocol, and hence does not require them to be valid (in the sense
used by XML).
Atom Collection Documents are identified with the "application/
atomcoll+xml" media type.
Atom Introspection Documents are identified with the "application/
atomserv+xml" media type.
Atom allows the use of IRIs [RFC3987], as well as URIs [RFC3986].
Every URI is an IRI, so any URI can be used where an IRI is needed.
While IRIs must, for many protocols, be mapped to URIs prior to
dereferencing, they MUST NOT be so mapped for comparison when used in
atom:id. Section 3.1 of [RFC3987] describes how to map an IRI to a
URI when necessary.
6.1 Use of xml:base xml:lang
Any element defined by this specification MAY have an xml:base
attribute [W3C.REC-xmlbase-20010627]. When xml:base is used in an
Atom Publishing Protocol Document, it serves the function described
in section 5.1.1 of [RFC3986], establishing the base URI (or IRI) for
resolving any relative references found within the effective scope of
the xml:base attribute.
Any element defined by this specification MAY have an xml:lang
attribute, whose content indicates the natural language for the
element and its descendents. The language context is only
significant for elements and attributes declared to be "Language-
Sensitive" by this specification. Requirements regarding the content
and interpretation of xml:lang are specified in XML 1.0 ([W3C.REC-
xml-20040204]), Section 2.12.
appCommonAttributes =
attribute xml:base { atomUri }?,
attribute xml:lang { atomLanguageTag }?,
undefinedAttribute*
6.2 Collection Documents
The Collection Document describes the capabilities of a Collection,
the types of Entries that it will support, the URI Templates it
supports.
The Collection Document has the media-type 'application/atomcoll+xml'
(see Section 15).
Here's an example document:
<?xml version="1.0" encoding='utf-8'?> <?xml version="1.0" encoding='utf-8'?>
<collection xmlns="http://purl.org/atom/app#"> <app:collection xmlns:app="http://purl.org/atom/app#">
<member href="http://example.org/1" <app:member-type>entry</pub:member-type>
hrefreadonly="http://example.com/1/bar" <app:uri-template>http://example.org/{index}</pub:uri-template>
title="Sample 1" <app:uri-template>http://example.org/{daterange}</pub:uri-template>
updated="2003-12-13T18:30:02Z" /> </app:collection>
<member href="http://example.org/2"
hrefreadonly="http://example.com/2/bar"
title="Sample 2"
updated="2003-12-13T18:30:02Z" />
<member href="http://example.org/3"
hrefreadonly="http://example.com/3/bar"
title="Sample 3"
updated="2003-12-13T18:30:02Z" />
<member href="http://example.org/4"
title="Sample 4"
updated="2003-12-13T18:30:02Z" />
</collection>
Atom Collection Documents have the media-type 'application/ This example says the Collection contains Atom Entry documents, and
atomcoll+xml', see Section 11. that there are two means of selecting entries using what are called
'URI Templates'; one based on the collection's order, and another
based on dates. See Section 11.1 for more about URI Templates.
5.1.1 Element Definitions 6.2.1 Element Definitions
5.1.1.1 The 'app:collection' Element 6.2.1.1 The 'app:collection' Element
The 'app:collection' element represents an Atom Collection. A The app:collection is the document element of a Collection Document.
collection document does not necessarily list every member of the
collection.
appCollection = appCollection =
element app:collection { element app:collection {
attribute next { text } ?, appCommonAttributes,
appMember* ( appMemberType+
appSearchTemplate
& anyElement* )
} }
o 'app:collection' elements MAY contain any number of 'app:member'
elements.
o 'app:collection' elements MAY contain a 'next' attribute which This specification defines two child elements for app:collection:
identifies a collection document containing member elements
updated earlier in time.
The members listed in a collection document MUST constitute a o app:member-type: any number of elements listing the types of
consecutive sequence of the collection's members, ordered by their Entries that the Collection may contain.
"updated" properties. That is, a collection document MUST contain a
contiguous subset of the members of the collection ordered by their
'updated' property.
5.1.1.2 The 'app:member' Element o app:uri-template: any number of URI Templates for a List Resource
(See Section 11).
The 'app:member' represent