In this page the RSS 3 Lite Specifications are detailed as a stand-alone part of the RSS Version 3 Standard.

This version:

Latest version:

Intermediate versions:
(Intermediate versions are edited specifications on their way to become a certain draft)

Previous versions:

Editor and contributors:

Sections in this document:

  1. Requirements and Terminology
  2. Abstract
  3. Status Of This Document
  4. Table of Contents
  5. Specification
  6. Appendices

See the Errata appendix for corrections in the current and previous versions.

This specification is in normative XHTML form, best viewed in Mozilla Firefox 1.0+ (or any Gecko 1.7+ based browser), Microsoft Internet Explorer 6.0+, Opera 7.0+ and Apple Safari 1.0+. A non-normative PDF form is available here.

Please note that any content on this page or any other page linked here is subject to change (until finalized upon publication of the Final Specification).

Finally, please review the Terminology and Requirements pages before reading this document.

©2005 Jonathan Avidan - distributed under the Attribution/Share Alike Common License. This is a derivative work based on RSS 2.0.1 by Dave Winer and others, and to their work and efforts we are indebted.


Requirements and Terminology

This section is normative.

It is imperative for anyone who wishes to read the following specification to read the Terminology page which describes the terms used in this document.

It is also highly recommended to read the Requirements page, upon which the current document is based and to which it complies.

Further notice the normative application of the following semantics in this specification:

Abstract

This section is informative.

The following section describes the abstract purpose of the format in general and this specification in particular. It is divided into three parts: "General" describing the theoretical purpose of the format; "Unique" describing the RSS format throughout its stages and "Specific" describing the current format and specification in particular.

General: RSS, which stands for Really Simple Syndication, is a standardized way to broadcast metadata via the Internet. Its purpose is to create easily understandable pieces of written information for processing into human-readable form by "Aggregators" and other applications of the sort.

Unique: The RSS Version 3 Class of Standards (which includes the RSS Category Declaration Language (RCDL) 1.0, RSS Rating Description Language (RRDL) 1.0, RSS 3 Full and the one of this specification: RSS 3 Lite) is hereby proposed in order to standardize the different available versions and formats of RSS (namely, the 0.9x class [where x is a number between and including 1 to 4] and the 2.0 class - other standards being irrelevant). The deprecated 0.90 format is disregarded here. The RSS format is similar in purpose and manner to the currently in progress Atom standard and the RSS 1.0 standard, both of which are outside of this specification's scope. RSS Version 3, the version proposed here to replace the 2.0 format (due to its under-documented and outdated state) is designed to be comprehensive, efficient and backwards-compatible when possible. For a full set of requirements to which the standards must comply, see the Requirements page. In conclusion: RSS Version 3 is meant to completely replace the outdated 0.9x and 2.0 classes of standards, while politely competing with or complimenting others such as RSS 1.0 and Atom.

Specific: RSS 3 Lite is a reduced form of the RSS Version 3 standard, intended to be used by low-end aggregators or similar applications. Its purpose is to be an efficiently succinct form of RSS 3, engulfing new useful features even to aggregators who only require a handful of metadata, while disposing of features irrelevant to low-end clients by either removing them entirely or placing them under the RSS 3 Full Specification. For example, software which only needs to receive basic information about a certain link will use the RSS 3 Lite standard for its analysis of the RSS feed. A full-featured aggregator would be able to process most or all of the features described in the RSS 3 Full standard. As a result of complete interoperability, an RSS feed in Lite type could be processed by a RSS 3 Full-compatible processor as the Full type features are not obligatory, while a Lite-type processor is still perfectly capable of processing a Full-type feed by simply ignoring the Full-type features. RSS 3 Full is a highly expanded version of this specifications which consists of features intended for use by high-end aggregators or any processor which requires further metadata.

On further note: The RSS Category Declaration Language (RCDL) 1.0 is an XML-based standard specifically designed to declare the different categories used in an RSS feed or channel and its support is only required in the RSS 3 Full specification, thus irrelevant to the current document, as is the RSS Rating Description Language (RRDL) Version 1.0 which depicts the rating given to an item.

Status of this Document

This section is non-normative.

This document is in First Draft status. This is the first publicly released version of this specification, intended for review by a broad spectrum of readers. Despite the use of the word "normative" to describe different sections of this specification, it is to be considered "non-normative" (or "informative") at its entirety until the publication of the Final Standard.

It is not to be considered as a finalized standard nor it is to be implemented in any public manner, excluding research and experiment purposes.

The First Call For Comments stage is now taking place!

Upon reading the following document, readers are encouraged to contact the editor to inform of the followings:

Inform the editor by sending a mail with the title "RSS 3 Lite" to this address: , or otherwise leave a message in the appropriate board. To contact the site team concerning the site itself send a mail to . We appreciate all help.

This document may be withdrawn at any given moment without notice; Though it is distributed under the Attribution/Share Alike Common Licence, it is strongly urged not to make derivative works of it yet and not implement it in any way until its final version is published. The content of this document is subject to change or removal. The right to refuse any suggestion of any form is reserved.

Table of Contents

This section is non-normative.

This is the specification's table of contents. In order to skip to a desired section, simply click on one of the links below:

Specification:

  1. Introduction
  2. The RSS Document
    1. XML Structure
    2. Generic RSS Design
  3. RSS Version 3.0 Lite-type Specifications
    1. Cascading Elements
    2. Common Elements and Attributes
      1. Common Attributes
        1. The "isEmpty" Attribute
        2. The "isUpdated" and "updateNum" Attributes
      2. Common Required Elements
        1. The </span> Element</a></li> <li><a href="#spec_common_required_elements_link">The <span class="Element"><link></span> Element</a></li> <li><a href="#spec_common_required_elements_description">The <span class="Element"><description></span> Element</a></li> </ol> </li> <li> <a href="#spec_common_optional_elements">Common Optional Elements</a> <ol> <li><a href="#spec_common_optional_elements_guid">The <span class="Element"><guid></span> Element</a></li> <li><a href="#spec_common_optional_elements_language">The <span class="Element"><language></span> Element</a></li> <li><a href="#spec_common_optional_elements_icon">The <span class="Element"><icon></span> Element</a></li> <li><a href="#spec_common_optional_elements_copyrights">The <span class="Element"><copyright></span> Element</a></li> </ol> </li> </ol> </li> <li> <a href="#spec_rss">The <span class="Element"><rss></span> Root Element</a> <ol> <li> <a href="#spec_rss_req_att">Required Attributes</a> <span class="italic">("<span class="Attribute">version</span>")</span> </li> <li> <a href="#spec_rss_opt_att">Optional Attributes</a> <ol> <li><a href="#spec_rss_opt_att_type">The "<span class="Attribute">type</span>" Attribute</a></li> <li><a href="#spec_rss_opt_att_source">The "<span class="Attribute">source</span>" Attribute</a></li> </ol> </li> <li> <a href="#spec_rss_req_ele">Required Sub-Elements</a> <span class="italic">(<span class="Element"><channel></span>)</span> </li> </ol> </li> <li> <a href="#spec_channel">The <span class="Element"><channel></span> Element</a> <ol> <li> <a href="#spec_channel_opt_att">Optional Attributes</a> <span class="italic">("<span class="Attribute">isEmpty</span>", "<span class="Attribute">isUpdated</span>" and "<span class="Attribute">updateNum</span>")</span> </li> <li> <a href="#spec_channel_req_ele">Required Sub-Elements</a> <span class="italic">(<span class="Element"><title></span>, <span class="Element"><link></span>, <span class="Element"><description></span> and <span class="Element"><item></span>)</span> </li> <li> <a href="#spec_channel_opt_ele">Optional Sub-Elements</a> <ol> <li><a href="#spec_channel_opt_ele_managingEditor">The <span class="Element"><managingEditor></span> Element</a></li> <li><a href="#spec_channel_opt_ele_webMaster">The <span class="Element"><webMaster></span> Element</a></li> <li><a href="#spec_channel_opt_ele_lastBuildDate">The <span class="Element"><lastBuildDate></span> Element</a></li> <li><a href="#spec_channel_opt_ele_ttl">The <span class="Element"><ttl></span> Element</a></li> <li><a href="#spec_channel_opt_ele_generator">The <span class="Element"><generator></span> Element</a></li> <li><a href="#spec_channel_opt_ele_docs">The <span class="Element"><docs></span> Element</a></li> </ol> </li> </ol> </li> <li> <a href="#spec_item">The <span class="Element"><item></span> Element</a> <ol> <li> <a href="#spec_item_opt_att">Optional Attributes</a> <span class="italic">("<span class="Attribute">isEmpty</span>", "<span class="Attribute">isUpdated</span>" and "<span class="Attribute">updateNum</span>")</span> </li> <li> <a href="#spec_item_req_ele">Required Sub-Elements</a> <span class="italic">(<span class="Element"><title></span>, <span class="Element"><link></span> and <span class="Element"><description></span>)</span> </li> <li> <a href="#spec_item_opt_ele">Optional Sub-Elements</a> <ol> <li><a href="#spec_item_opt_ele_comments">The <span class="Element"><comments></span> Element</a></li> <li><a href="#spec_item_opt_ele_pubDate">The <span class="Element"><pubDate></span> Element</a></li> <li><a href="#spec_item_opt_ele_author">The <span class="Element"><author></span> Element</a></li> <li><a href="#spec_item_opt_ele_field">The <span class="Element"><field></span> Element</a></li> </ol> </li> </ol> </li> <li> <a href="#spec_linking">HTML and XHTML RSS Linking Guidelines</a> <ol> <li><a href="#spec_linking_general">General Linking</a></li> <li><a href="#spec_linking_hypertext">Hypertext Linking</a></li> <li><a href="#spec_linking_xml">XML Linking</a></li> </ol> </li> <li><a href="#spec_extending">Expanding An RSS Document</a></li> </ol> </li> </ol> <p class="NormalText"><span class="bold"><a href="#appendices">Appendices</a>:</span></p> <ol class="NormalText AppendixList"> <li><a href="#appendices_differences">Differences from The Previous Format</a></li> <li><a href="#appendices_dtd">The RSS Lite-type DTD</a></li> <li><a href="#appendices_schema">Validation XML-Schema</a></li> <li><a href="#appendices_xslt">XSLT for Display of RSS 3 Lite-type Feeds</a></li> <li><a href="#appendices_sample">Sample Feeds</a></li> <li><a href="#appendices_errata">Errata</a></li> </ol> <br> <hr> <p class="NormalHeader">Specification<a name="spec" id="spec"></a></p> <p class="specSec">Introduction<a name="spec_introduction" id="spec_introduction"></a></p> <p class="NormalText"><span class="bold">This section is <span class="italic">informative</span>.</span></p> <p class="NormalText">This document is a specification detailing the <span class="bold">R</span>eally <span class="bold">S</span>imple <span class="bold">S</span>yndication (RSS) format version 3, specifically the RSS 3 Lite-type format. This specification strives to compile an official standard for the next generation of RSS formats while remaining as backwards-compatible as possible, thus virtually replacing older formats (namely RSS 0.91, 0.92, 0.93, 0.94 and 2.0 - excluding all other syndication formats). Please note, however, that it may or may not contradict some features of 0.9x standards (for example, the <span class="Element"><description></span> element is optional in 0.91 but required in 2.0) and therefore the 3.0 format strives to be backwards-compatible solely with the 2.0 format.</p> <p class="NormalText">RSS is a concise and modularized way to relay summarized metadata via the Internet or similar connection.</p> <p class="NormalText">Essentially, it is a way to transmit information of changing nature (updates, news etc.) from an originating website or web service to a subscribing client in computer-readable form, in theory to be transformed into human-readable form. For example, a news site may provide an RSS feed providing titles, description and links to different news items. However, an application subscribing to a feed may choose to process the contents of an RSS document for its own specific needs rather than transforming it into human-readable form.</p> <p class="NormalText">The "RSS" acronym has been given several interpretations, the most dominant being "<span class="bold">R</span>ich <span class="bold">S</span>ite <span class="bold">S</span>ummary". However, since RSS is no longer used just to summarize contents of websites (as it is used in many kinds of web services) the interpretation "<span class="bold">R</span>eally <span class="bold">S</span>imple <span class="bold">S</span>yndication" has been chosen to represent the current level of the standard; RSS is, most basically, a way to syndicate information - really simply.</p> <p class="NormalText">This specification must comply with the requirements described <a href="../requirements.html">here</a>, using terminology described <a href="../terminology.html">here</a> using semantics detailed under <a href="#req_term">Requirements and Terminology</a> above. For informative purposes, the RSS Version 2.0.1 specification can be found here and is attributed to Dave Winer, amongst others. This is a derivative work and is indebted to their genius and efforts.</p> <p class="NormalText">Whenever a feature is first described, a DTD line is provided detailing the different aspects of the feature. Due to restraints in the DTD language, these lines do not represents the full description of the feature in discussion; please refer to the (<span class="italic">non-normative</span>) XML Schema in the <a href="#appendices_schema">appendices</a> for a fuller description.</p> <p class="comment"><span class="italic">Comment</span>: UAs who are already capable of processing RSS Version 2.0 documents should update their application so that feeds with the version mark "3.0" will be processed by the same processor (if not one complying to this, or the RSS 3 Full, specification); This stems from the imperative requirement that all RSS 3 documents must aspire to be as backwards-compatible as possible and so no fatal differences are made.</p> <p class="specSec">The RSS Document<a name="spec_rss_doc" id="spec_rss_doc"></a></p> <p class="NormalText"><span class="bold">This section is <span class="italic">normative</span>.</span></p> <p class="NormalText">This section describes the type, form and structure of any RSS feed complying with the current specification and thus considered "valid".</p> <p class="specTitle">XML Structure<a name="spec_xml_structure" id="spec_xml_structure"></a></p> <p class="NormalText">All RSS feeds must comply with the XML version 1.0 standard and be a valid XML document.</p> <p class="comment"><span class="italic">Comment</span>: This does not concern partially transmitted parts of an RSS feed, such as a service requesting a particular item from the feed owner/generator, in which case the service will be provided with the full item transmitted under the RSS content-type (see below).</p> <p class="NormalText">Therefore, all RSS feeds must begin with the XML declaration syntax:</p> <div class="code"> <?xml version="1.0" encoding="UTF-8" ?> </div> <p class="comment"><span class="italic">Comment</span>: Notice that the formal encoding for RSS feeds is "UTF-8".</p> <ul class="NormalText"> <li>An RSS document must <span class="italic">not</span> contain any DTD declaration and must <span class="italic">not</span> rely on an XML Schema.</li> <li>An RSS document <span class="italic">may</span> have a related CSS file, XSL file or any other form of representing its content.</li> <li>An RSS document need <span class="italic">not</span> have further XML built-in features, such as "<span class="example">xml:lang</span>", "<span class="example">xml:base</span>" and "<span class="example">xml:id</span>", and implementors should ignore them as the format provides its own alternatives for consistency's sake.</li> <li>The RSS root element must <span class="italic">not</span> contain an XML Namespace, nor must any element or attribute described in this specification.</li> </ul> <p class="NormalText">For information concerning expansion of this standard, see the section titled <a href="#spec_extending">Expanding An RSS Document</a>.</p> <p class="specTitle">Feed Transmission</p> <p class="NormalText">Every RSS feed, whether in file form (see below) or generator produced form (or other) must comply with this entire specification.</p> <p class="NormalText">RSS feed in file form is represented by the feed itself as simple text saved in a file whose suffix <span class="italic">should</span> be ".rss".</p> <p class="NormalText">However, for the sake of backwards-compatibility, implementors and user-agents <span class="italic">must</span> be able to process any RSS feed in the form of a URL, which may be a local, on-line or other kind of file (with any ending, for example ".xml") or the URI address of the on-line service generating the feed (for example, a website URI containing arguments).</p> <p class="NormalText">The official content-type (i.e. "MIME type") for file-form RSS feeds is "application/rss+xml".</p> <p class="NormalText">However, for the sake of backwards-compatibility, implementors and user-agents <span class="italic">should</span> be able to process RSS feeds which are transmitted under the content-types "text/xml" and "application/xml" as long as these are not supposed to be RSS 3 document but rather previous versions.</p> <p class="specTitle">Generic RSS Design<a name="spec_generic_design" id="spec_generic_design"></a></p> <p class="NormalText">At the base of the RSS document, immediately following the XML declaration syntax, resides the document's root element, namely <span class="Element"><rss></span>. Within this element lies the document which consists of at least one "channel" which contains at least one "item".</p> <p class="comment"><span class="italic">Comment</span>: This specification only describes documents with one channel. However, a document may have more than one channel as described in the RSS Version 3.0 Full-type Specification. Implementors of the current specification <span class="italic">should</span> ignore all but the first <span class="Element"><channel></span> element in the document unless they are able to process multiple channels as described in the RSS 3 Full-type Specification.</p> <p class="NormalText">A "channel" is defined as a common grouping or source of the list of items. For example, a series of items from the same site (or same section within a site) would be placed within the same channel.</p> <p class="NormalText">An "item" is defined as a unique instance of metadata and is considered singular within the document.</p> <p class="comment"><span class="italic">Note</span>: Several items may contain the same or shared metadata, but two or more items cannot share the same GUID, see below.</p> <p class="NormalText">Thus an RSS feed is structured in the following order:</p> <ol class="NormalText"> <li>XML declaration syntax</li> <li>RSS opening root tag (with its required attribute) <ol> <li>Channel opening tag <ol> <li>Required sub-elements</li> <li>One or more Item element with its closing tags (and its required sub-elements)</li> </ol> </li> <li>Channel closing tag</li> </ol> </li> <li>RSS closing root tag</li> </ol> <p class="NormalText">The following part of the document is the normative specification of the RSS 3 Lite-type format, describing the syntax and usage rules of the RSS features.</p> <p class="specSec">RSS Version 3.0 Lite-type Specifications<a name="spec_rss_lite" id="spec_rss_lite"></a></p> <p class="NormalText"><span class="bold">This section is <span class="italic">normative</span>.</span></p> <p class="NormalText">This section describes the nature, syntax and structure of the elements and attributes which together form the RSS format.</p> <p class="NormalText">Here follow several rules applying to the entire specification:</p> <p class="comment"><span class="italic">Temporary note (informative)</span>: As this list evolves it should be moved to a more appropriate place)</p> <ol class="NormalText"> <li> <span class="NormalText">Rule</span>: No URI or URL given in an RSS document may be relative</li> <li> <span class="NormalText">Rule</span>: All e-mail addresses must lack the "mailto:" prefix</li> <li>Rule: Upon encountering an element or attribute not described in this specification and not placed under a namespace, the processor must ignore it</li> <li>Rule: No proper or escaped HTML (or XHTML), or any other XML (or SGML) based language, are allowed within an RSS 3 Document; XHTML and other XML based languages are allowed when all of its items are given under their proper namespace. Note however that to transmit an items content a special feature is described in the RSS 3 Full specification, where the process of transmitting its content are described in full.</li> <li>Rule (informative): Though this specification does not use any namespace with its features, when RSS elements need to be used in another XML document, their official namespace is "<span class="italic">https://rss3.org/#rss3</span>" (sans the quotes)</li> </ol> <p class="specTitle">Cascading Elements<a name="spec_cascading_elements" id="spec_cascading_elements"></a></p> <p class="NormalText">The RSS format enjoys the use of <span class="italic">Cascading Elements</span>, meaning features that can be placed at different structure levels and by being more deeply placed override the contents of the same tag placed at a higher level, if any.</p> <p class="NormalText">This means that if this kind of feature is placed both directly beneath a certain element and another element who is a child of some level of the prior element, only the second cascading element counts in its level.</p> <p class="NormalText">The RSS 3 Lite-type cascading features are <span class="Element"><copyright></span>, <span class="Element"><language></span> and <span class="Element"><icon></span> (see below).</p> <p class="NormalText">Specifically, all of the above mentioned elements can be placed both directly beneath the <span class="Element"><channel></span> element and under any <span class="Element"><item></span> element, itself placed within the <span class="Element"><channel></span> element.</p> <p class="NormalText">Therefore, upon encountering one of these elements at item-level, the content of the present element is to count concerning the item itself and <span class="italic">not</span> according the cascading element placed at channel-level, if at all. For example, if a channel is given the language definition of "<span class="example">en-US</span>" but an item is given the language definition "<span class="example">he</span>", the implementor should consider that item to be in Hebrew and not assumed to be in English.</p> <p class="specTitle">Common Elements and Attributes<a name="spec_common_elements" id="spec_common_elements"></a></p> <p class="NormalText">Common elements and attributes are those which can be applied at different structure-levels (elements) or to multiple kinds of elements (attributes) with the same syntax. Their syntax is hereby described and these sections are called upon when a description of the necessary element or attribute is required.</p> <p class="specPart">Common Attributes<a name="spec_common_attributes" id="spec_common_attributes"></a></p> <p class="specPiece">The "<span class="Attribute">isEmpty</span>" Attribute<a name="spec_common_attributes_isEmpty" id="spec_common_attributes_isEmpty"></a></p> <div class="code"> <!ATTLIST channel isEmpty (true | false) #IMPLIED "false"><br> <!ATTLIST item isEmpty (true | false) #IMPLIED "false"> </div> <p class="NormalText">The "<span class="Attribute">isEmpty</span>" attribute's content is boolean, meaning either "<span class="example">true</span>" or "<span class="example">false</span>" and may be applied to the <span class="Element"><channel></span> element as well as any <span class="Element"><item></span> element.</p> <p class="NormalText">The rules of this attribute's implementation are described under the respective descriptions of the above-mentioned elements.</p> <p class="specPiece">The "<span class="Attribute">isUpdated</span>" and "<span class="Attribute">updateNum</span>" Attributes<a name="spec_common_attributes_isUpdated" id="spec_common_attributes_isUpdated"></a></p> <div class="code"> <!ATTLIST channel isUpdated (true|false) #IMPLIED "false" ><br> <!ATTLIST channel updateNum #IMPLIED "1" ><br> <!ATTLIST item isUpdated (true | false) #IMPLIED "false" ><br> <!ATTLIST item updateNum #IMPLIED "1" > </div> <p class="NormalText"><span class="italic">Rule</span>: The "<span class="Attribute">isUpdated</span>" attribute may appear in an element without the companionship of the "<span class="Attribute">updateNum</span>" attribute, in which case the latter attribute's default value may be taken under consideration if necessary, but the "<span class="Attribute">updateNum</span>" attribute has no use and is not to be considered when without the companionship of "<span class="Attribute">isUpdated</span>" in the same element.</p> <p class="NormalText">The "<span class="Attribute">isUpdated</span>" attribute is a <span class="italic">boolean</span> attribute, meaning its content can either be "<span class="example">true</span>" or "<span class="example">false</span>".</p> <p class="NormalText">The "<span class="Attribute">isUpdated</span>" attribute is at all times optional and may be placed in the <span class="Element"><channel></span> element to signify that its content has been updated (presumably since the last time the feed refreshed). It may also be placed within an <span class="Element"><item></span> element to signify that item has been updates (meaning that either the item's metadata or the link's content has been changed).</p> <p class="NormalText">The "<span class="Attribute">updateNum</span>" attribute may be present within an element only when the "<span class="Attribute">isUpdated</span>" element is present in the same element. When it is not present, it <span class="italic">must</span> be assumed "1".</p> <p class="NormalText">The "<span class="Attribute">updateNum</span>" attribute is at all times an integer, though it may never be "<span class="example">0</span>". It signifies the chronicle numbering of the update instance, meaning how many times the channel of item has been updated. Thus, for example, when an item is set as updated with the update numbering of "3", it is to be understood that this item presents the third version of the item's metadata and/or its link's content.</p> <p class="NormalText">A further note would be that when "<span class="Attribute">updateNum</span>" is set to a negative integer it is to be understood that the channel or item presents a "roll-back" of the content to an earlier version.</p> <p class="specPart">Common Required Elements<a name="spec_common_required_elements" id="spec_common_required_elements"></a></p> <p class="specPiece">The <span class="Element"><title></span> Element<a name="spec_common_required_elements_title" id="spec_common_required_elements_title"></a></p> <div class="code"> <!ELEMENT title (#CDATA) > </div> <p class="NormalText">The <span class="Element"><title></span> element must be present beneath both the <span class="Element"><channel></span> element and beneath any instance of an <span class="Element"><item></span> element. At both occurrences it is <span class="italic">required</span>.</p> <p class="NormalText">This element's content is always plain text and is supposed to describe the title of the channel or item under which it resides (further on this topic beneath the <span class="Element"><channel></span> and <span class="Element"><item></span> elements' descriptions below).</p> <p class="specPiece">The <span class="Element"><link></span> Element<a name="spec_common_required_elements_link" id="spec_common_required_elements_link"></a></p> <div class="code"> <!ELEMENT link (#CDATA) > </div> <p class="NormalText">The <span class="Element"><link></span> element must be present beneath both the <span class="Element"><channel></span> element and beneath any instance of an <span class="Element"><item></span> element. At both occurrences it is <span class="italic">required</span>.</p> <p class="NormalText">This element's content must be a valid, non-relative, URL or URI, including the "http://" (or other) prefix. The nature of the link's content is further described beneath the <span class="Element"><channel></span> and <span class="Element"><item></span> elements' descriptions.</p> <p class="specPiece">The <span class="Element"><description></span> Element<a name="spec_common_required_elements_description" id="spec_common_required_elements_description"></a></p> <div class="code"> <!ELEMENT description (#CDATA) > </div> <p class="NormalText">The <span class="Element"><description></span> element must be present beneath the <span class="Element"><channel></span> element (under which it is <span class="italic">required</span>) and may be present beneath any instance of an <span class="Element"><item></span> element (where it is <span class="italic">optional</span>).</p> <p class="NormalText">This element's content must be plain text and is supposed to describe the nature of its structure level (specifically either the channel or the item), see more under the <span class="Element"><channel></span> and <span class="Element"><item></span> elements' descriptions.</p> <p class="comment"><span class="italic">Note (normative)</span>: Take notice that this element is #CDATA and may only contain plain text and <span class="italic">not</span> escaped HTML, proper HTML or XHTML or any sort of further mark-up and its content should be regarded as text (thus transforming the < and > entities into the "<" and ">" symbols rather than into mark-up). In order to transmit further mark-up the <span class="Element"><content></span> element has been set up in the RSS 3 Full-type specification.</p> <p class="specPart">Common Optional Elements<a name="spec_common_optional_elements" id="spec_common_optional_elements"></a></p> <p class="specPiece">The <span class="Element"><guid></span> Element<a name="spec_common_optional_elements_guid" id="spec_common_optional_elements_guid"></a></p> <div class="code"> <p><!ELEMENT guid (#CDATA) ><br> <!ATTLIST guid type (code | url) #IMPLIED "url" ></p> </div> <p class="NormalText">The name "guid" stands for Globally Unique Identifier.</p> <p class="NormalText">By its nature, the same GUID must never be given to more than one item or channel.</p> <p class="NormalText">This element is optional both beneath the <span class="Element"><channel></span> element and beneath any instance of an <span class="Element"><item></span> element. It is used to uniquely identify the channel or item on which it is placed.</p> <p class="NormalText">This element may have one attribute, "<span class="Attribute">type</span>", whose content can be either "<span class="example">code</span>" or "<span class="example">url</span>" and is presumed to be "<span class="example">url</span>" when missing.</p> <p class="NormalText">When having no attributes or the "<span class="Attribute">type</span>" attribute set to "<span class="example">url</span>", this element's content must be a valid URI address which uniquely identifies the channel or item.</p> <p class="NormalText">When the "<span class="Attribute">type</span>" attribute set to "<span class="example">code</span>" this element's content must be a GUID numerical value (<span class="italic">without</span> the "<span class="example">urn:uuid:</span>" prefix or any other one).</p> <p class="specPiece">The <span class="Element"><language></span> Element<a name="spec_common_optional_elements_language" id="spec_common_optional_elements_language"></a></p> <div class="code"> <!ELEMENT language (#CDATA) ><br> <!ATTLIST language rel (meta | link | both) #IMPLIED "link" > </div> <p class="NormalText">The <span class="Element"><language></span> elements may be present under the <span class="Element"><channel></span> element and also under the <span class="Element"><item></span> element.</p> <p class="NormalText">This feature is <span class="italic">cascading</span>. This means that when present beneath the <span class="Element"><channel></span> element, all the channel's items are to consider having that language specification unless in those under which another <span class="Element"><language></span> element is present, if any, in which case it overrides it.</p> <p class="NormalText">When missing, this element's content is assumed to be "<span class="example">en</span>".</p> <p class="NormalText">It is used to convey what language is being used, either in the RSS document itself or in the provided link's content.</p> <p class="NormalText">For this purpose this elements may have one attribute, "<span class="Attribute">rel</span>", whose content may be "<span class="example">meta</span>", "<span class="example">link</span>" or "<span class="example">both</span>". This attribute is presumed to be "<span class="example">link</span>" when missing. The content "<span class="example">meta</span>" conveys the notion that the element is specifying the language of the metadata in the RSS document itself. The content "<span class="example">link</span>" conveys the notion that the element is specifying the language in which the relevant content of the given link is written. The content "<span class="example">both</span>" makes the two above mentioned interpretations equally relevant.</p> <p class="NormalText">Up to two <span class="Element"><language></span> elements may be placed beneath the same element as long as one's "<span class="Attribute">rel</span>" attribute is set to "<span class="example">meta</span>" and the other is set to "<span class="example">link</span>". In case there are more than two <span class="Element"><language></span> elements, only the last one is to be considered. In case there are two or more <span class="Element"><language></span> elements and one or more of them has the "<span class="Attribute">rel</span>" attribute set to the same content, the last one set so is to be considered.</p> <p class="NormalText">This item's content must be compliant with the RFC 1766, "Tags For The Identification of Languages". This means that the content of this tag is two letters representing a language (as defined in the ISO 639) which <span class="italic">may</span> be followed, after a dash, by two more letters signifying a particular country (as defined in the ISO 3166).</p> <p class="NormalText">Implementors <span class="italic">should</span> only acknowledge the first letters until the dash, if any (presumably two), though if the specific country is relevant it may regard the country specification. Thus if the element's content is "<span class="example">en-US</span>" it is to be considered as "English", and may choose to regard or disregard the country specification.</p> <p class="specPiece">The <span class="Element"><icon></span> Element<a name="spec_common_optional_elements_icon" id="spec_common_optional_elements_icon"></a></p> <div class="code"> <!ELEMENT icon (#CDATA)><br> <!ATTLIST icon width (#CDATA) #IMPLIED ><br> <!ATTLIST icon height (#CDATA) #IMPLIED > </div> <p class="NormalText">The <span class="Element"><icon></span> element may be placed under the <span class="Element"><channel></span> element and also under any <span class="Element"><item></span> element.</p> <p class="NormalText">Note that this feature is <span class="italic">cascading</span>. Therefore whenever an <span class="Element"><icon></span> element is present beneath a <span class="Element"><channel></span> element, it is assumed to apply to all its item's unless in those where another <span class="Element"><icon></span> element is present, if any, in which case it overrides it.</p> <p class="NormalText">This element is used to convey the location of a graphical icon, presumably to represent the element under which it is placed. This is <span class="italic">not</span> to be confused with the <span class="Element"><image></span> element, which is now a part of the RSS 3 Full format.</p> <p class="NormalText">The content of the <span class="Element"><icon></span> element must be a valid, non-relative, URI pointing to the location of the graphic file to be used as the icon.</p> <p class="NormalText">The permissible types of graphical files to be used as icons are GIF files, ICO files and PNG files.</p> <p class="NormalText">The <span class="Element"><icon></span> element has two more optional attributes, "<span class="Attribute">width</span>" and "<span class="Attribute">height</span>" signifying the width and height of the image to be presented as the icon. When missing, the implementor should <span class="italic">not</span> assume any pre-decided figure but rather either use the actual image's size or impose a certain size according to the restrictions of the implementor.</p> <p class="specPiece">The <span class="Element"><copyright></span> Element<a name="spec_common_optional_elements_copyrights" id="spec_common_optional_elements_copyrights"></a></p> <div class="code"> <!ELEMENT copyright (#CDATA) > </div> <p class="NormalText">The <span class="Element"><copyright></span> element may be placed under the <span class="Element"><channel></span> element and also under any <span class="Element"><item></span> element.</p> <p class="NormalText">Note that this feature is <span class="italic">cascading</span>. Therefore whenever a <span class="Element"><copyright></span> element is present beneath a <span class="Element"><channel></span> element it is assumed to apply to all the channel's items, unless in the items in which another <span class="Element"><copyright></span> element is present, if any.</p> <p class="NormalText">This element's content is plain text of no restriction in length. It is to contain a copyright notice of either the metadata of the feed itself or the links provided in an item, see under the <span class="Element"><channel></span> and <span class="Element"><item></span> elements' descriptions.</p> <p class="specTitle">The <span class="Element"><rss></span> Root Element<a name="spec_rss" id="spec_rss"></a></p> <div class="code"> <p><!ELEMENT rss (channel+) ><br> <!ATTLIST rss version (#CDATA) #REQUIRED ><br> <!ATTLIST rss type (lite | full) #IMPLIED ><br> <!ATTLIST rss source (#CDATA) #IMPLIED ></p> </div> <p class="NormalText">Every RSS document (excluding the XML declaration syntax) begins with the <span class="Element"><rss></span> root element and ends with its end tag <span class="Element"></rss></span>. Aside from being the document's root element, it is also used to convey more information so as to the format used in the document and also contains the feed's channel.</p> <p class="NormalText">The <span class="Element"><rss></span> element must <span class="italic">not</span> be placed under or in relation to an XML namespace or XML schema.</p> <p class="specPart">Required Attributes<a name="spec_rss_req_att" id="spec_rss_req_att"></a></p> <p class="NormalText">The <span class="Element"><rss></span> element has one required attribute, namely "<span class="Attribute">version</span>".</p> <p class="NormalText">This attribute is used to convey which format was used in creating the document.</p> <p class="NormalText">This attributes content must be in the form of "<span class="example">x.y</span>" where X and Y represent positive integers from 0 to 9.</p> <p class="NormalText">This specification <span class="italic">requires</span> the "<span class="Attribute">version</span>" attributes content to be "<span class="example">3.0</span>".</p> <p class="comment"><span class="italic">Comment</span>: As the current format is designed to be backwards compatible, a processor designed for RSS version 3 should also be able to process documents whose version is one of the following: "<span class="example">0.91</span>", "<span class="example">0.92</span>", "<span class="example">0.93</span>", "<span class="example">0.94</span>" or "<span class="example">2.0</span>".</p> <p class="comment"><span class="italic">Comment (normative)</span>: Implementors should be able to process any valid RSS document as long as the X figure in the above mentioned pattern of content in the "<span class="Attribute">version</span>" attribute is "<span class="example">3</span>" (as future sub-version of the current format, i.e. 3.1, 3.2 and so on, are to be backwards compatible). It is suggested that when the processor encounters a number in the X position different from "3" that it should compare it to the list of above mentioned versions.</p> <p class="specPart">Optional Attributes<a name="spec_rss_opt_att" id="spec_rss_opt_att"></a></p> <p class="NormalText">The <span class="Element"><rss></span> element may contain two optional attribute, namely "<span class="Attribute">type</span>" and "<span class="Attribute">source</span>".</p> <p class="NormalText"><span class="specPiece">The "<span class="Attribute">type</span>" Attribute</span><a name="spec_rss_opt_att_type" id="spec_rss_opt_att_type"></a></p> <p class="NormalText">The "<span class="Attribute">type</span>" attribute's content must be either "<span class="example">lite</span>" or "<span class="example">full</span>".</p> <p class="NormalText">Its purpose is to indicate to which specification the document format complies, for informative purposes. For example, a document using some or all the features in the RSS 3 Lite-type specification will have the "<span class="Attribute">type</span>" attribute set to "<span class="example">lite</span>" while a document using one or more features specified in the RSS 3 Full-type specification will have the "<span class="Attribute">type</span>" attribute set to "<span class="example">full</span>".</p> <p class="comment"><span class="italic">Comment (normative)</span>: The purpose of this attribute is informative only and therefore should not be assumed to be anything when missing. Implementors should <span class="italic">not</span> decide upon its content whether to process the document or not, as the RSS 3 types are entirely mutually compatible. In theory, a processor of lite-type documents can handle full-type documents by simply ignoring the full-type features. A processor of full-type documents can easily handle lite-type documents as they are valid full-type documents in themselves.</p> <p class="NormalText"><span class="specPiece">The "<span class="Attribute">source</span>" Attribute</span><a name="spec_rss_opt_att_source" id="spec_rss_opt_att_source"></a></p> <p class="NormalText">The "source" attribute's content must be a valid, non-relative, URI.</p> <p class="NormalText">The URI contained in this attribute <span class="italic">must</span> direct to the originating service or the file itself in which the current RSS document is contained. It is to be used for informative purposes only.</p> <p class="comment"><span class="italic">Note (informative)</span>: This attribute replaces the <span class="example"><source></span> element of the 2.0 format which was supposed to be placed beneath the <span class="Element"><channel></span> element; The reasoning behind this is that in theory there could be several channels within the RSS 3 document and therefore the "<span class="Attribute">source</span>" should be placed on the <span class="Element"><rss></span> root itself.</p> <p class="specPart">Required Sub-Elements<a name="spec_rss_req_ele" id="spec_rss_req_ele"></a></p> <p class="NormalText">The <span class="Element"><rss></span> element must contain at least one <span class="Element"><channel></span> element, the syntax of which is described below.</p> <p class="specTitle">The <span class="Element"><channel></span> Element<a name="spec_channel" id="spec_channel"></a></p> <div class="code"> <!ELEMENT channel (title | link | description | managingEditor? | webMaster? | icon? | generator? | docs? | ttl? | guid? | copyrights? | language* | item+) > </div> <p class="NormalText">The <span class="Element"><channel></span> element is the placeholder for the feed's items, structure-wise.</p> <p class="NormalText">A channel is a series (sorted or unsorted) of items under some sort of grouping. Though this specification does not intend to set the rules for the grouping of items, it is natural that items are grouped in some logical relation, like all items in some level originating from the same source, or concerning a certain topic and so on.</p> <p class="NormalText">This specification does not concern multiple channels within the same RSS document. However, upon encountering more than one channels within the same document, implementors <span class="italic">should</span> process the first instance of this element normally and <span class="italic">may</span> choose to process its other instances or not.</p> <p class="specPart">Optional Attributes<a name="spec_channel_opt_att" id="spec_channel_opt_att"></a></p> <p class="NormalText">The <span class="Element"><channel></span> element may have the boolean (meaning its content may be either "<span class="example">true</span>" or "<span class="example">false</span>") attribute "<span class="Attribute">isEmpty</span>", which is assumed false when missing.</p> <p class="NormalText">A channel <span class="italic">should</span> be defined as empty only on the occasion where it contains only a single <span class="Element"><item></span> element which has been set as empty as well, yet it <span class="italic">may</span> also be placed in the <span class="Element"><channel></span> element even if it contains one or more perfectly good items.</p> <p class="NormalText">Upon encountering a channel element set as empty, implementors must <span class="italic">not</span> continue to process the channel's content and <span class="italic">should</span> inform the user of that situation in some way, rather than continue to process the said channel.</p> <p class="comment"><span class="italic">Note</span>: A channel containing one or more non-empty items should be set as empty only if its author wishes for it not to be processed, for example in case of defunct links or other outdated metadata.</p> <p class="comment"><span class="italic">Comment</span>: Implementors which are able to process more than one channel in the same feed <span class="italic">should</span> not stop processing the document upon encountering a channel set as empty but rather look for more channels.</p> <p class="NormalText">Also, the <span class="Element"><channel></span> element may have the "<span class="Attribute">isUpdated</span>" and "<span class="Attribute">updateNum</span>" attributes whose syntax and purpose have been described under <a href="#spec_common_elements">Common Elements and Attributes</a>.</p> <p class="specPart">Required Sub-Elements<a name="spec_channel_req_ele" id="spec_channel_req_ele"></a></p> <p class="NormalText">The <span class="Element"><channel></span> element must have at least four sub-elements, namely <span class="Element"><title></span>, <span class="Element"><link></span> and <span class="Element"><description></span> and at least one <span class="Element"><item></span> element. The syntax of the first three is described under <a href="#spec_common_elements">Common Elements and Attributes</a>.</p> <p class="NormalText">These elements' content <span class="italic">should</span> be derived from the following stances:</p> <ol class="NormalText"> <li>The <span class="Element"><title></span> element's content should perform as the title of the channel itself; therefore if the channel for example is a compilation of items from a certain website, that website's name should be mentioned in the item's title</li> <li>The <span class="Element"><link></span> element's content should in theory provide a URI to the source <span class="italic">behind</span> feed, namely the website or other application to which the feed relates<br> <span class="comment"><span class="italic">Note (normative)</span>: this must <span class="italic">not</span> be the URI of the source RSS file or service</span> </li> <li>The <span class="Element"><description></span> element should in theory describe the purpose of the feed or rather describe the originating source</li> </ol> <p class="NormalText">A channel must contain at least one <span class="Element"><item></span> element, even if the item is set to be empty.</p> <p class="specPart">Optional Sub-Elements<a name="spec_channel_opt_ele" id="spec_channel_opt_ele"></a></p> <p class="NormalText">The <span class="Element"><channel></span> element may have several optional sub-elements. Four of which (namely <span class="Element"><icon></span>, <span class="Element"><guid></span>, <span class="Element"><language></span> and <span class="Element"><copyright></span>) have been described under <a href="#spec_common_elements">Common Elements and Attributes</a> above.</p> <p class="NormalText">Other elements are described in the following sections.</p> <p class="specPiece">The <span class="Element"><managingEditor></span> Element<a name="spec_channel_opt_ele_managingEditor" id="spec_channel_opt_ele_managingEditor"></a></p> <div class="code"> <!ELEMENT managingEditor (#CDATA) ><br> <!ATTLIST managingEditor name (#CDATA) #IMPLIED > </div> <p class="NormalText">The <span class="Element"><managingEditor></span> element's content must be a valid electronic mail address (hence "<span class="italic">e-mail</span>").</p> <p class="NormalText">It may have one attribute, namely "<span class="Attribute">name</span>" whose content should be the name of the e-mail address' owner.</p> <p class="NormalText">The purpose of this element is to contain the e-mail of the person responsible for the feed's content so as to metadata and link's destination, i.e. the editor of the content's destination and the channel's <span class="Element"><description></span> elements' content.</p> <p class="specPiece">The <span class="Element"><webMaster></span> Element<a name="spec_channel_opt_ele_webMaster" id="spec_channel_opt_ele_webMaster"></a></p> <div class="code"> <!ELEMENT webMaster (#CDATA) ><br> <!ATTLIST webMaster name (#CDATA) #IMPLIED > </div> <p class="specPiece"><span class="NormalText">The <span class="Element"><webMaster></span> element is very similar to the <span class="Element"><managingEditor></span> element in syntax. Its content must be a valid e-mail address.</span></p> <p class="NormalText">It may have one attribute, namely "<span class="Attribute">name</span>" whose content should be the name of the e-mail address' owner.</p> <p class="NormalText">The purpose of this element is to contain the e-mail of the person responsible for the technical maintenance of the website in general and the feed in particular.</p> <p class="specPiece">The <span class="Element"><lastBuildDate></span> Element<a name="spec_channel_opt_ele_lastBuildDate" id="spec_channel_opt_ele_lastBuildDate"></a></p> <div class="code"> <!ELEMENT lastBuildDate (#CDATA) > </div> <p class="specPiece"><span class="NormalText">This element's content must specify an exact date conforming to the IETF RFC822 specification.</span></p> <p class="specPiece"><span class="NormalText">Its purpose is to specify the exact time when the feed was last produced or generated. For example, at the time of this writing if a feed was produced its content would be "Thu, 30 Jul 2005 16:43:00 GMT".</span></p> <p class="specPiece">The <span class="Element"><ttl></span> Element<a name="spec_channel_opt_ele_ttl" id="spec_channel_opt_ele_ttl"></a></p> <div class="code"> <!ELEMENT ttl (#CDATA) ><br> <!ATTLIST ttl span (seconds | minutes | hours | days) #IMPLIED "seconds" > </div> <p class="NormalText">The element's name, "ttl", stands for <span class="bold">T</span>ime <span class="bold">T</span>o <span class="bold">L</span>ive.</p> <p class="NormalText">Its content must be an integer.</p> <p class="NormalText">When this element's missing, its content <span class="italic">should</span> be assumed to be "60".</p> <p class="NormalText">It <span class="italic">may</span> have one attribute, namely "<span class="Attribute">span</span>", whose content may be "<span class="example">seconds</span>", "<span class="example">minutes</span>", "<span class="example">hours</span>" or "<span class="example">days</span>"; It is assumed to be "<span class="example">seconds</span>" when missing. This attribute specifies what type of time measurement is the content of the element, namely <span class="italic">seconds</span>, <span class="italic">minutes</span>, <span class="italic">hours</span> or <span class="italic">days</span>.</p> <p class="NormalText">The purpose of this element is to specify the minimal time that has to pass between refreshing of the feed from its originating source. It is recommended that implementors adhere to this element and refresh the feed according to its content.</p> <p class="specPiece">The <span class="Element"><generator></span> Element<a name="spec_channel_opt_ele_generator" id="spec_channel_opt_ele_generator"></a></p> <div class="code"> <!ELEMENT generator (#CDATA) ><br> <!ATTLIST generator url (#CDATA) #IMPLIED > </div> <p class="NormalText">The <span class="Element"><generator></span> element's content must be a simple string.</p> <p class="NormalText">Its purpose is to describe or name the application that produced the document.</p> <p class="NormalText">It may have one attribute, namely "<span class="Attribute">url</span>", whose content must be a valid URL, in theory linking to the website of the generator.</p> <p class="specPiece">The <span class="Element"><docs></span> Element<a name="spec_channel_opt_ele_docs" id="spec_channel_opt_ele_docs"></a></p> <div class="code"> <!ELEMENT docs (#CDATA) > </div> <p class="NormalText">This element's content is a simple string and is supposed to contain the URL of the current specification.</p> <p class="NormalText">Its purpose is to provide further information to readers encountering the RSS document.</p> <p class="specTitle">The <span class="Element"><item></span> Element<a name="spec_item" id="spec_item"></a></p> <div class="code"> <!ELEMENT item (title | link | description | icon? | guid? | copyrights? | language* | pubDate* | comments* | author* | field*) > </div> <p class="NormalText">Every channel in an RSS document must contain at least one item.</p> <p class="NormalText">An RSS item is a floating point of metadata within the document itself, set into a pre-made structure. An item represents a piece of something bigger than itself, like a summary and link to some piece of writing, application or anything at all.</p> <p class="NormalText">An item contains at least the basic information a processor needs to provide the user a usable headline and address of the piece in question.</p> <p class="NormalText">An item may have one optional attribute, at least three required sub-elements and several optional sub-elements.</p> <p class="specPart">Optional Attributes<a name="spec_item_opt_att" id="spec_item_opt_att"></a></p> <p class="NormalText">The <span class="Element"><item></span> element may two or three attributes, all optional.</p> <p class="NormalText">The first two are the "<span class="Attribute">isUpdated</span>" and "<span class="Attribute">updateNum</span>" attributes whose syntax and purpose have been described under <a href="#spec_common_elements">Common Elements and Attributes</a> above.</p> <p class="NormalText">The third one is the "<span class="Attribute">isEmpty</span>" boolean attribute, presumed false when missing. This attribute is set to true to indicate that the entire content of the item's metadata is empty (the three required sub-elements are present but empty), though even if the item's sub-elements do hold content implementors must <span class="italic">not</span> process them.</p> <p class="specPart">Required Sub-Elements<a name="spec_item_req_ele" id="spec_item_req_ele"></a></p> <p class="NormalText">The <span class="Element"><item></span> element requires three required elements: <span class="Element"><title></span>, <span class="Element"><link></span> and <span class="Element"><description></span>, the syntax of which is described under <a href="#spec_common_elements">Common Elements and Attributes</a>.</p> <p class="NormalText">They <span class="italic">should</span> be used in the following fashion:</p> <ol class="NormalText"> <li>The <span class="Element"><title></span> element should contain the title of the item in question</li> <li>The <span class="Element"><link></span> element should contain a valid URI pointing to the full item or the item's destination</li> <li>The <span class="Element"><description></span> element should contain a theoretically brief (though unrestricted in length) description of the item (but <span class="italic">not</span> the content of the item's destination in any form)</li> </ol> <p class="specPart">Optional Sub-Elements<a name="spec_item_opt_ele" id="spec_item_opt_ele"></a></p> <p class="NormalText">The <span class="Element"><item></span> element may have four of the common optional elements, namely <span class="Element"><guid></span>, <span class="Element"><language></span>, <span class="Element"><icon></span> and <span class="Element"><copyright></span>, the syntax of which has been described under <a href="#spec_common_elements">Common Elements and Attributes</a>.</p> <p class="NormalText">Aside from the ones mentioned above, these are the other optional elements permitted beneath the <span class="Element"><item></span> element:</p> <p class="specPiece">The <span class="Element"><comments></span> Element<a name="spec_item_opt_ele_comments" id="spec_item_opt_ele_comments"></a></p> <div class="code"> <!ELEMENT comments (#CDATA) ><br> <!ATTLIST comments type (post | read | both) #IMPLIED "both" > </div> <p class="NormalText">The <span class="Element"><comments></span> element is used to link to a URL relating to comments concerning the item in question.</p> <p class="NormalText">This element's content must be a valid URI.</p> <p class="NormalText">It has one optional attribute, "<span class="Attribute">type</span>", whose content may be either "<span class="example">post</span>", "<span class="example">read</span>" or "<span class="example">both</span>" and is presumed to be "<span class="example">both</span>" when missing. In theory, when this element's "<span class="Attribute">type</span>" attribute is set as "<span class="example">post</span>" it is to be thought as a webpage in which the user can post a comment; When it is set to "<span class="example">read</span>" it is to be thought as a webpage in which the user can read the comments and when it is set to "<span class="example">both</span>" it is to be though as a webpage containing either or both of the methods.</p> <p class="NormalText">There may be two <span class="Element"><comments></span> elements within the <span class="Element"><item></span> element <span class="italic">only</span> if one has the "<span class="Attribute">type</span>" attribute set as "<span class="example">read</span>" and the other as "<span class="example">post</span>".</p> <p class="NormalText"><span class="italic">The multiple elements rules</span><a name="multiple_ele_algo" id="multiple_ele_algo"></a>:</p> <ul class="NormalText"> <li>There may be up to two <span class="Element"><comments></span> elements as long as each of their "<span class="Attribute">type</span>" attribute has a different content which is not "<span class="example">both</span>", specifically "<span class="example">read</span>" and "<span class="example">post</span>"</li> <li>Upon encountering more than one <span class="Element"><comments></span> element of which the "<span class="Attribute">type</span>" attribute is set to "<span class="example">both</span>" only the last one set so is to be processed</li> <li>Upon encountering two more or more <span class="Element"><comments></span> elements whose "<span class="Attribute">type</span>" attribute is set to the same content only the latest one is to be considered</li> </ul> <p class="NormalText">These rules apply, with change of the element, attribute and attribute's content (except for "<span class="example">both</span>") to the <span class="Element"><language></span> element and the <span class="Element"><pubDate></span> elements.</p> <p class="specPiece">The <span class="Element"><pubDate></span> Element<a name="spec_item_opt_ele_pubDate" id="spec_item_opt_ele_pubDate"></a></p> <div class="code"> <!ELEMENT pubDate (#CDATA) ><br> <!ATTLIST pubDate rel (meta | link | both) #IMPLIED "both" > </div> <p class="NormalText">Similarly to the <span class="Element"><lastBuildDate></span> element, the <span class="Element"><pubDate></span> element's content is a date complying with the IETF RFC822.</p> <p class="NormalText">It may have one attribute, namely "<span class="Attribute">rel</span>" whose content may be "<span class="example">meta</span>", "<span class="example">link</span>" or "<span class="example">both</span>" and is presumed to be "<span class="example">both</span>" when missing. This attribute's content is set according to whether the date describes the date on which the item was added to the feed (in which case its content is "<span class="italic">meta</span>") or when the item's link destination published (in which case the its content is "content") or "<span class="italic">both</span>", implying that the date is relevant to both the above notions.</p> <p class="NormalText">The purpose of this element is to specify the date of the publication of the item, whether within the feed document, the item's link destination itself or both.</p> <p class="NormalText">Similarly to the <span class="Element"><comments></span> element above, there may be <span class="italic">up to two</span> <span class="Element"><pubDate></span> elements present as long as in both the "<span class="Attribute">rel</span>" attribute is present, one set to "<span class="example">meta</span>" and the to "<span class="italic">link</span>".</p> <p class="NormalText">The "<a href="#multiple_ele_algo">multiple elements algorithm</a>" described above applies here.</p> <p class="specPiece">The <span class="Element"><author></span> Element<a name="spec_item_opt_ele_author" id="spec_item_opt_ele_author"></a></p> <div class="code"> <!ELEMENT author (#CDATA) ><br> <!ATTLIST author name (#CDATA) #IMPLIED ><br> <!ATTLIST author type (writer | co-writer | provider | contributor | editor | translator) #IMPLIED "writer" > </div> <p class="NormalText">The <span class="Element"><author></span> element is similar in syntax to the <span class="Element"><webMaster></span> and <span class="Element"><managingEditor></span> elements; It must contain a valid e-mail address and <span class="italic">may</span> have the string-type attribute "<span class="Attribute">name</span>" indicating the name of the owner of the provided e-mail.</p> <p class="NormalText">There may be as many <span class="Element"><author></span> elements beneath the <span class="Element"><item></span> element as needed.</p> <p class="NormalText">This element has an additional attribute, namely "<span class="Attribute">type</span>", whose content may be "<span class="example">writer</span>", "<span class="example">co-writer</span>", "<span class="example">provider</span>", "<span class="italic">contributor</span>", "<span class="example">editor</span>" or "<span class="example">translator</span>", each describing the role of the author in question if needed; This attribute is assumed to be "<span class="italic">writer</span>" when missing.</p> <p class="NormalText">The <span class="Element"><field></span> Element<a name="spec_item_opt_ele_field" id="spec_item_opt_ele_field"></a></p> <div class="code"> <!ELELEMT field (#CDATA) ><br> <!ATTLIST field name (#CDATA) #REQUIRED ><br> <!ATTLIST field guid (#CDATA) #IMPLIED ><br> <!ATTLIST field type (string | boolean | float | integer | time | date | anyURI) #IMPLIED "string" > </div> <p class="NormalText">The <span class="Element"><field></span> element is designed to help implementors spare the work of expanding the document with new elements by providing this new element which may fulfill these needs. The <span class="Element"><field></span> element may contain any form of content, as long as it <span class="italic">not</span> parsible (meaning, only plain text and no mark-up or escaped mark-up) and may appear as many times as needed within any given <span class="Element"><item></span> element.</p> <p class="NormalText">It has one required attribute, "<span class="Attribute">name</span>", which is supposed to name the field, theoretically according to its purpose. Implementors can, for example, use the content of this attribute to describe the <span class="Element"><field></span> element's content. There may be more than one <span class="Element"><field></span> elements with the "<span class="Attribute">name</span>" attribute having the same content.</p> <p class="NormalText">The <span class="Element"><field></span> element has two optional attributes, the first being "<span class="Attribute">guid</span>". Similarly to the <span class="Element"><guid></span> element, this is a string given to uniquely identify the <span class="Element"><field></span> element and therefore there may be no other <span class="Element"><field></span> element with the same GUID in the document. Its content <span class="italic">must</span> be a numerical identifier rather than a URI.</p> <p class="NormalText">The second optional attribute is "<span class="Attribute">type</span>". Its content specifies the nature of the <span class="Element"><field></span> element's content. The possible values for this attribute are detailed in the XML Schema Part 2 W3C Recommendation, specifically Appendix C. However, implementors may choose to ignore all datatypes except for "<span class="example">string</span>", "<span class="example">boolean</span>", "<span class="example">float</span>", "<span class="example">integer</span>", "<span class="example">time</span>", "<span class="example">date</span>", or "<span class="example">anyURI</span>". It is assumed to be "<span class="example">string</span>" when missing.</p> <p class="specTitle">HTML and XHTML RSS Linking Guidelines<a name="spec_linking" id="spec_linking"></a></p> <p class="NormalText">This section describes how RSS 3 documents should be linked to in HTML and XHTML document (henceforth "(X)HTML"), for purposes of autodiscovery of feeds by user-agents (henceforth, "UAs") and also provides an XML element to be used in XML documents and even XHTML to be autodiscovered by UAs.</p> <p class="specPart">General Linking<a name="spec_linking_general" id="spec_linking_general"></a></p> <p class="NormalText">General linking of RSS 3 documents is defined by having a link present in the (X)HTML's <span class="example"><head></span> element's <span class="example"><link></span> element, thus linking the RSS 3 document to the (X)HTML page in general as opposed to a certain presentable element in that page in particular.</p> <p class="NormalText">A UA wishing to detect a linked RSS 3 document in the <span class="example"><link></span> element <span class="italic">must</span> conform to the following rules:</p> <ol class="NormalText"> <li>The <span class="example"><link></span> element's syntax <span class="italic">must</span> conform to its specification; The current specification only describes its required content</li> <li>The <span class="example"><link></span> element's "rel" attribute <span class="italic">must</span> be present and <span class="italic">must</span> be set to "<span class="example">alternate</span>"</li> <li>The <span class="example"><link></span> element's "href" attribute <span class="italic">must</span> be present and <span class="italic">must</span> contain the URI of the RSS 3 document, whether in file or service form<br> <span class="comment"><span class="italic">Note (normative)</span>: In this particular case the content of this attribute <span class="italic">may</span> be a relative URI</span> </li> <li>The <span class="example"><link></span> element's "title" attribute <span class="italic">must</span> be present and <span class="italic">must</span> begin with the content "<span class="example">RSS 3.x</span>" where "x" is some integer, ideally the one of this specification, i.e. "RSS 3.0" yet it may have any other characters and words after these first seven characters</li> </ol> <p class="NormalText">Normally the <span class="example"><link></span> element's "title" attribute is not required. However, in order to identify the item in question as an RSS 3 document its first five characters <span class="italic">must</span> be "<span class="example">RSS 3</span>". UAs in attempt to decide what is the standard used in the linked item must <span class="italic">not</span> compare the entire content string given to the "title" attribute but rather retrieve its first five characters and compare it to "<span class="example">RSS 3</span>". UAs attempting to decide what is the feed's subversion (i.e., 3.0, 3.1 etc.) <span class="italic">should</span> retrieve directly the seventh character (thus returning the subversion itself) or the fifth to seventh characters (thus returning the entire version).</p> <p class="NormalText">In order to title the link, its title <span class="italic">must</span> follow directly after the "<span class="example">RSS 3.x</span>" string in the "title" attribute, separated by a space, as all characters after the above-mentioned ones are not to be considered by UAs unless for purposes of titling (in which case they may decide to drop the "<span class="example">RSS 3.x</span>" beginning part of the attribute's content).</p> <p class="specPart">Hypertext Linking<a name="spec_linking_hypertext" id="spec_linking_hypertext"></a></p> <p class="NormalText">Hypertext linking is defined by a (X)HTML hypertext link, meaning the <span class="example"><a></span> element, which points to an RSS 3 document (whose purpose is outside of this specification's scope).</p> <p class="NormalText">A UA wishing to decide whether a certain hypertext link points to a feed <span class="italic">must</span> follow this rules:</p> <ol class="NormalText"> <li>The <span class="example"><a></span> element's syntax <span class="italic">must</span> conform to its specifications; The current specification only describes its required content</li> <li>In attempting to decide whether a hypertext link points to a feed the UA <span class="italic">should</span> disregard all attributes whose content is not described here (such as "name", "target" etc.); Also, the UA <span class="italic">must</span> disregard the element's content if any</li> <li>The <span class="example"><a></span> element's "href" attribute <span class="italic">must</span> be present and <span class="italic">must</span> contain the URI of the RSS 3 document, whether in file or service form<br> <span class="comment"><span class="italic">Note (normative)</span>: In this particular case the content of this attribute <span class="italic">may</span> be a relative URI</span> </li> <li>The <span class="example"><a></span> element's "title" attribute <span class="italic">must</span> be present and <span class="italic">must</span> begin with the characters "<span class="example">RSS 3</span>" (or "<span class="example">RSS 3.0</span>")</li> </ol> <p class="NormalText">The behavior of the UA towards the content of the "title" attribute is the same as the one described in the <a href="#spec_linking_general">above section</a>.</p> <p class="specPart">XML Linking<a name="spec_linking_xml" id="spec_linking_xml"></a></p> <p class="NormalText">The following element and its features may be present at any XML based document and is supposed to point to an RSS feed for the purposes of autodiscovery. For example, if this element is present in an XHTML document, a UA aware of this syntax will detect the RSS feed.</p> <p class="code"><!ELEMENT rss:feed #EMPTY ><br> <!ATTLIST rss:feed version (#CDATA) #REQUIRED ><br> <!ATTLIST rss:feed url (#CDATA) #REQUIRED><br> <!ATTLIST rss:feed desc (#CDATA) #IMPLIED></p> <p class="NormalText">Here are the rules for the interpretation and syntax of this element:</p> <ol class="NormalText"> <li>This element will always be preceded by the "<span class="italic">rss:</span>" namespace and will always contain the <span class="italic">xmlns:rss="https://rss3.org"</span> attribute</li> <li>This element's destination will always be assumed to be an RSS feed</li> <li>The "<span class="italic">version</span>" attribute <span class="italic">must</span> be present and must contain at least the first number of the format's version (i.e., "0", "2" and "3") and <span class="italic">may</span> be formatted after the RSS 3 x.y version numbering conventions</li> <li>The "url" attribute <span class="italic">must</span> be present and must contain the URL pointing to the RSS feed; Note that this <span class="italic">may</span> be a relative URL</li> <li>The "desc" attribute is optional and is used to briefly describe the purpose of the linked feed</li> <li>Though there isn't any particular significance to the position of this element, when it is used in the XHTML format it is suggested to be placed under the <span class="italic"><head></span> element</li> </ol> <p class="NormalText">Exemplary element:</p> <p class="code"><rss:feed xmlns:rss="https://rss3.org" version="3.0" url="https://rss3.org/official_blog/?feed=rss3lite" desc="The RSS 3 blog RSS 3 Lite-type feed " /></p> <p class="specTitle">Expanding An RSS Document<a name="spec_extending" id="spec_extending"></a></p> <p class="NormalText">Though the RSS format makes use of no namespaces, any element or attribute put into the document which is not a part of neither the lite-type nor the full-type specifications must be put under a namespace.</p> <p class="NormalText">It is further recommended that the namespace be declared using the "xmlns:" attribute-prefix on the <span class="Element"><rss></span> element itself instead of the extended elements themselves.</p> <p class="NormalText">In relation to this specification a document detailing a select number of RSS function-specific extensions is available <a href="../extensions.html">here</a>.</p> <p class="comment">Temporary note (<span class="italic">informative</span>): While this specification is in drafts, any feature addition or alterations an implementor sees feat to perform should be sent to the editor of the current document for consideration.</p> <br> <hr> <p class="NormalHeader">Appendices<a name="appendices" id="appendices"></a></p> <p class="NormalText"><span class="bold">The following sections are <span class="italic">informative.</span></span></p> <p class="specTitle">A. Differences from The Previous Format<a name="appendices_differences" id="appendices_differences"></a></p> <p class="NormalText">These are the differences in RSS 3 from the RSS 2.0.1 format. Note that elements present in the RSS 2.0.1 format but only present in the RSS 3 <span class="italic">Full</span>-type specification are <span class="italic">not</span> noted in the following lists.</p> <ol class="NormalText"> <li>A list of <span class="italic">alterations</span> of the RSS 2.0.1 format: <ol> <li>There must be at least one channel containing at least one item in any RSS document</li> <li>The RSS document MIME type is "<span class="example">application/rss+xml</span>"</li> <li>The content of the <span class="Element"><language></span> element is now not specified by the W3C or Netscape documents but rather a compilation according to the RFC1766 (using the ISO639 required language prefix and the ISO3166 optional country suffix)</li> <li>The content of the <span class="Element"><rss></span> element's "<span class="Attribute">version</span>" attribute is now set to "<span class="example">3.0</span>" and the rules for its interpretation have been set</li> <li>The <span class="Element"><language></span> and <span class="Element"><copyright></span> element can be placed under the <span class="Element"><item></span> element as well</li> <li>The <span class="Element"><guid></span> element can be placed under the <span class="Element"><channel></span> element as well</li> <li>The <span class="Element"><pubDate></span> element has been moved under the <span class="Element"><item></span> element and has been given a new purpose</li> </ol> </li> <li>A list of <span class="italic">additions</span> to the RSS 2.0.1 format: <ol> <li>The common "<span class="Attribute">isEmpty</span>" optional attribute</li> <li>The common "<span class="Attribute">isUpdated</span>" and "<span class="Attribute">updateNum</span>" attributes</li> <li>The <span class="Element"><rss></span> element's optional "<span class="Attribute">type</span>" attribute</li> <li>The <span class="Element"><rss></span> element's optional "<span class="Attribute">source</span>" attribute (which replaces the deprecated <span class="italic"><source></span> element)</li> <li>The <span class="Element"><managingEditor></span>, <span class="Element"><webMaster></span> and <span class="Element"><author></span> elements' optional "<span class="Attribute">name</span>" attribute</li> <li>The <span class="Element"><author></span> element's optional "<span class="Attribute">type</span>" attribute</li> <li>The <span class="Element"><generator></span> element's optional "<span class="Attribute">url</span>" attribute</li> <li>The <span class="Element"><comments></span> element's optional "<span class="Attribute">type</span>" attribute</li> <li>The <span class="Element"><pubDate></span> element's optional "<span class="Attribute">type</span>" attribute</li> <li>The <span class="Element"><ttl></span> element's optional "<span class="Attribute">span</span>" attribute</li> <li>There may be, under certain circumstances, up to two <span class="Element"><comments></span> elements</li> <li>There may be, under certain circumstances, up to two <span class="Element"><pubDate></span> elements</li> <li>There may be, under certain circumstances, up to two <span class="Element"><language></span> elements</li> <li>There may be as many <span class="Element"><author></span> elements as needed</li> <li>The common <span class="Element"><icon></span> optional element</li> <li>The <span class="Element"><field></span> optional element</li> <li>The grounds for autodiscovery and hypertext linking of RSS 3 documents have been set</li> </ol> </li> <li>A list of <span class="italic">removals</span> from the RSS 2.0.1 format: <ol> <li>The <span class="example"><clouds></span> element</li> <li>The <span class="example"><skipHours></span> element</li> <li>The <span class="example"><skipDays></span> element</li> <li>The <span class="example"><textInput></span> element</li> <li>The <span class="example"><source></span> element</li> <li>The <span class="example"><pics></span> element</li> <li>The <span class="Element"><guid></span> element's optional "<span class="example">isPermaLink</span>" attribute</li> </ol> </li> </ol> <p class="specTitle">B. The RSS Lite-type DTD<a name="appendices_dtd" id="appendices_dtd"></a></p> <p class="NormalText">For informative purposes only here is presented the RSS Lite-type DTD. The reader is reminded that the RSS document itself must <span class="italic">not</span> rely on or direct to a DTD file.</p> <p class="code"><span><!-- RSS version 3.0 DTD scheme --></span><br> <br> <!-- Root element --><br> <!ELEMENT rss (channel+) ><br> <!ATTLIST rss version (#CDATA) #REQUIRED ><br> <!ATTLIST rss type (lite | full) #IMPLIED ><br> <!ATTLIST rss source (#CDATA) #IMPLIED ><br> <br> <!-- Channel element --><br> <!ELEMENT channel (title | link | description | managingEditor? | webMaster? | icon? | generator? | docs? | ttl? | guid? | copyrights? | language* | item+) ><br> <!ATTLIST channel isEmpty (true | false) #IMPLIED "false" ><br> <!ATTLIST channel isUpdated (true | false) #IMPLIED "false" ><br> <!ATTLIST channel updateNum #IMPLIED "1" ><br> <!ELEMENT managingEditor (#CDATA) ><br> <!ATTLIST managingEditor name (#CDATA) #IMPLIED ><br> <!ELEMENT webMaster (#CDATA) ><br> <!ATTLIST webMaster name (#CDATA) #IMPLIED ><br> <!ELEMENT lastBuildDate (#CDATA) ><br> <!ELEMENT docs (#CDATA) ><br> <!ELEMENT generator (#CDATA) ><br> <!ATTLIST generator url (#CDATA) #IMPLIED ><br> <!ELEMENT ttl (#CDATA) ><br> <!ATTLIST ttl span (seconds | minutes | hours | days) #IMPLIED "seconds" ><br> <br> <!-- Item element --><br> <!ELEMENT item (title | link | description | icon? | guid? | copyrights? | language* | pubDate* | comments* | author* | field*) ><br> <!ATTLIST item isEmpty (true | false) #IMPLIED "false" ><br> <!ATTLIST item isUpdated (true | false) #IMPLIED "false" ><br> <!ATTLIST item updateNum #IMPLIED "1" ><br> <!ELEMENT pubDate (#CDATA) ><br> <!ATTLIST pubDate rel (meta | link | both) #IMPLIED "both" ><br> <!ELEMENT author (#CDATA) ><br> <!ATTLIST author name (#CDATA) #IMPLIED ><br> <!ATTLIST author type (writer | co-writer | provider | contributor | editor | translator) #IMPLIED "writer" ><br> <!ELEMENT comments (#CDATA) ><br> <!ATTLIST comments type (post | read | both) #IMPLIED "both" ><br> <!ELELEMT field (#CDATA) ><br> <!ATTLIST field name (#CDATA) #REQUIRED ><br> <!ATTLIST field guid (#CDATA) #IMPLIED ><br> <!ATTLIST field type (string | boolean | float | integer | time | date | anyURI) #IMPLIED "string" ><br> <br> <!-- Common required elements --><br> <!ELEMENT title (#CDATA) ><br> <!ELEMENT link (#CDATA) ><br> <!ELEMENT description (#CDATA) ><br> <br> <!-- Common optional elements --><br> <!ELEMENT icon (#CDATA)><br> <!ATTLIST icon width (#CDATA) #IMPLIED ><br> <!ATTLIST icon height (#CDATA) #IMPLIED ><br> <!ELEMENT guid (#CDATA) ><br> <!ATTLIST guid type (code | url) #IMPLIED "url" ><br> <!ELEMENT language (#CDATA) ><br> <!ATTLIST language rel (meta | link | both) #IMPLIED "link" ><br> <!ELEMENT copyright (#CDATA) ><br> <br> <!-- End of document --></p> <p> </p> <p class="specTitle">C. Validation XML-Schema<a name="appendices_schema" id="appendices_schema"></a></p> <p class="NormalText">(Only upon publication of the Final Draft before the Final Standard version)</p> <p class="specTitle">D. XSLT for Display of RSS 3 Lite-type Feeds<a name="appendices_xslt" id="appendices_xslt"></a></p> <p class="NormalText">(Only upon publication of the Final Draft before the Final Standard version)</p> <p class="specTitle">E. Sample Feeds<a name="appendices_sample" id="appendices_sample"></a></p> <p class="NormalText">For informative and exemplary purposes only, here are presented samples of RSS documents complying with the specification detailed in this document.</p> <p class="NormalText">An empty feed (basic structure only):</p> <div class="code"> <?xml version="1.0" encoding="UTF-8" ?><br> <rss version="3.0"><br>    <channel isEmpty="true"><br>       <title>An Empty Channel
                http://www.some-fake.url
                This is an empty channel
                
                   
                   
                   
                

             

          A full-fledged features feed:



             
                RSS Version 3
                https://rss3.org/
                This is a sample RSS 3 Lite-type feed

                Sun, 14 Aug 2005 09:53:59 +0000
                http://no.address/
                en
                https://rss3.org/files/r1.ico
                Jonathan Avidan 2005 (c)
                
                
                7
                https://rss3.org/rss3lite.html

               
                   RSS 3 Lite First Draft Now Available
                   https://rss3.org/archive/rss3lite/first_draft.html
                   The RSS 3 Lite-type specification first publicly available version

                   Sun, 18 Aug 2005 09:53:59 +0000
                   
                   6457894357689
                


                
                   Welcome to the RSS 3 Official Blog!
                   https://rss3.org/official_blog/?p=2
                   The RSS 3 Official Blog welcome message

                   https://rss3.org/official_blog/?p=2#comments
                   Wed, 27 Jul 2005 14:34:51 +0000
                   
                   https://rss3.org/official_blog/?p=2
                


             

           

          D. Errata

          From the First Draft stage (in order of correction):

          1. Appendix A, 'isPemraLink' > 'isPermaLink' (thanks, Mark)
          2. Appendix A, removed entry about removal element
          3. Several errors of phrasing (thanks, Anosh)
          4. Under 'the "isUpdated" and "updateNum" Attributes', under the 'Rule', the last occurence of "updateNum" corrected to "isUpdated" (thanks, Jase and Spud)
          5. All instances of have been corrected to

           

          End of document.



          Navigate: Home | Blog | Message Board | FAQ | Extensions | Specifications | Requirements | Terminology | RSS 3 Lite | Links | Contact Us

          ©2005 Jonathan Avidan - Created using Nvu - Distributed under the Attribution/Share Alike Creative Commons License