Что не так с RSS

Independence
На сайте с 29.10.2005
Offline
428
2495

Есть RSS, код которого выглядит примерно так:

<?xml version="1.0" encoding="windows-1251" ?>

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>SITE.COM - сайт о сайтах</title>

<link>http://www.site.com</link>

<description>Сайты различных стран мира</description>

<image>

<url>http://www.site.com/site.png</url>

<title>SITE.COM - сайт о сайтах</title>

<link>http://www.site.com</link>

</image>

<item>

<title>Новости сайта SITE.COM</title>

<link>http://www.site.com</link>

<description>Тут какие-то новости</description>

<pubDate>Sun, 14 Oct 2010 23:00:00 +0300</pubDate>

<guid>http://www.site.com</guid>

</item>

<item>

<title>Новости сайта SITE.COM</title>

<link>http://www.site.com</link>

<description>Тут еще какие-то новости</description>

<pubDate>Fri, 6 Aug 2010 02:51:45 +0300</pubDate>

</item>

... и далее еще кучка item'ом с новостями

<atom:link href="http://www.site.com/site.rss" rel="self" type="application/rss+xml" />

</channel>

</rss>

Валидатор - http://validator.w3.org/feed/ - почему ругается на 1 итем и 2 закрывающий итем (а не на 1 и 1). Вот смотрю я и не понятно: вроде же все нормально, и открывающий и закрывающий там есть.

===

line 24, column 0: item should contain a guid element (18 occurrences) [help]

</item>

line 12, column 0: Misplaced Item (19 occurrences)

<item>

===

Он хочет, чтобы guid был, но когда я ему везде одинаковый guid пишу (так как новости ведут на титульную страницу сайта), то он опять же недоволен и ругается еще больше.

Но это ладно. Там он пишет, что все нормально прошли валидацию "OK". Но вот что окончательно добило, так это то, что RSS-канал не может показывать Feedburner, хотя по сути ничего не менялось. только 1 новость добавилась. Раньше он не ругался, а теперь пишет - "Ошибка кода веб-канала". И браузер показывает

Internet Explorer не может отобразить этот веб-канал

Этот веб-канал содержит ошибки в коде.

Подскажите, плиз, что в коде поменять нужно, чтобы все нормально было.

Olldman
На сайте с 21.04.2010
Offline
79
#1

Валидатор ругается не на <item>, а подсвечивает его, потому, что содержащийся в нем <guid> не может быть одинаковым, т.к. это идентификатор строки. Так что либо он разный (ссылка на каждую новость, например), либо его нет вообще (т.к. это необязательный элемент).

Строка <atom:link href="http://www.site.com/site.rss" rel="self" type="application/rss+xml" /> ставится в начале <channel>, т.е. ваш rss должен быть примерно таким:

<?xml version="1.0" encoding="windows-1251" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="http://www.site.com/news.xml" rel="self" type="application/rss+xml" />
<title>SITE.COM - сайт о сайтах</title>
<link>http://www.site.com</link>
<description>Сайты различных стран мира</description>
<image>
<url>http://www.site.com/site.png</url>
<title>SITE.COM - сайт о сайтах</title>
<link>http://www.site.com</link>
</image>
<item>
<title>Новости сайта SITE.COM</title>
<link>http://www.site.com</link>
<pubDate>Wed, 02 Oct 2002 08:00:00 EST</pubDate>
<description>Тут какие-то новости</description>
<guid>http://www.site.com/news-1.html</guid>
</item>
<item>
<title>Новости сайта SITE.COM</title>
<link>http://www.site.com</link>
<pubDate>Wed, 09 Oct 2002 09:30:00 EST</pubDate>
<description>Тут еще какие-то новости</description>
<guid>http://www.site.com/news-2.html</guid>
</item>
</channel>
</rss>

Что на счет того, что "не может отобразить этот веб-канал" - может быть ошибка разбора xml-парсером, посмотрите нет ли в тексте новости символа неразрывного пробела - & n b s p ; или других таких же подстановок, или картинок, т.е. элемента <img>. Если есть, то лучше заключить вывод текста в секцию <![CDATA[текст ]]

Independence
На сайте с 29.10.2005
Offline
428
#2
Olldman:
Валидатор ругается не на <item>, а подсвечивает его, потому, что содержащийся в нем <guid> не может быть одинаковым, т.к. это идентификатор строки. Так что либо он разный (ссылка на каждую новость, например), либо его нет вообще (т.к. это необязательный элемент).
Строка <atom:link href="http://www.site.com/site.rss" rel="self" type="application/rss+xml" /> ставится в начале <channel>, т.е. ваш rss должен быть примерно таким:
<?xml version="1.0" encoding="windows-1251" ?>

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="http://www.site.com/news.xml" rel="self" type="application/rss+xml" />
<title>SITE.COM - сайт о сайтах</title>
<link>http://www.site.com</link>
<description>Сайты различных стран мира</description>
<image>
<url>http://www.site.com/site.png</url>
<title>SITE.COM - сайт о сайтах</title>
<link>http://www.site.com</link>
</image>
<item>
<title>Новости сайта SITE.COM</title>
<link>http://www.site.com</link>
<pubDate>Wed, 02 Oct 2002 08:00:00 EST</pubDate>
<description>Тут какие-то новости</description>
<guid>http://www.site.com/news-1.html</guid>
</item>
<item>
<title>Новости сайта SITE.COM</title>
<link>http://www.site.com</link>
<pubDate>Wed, 09 Oct 2002 09:30:00 EST</pubDate>
<description>Тут еще какие-то новости</description>
<guid>http://www.site.com/news-2.html</guid>
</item>
</channel>
</rss>

Что на счет того, что "не может отобразить этот веб-канал" - может быть ошибка разбора xml-парсером, посмотрите нет ли в тексте новости символа неразрывного пробела - & n b s p ; или других таких же подстановок, или картинок, т.е. элемента <img>. Если есть, то лучше заключить вывод текста в секцию <![CDATA[текст ]]

Когда guid нет вообще, то валидатор ругается, что его нет. (Хотя показывает при этом, что валидация пройдена "OK").

Guid разный для каждого Item писать проблематично, так как новости не выводятся на отдельных страницах.

Atom я перенесу, хотя помню, что делал RSS по какой-то доке, где он в конце был.

А вы ссылки в тексте RSS прописываете и каким образом? (<A href="URL">URL</A> пишете?) И если пишете, то как, чобы не ругался на кавычки (на такие кавычки \" тоже ругается) ? Или просто достаточно http://URL написать без кода HTML в тексте?

Olldman
На сайте с 21.04.2010
Offline
79
#3
Когда guid нет вообще, то валидатор ругается, что его нет

- :) это не ругань, это рекомендации. Чтобы не расписывать еще раз (просто лениво), прочитайте: http://danneo.com/forum/showthread.php?t=7472, это форум Danneo, но я думаю xml-синтаксису глубоко фиолетово с какой системы идет разбор.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий