Как сделать «пустой» RSS-канал - PullRequest
6 голосов
/ 24 октября 2010

Я новичок в RSS-каналах, но я могу динамически создавать каналы с помощью PHP, и это прекрасно работает.Моя проблема в том, что иногда в ленте нет элементов (я ограничиваю возраст элементов в 60 днями, а иногда ничего не происходит за это время).

Я ожидал бы, что у меня просто не будет никаких <item> на моей странице XML.Тем не менее, когда я делаю это таким образом, программа чтения каналов (по крайней мере, Google) кажется немного испорченной.Несмотря на то, что XML правильно содержит имя канала, он отображается без заголовка.

Единственный способ, который я нашел до сих пор, чтобы исправить это, - это вставить фиктивный элемент, то есть просто <item><title></title></item>.Тогда мой читатель Google правильно находит название канала, и он выглядит как пустой канал.

Кажется, что это нелепое решение, которое, вероятно, неверно.

Есть ли какой-нибудь стандартный способ работы с XML-презентацией для пустого канала?

Редактировать: Вот как выглядит пустой канал

<?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 ]

10 голосов
/ 24 октября 2010

Фид с нулевыми объектами совершенно действителен. Если Google Reader не обрабатывает это должным образом, об этом следует сообщить им как об ошибке, и они должны это исправить

5 голосов
/ 24 октября 2010

Пустой канал - это вложение канала (как правило, XML) без каких-либо элементов.Вложение должно быть действительным, чтобы оно действовало в качестве канала.

Из RSS 2.0 Спецификация , а с 2003 г .:

Канал можетсодержит любое число s

Однако, по крайней мере, один 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>

Попробуйте свой канал в разных клиентах.Возможно, это просто причуды реализации Google.YMMV.

Удачное кодирование.

Редактировать: См. Вопрос SO: Где найти официальную схему XSD для RSS 2.0.Вообще-то, это довольно разочаровывающе: - /

...