draft-ietf-atompub-protocol-09.txt   draft-ietf-atompub-protocol-10.txt 
Network Working Group J. Gregorio, Ed. Network Working Group J. Gregorio, Ed.
Internet-Draft BitWorking, Inc Internet-Draft IBM
Expires: December 25, 2006 B. de hOra, Ed. Expires: March 9, 2007 B. de hOra, Ed.
Propylon Ltd. Propylon Ltd.
June 23, 2006 September 05, 2006
The Atom Publishing Protocol The Atom Publishing Protocol
draft-ietf-atompub-protocol-09.txt draft-ietf-atompub-protocol-10.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 35 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 December 25, 2006. This Internet-Draft will expire on March 9, 2007.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2006). Copyright (C) The Internet Society (2006).
Abstract Abstract
The Atom Publishing Protocol (APP) is an application-level protocol The Atom Publishing Protocol (APP) is an application-level protocol
for publishing and editing Web resources. The protocol is based on for publishing and editing Web resources. The protocol is based on
HTTP transport of Atom-formatted representations. The Atom format is HTTP transport of Atom-formatted representations. The Atom format is
documented in the Atom Syndication Format (RFC4287). documented in the Atom Syndication Format (RFC4287).
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 . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Notational Conventions . . . . . . . . . . . . . . . . . . . 5 2. Notational Conventions . . . . . . . . . . . . . . . . . . . 5
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1 XML-related Conventions . . . . . . . . . . . . . . . . . 5
4. Protocol Model . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.1 Referring to Information Items . . . . . . . . . . . . 5
5. Protocol Operations . . . . . . . . . . . . . . . . . . . . 8 2.1.2 RELAX NG Schema . . . . . . . . . . . . . . . . . . . 5
5.1 Retrieving an Introspection Document . . . . . . . . . . . 8 2.1.3 Use of xml:base and xml:lang . . . . . . . . . . . . . 5
5.2 Creating a Resource . . . . . . . . . . . . . . . . . . . 8 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 7
5.3 Editing a Resource . . . . . . . . . . . . . . . . . . . . 8 4. Protocol Model . . . . . . . . . . . . . . . . . . . . . . . 8
5.3.1 Retrieving a Resource . . . . . . . . . . . . . . . . 9 5. Protocol Operations . . . . . . . . . . . . . . . . . . . . 10
5.3.2 Updating a Resource . . . . . . . . . . . . . . . . . 9 5.1 Retrieving a Service Document . . . . . . . . . . . . . . 10
5.3.3 Deleting a Resource . . . . . . . . . . . . . . . . . 9 5.2 Listing Collection Members . . . . . . . . . . . . . . . . 10
5.4 Listing Collection Members . . . . . . . . . . . . . . . . 10 5.3 Creating a Resource . . . . . . . . . . . . . . . . . . . 11
5.5 Use of HTTP Response codes . . . . . . . . . . . . . . . . 10 5.4 Editing a Resource . . . . . . . . . . . . . . . . . . . . 11
6. XML-related Conventions . . . . . . . . . . . . . . . . . . 11 5.4.1 Retrieving a Resource . . . . . . . . . . . . . . . . 11
6.1 Referring to Information Items . . . . . . . . . . . . . . 11 5.4.2 Updating a Resource . . . . . . . . . . . . . . . . . 12
6.2 XML Namespace Usage . . . . . . . . . . . . . . . . . . . 11 5.4.3 Deleting a Resource . . . . . . . . . . . . . . . . . 12
6.3 Use of xml:base and xml:lang . . . . . . . . . . . . . . . 11 5.5 Use of HTTP Response codes . . . . . . . . . . . . . . . . 12
6.4 RELAX NG Schema . . . . . . . . . . . . . . . . . . . . . 12 6. Atom Publishing Protocol Documents . . . . . . . . . . . . . 13
7. Introspection Documents . . . . . . . . . . . . . . . . . . 13 6.1 Document Types . . . . . . . . . . . . . . . . . . . . . . 13
7.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . 13 6.2 Document Extensibility . . . . . . . . . . . . . . . . . . 13
7. Category Documents . . . . . . . . . . . . . . . . . . . . . 14
7.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . 14
7.2 Element Definitions . . . . . . . . . . . . . . . . . . . 14 7.2 Element Definitions . . . . . . . . . . . . . . . . . . . 14
7.2.1 The "app:service" Element . . . . . . . . . . . . . . 14 7.2.1 The "app:categories" element . . . . . . . . . . . . . 14
7.2.2 The "app:workspace" Element . . . . . . . . . . . . . 14 8. Service Documents . . . . . . . . . . . . . . . . . . . . . 16
7.2.3 The "app:collection" Element . . . . . . . . . . . . . 15 8.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . 16
7.2.4 The "app:accept" Element . . . . . . . . . . . . . . . 16 8.2 Element Definitions . . . . . . . . . . . . . . . . . . . 17
8. Collections . . . . . . . . . . . . . . . . . . . . . . . . 17 8.2.1 The "app:service" Element . . . . . . . . . . . . . . 17
8.1 Creating resources with POST . . . . . . . . . . . . . . . 17 8.2.2 The "app:workspace" Element . . . . . . . . . . . . . 17
8.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . 17 8.2.3 The "app:collection" Element . . . . . . . . . . . . . 18
8.3 The 'edit' Link . . . . . . . . . . . . . . . . . . . . . 19 8.2.4 The "app:accept" Element . . . . . . . . . . . . . . . 19
8.4 Media Resources and Media Link Entries . . . . . . . . . . 19 8.2.5 The "app:categories" Element . . . . . . . . . . . . . 20
8.4.1 Title: Header . . . . . . . . . . . . . . . . . . . . 20 9. Creating and Editing Resources . . . . . . . . . . . . . . . 22
8.4.2 Example . . . . . . . . . . . . . . . . . . . . . . . 20 9.1 Member URIs . . . . . . . . . . . . . . . . . . . . . . . 22
8.5 Editing Entries with Foreign Markup . . . . . . . . . . . 21 9.2 Creating resources with POST . . . . . . . . . . . . . . . 22
9. Listing Collections . . . . . . . . . . . . . . . . . . . . 22 9.2.1 Example . . . . . . . . . . . . . . . . . . . . . . . 23
9.1 Collection Paging . . . . . . . . . . . . . . . . . . . . 22 9.3 Updating Resources with PUT . . . . . . . . . . . . . . . 24
10. Atom Format Link Relation Extensions . . . . . . . . . . . . 24 9.4 Deleting Resources with DELETE . . . . . . . . . . . . . . 24
10.1 The "edit" Link Relation . . . . . . . . . . . . . . . . 24 9.5 Media Resources and Media Link Entries . . . . . . . . . . 24
10.2 The "edit-media" Link Relation . . . . . . . . . . . . . 24 9.6 The Slug: Header . . . . . . . . . . . . . . . . . . . . . 25
11. Atom Publishing Control Extensions . . . . . . . . . . . . . 25 9.6.1 Slug: Header syntax . . . . . . . . . . . . . . . . . 25
11.1 The Atom Publishing Control Namespace . . . . . . . . . 25 9.6.2 Examples . . . . . . . . . . . . . . . . . . . . . . . 26
11.2 The "pub:control" Element . . . . . . . . . . . . . . . 25 10. Listing Collections . . . . . . . . . . . . . . . . . . . . 28
11.2.1 The "pub:draft" Element . . . . . . . . . . . . . . 25 10.1 Collection Paging . . . . . . . . . . . . . . . . . . . 28
12. Securing the Atom Protocol . . . . . . . . . . . . . . . . . 26 11. Atom Format Link Relation Extensions . . . . . . . . . . . . 30
13. Security Considerations . . . . . . . . . . . . . . . . . . 27 11.1 The "edit" Link Relation . . . . . . . . . . . . . . . . 30
14. IANA Considerations . . . . . . . . . . . . . . . . . . . . 28 11.2 The "edit-media" Link Relation . . . . . . . . . . . . . 30
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 12. Atom Publishing Controls . . . . . . . . . . . . . . . . . . 31
15.1 Normative References . . . . . . . . . . . . . . . . . . 30 12.1 The "app:control" Element . . . . . . . . . . . . . . . 31
15.2 Informative References . . . . . . . . . . . . . . . . . 31 12.1.1 The "app:draft" Element . . . . . . . . . . . . . . 31
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 32 13. Securing the Atom Protocol . . . . . . . . . . . . . . . . . 32
A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 33 14. Security Considerations . . . . . . . . . . . . . . . . . . 33
B. RELAX NG Compact Schema . . . . . . . . . . . . . . . . . . 34 15. IANA Considerations . . . . . . . . . . . . . . . . . . . . 34
C. Revision History . . . . . . . . . . . . . . . . . . . . . . 37 15.1 Content-type registration for
Intellectual Property and Copyright Statements . . . . . . . 40 'application/atomserv+xml' . . . . . . . . . . . . . . . 34
15.2 Content-type registration for
'application/atomcat+xml' . . . . . . . . . . . . . . . 35
16. References . . . . . . . . . . . . . . . . . . . . . . . . . 37
16.1 Normative References . . . . . . . . . . . . . . . . . . 37
16.2 Informative References . . . . . . . . . . . . . . . . . 38
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 39
A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 40
B. RELAX NG Compact Schema . . . . . . . . . . . . . . . . . . 41
C. Revision History . . . . . . . . . . . . . . . . . . . . . . 47
Intellectual Property and Copyright Statements . . . . . . . 50
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]. The protocol supports the creation of [W3C.REC-xml-20040204]. The protocol supports the creation of
arbitrary web resources and provides facilities for: arbitrary web resources and provides facilities for:
o Collections: Sets of resources, which can be retrieved in whole or o Collections: Sets of resources, which can be retrieved in whole or
in part. in part.
o Introspection: Discovering and describing collections. o Service: Discovering and describing Collections.
o Editing: Creating, updating and deleting resources. o Editing: Creating, updating and deleting resources.
2. Notational Conventions 2. 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].
Note: The Introspection Document allows the use of IRIs [RFC3987], as Atom Protocol documents allow the use of IRIs [RFC3987], as well as
well as URIs [RFC3986]. Every URI is an IRI, so any URI can be used URIs [RFC3986]. Before an IRI found in a document is used by HTTP,
where an IRI is needed. How to map an IRI to a URI is specified in the IRI is first converted to a URI according the procedure defined
Section 3.1 of Internationalized Resource Identifiers (IRIs) in [RFC3987] (Section 3.1). The resource identified by the URI after
[RFC3987]. conversion is the same as the one identified by the IRI.
2.1 XML-related Conventions
2.1.1 Referring to Information Items
Atom Protocol Document formats are specified in terms of the XML
Information Set [W3C.REC-xml-infoset-20040204], serialized as XML 1.0
[W3C.REC-xml-20040204].
The Infoset terms "Element Information Item" and "Attribute
Information Item" are shortened to "element" and "attribute"
respectively. Therefore, when this specification uses the term
"element", it is referring to an Element Information Item, and when
it uses the term "attribute", it is referring to an Attribute
Information Item.
2.1.2 RELAX NG Schema
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. Complete
schemas appear in Appendix B.
2.1.3 Use of xml:base and xml:lang
XML elements defined by this specification MAY have an xml:base
attribute [W3C.REC-xmlbase-20010627]. When xml:base is used, it
serves the function described in section 5.1.1 of URI Generic Syntax
[RFC3986], by establishing the base URI (or IRI) for resolving
relative references found within the 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 Section 2.12 of XML
1.0 [W3C.REC-xml-20040204].
3. Terminology 3. Terminology
For convenience, this protocol can be referred to as the "Atom For convenience, this protocol can be referred to as the "Atom
Protocol" or "APP". Protocol" or "APP".
URI/IRI - A Uniform Resource Identifier and Internationalized URI/IRI - A Uniform Resource Identifier and Internationalized
Resource Identifier. These terms and the distinction between them Resource Identifier. These terms and the distinction between them
are defined in [RFC3986] and [RFC3987]. Note that IRIs are mapped to are defined in [RFC3986] and [RFC3987]. IRIs are mapped to URIs
URIs before dereferencing takes place. before dereferencing takes place.
The phrase "the URI of a document" in this specification is shorthand
for "a URI which, when dereferenced, is expected to produce that
document as a representation".
Resource - A network-accessible data object or service identified by Resource - A network-accessible data object or service identified by
an IRI, as defined in [RFC2616]. See [W3C.REC-webarch-20041215] for an IRI, as defined in [RFC2616]. See [W3C.REC-webarch-20041215] for
further discussion on resources. further discussion on resources.
The phrase "the URI of a document" in this specification is shorthand
for "an URI which, when dereferenced, is expected to produce that
document as a representation".
Representation - An entity included with a request or response as Representation - An entity included with a request or response as
defined in [RFC2616]. defined in [RFC2616].
Collection - A resource that contains a set of member IRIs. See Collection - A resource that contains a set of Member IRIs. See
Section 8. Section 9.
Member - A resource whose IRI is listed in a Collection. Member - A resource whose IRI is listed in a Collection by a link
element with a relation of "edit" or "edit-media". See Section 9.1.
Introspection Document - A document that describes the location and Workspace - A group of collections. See Section 8.
capabilities of one or more Collections. See Section 7.
Service Document - A document that describes the location and
capabilities of one or more Collections. See Section 8.
Category Document - A document that describes the categories allowed
in a Collection. See Section 7.
4. Protocol Model 4. Protocol Model
The Atom Publishing Protocol uses HTTP to edit and author web The Atom Publishing Protocol uses HTTP methods to edit and author
resources. The Atom Protocol uses the following HTTP methods: Member Resources as follows:
o GET is used to retrieve a representation of a resource or perform o GET is used to retrieve a representation of a known resource.
a query.
o POST is used to create a new, dynamically-named resource. o POST is used to create a new, dynamically-named, resource.
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 known resource.
Along with operations on resources the Atom Protocol provides Along with operations on Member Resources the Atom Protocol defines
structures, called Collections, for managing and organising Collection resources for managing and organizing Member Resources.
resources, called Members. Collections contain the IRIs of, and Collections are represented by Atom Feed documents and contain the
metadata about, their Member resources. Atom Protocol clients can IRIs of, and metadata about, their Member Resources.
use Introspection documents, which represent server-defined groups of
Collections, to initialize the process of creating and editing
resources.
Note that when an IRI is used for resource retrieval over HTTP, the There are two kinds of Member Resources - Member Entry Resources and
IRI is first converted to a URI according the procedure defined in Media Resources. Member Entry Resources are represented as Atom
[RFC3987] section 3.1. The resource that the IRI locates is the same Entries. Media Resources MAY have representations in any media type.
as the one located by the URI obtained after converting the IRI. A Media Link Entry is a Member Entry that contains metadata about a
Media Resource. This diagram shows the classification of the
resources:
Member Resource
-> Member Entry Resource
-> Media Link Entry Resource
-> Media Resource
Collections, represented by Atom feeds, contain entries. Those
entries contain the Member Entry and Media Resources IRIs of the
Collection. A Collection can contain any number of entries of either
kind. In the diagram of a Collection below there are two entries.
The first contains the IRI of a Member Entry Resource. The second
contains the IRIs of both a Media Resource and a Media Link Entry
Resource, which contains the metadata for that Media Resource:
Collection
Entry
Member Entry IRI -> Member Entry Resource
Entry
Member Entry IRI -> Media Link Entry Resource
Media IRI -> Media Resource
Service Documents represent server-defined groups of Collections, and
are used to initialize the process of creating and editing resources.
5. Protocol Operations 5. Protocol Operations
5.1 Retrieving an Introspection Document 5.1 Retrieving a Service Document
Client Server Client Server
| | | |
| 1.) GET to URI of Introspection Document | | 1.) GET to URI of Service Document |
|------------------------------------------>| |------------------------------------------>|
| | | |
| 2.) Introspection Document | | 2.) Service Document |
|<------------------------------------------| |<------------------------------------------|
| | | |
1. The client sends a GET request to the URI of the Introspection 1. The client sends a GET request to the URI of the Service
Document. Document.
2. The server responds with the document enumerating the IRIs of a 2. The server responds with the document enumerating the IRIs of a
set of Collections and the capabilities of those Collections set of Collections and the capabilities of those Collections
supported by the server. The content of this document can vary supported by the server. The content of this document can vary
based on aspects of the client request, including, but not based on aspects of the client request, including, but not
limited to, authentication credentials. limited to, authentication credentials.
5.2 Creating a Resource 5.2 Listing Collection Members
To list the members of a Collection the client sends a GET request to
the URI of a Collection. An Atom Feed Document is returned
containing one Atom Entry for each Member Entry Resource. See
Section 10 and Section 11 for a description of the feed contents.
Client Server
| |
| 1.) GET to Collection URI |
|------------------------------->|
| |
| 2.) 200 OK, Atom Feed Doc |
|<-------------------------------|
| |
1. The client sends a GET request to the URI of the Collection.
2. The server responds with an Atom Feed Document containing the
IRIs of the Collection members.
5.3 Creating a Resource
Client Server Client Server
| | | |
| 1.) POST to URI of Collection | | 1.) POST to URI of Collection |
|------------------------------------------>| |------------------------------------------>|
| | | |
| 2.) 201 Created | | 2.) 201 Created |
| Location: Member Entry URI |
|<------------------------------------------| |<------------------------------------------|
| | | |
1. The client POSTs a representation of the Member to the URI of the 1. The client POSTs a representation of the Member to the URI of the
collection. Collection.
2. If the Member resource was created successfully, the server 2. If the Member Resource was created successfully, the server
responds with a status code of 201 and a Location: header that responds with a status code of 201 and a Location: header that
contains the URI of the newly created resource. contains the IRI of the newly created Member Entry Resource.
Media Resources may have also been created and their IRIs can be
found through the Member Entry Resource. See Section 9.5 for
more details.
5.3 Editing a Resource 5.4 Editing a Resource
Once a resource has been created and its URI is known, that URI can Once a resource has been created and its Member URI is known, that
be used to retrieve, update, and delete the resource. URI can be used to retrieve, update, and delete the resource.
5.3.1 Retrieving a Resource 5.4.1 Retrieving a Resource
Client Server Client Server
| | | |
| 1.) GET to Member URI | | 1.) GET to Member URI |
|------------------------------------------>| |------------------------------------------>|
| | | |
| 2.) Member Representation | | 2.) Member Representation |
|<------------------------------------------| |<------------------------------------------|
| | | |
1. The client sends a GET request to the Member's URI to retrieve 1. The client sends a GET request to the URI of a Member Resource to
its representation. retrieve its representation.
2. The server responds with the representation of the resource. 2. The server responds with the representation of the resource.
5.3.2 Updating a Resource 5.4.2 Updating a Resource
Client Server Client Server
| | | |
| 1.) PUT to Member URI | | 1.) PUT to Member URI |
|------------------------------------------>| |------------------------------------------>|
| | | |
| 2.) 200 OK | | 2.) 200 OK |
|<------------------------------------------| |<------------------------------------------|
1. The client PUTs an updated representation to the Member's URI. 1. The client PUTs an updated representation to the URI of a Member
Resource.
2. Upon a successful update of the resource the server responds with 2. Upon a successful update of the resource the server responds with
a status code of 200. a status code of 200.
5.3.3 Deleting a Resource 5.4.3 Deleting a Resource
Client Server Client Server
| | | |
| 1.) DELETE to Member URI | | 1.) DELETE to Member URI |
|------------------------------------------>| |------------------------------------------>|
| | | |
| 2.) 200 Ok | | 2.) 200 Ok |
|<------------------------------------------| |<------------------------------------------|
| | | |
1. The client sends a DELETE request to the Member's URI. 1. The client sends a DELETE request to the URI of a Member
Resource.
2. Upon the successful deletion of the resource the server responds 2. Upon the successful deletion of the resource the server responds
with a status code of 200. with a status code of 200.
5.4 Listing Collection Members A different approach is taken for deleting Media Resources, see
Section 9.5 for details.
To list the members of a Collection the client sends a GET request to
the Collection's URI. An Atom Feed Document is returned containing
one Atom Entry for each member resource. See Section 9 and
Section 10 for a description of the feed contents.
Client Server
| |
| 1.) GET to Collection URI |
|------------------------------->|
| |
| 2.) 200 OK, Atom Feed Doc |
|<-------------------------------|
| |
1. The client sends a GET request to the Collection's URI.
2. The server responds with an Atom Feed Document containing the
IRIs of the collection members.
5.5 Use of HTTP Response codes 5.5 Use of HTTP Response codes
The Atom Protocol uses the response status codes defined in HTTP to The Atom Protocol uses the response status codes defined in HTTP to
indicate the success or failure of an operation. Consult the HTTP indicate the success or failure of an operation. Consult the HTTP
specification [RFC2616] for detailed definitions of each status code. specification [RFC2616] for detailed definitions of each status code.
It is RECOMMENDED that entities contained within HTTP 4xx and 5xx It is RECOMMENDED that entities contained within HTTP 4xx and 5xx
responses include a human-readable explanation of the error. responses include a human-readable explanation of the error.
6. XML-related Conventions 6. Atom Publishing Protocol Documents
The Atom Protocol Introspection format is specified in terms of the
XML Information Set [W3C.REC-xml-infoset-20040204], serialised as XML
1.0 [W3C.REC-xml-20040204]. Atom Publishing Protocol Documents MUST
be well-formed XML. This specification does not define any DTDs for
Atom Protocol, and hence does not require them to be "valid" in the
sense used by XML.
6.1 Referring to Information Items
This specification uses a shorthand for two common terms: the phrase 6.1 Document Types
"Information Item" is omitted when discussing Element Information
Items and Attribute Information Items. Therefore, when this
specification uses the term "element," it is referring to an Element
Information Item in Infoset terms. Likewise, when it uses the term
"attribute," it is referring to an Attribute Information Item.
6.2 XML Namespace Usage This specification describes two kinds of Documents - Category
Documents and Service Documents.
The namespace name [W3C.REC-xml-names-19990114] for the XML format A Category Document (Section 7) contain lists of categories specified
described in this specification is: using the "atom:category" element from the Atom Syndication Format.
A Service Document (Section 8) describes capabilities of workspaces,
which are server-defined groupings of Collections.
The namespace name [W3C.REC-xml-names-19990114] for either kind of
document is:
http://purl.org/atom/app# http://purl.org/atom/app#
This specification uses the prefix "app:" for the namespace name. This specification uses the prefix "app:" for the namespace name.
The choice of namespace prefix is not semantically significant. The prefix "atom:" is used for "http://www.w3.org/2005/Atom", the
namespace name of the Atom Syndication Format [RFC4287]. The
namespace prefixes are not semantically significant.
The "app:" namespace is reserved for future forward-compatible Atom Publishing Protocol Documents MUST be well-formed XML. This
revisions of the Atom Publishing Protocol. Future versions of this specification does not define any DTDs for Atom Protocol formats, and
specification could add new elements and attributes to the markup hence does not require them to be "valid" in the sense used by XML.
vocabulary. Software written to conform to this version of the
specification will not be able to process such markup correctly and,
in fact, will not be able to distinguish it from markup error. For
the purposes of this discussion, unrecognized markup from the Atom
Publishing Protocol vocabulary will be considered "foreign markup".
This specification also uses the prefix "atom:" for 6.2 Document Extensibility
"http://www.w3.org/2005/Atom", the namespace name of the Atom
Syndication Format [RFC4287].
6.3 Use of xml:base and xml:lang The namespace name "http://purl.org/atom/app#" is reserved for future
forward-compatible revisions of the document types. Future versions
of this specification could add new elements and attributes.
Software written to conform to this version of the specification will
not be able to process such markup correctly and in fact will not be
able to distinguish it from markup error.
XML elements defined by this specification MAY have an xml:base Unrecognized markup in an Atom Publishing Protocol document is
attribute [W3C.REC-xmlbase-20010627]. When xml:base is used, it considered "foreign markup" as defined in [RFC4287].
serves the function described in section 5.1.1 of URI Generic Syntax
[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 Markup from other vocabularies ("foreign markup") can be used
attribute, whose content indicates the natural language for the anywhere within a Category or Service Document unless it is
element and its descendents. The language context is only explicitly forbidden. Processors that encounter foreign markup MUST
significant for elements and attributes declared to be "Language- NOT stop processing or signal an error, and SHOULD preserve foreign
Sensitive" by this specification. Requirements regarding the content markup when transmitting such documents.
and interpretation of xml:lang are specified in Section 2.12 of XML
1.0 [W3C.REC-xml-20040204].
appCommonAttributes =
attribute xml:base { atomUri }?,
attribute xml:lang { atomLanguageTag }?,
undefinedAttribute*
6.4 RELAX NG Schema 7. Category Documents
Some sections of this specification are illustrated with fragments of Category Documents contain lists of categories described using the
a non-normative RELAX NG Compact schema [RNC]. A complete schema "atom:category" element from the Atom Syndication Format [RFC4287].
appears in Appendix B. However, the text of this specification Categories can also appear in Service Documents and describe the
provides the definition of conformance. categories allowed in a Collection (see Section 8.2.5).
7. Introspection Documents Category Documents are identified with the "application/atomcat+xml"<