Структура и требования к лентам RSS 2.0
Формат RSS 2.0 представляет собой XML-документ, предназначенный для синдикации контента. Согласно спецификации, корневым элементом документа является <rss>, который должен содержать версию version="2.0". Внутри этого элемента должен находиться ровно один непосредственный элемент <channel>. Если валидатор обнаруживает иное количество, выводится сообщение: «RSS должен содержать ровно один непосредственный элемент <channel>; найдено: ‹count›.».
Для каждого элемента <item> внутри канала RSS 2.0 действуют строгие правила валидации:
- Заголовок или описание: Элемент
<item>должен содержать как минимум<title>или<description>. Отсутствие обоих элементов одновременно является нарушением структуры. - Идентификаторы и ссылки: Валидатор считывает уникальный идентификатор
GUID, ссылку<link>и дату публикации<pubDate>. - Проверка ссылок: Все ссылки проверяются на соответствие синтаксису URL или URI. Если адрес некорректен, генерируется ошибка: «Исправьте
‹field›: эту ссылку невозможно разобрать как URL или ссылку URI.».
Структура и требования к лентам Atom 1.0
Формат Atom 1.0 накладывает более жесткие требования к структуре метаданных и связям между элементами по сравнению с RSS 2.0. Корневым элементом является <feed>.
При валидации записей <entry> в формате Atom 1.0 проверяются следующие правила:
- Обязательные поля: Каждая запись должна содержать уникальный идентификатор
<id>, заголовок<title>и дату последнего изменения<updated>. При отсутствии любого из них выводится ошибка: «Добавьте обязательное поле‹field›.». - Наследование авторов: В формате Atom 1.0 действуют строгие правила наследования авторов. Если автор не указан на уровне конкретной записи, валидатор проверяет наличие элемента
<author>на уровне всей ленты. При нарушении этого правила выводятся ошибки: «Добавьте <author> в ленту или непосредственный <author> в каждую запись.» или «Добавьте <author> в эту запись, её <source> или ленту.». - Альтернативные ссылки: Если запись Atom не содержит встроенного контента, она должна иметь альтернативную ссылку. В противном случае валидатор сообщает: «Добавьте альтернативный <link>, если запись Atom не содержит встроенного <content>.».
- Содержимое и аннотации: Если элемент
<content>использует атрибутsrcдля указания внешнего источника, внутри него не должно быть текста или дочерних элементов. При нарушении этого правила возникает ошибка: «Если <content> использует src, удалите из него встроенный текст и дочерние элементы.». Если же содержимое Atom является внешним или не читается как текст, обязательно наличие аннотации: «Добавьте <summary>, если содержимое Atom внешнее или не читается как текст.».
Роль xml:base и валидация ссылок в Atom
В формате Atom 1.0 допускается использование относительных ссылок, но только при условии, что их можно корректно разрешить. Для этого применяется атрибут xml:base, который задает базовый URI для разрешения относительных путей.
Валидатор обрабатывает эти ссылки по следующим правилам:
- Абсолютные идентификаторы: Поле
<id>в Atom должно быть абсолютным IRI. Использование относительных путей здесь запрещено. При ошибке выводится: «Используйте абсолютный IRI для поля‹field›; относительные идентификаторы не являются допустимыми Atom ID.». - Разрешение относительных ссылок: Относительные адреса в других полях допускаются только тогда, когда в документе присутствует корректный атрибут
xml:base. Если базовый адрес отсутствует или не может быть использован, валидатор выдает ошибку: «Используйте абсолютный адрес для поля‹field›; относительными могут быть только ссылки Atom с подходящим xml:base.». - Уникальность идентификаторов: Каждый ID в ленте должен быть уникальным. Повторяющиеся идентификаторы вызывают ошибку: «Этот ID повторяет значение, впервые встреченное в строке
‹first›.».
Ограничения валидации и обработка ошибок XML
Инструмент предназначен для проверки структуры документов RSS 2.0 и Atom 1.0. Он накладывает ряд технических ограничений на входные данные и процесс обработки:
- Объем данных: Максимальный размер входного XML-документа составляет 500 000 символов. При превышении этого лимита валидация не запускается, и выводится сообщение: «Этот инструмент принимает до
‹max›символов за одну проверку.». - Объявление DOCTYPE: Наличие объявлений DOCTYPE в проверяемых лентах не допускается. При их обнаружении валидатор требует: «Удалите объявление DOCTYPE перед проверкой этой ленты.».
- Синтаксические ошибки: Если XML-код поврежден или содержит синтаксические ошибки, процесс останавливается с сообщением: «Исправьте неверно сформированный XML и проверьте снова.».
- Таймаут: Если обработка структуры занимает слишком много времени, система прерывает операцию и сообщает: «Проверка заняла слишком много времени. Попробуйте ленту меньшего размера.». При иных критических сбоях выводится: «Не удалось завершить проверку.».
Важно различать структурную валидацию и проверку доступности контента. Валидатор анализирует только синтаксис, структуру тегов, обязательные поля и корректность записи ссылок. Он никогда не отправляет сетевые запросы к указанным в ленте URL-адресам. Это означает, что доступность серверов, наличие SSL-сертификатов, HTTP-перенаправления (редиректы) и фактическое содержимое целевых страниц не проверяются. Отчет подтверждает соответствие спецификации XML, но не гарантирует точность или безопасность публикуемых материалов.
Конфиденциальность и локальная обработка
Процесс анализа XML-кода полностью безопасен для конфиденциальных данных. Вся обработка и парсинг осуществляются непосредственно в веб-браузере пользователя. Передача содержимого ленты на внешние серверы не производится, BroBroGo ничего не загружает и не сохраняет на своих ресурсах.
Часто задаваемые вопросы
Какие форматы лент поддерживает этот валидатор?
Он проверяет актуальные документы RSS 2.0 и Atom 1.0. Старые ленты RSS, RDF/RSS 1.0 и Atom 0.3 распознаются, но не проверяются по неподходящим правилам. При обнаружении неподдерживаемой версии выводится сообщение: «Этот валидатор поддерживает ‹format› ‹expected›; обнаружено: ‹actual›.».
Он открывает или проверяет ссылки из ленты?
Он разбирает поля со ссылками и разрешает относительные ссылки Atom с помощью xml:base. URL не открываются, поэтому доступность, перенаправления, сертификаты и содержимое страниц назначения не проверяются.
Какие поля записей проверяются?
В элементах RSS проверяется заголовок или описание, а также читаются GUID, ссылка и дата публикации. В записях Atom проверяются ID, заголовок, дата обновления, наследование автора, альтернативные ссылки и правила содержимого или аннотации.
Как должны быть отформатированы даты в лентах?
Даты в RSS и Atom должны строго соответствовать спецификациям своих форматов (RFC 822/RFC 2822 для RSS 2.0 и RFC 3339 для Atom). Если дата записана некорректно или содержит несуществующий день, валидатор выдает ошибку: «Укажите реальную дату в формате, который требует эта лента.».