Я немного новый для rss-каналов, но я могу динамически создавать канал с помощью PHP, и он отлично работает. Моя проблема в том, что иногда у фида нет предметов (я ограничиваю возраст фид до 60 дней, а иногда ничего не происходило за это время).
То, что я ожидал бы, это то, что у меня просто не было бы никаких <item>
s на моей странице 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>
Пустой канал – это кормовой корпус (обычно XML) без каких-либо элементов. Корпус должен быть действительным, чтобы он был действительным фидом.
Из спецификации RSS 2.0 , в то время как с 2003 года:
Канал может содержать любое количество <item> s
Однако, по крайней мере, из одного RSS XSD мы видим, что это не заслужено, и разработчики знают это:
<xs: element name = "item" type = "RssItem" minOccurs = "1" maxOccurs = "unbounded"> <! - HACK: Согласно спецификации RSS 2.0, должно быть строго возможно иметь нулевые элементы элемента, но это делает схему недетерминированной в отношении элементов расширяемости поэтому на данный момент мы отключили ошибку-исправление 10231 и установили minOccurs = 1, чтобы обойти эту проблему. -> </ Хз: элемент>
Попробуйте фид у разных клиентов. Возможно, это просто причуда реализации Google. YMMV.
Счастливое кодирование.
Изменить: для удовольствия от этого, см. Вопрос SO: Где я могу найти официальную схему XSD для RSS 2.0? , На самом деле это подрыв, на самом деле: – /
Подача с нулевыми позициями вполне допустима. Если Google Reader не справляется с этим должным образом, он должен быть сообщен им как ошибка, и они должны его исправить.