如何制作“空”RSS源

时间:2010-10-24 16:24:58

标签: php xml rss feeds

我对rss feed很新,但是我能够使用PHP动态创建一个feed并且效果很好。我的问题是,饲料偶尔没有任何物品(我将饲料的年龄限制在60天,有时在那段时间没有发生任何事情)。

我期望发生的事情是我只是在我的xml页面中没有任何<item>。然而,当我这样做的时候,饲料阅读器(至少是谷歌的阅读器)似乎有点笨拙。即使XML正确地包含了Feed的名称,它也会显示没有标题。

我到目前为止找到解决此问题的唯一方法是将虚拟项目放入其中,这只是<item><title></title></item>。然后我的Google阅读器正确找到了Feed的名称,它看起来就像一个空白的Feed。

这似乎是一个可能不正确的解决方案。

是否有一些标准的方法来处理空Feed的XML表示?

编辑:以下是空白Feed的内容

<?xml version="1.0" encoding="utf-8"?> <rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:content="http://purl.org/rss/1.0/modules/content/">

<channel>

<title>News at Example</title>

<link>http://www.example.com/feed/sample-reviews</link>
<description>Latest Additions to the Sample Category</description>
<dc:language>en-us</dc:language>
<dc:creator>Contact Example through our "contact us" page</dc:creator>

<dc:rights>Copyright 2010 Example Technologies Inc.</dc:rights>
<admin:generatorAgent rdf:resource="http://www.codeigniter.com/" />

        <item><title></title></item>

</channel></rss>

2 个答案:

答案 0 :(得分:10)

零项目的Feed非常有效。如果谷歌阅读器没有正确处理它,它应该作为一个错误报告给他们,他们应该修复它。

答案 1 :(得分:5)

空Feed是一个Feed包(通常是XML的东西),没有任何项目。机箱必须仍然有效,才能使其成为有效的供稿。

来自RSS 2.0 Specification,而来自2003年:

  
    

频道可以包含任意数量的&lt; item&gt; s

  

但是,从至少one RSS XSD开始,我们可以看到它没有被尊重,开发者也知道它:

      <xs:element name="item" type="RssItem" minOccurs="1" maxOccurs="unbounded">
         <!-- 
           HACK: According to the RSS 2.0 spec, it should strictly be possible to have zero item elements, 
                 but this makes the schema non-deterministic with regard to extensibility elements
                 so for the moment we undid bug-fix 10231 and set minOccurs=1 to work around this problem. 
         -->
      </xs:element>

在不同的客户端尝试您的Feed。也许这只是谷歌实施的一个怪癖。 YMMV。

快乐的编码。

修改:为了好玩,请参阅SO问题:Where I can find the official XSD schema for RSS 2.0?。这实际上是令人失望的: - /