博客RSS 使用完全手册
转自:http://bbc.icxo.com/read.jsp?aid=1867&uid=164
原文出处:MSDN Magazine Apr. 2004(The XML Files) 除了这些必须的元素外,RSS 1.0 还定义了三个附加元素:image、items 和 textinput,其中,image 和 textinput 是可选的。另一方面,RSS 2.0 提供了 16 个附加元素,其中也包括 image、items 和 textinput,此外还有 language、copyright、managingEditor、pubDate 和 category。RSS 1.0 允许通过定义在单独的 XML 名字空间中的可扩展元素来创建这种类型的元数据。 在 RSS 1.0 中,title 和 link 是必须的,description 是可选的。而在 RSS 2.0 中,title 或 description 必须提供其中的一个;其它均可选。这些只是定义在 RSS 1.0 中的 item 元素。RSS 2.0 提供几个其它可选元素,其中有 author、category、comments、enclosure、guid、pubDate 和 source。RSS 1.0 获取这样的元数据是通过定义在单独的 XML 名字空间中称为 RSS 模块的可扩展元素来实现的。例如,在 Figure 1 中,item 的日期是用 Dublic Core 模块的 有关不同格式的完整信息请参考 RSS 1.0 和 2.0 规范。 那么,何为 Atom? 前面我提到过,Atom 乃一项目的名字,主要是开发一个新的网志摘要格式以解决目前 RSS 存在的问题(混乱的版本号,不是一个真正的开放标准,表示方法的不一致,定义贫乏等等)。Atom 希望提供一个清晰的版本以解决每个人的需要,其设计完全不依赖于供货商,任何人都可以对之进行自由扩展,完整详细说明。 当今许多 Blog 引擎已经支持当前的摘要格式。Figure 3 是一个Atom 0.3 提要例子,它与前述 Figure 1 及 Figure 2 RSS 提要等同。注意 Atom 提要用名字空间限定的,但它不使用 RDF。这使得 Atom 和 RSS 1.0 及 RSS 2.0 在某些地方有相似之处。Atom 在未来是否能被接受,人们拭目以待。 除了定义新的摘要格式之外,Atom 还希望定义一个标准的档案文件格式和一个标准的网志编辑 API(Atom API)。有关 Atom 详细规范以及其它 Atom 资源请访问 The Atom Project。 什么是 blogroll? blogroll 是网志提要的集合,大多数 blogger(博客)在其个人网志上都提供 blogroll。这就允许读者连接到其他趣味和写作风格相投的人的网志上。Blogroll 方便了网络上的沟通。通过使用Outline Processor Markup Language (OPML),人们可以用 XML 格式文件交换 blogroll。Figure 4 是 blogroll 的一个例子。 大多数网志引擎都自己管理 blogroll,每当读者请求 blogroll 时都自己产生相应的 XML 格式。同样,大多数聚合器都能导入 blogroll 并自动预定所包含的摘要。有关 OPML 更多的信息参见 http://opml.scripting.com。 能解释 referrers、trackbacks 和 pingbacks 是什么吗? 大多数网志软件都能让读者添加网志评论。但更常见的做法是让读者在其自己的网志添加一个入口回链到原来的帖子。博客们(Bloggers)都乐于跟踪连接发生的时间以便新读者能理解整个会话内容。 所谓 referrer 是一个外部站点,用户单击该站点上一个超链接便可以到达你的网站。许多网志引擎当读者导航到你的网志的某个入口时都能自动保持跟踪。大多数引擎都会在网志入口底部显示一个 referrers 清单,以便读者能往回导航到 referrer 的站点,并清楚他们关于该入口要说些什么,这基于一个假设,那就是如果他们链接到它,可能就此会写些什么。referrer 存在的问题是必须要有这个假设才成立——没有足够的信息说明是否引用的页面事实上包含有关信息。实际上,垃圾信息的发布者为了营销企图已经利用了这个漏洞来重定向读者。 Trackback 和 pingback 同一个规范,被用来弥补上述问题的方案。使用 trackback 和 pingback,其他博客们能自动发送一个 ping 到你的网志以明确表示他们已经写了一个引用特定帖子的入口。 这种类型的反链允许你的网志以更明显的方式显示所有评论的清单。当今大多数网志软件支持所有这些技术。参见 TrackBack Technical Specification 和 Pingback 1.0。 如何为我的站点产生 RSS 提要? Figure 5 举例说明了如何用 asp:Repeater 控件在 .aspx 页面中生成 RSS 2.0 提要。该页面假设你已经在后端代码文件中将控件的 DataSource 属性设置成对应的数据库结果集。 我想聚合几个 RSS 提要并将信息显示在个人网站上,能解释一下如何实现吗? 因为 RSS 提要是 XML 文件,作为练习,你可以用自己最擅长的 XML API,比如,Microsoft .NET Framework 中的 System.Xml,Figure 6 中包含 ASP.NET Web 用户控件代码,它是我编写用来聚合 blogroll 文件中(.opml)所列出的 RSS 提要的一段代码。这段代码假设 opml 元素包含 numberToDisplay 属性,以表示你打算显示的每个提要有多少项。 Figure 7 ASP.NET Web 用户控件 你可以将控件拖到任何 .aspx 页面中,它将显示 blogroll 文件中列出的不同提要的项,Figure 7 显示了 Utah .NET User Group 网站使用这个控件的效果画面。 有没有与网志交互的 Web Services APIs? 许多网志引擎都提供属于自己的 Web service 接口,通过编程与网志交互,但目前还没有出现一种标准化的东西。 .Text 和 dasBlog 两者都提供某些 .asmx 端点,可以通过 SOAP 来实现编辑功能,但其接口是不同的。Blogger.com 提供基于 XML-RPC 的交互式 API (Blogger API)。Userland Software 对Blogger API 的功能进行了增强,并把它叫做 MetaWeblog API。这些可能是当今公认的网志 APIs,但仍然不是所有网志引擎都支持的。还有一个用于添加评论的独力的 API 叫做 Comment API,同样,它也不是被普遍支持。 Atom 组正在努力解决这些问题,Atom API 定义了一个标准的网志 API 用于发布和编辑网志内容。有关信息请参考 The Atom Project 网站。 发送问题和评论给 Aaron:xmlfiles@microsoft.com。 |
作者简介 Aaron Skonnard 在盐湖城 Northface 大学授课。与人合著有《Essential XML Quick Reference》(Addison-Wesley, 2001)以及《Essential XML》(Addison-Wesley, 2000),经常在会议上演讲。在 http://www.skonnard.com 可以联系上他。 |
本文出自 MSDN Magazine 的 April 2004 期刊,可通过当地报摊获得,或其最好是 订阅。 |