RSS规范

逑景铄
2023-12-01

RSS输出遵从业界标准RSS 2.0规范,该规范发布在W3C网站上,要求可转化为GBK编码,不含无法进行编码转化的特殊字符。
如果RSS输出内容包含图片等元素,该元素地址需要使用完整的路径。


什么是RSS?

RSS是一种Web内容联合格式。它的名字是Really Simple Syndication的缩写。RSS是XML语言的一种。所有的RSS文件都必须遵循XML 1.0规范,该规范发布在W3C网站上。
在一个RSS文档的开头是一个<rss>节点和一个规定的属性version,该属性规定了该文档将以RSS的哪个版本表示。如果该文档以这个规范来表示,那么它的version属性就必须等于2.0。
在<rss>节点的下一级是一个独立的<channel>节点,该节点包含关于channel的信息和内容。


必需的频道(channel)节点

这里有一份必需的频道(channel)节点的列表,每一个都有一个简单的描述、一个例子、应该出现的位置和更详细描述的超链接。

节点名 说明 范例
title 该频道的名称。这可以告诉别人如何访问您的服务。如果你有一个HTML网站,其中包含与您的RSS文件相同的信息,您的频道名称应该与您网站的标题相同。 GoUpstate.com News Headlines
link 该频道对应HTML网站的网址。 http://www.goupstate.com/
description 关于该频道的描述。 The latest news from GoUpstate.com, a Spartanburg Herald-Journal Web site.

可选的频道节点

这里是可选的频道节点列表。

节点名 说明 范例
language   en-us
copyright 版权声明。 Copyright 2002, Spartanburg Herald-Journal
managingEditor 编辑的邮件地址。 geo@herald.com (George Matesky)
webMaster 技术人员的邮件地址。 betty@herald.com (Betty Guernsey)
pubDate 内容发布时间。 Sat, 07 Sep 2002 0:00:01 GMT
lastBuildDate 最后更新时间。 Sat, 07 Sep 2002 9:42:31 GMT
category 指定该频道所属的一个或多个类别,遵循与<item>级<category>节点相同的规则。 <category>Newspapers</category>
generator 一个字符串,指定生成该频道的程序名称。 MightyInHouse Content System v2.3
docs   http://backend.userland.com/rss
cloud 允许进程注册一个cloud用于获得频道的更新通知,并为rss种子实现一个轻量级的发布订阅协议。 <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/>
TTL ttl是Time to live的缩写。它指示cache的有效保存时间。 <ttl>60</ttl>
Image 指定一个GIF,JPEG或PNG图片,可与频道一起显示,图片链接地址需使用完整路径。  
textInput 指定一个文本输入框,可与频道一起显示。  
skipHours 一个聚合的提示,告诉使用者哪些时间段是可以忽略的。  
skipDays 一个聚合的提示,告诉使用者哪天是可以忽略的。  

<channel>的子节点<image>

<image>是一个可选的<channel>子节点,其中包含三个必需的子节点和三个可选的子节点。
<url>是一个GIF,JPEG或PNG的图片地址,该图像代表整个频道。
<title>用于描述上面的图像,等同于HTML语言中的<img>的alt属性。
<link>是要连接的站点的url,当显示频道时,图像的连接指向该站点(注意在实际中,图像的<title>和<link>应当和channel的<title>和<link>的值相同。
可选的节点包括<width>和<height>,显示图像的宽度和高度,单位为像素。
<description>就是link的TITLE属性中文本,它将在调用网页时显示出来。
图像最大宽度值是144,默认值是88。
图像最大高度值是400,默认值是31。


<channel>的子节点<cloud>

<cloud>是一个可选的<channel>子节点。
它指定一个可以支持rssCloud接口的web服务,rssCloud接口可以用HTTP-POST,XML-RPC或SOAP1.1实现。
它的目的是允许通知注册为cloud的进程频道被更新,从而实现一个轻量级的发布订阅协议。
<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc" />
在这个例子中,为了请求频道通知,您需要发送XML-RPC消息到radio.xmlstoragesystem.com的80端口,路径为/RPC2。调用的过程为xmlStorageSystem.rssPleaseNotify。


<channel>的子节点<ttl>

<ttl>是一个可选的<channel>子节点。
ttl是time to live的缩写。它表示频道在被刷新前应该被缓存的时间。这使得rss源可以被一个支持文件共享的网络所管理。
例如:<ttl>60</ ttl>


<channel>的子节点<textInput>

<textInput>是<channel>的可选的子节点,它包含四个必需的子节点。
<title>文本输入区域提交按钮的标签。
<description>文本输入区域的描述。
<name>文本输入区域文本对象的名称。
<link>处理文本输入的CGI脚本的URL。


<item>的节点

节点名 说明 范例
title Item的标题。 Venice Film Festival Tries to Quit Sinking
link Item的URL。 http://www.nytimes.com/2002/09/07/movies/07FEST.html
description item的概要。 Some of the most heated chatter at the Venice Film Festival this week was about the way that the arrival of the stars at the Palazzo del Cinema was being staged.
author 作者的邮件地址。 oprah@oxygen.net
category item可以包含在一个或多个分类中。 Simpsons Characters
comments 与item相关的评论的地址。 http://www.myblog.org/cgi-local/mt/mt-comments.cgi?entry_id=290
comments 附加的媒体对象。 <enclosure url="http://live.curry.com/mp3/celebritySCms.mp3" length="1069871" type="audio/mpeg"/>
guid 唯一标识item的字符串。 <guid isPermaLink="true">http://inessential.com/2002/09/01.php#a2</guid>
pubDate item的发布时间。 Sun, 19 May 2002 15:21:36 GMT
source RSS频道来源。 <source url="http://www.quotationspage.com/data/qotd.rss">Quotes of the Day</source>

<item>的子节点<source>

<source>是一个可选的<item>子节点。
它的值是RSS频道的名称,从item的title衍生而来。它有一个必须包含的属性url, 该属性链接到XML序列化源。
<source url="http://static.userland.com/tomalak/links2.xml"> Tomalak’s Realm</source>
该节点的作用是提高连接的声望,进一步推广新闻项目的源头。它可以用在聚合器的Post命令中。当从聚合器通过webblog访问一个item时,<source>能够自动被生成。


<item>的子节点<enclosure>

<enclosure>是一个可选的<item>子节点。
它有三个必需的属性。url属性指示enclosure的位置,length指出它的字节大小,type属性指出它的标准MIME类型 
URL必须是HTTP的URL。
<enclosure url="http://www.scripting.com/mp3s/weatherReportSuite.mp3" length="12216320" type="audio/mpeg" />


<item>的子节点<category>

<category>是一个可选的<item>子节点。
它有一个可选属性或域,该属性是一个用来定义分类法的字符串。
该节点的值是一个斜杠分隔的字符串,用于标识一个指定的分类分层的位置。处理器可以为分类的识别建立会话。下面提供了两个例子:
<category>Grateful Dead</category>
<category domain="http://www.fool.com/cusips">MSFT</category>
<category domain="http://www.fool.com/cusips">MSFT</category> 你可以根据你的需要为不同的域(domain)包含很多category节点,并且可以在相同域的不同部分拥有一个前后参照的item。


<item>的子节点<pubDate>

<pubDate>是一个可选的<item>子节点。
它的值是item的发布日期。如果它是一个未来的日期,聚合器在日期到达之前可以选择不显示该item。
<pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>


<item>的子节点<guid>

<GUID>是一个可选的<item>子节点。
为全球唯一的GUID代表标识符。这是一个字符串,它唯一标识item。如果存在,当item发布之后,聚合器可以选择使用该字符串判断该item是否是新的。
<guid> http://some.server.com/weblogItem3207 </的GUID>
guid没有特定的语法规则,聚合器必须将他们看作一个字符串。生成具有唯一性的字符串guid取决于种子的源头。
如果guid节点有isPermaLink属性,并且值为真,读取器就会认为它是item的permalink。permalink是一个可在web浏览器中打开的url链接,它指向<item>节点所描述的全部item。
<guid isPermaLink="true">http://inessential.com/2002/09/01.php#a2</guid> 
isPermaLink是可选属性,默认值为真。如果值为假,guid将不会被认为是一个url或指向任何对象的url。


<item>的子节点<comments>

<comments>是一个可选的<item>子节点。
如果存在,它是该项目的评论页面的URL。
<comments>http://rateyourmusic.com/yaccs/commentsn/blogId=705245&itemId=271</comments>


<item>的子节点<author>

<author>是一个可选的<item>子节点。
这是该item作者的电子邮件地址。对于通过rss传播的报纸和杂志,作者可能是写该item所描述的文章的人。对于聚集型webblogs,作者可能不是责任编辑或站长。对于个人维护的webblog,忽略<author>节点是有意义的。
<author>lawyer@boyer.net (Lawyer Boyer)</author>


RSS源代码范例:
<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.5 on 9/30/2002; 4:00:00 AM Pacific -->
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule">
	<channel>
		<title>Scripting News</title>
		<link>http://www.scripting.com/</link>
		<description>A weblog about scripting and stuff like that.</description>
		<language>en-us</language>
		<blogChannel:blogRoll>http://radio.weblogs.com/0001015/userland/scriptingNewsLeftLinks.opml</blogChannel:blogRoll>
		<blogChannel:mySubscriptions>http://radio.weblogs.com/0001015/gems/mySubscriptions.opml</blogChannel:mySubscriptions>
		<blogChannel:blink>http://diveintomark.org/</blogChannel:blink>
		<copyright>Copyright 1997-2002 Dave Winer</copyright>
		<lastBuildDate>Mon, 30 Sep 2002 11:00:00 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss</docs>
		<generator>Radio UserLand v8.0.5</generator>
		<category domain="Syndic8">1765</category>
		<managingEditor>dave@userland.com</managingEditor>
		<webMaster>dave@userland.com</webMaster>
		<ttl>40</ttl>
		<item>
			<description>
				your article details
			</description>
			<pubDate>Mon, 30 Sep 2002 01:56:02 GMT</pubDate>
			<guid>http://scriptingnews.userland.com/backissues/2002/09/29#When:6:56:02PM</guid>
		</item>
	</channel>
</rss>

 类似资料: