TOC 
ATOMPUB Working GroupM. Pilgrim
Internet-DraftIBM
Expires: November 11, 2005P. Ringnalda, Ed.
 May 10, 2005

Atom Feed Autodiscovery

draft-ietf-atompub-autodiscovery-01.txt

Status of this Memo

By submitting this Internet-Draft, each author represents that any 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 aware will be disclosed, in accordance with Section 6 of BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work in progress.”

The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt.

The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.

This Internet-Draft will expire on November 11, 2005.

Copyright Notice

Copyright © The Internet Society (2005).

Abstract

This document specifies a machine-readable method of linking to an Atom feed from a HyperText Markup Language (HTML) or Extensible HyperText Markup Language (XHTML) document, using the <link> element.

Editorial Note

To provide feedback on this Internet-Draft, join the atom-syntax mailing list (http://www.imc.org/atom-syntax/index.html).



Table of Contents

1.  Introduction
2.  Notational Conventions
3.  Relationship to HTML and XHTML
    3.1  Definition of an autodiscovery element
    3.2  Syntax rules inherited from HTML
    3.3  Syntax rules inherited from XHTML
4.  Required attributes
    4.1  rel attribute
    4.2  type attribute
    4.3  href attribute
5.  Optional attributes
    5.1  title attribute
6.  Multiple autodiscovery elements
7.  Examples
    7.1  rel attribute variations
    7.2  type attribute variations
    7.3  Link element variations
    7.4  HTML variations
8.  IANA Considerations
9.  Security Considerations
10.  References
    10.1  Normative References
    10.2  Informative References
§  Authors' Addresses
A.  Contributors
B.  Revision History
§  Intellectual Property and Copyright Statements




 TOC 

1. Introduction

Atom is an XML-based file format intended to allow lists of information, known as "feeds", to be synchronised between publishers and consumers. Feeds are composed of a number of items, known as "entries", each with an extensible set of attached metadata. The primary use case that Atom addresses is for syndicating web content such as weblogs and news headlines to other web sites and directly to consumers. However, nothing precludes it from being used for other purposes and types of content.

The purpose of Atom autodiscovery is for clients who know the URI of a web page to find the location of that page's associated Atom feed. For example, say an end user wishes to subscribe to the Atom feed of a site. Their Atom-aware aggregator client could prompt them to enter the home page of the site. The client could retrieve the HTML source of the home page, find the Atom autodiscovery element, and then retrieve the Atom feed or cache the URI of the Atom feed for later retrieval.

Autodiscovered Atom feeds may be presented to the user in a variety of other ways. In the past, Atom-enabled clients have implemented local proxies that monitor visited web sites and notify the end user of autodiscovered Atom feeds in real time. Such notification is also built directly into some desktop web browsers.



 TOC 

2. Notational Conventions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] (Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” March 1997.).



 TOC 

3. Relationship to HTML and XHTML

3.1 Definition of an autodiscovery element

An Atom autodiscovery element is a link element, as defined in section 12.3 of HTML 4 (Hors, A., Jacobs, I., and D. Raggett, “HTML 4.01 Specification,” December 1999.)[W3C.REC-html401-19991224]. As with other types of link elements, an autodiscovery element MAY appear within the <head> element of an HTML or XHTML document, but it MUST NOT appear within the <body>.

3.2 Syntax rules inherited from HTML

When an Atom autodiscovery element appears in an HTML document, it shares all the syntax rules and restrictions of other HTML elements. The most relevant rules are listed here:

3.3 Syntax rules inherited from XHTML

XHTML (Pemberton, S., “XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition),” August 2002.)[W3C.REC-xhtml1-20020801] is a reformulation of HTML in XML (Yergeau, F., Paoli, J., Sperberg-McQueen, C., Bray, T., and E. Maler, “Extensible Markup Language (XML) 1.0 (Third Edition),” February 2004.)[W3C.REC-xml-20040204]. It also defines a <link> element, so XHTML documents are a suitable container for Atom autodiscovery elements. When an Atom autodiscovery element appears in an XHTML document, it shares all the syntax rules and restrictions of other XHTML elements.

The syntax rules of XHTML documents are slightly different than HTML documents. The most relevant differences are listed here:



 TOC 

4. Required attributes

4.1 rel attribute

The rel attribute MUST be present in an Atom autodiscovery element. As defined in section 6.12 of HTML 4 (Hors, A., Jacobs, I., and D. Raggett, “HTML 4.01 Specification,” December 1999.)[W3C.REC-html401-19991224], the value of the rel attribute is a space-separated list of keywords. The list of keywords MUST include the keyword "alternate" in uppercase, lowercase, or mixed case.

4.2 type attribute

The type attribute MUST be present in an Atom autodiscovery element. As defined in section 12.3 of HTML 4 (Hors, A., Jacobs, I., and D. Raggett, “HTML 4.01 Specification,” December 1999.)[W3C.REC-html401-19991224], the value of the type attribute of any link element MUST be a registered Internet media type [RFC2045] (Freed, N. and N. Borenstein, “Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies,” November 1996.). The media type for Atom is "application/atom+xml" [I-D.ietf-atompub-format] (Sayre, R. and M. Nottingham, “The Atom Syndication Format,” April 2005.), so in an Atom autodiscovery element the value of the type attribute MUST contain the string "application/atom+xml" in uppercase, lowercase, or mixed case.

4.3 href attribute

The href attribute MUST be present in an Atom autodiscovery element, and its value MUST be the URI [RFC3986] (Berners-Lee, T., Fielding, R., and L. Masinter, “Uniform Resource Identifier (URI): Generic Syntax,” January 2005.) of an Atom feed. The value MAY be a relative URI, and if so, clients MUST resolve it to a full URI (section 5 of [RFC3986] (Berners-Lee, T., Fielding, R., and L. Masinter, “Uniform Resource Identifier (URI): Generic Syntax,” January 2005.)) using the document's base URI (section 12.4 of HTML 4 (Hors, A., Jacobs, I., and D. Raggett, “HTML 4.01 Specification,” December 1999.)[W3C.REC-html401-19991224]).



 TOC 

5. Optional attributes

An Atom autodiscovery element MAY contain any other attributes of the link element defined in section 12.4 of HTML 4 (Hors, A., Jacobs, I., and D. Raggett, “HTML 4.01 Specification,” December 1999.)[W3C.REC-html401-19991224]. Clients MAY ignore any attributes other than rel, type, and href.

5.1 title attribute

The title attribute MAY be present in an Atom autodiscovery element. If so, the client MAY treat the value of the title attribute as a human-readable label of the Atom feed. Clients MAY present this label to the end user.



 TOC 

6. Multiple autodiscovery elements

An HTML or XHTML document MAY contain one or more Atom autodiscovery elements. If multiple autodiscovery elements are present in a single document:



 TOC 

7. Examples

7.1 rel attribute variations

The following is a non-exhaustive list of valid rel attributes for an Atom autodiscovery element in an HTML or XHTML document:

rel="alternate"

rel="alternate "

rel=" alternate"

rel=" alternate "

rel="foo alternate"

rel="alternate bar"

rel="foo alternate bar"

rel="ALTERNATE"

rel="Alternate"

rel="AlTeRnAtE"

rel='alternate'

rel="&#65;lternate"

In an HTML document, the following forms are also valid:

REL="alternate"

rel=alternate

7.2 type attribute variations

The following are examples of valid type attributes for an Atom autodiscovery element in an HTML or XHTML document:

type="application/atom+xml"

type="application/atom+xml "

type=" application/atom+xml"

type=" application/atom+xml "

type="APPLICATION/ATOM+XML"

type="Application/Atom+Xml"

In an HTML document, the following form is also valid:

TYPE="application/atom+xml"

7.3 Link element variations

Each of the following examples represents an Atom autodiscovery element in an HTML document located at
http://www.example.com/index.html. Each example points to an Atom feed located at http://www.example.com/xml/index.atom.

<link rel="alternate" type="application/atom+xml"
href="http://www.example.com/xml/index.atom">

<link rel="alternate" type="application/atom+xml"
href="xml/index.atom">

<link rel="alternate" type="application/atom+xml"
href="/xml/index.atom">

<link rel='alternate' type='application/atom+xml'
href='http://www.example.com/xml/index.atom'>

<link rel=alternate type='application/atom+xml'
href="http://www.example.com/xml/index.atom">

<link rel="AlTeRnAtE" type="application/atom+xml"
href="http://www.example.com/xml/index.atom">

<link rel="alternate" type="APPLICATION/ATOM+XML"
href="http://www.example.com/xml/index.atom">

<LINK REL="alternate" TYPE="application/atom+xml"
HREF="http://www.example.com/xml/index.atom">

<link href="http://www.example.com/xml/index.atom"
type="APPLICATION/ATOM+XML" rel="alternate">

<link rel="alternate foo" type="application/atom+xml"
href="http://www.example.com/xml/index.atom">

<link rel="foo alternate" type="application/atom+xml"
href="http://www.example.com/xml/index.atom">

<link rel="foo alternate bar" type="application/atom+xml"
href="http://www.example.com/xml/index.atom">

<link rel="&#65;lternate" type="application/atom+xml"
href="http://www.example.com/xml/index.atom">

<link rel="alternate" type="application/atom&#43;xml"
href="http://www.example.com/xml/index.atom">

Each of the following examples represents an Atom autodiscovery element in an XHTML document located at
http://www.example.com/index.xhtml. Each example points to an Atom feed located at http://www.example.com/xml/index.atom.

<link rel="alternate" type="application/atom+xml"
href="http://www.example.com/xml/index.atom" />

<link rel="alternate" type="application/atom+xml"
href="xml/index.atom" />

<link rel="alternate" type="application/atom+xml"
href="/xml/index.atom" />

<link rel='alternate' type='application/atom+xml'
href='http://www.example.com/xml/index.atom' />

<link rel="AlTeRnAtE" type="application/atom+xml"
href="http://www.example.com/xml/index.atom" />

<link rel="alternate" type="APPLICATION/ATOM+XML"
href="http://www.example.com/xml/index.atom" />

<link href="http://www.example.com/xml/index.atom"
type="APPLICATION/ATOM+XML" rel="alternate" />

<link rel="alternate foo" type="application/atom+xml"
href="http://www.example.com/xml/index.atom" />

<link rel="foo alternate" type="application/atom+xml"
href="http://www.example.com/xml/index.atom" />

<link rel="foo alternate bar" type="application/atom+xml"
href="http://www.example.com/xml/index.atom" />

<link rel="&#65;lternate" type="application/atom+xml"
href="http://www.example.com/xml/index.atom" />

<link rel="alternate" type="application/atom&#43;xml"
href="http://www.example.com/xml/index.atom" />

7.4 HTML variations

This is an example of a complete HTML document located at
http://www.example.com/index.html. It contains an Atom autodiscovery element that points to an Atom feed at http://www.example.com/index.html?format=atom.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<link rel="alternate"
      type="application/atom+xml"
      href="?format=atom">
</head>
</html>

This is an example of a complete HTML document located at
http://www.example.com/index.html. It contains an Atom autodiscovery element that points to an Atom feed at http://www.example.org/index.atom. It uses a relative URI which is relative to the base URI specified in the <base> element.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<base href="http://www.example.org/">
<link rel="alternate"
      type="application/atom+xml"
      href="index.atom">
</head>
</html>

This is an example of a complete HTML document located at
http://www.example.com/index.html. It contains three autodiscovery elements that point to Atom feeds at http://www.example.com/xml/index.atom, http://www.example.com/xml/comments.atom, and http://example.org/index.atom respectively. It uses the optional title attribute to label each autodiscovery element.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<link rel="alternate"
      type="application/atom+xml"
      title="Main Atom feed"
      href="/xml/index.atom">
<link rel="alternate"
      type="application/atom+xml"
      title="Recent comments feed"
      href="/xml/comments.atom">
<link rel="alternate"
      type="application/atom+xml"
      title="Atom feed (mirror)"
      href="http://example.org/index.atom">
</head>
</html>



 TOC 

8. IANA Considerations

This document relies on the registration of the Atom media type, which is defined in [I-D.ietf-atompub-format] (Sayre, R. and M. Nottingham, “The Atom Syndication Format,” April 2005.).



 TOC 

9. Security Considerations

Since the entire purpose of an Atom autodiscovery element is for clients to dereference the URI given in the href attribute, the security issues listed in section 7 of [RFC3986] (Berners-Lee, T., Fielding, R., and L. Masinter, “Uniform Resource Identifier (URI): Generic Syntax,” January 2005.) should be considered.

A publisher could construct a malicious URI in the href attribute, such as a "javascript:" URI to include an inline script, or some other URI scheme that typically launches an external program when dereferenced. Clients should be aware of the security context in which they execute scripts, and they should give the end user the ability to disable the automatic execution of external programs when dereferencing autodiscovery URIs.



 TOC 

10. References



 TOC 

10.1 Normative References

[I-D.ietf-atompub-format] Sayre, R. and M. Nottingham, “The Atom Syndication Format,” draft-ietf-atompub-format-08 (work in progress), April 2005.
[RFC2119] Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” BCP 14, RFC 2119, March 1997 (TXT, HTML, XML).
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, “Uniform Resource Identifier (URI): Generic Syntax,” STD 66, RFC 3986, January 2005 (TXT, HTML, XML).
[W3C.REC-xml-20040204] Yergeau, F., Paoli, J., Sperberg-McQueen, C., Bray, T., and E. Maler, “Extensible Markup Language (XML) 1.0 (Third Edition),” W3C REC REC-xml-20040204, February 2004.


 TOC 

10.2 Informative References

[RFC2045] Freed, N. and N. Borenstein, “Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies,” RFC 2045, November 1996.
[W3C.REC-html401-19991224] Hors, A., Jacobs, I., and D. Raggett, “HTML 4.01 Specification,” W3C REC REC-html401-19991224, December 1999.
[W3C.REC-xhtml1-20020801] Pemberton, S., “XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition),” W3C REC REC-xhtml1-20020801, August 2002.


 TOC 

Authors' Addresses

  Mark Pilgrim
  International Business Machines Corporation
  4400 Silicon Drive
  Durham, NC 27713
  US
Email:  pilgrim@gmail.com
  
  Phil Ringnalda (editor)
Email:  philringnalda@gmail.com


 TOC 

Appendix A. Contributors

The following people contributed to this specification's content: Joe Gregorio, Paul Hoffman, and the members of the atom-syntax mailing list.



 TOC 

Appendix B. Revision History

2005-05-08:
Updated reference to XML 3rd ed.
Updated RFC 2396 reference to RFC 3986
Added editor

2005-05-03:
Updated boilerplate to RFC 3978

2004-08-17:
Consolidated examples
Updated author address
Added IPR
Removed reference to RFC 1808

2003-12-23:
Added security considerations
Added note about order significance with multiple autodiscovery elements

2003-12-22:

Rearranged the "Relationship to HTML and XHTML" section
Added examples of single-quoted attribute values
Added examples of numeric entities in rel and type attributes

2003-12-21:

First draft



 TOC 

Intellectual Property Statement

Disclaimer of Validity

Copyright Statement

Acknowledgment