CINXE.COM
RSS Best Practices Profile
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-J80V1HPMKT"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-J80V1HPMKT'); </script> <title>RSS Best Practices Profile</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="alternate" type="application/rss+xml" title="RSS Advisory Board" href="http://feeds.rssboard.org/rssboard" /> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Anton&family=Lisu+Bosa:wght@700&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <style type="text/css" media="screen"> @import url("https://www.rssboard.org/images/stylesheet.css"); </style> <style type="text/css" media="screen"> @import url("https://www.rssboard.org/images/spec-stylesheet.css"); </style> <meta name="robots" content="noodp" /><meta name="description" content="A set of recommendations for RSS feed publishers and developers offered by the RSS Advisory Board." /><link rel="canonical" href="https://www.rssboard.org/rss-profile" /> </head> <body> <!-- ukey="13C1F4FD" --> <!-- Begin Page --> <div class="container page"> <div class="row"> <div class="col col-md-12 banner"> <h1 class="bannerhead"><a href="/">RSS Advisory Board</a></h1> <h2 class="bannersubhead">Really Simple Syndication specifications, tutorials and discussion</h2> </div> </div> <div class="row"> <div class="col col-md-10"><!-- Begin Google AdSense --> <div align="center"> <p><script type="text/javascript"><!-- google_ad_client = "pub-8378161688790357"; /* RSS Board, 728x90, created 10/30/10 */ google_ad_slot = "8997688149"; google_ad_width = 728; google_ad_height = 90; //--> </script> <script type="text/javascript" src="//pagead2.googlesyndication.com/pagead/show_ads.js"> </script></p> </div> <!-- End Google AdSense --><!-- Begin Main Content --> <div class="specification"> <h3>Really Simple Syndication Best Practices Profile</h3> <p class="fineprint">Editor's Note: This profile contains a set of recommendations for Really Simple Syndication, a web syndication format documented in the <a href="https://www.rssboard.org/rss-specification">RSS 2.0 specification</a>. This is version 1.0 of this document, published Oct. 15, 2007. The current version will always be available at <a href="https://www.rssboard.org/rss-profile">this link</a>. Public comments are welcomed at <a href="https://groups.google.com/g/rss-public">RSS-Public</a>.</p> <h4 id="table-of-contents"><a href="#table-of-contents">Table of Contents</a></h4> <ul> <li>1 <a href="#introduction">Introduction</a></li> <li>2 <a href="#conventions">Conventions</a></li> <li>3 <a href="#data-types">Data Types</a> <ul> <li>3.1 <a href="#data-types-characterdata">Character Data</a></li> <li>3.2 <a href="#data-types-datetime">Dates and Times</a></li> <li>3.3 <a href="#data-types-email">E-mail Addresses</a></li> <li>3.4 <a href="#data-types-url">URLs</a></li> </ul> </li> <li>4 <a href="#elements">Elements</a> <ul> <li>4.1 <a href="#element-rss">rss</a> <ul> <li>4.1.1 <a href="#element-channel">channel</a> <ul> <li>4.1.1.1 <a href="#element-channel-description">description</a></li> <li>4.1.1.2 <a href="#element-channel-link">link</a></li> <li>4.1.1.3 <a href="#element-channel-title">title</a></li> <li>4.1.1.4 <a href="#element-channel-category">category</a></li> <li>4.1.1.5 <a href="#element-channel-cloud">cloud</a></li> <li>4.1.1.6 <a href="#element-channel-copyright">copyright</a></li> <li>4.1.1.7 <a href="#element-channel-docs">docs</a></li> <li>4.1.1.8 <a href="#element-channel-generator">generator</a></li> <li>4.1.1.9 <a href="#element-channel-image">image</a> <ul> <li>4.1.1.9.1 <a href="#element-channel-image-link">link</a></li> <li>4.1.1.9.2 <a href="#element-channel-image-title">title</a></li> <li>4.1.1.9.3 <a href="#element-channel-image-url">url</a></li> <li>4.1.1.9.4 <a href="#element-channel-image-description">description</a></li> <li>4.1.1.9.5 <a href="#element-channel-image-height">height</a></li> <li>4.1.1.9.6 <a href="#element-channel-image-width">width</a></li> </ul> </li> <li>4.1.1.10 <a href="#element-channel-language">language</a></li> <li>4.1.1.11 <a href="#element-channel-lastbuilddate">lastBuildDate</a></li> <li>4.1.1.12 <a href="#element-channel-managingeditor">managingEditor</a></li> <li>4.1.1.13 <a href="#element-channel-pubdate">pubDate</a></li> <li>4.1.1.14 <a href="#element-channel-rating">rating</a></li> <li>4.1.1.15 <a href="#element-channel-skipdays">skipDays</a> <ul> <li>4.1.1.15.1 <a href="#element-channel-skipdays-day">day</a></li> </ul> </li> <li>4.1.1.16 <a href="#element-channel-skiphours">skipHours</a> <ul> <li>4.1.1.16.1 <a href="#element-channel-skiphours-hour">hour</a></li> </ul> </li> <li>4.1.1.17 <a href="#element-channel-textinput">textInput</a> <ul> <li>4.1.1.17.1 <a href="#element-channel-textinput-description">description</a></li> <li>4.1.1.17.2 <a href="#element-channel-textinput-link">link</a></li> <li>4.1.1.17.3 <a href="#element-channel-textinput-name">name</a></li> <li>4.1.1.17.4 <a href="#element-channel-textinput-title">title</a></li> </ul> </li> <li>4.1.1.18 <a href="#element-channel-ttl">ttl</a></li> <li>4.1.1.19 <a href="#element-channel-webmaster">webMaster</a></li> <li>4.1.1.20 <a href="#element-channel-item">item</a> <ul> <li>4.1.1.20.1 <a href="#element-channel-item-author">author</a></li> <li>4.1.1.20.2 <a href="#element-channel-item-category">category</a></li> <li>4.1.1.20.3 <a href="#element-channel-item-comments">comments</a></li> <li>4.1.1.20.4 <a href="#element-channel-item-description">description</a></li> <li>4.1.1.20.5 <a href="#element-channel-item-enclosure">enclosure</a></li> <li>4.1.1.20.6 <a href="#element-channel-item-guid">guid</a></li> <li>4.1.1.20.7 <a href="#element-channel-item-link">link</a></li> <li>4.1.1.20.8 <a href="#element-channel-item-pubdate">pubDate</a></li> <li>4.1.1.20.9 <a href="#element-channel-item-source">source</a></li> <li>4.1.1.20.10 <a href="#element-channel-item-title">title</a></li> </ul> </li> </ul> </li> </ul> </li> </ul> </li> <li>5. <a href="#namespace-elements">Namespace Elements</a> <ul> <li>5.1 <a href="#namespace-elements-atom">Atom</a> <ul> <li>5.1.1 <a href="#namespace-elements-atom-link">atom:link</a></li> </ul> </li> <li>5.2 <a href="#namespace-elements-content">Content</a> <ul> <li>5.2.1 <a href="#namespace-elements-content-encoded">content:encoded</a></li> </ul> </li> <li>5.3 <a href="#namespace-elements-dublin">Dublin Core</a> <ul> <li>5.3.1 <a href="#namespace-elements-dublin-creator">dc:creator</a></li> </ul> </li> <li>5.4 <a href="#namespace-elements-slash">Slash</a> <ul> <li>5.4.1 <a href="#namespace-elements-slash-comments">slash:comments</a></li> </ul> </li> </ul> </li> <li>6. <a href="#credits">Credits</a></li> <li>7. <a href="#license">License</a></li> </ul> <h4 id="introduction">1. <a href="#introduction">Introduction</a></h4> <p>Really Simple Syndication (RSS) is an XML-based document format for the syndication of web content so that it can be republished on other sites or downloaded periodically and presented to users. The <a href="https://www.rssboard.org/rss-specification">RSS 2.0 specification</a> describes how to create RSS documents.</p> <p>This profile is a set of recommendations for how to create RSS documents that work best in the wide and diverse audience of client software that supports the format. The definitions of the RSS elements in this profile are provided for convenience and <span class="rfc2119">must not</span> be treated as definitive. Refer to the specification for authorititive guidance on the format.</p> <p>An RSS document, also called a feed, <span class="rfc2119">must</span> conform to the <a href="http://www.w3.org/TR/REC-xml">XML 1.0</a> specification and <span class="rfc2119">may</span> contain elements and attributes defined in a namespace according to the <a href="http://www.w3.org/TR/REC-xml-names/">Namespaces in XML</a> specification. RSS elements do not belong to a namespace. All elements in an RSS feed that are not defined in a namespace <span class="rfc2119">must</span> be described in the specification. None of the restrictions described in the specification apply to elements or attributes defined in a namespace.</p> <p>A <a href="https://www.rssboard.org/files/rss-2.0-sample.xml">sample feed</a> demonstrates all of the elements available in RSS. A <a href="https://www.rssboard.org/files/rss-2.0-namespace.xml">namespace sample</a> shows the same feed extended by the <a href="https://www.rssboard.org/creative-commons">Creative Commons</a> and <a href="https://www.rssboard.org/trackback">TrackBack</a> namespaces.</p> <p>RSS documents can be tested for validity in the <a href="https://www.rssboard.org/rss-validator/">RSS Validator</a>.</p> <h4 id="conventions">2. <a href="#conventions">Conventions</a></h4> <p>In this document, the key words <span class="rfc2119">may</span>, <span class="rfc2119">must</span>, <span class="rfc2119">must not</span>, <span class="rfc2119">optional</span>, <span class="rfc2119">recommended</span>, <span class="rfc2119">required</span>, <span class="rfc2119">shall</span>, <span class="rfc2119">shall not</span>, <span class="rfc2119">should</span> and <span class="rfc2119">should not</span> are to be interpreted as described in <a href="http://www.ietf.org/rfc/rfc2119.txt">RFC 2119</a>.</p> <p>Software designed to retrieve and present RSS documents to users is called an aggregator, newsreader or reader. For clarity, this document uses the term aggregator exclusively.</p> <p>This profile relies primarily on tests conducted with the aggregators Bloglines, BottomFeeder 4.4, FeedDemon 2.5 (2.5.0.10), Google Reader, Microsoft Internet Explorer 7, Mozilla Firefox 2.0 (2.0.9), My Yahoo, NewsGator Online and Opera 9 (9.22).</p> <p>The test of date-time values was conducted on the aggregators Blogbridge, Bloglines, BottomFeeder, FeedDemon, FeedReader, FeederReader, GreatNews, Internet Explorer 7, JetBrains Omea, Mozilla Thunderbird, Newsgator Online, NewzCrawler, Pluck, RSSBandit, RSSOwl, Sharpreader and Snarfer.</p> <p>The tests of character data encoding and enclosures also were conducted on Apple Safari 2.0 (2.0.4). Tests of TTL support also employed CITA RSS Aggregator 2.6, NewzCrawler 1.8.0 and Snarfer 0.8.0.</p> <p>Some sections of the profile rely on surveys of <a href="https://www.rssboard.org/news/168/rss-channel-element-usage-stats">channel element</a> and <a href="https://www.rssboard.org/news/169/rss-item-element-usage-stats">item element</a> usage compiled from 1,933 RSS feeds chosen because they appear in OPML subscription lists published on the web.</p> <h4 id="data-types">3. <a href="#data-types">Data Types</a></h4> <p>The requirements for RSS element and attribute values are described in the sections devoted to each element, aside from the following general requirements.</p> <h4 id="data-types-characterdata">3.1 <a href="#data-types-characterdata">Character Data</a></h4> <h5 class="subtitle">Requirements</h5> <p>For all elements defined in the RSS specification that enclose character data, the text <span class="rfc2119">should</span> be interpreted as plain text with the exception of an item's <a href="#element-channel-item-description">description</a> element, which <span class="rfc2119">must</span> be suitable for presentation as HTML. All of these elements <span class="rfc2119">must not</span> contain child elements.</p> <p>There's no limit on the length of character data that can be contained in an RSS element.</p> <h5 class="subtitle">Recommendations</h5> <p>The specification has lacked clarity regarding whether HTML is permitted in elements other than an item's <a href="#element-channel-item-description">description</a>, leading to wide variance in how aggregators treat character data in other elements. This makes it especially difficult for a publisher to determine how to encode the characters "&" and "<", which must be encoded in XML.</p> <p>In elements that contain plain text, the form of encoding that works in the widest number of aggregators is using the hexadecimal character reference &#x26; to represent "&" and &#x3C; to represent "<".</p> <table border="0" cellspacing="2"> <tr valign="top"> <th>Encoding</th> <th>Presentation</th> </tr> <tr valign="top"> <td><p class="examplecell"><title>AT&#x26;T</title></p></td> <td><p>AT&T</p></td> </tr> <tr valign="top"> <td><p class="examplecell"><title>Bill &#x26; Ted's Excellent Adventure</title></p></td> <td><p>Bill & Ted's Excellent Adventure</p></td> </tr> <tr valign="top"> <td><p class="examplecell"><title>The &#x26;amp; entity</title></p></td> <td><p>The &amp; entity</p></td> </tr> <tr valign="top"> <td><p class="examplecell"><title>I &#x3C;3 Phil Ringnalda</title></p></td> <td><p>I <3 Phil Ringnalda</p></td> </tr> <tr valign="top"> <td><p class="examplecell"><title>A &#x3C; B</title></p></td> <td><p>A < B</p></td> </tr> <tr valign="top"> <td><p class="examplecell"><title>A&#x3C;B</title></p></td> <td><p>A<B</p></td> </tr> <tr valign="top"> <td><p class="examplecell"><title>Nice &#x3C;gorilla&#x3E; what's he weigh?</title></p></td> <td><p>Nice <gorilla>, what's he weigh?</p></td> </tr> </table> <p>This form of encoding was presented successfully for all seven of the preceding examples in Apple Safari, Bloglines, Mozilla Firefox and Internet Explorer, six-of-seven in Opera and five-of-seven in FeedDemon and Google Reader. It failed three or more tests in BottomFeeder, My Yahoo and NewsGator Online.</p> <p>A publisher <span class="rfc2119">should</span> encode "&" and "<" in plain text using hexadecimal character references. When encoding the ">" character, a publisher <span class="rfc2119">should</span> use the hexadecimal reference &#x3E;.</p> <h4 id="data-types-datetime">3.2 <a href="#data-types-datetime">Dates and Times</a></h4> <h5 class="subtitle">Requirements</h5> <p>All date-time values <span class="rfc2119">must</span> conform to the RFC 822 <a href="http://asg.web.cmu.edu/rfc/rfc822.html#sec-5">Date and Time Specification</a> with the exception that a four-digit year is permitted in addition to a two-digit year.</p> <p class="example"> <pubDate>Mon, 15 Oct 2007 14:10:00 GMT</pubDate></p> <p class="example"> <lastBuildDate>Mon, 15 Oct 2007 09:10:00 EST</lastBuildDate></p> <p class="example"> <pubDate>Mon, 15 Oct 2007 08:10:00 -0600</pubDate></p> <h5 class="subtitle">Recommendations</h5> <p>All date-time values <span class="rfc2119">should</span> use a four-digit year.</p> <p>Although RFC 822 permits multiple spaces and comments between each component in date-time values, most aggregators fail to interpret them correctly. Publishers <span class="rfc2119">should not</span> include comments or more than one space between components.</p> <p>With the exception of "Z", the military time zones in RFC 822 are specified incorrectly and <span class="rfc2119">should not</span> be used.</p> <p>In a test of 18 aggregators, the only date-time values that worked in all of them took one of three forms:</p> <p class="example"> Thu, 04 Oct 2007 23:59:45 +0000<br /> Thu, 04 Oct 2007 23:59:45 -0000<br /> Thu, 04 Oct 2007 23:59:45 GMT</p> <p>Each of these values employs Universal Time. The weekday, month and timezone <span class="rfc2119">should</span> be capitalized as shown and the leading zero in the day of the month <span class="rfc2119">may</span> be omitted.</p> <p>Most aggregators successfully handled the U.S. time zones defined in RFC 822 and numeric time zones that represent an exact hour.</p> <h4 id="data-types-email">3.3 <a href="#data-types-email">E-mail Addresses</a></h4> <h5 class="subtitle">Requirements</h5> <p>Several elements <span class="rfc2119">must</span> contain an e-mail address, but there's no requirement to follow a specific format for such addresses. Publishers could format addresses according to the RFC 2822 <a href="http://asg.web.cmu.edu/rfc/rfc2822.html#sec-3.4">Address Specification</a>, the RFC 2368 guidelines for <a href="http://asg.web.cmu.edu/rfc/rfc2368.html">mailto links</a>, or some other scheme.</p> <h5 class="subtitle">Recommendations</h5> <p>The <span class="rfc2119">recommended</span> format for e-mail addresses in RSS elements is <span class="template">username@hostname.tld (Real Name)</span>, as in the following example:</p> <p class="example"> <managingEditor>luksa@dallas.example.com (Frank Luksa)</managingEditor></p> <h4 id="data-types-url">3.4 <a href="#data-types-url">URLs</a></h4> <h5 class="subtitle">Requirements</h5> <p>In all <span class="element">link</span> and <span class="element">url</span> elements, the first non-whitespace characters in a URL <span class="rfc2119">must</span> begin with a scheme defined by the <a href="http://www.iana.org/assignments/uri-schemes.html">IANA Registry of URI Schemes</a> such as "ftp://", "http://", "https://", "mailto:" or "news://". These elements <span class="rfc2119">must not</span> contain relative URLs.</p> <p>Because an aggregator <span class="rfc2119">may</span> choose which URI schemes to support, publishers of RSS documents <span class="rfc2119">must not</span> assume that all schemes are available.</p> <p>An <a href="http://www.apps.ietf.org/rfc/rfc3987.html">Internationalized Resource Identifier</a> (IRI) provides a means to identify Internet resources using non-ASCII characters that can't be present in URLs. All <span class="element">link</span> and <span class="element">url</span> elements <span class="rfc2119">must</span> be valid URLs, so an IRI that contains non-ASCII characters <span class="rfc2119">must</span> be converted to a URL using the <a href="http://www.apps.ietf.org/rfc/rfc3987.html#sec-3.2">procedure</a> described in RFC 3987.</p> <h4 id="elements">4. <a href="#elements">Elements</a></h4> <p>An RSS document consists of the following elements.</p> <h4 id="element-rss">4.1. <a href="#element-rss">rss</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">rss</span> element is the top-level element of an RSS feed. A feed that conforms to the RSS specification <span class="rfc2119">must</span> contain a <span class="attribute">version</span> attribute with the value "2.0".</p> <p class="example"><rss version="2.0"></p> <p>This element is <span class="rfc2119">required</span> and <span class="rfc2119">must</span> contain a <span class="element">channel</span> element. The <span class="element">rss</span> element <span class="rfc2119">must not</span> contain more than one <span class="element">channel</span>.</p> <h4 id="element-channel">4.1.1 <a href="#element-channel">channel</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">channel</span> element describes the RSS feed, providing such information as its title and description, and contains items that represent discrete updates to the web content represented by the feed.</p> <p>This element is <span class="rfc2119">required</span> and <span class="rfc2119">must</span> contain three child elements: <a href="#element-channel-description">description</a>, <a href="#element-channel-link">link</a> and <a href="#element-channel-title">title</a>.</p> <p>The channel <span class="rfc2119">may</span> contain each of the following <span class="rfc2119">optional</span> elements: <a href="#element-channel-category">category</a>, <a href="#element-channel-cloud">cloud</a>, <a href="#element-channel-copyright">copyright</a>, <a href="#element-channel-docs">docs</a>, <a href="#element-channel-generator">generator</a>, <a href="#element-channel-image">image</a>, <a href="#element-channel-language">language</a>, <a href="#element-channel-lastbuilddate">lastBuildDate</a>, <a href="#element-channel-managingeditor">managingEditor</a>, <a href="#element-channel-pubdate">pubDate</a>, <a href="#element-channel-rating">rating</a>, <a href="#element-channel-skipdays">skipDays</a>, <a href="#element-channel-skiphours">skipHours</a>, <a href="#element-channel-textinput">textInput</a>, <a href="#element-channel-ttl">ttl</a> and <a href="#element-channel-webmaster">webMaster</a>.</p> <p>The preceding elements <span class="rfc2119">must not</span> be present more than once in a channel, with the exception of <span class="element">category</span>.</p> <p>The channel also <span class="rfc2119">may</span> contain zero or more <a href="#element-channel-item">item</a> elements. The order of elements within the channel <span class="rfc2119">must not</span> be treated as significant.</p> <h5 class="subtitle">Recommendations</h5> <p>All item elements <span class="rfc2119">should</span> appear after all of the other elements in a channel.</p> <h4 id="element-channel-description">4.1.1.1 <a href="#element-channel-description">description</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">description</span> element holds <a href="#data-types-characterdata">character data</a> that provides a human-readable characterization or summary of the feed (<span class="rfc2119">required</span>).</p> <p class="example"> <description>Current headlines from the Dallas Times-Herald newspaper</description></p> <h4 id="element-channel-link">4.1.1.2 <a href="#element-channel-link">link</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">link</span> element identifies the <a href="#data-types-url">URL</a> of the web site associated with the feed (<span class="rfc2119">required</span>).</p> <p class="example"> <link>http://dallas.example.com</link></p> <h4 id="element-channel-title">4.1.1.3 <a href="#element-channel-title">title</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">title</span> element holds <a href="#data-types-characterdata">character data</a> that provides the name of the feed (<span class="rfc2119">required</span>).</p> <p class="example"> <title>Dallas Times-Herald</title></p> <h5 class="subtitle">Recommendations</h5> <p>If the feed corresponds directly to a web site, the name <span class="rfc2119">should</span> match the name of the site.</p> <h4 id="element-channel-category">4.1.1.4 <a href="#element-channel-category">category</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">category</span> element identifies a category or tag to which the feed belongs (<span class="rfc2119">optional</span>).</p> <p class="example"> <category>Media</category></p> <p>This element <span class="rfc2119">may</span> include a <span class="attribute">domain</span> attribute that identifies the taxonomy in which the category is placed.</p> <p class="example"> <category domain="dmoz">News/Newspapers/Regional/United_States/Texas</category></p> <p>A channel <span class="rfc2119">may</span> contain more than one category element.</p> <h5 class="subtitle">Recommendations</h5> <p>The category's value <span class="rfc2119">should</span> be a slash-delimited string that identifies a hierarchical position in the taxonomy.</p> <h4 id="element-channel-cloud">4.1.1.5 <a href="#element-channel-cloud">cloud</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">cloud</span> element indicates that updates to the feed can be monitored using a web service that implements the <a href="https://www.rssboard.org/rsscloud-interface">RssCloud application programming interface</a> (<span class="rfc2119">optional</span>).</p> <p>The element <span class="rfc2119">must</span> have five attributes that describe the service:</p> <ul> <li>The <span class="attribute">domain</span> attribute identifies the host name or IP address of the web service that monitors updates to the feed.</li> <li>The <span class="attribute">path</span> attribute provides the web service's path.</li> <li>The <span class="attribute">port</span> attribute identifies the web service's TCP port.</li> <li>The <span class="attribute">protocol</span> attribute <span class="rfc2119">must</span> contain the value "xml-rpc" if the service employs XML-RPC or "soap" if it employs SOAP.</li> <li>The <span class="attribute">registerProcedure</span> attribute names the remote procedure to call when requesting notification of updates.</li> </ul> <p class="example"> <cloud domain="server.example.com" path="/rpc" port="80" protocol="xml-rpc" registerProcedure="cloud.notify" /></p> <p>In this example, an aggregator could request notification by calling the cloud.notify method of the XML-RPC web service at server.example.com, port 80, path /rpc.</p> <p>This element is an empty element defined by a single tag and its attributes, unless extended by a namespace.</p> <h4 id="element-channel-copyright">4.1.1.6 <a href="#element-channel-copyright">copyright</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">copyright</span> element declares the human-readable copyright statement that applies to the feed (<span class="rfc2119">optional</span>).</p> <p class="example"> <copyright>Copyright 2007 Dallas Times-Herald</copyright></p> <h5 class="subtitle">Recommendations</h5> <p>When a feed lacks a <span class="element">copyright</span> element, aggregators <span class="rfc2119">should not</span> assume that is in the public domain and can be republished and redistributed without restriction. Under the <a href="http://en.wikipedia.org/wiki/Berne_Convention_for_the_Protection_of_Literary_and_Artistic_Works">Berne Convention</a> adopted by the United States and more than 150 other countries, a work does not require a copyright statement to be protected by copyright.</p> <h4 id="element-channel-docs">4.1.1.7 <a href="#element-channel-docs">docs</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">docs</span> element identifies the <a href="#data-types-url">URL</a> of the RSS specification implemented by the software that created the feed (<span class="rfc2119">optional</span>).</p> <p class="example"> <docs>https://www.rssboard.org/rss-specification</docs></p> <h5 class="subtitle">Recommendations</h5> <p>If you are relying on the specification and profile published by the <a href="https://www.rssboard.org/">RSS Advisory Board</a>, the value of this element <span class="rfc2119">should</span> be "https://www.rssboard.org/rss-specification".</p> <h4 id="element-channel-generator">4.1.1.8 <a href="#element-channel-generator">generator</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">generator</span> element credits the software that created the feed (<span class="rfc2119">optional</span>).</p> <p class="example"> <generator>Microsoft Spaces v1.1</generator></p> <h4 id="element-channel-image">4.1.1.9 <a href="#element-channel-image">image</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">image</span> element supplies a graphical logo for the feed (<span class="rfc2119">optional</span>).</p> <p>The image <span class="rfc2119">must</span> contain three child elements: <a href="#element-channel-image-link">link</a>, <a href="#element-channel-image-title">title</a> and <a href="#element-channel-image-url">url</a>. It also <span class="rfc2119">may</span> contain three <span class="rfc2119">optional</span> elements: <a href="#element-channel-image-description">description</a>, <a href="#element-channel-image-height">height</a> and <a href="#element-channel-image-width">width</a>.</p> <p class="example"> <image><br /> <link>http://dallas.example.com</link><br /> <title>Dallas Times-Herald</title><br /> <url>http://dallas.example.com/masthead.gif</url><br /> <description>Read the Dallas Times-Herald</description><br /> <height>32</height><br /> <width>96</width><br /> </image></p> <h4 id="element-channel-image-link">4.1.1.9.1 <a href="#element-channel-image-link">link</a></h4> <h5 class="subtitle">Requirements</h5> <p>The image's <span class="element">link</span> element identifies the <a href="#data-types-url">URL</a> of the web site represented by the image (<span class="rfc2119">required</span>).</p> <h5 class="subtitle">Recommendations</h5> <p>This <span class="rfc2119">should</span> be the same URL as the channel's <a href="#element-channel-link">link</a> element.</p> <h4 id="element-channel-image-title">4.1.1.9.2 <a href="#element-channel-image-title">title</a></h4> <h5 class="subtitle">Requirements</h5> <p>The image's <span class="element">title</span> element holds <a href="#data-types-characterdata">character data</a> that provides a human-readable description of the image (<span class="rfc2119">required</span>).</p> <h5 class="subtitle">Recommendations</h5> <p>This element <span class="rfc2119">should</span> have the same text as the channel's <a href="#element-channel-title">title</a> element and be suitable for use as the <a href="http://www.w3.org/TR/html4/struct/objects.html#adef-alt">alt</a> attribute of the <a href="http://www.w3.org/TR/html4/struct/objects.html#h-13.2">img</a> tag in an HTML rendering.</p> <h4 id="element-channel-image-url">4.1.1.9.3 <a href="#element-channel-image-url">url</a></h4> <h5 class="subtitle">Requirements</h5> <p>The image's <span class="element">url</span> element identifies the <a href="#data-types-url">URL</a> of the image, which <span class="rfc2119">must</span> be in the GIF, JPEG or PNG formats (<span class="rfc2119">required</span>).</p> <h4 id="element-channel-image-description">4.1.1.9.4 <a href="#element-channel-image-description">description</a></h4> <h5 class="subtitle">Requirements</h5> <p>The image's <span class="element">description</span> element holds <a href="#data-types-characterdata">character data</a> that provides a human-readable characterization of the site linked to the image (<span class="rfc2119">optional</span>).</p> <h5 class="subtitle">Recommendations</h5> <p>The description <span class="rfc2119">should</span> be suitable for use as the <a href="http://www.w3.org/TR/html4/struct/global.html#adef-title">title</a> attribute of the <a href="http://www.w3.org/TR/html4/struct/links.html#h-12.2">a</a> tag in an HTML rendering.</p> <h4 id="element-channel-image-height">4.1.1.9.5 <a href="#element-channel-image-height">height</a></h4> <h5 class="subtitle">Requirements</h5> <p>The image's <span class="element">height</span> element contains the height, in pixels, of the image (<span class="rfc2119">optional</span>). The image <span class="rfc2119">must</span> be no taller than 400 pixels. If this element is omitted, the image is assumed to be 31 pixels tall.</p> <h4 id="element-channel-image-width">4.1.1.9.6 <a href="#element-channel-image-width">width</a></h4> <h5 class="subtitle">Requirements</h5> <p>The image's <span class="element">width</span> element contains the width, in pixels, of the image (<span class="rfc2119">optional</span>). The image <span class="rfc2119">must</span> be no wider than 144 pixels. If this element is omitted, the image is assumed to be 88 pixels wide.</p> <h4 id="element-channel-language">4.1.1.10 <a href="#element-channel-language">language</a></h4> <h5 class="subtitle">Requirements</h5> <p>The channel's <span class="element">language</span> element identifies the natural language employed in the feed (<span class="rfc2119">optional</span>).</p> <p>The language <span class="rfc2119">must</span> be identified using one of the <a href="https://www.rssboard.org/rss-language-codes">RSS language codes</a> or a <a href="http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes">language code</a> permitted by the World Wide Web Consortium for use in HTML. The U.S. Library of Congress publishes the current list of <a href="http://www.loc.gov/standards/iso639-2/">ISO 639 language codes</a> adopted by HTML.</p> <p class="example"> <language>epo</language></p> <h4 id="element-channel-lastbuilddate">4.1.1.11 <a href="#element-channel-lastbuilddate">lastBuildDate</a></h4> <h5 class="subtitle">Requirements</h5> <p>The channel's <span class="element">lastBuildDate</span> element indicates the last <a href="#data-types-datetime">date and time</a> the content of the feed was updated (<span class="rfc2119">optional</span>).</p> <p class="example"> <lastBuildDate>Sun, 14 Oct 2007 17:17:44 GMT</lastBuildDate></p> <h4 id="element-channel-managingeditor">4.1.1.12 <a href="#element-channel-managingeditor">managingEditor</a></h4> <h5 class="subtitle">Requirements</h5> <p>The channel's <span class="element">managingEditor</span> element provides the <a href="#data-types-email">e-mail address</a> of the person to contact regarding the editorial content of the feed (<span class="rfc2119">optional</span>).</p> <p class="example"> <managingEditor>jlehrer@dallas.example.com (Jim Lehrer)</managingEditor></p> <h4 id="element-channel-pubdate">4.1.1.13 <a href="#element-channel-pubdate">pubDate</a></h4> <h5 class="subtitle">Requirements</h5> <p>The channel's <span class="element">pubDate</span> element indicates the publication <a href="#data-types-datetime">date and time</a> of the feed's content (<span class="rfc2119">optional</span>). Publishers of daily, weekly or monthly periodicals could use this element to associate feed items with the date they most recently went to press.</p> <p class="example"> <pubDate>Sun, 14 Oct 2007 05:00:00 GMT</pubDate></p> <h4 id="element-channel-rating">4.1.1.14 <a href="#element-channel-rating">rating</a></h4> <h5 class="subtitle">Requirements</h5> <p>The channel's <span class="element">rating</span> element supplies an advisory label for the content in a feed, formatted according to the specification for the <a href="http://www.w3.org/PICS">Platform for Internet Content Selection (PICS)</a> (<span class="rfc2119">optional</span>).</p> <p class="example"> <rating>(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l by "webmaster@example.com" on "2007.01.29T10:09-0800" r (n 0 s 0 v 0 l 0))</rating></p> <h5 class="subtitle">Recommendations</h5> <p>This element gets little usage among publishers, appearing in fewer than one percent of surveyed feeds.</p> <h4 id="element-channel-skipdays">4.1.1.15 <a href="#element-channel-skipdays">skipDays</a></h4> <h5 class="subtitle">Requirements</h5> <p>The channel's <span class="element">skipDays</span> element identifies days of the week during which the feed is not updated (<span class="rfc2119">optional</span>). This element contains up to seven <span class="element">day</span> elements identifying the days to skip.</p> <h5 class="subtitle">Recommendations</h5> <p>Although an aggregator <span class="rfc2119">should not</span> request the feed on the days identified by this element, the point is largely moot because of how infrequently it is used by publishers. Fewer than one percent of surveyed feeds included a <span class="element">skipDays</span> element.</p> <h4 id="element-channel-skipdays-day">4.1.1.15.1 <a href="#element-channel-skipdays-day">day</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">day</span> element identifies a weekday in Greenwich Mean Time (GMT) (<span class="rfc2119">required</span>). Seven values are permitted -- "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" or "Sunday" -- and <span class="rfc2119">must not</span> be duplicated.</p> <p class="example"> <skipDays><br /> <day>Saturday</day><br /> <day>Sunday</day><br /> </skipDays></p> <h4 id="element-channel-skiphours">4.1.1.16 <a href="#element-channel-skiphours">skipHours</a></h4> <h5 class="subtitle">Requirements</h5> <p>The channel's <span class="element">skipHours</span> element identifies the hours of the day during which the feed is not updated (<span class="rfc2119">optional</span>). This element contains individual <span class="element">hour</span> elements identifying the hours to skip.</p> <h5 class="subtitle">Recommendations</h5> <p>An aggregator <span class="rfc2119">should not</span> request the feed on the hours identified by this element.</p> <h4 id="element-channel-skiphours-hour">4.1.1.16.1 <a href="#element-channel-skiphours-hour">hour</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">hour</span> element identifies an hour of the day in Greenwich Mean Time (GMT) (<span class="rfc2119">required</span>). The hour <span class="rfc2119">must</span> be expressed as an integer representing the number of hours since 00:00:00 GMT. Values from 0 to 23 are permitted, with 0 representing midnight. An hour <span class="rfc2119">must not</span> be duplicated.</p> <p class="example"> <skipHours><br /> <hour>0</hour><br /> <hour>1</hour><br /> <hour>2</hour><br /> <hour>22</hour><br /> <hour>23</hour><br /> </skipHours></p> <h5 class="subtitle">Recommendations</h5> <p>RSS specifications differ in the number assigned to midnight, which is 0 in the current RSS specification and 24 in <a href="https://www.rssboard.org/rss-0-9-1">RSS 0.91</a>. For this reason, aggregators <span class="rfc2119">should</span> accept both 0 and 24 to represent midnight.</p> <h4 id="element-channel-textinput">4.1.1.17 <a href="#element-channel-textinput">textInput</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">textInput</span> element defines a form to submit a text query to the feed's publisher over the Common Gateway Interface (CGI) (<span class="rfc2119">optional</span>).</p> <p>The element <span class="rfc2119">must</span> contain a <a href="#element-channel-textinput-description">description</a>, <a href="#element-channel-textinput-link">link</a>, <a href="#element-channel-textinput-name">name</a> and <a href="#element-channel-textinput-title">title</a> child element.</p> <p class="example"> <textInput><br /> <description>Your aggregator supports the textInput element. What software are you using?</description><br /> <link>http://www.cadenhead.org/textinput.php</link><br /> <name>query</name><br /> <title>TextInput Inquiry</title><br /> </textInput></p> <h5 class="subtitle">Recommendations</h5> <p>The RSS specification actively discourages publishers from using the <span class="element">textInput</span> element, calling its purpose "something of a mystery" and stating that "most aggregators ignore it." Fewer than one percent of surveyed RSS feeds included the element. The only aggregators known to support it are BottomFeeder and Liferea.</p> <p>For this reason, publishers <span class="rfc2119">should not</span> expect it to be supported in most aggregators.</p> <h4 id="element-channel-textinput-description">4.1.1.17.1 <a href="#element-channel-textinput-description">description</a></h4> <h5 class="subtitle">Requirements</h5> <p>The input form's <span class="element">description</span> element holds <a href="#data-types-characterdata">character data</a> that provides a human-readable label explaining the form's purpose (<span class="rfc2119">required</span>).</p> <h4 id="element-channel-textinput-link">4.1.1.17.2 <a href="#element-channel-textinput-link">link</a></h4> <h5 class="subtitle">Requirements</h5> <p>The input form's <span class="element">link</span> element identifies the <a href="#data-types-url">URL</a> of the CGI script that handles the query (<span class="rfc2119">required</span>).</p> <h4 id="element-channel-textinput-name">4.1.1.17.3 <a href="#element-channel-textinput-name">name</a></h4> <h5 class="subtitle">Requirements</h5> <p>The input form's <span class="element">name</span> element provides the name of the form component that contains the query (<span class="rfc2119">required</span>). The name <span class="rfc2119">must</span> begin with a letter and contain only these characters: the letters A to Z in either case, numeric digits, colons (":"), hyphens ("-"), periods (".") and underscores ("_").</p> <h4 id="element-channel-textinput-title">4.1.1.17.4 <a href="#element-channel-textinput-title">title</a></h4> <h5 class="subtitle">Requirements</h5> <p>The input form's <span class="element">title</span> element labels the button used to submit the query (<span class="rfc2119">required</span>).</p> <h4 id="element-channel-ttl">4.1.1.18 <a href="#element-channel-ttl">ttl</a></h4> <h5 class="subtitle">Requirements</h5> <p>The channel's <span class="element">ttl</span> element represents the feed's time to live (TTL): the maximum number of minutes to cache the data before an aggregator requests it again (<span class="rfc2119">optional</span>).</p> <p class="example"> <ttl>60</ttl></p> <h5 class="subtitle">Recommendations</h5> <p>By convention, most aggregators check an RSS feed for updates once an hour. The <span class="element">ttl</span>, <a href="#element-channel-skipdays">skipDays</a> and <a href="#element-channel-skiphours">skipHours</a> elements provide a means for publishers to offer guidance regarding a feed's frequency of updates.</p> <p>Twenty-one percent of surveyed feeds included a <span class="element">ttl</span> element. Support for the element appears sparse among aggregators, perhaps due to disagreement over its meaning in the RSS specification.</p> <p>The following aggregators ignore this element: BlogBridge, Bloglines, Google Reader, JetBrains Omea, Mozilla Firefox, My Yahoo, NewsGator Online and RSSBandit.</p> <p>Most aggregators that support TTL use its value as the maximum frequency of update checks. Seven aggregators won't check a feed more frequently than its TTL: BottomFeeder, CITA RSS Aggregator, GreatNews, Internet Explorer 7, NewzCrawler, Opera 9 and Snarfer.</p> <p>One aggregator, FeedDemon, employs the TTL value as the recommended frequency of checks, as long as it's 30 minutes or higher and has not been overridden by a user.</p> <p>No aggregators have been found that use the TTL as the minimum frequency of checks, as intended by the specification.</p> <p>Because of these differences, aggregators that support this element <span class="rfc2119">should</span> treat it as a publisher's suggestion of a feed's update frequency, not a hard rule. For instance, an aggregator that gives users the ability to choose how often to check a feed could use its TTL as the default value.</p> <h4 id="element-channel-webmaster">4.1.1.19 <a href="#element-channel-webmaster">webMaster</a></h4> <h5 class="subtitle">Requirements</h5> <p>The channel's <span class="element">webMaster</span> element provides the <a href="#data-types-email">e-mail address</a> of the person to contact about technical issues regarding the feed (<span class="rfc2119">optional</span>).</p> <p class="example"> <webMaster>helpdesk@dallas.example.com</webMaster></p> <h4 id="element-channel-item">4.1.1.20 <a href="#element-channel-item">item</a></h4> <h5 class="subtitle">Requirements</h5> <p>An <span class="element">item</span> element represents distinct content published in the feed such as a news article, weblog entry or some other form of discrete update. A channel <span class="rfc2119">may</span> contain any number of items (or no items at all).</p> <p>An item <span class="rfc2119">may</span> contain the following child elements: <a href="#element-channel-item-author">author</a>, <a href="#element-channel-item-category">category</a>, <a href="#element-channel-item-comments">comments</a>, <a href="#element-channel-item-description">description</a>, <a href="#element-channel-item-enclosure">enclosure</a>, <a href="#element-channel-item-guid">guid</a>, <a href="#element-channel-item-link">link</a>, <a href="#element-channel-item-pubdate">pubDate</a>, <a href="#element-channel-item-source">source</a> and <a href="#element-channel-item-title">title</a>. All of these elements are <span class="rfc2119">optional</span> but an item <span class="rfc2119">must</span> contain either a <span class="element">title</span> or <span class="element">description</span>.</p> <p>The preceding elements <span class="rfc2119">must not</span> be present more than once in an item, with the exception of <span class="element">category</span>.</p> <p class="example"> <item><br /> <title>Seventh Heaven! Ryan Hurls Another No Hitter</title><br /> <link>http://dallas.example.com/1991/05/02/nolan.htm</link><br /> <description>Texas Rangers pitcher Nolan Ryan hurled the seventh no-hitter of his legendary career on Arlington Appreciation Night, defeating the Toronto Blue Jays 3-0. The 44-year-old struck out 16 batters before a crowd of 33,439.</description><br /> </item></p> <h4 id="element-channel-item-author">4.1.1.20.1 <a href="#element-channel-item-author">author</a></h4> <h5 class="subtitle">Requirements</h5> <p>An item's <span class="element">author</span> element provides the <a href="#data-types-email">e-mail address</a> of the person who wrote the item (<span class="rfc2119">optional</span>).</p> <p class="example"> <author>jbb@dallas.example.com (Joe Bob Briggs)</author></p> <h5 class="subtitle">Recommendations</h5> <p>A feed published by an individual <span class="rfc2119">should</span> omit this element and use the <a href="#element-channel-managingeditor">managingEditor</a> or <a href="#element-channel-webmaster">webMaster</a> channel elements to provide contact information.</p> <h4 id="element-channel-item-category">4.1.1.20.2 <a href="#element-channel-item-category">category</a></h4> <h5 class="subtitle">Requirements</h5> <p>An item's <span class="element">category</span> element identifies a category or tag to which the item belongs (<span class="rfc2119">optional</span>).</p> <p class="example"> <category>movies</category></p> <p>This element <span class="rfc2119">may</span> include a <span class="attribute">domain</span> attribute that identifies the category's taxonomy.</p> <p class="example"> <category domain="rec.arts.movies.reviews">1983/V</category></p> <p>An item <span class="rfc2119">may</span> contain more than one category element.</p> <h5 class="subtitle">Recommendations</h5> <p>The category's value <span class="rfc2119">should</span> be a slash-delimited string that identifies a hierarchical position in the taxonomy.</p> <h4 id="element-channel-item-comments">4.1.1.20.3 <a href="#element-channel-item-comments">comments</a></h4> <h5 class="subtitle">Requirements</h5> <p>An item's <span class="element">comments</span> element identifies the <a href="#data-types-url">URL</a> of a web page that contains comments received in response to the item (<span class="rfc2119">optional</span>).</p> <p class="example"> <comments>http://dallas.example.com/feedback/1983/06/joebob.htm</comments></p> <h4 id="element-channel-item-description">4.1.1.20.4 <a href="#element-channel-item-description">description</a></h4> <h5 class="subtitle">Requirements</h5> <p>An item's <span class="element">description</span> element holds <a href="#data-types-characterdata">character data</a> that contains the item's full content or a summary of its contents, a decision entirely at the discretion of the publisher. This element is <span class="rfc2119">optional</span> if the item contains a <a href="#element-channel-item-title">title</a> element.</p> <p class="example"> <description>I'm headed for France. I wasn't gonna go this year, but then last week "Valley Girl" came out and I said to myself, Joe Bob, you gotta get out of the country for a while.</description></p> <p>The description <span class="rfc2119">must</span> be suitable for presentation as HTML. HTML markup <span class="rfc2119">must</span> be encoded as character data either by employing the HTML entities &lt; ("<") and &gt; (">") or a <a href="http://www.w3.org/TR/2000/REC-xml-20001006#sec-cdata-sect">CDATA</a> section.</p> <p>Escaped markup created with character entities:</p> <p class="example"> <description>I'm headed for France. I wasn't gonna go this year, but then last week &lt;a href="http://www.imdb.com/title/tt0086525/"&gt;Valley Girl&lt;/a&gt; came out and I said to myself, Joe Bob, you gotta get out of the country for a while.</description></p> <p>CDATA encoding:</p> <p class="example"> <description><![CDATA[I'm headed for France. I wasn't gonna go this year, but then last week <a href="http://www.imdb.com/title/tt0086525/">Valley Girl</a> came out and I said to myself, Joe Bob, you gotta get out of the country for a while.]]></description></p> <h5 class="subtitle">Recommendations</h5> <p>The description <span class="rfc2119">should not</span> contain relative URLs, because the RSS format does not provide a means to identify the base URL of a document. When a relative URL is present, an aggregator <span class="rfc2119">may</span> attempt to resolve it to a full URL using the channel's <a href="#element-channel-link">link</a> as the base.</p> <h4 id="element-channel-item-enclosure">4.1.1.20.5 <a href="#element-channel-item-enclosure">enclosure</a></h4> <h5 class="subtitle">Requirements</h5> <p>An item's <span class="element">enclosure</span> element associates a media object such as an audio or video file with the item (<span class="rfc2119">optional</span>). The element <span class="rfc2119">must</span> have three attributes:</p> <ul> <li>The <span class="attribute">length</span> attribute indicates the size of the file in bytes</li> <li>The <span class="attribute">type</span> attribute identifies the file's <a href="http://www.iana.org/assignments/media-types/">MIME media type</a></li> <li>The <span class="attribute">url</span> attribute identifies the <a href="#data-types-url">URL</a> of the file</li> </ul> <p class="example"> <enclosure length="24986239" type="audio/mpeg" url="http://dallas.example.com/joebob_050689.mp3" /></p> <p>The <span class="element">enclosure</span> element is an empty element defined by a single tag and its attributes, unless extended by a namespace.</p> <h5 class="subtitle">Recommendations</h5> <p>Support for the enclosure element in RSS software varies significantly because of disagreement over whether the specification permits more than one enclosure per item. Although the author intended to permit no more than one enclosure in each item, this limit is not explicit in the specification.</p> <p>Blogware, Movable Type and WordPress enable publishers to include multiple enclosures in each item of their RSS documents. This works successfully in some aggregators, including BottomFeeder, FeederReader, NewsGator and Safari.</p> <p>Other software does not support multiple enclosures, including Bloglines, FeedDemon, Google Reader and Microsoft Internet Explorer 7. The first enclosure is downloaded automatically, an aspect of enclosure support relied on in podcasting, and the additional enclosures are either ignored or must be requested manually.</p> <p>For best support in the widest number of aggregators, an item <span class="rfc2119">should not</span> contain more than one enclosure.</p> <p>Though an enclosure <span class="rfc2119">must</span> specify its size with the <span class="attribute">length</span> attribute, the size of some media objects cannot be determined by an RSS publisher. Examples include the streaming media formats RealAudio and Apple QuickTime.</p> <p>When an enclosure's size cannot be determined, a publisher <span class="rfc2119">should</span> use a length of 0.</p> <p>The peer-to-peer file-sharing protocol BitTorrent deploys files using a small key file called a torrent that tells a client how to find and download the file.</p> <p>When an enclosure is delivered in a multi-step process like the one used by BitTorrent, the length <span class="rfc2119">should</span> be the size of the first file that must be downloaded to begin the process.</p> <h4 id="element-channel-item-guid">4.1.1.20.6 <a href="#element-channel-item-guid">guid</a></h4> <h5 class="subtitle">Requirements</h5> <p>An item's <span class="element">guid</span> element provides a string that uniquely identifies the item (<span class="rfc2119">optional</span>). The guid <span class="rfc2119">may</span> include an <span class="attribute">isPermaLink</span> attribute.</p> <p>The guid enables an aggregator to detect when an item has been received previously and does not need to be presented to a user again. If the guid's <span class="attribute">isPermaLink</span> attribute is omitted or has the value "true", the guid <span class="rfc2119">must</span> be the permanent <a href="#data-types-url">URL</a> of the web page associated with the item.</p> <p class="example"> <guid>http://dallas.example.com/1983/05/06/joebob.htm</guid></p> <p>If the guid's <span class="attribute">isPermaLink</span> attribute has the value "false", the guid <span class="rfc2119">may</span> employ any syntax the feed's publisher has devised for ensuring the uniqueness of the string, such as the <a href="http://www.faqs.org/rfcs/rfc4151.html">Tag URI scheme</a> described in RFC 4151.</p> <p class="example"> <guid isPermaLink="false">tag:dallas.example.com,4131:news</guid></p> <h5 class="subtitle">Requirements</h5> <p>A publisher <span class="rfc2119">should</span> provide a guid with each item.</p> <h4 id="element-channel-item-link">4.1.1.20.7 <a href="#element-channel-item-link">link</a></h4> <h5 class="subtitle">Requirements</h5> <p>An item's <span class="element">link</span> element identifies the <a href="#data-types-url">URL</a> of a web page associated with the item (<span class="rfc2119">optional</span>).</p> <p class="example"> <link>http://dallas.example.com/1983/05/06/joebob.htm</link></p> <h4 id="element-channel-item-pubdate">4.1.1.20.8 <a href="#element-channel-item-pubdate">pubDate</a></h4> <h5 class="subtitle">Requirements</h5> <p>An item's <span class="element">pubDate</span> element indicates the publication <a href="#data-types-datetime">date and time</a> of the item (<span class="rfc2119">optional</span>).</p> <p class="example"> <pubDate>Fri, 05 Oct 2007 09:00:00 CST</pubDate></p> <h5 class="subtitle">Recommendations</h5> <p>The specification recommends that aggregators <span class="rfc2119">should</span> ignore items with a publication date that occurs in the future, providing a means for publishers to embargo an item until that date.</p> <p>None of the tested aggregators withheld an item with a future publication date from readers. For this reason, publishers <span class="rfc2119">should not</span> include items in a feed until they are ready for publication.</p> <h4 id="element-channel-item-source">4.1.1.20.9 <a href="#element-channel-item-source">source</a></h4> <h5 class="subtitle">Requirements</h5> <p>An item's <span class="element">source</span> element indicates the fact that the item has been republished from another RSS feed (<span class="rfc2119">optional</span>). The element <span class="rfc2119">must</span> have a <span class="attribute">url</span> attribute that identifies the <a href="#data-types-url">URL</a> of the source feed.</p> <p>The value of the source is the <a href="#element-channel-title">title</a> of the source feed.</p> <p class="example"> <source url="http://la.example.com/rss.xml">Los Angeles Herald-Examiner</source></p> <h4 id="element-channel-item-title">4.1.1.20.10 <a href="#element-channel-item-title">title</a></h4> <h5 class="subtitle">Requirements</h5> <p>An item's <span class="element">title</span> element holds <a href="#data-types-characterdata">character data</a> that provides the item's headline. This element is <span class="rfc2119">optional</span> if the item contains a <a href="#element-channel-item-description">description</a> element.</p> <p class="example"> <title>Joe Bob Goes to the Drive-In</title></p> <h4 id="namespace-elements">5. <a href="#namespace-elements">Namespace Elements</a></h4> <p>The RSS specification encourages the extension of the format through the use of namespaces. Some namespace elements serve a similar purpose to RSS elements defined in the specification, which raises the question of how aggregators should treat a feed in which both are present.</p> <p>This section of the profile contains recommendations for how to handle these situations. This <span class="rfc2119">must not</span> be considered definitive in regard to namespace elements, which are defined by their authors.</p> <h4 id="namespace-elements-atom">5.1. <a href="#namespace-elements-atom">Atom</a></h4> <p>The <a href="http://www.atomenabled.org/developers/syndication/">Atom</a> syndication format, which serves a similar purpose to RSS, offers some elements closely comparable to RSS elements and others that provide new capabilities. Any of these elements can be used in RSS by employing Atom as a namespace.</p> <p>This namespace requires the "http://www.w3.org/2005/Atom" declaration in the <a href="#element-rss">rss</a> element.</p> <p class="example"><rss xmlns:atom="http://www.w3.org/2005/Atom"></p> <h4 id="namespace-elements-atom-link">5.1.1 <a href="#namespace-elements-atom-link">atom:link</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">atom:link</span> element defines a relationship between a web resource (such as a page) and an RSS <a href="#element-channel">channel</a> or <a href="#element-channel-item">item</a> (<span class="rfc2119">optional</span>). The most common use is to identify an HTML representation of an entry in an RSS or Atom feed.</p> <p>The element <span class="rfc2119">must</span> have an <span class="attribute">href</span> attribute that contains the <a href="#data-types-url">URL</a> of the related resource and <span class="rfc2119">may</span> contain the following attributes:</p> <ul> <li>The <span class="attribute">hreflang</span> attribute identifies the language used by the related resource using an HTML <a href="http://www.w3.org/TR/html401/struct/dirlang.html#langcodes">language code</a></li> <li>The <span class="attribute">length</span> attribute contains the resource's size, in bytes</li> <li>The <span class="attribute">title</span> attribute provides a human-readable description of the resource</li> <li>The <span class="attribute">type</span> attribute identifies the resource's <a href="http://www.iana.org/assignments/media-types/">MIME media type</a></li> </ul> <p>The element also <span class="rfc2119">may</span> contain a <span class="attribute">rel</span> attribute, which contains a keyword that identifies the nature of the relationship between the linked resouce and the element. Five relationships are possible:</p> <ul> <li>The value "alternate" describes an alternate representation, such as a web page containing the same content as a feed entry</li> <li>The value "enclosure" describes a a media object such as an audio or video file</li> <li>The value "related" describes a related resource</li> <li>The value "self" describes the feed itself</li> <li>The value "via" describes the original source that authored the entry, when it's not the feed publisher</li> </ul> <h5 class="subtitle">Recommendations</h5> <p>An RSS feed can identify its own <a href="#data-types-url">URL</a> using the <span class="element">atom:link</span> element within a <a href="#element-channel">channel</a>. The link <span class="rfc2119">must</span> have the <span class="attribute">rel</span> attribute "self", an <span class="attribute">href</span> attribute containing the feed's URL and <span class="rfc2119">may</span> have a <span class="attribute">type</span> attribute of "application/rss+xml":</p> <p class="example"><atom:link href="http://dallas.example.com/rss.xml" rel="self" type="application/rss+xml" /></p> <p>There's no means to do this with RSS elements defined in the specification. Identifying a feed's URL within the feed makes it more portable, self-contained, and easier to cache. For these reasons, a feed <span class="rfc2119">should</span> contain an <span class="element">atom:link</span> used for this purpose.</p> <p>The other uses of <span class="element">atom:link</span> are closely analogous to the channel <a href="#element-channel-link">link</a> element and the item <a href="#element-channel-item-enclosure">enclosure</a>, <a href="#element-channel-item-link">link</a> and <a href="#element-channel-item-source">source</a> elements.</p> <p>When a namespace element duplicates the functionality of an element defined in RSS, the core element <span class="rfc2119">should</span> be used.</p> <h4 id="namespace-elements-content">5.2. <a href="#namespace-elements-content">Content</a></h4> <p>The <a href="http://web.resource.org/rss/1.0/modules/content/">Content</a> namespace offers a means of defining item content with more precision than the <a href="#element-channel-item-description">description</a> element.</p> <p>This namespace requires the "http://purl.org/rss/1.0/modules/content/" declaration in the <a href="#element-rss">rss</a> element.</p> <p class="example"><rss xmlns:content="http://purl.org/rss/1.0/modules/content/"></p> <h4 id="namespace-elements-content-encoded">5.2.1 <a href="#namespace-elements-content-encoded">content:encoded</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">content:encoded</span> element defines the full content of an <a href="#element-channel-item">item</a> (<span class="rfc2119">optional</span>). This element has a more precise purpose than the <a href="#element-channel-item-description">description</a> element, which can be the full content, a summary or some other form of excerpt at the publisher's discretion.</p> <p>The content <span class="rfc2119">must</span> be suitable for presentation as HTML and be encoded as character data in the same manner as the <a href="#element-channel-item-description">description</a> element.</p> <h5 class="subtitle">Recommendations</h5> <p>The <span class="element">content:encoded</span> element can be used in conjunction with the <span class="element">description</span> element to provide an item's full content along with a shorter summary. Under this approach, the complete text of the item is presented in <span class="element">content:encoded</span> and the summary in <span class="element">description</span>.</p> <p>All of the tested aggregators support the use of <span class="element">content:encoded</span> to define an item's content with the exception of Mozilla Firefox 2.0, which only displays items by their title.</p> <p>Only one of the aggregators, Bloglines, supports the related use of <span class="element">description</span> as a summary.</p> <p>When an <a href="#element-channel-item">item</a> contains both elements, six of the eight aggregators display <span class="element">content:encoded</span> and ignore <span class="element">description</span>. FeedDemon displays the element defined last within the <span class="element">item</span> element and Firefox 2.0 doesn't support descriptions.</p> <p>Publishers who don't want to employ item summaries in their feeds <span class="rfc2119">should</span> use the <span class="element">description</span> element for an item's full content rather than <span class="element">content:encoded</span> because it has the widest support.</p> <p>Publishers who employ summaries <span class="rfc2119">should</span> store the summary in <span class="element">description</span> and the full content in <span class="element">content:encoded</span>, ordering <span class="element">description</span> first within the item. On items with no summary, the full content <span class="rfc2119">should</span> be stored in <span class="element">description</span>.</p> <h4 id="namespace-elements-dublin">5.3. <a href="#namespace-elements-dublin">Dublin Core</a></h4> <p>The <a href="http://web.resource.org/rss/1.0/modules/dc/">Dublin Core</a> namespace supports the <a href="http://dublincore.org/">Dublin Core Metadata Initiative</a>, a standard for describing resources on the Internet to identify their author, date of publication, publisher and similar information.</p> <p>This namespace requires the "http://purl.org/dc/elements/1.1/" declaration in the <a href="#element-rss">rss</a> element.</p> <p class="example"><rss xmlns:dc="http://purl.org/dc/elements/1.1/"></p> <h4 id="namespace-elements-dublin-creator">5.3.1 <a href="#namespace-elements-dublin-creator">dc:creator</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">dc:creator</span> element identifies the person or entity who wrote an <a href="#element-channel-item">item</a> (<span class="rfc2119">optional</span>). An item <span class="rfc2119">may</span> contain more than one <span class="element">dc:creator</span> element to credit multiple authors.</p> <p>The creator can be identified using a real name, username or some other means of identification at the publisher's discretion.</p> <p class="example"> <dc:creator>Joe Bob Briggs</dc:creator></p> <h5 class="subtitle">Recommendations</h5> <p>The value of the <span class="element">dc:creator</span> element is less restrictive than the <a href="#element-channel-item-author">author</a> element, which must contain an e-mail address. Publishers often rely on <span class="element">dc:creator</span> to credit authorship without revealing e-mail addresses in a form that can be exploited by spammers.</p> <p>All of the tested aggregators that display item authors support both the <span class="element">author</span> and <span class="element">dc:creator</span> elements. (BottomFeeder, Mozilla Firefox 2.0 and My Yahoo do not identify authors.)</p> <p>When an <a href="#element-channel-item">item</a> contains both elements, aggregators handle it in different ways. Some take the first element that appears within the item, others take the last and one aggregator combines their values.</p> <p>Publishers <span class="rfc2119">should</span> use <span class="element">author</span> when they want to reveal an author's e-mail address and <span class="element">dc:creator</span> when they don't. The same item <span class="rfc2119">should not</span> include both elements.</p> <p>This same recommendation <span class="rfc2119">should</span> be followed for the use of <span class="element">dc:creator</span> with the channel elements <a href="#element-channel-managingeditor">managingEditor</a> and <a href="#element-channel-webmaster">webMaster</a>.</p> <h4 id="namespace-elements-slash">5.4. <a href="#namespace-elements-slash">Slash</a></h4> <p>The <a href="http://web.resource.org/rss/1.0/modules/slash/">Slash</a> namespace supports features associated with items in the <a href="http://www.slashcode.com/">Slash</a> content-management system, the software that powers <a href="http://www.slashdot.org/">Slashdot</a> and other sites. Any RSS-producing software that employs the same features can use the namespace.</p> <p>This namespace requires the "http://purl.org/rss/1.0/modules/slash/" declaration in the <a href="#element-rss">rss</a> element.</p> <p class="example"><rss xmlns:slash="http://purl.org/rss/1.0/modules/slash/"></p> <h4 id="namespace-elements-slash-comments">5.4.1 <a href="#namespace-elements-slash-comments">slash:comments</a></h4> <h5 class="subtitle">Requirements</h5> <p>The <span class="element">slash:comments</span> element contains a non-negative integer that counts the number of comments that an <a href="#element-channel-item">item</a> has received (<span class="rfc2119">optional</span>).</p> <p class="example"> <slash:comments>13</slash:comments></p> <p>This complements the <a href="#element-channel-item-comments">comments</a> element, which identifies the <a href="#data-types-url">URL</a> of the web page where an item's comments are displayed.</p> <h5 class="subtitle">Recommendations</h5> <p>On an active web site, comment counts change frequently as new comments are published, so by necessity this element contains a snapshot of the totals at a particular moment in time. Because the Slash namespace lacks an element to indicate when the comment counts were compiled, publishers who use this element also <span class="rfc2119">should</span> include a <a href="#element-channel-lastbuilddate">lastBuildDate</a> element.</p> <h4 id="credits">6. <a href="#credits">Credits</a></h4> <p>Copyright 2024 RSS Advisory Board. Comments and corrections regarding this document are encouraged on the <a href="https://groups.google.com/g/rss-public">RSS-Public</a> mailing list.</p> <p>The RSS format was created by Dan Libby and Ramanathan V. Guha. The Atom syndication format was created by the AtomPub Working Group. The Content namespace was created by Gabe Beged-Dov, Aaron Swartz and Eric van der Vlist. The Dublin Core namespace was created by Beged-Dov, Dan Brickley, Rael Dornfest, Ian Davis, Leigh Dodds, Jonathan Eisenzopf, David Galbraith, R.V. Guha, Ken MacLeod, Eric Miller, Swartz and van der Vlist. The Slash namespace was created by Chris Nandor and Dornfest. </p> <p>Rogers Cadenhead, James Holderness, Randy Charles Morin and Geoffrey Sneddon contributed to this document.</p> <h4 id="license">7. <a href="#license">License</a></h4> <div class="media cclicense"> <div class="media-left media-middle cclogo"> <p><a href="https://creativecommons.org/licenses/by-sa/2.0/" rel="nofollow"><img class="pull-left" src="https://www.rssboard.org/images/creative-commons-logo.gif" /></a></p> </div> <div class="media-body ccfineprint"> <p>This document titled RSS Best Practices Profile is authored by the <a href="https://www.rssboard.org/">RSS Advisory Board</a>, published at the URL <a href="https://www.rssboard.org/rss-profile">https://www.rssboard.org/rss-profile</a> and shared under the terms of the Creative Commons <a href="https://creativecommons.org/licenses/by-sa/2.0/" rel="nofollow">Attribution/Share Alike</a> license. The copyright applies to the text of this document, not to the data format that it describes.</p> </div> </div> </div> <!-- End Main Content --> </div> <div class="col col-md-2 sidebar"> <!-- Begin Sidebar --> <p class="text-center"> <a href="/"><img src="/images/rss-feed-icon-96-by-96.png" width="96" alt="RSS icon" class="img-fluid"></a> </p> <div class="sidebargroup"> <div class="sidebartitle">Main Menu</div> <div class="sidebarlink"><a href="https://www.rssboard.org/">RSS Advisory Board</a></div> <div class="sidebarlink"><a href="https://www.rssboard.org/rss-specification">RSS Specification</a></div> <div class="sidebarlink"><a href="https://www.rssboard.org/rss-profile">RSS Profile</a></div> <div class="sidebarlink"><a href="https://www.rssboard.org/rss-validator/">RSS Validator</a></div> <div class="sidebarlink"><a href="https://www.rssboard.org/rss-autodiscovery">RSS Autodiscovery</a></div> <div class="sidebarlink"><a href="https://www.rssboard.org/advisory-board">Board Members</a></div> <div class="sidebarlink"><a href="https://www.rssboard.org/charter" rel="nofollow">Charter</a></div> <div class="sidebarlink"><a href="https://groups.google.com/g/rss-public">RSS-Public Mailing List</a></div> <div class="sidebarlink"><a href="https://www.rssboard.org/rss-language-codes">RSS Language Codes</a></div> <div class="sidebarlink"><a href="https://www.rssboard.org/rsscloud-interface">RSSCloud Interface</a></div> <div class="sidebarlink"><a href="https://www.rssboard.org/rss-history">RSS History</a></div> </div> <div class="sidebargroup"> <div class="sidebartitle">RSS Feeds</div> <div class="sidebarrsslink"><a href="http://feeds.rssboard.org/rssboard" rel=\"nofollow\"><img src="/images/rss-icon.png" alt="Subscribe to Really Simple Syndication" border="0" width="16" height="16" /></a> <a href="http://feeds.rssboard.org/rssboard" rel=\"nofollow\">This Weblog</a></div> </div> <div class="sidebargroup"> <div class="sidebartitle">Social Media</div> <div class="sidebarlink"><a rel="me" href="https://mastodon.social/@rssboard">Mastodon</a></div> </div> <div class="sidebargroup"> <div class="sidebartitle">Spec Library</div> <div class="sidebarlink"><a href="https://www.rssboard.org/rss-specification">RSS 2.0 (Current)</a></div><div class="sidebarlink"><a href="https://www.rssboard.org/rss-2-0">RSS 2.0</a></div><div class="sidebarlink"><a href="https://www.rssboard.org/rss-0-9-2">RSS 0.92</a></div><div class="sidebarlink"><a href="https://www.rssboard.org/rss-0-9-1">RSS 0.91</a> (UserLand)</div><div class="sidebarlink"><a href="https://www.rssboard.org/rss-0-9-1-netscape">RSS 0.91</a> (Netscape)</div><div class="sidebarlink"><a href="https://www.rssboard.org/rss-0-9-0">RSS 0.90</a></div> <div class="sidebarlink"><a href="https://www.rssboard.org/rss-change-notes">RSS Change Notes</a></div> </div> <div class="sidebargroup"> <div class="sidebartitle">Namespaces</div> <div class="sidebarlink"><a href="https://www.rssboard.org/creative-commons">Creative Commons</a></div> <div class="sidebarlink"><a href="https://www.rssboard.org/media-rss">Media RSS</a></div> <div class="sidebarlink"><a href="https://www.rssboard.org/trackback">Trackback</a></div> </div> <div class="sidebargroup"> <div class="sidebartitle">Archive</div> <div class="sidebarlink"><a href="https://www.rssboard.org/site-index" rel="nofollow">Site Index</a></div> </div> <div class="sidebargroup"> <div class="sidebartitle">Board Members</div> <div class="sidebarlink">Rogers Cadenhead</div> <div class="sidebarlink">Sterling "Chip" Camden</div> <div class="sidebarlink">Simone Carletti</div> <div class="sidebarlink">James Holderness</div> <div class="sidebarlink">Jenny Levine</div> <div class="sidebarlink">Eric Lunt</div> <div class="sidebarlink">Randy Charles Morin</div> <div class="sidebarlink">Ryan Parman</div> <div class="sidebarlink">Jake Savin</div> <div class="sidebarlink">Jason Shellen</div> <div class="sidebarlink">Paul Querna</div> </div> <div class="sidebargroup"> <div class="sidebartitle">Other Formats</div> <div class="sidebarlink"><a href="https://datatracker.ietf.org/doc/html/rfc4287" rel="nofollow">Atom</a></div> <div class="sidebarlink"><a href="http://web.resource.org/rss/1.0/" rel="nofollow">RDF Site Summary</a></div> </div> <!-- End Sidebar --> </div> </div> <div class="row top10header"> <div class="col"> <h2 class="top10">Popular Pages on This Site</h2> </div> </div> <div class="row"> <div class="col"> <ul> <li><a href="https://www.rssboard.org/rss-validator/">RSS Validator</a></li> <li><a href="https://www.rssboard.org/media-rss">Media RSS Specification (Current)</a></li> <li><a href="https://www.rssboard.org/rss-specification">RSS 2.0 Specification</a></li> <li><a href="https://www.rssboard.org/rss-profile">RSS Best Practices Profile</a></li> <li><a href="https://www.rssboard.org/redirect-rss-feed">How to Redirect an RSS Feed</a></li> </ul> </div> <div class="col"> <ul> <li><a href="https://www.rssboard.org/rss-language-codes">RSS Language Codes</a></li> <li><a href="https://www.rssboard.org/rss-enclosures-use-case">Payloads for RSS</a></li> <li><a href="https://www.rssboard.org/rss-encoding-examples">RSS Encoding Examples</a></li> <li><a href="https://www.rssboard.org/rss-autodiscovery">RSS Autodiscovery</a></li> <li><a href="https://www.rssboard.org/news/212/read-rss-feed-php-using">How to Read an RSS Feed with PHP Using SimplePie</a></li> </ul> </div> </div></div> <!-- End Page --> <div class="footer"> <p><a href="/">RSS Advisory Board</a> | <a href="http://feeds.rssboard.org/rssboard">RSS Feed</a> | <a href="https://www.rssboard.org/rss-specification">RSS Specification</a> | Hosted by <a href="https://workbench.cadenhead.org/">Workbench</a></p> </div> </div> <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script> </body> </html>