yml скрипт для Яндекс Маркета

Для выгрузки товаров в Яндекс Маркет из веб магазина в формате yml, есть наиподробнейший мануал. Тем не менее, частые заказы связаны с тем, что "программист взялся и yml написать осилил, но почему он не подходит Яндексу".

Мешает ограничение на 3 бесплатных проверки. Но елки палки, уж проверить то xml на валидность можно? Есть отличный онлайн сервис для проверки xml. Проверка в два этапа, сначала скармливаем yml, затем shops.dtd Это избавит от большей части ошибок. Перечислю самые частые.

1.В неправильном порядке перечислены элементы.

Пример yml файла , который не пройдет валидацию.

Элементы  price и url перепутаны, а ведь порядок указан в shops.dtd, да и в мануале черным по-белому указано блюсти правильный порядок.

2. Запрещенные символы

Стандарт XML не допускает использования в текстовых данных непечатаемых символов с ASCII-кодами в диапазоне значений от 0 до 31 (за исключением символов с кодами 9, 10, 13 — табуляция, перевод строки, возврат каретки). Опять таки в мануале указаны 5 символов, которые подлежат замене на их эквиваленты в текстовых полях.
Error parsing XML feed: Unterminated entity reference, 'gt' (строка 53105, столбец 25)

3. Несоответствие типу.

Выбирают тип vendor.model например и пытаются пихать в него какой либо элемент, специфичный для типа book. Или наоборот, не указывают обязательный эелемент. В результате примерно такое
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Not enough elements to match content model : '(name,company,url,phone?,platform?,version?,agency?,email*,currencies,categories,store?,pickup?,delivery?,deliveryIncluded?,local_delivery_cost?,adult?,offers)' (строка 22, столбец
Или
Element 'store' is not valid for content model

И перечень основных ошибок от Яндекса.

Скрипт генерации yml для Яндекс Маркет [скачать]

Для того, чтобы избавиться от этих ошибок, написал простенький класс, который работает с типом "vendor-model". В Яндекс Маркете их несколько, но vendor-model подходит для большинства веб магазинов. Скрипт генерирует валидный yml-файл, с нормальным заголовком, с правильным порядком элементов и заменяет  "неправильные" символы.
Пример его использования. В примере всего 1 товар, но их можно добавить сколько нужно.

Напоследок замечу, что скрипт не является панацеей. Он лишь предназначен для упрощения работы по одной модели и даже ее реализует не полностью. К примеру, нельзя добавить больше одной картинки. Не проверяется длина элементов(512 для урл, 256 для некоторых полей, …). Тем не менее для 90% случаев, встречавшихся в практике, этого хватало. Если же вам нужно, что то большее или возникли проблемы? Welcome! https://www.free-lance.ru/users/fstrange

пример обновлен 24.07.2013
 

You may also like...