© Copyright 2003 Ian Hickson and Tantek Çelik.
XHTML does everything we need. Let's just use that.
RSS 0.9, RSS 0.91, RSS 1.0, RSS 2.0, RSS 3.0, Echo, Necho, Pie, and Atom, all suck. And mixed-namespace formats definitely suck. ESF doesn't suck but isn't fashionable.
This is a working draft. Comments are welcome on the blogite mailing list (archived).
This information is provided in good faith, but no warranty can be made for its accuracy. Opinions expressed are entirely those of the editors and cannot be taken to represent views past, present or future of our employers.
This document may be used under the terms of the BY-ND Creative Commons License.
If you wish to translate this document or use it in some other way, please contact the authors.
The English version of this specification is the only normative version. However, for translations of this document, see http://www.hixie.ch/specs/hsf/translations/.
This specification is split into two main parts. The first part (section 3) is aimed at syndicators (HSF authors), and explains how HSF feeds should be generated. The seconds part (section 4) is aimed at consumers, or processors, of HSF feeds and explains how documents containing HSF should be parsed.
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 [RFC 2119].
A processor needs to be able to get the following information from an HSF feed:
HSF feeds can be embedded inside any XML document. Feeds cannot be embedded inside HTML documents; for authors whose content is written in HTML, an external feed in XML must be provided instead.
It is perfectly possible to use the same profile of HTML for writing Web logs in HTML, but HSF processors cannot process non-XML variants of this profile. HTML authors are, however, encouraged to use this profile anyway, so that their markup is as semantically rich as their feed, as this improves accessibility even in non-HSF contexts.
To indicate the start of an HSF feed, insert a
div element from the
XHTML 1.0 namespace, and give it a
class attribute with
the value "
hsf-feed", and a
attribute with the relevant [RFC 3066]
<!-- assuming this is a normal XHTML document --> <div class="hsf-feed" lang="language"> ... </div>
An XML document may contain as many HSF feeds as necessary. They are considered independent feeds unrelated to each other.
div element's first child (ignoring whitespace)
must be an
h1 element. This element must have a single
a element, with three attributes:
<div class="hsf-feed" lang="language"> <h1><a href="URI" rel="alternate" type="MIME type">Site Title</a></h1> ... </div>
After the title, insert zero or more
elements, one for each author. These elements may contain a single
element to link to a resource for that author. If
present, the element must have the following two attributes:
<div class="hsf-feed" lang="language"> <h1><a href="URI" rel="alternate" type="MIME type">Site Title</a></h1> <address><a href="URI" rel="author">Author 1 Name</a></address> <address>Author 2 Name</address> ... </div>
<div class="hsf-feed" lang="..."> <!-- Note: No other elements may be included inside this div except where specified. --> <h1><a href="..." rel="alternate" type="text/html">Web Log Title</a></h1> <address><a href="..." rel="author">Author 1 Name</a></address> <address><a href="..." rel="author">Author 2 Name</a></address> <!-- or, if you don't want to give a URI, just: <address>Author Name</address> Note that the URI could be mailto:, http:, or whatever. --> <dl> <dt>Frequency</dt> <dd>3600s</dd> <!-- units MUST be seconds --> <!-- Implementations should ignore metadata that doesn't use recognised names: <dt>Other Meta Data</dt> <dd>Other Value</dd> --> </dl> <ol> <li> <ins title="Entry Title" cite="..." datetime="00-00-00T00:00:00Z" class="summary"> <!-- or abstract, extract, content --> <!-- Here Goes The XHTML Content --> <h2>Entry Title</h2> <!-- optional, the point being the title can be included as part of the content --> <p>Bla bla bla.</p> <!-- /End Of XHTML Content --> </ins> </li> </ol> </div>
Syndicators should not introduce other elements into HSF feeds.
Note. The authors of this document are best known for strongly disagreeing with each other in public. The existence of this specification is therefore quite unlikely. Readers are encouraged to check the authenticity of this document before referring to it.