本文 6040 pv

0

RSS 教程

© kekehu / 技术资源 / 2007.11.21 / 15:18 / 6040PV

通过使用 RSS,您可以有选择地浏览您感兴趣的以及与您的工作相关的新闻。

通过使用 RSS,您可以把需要的信息从不需要的信息(兜售信息,垃圾邮件等)中分离出来。

通过使用 RSS,您可以创建自己的新闻频道,并将之发布到因特网。

开始学习 RSS !



内容目录

RSS 简介
RSS 的简介。包括其概念,以及 RSS 的优势。

RSS 历史
它是如何诞生的,RSS 的发展史。

RSS 语法
如何制作您的首个 RSS 文件。

RSS channel
元素的概论。包括完整的参考手册和实例。

RSS item
元素的概论。包括完整的参考手册和实例。

RSS 发布 Feed
如何发布 RSS 文档。

RSS 读取 Feed
如何阅读其他站点的 RSS 文档

RSS 简介

RSS 是一种使用 XML 向许多其他的网站分发某个网站上的网络内容的方法。

RSS 使我们有能力对新闻和更新进行快速浏览。





您应当具备的基础知识

在继续学习之前,您需要对下面的知识有基本的了解:

HTML / XHTML
XML / XML 命名空间
如果您希望首先学习这些项目,请在我们的 首页 访问这些教程。



什么是 RSS?
RSS 指 Really Simple Syndication(真正简易联合)
RSS 使您有能力聚合(syndicate)网站的内容
RSS 定义了非常简单的方法来共享和查看标题和内容
RSS 文件可被自动更新
RSS 允许为不同的网站进行视图的个性化
RSS 使用 XML 编写



为什么使用 RSS?
RSS 被设计用来展示选定的数据。

如果没有 RSS,用户就不得不每日都来您的网站检查新的内容。对许多用户来说这样太费时了。通过 RSS feed(RSS 通常被称为 News feed 或 RSS feed),用户们可以使用 RSS 聚合器来更快地检查您的网站更新(RSS 聚合器是用来聚集并分类 RSS feed 的网站或软件)。

由于 RSS 数据很小巧并可快速加载,它可轻易地被类似移动电话或 PDA 的服务使用。

拥有相似内容的网站环(Web-rings)可以轻易地在它们的网站共享内容,使这些网站更出色更有价值。



谁应当使用 RSS?
那些极少更新内容的网管们不需要 RSS!

RSS 对那些频繁更新内容的网站是很有帮助的,比如:

新闻站点
列出新闻的标题、日期以及描述
企业
列出新闻和新产品
日程表
列出即将来临的安排和重要日期
站点更新
列出更新过的页面或新的页面



RSS 的未来
RSS 会无所不在!

成千上万的网站在使用 RSS,每天都有越来越多的人们认识到它的用处。

通过 RSS,因特网上的信息会更易查找,而网站开发者也可更容易地把他们的内容传播到特定的受众。



RSS 的历史
RSS 已发布了很多不同的版本。

RSS 的历史
1997 年 - Dave Winer 开发出 scriptingNews。RSS 由此诞生。

1999 年 - Netscape 开发出 RSS 0.90 (由 scriptingNews 支持的)。这是带有一个 RDF header 的简单的 XML。

1999 年- Dave Winer 在 UserLand 公司开发出 scriptingNews 2.0b1 (包含了 Netscape 的 RSS 0.90 的特定)。

1999 年 - Netscape 开发出 RSS 0.91。在此版本中,他们删除了那个 RDF header,但是包含了大多数来自 scriptingNews 2.0b1 的特性。

1999 年 - UserLand 摆脱了 scriptingNews,而仅仅使用 RSS 0.91。

Netscape 停止了 RSS 的研发

2000 年 - UserLand 发布了正式的 0.91 规范

2000 年 - 一个由 Rael Dornfest 领导的团队在 O'Reilly 开发出 RSS 1.0。此歌是使用了 RDF 和命名空间。此版本常被混淆为 0.91 的新版本,不过它是完全不依赖 RSS 0.91 的新格式。

2000 年 - Dave Winer 在 UserLand 公司开发出 RSS 0.92。

2002 年 - Dave Winer 在离开 Userland 之后开发出 RSS 2.0。

2003 年 - 正式的 RSS 2.0 规范发布。



不同之处在哪里?
RSS 1.0 是唯一使用 W3C 的 RDF(资源描述框架) 标准进行开发的版本。

RDF 所蕴含的理念是帮助建立一张语义网。虽然这与普通用户的关系不打,但是通过使用 Web 标准,对于个人和应用程序来说数据交换会更加容易。



我应该使用哪个 RSS 版本?
RSS 0.91 和 RSS 2.0 较之 RSS 1.0 更容易理解。我们的教程基于 RSS 2.0。



存在 RSS 的 Web 标准吗?
没有正式的标准针对 RSS。

所有 RSS feeds 中大约 50% 使用 RSS 0.91。
大约 25% 使用 RSS 1.0。
最后的 25% 使用 RSS 0.9x 版本或 RSS 2.0。



RSS 语法
RSS 2.0 的语法很简单,也很严格。这些规则很容易学习,也很容易使用。



RSS 如何工作
RSS 用于在网站间分享信息。

使用 RSS,您在名为聚合器的公司注册您的内容。

作为他的一部分,创建一个 RSS 文档,然后使用 .xml 后缀来保存它。然后把此文件上传导您的网站。接下来,通过一个 RSS 聚合器来注册。每天,聚合器都会到被注册的网站搜索 RSS 文档,校验其链接,并显示有关 feed 的信息,这样客户就能够链接到使他们产生兴趣的文档。

提示:请在 RSS 发布 这一节浏览免费的 RSS 聚合器服务。



一个 RSS 实例文档
RSS 文档使用一种简单的自我描述的语法:

让我们看一个简单的 RSS 文档:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">

<channel>
 <title>geekso Home Page</title>
 <link>www.geekso.com</link>
 <description>Free web building tutorials</description>
 <item>
   <title>RSS Tutorial</title>
   <link>www.geekso.com/rss</link>
   <description>New RSS tutorial on W3Schools</description>
 </item>
 <item>
   <title>XML Tutorial</title>
   <link>www.geekso.com/xml</link>
   <description>New XML tutorial on W3Schools</description>
 </item>
</channel>

</rss>

文档中的第一行:XML 声明 - 定义了文档中使用的 XML 版本和字符编码。此例子遵守 1.0 规范,并使用 ISO-8859-1 (Latin-1/West European) 字符集。

下一行是标识此文档是一个 RSS 文档的 RSS 声明(此例是 RSS version 2.0)。

下一行含有 <channel> 元素。此元素用于描述 RSS feed。

<channel> 元素有三个必需的子元素:

<title> - 定义频道的标题。(比如 这一技客  首页)
<link> - 定义到达频道的超链接。(比如 www.geekso.com)
<description> - 描述此频道(比如免费的网站建设教程)
每个 <channel> 元素可拥有一个或多个 <item> 元素。

每个 <item> 元素可定义 RSS feed 中的一篇文章或 "story"。

<item> 元素拥有三个必需的子元素:

<title> - 定义项目的标题。(比如 RSS 教程)
<link> - 定义到达项目的超链接。(比如 http://www.geekso.com/rss)
<description> - 描述此项目(比如 w3school 的 RSS 教程)
最后,后面的两行关闭 <channel> 和 <rss> 元素




RSS 中的注释
在 RSS 中书写注释的语法与 HTML 的语法类似:

<!-- This is an RSS comment -->




RSS 使用 XML 来编写
因为 RSS 也是 XML,请记住:

所有的元素必许拥有关闭标签
元素对大小写敏感
元素必需被正确地嵌套
属性值必须带引号




RSS <channel> 元素
RSS 的 <channel> 元素可描述 RSS feed。




RSS <channel> 元素
请看下面这个 RSS 文档:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">

<channel>
 <title>W3School Home Page</title>
 <link>http://www.w3school.com.cn</link>
 <description>Free web building tutorials</description>
 <item>
   <title>RSS Tutorial</title>
   <link>http://www.w3school.com.cn/rss</link>
   <description>New RSS tutorial on W3School</description>
 </item>
</channel>

</rss>

正如前面提到的,<channel> 元素可描述 RSS feed,而拥有三个必需的子元素:

<title> - 定义频道的标题。(比如 w3school 首页)
<link> - 定义到达频道的超链接。(比如 www.w3school.com.cn)
<description> - 描述此频道(比如免费的网站建设教程)
<channel> 通常包含一个或多个 <item> 元素。每个 <item> 元素可定义 RSS feed 中的一篇文章或 "story"。

此外,还存在若干个可选的 <channel> 的子元素。我们会在后面讲解最重要的几个。




<category> 元素
<category> 子元素用于为 feed 规定种类。

<category> 子元素使 RSS 聚合器基于类别对网站进行分组成为可能。

上面的 RSS 文档的类别可能会是:

<category>Web development</category>





<copyright> 元素
<copyright> 子元素会告知有关版本资料的信息。

上面的 RSS 文档的版本可能会是

<copyright>2006 geekso.com. All rights reserved.</copyright>




<image> 元素

<image> 子元素可在聚合器提供某个 feed 时显示一幅图像。

<image> 有三个必需的子元素:

<url> - 定义引用图像的 URL
<title> - 定义图像无法被显示时显示的文本
<link> - 定义到达提供此频道的网站的超链接
上面的 RSS 文档的图像可能是这样的:
<image>
 <url>http://www.geekso.com/images/logo.gif</url>
 <title>W3School.com.cn</title>
 <link>http://www.geekso.com</link>
</image>




<language> 元素
<language> 子元素用于规定用来编写文档的语言。

<language> 元素使 RSS 聚合器基于语言来对网站进行分组成为可能。

上面的 RSS 文档的语言可能是:

<language>en-us</language>






RSS <channel> 参考手册
元素                           描述
<category>                            可选的。为 feed 定义所属的一个或多个种类。
<cloud>                                 可选的。立即通知注册进程关于 feed 的更新
<copyright>                           可选。告知版权资料。
<description>                        必需的。描述频道。
<docs>                                  可选的。 规定指向当前 RSS 文件所用格式说明的 URL。
<generator>                         可选的。指定用于生成 feed 的程序。
<image>                               可选的。在聚合器呈现某个 feed 时允许某个图像被显示。
<language>                          可选的。规定编写 feed 所用的语言。
<lastBuildDate>                    可选的。定义 feed 的内容最后的修改日期。
<link>                                   必需的。定义指向频道的超链接。
<managingEditor>               可选的。定义 feed 的内容编辑的电子邮件地址。
<pubDate>                          可选的。为 feed 的内容定义最后发布日期。
<rating>                              可选的。feed 的 PICS 级别。
<skipDays>                         可选的。规定忽略 feed 更新的天。
<skipHours>                       可选的。规定忽略 feed 更新的小时。
<textInput>                       可选的。规定应当与 feed 一同显示的文本输入域。
<title>                               必需的。定义频道的标题。
<ttl>                                 可选的。指定从 feed 源更新此 feed 之前,feed 可被缓存的分钟数。
<webMaster>                   可选的。定义此 feed 的 web 管理员的电子邮件地址。





RSS <item> 元素
每个 <item> 元素可定义 RSS feed 中的一篇文章或 "story"。
<item> 元素
请看下面的 RSS 文档:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0"><channel>
 <title>W3Schools Home Page</title>
 <link>http://www.w3schools.com</link>
 <description>Free web building tutorials</description>
 <item>
   <title>RSS Tutorial</title>
   <link>http://www.w3schools.com/rss</link>
   <description>New RSS tutorial on W3Schools</description>
 </item>
</channel></rss>
正如前面提到的,每个 <item> 元素可定义 RSS feed 中的一篇文章或 story"。

<item> 元素拥有三个必需的子元素:

<title> - 定义项目的标题。(比如 RSS 教程)
<link> - 定义到达项目的超链接。(比如 http://www.w3school.com.cn/rss)
<description> - 描述此项目(比如 w3school 的 RSS 教程)
此外,存在若干个 <item> 的可选的子元素,我们会在下面介绍最重要的几个。






<author> 元素
<author> 子元素用于规定一个项目的作者的电子邮件地址。

注释:为了防止垃圾邮件,一些开发者不会使用这个 <author> 元素。

上面的 RSS 文档中项目的作者可能是:

<author>hege@refsnesdata.no</author>



<comments> 元素
<comments> 子元素允许把一个项目连接到有关此项目的注释。

上面的 RSS 文档中项目的注释可能这样的:

<comments>http://www.w3schools.com/comments</comments>



<enclosure> 元素
<enclosure> 子元素允许将一个媒体文件导入一个项中。

<enclosure> 元素有三个必需的属性:

url - 定义指向此媒体文件的 URL
length - 定义此媒体文件的长度(字节)
type - 定义媒体文件的类型
在上面的 RSS 文档中,被包含在项目中的媒体文件可能是这样的:

<enclosure url="http://www.w3schools.com/rss/rss.mp3"
length="5000" type="audio/mpeg" />



RSS <item> 参考手册
元素 描述
<author> 可选的。规定项目作者的电子邮件地址。
<category> 可选的。定义项目所属的一个或多个类别。
<comments> 可选的。允许项目连接到有关此项目的注释(文件)。
<description> 必需的。描述此项目。
<enclosure> 可选的。允许将一个媒体文件导入一个项中。
<guid> 可选的。为项目定义一个唯一的标识符。
<link> 必需的。定义指向此项目的超链接。
<pubDate> 可选的。为此项目定义最后发布日期。
<source> 可选的。为此项目指定一个第三方来源。
<title> 必需的。定义此项目的标题。




RSS 发布您的 feed


把您的 RSS 发布到 Web 上
Now it's time to get your RSS file up on the web. Here are the steps:

1. 为您的 RSS 命名。请注意文件必须有 .xml 的后缀。

2. 验证您的 RSS 文件。(可以在 http://www.feedvalidator.org 找到很好的验证器)。

3. 把 RSS 文件上传到您的 web 服务器上的 web 目录。

4. 把这个小的橙色图片按钮  或  拷贝到您的 web 目录。

5. 在你希望向外界提供 RSS 的页面上放置这个小按钮。然后向这个按钮添加一个指向 RSS 文件的链接。代码应该类似这样:

<a href="www.geekso.com/rss/myfirstrss.xml">
< img src="www.geekso.com/rss/rss.gif" width="36" height="14">
</a>

6. 把你的 RSS feed 提交到 RSS Feed 目录。要注意!feed 的 URL 不是你的页面,而是您的指向您的 feed 的 URL,比如 "http://www.w3school.com.cn/rss/myfirstrss.xml"。此处提供一些免费的 RSS 聚合服务:

Syndic8: Over 300,000 feeds listed. Register your feed here.
Daypop: Over 50,000 feeds. Register your feed here.
Newsisfree: Over 18,000 feeds. Register your feed here.
7. 在重要的搜索引擎注册您的 feed :

Yahoo - http://publisher.yahoo.com/promote.php
Google - http://www.google.com/intl/zh-cn/webmasters/addfeed.html
MSN - http://rss.msn.com/publisher.armx
8. 更新您的 feed - 现在您已获得了来自 Google、Yahoo、以及 MSN 的 RSS feed 按钮。请您务必经常更新您的内容,并保持 RSS feed 的长期可用。



我可以自己来维护 RSS feed 吗?
确保 RSS feed 按照您期望的方式工作的最好的办法,就是自己来维护它。

不过,这么做很费时,特别是对于大量的更新工作来讲。

替代方案是使用一个第三方的自动 RSS。



自动的 RSS
如果您不想自己去更新 RSS feed,有一些工具和服务可以为您自动地完成工作,比如:

MyRSSCreator - 在 10 分钟之内提供自动的、可靠的 RSS 服务
FeedFire - 提供免费的 RSS feed 创建和分发
对于那些仅需要一个用于个人网站的 RSS feed 的用户来说,一些流行的 blog (Web Log) 管理器可提供内建的 RSS 服务:

Blogger
Radio





RSS 阅读器

RSS 阅读器用于读取 RSS feed!

RSS 阅读器可供许多不同的设备和操作系统使用。
RSS 阅读器
有很多不同的 RSS 阅读器。某些以 web services 的形式来工作,而某些则运行于 windows (或 Mac、PDA 或 UNIX)。

这是一些我尝试过并钟爱的阅读器:

NewsGator Online
一个免费的在线 RSS 阅读器。包含 Outlook 同步,通过 Media Center Edition 查看电视内容,以及 blog 和标题的发布。
RssReader
基于 Windows 的免费 RSS 阅读器。支持 RSS versions 0.9x、1.0 以及 2.0 和 Atom 0.1, 0.2 以及 0.3。
FeedDemon
基于 Windows 的 RSS 阅读器。使用很简便,界面很有条理。不过不是免费的!
blogbot
一个针对 Outlook 或 Internet Explorer 的 RSS 阅读器插件。针对 Internet Explorer 的简化版是免费的。
提示:Mozilla Firefox 浏览器拥有内建的 RSS 阅读器。在您访问提供 RSS feed 的网站时,会在地址栏看到 Firefox 的 RSS 图标。点击这个图标可查看一个不同 feed 的列表,在此可选择你需要阅读的 feed。



我已经有一个 RSS 阅读器了,接下来怎么做呢?
点击您希望阅读的 RSS feed 旁边的橙色小图标  或  ,把浏览器窗口的 URL 拷贝粘贴到您的 RSS 阅读器即可。


本文有 0 篇评论

发表你的见解

打开HTML 打开UBB 打开表情 隐藏 记住我
emotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemot
emotemotemotemotemot